- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
在西门子PLC中使用SCL语言实现CRC校验计算
在西门子PLC中运用传统梯形图方式和查表法实现Modbus通讯和CRC
校验,会影响控制的稳定和对采集设备的数量和数据量有所限制,无法做到高效、
稳定。采用SCL语言编程很好解决了原有的问题,并使控制器效率大大提高。
标签:西门子PLC;SCL语言;Modbus;CRC校验
1、引言
当前几乎所有的PLC控制器都带有Modbus总线通信接口,这其中也包括
西门子的S7300和S7400系列[1],西门子PLC的CPU模块自身不带有Modbus
通信口,需配置相应的RS485通讯模块(CP340/CP341/CP440/CP441),再配置
相应的Modbus通讯协议硬件狗,就是说你要用西门子PLC做Modbus通讯时,
你需要增加RS485通讯模块和Modbus通讯协议硬件狗费用。根据西门子公开报
价,Modbus通讯协议硬件狗的价格要14000.00元。而且用传统的梯形图编程方
法实现CRC校验,會导致CPU处理量迅速增加,严重占用了CPU的资源,导
致CPU死机,影响系统的稳定性。
为解决以上问题,我们以前采用查表法解决CRC校验问题,但用查表发存
在很大的局限性,比如:只能有固定的设备地址、固定的数据长度和固定的数据
寄存器地址;当需通讯的设备有几十台或上百台后,查表法就会显的效率很低、
程序累赘繁琐,影响系统稳定。
使用SCL语言编程方式(除西门子编程软件外需另外安装的一种编程方式,
这是一种类似于C语言的一种编程方式),就很好的解决了以上问题。
2、Modbus通讯和CRC校验的相关介绍
2.1Modbus通讯协议
Modbus通讯协议[2]在一根通讯线上采用主从应答方式的通讯连接方式。首
先主机寻址到唯一设备地址的终端(从机)先主机寻址到唯一设备地址的终端(从机),随后从机发出相应信号以反向的方
式传输给主机。
Modbus通讯只允许主机和从机之间通讯,不允许从机之间通讯,这样就保
证了从机在初始化时占有数据链路,而仅限于相应到达本从机的查询信号。
主机查询:消息查询帧包含设备地址、功能代码、数据信息、校验码。设备
地址是要进行数据交换的从机设备;功能代码是要从从机设备采取何种功能;数据
信息是要从从机取的寄存器地址和地址长度;校验码就是用来检验数据交换的准
确性,它采用CRC校准规则。
从机相应:如果从设备相应主机请求则设备产出一正常回应,在回应的数据
帧中包含从机地址、功能代码、数据信息、CRC校验码。在返回的数据信息码
中包含主机请求的信息:如请求寄存器的值或状态。如果请求数据有错误,则从
机设备不相应主机请求。
2.2CRC校验
CRC校验码占用两个字节,包含了一个16位的二进制值。CRC值有传输设
备计算出来并加到数据帧上,接受设备在接收数据后重新计算CRC值,然后与
收到的CRC值进行比较,值进行比较,如果相等就做出相应,反之就表示错误,不做出相应。
具体CRC校验计算方式为:
(1)预置一个16为的寄存器为16#FFFF,称之为,称之为CRC寄存器。
(2)把数据帧中的第一个字节的8位与CRC寄存器中的低字节进行异或
运算,结果存回CRC寄存器。
(3)将CRC寄存器向右移一位,最高位填以寄存器向右移一位,最高位填以0,最低位移出并检测。
(4)如果最低位为0:重复第三步(下一次移位);如果最低位为1:将CRC
寄存器与一个预设的固定值(0A001H)进行异或运算。
(5)重复第三步和第四步直到8次移位。这样处理完了一个完整的八位。
(6)重复第2步到第5步来处理下一个八位,直到所有的字节处理结束。
(7)最终CRC寄存器的值就是CRC的值。
CRC校验图例表示:
3
文档评论(0)