gpt4 book ai didi

python - Gefran 800P 和 minimalmodbus (Mac) : "ValueError: Too short Modbus RTU response (minimum length 4 bytes). Response: '\x0 0' "

转载 作者:太空宇宙 更新时间:2023-11-04 05:14:38 26 4
gpt4 key购买 nike

我是 Python 的初学者 (仅供引用),并尝试使用 minimalmodbus 库 (Python + Mac) 与 Gefran 800P 程序员/ Controller 进行通信。我正在使用 USB 到 RS485 串行转换器电缆 ( http://www.ftdichip.com/Support/Documents/DataSheets/Cables/DS_USB_RS485_CABLES.pdf ) 与 Gefran 设备通信。设备背面的引脚 (15+17(Rx+Tx) & 16+18(Gnd+Gnd)) 分别连接到转换器电缆的 Data +(A) 和 Data -(B) (RS485-2wired联系)。我不知道这个设备的从属地址,手册中也没有提到地址(http://www.primusthai.com/marketing/Gefran%20800%20(Controller).pdf)。

我试过:

  1. 将从站地址从 0 更改为 247,我总是收到相同的消息。
  2. 尝试检查不同的寄存器地址并尝试使用功能代码(3 和 4),尝试使用编程器设置以确保代码和设备中的参数相同。什么都不管用!也许我错过了什么。期待您的帮助。我真的被困在这一点上一个多星期了!

下面是我的代码,当我运行它时,它给我一个错误“ValueError:太短的 Modbus RTU 响应(最小长度 4 个字节)。响应:'\x00'”。

import minimalmodbus
import serial
import sys
import time
import sh

minimalmodbus.CLOSE_PORT_AFTER_EACH_CALL = False
print "scanning for addresses..."
for i in range(1,247):


programmer = minimalmodbus.Instrument('/dev/tty.usbserial-FT0C9E5S', i, 'rtu')
print "address is", i
programmer.mode = minimalmodbus.MODE_RTU
programmer.serial.timeout = 8
programmer.handle_local_echo = False
# If RS-485 adapter has local echo enabled
programmer.serial.bytesize = 8
programmer.precalculate_read_size = True
programmer.serial.baudrate = 9600
programmer.serial.parity = minimalmodbus.serial.PARITY_NONE
programmer.debug = True
print "all parameters set... now reading"
print programmer


try:

setpoint = programmer.read_register(79,1,4)
print setpoint
print "This is the address", i
except sh.ErrorReturnCode_1:
print "no response"

最佳答案

好的,Jacek,感谢所有提示。我终于设法让设备使用 Gefran Cable 进行通信。我不是 100% 确定什么真正有效,但我尝试了以下方法:

  1. 安装软件“modpoll”轮询 modbus 设备,比较 GF_eXpress 软件和设备中的参数,了解后台发生的情况。

  2. 尝试使用 pyserial 与设备进行串行通信 - 我认为这成功了,您必须先初始化端口,然后再进行通信。在我的例子中,打开一个串行端口并连接到该端口,然后使用 modbus,就像变魔术一样。

  3. 我重新启动了编程器,我的 Mac,给了基本参数波特率 - 9600,奇偶校验 - 无,地址 - 1 和停止位 - 1,它开始工作了..

我猜所有这些都可能有所帮助,而且如果没有任何效果,重启您正在使用的每台设备并重置参数并将其再次设置为基本/标准值总是好的。

关于python - Gefran 800P 和 minimalmodbus (Mac) : "ValueError: Too short Modbus RTU response (minimum length 4 bytes). Response: '\x0 0' ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42091983/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com