Planning and commissioning

Energy monitoring commissioning checklist

Commissioning checks for energy monitoring: point schedule, source-to-report checks with tolerances, timestamps, daylight saving, failure tests, delivery at the receiver and the acceptance record.

Two circuits swapped in the point schedule both give plausible numbers, and a dashboard shows them without complaint. The worst commissioning faults look like that: the value is reasonable and belongs to something else. The checks below are in the order to run them, and each one feeds the acceptance record.

Download the acceptance record (.txt). Print it, or fill it in on site.

This page covers the whole system. For the checks on each connection, use the interface guides: pulse, wired M-Bus, Modbus RS-485 and 4-20 mA. Agree the acceptance limits with the equipment, site and platform owners before work starts, and write them in the point schedule: the agreement expected at each point, the time allowed before a point shows as stale, and the permitted clock offset.

1. Freeze the point schedule

The point schedule is the reference for every later check. For each point, record:

  • the circuit or asset, and where it is;
  • the device model, serial number and channel;
  • the quantity, the unit, the sign convention and the reporting interval;
  • for current transformers (CTs), the ratio, the secondary rating and the accuracy class;
  • for Modbus or BACnet points, the address, data type, word order, scaling and any "not available" values;
  • for counters and energy registers, the width, the resolution and the rollover value;
  • the acceptance tolerance.

Name one source of truth for the schedule and put a revision on it. The project worksheet already has these columns. A schedule copied from another site is useful only when the differences for this site are written down.

The register width decides how often a counter wraps. A 16-bit energy register with 1 kWh resolution rolls over after 65,535 kWh. On a 100 kW load that takes 655 hours, about 27 days, so a commissioning visit never sees it. Test the software instead. For a single wrap, the correct delta is new − old + 65,536. A report that shows one interval of about −65,000 kWh, or a spike of the same size, has no rollover handling. A meter replacement or a register reset also makes the reading fall. Record the old and new readings in the schedule, or the software treats the fall as a wrap. The pulse meter scaling calculator converts counts to energy for pulse inputs.

2. Check each point from source to report

Compare each point at four places over the same period: the source (the meter display, or a reference instrument), the gateway, the exported record and the final report. Record the raw value and the converted value at each place.

These are two different comparisons, with different limits. The meter's register and the report come from one measurement, so they must agree to the register resolution. A larger difference is a mapping, scaling or transport fault, not meter error. An independent reference and the meter are two measurements, so the limit is the accuracy of the chain. IEC 62053-21 allows a class 1 meter ±1.0% at unity power factor over its normal current range. IEC 61869-2 allows a class 0.5 CT ±0.5% ratio error at rated current. Added together, that gives a worst case of about ±1.5%. Both limits apply under reference conditions and widen at low current, so do not judge a CT at 3% of its rating against its full-load class. Write the limit for each point into section 5 of the project worksheet before the comparison starts.

Run the energy comparison for at least 24 hours, so that it crosses midnight and any daily report boundary. Then check each point for the faults below.

  • Units and magnitude. Watts shown as kilowatts gives a result 1,000 times too large. A meter set for a 5 A CT secondary, with a 1 A CT fitted, reads one fifth of the true current.
  • Sign. Read the sign convention of each device from its register map. In the load (consumer) convention, import is positive, so with a known import load running, active power must be positive at the gateway and in the report. A platform that uses the generator convention shows the same import as negative. Record the convention of each system in the schedule.
  • CT direction and phase pairing. A CT that faces the wrong way gives negative power at a normal power factor. On a balanced three-phase load, one reversed CT reduces the total to about one third. A CT paired with the voltage of another phase shifts the angle by 120°: a load with a true power factor of 0.95 then reads about −0.20 or −0.75. The negative readings guide lists the symptoms.
  • Sentinel values. Many devices put a fixed value in a register that has no valid reading: SunSpec devices use 65,535 (0xFFFF) for an unsigned 16-bit register and −32,768 (0x8000) for a signed one. A gateway passes that on as a number unless it is told otherwise. Map each sentinel in the register map to a missing state, or a dashboard plots it as a real value.
  • Identity. Switch one load, and check that only its own point moves.

Check each point at a second operating state as well: a machine on and off, or a heating system at two loads. A single steady reading does not show a swapped channel or a wrong scale factor.

