mall9002
级别: 略有小成
精华主题: 0
发帖数量: 136 个
工控威望: 247 点
下载积分: 919 分
在线时间: 181(小时)
注册时间: 2017-11-30
最后登录: 2024-04-24
查看mall9002的 主题 / 回贴
楼主  发表于: 2019-05-13 17:52
图片:
写了一个ST的CRC校验FB, 高手帮我看看 ,现在值算出来是对的,但是更改D100-D105数值后,必须要M80断开再接通,才能准确的算出

CRC值的错误正确检查使用的这个网址 http://cht.nahua.com.tw/index.php?url=http://cht.nahua.com.tw/software/crc16/&key=Modbus,%20RTU,%20CRC16&title=計算%20Modbus%20RTU%20CRC16

另外ASCII模式的LRC校验计算方法说明书上的太麻烦了,用下面的方法实现:1,将站号到数据的全部值加起来得到D0;2,D0 MOD K256(求余,本来是求模,但是这个都是整数,可以直接取余) ;3, K256- (D0 MOD K256)得到一个值。这个值就是要计算的LRC值。
LRC 参考网址 http://www.ip33.com/lrc.html

CRC值的计算可以参考网址 http://www.ip33.com/crc.html   参数模型 NAME选择 CRC-16/MODBUS
[ 此帖被mall9002在2019-05-13 18:22重新编辑 ]
附件: CRC test.zip (180 K) 下载次数:104
网站提示: 请不要用迅雷下载附件,容易出错
wei0212007
级别: 论坛先锋
精华主题: 0
发帖数量: 1106 个
工控威望: 1159 点
下载积分: 6900 分
在线时间: 1146(小时)
注册时间: 2007-04-19
最后登录: 2024-04-28
查看wei0212007的 主题 / 回贴
1楼  发表于: 2019-05-15 00:07
路过,期待大神。
枫落云端
施主,脚抬一下
级别: 略有小成

精华主题: 0
发帖数量: 341 个
工控威望: 465 点
下载积分: 1590 分
在线时间: 408(小时)
注册时间: 2017-10-10
最后登录: 2024-04-24
查看枫落云端的 主题 / 回贴
2楼  发表于: 2019-05-15 09:37

MOVP(TRUE,k0,Z0);
MOVP(TRUE,k1,ii);
MOVP(TRUE,站号地址,站号变址寄存器);  
WXORP( TRUE,K0,HFFFF,CRC寄存器 );
这些指令的脉冲去掉,变成
MOV(TRUE,k0,Z0);
MOV(TRUE,k1,ii);
MOV(TRUE,站号地址,站号变址寄存器);  
WXOR( TRUE,K0,HFFFF,CRC寄存器 );