西门子PLC编写的CRC程序求助 点击:4718 | 回复:4



绿缘

    
  • 精华:2帖
  • 求助:0帖
  • 帖子:25帖 | 125回
  • 年度积分:0
  • 历史总积分:576
  • 注册:2005年4月04日
发表于:2010-10-30 10:15:21
楼主

大家好,我目前正在做利用CP340做MODBUS通讯,基于的协议是RTU,目前对其中的CRC校验这块程序不是太理解,找到一份资料,希望大家可以来点评下,告诉我这段程序的意思,我先把CRC效验的方法给大家说下,更好方便对照程序来看:

1、CRC码的计算方法是,先预置16位寄存器全为1。再逐步把每8位数据信息进行处理。在进行CRC码计算时只用8位数据位,起始位及停止位,如有奇偶校验位的话也包括奇偶校验位,都不参与CRC码计算。 2、在计算CRC码时,8位数据与寄存器的数据相异或,得到的结果向低位移一字节,用0填补最高位。再检查最低位,如果最低位为1,把寄存器的内容与预置数相异或,如果最低位为0,不进行异或运算。 3、这个过程一直重复8次。第8次移位后,下一个8位再与现在寄存器的内容相相异或,这个过程与以上一样重复8次。当所有的数据信息处理完后,最后寄存器的内容即为CRC码值。CRC码中的数据发送、接收时低字节在前。

首先这个FB30我就没找到。其次程序中的 OPN DB 【LW 20】我也没太搞明白,多谢大家指导……




yuanle

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 10208回
  • 年度积分:2747
  • 历史总积分:48332
  • 注册:2005年4月22日
发表于:2010-10-30 13:36:49
1楼
在Step7中新建一个FB,输入下述的STL语句,就是FB30了。

OPN DB[LW20]  间接寻址 LW20的值来自于DB_NO参数的实参,数据块号,计数器号以及定时器号只能作为16位地址进行寻址。

Regards

绿缘

  • 精华:2帖
  • 求助:0帖
  • 帖子:25帖 | 125回
  • 年度积分:0
  • 历史总积分:576
  • 注册:2005年4月04日
发表于:2010-10-30 14:41:09
2楼

回复内容:
对:yuanle 关于在Step7中新建一个FB,输入下述的STL语句,就是FB30了。

OPN DB[LW20]  间接寻址 LW20的值来自于DB_NO参数的实参,数据块号,计数器号以及定时器号只能作为16位地址进行寻址。

Regards
内容的回复:感谢大哥给的解答,小弟豁然开朗,还有一个疑问,就是

L  W#16#ffff

T #cic

这一句我感觉就是一个预制的CRC寄存器,可是#cic是如何定义的呢,在FB30里的哪里定义的,还是定义在别处?



绿缘

  • 精华:2帖
  • 求助:0帖
  • 帖子:25帖 | 125回
  • 年度积分:0
  • 历史总积分:576
  • 注册:2005年4月04日
发表于:2010-10-30 14:50:21
3楼
这个#cic,是不是TEMP里的?

大话东游

  • 精华:2帖
  • 求助:6帖
  • 帖子:39帖 | 1815回
  • 年度积分:7
  • 历史总积分:8251
  • 注册:2008年12月19日
发表于:2013-10-07 21:05:12
4楼

楼主的CRC校验程序做好了吗?你这个帖子是3年前的,你现在肯定对这个crc校验程序很熟悉了吧,我现在才开始学着做crc的校验,你能不能教教我?我的QQ号:839259434一叶秋风,如果你能看到,希望你能帮我!谢谢!


热门招聘
相关主题

官方公众号

智造工程师