问题标签 [modbus-tk]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - PLC modbus [WinError 10054]:现有连接被远程主机强行关闭
我之前尝试过相同的代码,运行完美。后来我使用“LOGO!Soft Comfort 8.2”对我的“Siemens LOGO 12/24 rce”进行了编程,即便如此,它也能完美运行。
但是当我使用 Python 重新编程时,它显示: 发生异常:ConnectionResetError [WinError 10054] 现有连接被远程主机强行关闭
代码:
错误:
请帮助解决此问题....在此先感谢
modbus - Python modbus-tk modbus 服务器正在合并两个请求,因此出现 CRC 错误
我正在为 modbus 串行服务器使用 modbus-tk 库。所有的通信都已启动并正常工作。有一种情况,主机正在写入一个寄存器并读取下一个请求,但 modbus-tk 正在合并这两个请求,因此出现 CRC 错误
实际请求应为 2-16-0-11-0-1-2-0-128-178-123,其他请求应为 2-3-0-4-0-1-197-248
任何想法为什么我有这些问题
对于设置,Modbus 从站通过串行 232 连接并在单个服务器上运行两个从站实例。
modbus-tk - 在使用 modbus_tk 库时需要帮助
我正在使用 modbus_tk 库作为 Modbus RTU 从站。我有一个现成的 Modbus RTU 主模拟器,通过 USB 到 485 转换器在另一台 PC 上运行。我在 Master 中看不到我的持有登记册。
我已经验证了串行链路是好的,因为我可以使用串行程序向从机发送字符串。我尝试为 16 位和 32 位整数设置主控,响应始终为 83 04。我尝试使用几个不同的主控,起始地址为 0,这个恰好默认为第一个寄存器 40001。波特率和串行端口设置匹配。
python - 如何读取对 Modbus 读取请求的响应?
对于使用 Raspberry Pi 4 的项目,使用特殊屏蔽作为 Modbus 主设备,我已成功写入寄存器,但我无法从寄存器读取。我正在使用 Simply Modbus Slave 程序进行测试,可以看到请求似乎顺利完成,但我无法在我的 Raspberry Pi 上打印任何数据。
目前我怀疑我从 modbus-tk (cst.READ_INPUT_REGISTERS)使用的命令发送了读取输入寄存器命令,但实际上并没有收到响应。
因此,我正在寻求帮助来捕获这些值,或者保存从从站接收到的所有内容并在这些数据中查找值。
此外,打印发送和接收的所有内容可能会很好,这样我就可以看到通信中发生了什么。
这是我正在使用的当前代码:
我的代码是在这里 (Software/Test Codes/MODBUS)找到的我的 shield 的演示代码 (rtumaster.py) 的编辑版本。
先感谢您
python - modbus-tk 得到 Modbus 错误:异常代码 = 3
我正在尝试modbus-tk
通过 RS-485 网络通过 Modbus RTU 与设备进行串行通信。
要了解如何使用modbus-tk
,我正在尝试查询:
- 输入寄存器:
Year of Manufacture
- 注册地址:
0x7543 = 30019
- 设备:
1
- 数据类型:16位整数
- 值 =
2019
(使用免费的主 modbus 模拟器验证)。
这是我使用的代码,主要基于rtumaster_example.py。输入:
输出:
看起来这个例外是针对 ifthe slave has returned an error
你认为我做错了什么?我是这个图书馆的新手。
我读过的
- 无法使用 Python 的 modbus_tk 连接到从站,我正在使用
pyserial >= 3.1
modbus-tk
以及标签下的所有其他问题、Google Groups 中的一些帖子以及 repo 的示例 +README.md
设备规格
- 设备:SST Sensing 的OXY-LC-485
- Modbus RTU,9600/8-N-1
- 用户指南(第 7.1.2.1 节包含一组输入寄存器)
- 设备已插入我运行此 Python 脚本的 Windows 机器
套餐
我在 Windows 10 上使用 Python 3.6。
**编辑 1**
根据@Brits 的评论,我将我的注册表地址更新为正确的功能代码和数据帧地址。
**编辑 2**
更新了问题,因为在更正确的库使用后我得到了一个不同的错误。
python - modbus-tk 用于 Modbus RTU,读/写多个寄存器(fn 代码 23),返回异常代码 1
我正在modbus-tk
通过 RS-485 网络通过 Modbus RTU 与设备进行串行通信。
我想弄清楚如何使用函数 23, READ_WRITE_MULTIPLE_REGISTERS
. 这是我第一次使用函数 23。这是我当前的实现:
运行此命令时,我收到以下错误:Modbus Error: Exception code = 1
我在Wikipedia上查找了这个异常代码,然后看到:
查询中收到的功能码不被从机识别或允许
你认为这意味着我的设备真的不支持这个功能码吗?还是我有语法问题/我误用了这个函数?
我把我的完整脚本放在下面。
完整代码示例
输入
输出
设备规格
- 设备:SST Sensing 的OXY-LC-485
- Modbus RTU,
9600/8-N-1
- 用户指南(第 7.1.2.1 节包含一组输入寄存器)
- 设备已插入我运行此 Python 脚本的 Windows 机器
套餐
我在 Windows 10 上使用 Python 3.6。
python - minimalmodbus,随机生成错误的crc
我目前正在使用 RaspberryPi 进行数据采集项目。当我启动我的请求脚本时,有时(很少但经常)我的奴隶(计算机)检测到 CRC 错误或无效长度。我猜这个错误可能来自这样一个事实,因为我的脚本很快并且在几秒钟内要求数百个寄存器,有时消息不完整,我的奴隶将其检测为错误消息。我想知道是否有可能 minimummodbus 的时间不正确,有时会发送错误或请求的一部分(不完整)。
从站返回错误:
当奴隶不知道该回答什么时,这是我在主人身上遇到的典型错误:
我在从机上使用 modbus_tk 来模拟 modbus 从机。接下来通常是我的代码的一部分,它从依赖于值类型的从站请求值。
由于我的第一个猜测是时间问题,我随机插入“time.sleep”来计时我的请求,但错误仍然出现。而且它是完全随机的,有时它会工作 5 分钟,有时会在我的第一个 CRC 错误之前几秒钟。你知道我应该去哪里调查吗?在此先感谢您的帮助!
编辑:我的 PC 充当从机,具有模拟多个从机的 modbus_tk 脚本。RPI 是请求寄存器及其值的主机。为了避免 IllegalAddress 错误,从站都配置为在这些特定寄存器中具有值。物理连接是一个 USB 到 RS485 转换器,RPI 配备了一个 HAT 处理 RS485 输入/输出。所以它实际上是一个 ModBus RTU 通信。当请求进来时,slave 循环并发送一个应答。
EDIT2:所以我进一步调查并发现了一些有趣的东西。我收到了一个错误(这次是在主机上),从机显然发送了错误的校验和......在查看它时,我发现 modbus_tk 生成的校验和很好,但主机收到的答案不一样。看起来有些字节在路上发生了变化,这很奇怪。那是从哪里来的?硬件问题?仅在轮询多个寄存器时才会出现此错误(一次超过 2 个)。如果要求的寄存器数量为 1 或 2,则所有其他请求都可以。
python-3.x - modbus-tk 得到 Modbus 错误:异常代码 = 2
我正在使用 modbus-tk 为 unittest 模拟 modbus 设备。
我添加了 2 个块数据。
但是当我使用 modbus-tk 读取多寄存器时。
引发异常。
Modbus Error: Exception code = 2
同时,我仍然可以使用这个在真实的 Modbus 设备中读取多个数据
数据看起来像块数据,我之前展示过
我正在使用 python 3.7.3 64 位