当前位置:首页 > 技术分享 > 正文

西门子200SMART PLC CRC校验程序的编写

导读:在工作现场,经常会用到通讯与其它设备交互信息,而通讯必然会需要校验。而初学者学习MODBUSRTU的时候往往会纠结这个CRC校验程序如何编写?CRC校验程序相对来说比较繁琐,但是大家可以收藏好这个程序(使用200SMARTPLC),加以理解,需要的时候调用此程序即可。那首先我们来看CRC校验的...

导读:在工作现场,经常会用到通讯与其它设备交互信息,而通讯必然会需要校验。而初学者学习MODBUSRTU的时候往往会纠结这个CRC校验程序如何编写?CRC校验程序相对来说比较繁琐,但是大家可以收藏好这......

导读:在工作现场,经常会用到通讯与其它设备交互信息,而通讯必然会需要校验。而初学者学习MODBUSRTU的时候往往会纠结这个CRC校验程序如何编写?CRC校验程序相对来说比较繁琐,但是大家可以收藏好这个程序(使用200SMARTPLC),加以理解,需要的时候调用此程序即可。

那首先我们来看CRC校验的步骤,严格按照步骤来写程序即可:

1、设置CRC存储器为16A001进行异或运算,结果仍存与CRC。

5、重复3、4两步,直到右移8次,这样第一个八位数就进行处理了结果仍然存于CRC。

6、重复2-5步,处理第二个八位数。

【程序结构描述】

西门子S7-200SMART系列PLC的程序结构分为主程序、子程序、中断程序。此程序用“MAIN”程序调用“CRC校验程序”子程序

定义子程序变量表:如图1-0


子程序变量表定义图1-0

(1)“CRC校验程序”子程序,初始化存储器,并把16A001做异或运算。程序如图1-3所示


图1-3执行移位操作

(4)利用指针,指针加1,指向下一个地址,取出下一个地址之后再进行重复以上步骤效验,直到数据都效验完,程序退出FOR循环。程序如图1-4所示


图1-4指针加1

(5)对计算结果进行高低字节交换,把结果输出。程序如图1-5所示


图1-5高低字节交换

(6)在“MAIN”程序中通过按钮的触发调用“CRC校验程序”子程序。


验证一:写入数据到VB0至VB5中,CRC效验值存储在VW100中


CRC效验计算小助手(与程序中计算相符):


验证二:写入数据到VB0至VB5中,CRC效验值存储在VW100中


CRC效验计算小助手计算(与程序中计算相符):


最新文章