Can't send REAL data from cimplicity scada to AB plc-modbus TCP SLAVE type

emaarkey

Member
Join Date
May 2018
Location
singapore
Posts
6
Hi All,

I'm using AB plc 5370(Modbus TCP slave progm type) with GE cimplicity scada V8.1. For DI,DO,AI communication is working good.

But, I can't send REAL(Decimal) values from SCADA to PLC. At the same time, I can send iNTEGER VALUE from scada to plc.

Looking forward for your replies buddies. Thanks to all
 
I believe this issue is caused by the Modbus protocol limitation to IEEE Floating-Point numbers only.
You will need to deploy some sort of REAL(decimal)-to-Floating Point converter within your SCADA application prior to sending the converted REALs data to the Modbus network.

Or try using a more modern communications protocol between SCADA and the CompactLogix CPU such as EtherNet/IP which supports REAL(decimal) data type transmissions; I am pretty sure there is an available EtherNet/IP driver for any major SCADA system implementation.
 
REALs and FLOATS are generally 32 bit values, you maybe having issues in how you write those values in the PLC address space. If you write multiple REALs to concurrent %R address spaces (ie write REAL1 and REAL2 to %R1 and %R2) you would be overwriting data. The first 16 bits of the REAL1 would go to %R1 and the second 16 bits would get written to %R2, then the first 16bits of REAL2 would get written to %R2 essentially overwriting the second 16 bits of REAL1. To write concurrent REALs you need to write to non-conncurrent address spaces in the PLC. REAL1 gets written to %R1/2, REAL2 gets written to %R3/4 etc etc.
 
You probably have a "endianness" problem, modbus doesn't define in which order double word values are send, some plc put the high 16 bit word first, others do the reverse.
In some place your modbus driver should have the option to reverse word order.
Hope it will help
 
You probably have a "endianness" problem, modbus doesn't define in which order double word values are send, some plc put the high 16 bit word first, others do the reverse.
In some place your modbus driver should have the option to reverse word order.
Hope it will help

this is true as well. In the past i've had devices or programs that did not have options for word swap. In those cases, in the PLC i've had to do move_word operations to put the words in correct order.
 
Hi Sapper
Thanks for your valuable reply

As per your text, I have seen the "WORD REVERSE" option in cimplicity scada and enabled that one. Still, i can't send the REAL data from scada to plc. Is anyotherway

Once again thanks / [email protected]
 
I believe this issue is caused by the Modbus protocol limitation to IEEE Floating-Point numbers only.
You will need to deploy some sort of REAL(decimal)-to-Floating Point converter within your SCADA application prior to sending the converted REALs data to the Modbus network.

Or try using a more modern communications protocol between SCADA and the CompactLogix CPU such as EtherNet/IP which supports REAL(decimal) data type transmissions; I am pretty sure there is an available EtherNet/IP driver for any major SCADA system implementation.
Thank you all for the valuable and quick reply

still not working. If you know any other ways..Kindly let me know
 
Indeed, CIMPLICITY does not have an EtherNet/IP driver; for the Allen-Bradley platform Serial DF-1 and DH+ are the only available drivers.

You cannot directly send a REAL(Decimal) number through Modbus even if it is a 32-bit entity just like the IEEE Floating-Point and that's because the Modbus DNA had been defined in the early 1970s; Modbus does not support REAL(Decimal) data; only IEEE Floating Point.

You will need to run a REAL(Decimal)-to-IEEE Floating Point Converter within your SCADA application prior to writing the data to the CompactLogix CPU.
 
Hi Sapper
Thanks for your valuable reply

As per your text, I have seen the "WORD REVERSE" option in cimplicity scada and enabled that one. Still, i can't send the REAL data from scada to plc. Is anyotherway

Once again thanks / [email protected]

I'm assuming that you can send the data, but it arrives and does not look correct.

And it appears that you have already tried swapping the 16 bit words that arrive at the Compactlogix

The first manual I found online for Cimplicity refers to an 8 byte float. The manual is from 2001 so I would guess your software is newer. The only floating point format that I am aware of in RSLogix is REAL - that conforms to the 4 byte IEEE definition. I could not locate a 4 byte version of float in the Cimplicity manual. I don't know if you can control how many bytes are used for a float in Cimplicity, if there is a SINGLE float as well as the DOUBLE float that it would appear is the default.

This would explain why you are having problems though. If you create an array of 10 REALs in RSLogix, like TESTREAL, and write your data from Cimplicity to TESTREAL[0], and it puts data into TESTREAL[0] and TESTREAL[1] ... then you know what the problem is at least.

But it does not solve the problem ...
 
The only data type number supported by Modbus (both RTU & TCP) are 16-bit words.

The way how these words are interpreted at both ends of the connection does not depend on Modbus.

Modbus does not define how a floating point number is transmitted,
neither a 32-bit integer, neither a character string encapsulated in the 16-bit words.
 
Last edited:
The only data type number supported by Modbus (both RTU & TCP) are 16-bit words.

The way how these words are interpreted at both ends of the connection does not depend on Modbus.

Modbus does not define how a floating point number is transmitted,
neither a 32-bit integer, neither a character string encapsulated in the 16-bit words.

Agreed. I was referring to Cimplicity, if it support only 8 byte floating point, not being able to send useful data to the Compactlogix, if it supports only 4 byte floating point.

But that's just a guess. I haven't used Cimplicity since about 1996.
 

Similar Topics

Hi, I'm pretty new to plc programming. My current project at work is to design a c++ program that will be able to communicate to an allen bradley...
Replies
2
Views
7,988
Dear all, I have following problem. I'm sending an SMS when i got an alarm. For now I'm sending "Temp to high" but now i want to change this...
Replies
10
Views
3,862
So I had an odd request from a customer for the above. I have written the logic and tested it all in one PLC with only using 7 outputs and 7...
Replies
15
Views
421
can the slc500 5/05 send a email and text over Ethernet ?
Replies
3
Views
182
Hello Friends I have took the sample program from AB webpage and modified, but I can only send 127 chars...
Replies
1
Views
176
Back
Top Bottom