yangdongsong
级别: 正式会员
精华主题: 0
发帖数量: 8 个
工控威望: 97 点
下载积分: 583 分
在线时间: 5(小时)
注册时间: 2015-11-23
最后登录: 2024-08-22
查看yangdongsong的 主题 / 回贴
楼主  发表于: 2021-10-31 21:05
描述:plc截图1
图片:
描述:plc截图2
图片:
描述:plc截图3
图片:
描述:plc截图4
图片:
描述:plc截图5
图片:
描述:plc截图6
图片:
描述:浏览器截图1
图片:
        欧姆龙PLC,用功能块编写的modbus_crc校验.经过验证.没有问题.如果是自己通过RS232自由口通信与RS485的仪表通信.这样就会用的校验码的计算.在网上找了许多资料,觉得比较麻烦也很难懂.所以产生自己编写的想法.
        1)CRC寄存器初始值为 FFFF;即16个字节全为1;

2)CRC-16 / MODBUS的多项式A001H (1010 0000 0000 0001B) ‘H’表示16进制数,‘B’表示二进制数

计算步骤为:
(1).预置 16 位寄存器为十六进制 FFFF(即全为 1) ,称此寄存器为 CRC  寄存器;  
(2).把第一个 8  位数据与 16  位 CRC  寄存器的低位相异或,把结果放于 CRC  寄
存器;

(3).检测相异或后的CRC寄存器的最低位,若最低位为1:CRC寄存器先右移1位,再与多项式A001H进行异或;若为0,则CRC寄存器右移1位,无需与多项式进行异或。

(4).重复步骤 3  ,直到右移 8  次,这样整个 8 位数据全部进行了处理;
(5).重复步骤 2  到步骤4,进行下一个 8  位数据的处理;
(6).最后得到的 CRC  寄存器即为 CRC 码。
描述:程序
附件: 欧姆龙CRC校验程序.rar (6 K) 下载次数:304
网站提示: 请不要用迅雷下载附件,容易出错
bnnyygy
bnnyygy
级别: 家园常客
精华主题: 0
发帖数量: 501 个
工控威望: 609 点
下载积分: 1809 分
在线时间: 505(小时)
注册时间: 2016-09-20
最后登录: 2024-11-22
查看bnnyygy的 主题 / 回贴
1楼  发表于: 2021-10-31 21:14
ST个人感觉更方便一些,梯形图计算太长了
ajunn
级别: 家园常客
精华主题: 0
发帖数量: 522 个
工控威望: 682 点
下载积分: 1659 分
在线时间: 1028(小时)
注册时间: 2008-11-05
最后登录: 2024-11-17
查看ajunn的 主题 / 回贴
2楼  发表于: 2021-10-31 21:32
功能块内部不需要用沿指令吧?也就一次过得出结果的函数
yangdongsong
级别: 正式会员
精华主题: 0
发帖数量: 8 个
工控威望: 97 点
下载积分: 583 分
在线时间: 5(小时)
注册时间: 2015-11-23
最后登录: 2024-08-22
查看yangdongsong的 主题 / 回贴
3楼  发表于: 2021-11-01 14:57
st没有字的异或指令。所以才用梯形图的
zmxlqy
级别: 正式会员
精华主题: 0
发帖数量: 8 个
工控威望: 99 点
下载积分: 717 分
在线时间: 14(小时)
注册时间: 2010-08-03
最后登录: 2023-06-20
查看zmxlqy的 主题 / 回贴
4楼  发表于: 2022-10-17 14:59
之前用ST编写过,多年不用不知道放哪里了