A common pair of symptoms can appear at the same time: the scaled analog value is unexpectedly large, and the HMI disagrees with DirectSOFT. Treat them as separate faults. The HMI mismatch comes from interpreting packed BCD as a binary integer; the scaling error comes from applying the wrong numeric representation or using the full 0-to-4095 input span when the useful process range is only a small interval above idle.
Stop applying the usual quick fixes
| Quick fix | Why it fails | Correct action |
|---|---|---|
| Divide the value again until it fits the HMI meter | This hides the representation mismatch and changes the control value without correcting its meaning. | Match the HMI tag format to the PLC register before changing scale factors. |
| Assume every value displayed in DirectSOFT is a binary integer | A word containing packed BCD 47 is hexadecimal . Interpreted as an ordinary unsigned integer, that same bit pattern equals (4 × 16) + 7 = 71. |
Display the register as BCD or explicitly convert it before binary arithmetic. |
Scale the complete input with MUL 1000 and DIV 4095
|
That maps the module's assumed full raw range, not the narrow two-amp working interval above the machine's idle current. | Remove the measured idle baseline, then scale the measured working span. |
| Change only the HMI tag | This corrects the visible 47-versus-71 mismatch but does not repair arithmetic performed in the wrong number format. |
Audit the format at the module initialization, PLC math, stored registers, comparisons, and HMI. |
Do not tune the scale while the PLC and HMI disagree about number format. Get one known word to display identically in DirectSOFT and on the screen first.
Separate the display fault from the scaling fault
The installation used an F2-04AD-1 with a DL240 CPU in a DL205 backplane. Two channels received 4-20 mA signals from AC current transducers. The first channel was read from V2000, masked, multiplied by 1000, divided by 4095, and written to V2010.
The decisive display test is the value 47. Packed BCD stores each decimal digit in a four-bit nibble. The pattern for BCD 47 is therefore interpreted as binary 71 when an HMI tag is configured as a standard integer. Changing the HMI tag to unsigned 16-bit BCD makes the HMI and DirectSOFT values agree. That correction is required before using an HMI-entered trip point in PLC comparison logic.
The analog scaling problem remains separate. At a stated idle condition of 5 A on a 240 VAC, three-phase buffer motor, the reported PLC value was approximately 1917 BCD. Motor voltage and phase topology do not determine the raw count-to-amp relationship; the current transducer range and the module configuration do. Read those values from the transducer label and the option-card setup instead of deriving amperes from motor horsepower.
Choose one numeric representation for the calculation
The DL240 application used BCD-oriented arithmetic successfully. Another valid architecture is to initialize the option card for binary data and use the BIN conversion functions where decimal-format values enter the calculation. Do not mix the two paths inside one scale calculation.
| Path | Input handling | Math and display rule |
|---|---|---|
| BCD path | Keep the raw and calibration constants in valid BCD form. | Use arithmetic intended for that format and define the HMI tag as BCD. |
| Binary path | Initialize the option card for binary or apply the available BIN conversion functions at a defined boundary. |
Perform scaling, control, and alarm calculations in binary, then configure consumers for the resulting format. |
A mask does not convert BCD to binary. It only clears selected bits. Likewise, changing the DirectSOFT display radix changes how the programmer shows a word; it does not rewrite the stored bit pattern.
Measure the baseline and working span
The process does not need a percentage of the entire transducer range. It needs a repeatable indication of buffing force over approximately the next 2 A above the chosen idle reference. Establish that range under controlled machine conditions.
- Warm up the buffer and robot to the normal production state.
- Record the stable raw value at idle. The observed value was approximately
1917BCD, but use a fresh measurement for the final constant. - Decide whether the baseline is the full idle reading or
90%of it. Store the selected whole-number raw constant in a V-memory address using the same representation as the arithmetic. - Apply the highest intended force and record the raw value. The working result reached about
80%at the highest tested force. - Calculate the usable raw span as the high-force count minus the baseline. If the target truly is idle plus
2 A, obtain the corresponding raw count from measurements or the documented transducer range.
If using 90% of the observed idle count, the unrounded calculation is 1917 × 0.90 = 1725.3. The PLC constant must be an integer, so choose and document a rounding rule before loading it. A measured baseline is preferable when the objective is close to zero at actual idle.
Program subtraction before division
Load the baseline constant into a V-memory address, subtract it from the raw channel value in V2000, and then scale the remainder. This ordering restored a near-zero idle result and produced repeatable load values in the installation.
AdjustedCount = RawCount - BaselineCount
Percent = AdjustedCount * 100 / WorkingSpanCount
In the proven instruction sequence, a constant was loaded to a V address, SUB was applied against V2000, and DIV produced the load result. Retain sufficient magnitude before division; dividing first discards resolution through integer truncation. Keep the original MUL 1000 and DIV 4095 sequence only when the required engineering value really represents the full assumed 0-to-4095 span.
Handle the limits explicitly. When the raw input is below the baseline, store zero rather than allowing subtraction to produce an invalid negative or wrapped value. When the adjusted count exceeds the calibrated working span, store 100 or set a separate over-range state. Use that bounded result for the adjustable trip-point comparison.
Verify the repair at every boundary
- Enter or observe a known BCD value such as
47. Confirm that both DirectSOFT and the HMI display 47, not 71. - Run at idle and verify that the calculated load is close to zero. If it drifts, inspect transducer zero, signal wiring, mechanical drag, and baseline repeatability before changing the divisor.
- Apply several increasing loads. The percentage must rise monotonically without sudden digit changes associated with invalid BCD arithmetic.
- Hold a load near the adjustable trip point. Confirm that the HMI setting and PLC comparison use the same numeric representation.
- Apply the highest normal force and compare the result with the recorded calibration point. The observed setup produced about
80%at its highest applied force; 100% is not required unless that force was defined as the calibration endpoint.
Record the module data format, baseline count, working-span count, HMI tag type, and comparison-register format with the program. These five entries prevent a later display change from reintroducing the fault.
FAQ
Why does BCD 47 show as 71 on the HMI?
The HMI is reading the packed BCD bit pattern as a binary integer. Define the tag as unsigned 16-bit BCD or convert the value at a documented PLC boundary.
Why does dividing by 4095 still give the wrong load?
DIV 4095 scales an assumed full raw span. For a load window covering only the interval above idle, subtract the measured baseline and divide by the measured working-span count.
Why does the buffer show load while it is idle?
The motor draws a stated 5 A at idle, so the current transducer legitimately produces a nonzero signal. Store the stable idle count as the baseline and subtract it before calculating percent load.
Why does masking V2000 not convert the value to binary?
A mask clears bits but does not change the meaning of the remaining nibbles. Use the option-card binary configuration or the available BIN conversion functions when the calculation must be binary.
Why does the trip point differ between DirectSOFT and the HMI?
The HMI entry, PLC register, and compare instruction are not using one numeric representation. Test with 47: every boundary must show 47 before the trip logic is released to production.
Stop here if the module format cannot be identified, the raw count is unstable with a stable 4-20 mA input, or BCD digits become invalid during arithmetic. Capture the option-card setup, raw V2000 value, accumulator values after each math instruction, and HMI tag definition, then escalate to AutomationDirect official support.