您当前的位置:五五电子网电子知识plc技术plc应用三菱plc应用永宏PLC自由通讯 CRC校验的生成 正文
永宏PLC自由通讯 CRC校验的生成

永宏PLC自由通讯 CRC校验的生成

点击数:7381 次   录入时间:03-04 11:40:50   整理:http://www.55dianzi.com   三菱plc应用
“自由通讯”的意思是:上位可以依据下位给出的协议,按照该协议对下位进行存取操作。用在触摸屏或者PLC上就是:通讯命令完全交由宏指令(对HMI而言)或者梯形图(对PLC而言)来完成。
这里要举的例子就是用永宏自由通讯(FUN151 MD1模式)实现对MODBUS_RTU通讯(MODBUS_RTU协议内容网上可以下载)。我觉得RTU的比较难的在于CRC校验的实现,当然永宏本身是有 CRC16 指令的,这样可以省去CRC生成算法,但在一些没有CRC指令的PLC上面,就需要自己编写了,这里来编写CRC算法。
CRC算法说明,大概就是下面这几个意思:
1.设置CRC寄存器,并给其赋值FFFF(hex)。
 2.将数据的第一个8-bit字符与16位CRC寄存器的低8位进行异或,并把结果存入CRC寄存器。
3.CRC寄存器向右移一位,MSB补零,移出并检查LSB。
4.如果LSB为0,重复第三步;若LSB为1,CRC寄存器与多项式码相异或。
 5.重复第3与第4步直到8次移位全部完成。此时一个8-bit数据处理完毕。
 6.重复第2至第5步直到所有数据全部处理完成,最终CRC寄存器的内容即为CRC值。
 
举例:对 02H  03H  07H  D0H  00H  03H 这6个数据进行CRC校验。我们可以事先用winproladder算出这6个数据的CRC校验值或者在通讯表格里面,拖动选中需要进行CRC校验的寄存器号,也可以得出CRC值,如下图

现在通过编程来计算CRC了,我把这个过程做成子程序,并且命名为 CRC,说明
1.    R100=FFFFH(CRC寄存器),在CRC运算前,事先被赋值;
2.    V 指针,在CRC运算前,先被清零;
3.    02H  03H  07H  D0H  00H  03H 被放在 R6003 ~R6008 这6个寄存器内。
 
再来看看主程序部分

 

[1] [2]  下一页


本文关键字:暂无联系方式三菱plc应用plc技术 - plc应用 - 三菱plc应用

上一篇:PLC的运行 环境