厦门海正自动科技有限公司2007年成立于厦门经济区,本公司主要销售各种电子、电气产品及配件.是台湾FATEK永宏PLC可编程控制器在大陆的一级代理商及销售深圳威纶通各种威纶触摸屏.
    永宏PLC
值得您信賴的品牌
 业务电話:  0592-5337726
            0592-5337728
 联系传真:  0592-5337738
   陈先生:  13328315236
   邓小姐:  13860161134
 技术热线:  0592-5337731
 在线SKYPE: HZ-SALES726
 QQ技术群:  30812609
   点击这里给我发消息  点击这里给我发消息        点此与我即刻洽谈
海正首页 >> 技术论坛 >> 永宏PLC自由通讯CRC校验的生成
论坛登陆
用户名: 
密码: 
 欢迎光临永宏PLC相关技术论坛!技术咨询电话:0592-5337731 技术交流QQ群号: 30812609
本主题由 匿名  发表于2014-12-13 10:29:10

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

“自由通讯”的意思是:上位可以依据下位给出的协议,按照该协议对下位进行存取操作。用在触摸屏或者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个寄存器内。
 
再来看看主程序部分



通过监视页观察 CRC结果

由于CRC校验结果是高低位对调的,这里把CRC累加器的值对应存放到需要存储CRC结果的寄存器就可以了。
永宏的B1/B1z系列PLC之前不能使用CRC16指令,所以之前的CRC结果比较麻烦,但现在winproladder V3.20里面,B1/B1z已经支持该指令,并且也可以进行浮点运算了。



本网站已关闭文章评论功能,如有问题请致电!

网站首页    公司简介    海正动态    产品中心    工程案例    技术论坛    资料下载    联系方式    给我们留言
2006-2013 永宏PLC經銷商-廈門海正自動化科技有限公司 閩ICP備16023001号-1
聯系電話:0592-5337726 5337727 5337728 傳真:0592-5337738 技術服務:0592-5337731
聯系地址:福建省廈門市火炬高新区火炬路7-11号(光业东楼)四楼401室 郵編:361000

闽公网安备 35020302001512号