Archived

This topic is now archived and is closed to further replies.

Pillejunior

LRC check

Recommended Posts

I am programming a program which will talk to a plc. I use the modbus protocol to communicate with it in C. But you have to do a LRC check and send that with the data. Does someone know how you do a LRC check? And if perhaps someone knows something more about the modbus protocol(how it works, where i can find more info)let me know. Thanx in advance

Share this post


Link to post
Share on other sites
We probably have some documentation around here somewhere... I peeked at our modbus code and it uses a CRC. And as I understand it, Modbus is an industry standard - so I'm about 99% certain it's a CRC. Perhaps cyclic begins with an L in another language??

And, oddly enough, there' a www.modbus.org

Edited by - Magmai Kai Holmlor on October 23, 2001 12:08:36 AM

Share this post


Link to post
Share on other sites
CRC = Cyclical Redundancy Check
LRC = Longitudinal Redundancy Check

LRC's tend to crop up in serial data communications. (Mixed memories from many many moons ago of getting a Nippondenso barcode reader to talk to an Archimedes ;-)




unsigned char get_lrc( unsigned char* data, int size )
{
int i;
unsigned char sum = 0,
unsigned char checksum = 0xff;


for (i=0; i < size; ++i)
{
sum = sum + buf[ i ];
}

for (i=0; i<8; i++)
{
if ((sum & (1 << i)) > 0)
{
checksum = checksum & (0xff ^ (1 << i));
}
}

++checksum;

return checksum;
}



--
Simon O'Connor
Creative Asylum Ltd
www.creative-asylum.com



Edited by - S1CA on October 24, 2001 9:25:23 AM

Edited by - S1CA on October 24, 2001 9:26:23 AM

Share this post


Link to post
Share on other sites