Modbus 错误:[输入/输出] 未收到来自远程设备的响应

2023-12-11

我尝试从 Mac 笔记本电脑连接到 Modbus 设备(MR-SI4)使用串行连接,使用 USB RS485 转换器“安装”到/dev/cu.SLAB_USBtoUART.

这是我的代码:

import logging
logging.basicConfig()
log = logging.getLogger()
log.setLevel(logging.DEBUG)

from pymodbus.constants import Endian
from pymodbus.constants import Defaults
from pymodbus.payload import BinaryPayloadDecoder
from pymodbus.client.sync import ModbusSerialClient as ModbusClient
from pymodbus.transaction import ModbusRtuFramer

# settings for USB-RS485 adapter
SERIAL = '/dev/cu.SLAB_USBtoUART'
BAUD = 19200

# set Modbus defaults

Defaults.UnitId = 1
Defaults.Retries = 5

client = ModbusClient(method='rtu', port=SERIAL, stopbits=1, bytesize=8, timeout=3, baudrate=BAUD, parity='E')

connection = client.connect()
print "Readout started"

#result = client.read_discrete_inputs(0)
#result = client.read_holding_registers(12,19)
result = client.read_input_registers(0,1)
print(result)

控制台中的输出是:

$ sudo python test.py 
Readout started
DEBUG:pymodbus.transaction:Running transaction 1
DEBUG:pymodbus.transaction:send: 0x1 0x4 0x0 0x0 0x0 0x1 0x31 0xca
DEBUG:pymodbus.client.sync:will sleep to wait for 3.5 char
DEBUG:pymodbus.transaction:recv: 
DEBUG:pymodbus.transaction:getting transaction 1
Modbus Error: [Input/Output] No Response received from the remote unit

我希望能得到一些帮助来理解我遇到的错误。我尝试使用以下配置pymodbus并且还具有不同的功能,例如read_discrete_inputs or read_holding_registers。有什么帮助吗?

Thanks


使用 modbus 时,即使您使用的是高级库,手头有官方的库也总是有用的MODBUS 文档。 通过文档,您可以检查帧的每个字节的含义:

0x01 0x04 0x00 0x00 0x00 0x01 0x31 0xCA

第一个字节是设备地址(0x01)

第二个字节是功能码(0x04, Read Input Registers)

第三和第四个字节是起始位置(0x00, 0x00)

第五和第六字节是输出的数量(0x00, 0x01)

最后2个字节是CRC控制(0x31, 0xCA)

这意味着您正在要求一个(0x00, 0x01)来自输入寄存器的寄存器(0x04)从内存中的第一个位置开始(0x00, 0x00)来自地址为 1 的设备(0x01).

帧本身是正确的,如果设备软件/固件遵循 modbus 标准,您应该有一个答案:您要求的寄存器或错误帧(0x01, 0x80, crc, crc).

也就是说,我们可以检查您没有从设备收到答复的原因。为此,如果您不确定您的代码/您所询问的内容/您的设备的行为方式,您可以使用外部工具来比较结果。我建议你像这样码头灯,这可以帮助您设置连接并发送/接收 modbus 帧。

我首先要检查的是连接参数:

client = ModbusClient(method='rtu', port=SERIAL, stopbits=1, bytesize=8, timeout=3, baudrate=BAUD, parity='E')

方法是正确的,因为这是您要求的协议。

端口正确,否则返回系统错误。

超时是引发错误的原因:在给定时间内没有收到响应。无论如何,问题可能不在这里,因为您设置了很高的超时值。

停止位不应干扰帧接收。

问题可能出在波特率和奇偶校验上:此处的错误可能会导致您的代码引发错误。

如果您不知道波特率和/或奇偶校验的正确值,您可以尝试使用最常见的波特率和奇偶校验值:'N', 'E', 'O', 'M', 'S'(分别代表:无、偶数、奇数、标记、空格。默认为无)。

如果我必须打赌,我会首先将 Even parity 替换为 None (parity = 'N').

如果问题仍然存在,请输入设备地址(0x01)可能是错误的。地址可以表示从 0 (0x00) 至 255 (0xFF).

