9030 Analog

KLW

Member
Join Date
Mar 2006
Location
Ky
Posts
14
Looking for logic converting 4-20ma to 0-150 degrees F. Never done it before, dont have a clue.
 
GE Fanuc 90-30 analog modules report their raw data as an integer over the range of -32000 - +32000. In your case, presumably the analog channel is configured so that 4 mA corresponds to a raw data value of 0 and 20 mA corresponds to a raw data value of 32000. Also, from your post, you said that a 4 mA signal corresponds to 0 degrees F and a 20 mA signal corresponds to 150 degrees F.

What CPU do you have? This is important because it affects how you can scale the analog input value in the %AI register to units of temperature. CPU models 350 and higher have floating point math capabilities. CPU models 341 and below are limited to integer math.

In this specific case, because the low ends of both the raw data and scaled data values are zero, all you need to do is divide the %AI value by 213.3333 (32000/150).

Please let me know if I've made any incorrect assumptions. There are several types of analog input modules available for the 90-30 with different features. There are also thermocouple and RTD analog input modules for measuring temperature. The module you're using may require a different scale factor for conversion.
 
Its a 364 cpu with 221 analog card. Thanks for your help. The manual for the module is useless.
 
The ALG221 module is a 4-channel current input module. It defaults to a 4 - 20 mA range. A 4 mA signal gives you a value of zero in the %AI register for the channel. A 20 mA signal gives you a value of 32000 in the %AI register.

In ladder logic, convert the %AI value to floating point (INT_TO_REAL), then divide the floating point value by 213.33333 or multiply the floating point value by 0.0046875.

Note that this is not a general-purpose method of scaling. It only works because the low end of the range is zero.
 
Once changed to a floating point, does the divide function need to be
DIV_REAL? It seems to be the only one that will allow enough decimal points. Luckily the rack is not in service until product arrives next week,or they would be all over me.
 
Yes, once you've converted the %AI register to REAL, then subsequent math operations need to use the REAL data type. Be aware that REAL data uses two consecutive addresses, where INT data uses only one. Your logic might look something like this:

|
|ALW_ON +-----+ +-----+
+--] [---+ INT_+------------------+ DIV_+-
| | TO_ | | REAL|
| | REAL| | |
|%AI0001-+IN Q+-%R00001 %R00001-+I1 Q+-%R00003
| +-----+ | |
| | |
| CONST -+I2 |
| +233.3333 +-----+

 
Dear Steve

I am also working on the same thing where I have 341 CPU series 90-30. I need to add three analog signal coming as 4-20 mA signal from the flow transmitter and need to display on citect SCADA.

the final value to be displayed on scada have the range 0 to 600 Cu m/hr. So please tell me how should I do my scaling in the PLC.

Also please note that Citect SCADA is also having an option for scaling so can I put there as follow;

Raw zero scale :0 Raw Full: 32000

Engineering zero scale : 0 Eng Full: 600

please advice????

thanks and regards
rahil
 
This is from KB5971
[FONT=&quot]The formula typically used to scale data is: y = mx + b [straight line equation]; where[/FONT]
[FONT=&quot]y[/FONT]​
[FONT=&quot]desired "scaled" value[/FONT]
[FONT=&quot]m[/FONT]​
[FONT=&quot]slope[/FONT]
[FONT=&quot]x[/FONT]​
[FONT=&quot]raw "input" value[/FONT]
[FONT=&quot]b[/FONT]​
[FONT=&quot]offset or y intercept[/FONT]
[FONT=&quot]The following calculations are used to determine values for m and b:
m = slope = (scaled max. - scaled min.)/(input max. - input min.)
b = offset (y intercept) = scaled min - (input min x slope)[/FONT]
[FONT=&quot]Examples[/FONT][FONT=&quot][/FONT]
[FONT=&quot]Analog input data[/FONT][FONT=&quot][/FONT]
[FONT=&quot]A 4-20mA signal is represented in the PLCs %AI00? register as 0 to 32000. The 4-20mA signal represents 50-150 psi.
Now calculate m and b:
m = (150-50)/(32000-0) = 100/32000 = 0.003125
b = 50 - (0 x 0.003125) = 50[/FONT]
[FONT=&quot]In this example, instead of multiplying by 0.003125, we can divide by 320. To obtain this value divide m into 1; m = 1/0.003215 = 320.
The formula to implement in the PLC becomes: %AI00? / 320 + 50 = scaled value
Use a DIVIDE and an ADD function.[/FONT]
[FONT=&quot]Analog Output data[/FONT][FONT=&quot][/FONT]
[FONT=&quot]The user enters the speed of a motor from an operator interface; 0 to 2000 rpm. This motor is controlled by a 0-10 Vdc analog output. The PLCs %AQ00? register will be 0-32000 and corresponds to the 0-2000 rpm speed.[/FONT]
[FONT=&quot]Now calculate m and b:
m = (32000-0)/(2000-0) = 32000/2000 = 16
b = 0 - (0 x 16) = 0
The formula to implement in the PLC becomes: User Input x 16 = %AQ00? scaled value
The offset, of course, is not required. b = 0
Use a MULTIPLY function.[/FONT]
[FONT=&quot]
[/FONT]
 
Last edited:

Similar Topics

I have lm9030 program on my toughbook CF-29 cannot get my program to hook up with the serial port.
Replies
2
Views
54
how do you load from [A] floppy disk to laptop 9030 program
Replies
3
Views
135
Replies
1
Views
100
We have a customer that has 6 machines running GE Series 90-30 PLCs. In order to support them, they bought a used Dell Full size desktop PC with...
Replies
4
Views
1,221
Back
Top Bottom