A 0-100 PSI, 4-20 mA transmitter (PTD25-20-0100H) sits on a P3-08AD input in a Productivity3000 (PAC3000). With no pressure applied, the scaled value and the C-more gauge both jump between -1 and 0 several times a second. Monitor mode shows raw counts in the 129xx range, which is below the 13107 low endpoint in the scaling. An identical build with the same program, module, transmitter model and scaling held a steady 0. The logic is fine. This transmitter's zero sits slightly under 4 mA, and nothing in the program clamps or trims it.
Three quick fixes usually get tried first: swapping the transmitter, changing the module range, and editing the gauge. On their own, none of them fixes the logic. Get it running with a clamp, then trim the zero properly.
Check the Count Math Before Touching Hardware
The scaling endpoints come from the module's 16-bit count on the 0-20 mA range. Confirm that model first, so you know what a count means in milliamps.
| Quantity | Derivation | Value |
|---|---|---|
| Counts per mA (0-20 mA range) | 65535 / 20 | 3276.75 |
| Count at 4 mA | 4 x 3276.75 | 13107 |
| Count at 20 mA | 20 x 3276.75 | 65535 |
| Span, 4-20 mA | 65535 - 13107 | 52428 counts |
| Counts per PSI (0-100 PSI) | 52428 / 100 | 524.28 |
| Raw 12900 in mA | 12900 / 3276.75 | about 3.94 mA |
| Raw 12900 in PSI | (12900 - 13107) / 524.28 | about -0.39 PSI |
A raw reading of 129xx therefore sits roughly 0.2 to 0.4 PSI below zero, or about 0.06 mA under 4 mA. That is well under half a percent of span. This transmitter is putting out a little less than 4.00 mA at zero pressure, and noise moves the reading around that point.
Check: write down the minimum and maximum raw counts over a minute in Monitor mode with zero pressure applied. Convert both to mA with the table above. If they sit within a few hundred counts of 13107, carry on. If they are thousands of counts away, or near zero, you have a wiring or loop-power fault. Fix that before scaling anything.
Measure the Loop Current, Then Decide on the Transmitter
Swapping the transmitter is the usual first move. Often the new one reads high or low by a different small amount, so nothing is solved. Measure before you replace anything.
- Break the loop and put a milliammeter in series, or use the clamp-on mA function of a loop calibrator.
- Vent the transmitter to atmosphere so it sees true zero.
- Read the current and compare it to the zero accuracy on the transmitter datasheet.
- Compare your meter reading to the PAC raw count divided by 3276.75. If the two agree, the module is reading correctly and the offset is in the transmitter.
If the meter shows current slightly below 4 mA and inside the transmitter's stated accuracy, the transmitter is in spec. Keep it. A steady offset of that size is normal analog behaviour. The first unit happened to land at or above 4.00 mA.
Fast jitter on top of the offset points to the wiring. Check the following:
- Twisted, shielded pair for the signal.
- Shield grounded at one end only.
- Signal cable kept away from drive and motor conductors.
- Loop supply voltage high enough for the transmitter and its loop load (take the minimum from the transmitter datasheet).
- Terminal screws tight on both the module and the transmitter.
Check: the meter reading and the converted raw count agree to within a few hundredths of a mA. The zero offset is steady, and noise is only a small fraction of it.
Leave the Module Range Alone Unless You Re-Derive the Counts
Another common suggestion is that a 4-20 mA transmitter misbehaves because the input is configured for 0-20 mA. It does not. The module range sets how the module converts current to counts. The transmitter outputs the same current either way. A second installation using the same transmitter model, the 0-20 mA range, and 13107-65535 scaling held dead zero on the bench, so the range choice is not causing the flicker.
If the P3-08AD hardware configuration offers a 4-20 mA range and you prefer it, you can switch. Before you do:
- Read the count-versus-current table for that range in the
P3-08ADdocumentation. - Change the SCL input endpoints to match the new range.
- Change the C-more gauge endpoints to match, or point the gauge at the scaled tag (see below).
If you switch ranges and keep 13107-65535, every reading is wrong across the whole span.
Check: the range shown in the hardware configuration matches the range your SCL endpoints were derived from.
Configure the SCL Instruction Once, in the PAC
The PAC3000 has a Scale (Linear) instruction, SCL. It does the same job as the C-more EA7-T6C/T6CL analog meter scaling, but it produces a tag that logic can use. Fill in the fields as follows:
| SCL field | Value for 0-100 PSI on the 0-20 mA range | Notes |
|---|---|---|
| Input | P3-08AD channel raw count | The tag you watch in Monitor mode |
| Input low | 13107 |
4 mA; trim it later if you re-zero |
| Input high | 65535 |
20 mA |
| Out Min | 0 |
Engineering units at 4 mA |
| Out Max | 100 |
Engineering units at 20 mA |
| Output | Internal tag, for example a pressure tag | Used by compare logic and the HMI |
Use a floating-point destination if you need resolution finer than 1 PSI. The raw span gives about 524 counts per PSI, and an integer destination throws most of that away. An integer destination or integer display also turns a small negative value into 0 or -1, depending on how it rounds or truncates. That is exactly the flicker you see on screen.
Check: with zero pressure, the SCL output reads between about -0.4 and 0 PSI, matching the raw counts you logged.
Stop the Underrange: Clamp Now, Trim the Zero Properly
There are two fixes. Use either one, or both.
| Fix | How | Pros | Cons |
|---|---|---|---|
Clamp with LIM
|
Pass the SCL output through a Limit instruction and force anything below 0 to 0 (and above 100 to 100) | Fast; survives a transmitter swap; no recalibration | Hides a small negative offset; real zero still reads about 0.3 PSI low |
| Re-zero the SCL input | Set Input low to the count measured at true zero, around 12900 for this unit, instead of 13107
|
Zero reads zero; comparisons near the bottom of range stay accurate | Built around one transmitter; needs a new trim if the transmitter is replaced |
A clamp by itself is enough for a pressure display. Use both if a compare near the bottom of the range drives an alarm or interlock.
// Pseudo-logic; map to SCL and LIM fields in the programming software
Raw = P3-08AD channel count // 0-20 mA range
PSI_s = SCL(Raw, InLow = 13107 (or measured zero count, ~12900),
InHigh = 65535, OutMin = 0, OutMax = 100)
PSI = LIM(PSI_s, Low = 0, High = 100) // clamp underrange/overrange
If you re-zero, check span too. Apply a known pressure near full scale, or inject 20.00 mA from a loop calibrator, and confirm the output reads correctly. Trimming the low point shifts the whole line slightly, so the top of the span moves as well.
A clamp also hides a failed loop. With a broken wire the input drops toward 0 mA, and the clamp shows 0 PSI. Add a separate compare on the raw count to catch this: a count well below the 4 mA count means a signal fault. Alarm on that instead of showing a believable zero.
Check: at zero pressure the clamped tag holds exactly 0. Pull the signal wire: the loop-fault compare trips and the pressure tag does not look like a normal reading.
Point the C-more Gauge at the Scaled Tag
If the C-more analog gauge still scales the raw count with 13107-65535 to 0-100, it keeps flickering after the PLC is fixed. It is doing its own scaling on the unclamped raw value. You have two options:
-
Recommended: tie the gauge to the clamped PSI tag and set its range to
0-100in and out. Scaling then lives in one place, the PAC. - If you must keep raw scaling on the panel, enter exactly the same input endpoints as the SCL instruction, including any trimmed zero count. The panel has no clamp, so negative values will still show.
Check: the panel and the PAC Monitor mode show the same value at zero and at one other known pressure.
Build the Compare Logic on the Scaled Tag
Write limits in engineering units against the clamped tag, not the raw count. Then a range change or re-zero only means editing SCL. Signals that sit near a threshold chatter just like the zero reading did, so give every limit some hysteresis. Take the temperature example of an alarm above 34 °F:
// Alarm latch with hysteresis (pseudo-logic)
IF Temp_F > 34.0 THEN HighTemp := 1
IF Temp_F < 34.0 - Band THEN HighTemp := 0
// Choose Band from the observed noise, in engineering units, plus margin
Set the band from what you measured. Convert the peak-to-peak raw noise you logged into engineering units (for 0-100 PSI, divide counts by 524.28) and add margin. If the alarm still chatters, add an on-delay timer in front of the output.
Check: hold the process just over the limit and just under it. The alarm sets once and clears once, with no toggling.
Verify End to End
- Vent the transmitter. The meter reads close to 4 mA, the raw count sits near its logged zero, and the clamped PSI tag and C-more gauge both show
0with no flicker. - Apply or simulate mid-scale (12 mA should give about 50 PSI). The PAC tag and the panel agree.
- Apply or simulate full scale (20 mA should give
65535counts and 100 PSI). The reading does not exceed the clamp. - Cross each compare limit in both directions. There is one transition each way.
- Open the loop. The loop-fault alarm trips and the display does not sit at a normal-looking zero without it.
- Record the zero count, span check result, and SCL endpoints on the loop sheet so the next transmitter swap starts from known numbers.
FAQ
Can I scale a 4-20 mA input on a PAC3000 without doing the math in ladder?
Yes. Use the SCL (Scale Linear) instruction and set Input low 13107, Input high 65535, Out Min 0, and Out Max to your range top, for example 100 PSI. It writes an engineering-unit tag you can use directly in compare logic.
Does running a 4-20 mA transmitter on the P3-08AD 0-20 mA range cause a negative zero?
No. The range only sets how the module converts current to counts, and 4 mA lands at 13107 on the 0-20 mA range. Raw counts near 12900 mean the transmitter is putting out about 3.94 mA at zero pressure, so clamp the result with LIM or re-zero the SCL input low to the measured count.
Does a zero that flickers between -1 and 0 mean the transmitter is bad?
Usually not. An offset of a few hundred counts is under half a percent of span and within normal analog tolerance, so clamp or trim it and move on. Stop and call AutomationDirect technical support if the meter reading and the converted raw count disagree, if the zero current falls outside the transmitter datasheet accuracy, or if the count wanders by thousands with good shielded wiring. Have the module configuration, measured mA, and logged raw counts ready.