我正在寻找一些关于使用python (2.7)库"minimalmodbus“(0.7版)与Test Equity Modela 115a-F4T热室通信的建议。
我对使用python对硬件进行编程还很陌生,所以我不太确定我的方法是否缺少一些基本的初始化命令。下面是我的代码:
instrument = minimalmodbus.Instrument('/dev/ttyUSB1',1)
print instrument
print minimalmodbus.BAUDRATE
minimalmodbus.BAUDRATE = 9600
print minimalmodbus.BAUDRATE
print minimalmodbus.__version__
instrument.read_register(0,1)下面是我的输出:
minimalmodbus.Instrument<id=0x7fb5fd2136c8, address=1, mode=rtu,
close_port_after_each_call=False, precalculate_read_size=True,
debug=False, serial=Serial<id=0x7fb5fc71a890, open=True>
(port='/dev/ttyUSB1', baudrate=19200, bytesize=8, parity='N',
stopbits=1, timeout=0.05, xonxoff=False, rtscts=False, dsrdtr=False)>
19200
9600
0.7
Traceback (most recent call last):
File "/usr/local/google/home/mimartin/Documents/test-equity/model-
115a.py", line 13, in <module>
instrument.read_register(0,1)
File "/usr/local/lib/python2.7/dist-packages/minimalmodbus.py", line
258, in read_register
return self._genericCommand(functioncode, registeraddress,
numberOfDecimals=numberOfDecimals, signed=signed)
File "/usr/local/lib/python2.7/dist-packages/minimalmodbus.py", line
697, in _genericCommand
payloadFromSlave = self._performCommand(functioncode, payloadToSlave)
File "/usr/local/lib/python2.7/dist-packages/minimalmodbus.py", line
795, in _performCommand
response = self._communicate(request, number_of_bytes_to_read)
File "/usr/local/lib/python2.7/dist-packages/minimalmodbus.py", line
930, in _communicate
raise IOError('No communication with the instrument (no answer)')
IOError: No communication with the instrument (no answer)*热室已通电。我是通过串口转USB的线缆连接到它的。我还将一个零调制解调器适配器连接到电缆的串行端(在箱体上),如箱体手册所示。我假设我的第一行代码就是初始化控制室的代码。但是,我的错误消息表明情况并非如此。
在这里寻找一些帮助或指导。谢谢。
发布于 2021-06-19 01:13:33
我正在解决一个非常类似的问题,在我看来,最小的status是为RS-485创建的,它不使用DTR和DSR状态引脚(从您的调试行dsrdtr=False)。我的硬件连接使用免费的实用程序"Simplymodbus“工作,所以我知道它是正确连接的。我使用的最小looking python代码与您的代码非常相似,在查看示波器时,它看起来与从属设备接收引脚上的simplymodbus请求完全相同。然而,DTR和DSR引脚的行为不同,simplymodbus接收响应,而python最小python代码不接收响应。
我还没有找到任何方法来启用dsrdtr在最小的enable代码或使用RS-232到USB转换器的实用程序,但似乎在pyserial的库中有选项。我将探索的一种选择是切换到不使用这些状态引脚的RS-485连接。
发布于 2021-10-01 00:22:05
Minimalmodbus在RS-232上工作良好。Watlow F4和F4T仅使用TX、RX和GND与RS-232进行通信。TestEquity室对两个控制器都使用RS-232引脚(两者都可以支持232或485)。
F4仅使用16位整数。map 1模式中的F4T使用浮点、32位和16位整数以及"string“类型。所以你需要不同的函数来读取这些值。Map 2或3模式是通用F4寄存器的F4向后兼容性。
请通过下面的链接联系TestEquity,他们将为您提供Python示例。www.testequity.com/chambers-technical-support
在F4T上,请参阅菜单->设置-> Modbus中的modbus-rtu设置
假设9600,无,数据映射1
instrument = open_port('/dev/ttyUSB1',1) #通信端口,modbus地址
instrument.serial.baudrate = 9600
instrument.serial.timeout = 0.1
value = instrument.read_register(14092,0) # map 1模式下的modbus-rtu字序
打印值
值应等于1330 (高、低)或1331 (低、高)
https://stackoverflow.com/questions/45200261
复制相似问题