首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python modbus-tk modbus服务器正在合并两个请求,因此出现CRC错误

Python modbus-tk modbus服务器正在合并两个请求,因此出现CRC错误
EN

Stack Overflow用户
提问于 2019-01-31 19:55:31
回答 1查看 357关注 0票数 2

我正在使用modbus串行服务器的modbus-tk库。所有通信都已建立并正常工作。在一种情况下,主机正在写入一个寄存器,并且下一个请求被读取,但是modbus-tk正在合并这两个请求,因此得到CRC错误

代码语言:javascript
复制
2019-01-31 17:19:59,881 DEBUG   modbus._handle  Thread-2    -->2-16-0-11-0-1-2-0-128-178-123-2-3-0-4-0-1-197-248
2019-01-31 17:19:59,881 ERROR   modbus.handle_request   Thread-2    invalid request: Invalid CRC in request

实际请求应该是2-16-0-11-0-1-2-0-128-178-123,或者请求是2-3-0-4-0-1-197-248

你知道为什么我会有这些问题吗?

对于设置,Modbus从站通过串行232连接,并在一台服务器上运行两个从站实例。

EN

回答 1

Stack Overflow用户

发布于 2019-02-03 06:26:46

您必须创建线程安全读/写。如果你读或写,你不能用不受控制的线程来做。当你读或写的时候,你需要锁定线程。我不能解释为什么,但上次我使用modbus时,我遇到了类似的问题。Modbus根本不能很好地处理线程。锁起了很大的作用,但最安全的做法是不使用线程。

理念:

代码语言:javascript
复制
import threading

lock = threading.Lock()

def read():
    with lock:
        read....

def write():
    with lock:
        write....
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54460053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档