- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在 MODBUS RTU 中使用 python 脚本控制执行器掌握。我尝试使用库minimalmodbus进行通信(写位,写入和读取寄存器)与我的奴隶。
当我启动代码时,出现一些错误。那么,有人可以帮我找到解决方案吗?
我的代码:
import minimalmodbus
import os
import struct
import sys
import serial
import time
instrument = minimalmodbus.Instrument('/dev/ttyRS485', 1)
instrument.serial.port
instrument.serial.baudrate = 9600
instrument.serial.parity = serial.PARITY_NONE
instrument.serial.bytesize = 8
instrument.serial.stopbits = 1
instrument.mode = minimalmodbus.MODE_RTU
instrument.serial.timeout = 0.05
modbus = instrument.write_bit(0x0427, 1)
print (modbus)
alarme = instrument.write_bit(0x0404, 1)
print (alarme)
alarme = instrument.write_bit(0x0404, 0)
print (alarme)
on = instrument.write_bit(0x0403, 1)
print (on)
home = instrument.write_bit(0x040B, 1)
print (home)
position = instrument.write_register(0x9900, 0, number_of_decimals=2,functioncode=16, signed=False)
print (position)
posi = instrument.write_register(0x9901, 6000, number_of_decimals=2,functioncode=16, signed=False)
print (posi)
错误:
========================= RESTART: /home/pi/test.py =========================
None
None
None
None
None
None
Traceback (most recent call last):
File "/home/pi/.local/lib/python3.5/site-packages/minimalmodbus.py", line 2448, in _pack
result = struct.pack(formatstring, value)
struct.error: 'H' format requires 0 <= number <= 65535
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/pi/test.py", line 36, in <module>
posi = instrument.write_register(0x9901, 6000, number_of_decimals=2, functioncode=16, signed=False)
File "/home/pi/.local/lib/python3.5/site-packages/minimalmodbus.py",line 518, in write_register
payloadformat=_PAYLOADFORMAT_REGISTER,
File "/home/pi/.local/lib/python3.5/site-packages/minimalmodbus.py",line 1166, in _generic_command
payloadformat,
File "/home/pi/.local/lib/python3.5/site-packages/minimalmodbus.py",line 1514, in _create_payload
value, number_of_decimals, signed=signed
File "/home/pi/.local/lib/python3.5/site-packages/minimalmodbus.py", line 1991, in
_num_to_twobyte_string outstring = _pack(formatcode, integer)
File "/home/pi/.local/lib/python3.5/site-packages/minimalmodbus.py", line 2454, in _pack
raise ValueError(errortext.format(value, formatstring))
ValueError: The value to send is probably out of range, as the num-to-bytestring conversion failed.
Value: 600000 Struct format code is: >H
最佳答案
为了响应您在评论中对替代库的请求,以下是我使用 pymodbus 库读取 modbus 的内容:
import pymodbus
from pymodbus.pdu import ModbusRequest
from pymodbus.client.sync import ModbusSerialClient as ModbusClient
from pymodbus.transaction import ModbusRtuFramer
client = ModbusClient(
method = 'rtu'
,port='/dev/tty.usbserial-AQ00BYCR'
,baudrate=38400
,parity = 'O'
,timeout=1
)
connection = client.connect()
registers = client.read_holding_registers(0,100,unit=1)# start_address, count, slave_id
print (registers.registers)
请注意,在上面,对于slave_id 1,读取从地址0开始并继续到地址100。
要写入寄存器,请执行以下操作:
write = client.write_register(1,425,unit=1)# address = 1, value to set = 425, slave ID = 1
关于python - Modbus RTU master - 带有minimalmodbus的python脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60431210/
https://code.google.com/p/stm32modbus/source/browse/#svn%2Ftrunk%2F%20stm32modbus%20--username%20ick
我正在用 C 编写一个 MODBUS CRC16 计算器。我之前有一个 python 可以执行此操作,我想将它转换为 C。我在网上找到了一些代码,但它没有给我正确的答案。 对于我的 python 代码
请为我知道之前讨论过但找不到答案的问题道歉。我正在尝试创建一个应用程序以通过 Modbus RTU 与我们的微 Controller 进行通信。是否有适用于 Android 的 Modbus RTU
我想在 MODBUS RTU 中使用 python 脚本控制执行器掌握。我尝试使用库minimalmodbus进行通信(写位,写入和读取寄存器)与我的奴隶。 当我启动代码时,出现一些错误。那么,有人可
目前我正在使用 Schneider Power Logic 电气设备。我想从设备读取数据并在我的系统中显示值。到目前为止,我发现了 J2mod、Jamod 和 Modbus4Java 库。我使用所有
我正在使用minimalmodbus与 PID controller (Love 16C-3) 进行交流通过 RS485 使用USB-RS485 adapter cable . 但是当尝试读取寄存器时
我正在为系统开发一个自动化测试用例,需要一个自动 modbus 输入设备。 我的用例是实现一个基于 Raspberry pi 的 RTU modbus 从站并连接到 modbus 主站。 当主设备请求
我使用 modbus-tk 创建了一个 modbus slave,如下所示。我使用 Simply modbus 主站软件(http://www.simplymodbus.ca/RTUmaster.ht
我写了一个代码,通过 ModBUS RTU 与 9600 波特率的主设备进行通信。我下载了一个模拟程序,它是 ModBUS Slave。我可以通过这种方式与PC通信。我可以用我的微 Controlle
我正在实现一个软件,我可以通过串口在 Modbus RTU 协议(protocol)中读取和写入数据。为此,我需要计算字节串末尾的两个 CRC 字节,但我无法做到这一点。 在网上搜索,我发现了两个似乎
刚接触 Modbus 并使用 Modbus RTU 开发应用程序。我想知道如何找出RTU消息帧分离时间。在 Modbus RTU 规范中,它提到了 3.5 个字符的时间,但没有更多关于我如何决定这个间
我想通过 Modbus 协议(protocol)在 Raspberry PI(从机)和我的 PC(主机)之间建立通信。目前,我正在使用 modbus-tk (python) 来设置通信协议(proto
我正在尝试在 Digi Module connect me 9210 设备中实现 Modbus RTU Master。为此,我使用 libmodbus 库。 我必须在 NetOs 中提供什么设备名称才
我的问题会很奇怪,所以我很抱歉。 我将在名为“DiGi Module Connect Me 9210”的电子设备中实现 Modbus RTU Master。我将从该设备向 PIC 请求一些数据,如节点
我正在尝试设置一个接受 modbus RTU 轮询的监听器。 我发现了很多与modbus相关的npm库,但它们都与其他modbus从站的轮询有关,或者充当modbus TCP服务器。我需要模拟modb
我正在尝试编写 modbus slave 并遇到一个问题:我正确地接收了来自 master 的请求,但是当我尝试响应时,它看起来像是错误地发送到串行端口,因为当我插入 RS485 嗅探器时 - 我明白
我编写了一些简单的代码来从计时器的 2 个寄存器中获取信息。 我正在向 OVEN 发送下一个命令: 10 03 00 16 00 02 26 8E 并期望得到下一个响应(尝试使用 OpenSCADA
我正在使用 modbus-tk 通过 RS-485 网络通过 Modbus RTU 与设备进行串行通信。 我正在尝试弄清楚如何使用函数 23,READ_WRITE_MULTIPLE_REGISTERS
我是 Python 的初学者 (仅供引用),并尝试使用 minimalmodbus 库 (Python + Mac) 与 Gefran 800P 程序员/ Controller 进行通信。我正在使用
我是一名优秀的程序员,十分优秀!