MCGS组态屏CRC16(Modbus)校验计算脚本

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/Sun_tian/article/details/86749922

MCGS组态屏CRC16(Modbus)校验计算脚本
说明:该脚本可对任意字节长度的字符型变量进行CRC校验码计算,首先在实时数据库中新建以下变量:
inputString——字符型
stringLength——数值型
mid_n——数值型
CRCFull——数值型
CRCLSB——数值型
i——数值型
CRC1——字符型
CRC0——字符型
CRC码——字符型

然后编写脚本代码:
stringLength=!len(inputString) '读取字符串长度
mid_n=1 '计数变量
CRCFull=65535 '0XFFFF
while(mid_n<=stringLength)
i=0
CRCFull=!BitXor(CRCFull,!Hex2I(!mid(inputString,mid_n,2))) '按位异或
while(i<8)
CRCLSB=!BitAnd(CRCFull,1)
IF CRCLSB=1 THEN
CRCFull=!BitAnd(!BitRShift(CRCFull,1),32767)
CRCFull=!BitXor(CRCFull,40961) 'A001对应40961
ELSE
CRCFull=!BitAnd(!BitRShift(CRCFull,1),32767)
ENDIF
i=i+1
endwhile
mid_n=mid_n+2
endwhile

CRC1=!I2Hex(!BitAnd(!BitRShift(CRCFull,8),255)) '高八位
CRC0=!I2Hex(!BitAnd(CRCFull,255)) '低八位
CRC码=CRC1+CRC0

将该脚本嵌入策略或其他模块,即可运行。
程序运行结果:
例如 inputString 为 “010600030001”,经脚本计算,CRC码为 “0AB8”

猜你喜欢

转载自blog.csdn.net/Sun_tian/article/details/86749922
今日推荐