根据协议标准,即使起始地址(0x00, 0x00),输出数量(0x00, 0x01)或CRC(0x31, 0xCA)是错误的,设备应该做出一些响应,但情况并不总是这样:如果您认为自己处于这种情况,请研究设备的特定文档。

最后一种可能性是使用低级库,例如PySerial,然后您定义自己的协议。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Modbus 错误:[输入/输出] 未收到来自远程设备的响应 的相关文章

  • AttributeError:'function'对象在pandas中没有属性'bar'

    我有一个 pandas 数据框 它是 pandas 数据框类型 如下所示 type df Out 176 pandas core frame DataFrame 但是 当我尝试在此数据框上使用任何绘图函数 如条形图 时 会出现如下错误 df
  • 为什么 pandas 在简单的数学运算上比 numpy 更快?

    最近 我观察到 pandas 的乘法速度更快 我在下面的例子中向您展示了这一点 如此简单的操作怎么可能做到这一点 这怎么可能呢 pandas 数据帧中的底层数据容器是 numpy 数组 测量 我使用形状为 10k 10k 的数组 数据框 i
  • 如何在 QTableView 标题中单击鼠标右键单击上下文菜单?

    下面的示例代码 很大程度上受到here http www saltycrane com blog 2007 12 pyqt 43 qtableview qabstracttablemodel 有一个右键单击上下文菜单 当用户单击表中的单元格
  • 区分大小写的实体识别

    我的关键字全部以小写形式存储 例如 折扣耐克鞋 我正在尝试对其执行实体提取 我遇到的问题是 spaCy 在 NER 方面似乎区分大小写 请注意 我不认为这是 spaCy 特有的 当我跑步时 doc nlp u i love nike sho
  • 如何检索分配给 Django 中的组的所有权限

    我正在执行一项任务来检索分配给 Django 中的组的一组权限 我可以使用以下代码获取创建的组 但无法使用它来获取分配给它们的权限 from django contrib auth models import Group Permissio
  • sy.sympify(str(表达式)) 不等于表达式

    据我了解 str将 SymPy 表达式转换为字符串并sympify将字符串转换为 SymPy 表达式 因此 我希望以下内容成立 对于合理的表达 gt gt gt sy sympify str expr expr True 我尝试过这个 确实
  • 在 PhotoImage 下调整图像大小

    我需要调整图像大小 但我想避免使用 PIL 因为我无法使其在 OS X 下工作 不要问我为什么 无论如何 因为我对 gif pgm ppm 感到满意 所以 PhotoImage 类对我来说没问题 photoImg PhotoImage fi
  • 如何将脚本作为 pytest 测试运行

    假设我有一个用简单脚本表示的测试assert 陈述 请参阅背景了解原因 例如 import foo assert foo 3 4 我如何以一种好的方式将该脚本包含在我的 pytest 测试套件中 我尝试了两种有效但不太好的方法 一种方法是将
  • 当我从本地计算机更改为虚拟主机时,从 python 脚本调用 pdftotext 不起作用

    我编写了一个小的 python 脚本来解析 提取 PDF 中的信息 我在本地机器上测试了它 我有 python 2 6 2 和 pdftotext 版本 0 12 4 我正在尝试在我的虚拟主机服务器 dreamhost 上运行它 它有 py
  • 将多索引转换为行式多维 NumPy 数组。

    假设我有一个类似于以下示例的 MultiIndex DataFrame多索引文档 http pandas pydata org pandas docs stable advanced html gt gt gt df 0 1 2 3 fir
  • Python sys.modules 包含尚未导入的模块

    我试图了解加载的模块与导入的模块之间的区别 如果有的话 我正在使用 Python 2 7 3 并且只是从命令行运行 Python 如果我执行 import sys sys modules 我得到一个列表 其中包括os 例如 文档说sys m
  • Pandas如何按时间段过滤DataFrame

    我有一个包含下表的文件 Name AvailableDate totalRemaining 0 X3321 2018 03 14 13 00 00 200 1 X3321 2018 03 14 14 00 00 200 2 X3321 20
  • Django Web 应用程序中的 SMTP 问题

    我被要求向使用 Django Python 框架实现的现有程序添加一个功能 此功能将允许用户单击一个按钮 该按钮将显示一个小对话框 表单以输入值 我确实编写了一些代码 显示电子邮件已发送的消息 但实际上 它没有发送 My code from
  • Django 1.7 应用程序配置导入错误:没有名为 appname.apps 的模块

    我正在尝试按照以下文档为我的一个名为 文章 的 Django 应用程序设置自定义应用程序配置https docs djangoproject com en dev ref applications https docs djangoproj
  • Python:“直接”调用方法是否实例化对象?

    我是 Python 新手 在对我的对象进行单元测试时 我注意到一些 奇怪 的东西 class Ape object def init self print ooook def say self s print s def main Ape
  • 导入目录下的所有模块

    有没有办法导入当前目录中的所有模块 并返回它们的列表 例如 对于包含以下内容的目录 mod py mod2 py mod3 py 它会给你
  • 更新 matplotlib 中颜色条的范围

    我想更新一个contourf在函数内绘制 效果很好 然而 数据的范围发生了变化 因此我还必须更新颜色条 这就是我未能做到的地方 请参阅以下最小工作示例 import matplotlib pyplot as plt import numpy
  • 如何在 Python 中跟踪日志文件?

    我想在 Python 中提供 tail F 或类似内容的输出 而无需阻塞或锁定 我找到了一些非常旧的代码来做到这一点here http code activestate com recipes 436477 filetailpy 但我认为现
  • 无法将matplotlib安装到pycharm

    我最近开始使用Python速成课程学习Python编程 我陷入困境 因为我无法让 matplotlib 在 pycharm 中工作 我已经安装了pip 我已经通过命令提示符使用 pip 安装了 matplotlib 现在 当我打开 pych
  • 在 python 中使用高精度时间戳

    嘿 我正在使用 python 处理日期时间 我想知道解析这个时间戳的最佳方法是什么 时间戳是ISO标准 这里是一个例子 2010 06 19T08 17 14 078685237Z 现在到目前为止我已经使用过 time datetime d

