Imagine this scenario: There is a flow meter with 4–20 mA output setup. The switch is flipped, thereby turning it on. Then it is noted that the readings are off, and the required output is not shown. The meter is fiddled with but still the readings are not shown. What is to be done now? This meter should be repaired so that the application is up and running.
The questions that need to be answered are as follows: What is to be done? Why is this even happening?
Several times the question raised is how to get accurate 4–20 mA output readings for 4–20 mA output devices. What is most helpful for customers is an understanding of the basics of 4–20 mA current loops and how it integrates into their process.
This article describes the 4–20 mA communications protocol, step-by-step, which will dispel the confusion and complications around the protocol and help customers get set up and running.
What Are the Different Ways to Determine Flow Rate?
There is a need to determine the flow rate (or temperature, or pressure) without observing the display of the meter. The following are a few ways to do this:
1. Utilizing the RS-232 serial commands
2. Utilizing the 4–20 mA support within the meter
3. Utilizing HART, Modbus, or other supported digital communications protocols
What is a 4–20 mA [Direct Current] Loop?
A 4–20 mA current loop is a means to pass a “value” like flow using an established electrical current (the loop) as the carrier of this information.
The following are the five discrete parts to the “loop” (see the image represented above):
1. Sensor: Provides the “value”
2. Transmitter: Takes the “value” and converts it to a meaningful 4–20 mA value
3. Power Source: The physical [DC] power that the transmitter uses
4. Loop: The physical “loop” (such as wires)
5. Receiver: Reads the 4–20 mA value from the “loop” to determine the “value”
Typically, the 4 mA depicts the minimum/low value (like 0 for flow); and the 20 mA depicts the maximum/high value, or full scale, of the value that is sent. In the example provided in the article, this value is for “flow.”
How Do You Map/Configure the 4–20 mA Current Loop to the Flow Rate?
Most people tend to overthink the math for 4–20 mA in their application. This is similar to using calculus to solve a simple math problem. It is not overly complicated once the values used in the equation are understood.
As described above, the 20 mA represents the full scale, and the 4 mA represents “zero” [flow].
So, if the flow setup is 0 to 1000 SLPH, the 4 mA means “0” flow, and the 20 mA means “1000”.
The Variables In the 4–20 mA Equation
The flow range is represented using the following notations:
mALow = 4 (4 mA)
mAValueLow = 0 (value that represents “low”)
mAHigh = 20 (20 mA)
mAValueHigh = 1000 (value that represents “high “or Fullscale)
Now if 500 is flowed, the following notation is used:
currentValue = 500
Since the users know that the value they want to pass on the 4–20 mA loop is really a ratio between mALow to mAHigh, the following formula is applied to determine the correct milliamps (mA) that are needed.
mA_Value = ((mAHigh – mALow) * ((currentValue – mAValueLow)/(mAValueHigh – mAValueLow))) + mALow
mA_Value = ((20 – 4) * ((500 – 0)/(1000 – 0))) + 4
mA_Value = ((20 – 4) * (500/1000)) + 4
mA_Value = ((16) * (0.5)) + 4
mA_Value = (8) + 4
mA_Value = 12 (mA)
So, in the current 4–20 mA example, flowing 500 is repesented as 12 mA on the 4–20 mA loop. If it was zero flowing, (currentValue=0), it would be calculated as:
mA_Value = ((mAHigh – mALow) * ((currentValue – mAValueLow)/(maValueHigh – mAValueLow))) + mALow
mA_Value = ((20 – 4) * ((0 – 0)/(1000 – 0))) + 4
mA_Value = ((20 – 4) * (0/1000)) + 4
mA_Value = ((16) * (0)) + 4
mA_Value = (0) + 4
mA_Value = 4 (mA)
If it was flowing Full Scale (currentValue=1000), then the following calculation would be done:
mA_Value = ((mAHigh – mALow) * ((currentValue – mAValueLow)/(maValueHigh – mAValueLow))) + mALow
mA_Value = ((20 – 4) * ((1000 – 0)/(1000 – 0))) + 4
mA_Value = ((20 – 4) * (1000/1000)) + 4
mA_Value = ((16) * (1)) + 4
mA_Value = (16) + 4
mA_Value = 20 (mA)
What If My Scale is Different? How Would You Scale to a 0–20 mA Loop Instead of the 4–20 mA Loop?
If the users want to scale from 0 to 20 instead of 4 to 20, all they should do is to change the value of mALow to “0” instead of “4”. The same formula applies. Don't forget this fact. The values of the variables are the only things that change.
mALow = 0 (0 mA)
mAValueLow = 0 (value that represents “low”)
mAHigh = 20 (20 mA)
mAValueHigh = 1000 (value that represents “high” or Fullscale)
So, if at flowing 500 (currentValue=500) on a 0/20 mA loop, the loop is set to:
mA_Value = ((mAHigh – mALow) * ((currentValue – mAValueLow)/(maValueHigh – mAValueLow))) + mALow
mA_Value = ((20 – 0) * ((500 – 0)/(1000 – 0))) + 0
mA_Value = ((20 – 0) * (500/1000)) + 0
mA_Value = ((20) * (0.5)) + 0
mA_Value = (10) + 0
mA_Value = 10 (mA)
How Would You Scale Something like Temperature that Does Not have a Low Value of “0”?
When the users deal with temperature, they generally do not start at 0f, but 32f. All that needs to be done is to adjust the “mAValueLow” to the new low value. Let’s assume that the working temperature is 32 °f ~ 132 °f:
mALow = 4 (4 mA)
mAValueLow = 32 (value that represents “low”)
mAHigh = 20 (20 mA)
mAVvalueHigh = 132 (value that represents “high” or Fullscale)
Now the same formula is applied. So if the temperature is 82 °f (currentValue=82), the following formula is used:
mA_Value = ((mAHigh – mALow) * ((currentValue – mAValueLow)/(maValueHigh – mAValueLow))) + mALow
mA_Value = ((20 – 4) * ((82 – 32)/(132 – 32))) + 4
mA_Value = ((20 – 4) * (50/100)) + 4
mA_Value = ((16) * (0.5)) + 4
mA_Value = (8) + 4
mA_Value = 12 (mA)
Bringing It All Together
Now it is time to do some math! To summarize what has been described, the following formula is used to determine the 4–20 mA values:
mALow = 4 (4mA)
mAValueLow = 0 (value that represents “low”)
mAHigh = 20 (20 mA)
mAValueHigh = 1000 (value that represents “high” or Fullscale)
currentValue = 500 (This is the value that is needed to be sent to the 4–20 mA loop)
Answer
mA_Value = ((mAHigh – mALow) * ((currentValue – mAValueLow)/(maValueHigh – mAValueLow))) + mALow
Fine Tuning the 4–20 mA Signal
At this point, the determination of the correct value for the 4–20 mA signal is done by utilizing the formula mentioned above. What happens if zero is flowed, and the output should be 4mA? However; the receiver “reads” 3.90 mA because of the physical layout. In other words, the 4 mA default “low” 4 mA value needs to be “tuned” higher to 4.0 mA. The default 4 mA DAC (Digital to Analog Converter) value should be changed.
Understanding DAC’s and Their Relationship to 4/20 mA Current Loop
When the 4–20 mA transmitter needs to inject a 4–20 mA signal, it needs to “know” exactly how much to inject. One can think of the DAC’s as a [digital] valve that can go from totally closed, to totally open; or anything in-between.
The range from closed to fully open is defined in 4096 “steps”; meaning, that each step “opens” the “valve” by 1/4096 in size.
By setting the 4 mA DAC to “1” means that one can “open” the valve 1/4096 in size to represent 4 mA. Setting the 4 mA DAC to 2048 (2048/4096 = ½) will open the “valve” exactly halfway open. Setting the DAC to 4096 will open the “valve” fully open.
By adjusting the 4 mA or 20 mA DAC’s, one can fine-tune the electrical characteristics of the 4–20 mA loop. Once the higher 20 mA and the lower 4 mA DAC’s are fine tuned, the system will correctly calculate the points in-between.
In Conclusion
One can make the meter provide 4–20 mA “answers” correctly by setting the correct values in the 4–20 mA screens, along with any DAC adjustments. This gives the accurate output readings so one can run the application and make adjustments to get optimal conditions.
This information has been sourced, reviewed and adapted from materials provided by Sierra Instruments.
For more information on this source, please visit Sierra Instruments.