python 欧姆龙plc通信_二进制PLC通信校验和

本文介绍了作者在使用Python与欧姆龙PLC进行二进制通信时,遇到的校验和计算问题。文章详细展示了尝试用Python模拟C/C++的校验和算法过程,包括理解C++代码、计算十六进制字符串的总和以及应用位运算符。作者分享了两次尝试的不同结果,并提出了可能存在的问题。
摘要由CSDN通过智能技术生成

我一直在绞尽脑汁地计算一个校验和,用二进制命令与Unitronics的plc通信。它们提供了源代码,但它是在纯Windows的C实现中实现的,除了基本语法之外,这对我几乎没有什么帮助。在

预期结果

下面是字节索引、消息描述和所做的示例。在# 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 24 25 26 27 28 29 | 30 31 32

# sx--------------- id FE 01 00 00 00 cn 00 specific--------- lengt CHKSM | numbr ot FF addr- | CHKSM ex

# 2F 5F 4F 50 4C 43 00 FE 01 00 00 00 4D 00 00 00 00 00 01 00 06 00 F1 FC | 01 00 01 FF 01 00 | FE FE 5C

该规范要求计算22字节消息头的累计值,并分别计算6+字节的详细信息,得到和模65536的值,然后返回该值的2的补码。在

尝试1

我的理解是Python中的TyDE(~)运算符是直接从C/C++派生的。写了一天创建消息的Python之后,我想到了这个(精简版):

^{pr2}$

消息:2F5F4F504C4300FE010000004D000000000001000600600L010001FF010001005C

我看到了一个L,这和昨天的结果不同,昨天的结果不太接近。如果您想要基于消息其余部分的快速公式结果:Checksum(Header)应返回F1FC,Checksum(Details)应返回FEFE。在

它返回的值与规范的示例相差甚远。我相信这个问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值