问题标签 [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.

0 投票
1 回答
541 浏览

python - PLC modbus [WinError 10054]:现有连接被远程主机强行关闭

我之前尝试过相同的代码,运行完美。后来我使用“LOGO!Soft Comfort 8.2”对我的“Siemens LOGO 12/24 rce”进行了编程,即便如此,它也能完美运行。

但是当我使用 Python 重新编程时,它显示: 发生异常:ConnectionResetError [WinError 10054] 现有连接被远程主机强行关闭

代码:

错误:

请帮助解决此问题....在此先感谢

0 投票
1 回答
394 浏览

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

0 投票
1 回答
1416 浏览

modbus-tk - 在使用 modbus_tk 库时需要帮助

我正在使用 modbus_tk 库作为 Modbus RTU 从站。我有一个现成的 Modbus RTU 主模拟器,通过 USB 到 485 转换器在另一台 PC 上运行。我在 Master 中看不到我的持有登记册。

我已经验证了串行链路是好的,因为我可以使用串行程序向从机发送字符串。我尝试为 16 位和 32 位整数设置主控,响应始终为 83 04。我尝试使用几个不同的主控,起始地址为 0,这个恰好默认为第一个寄存器 40001。波特率和串行端口设置匹配。

0 投票
0 回答
461 浏览

python - 如何使用 modbus-tk 将数据读入树莓派?

所以我正在做一个项目,我希望我的 Raspberry Pi 4 通过 Modbus 进行通信。我已经购买了一个屏蔽来启用来自 Pi 的 RS485 通信,并且我一直在修改演示代码 (软件/测试代码/MODBUS/rtumaster.py)并且一直在我的计算机上使用从属模拟器进行测试。

我伸出手是因为我一直在尝试从我的奴隶读取数据。该命令似乎可以通过(或者从属模拟器不抱怨也许更好说),但我不知道如何将数据输入我的程序。我一直在尝试这样的事情:

然后尝试打印该值进行检查,但它只返回“无”而不是我的值。任何帮助表示赞赏。

当前代码:

0 投票
0 回答
378 浏览

python - 如何读取对 Modbus 读取请求的响应?

对于使用 Raspberry Pi 4 的项目,使用特殊屏蔽作为 Modbus 主设备,我已成功写入寄存器,但我无法从寄存器读取。我正在使用 Simply Modbus Slave 程序进行测试,可以看到请求似乎顺利完成,但我无法在我的 Raspberry Pi 上打印任何数据。

目前我怀疑我从 modbus-tk (cst.READ_INPUT_REGISTERS)使用的命令发送了读取输入寄存器命令,但实际上并没有收到响应。

因此,我正在寻求帮助来捕获这些值,或者保存从从站接收到的所有内容并在这些数据中查找值。

此外,打印发送和接收的所有内容可能会很好,这样我就可以看到通信中发生了什么。

这是我正在使用的当前代码:

我的代码是在这里 (Software/Test Codes/MODBUS)找到的我的 shield 的演示代码 (rtumaster.py) 的编辑版本。

先感谢您

0 投票
1 回答
1098 浏览

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

你认为我做错了什么?我是这个图书馆的新手。


我读过的

设备规格

  • 设备: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**

更新了问题,因为在更正确的库使用后我得到了一个不同的错误。

0 投票
4 回答
3758 浏览

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。

0 投票
1 回答
240 浏览

python - 支持扩展地址间距的 Python modbus 库?

我有一个 Modbus RTU 设备,它的信息存储在非标准数据地址中。

例如,它将读取值(32 位 IEEE-754 浮点数,转换器链接)存储在寄存器号 1003 - 1004 中。

认为这意味着我不能再使用标准的 Python + Modbus RTU 库,比如modbus-tkpymodbus.

在这种情况下可以做些什么?


设备规格

  • 设备:E+E Elektronik 的 CO2 传感器,EE872系列
  • 用户手册(第 5.2 节包含 Modbus RTU 信息)
  • 使用 Python 3.6 将设备插入 Windows 10 机器
0 投票
2 回答
283 浏览

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,则所有其他请求都可以。

0 投票
1 回答
285 浏览

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 位