您现在所在的是:

PLC论坛

回帖:7个,阅读:4651 [上一页] [1] [下一页]
1261
xlxlab
文章数:111
年度积分:50
历史总积分:1261
注册时间:2005/5/24
发站内信
发表于:2007/10/1 16:17:00
#0楼
如何用PLC程序实现CRC校验码计算,谢谢!表情
2257
wudp
文章数:501
年度积分:50
历史总积分:2257
注册时间:2003/7/8
发站内信
发表于:2007/10/2 0:38:00
#1楼
照CRC的计算方法
一步一步做
1261
xlxlab
文章数:111
年度积分:50
历史总积分:1261
注册时间:2005/5/24
发站内信
发表于:2007/10/2 0:51:00
#2楼
wudp老兄,你好我用如下CRC的计算方法:
   · 预置16位寄存器为十六进制FFFF(即全为1)。称此寄存器为CRC寄存器;
  · 把第一个8位数据与16位CRC寄存器的低位相异或,把结果放于CRC寄存器;
  · 把寄存器的内容右移一位(朝低位),用0填补最高位,检查最低位;
  · 如果最低位为0:重复第3步(再次移位); 如果最低位为1:CRC寄存器与多项式A001(1010 0000 0000 0001)进行异或;
  · 重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理;
  · 重复步骤2到步骤5,进行下一个8位数据的处理;
  · 最后得到的CRC寄存器即为CRC码。
我用手工按上面方法计算了一下,好象算了N遍都没有得到串行通信口调试软件计算出的结果,不知是我理解错误还是那个地方出了问题,如计算01H的CRC码,软件计算的是807eh,而我用手工计算算出的是c03eh, 不知是那个地方理解或者算法有误,请剔教,谢谢!!!
2257
wudp
文章数:501
年度积分:50
历史总积分:2257
注册时间:2003/7/8
发站内信
发表于:2007/10/2 20:06:00
#3楼
方法是对的
手工算的话很麻烦
注意右移和比较
1261
xlxlab
文章数:111
年度积分:50
历史总积分:1261
注册时间:2005/5/24
发站内信
发表于:2007/10/2 22:25:00
#4楼
我想问的是,WUDP你对三菱Q01PLC熟悉吗?请问在串行通讯QJ71C24N中它接收PLC的数据一定要是ASCII码吗?如果是,那么Q01中的数据处理没有ASCII转换的指令,这样岂不是太麻烦了,我觉得三菱做东西越来越垃圾了,如果这样搞我以后不敢在用它的东西了。请你能说说,让大家学习学习,少走弯路.
2257
wudp
文章数:501
年度积分:50
历史总积分:2257
注册时间:2003/7/8
发站内信
发表于:2007/10/6 22:49:00
#5楼
有ASCII转换的指令
1261
xlxlab
文章数:111
年度积分:50
历史总积分:1261
注册时间:2005/5/24
发站内信
发表于:2007/10/7 12:40:00
#6楼
但我看了手册一下,也试过了,可就是找不到那条指令可以担当这个角色,是基本型的Q系列的plc,而不是高性能的,ASCII在Q系列的PLC中只看到了Q02系列的及以上的有这条指令,还望老兄能明示。谢谢!!
表情
1213
激光侠
文章数:105
年度积分:50
历史总积分:1213
注册时间:2005/7/15
发站内信
发表于:2010/6/27 18:24:55
#7楼
不能用RTU吗?

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

46.8003