On a site with generation or export, check the export direction too. With the site exporting, the export active energy register must increase and the import register must hold. Reactive energy has a sign of its own: an inductive load imports lagging reactive energy, and a capacitor bank or an inverter set to a leading power factor reverses it. Meter manufacturers number the four quadrants differently, so map reactive registers from the quadrant diagram in each meter's manual. If the site cannot export on the day, record the export check as not done.

Where the site has a main incomer meter, compare it with the sum of its submeters over the same intervals. The difference is unallocated energy: unmetered circuits, shared services and losses. Give it an owner. Because each meter has its own error, a small negative difference is possible when the unmetered load is small. A negative difference larger than the summed accuracy limits points to a circuit counted twice or a reversed CT. For example, with class 1 meters, an incomer reading of 1,000 kWh and submeters that sum to 1,015 kWh, the worst-case limit before CT error is about 10 kWh + 10 kWh = 20 kWh, so a remainder of −15 kWh is within it. A remainder of −60 kWh is a fault.

3. Check timestamps and quality states

Find out which part of the system puts the timestamp on each reading, and what that timestamp means: the time of measurement, or the time the reading arrived. The source time and arrival time guide explains the difference.

A 15-minute value labelled 09:15 means 09:00 to 09:15 in one system and 09:15 to 09:30 in another. Side by side, the two show the same peak one interval apart, and a maximum demand checked against the wrong interval does not match the bill. Record the convention in the schedule. The interval demand calculator converts an energy increment to average kW for the comparison.

In the UK and Ireland, the clocks go forward at 01:00 on the last Sunday in March and back at 02:00 on the last Sunday in October. A store that keeps local time has a 23-hour day in March, with no 01:00 to 02:00 hour, and a 25-hour day in October, with two of them. With 30-minute data, expect 46 intervals and 50 intervals on those days. A store that shows 48 has dropped or merged an hour. Store UTC, or local time with its offset in the RFC 3339 form: 2026-10-25T01:30:00+01:00 and 2026-10-25T01:30:00+00:00 are different instants. Test across a changeover date, or with a simulated clock.

Find the time source of the gateway and measure its offset from a reference NTP server at acceptance. Then restart the gateway with the network disconnected, and check the time it reports and how its readings are marked until it synchronises again. The effect of an offset on energy is the offset divided by the interval length. At constant load, a 5 s offset moves 5/1,800 = 0.28% of each 30-minute interval into the next one, and the error cancels over the day. The same 5 s can put an alarm on one device ahead of the trip on another device that caused it. Set the permitted offset from the use: for event logs compared across devices, 1 s or less.

A missing or stale reading must look different from a real zero in every report. Do not replace a missing value with an estimate unless the estimate is marked as one. The stale, missing and invalid data guide defines the quality states.

4. Test failures one at a time

Plan each test with the site owner. Do one at a time, so that each result has one cause.

To stop a field device, disconnect its communications or its auxiliary supply. Do not remove a meter that is connected to 1 A or 5 A CTs. If one must come out, short each CT secondary at the shorting terminal block first. An open CT secondary under load develops a high voltage, which can damage the CT and injure the person working on it. Low-power CTs with a voltage output, such as 333 mV types, have their burden inside and do not have this hazard.

TestPass when
One field device stopsIts points show as stale within the limit in the schedule, for example two missed polls, and the other points carry on
Field network failsThe alarm appears within the agreed time, and the lost intervals are listed
Upstream connection failsLocal collection and history carry on, and the queue grows at the expected rate
Upstream connection returnsThe backlog drains, and the receiver has no gaps and no duplicate timestamps
Gateway restartsConfiguration and history survive, collection starts again, and the gap is marked, not filled with zeros

A value that no part of the chain stored cannot be recovered later. Two places can hold it. An electricity meter with a load-profile log stores the intervals itself, and the gateway can backfill the gap from that log only if it is set up to read it. Many M-Bus heat and water meters log only daily or monthly values, which recover a total but not the intervals, so check the log interval in the register map. An accumulating energy register recovers the total across the gap but not its shape: the first interval after recovery carries all the missing energy, unless the software spreads it and marks it as estimated.

Size the upstream outage test from the buffer. The backlog is the record rate multiplied by the outage length. The drain time is the backlog divided by the export rate minus the rate of new records. For 500 points at 1-minute intervals, a 12-hour outage leaves 500 × 720 = 360,000 records. With an export rate of 50 records/s and new records at 8.3 records/s, the net drain is 41.7 records/s, and the backlog clears in about 8,640 s, or 2.4 hours. Check that the buffer holds 360,000 records with space to spare, and that no retention limit deletes them first. The store-and-forward sizing guide converts records to storage. Test an outage at least as long as the longest one the site must survive.

