我截取了PLC厂商上位机软件监控PLC的"文本"数据(可以转换成16进制), R232的串口,用串口调试工具发送文本字符串
01R,PLC,R100,08:<(16进制30 31 05 01 52 2C 50 4C 43 2C 52 31 30 30 2C 03 30 38 3A 3C 04 )。
然后PLC会有反应,返回01S,PLC,R100=123,064<。
其中校验数字08:<里边的数字不对的话,不会成功返回。读R101时发送01R,PLC,R101,624>,.... 里边的数字是根据R的数值变化的。
这句话前半部分好理解,S是发送,R是读。软件读PLC中寄存器R100的数值。我现在困惑的是后面的校验码08:<是怎么来的。如果是CRC算法的话,计算的是01R,PLC,R100,中那段字符的ASC码串呢?其中的“,”逗号也算数据参与校验计算吗?
如果只读一两个R寄存器也就无所谓,把他们的校验码都监控掉,但是我需要读好几百个。注08:<是我记忆的数字,不是实际数字。就想知道他怎么来的。
注明:该厂家通讯协议未公开,中国代理商都不知道。另外,貌似CRC算法中不会出现“08:<”这种字符。用16进制表示为“30 38 3A 3C ”莫非是CRC-32?