Python的MODBUS-TK MODBUS服务器合并两个请求,并因此获得CRC错误

问题描述 投票:2回答:1

我使用的MODBUS-TK库Modbus串口服务器。所有的通信启动和工作。有一个实例,其中主机写入一个寄存器和下一个请求是读,但MODBUS-TK是合并这两个请求,并因此获得CRC错误

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连接并正在运行单个服务器上两个从实例。

modbus modbus-tk
1个回答
0
投票

你必须创建线程安全的读/写。如果你读或写,你不能有失控的线程做到这一点。当你读或写你需要锁的线程。我无法解释为什么,但我最后一次与MODBUS的工作,我有类似的问题。 MODBUS只是不能处理的线程非常好。锁定帮了不少忙,但还是最安全是做它Threadless的。

理念:

import threading

lock = threading.Lock()

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

def write():
    with lock:
        write....
© www.soinside.com 2019 - 2024. All rights reserved.