随机推荐

  • 从 floatbuffer 转换为 byte[]

    我正在尝试找到一种在java中使用jack audio的方法 我已经成功创建基于 jnajack 的包装器 以将音频从 jacks 的端口获取到 java 应用程序 原始 jnajack 不适用于 jack 1 9 8 但我找不到操作数据的
  • IE10 中等高列内的元素内容不是 100%

    对于我正在开发的应用程序 我需要等高的列 我选择使用 CSS 将我的列项目设置为表格的样式 这样每根柱子的高度确实是柱子高度中最大的 请参阅此处的示例 http jsfiddle net roelvd GXe9m 现在每个浏览器中每列的高度
  • 浮点处理器非确定性?

    在不涉及不必要的细节的情况下 基于相同的输入 浮点数 x86 64 上的运算是否有可能返回其结果的微小变化 哪怕有一点点不同 我正在模拟一个基本混沌的系统 我希望数据的微小变化会产生明显的影响 然而我预计 使用相同的数据 程序的行为将被修复
  • 在Python子进程中,使用Popen()和check_output()有什么区别?

    以shell命令 cat file txt 为例 使用 Popen 可以运行 import subprocess task subprocess Popen cat file txt shell True stdout subprocess
  • 访问闭包捕获的变量

    我想知道是否有任何方法可以从函数外部访问函数中闭包捕获的变量 例如如果我有 A function b var c function some code using b foo function do things with c 有什么办法可
  • 如何在函数出口上运行清理代码?

    C 类提供 RAII 习惯用法 因此你不必关心异常 void function The memory will be freed automatically on function exit std vector
  • 如何在 iOS 7 中向全屏 VC 添加自定义导航栏并使其与状态栏相匹配?

    在我正在开发的应用程序 Xcode 5 gt iOS 7 自动布局 中 我推送了一个模式视图控制器 我希望模态视图控制器有一个导航栏 所以我添加了一个 并添加了一个约束 将其顶部与顶部布局指南对齐 因此它放置在状态栏的正下方 我使用自己的导
  • 读取共享库中的文件 Xamarin C#

    我在共享库中保存了一些 json 文件 我已经成功地通过代码在 iOS 中很好地阅读了 string fileName Files file name json var path Path Combine NSBundle MainBund
  • Firebase RecaptchaVerifier.clear() 无效

    我有一个 React Web 应用程序 我想在其中实现电话身份验证 我已经根据文档和示例初始化了 recaptchaVerifier 但是 如果我想再次提交表单 比如因为错误 我收到错误 Error reCAPTCHA has alread
  • Angular2 组件在循环中渲染 2 个 tr 元素

    我需要编写一个具有如下模板的组件 tr tr tr tr 这必须与 ngFor 一起使用来创建表 组件的选择器是spot row 该组件有一个名为的输入变量spot 所需的输出必须如下所示 table tbody tr tr tr tr t
  • sql 只获取表中的第一个记录行,我想要所有

    有人已经帮助我解决了这个查询 但我进行了调整 但遇到了问题 SELECT AVG tyd price AS avg price COUNT tyd id product AS cnt tyd id marchand tyd id produ
  • 以编程方式捕获 HOME 意图

    我需要我的活动来处理 HOME 按钮的按下 以编程方式接收器 但事件未触发 我可以 但是 如果我成功注册并捕获此意图过滤器 在manifest xml 活动部分中声明它 这是代码 接收器不工作 BroadcastReceiver br br
  • 控制器未过滤 DotNetNuke 模块中 Breeze 查询中的数据

    我试图将基本的 Breeze 示例包含在 DotNetNuke 模块中 它在独立的 WebAPI 项目中工作正常 为了简化操作 我删除了客户端 仅引用我在 Chrome 浏览器中进行的 URL JSON 调用 我可以看到我的元数据和完整的项
  • 如何在数码显微照片脚本中使用单个对话框打开多个图像?

    我正在用 DigialMicrograph 脚本编写 我想要一个脚本在一个对话框中打开多个图像 即一个多选图像对话框 类似于您进入任何 Windows 打开对话框 选择多个图像并按 确定 我认为这是可能的 但我还没有找到办法 我想在我的脚本
  • 获取 NoSuchFieldError 实例 org/apache/http/message/BasicHeaderValueParser

    我正在开发 Android 上的应用程序 我正在使用httpcore 4 3 3 当我尝试使用时我得到这个ContentType parse string java lang NoSuchFieldError No static field
  • 所有的无限循环都是不好的吗?

    出于好奇 有all无限循环不好 如果运行无限循环会产生哪些不良影响和后果 另外 如果它们并不全是坏事 您能否举一些例子 说明它们何时能发挥有意义的作用 他们需要有什么东西来关闭实例吗 例如 我们总是在 Java 中使用 StreamRead
  • 有没有办法从 MassTransit 获取原始消息?

    我有一个具有通用参数的消费者IEvent 该类型是所有消息的基接口 以及子接口IEvent还有一些其他属性 我希望能够访问具有嵌套类型的所有属性的原始消息 而不仅仅是IEvent范围 这些属性可以通过 RMQ 管理仪表板查看 我认为应该有一
  • Powershell Invoke-Webrequest 在没有表单的情况下进行页面登录

    I saw 这个帖子没有解决方案 但我的问题是类似的 我正在尝试在我自己的登录页面上自动查找我正在使用的服务的一些信息 当我运行以下命令时 它没有给我任何信息 Forms Webpage Invoke WebRequest Uri http
  • Python pandas:读取带有多个表重复前导码的csv

    有没有一种Python式的方法来找出CSV文件中的哪些行包含标题和值以及哪些行包含垃圾 然后将标题 值行放入数据框中 我对 python 比较陌生 一直使用它来读取从科学仪器的数据日志导出的多个 CSV 到目前为止 在处理其他任务的 CSV
  • Modbus 错误:[输入/输出] 未收到来自远程设备的响应

    我尝试从 Mac 笔记本电脑连接到 Modbus 设备 MR SI4 使用串行连接 使用 USB RS485 转换器 安装 到 dev cu SLAB USBtoUART 这是我的代码 import logging logging basi