5. Check delivery at the receiver

After the planned upstream outage, look at the receiving system, not only at the gateway. Count the records that you expect for the outage window and the records that arrived. For 20 points at 1-minute intervals over a 2-hour outage, expect 2,400. Check for duplicates and gaps, and check that late records kept their original timestamps.

A transport acknowledgement does not prove that the receiver stored the record. An MQTT QoS 1 PUBACK means that the broker accepted the message, and the broker may have no subscriber for it. An HTTP 202 means that the server accepted the request for processing, not that it stored the record. A retry sent after the receiver stored a record, but before the gateway saw the acknowledgement, creates a duplicate, so the receiver must remove duplicates on point and timestamp. Only a query at the receiver shows what it stored. Keep that query and its result in the record. The MQTT QoS guide and the data storage guide explain the stages.

6. Test control separately

If the system writes set points or runs automation, test control as a separate step, with the equipment owner and an approved test plan. For each command, record the command, whether it was accepted, the feedback from the device and the measured result. Define the interlocks, the timeout, cancellation and the fallback state before the test. A system that passes every monitoring check can still send a wrong set point, so test each command on its own. The BESS command verification guide gives a detailed example.

7. Keep the acceptance record

For each test, record:

  • the site, the point and a test reference;
  • the hardware, firmware, software and configuration versions;
  • the preconditions and the approved test action;
  • the expected result and the tolerance;
  • the start and end times, and what the source and the receiver showed;
  • the result: pass, fail or not done, with a reason for any exception;
  • the owner of each open item, the correction and the retest.

A test that was not done is recorded as not done, never as a pass. A failed check stays in the record after the fix, with the passed retest next to it. If a CT ratio entered as 100/5 instead of 200/5 is corrected in March, the record explains why the January figures for that circuit are half the April figures. Use the same record format on the next site, and start it empty.

8. Hand over the operation

Hand over the point schedule, a configuration export and the acceptance record. Agree who investigates stale data and alarms, who changes the point mapping when a circuit changes, who installs software updates and keeps backups, and who approves any change to control.

Name an owner for the point mapping. When a board change moves a circuit to another way, the point reads the new circuit under the old name. Nothing alarms, because the data still arrives.

Commissioning with EpiSensor

On a Gateway running Edge, run the register test for each Modbus point as you map it, with the multiplier at 1, so that the result is the raw register. Compare it with the meter display, then add the scaling and test again. Register tests run only when you are connected to the Gateway directly.

For the section 2 energy comparison, select the points on the Edge Data page and use Export CSV. The file covers the time window loaded on the page and leaves a missing value blank, not zero. If you downsample an energy register, use the Maximum function, not Average: for a register that only rises, the maximum in each interval is its last reading in that interval. Each row has a Unix timestamp in milliseconds and a local Date/Time column with no UTC offset. Use the Unix timestamp for any comparison across a clock change.

Edge marks a Modbus device offline after two missed polls, with a minimum of five minutes. Use that as the stale limit in the first row of the section 4 table. The Modbus gap fill setting is off by default. If someone has set it to zero, Edge writes a 0 each second into a gap, up to the maximum gap (15 s by default, 30 s at most). Those points carry a synthetic marker, and a store downstream may drop it. Keep gap fill off during commissioning.

A ZEM electricity monitor ships with its current sensors connected and calibrated to it. The CT ratio entry in the section 1 schedule and the 5 A/1 A secondary check in section 2 do not apply. The direction and phase checks still do: a reversed or misplaced sensor shows as negative power, or as a power factor out of line with the other phases.

Common questions

How closely should the report match the meter?

When the report is built from the meter's own energy register, the two must agree to the register resolution. A larger difference is a mapping, scaling or data fault. Against an independent reference, the limit comes from the accuracy classes in the chain: a class 1 meter with class 0.5 CTs gives a worst case of about ±1.5% at normal load under reference conditions, and a wider limit at light load.

How long should a commissioning comparison run?

Compare instantaneous values at two operating states, such as a machine on and off. Run the energy comparison for at least 24 hours, so that it crosses midnight and any daily report boundary.

What should an acceptance record contain?

The site, the software and configuration versions, the result of each test with its time, the tests not done with a reason, the open items with owners, and the name of the person who accepted the system.