1747-NI4 Analog Input card, to read 4-20mA temp xmtr and SCP, math how to?

CeeDee

Member
Join Date
Jun 2014
Location
Bremerton, WA.
Posts
94
Hello,
I'm working with a 1747-NI4 analog input module (for the first time) on a SLC503 processor. I noticed in the IO configuration within RSlogix500 there isn't a way to enable/disable channels or configure them like with a 1747-NI8. After looking in the manual user manual 1746-UM005B-EN-P that I found online, I saw a reference in section 4-6 for 4-20mA with an integer representation of 3277 to 16384. I plan on using these values for min and max scaling values in a SCP instruction for a two-wire OMEGA temperature transmitter.
Two main questions:
Will this work just like I plan.
Could someone break this down and take me back to school on how these numbers are obtained? What if I didn't have this manual with this "cheat sheet," how do I figure out scaling values for other types of transmitters, like 0-20mA, 0-5V, etc.?

Thanks!
 
Think f(x) = mx + b

You need to determine m = (y2 - y1) / (x2 - x1), using your known 2 ordered pairs.

Then determine b. You can pick a known ordered pair to substitute in f(x), then solve for b.

With these terms established you should be able to input any value in the domain and get the corresponding value from the function's range.
 
I see the manual, I see the chart. Those are the answers I believe I need. I'm just puzzled on where the exact numbers came from. From the manual:
A analog inputs convert current and voltage signals into 16 bit two’s
cc complement binary values.
If a 16 bit value is 2^16, which is 65536. How do they come up with 16384(max) and 3277(min) for a 4-20mA input?

Understanding how the numbers correlate and are derived may help me tweak the scaling if the displayed value on the HMI is off from the actual value at the temperature probe. I know this is probably beginners stuff for most of the talent on here. But I haven't needed to do this other than in school many years ago. With a NI8 analog card, for example, I just pick engineering units under I/O configuration, select 4-20mA for that channel and input my temperature range for scaling in the SCP instruction; much easier.
But, I want to learn.
 
Don't forget to set the dip switches on the card to current.

For me, I have to use the cheat/cheat. Until I do it enough times to remember. I cut/paste the cheat and just saved it to word doc.
 
With a NI8 analog card, for example, I just pick engineering units under I/O configuration, select 4-20mA for that channel and input my temperature range for scaling in the SCP instruction; much easier.
But, I want to learn.

Good! Keep f(x) = mx + b in mind:

I have a 1769-IF4 card. Channel 0 is configured for 4-20mA input; the domain, in engineering units, is 4000 to 20000. This is good for troubleshooting. Next, if I attach to channel 0 a pressure transmitter with a rated range of -14.7 to 30 PSIG, we have enough information to derive the scaling on our own.

With the linear function format above, we need to find both 'm' and 'b'. We're plotting a line. Two points (x,y) on this line are known: (4000, -14.7) and (20000, 30.0). You can also use ( x, f(x) )

'm' is the slope of the line, and is defined:
m = (y2 - y1) / (x2 - x1)
m = (30.0 - (-14.7) ) / ( 20000 - 4000 )
m = ( 44.7 ) / ( 16000 )
m = 44.7 / 16000 or 0.00279375

Returning to f(x) = mx + b, we substitute the slope's value for m:

f(x) = 0.00279375x + b

To solve for b, we now substitute either of the two ordered pairs from above:

f(4000) = 0.00279375( 4000 ) + b
-14.7 = 11.175 + b
b = -14.7 - 11.175
b = -25.875

Returning to f(x) = mx + b, we now substitute this value for b:

f(x) = 0.00279375x + (-25.875)
f(x) = 0.00279375x - 25.875


We can test this:

If our card is reporting a value 4000, the expected pressure should be:

f(4000) = 0.00279375(4000) - 25.875
f(4000) = 11.175 - 25.875
f(4000) = -14.7 PSIG

If the card reports the maximum engineering unit in its domain, 20000, we have:
f(20000) = 0.00279375(20000) - 25.875
f(20000) = 55.875 - 25.875
f(20000) = 30.0 PSIG

If it reports a value precisely in the middle of the domain, 12000, the pressure should be:
f(12000) = 0.00279375(12000) - 25.875
f(12000) = 33.525 - 25.875
f(12000) = 7.65 PSIG

Try finding the pressure if the card reports 8000 or 16000.
 
If a 16 bit value is 2^16, which is 65536. How do they come up with 16384(max) and 3277(min) for a 4-20mA input?


If you look at the PDF I posted, take a look at the third column over. "Number of Significant Bits" you will see that the A/D converter does not use all 16 bits for the 4-20ma range.

Why? hopefully the AB gurus will check in and explain.
 
bright676 - you bet I checked those switches first. But, thanks for the reminder either way.
For me, I have to use the cheat/cheat.
I did too and I did use the SCP instruction. I just want to know how it is derived. I like knowing how things work. What if I didn't have a cheat sheet? What if I couldn't find that key information to make this work? This stuff I'm using is getting pretty old and not readily supported by Allen Bradley... that's why I'm on here.

Mickey -
I see what you are talking about. I'm still not sure why they do not use all 16 bits and stop at 13.67 bits and I'm assuming they round up to 14 (since you can't get 13.67 out of 13 bits), which gives us 2^14 = 16384. Why not just say 14 in their chart? Which leads to...

tarik1978 - again we are assuming 2^14 when the chart clearly says 13.67 I understand the math you have but do not understand how the formula is derived. Maybe you can elaborate? It seems more simple and quicker than going into linear equations. Which brings me to...

JeremyM - who was very kind enough to elaborate and school me a bit 👨🏻‍🏫. It was fun re-visiting these equations. I remember all the hard times linear equations gave me. I actually wrote out my own values and tried it out since you "showed your work" and I was able to see how it was all derived. It does work. I hope I'm able to apply this somehow.

Maybe I can use this to figure out how/why a programmer (before me) used 4-20mA (0-500deg.F) temperature transmitters but configured the input channels for 0-20mA input and used his own scaling values. It was weird, especially seeing the SCP instruction being used, which is suppose to simplify things. Why didn't he just use engineering units and set it to 4-20mA? It worked the way he had it, but I never really understood how he got the scaling numbers to put in the SCP, and why someone would do it this way.

Thanks all, for the help! :geek:
 
Last edited:
Some input modules only deal with integers. Some processors only deal with integers. If you have either, and you decide to just scale to 4-20, you have reduced your input resolution to 4 bits (16 steps). I doubt that is what you want, but hey...
 

Similar Topics

hello I am getting a 57h fault - Specialty I/O module has not responded to a lock shared memory command within the required limit. Fault randomly...
Replies
0
Views
17
We are in the process of upgrading a controls system. The existing system is a SLC500 with some IO cards and a 1747-SDN module communicating to a...
Replies
5
Views
548
se me desprendieron los cables del cable usb quiero soldarlos pero no se como van los cables si alquien me pudiera proporcionar una foto o como...
Replies
1
Views
403
Hello, I've got a project where I need to get information from two ABB ACS880 VFDs onto the plant operator's screen (or alternatively, onto...
Replies
23
Views
2,608
Hi Newbie here :yeah: Can one of you experts help me with setting up a simple BTR and BTW to just test 4 analogue inputs 4-20ma (1974-if4i)...
Replies
11
Views
999
Back
Top Bottom