Enter raw units 0 and 300 against eng. units 0 and 30 A when the trend reads V2010. The rung LD=V2001, MUL=K300, DIV=4095, OUT=V2010 turns 4095 counts into 300, which is 30.0 A in tenths. When the HMI shows 16 for a PLC value of 10, the register holds BCD: add a BIN instruction before OUT=V2010, then the endpoints hold across the whole range.
You have a 4 to 20 mA CT input on Channel 2, a rung that scales it, a panel meter reading 0 to 30 A, and a trend on the HMI that will not line up. The four numbers you need are raw 0 and 300 against eng. units 0 and 30, plus one instruction in the PLC when the values arrive in BCD. This page shows what the rung produces at full scale and at 12.0 A, how to tell a number-format fault from an endpoint fault, and the order to fix them.
What values do I enter for raw units and eng. units?
Enter 0 and 300 in raw units and 0 and 30 in eng. units when the trend reads V2010, the register your rung writes; those are the numbers that register actually spans, 0 to 300, mapped onto the amp range the meter shows, 0 to 30 A. Those four numbers assume two things: the trend's data member address points at V2010, and V2010 holds a plain binary integer by the time it reaches the HMI. The second condition is the subject of the BCD sections below; until it is true, no endpoint pair will hold across the range.
If the trend instead reads V2001, the analog channel register, enter raw 0 and 4095 against eng. units 0 and 30. The amp range is the same; the raw span is the channel's counts.
What do raw units and eng. units mean on a trend?
Raw units are the numbers the HMI receives from the register, and eng. units are what the operator should read; the trend draws one straight line between the two endpoint pairs, so each raw span maps onto one engineering span. The object applies one linear map to every sample:
displayed = eng. low + (raw − raw low) × (eng. high − eng. low) ÷ (raw high − raw low)
With raw 0 to 300 against eng. 0 to 30, the map collapses to raw ÷ 10: a register value of 120 draws at 12.0 A and 300 draws at 30.0 A. Eng. units also carry the label, so enter the unit string the operator expects, A in this case, and the axis prints it.
What does the scaling rung produce in V2010?
The rung turns a full-scale channel reading of 4095 counts into 300 in V2010, so the register spans 0 to 300 for 0 to 30.0 A: it holds amps in tenths, and the panel meter prints the decimal point over it. Run the constants at full scale to see it. A 12-bit converter has 4096 steps, so its top reading is 4095, and the divide in your rung confirms that choice. LD=V2001 loads the counts, MUL=K300 gives 4095 × 300 = 1,228,500, DIV=4095 gives 1,228,500 ÷ 4095 = 300, and OUT=V2010 stores it. K300 is the engineering span in tenths: 30.0 A delivered as 300.
The order matters. Multiplying before dividing keeps the resolution, and the divide leaves a remainder under 1, so the last tenth can sit one count low at some currents.
Why does the HMI show 16 when the PLC shows 10?
A register holding BCD shows its values shifted: the bit pattern for ten reads as 16 at the HMI, because the HMI software reads plain binary integers while this PLC family does its ladder math in BCD. The fix is one instruction, BIN, placed immediately before OUT=V2010. BCD stores each decimal digit in four bits, so ten becomes 0001 0000, and a binary reader computes 1 × 16 + 0 = 16. One register ends up serving two number systems.
The same mismatch is what makes an HMI panel show nonsense numbers from a PLC BCD analog register, and it is a different fault from a Modbus TCP analog value stuck at 0, which points at communications. BIN converts the accumulated BCD result to the binary integer the HMI expects. The value stays the same, 120 remains one hundred twenty; only the storage format moves.
How do I confirm the BCD mismatch before touching the PLC?
Hold three steady currents and compare the PLC's intended value with the HMI's live reading: BCD produces a fixed pattern, 10 to 16, 20 to 32, 300 to 768, and any other pattern points at the wrong register or the scaling rung. The table gives the conversions for the values this trend actually produces.
| Value the PLC means | Pattern read as an integer |
|---|---|
| 10 | 16 |
| 20 | 32 |
| 30 | 48 |
| 120 | 288 |
| 300 | 768 |
The rule behind the table: each digit contributes digit × 16 to the power of its position, so 120 becomes 1 × 256 + 2 × 16 + 0 = 288. Watch the HMI value at three steady loads. Readings that follow the table mean BCD; add the BIN instruction. Readings that track the meter at a clean factor of ten, 120 against 12.0 A, mean the format is already binary and the trend only needs its endpoints. Readings that wander with no pattern mean the trend is pointed at the wrong register; confirm the data member address against V2010.
What are the steps from diagnosis to a finished trend?
Five steps take you from the meter to a correct trend: read both sides at one steady current, fix the number format in the PLC, reload, enter the measured endpoints, then verify at three points across the range. You need one steady load you can hold, the panel meter reading you trust, the programming connection to the PLC, and edit access to the trend object.
- At a steady load, record three numbers exactly as each side presents them: the meter's amps, V2010 in the PLC monitor, and the HMI's live value for that register.
- Match the HMI value against the BCD table above. On a match, add BIN immediately before OUT=V2010. Save a copy of the original rung first so the change rolls back in one step.
- Put the change in and recheck the same load. The HMI value should now equal the value the PLC means, 120 at 12.0 A.
- In the trend's data member configuration, point the address at V2010 and enter raw low 0, raw high 300, eng. low 0, eng. high 30. Set the value display to one decimal place if the object offers it.
- Verify across the range as the next section describes, then file the saved rung copy with the panel documentation.
Recommendation: Read V2010, not V2001, for this trend: enter raw 0 and 300 against eng. units 0 and 30 A, and add the BIN instruction before OUT=V2010 whenever the 10-versus-16 pattern appears at the HMI. Point a trend at V2001 only after confirming that register's number format at the meter; its endpoints would then be raw 0 and 4095.
How does the scaling check out in a worked example?
At a steady 12.0 A on the panel meter, the channel sits near 1638 counts, the rung writes 120 to V2010, and the finished trend plots 12.0 A: here is each number with its arithmetic. Hold the load and follow one sample through.
Counts into V2001: 12.0 ÷ 30.0 × 4095 = 1638. Rung: 1638 × 300 = 491,400, then 491,400 ÷ 4095 = 120 in V2010. Trend: 0 + 120 × (30 − 0) ÷ (300 − 0) = 12.0 A on the axis.
Before the BIN instruction, that same point read as BCD: 1 × 256 + 2 × 16 + 0 = 288 at the HMI, and the trend plotted 288 × 30 ÷ 300 = 28.8 A. That is why trial and error almost worked: the stretched line crossed the true value at some currents and the trace looked right for a moment, then drifted on either side.
How do I verify the finished trend across its range?
Verify at three points, 0 A, 15 A and 30 A, and accept agreement within 0.1 A: one count in V2010 is one tenth of an amp, and the integer divide leaves less than one count of remainder. Drive or observe the load at bottom, middle and top. At 0 A, which is 4 mA on the wire, the channel reads 0 counts and the trend sits at 0.0 A. At 15 A the channel reads 2047 or 2048 counts, since 15 ÷ 30 × 4095 = 2047.5, the register holds 149 or 150, and the trend shows 14.9 or 15.0 A. At 30 A, which is 20 mA, the register holds 300 and the trend shows 30.0 A. Agreement within 0.1 A at all three points is a pass; the meter's own accuracy sets anything tighter.
One safety note on the bottom end: this scaling maps 4 mA to 0 A, so a broken CT wire and a true zero both plot 0.0 A. If the load never runs at zero, treat a flat 0 A trace as a wire or transmitter fault and check the loop at the terminals.
Trends like this one run on shop-floor status screens every shift, so the endpoint habit is worth keeping: fix the number format first, enter the endpoints the register actually spans, and verify at three points.
Questions
Can I correct the 16 instead of 10 by adjusting the trend endpoints?
No. BCD distortion grows with each digit, so two endpoints can be made to agree while the middle of the range runs away. With raw endpoints 0 and 48 (BCD thirty reads as 48) mapped to 0 and 30 A, a true 15 A arrives as BCD 150, which the HMI reads as 336, and the trend plots 336 × 30 ÷ 48 = 210 on a 30 A axis, pegged far off scale. Fix the number format in the PLC; endpoints only stretch a straight line.
What endpoints do I use if the trend reads the analog channel register V2001 directly?
Raw 0 and 4095 against eng. units 0 and 30. That register holds counts, 136.5 counts per amp since 4095 ÷ 30 = 136.5, so one count is about 0.0073 A and the trend keeps the channel's native resolution. Confirm that register's number format the same way first: if it also holds BCD, the same BIN treatment belongs in the rung before any math is trusted.
Why did trial and error get the trend close but never exact?
Because two faults were stacked. The BCD shift bends the values and the missing tenths-to-amps factor stretches them, and a straight-line endpoint pair can only cancel both at isolated points. Your trace matched wherever the two errors happened to cross, then drifted on either side. Once the format is fixed, the endpoints 0 and 300 against 0 and 30 land every point with no fine tuning.
Does this scaling show a broken CT wire as zero amps?
Yes. The rung maps 4 mA to 0 counts and 0 counts to 0 A, so a sheared wire and a true zero land on the same number. A trace that bottoms out at exactly 0 A with the load on is a fault signature, not a reading.
Planning information, not legal or engineering advice. Rules differ by place: check codes and permits with your local authority and your licensed trades.