node.js - Modbus RTU slave RS-485 响应失败

标签 node.js linux modbus rs485

我正在尝试编写 modbus slave 并遇到一个问题:我正确地接收了来自 master 的请求,但是当我尝试响应时,它看起来像是错误地发送到串行端口,因为当我插入 RS485 嗅探器时 - 我明白了req 和 res(十六进制)。

硬件:Mac(我写的slave)-USBtoRS485-ICPCON tGW-715(TCPtoRTU网关)-Win PC(软件主控)

当我尝试这种变体时:Win PC(软件从机)- USBtoRS485 - ICPCON tGW-715(TCPtoRTU 网关)- Win PC(软件主机)一切正常。

库:libmodbus、h5.modbus (node.js)。没关系 - 正确的请求,但没有响应。

目标 PC(从属)将在 Linux 上,因此 Mac 比 Win 更接近。

我已经不知道要检查什么以及如何让它发挥作用。有什么问题吗?

最佳答案

Win PC 变体可以正常工作,硬件应该没问题。没有更多细节,如果您的最终目标是在 Linux 中使用该系统,我会建议另一种方法:在 Windows 上使用带有 Linux 客户机的虚拟机。 我与 ICP DAS 技术支持合作,并使用 VirtualBox 和 tM-7561和 I-7561 USBtoRS485 转换器,适用于 Linux 和 Windows 主机。

我没有使用 Mac 的经验,但另一种选择是尝试使用不是您编写的 Modbus Slave,例如 pyModSlave并查看它是否在您的 Mac 上正常工作,它还会向您显示发送/接收的数据包。

如果 pyModSlave 在 Mac 上正常工作,也许可以在您的从机上尝试一个软件串行嗅探器。在 Windows 上,我使用来自 HHD Software 的软件,它有串口、USB 和 TCP/IP 嗅探器。在 Mac/Linux 上,您应该能够使用 Wireshark 嗅探 USB 通信,但我个人还没有这样做。

也许您可以使用零调制解调器模拟器代替嗅探器,这样您从(虚拟)串行端口发送的内容将在您的 Mac 上的另一个(虚拟)串行端口上接收,以便您可以检查数据发送/接收。在 Windows 上我使用 com0com,对于 Linux 有 tty0tty我还没有用过。不确定 Mac 上有什么可用。或者只使用 2 个 USBtoRS485,D+ 和 D- 相互连接,一个端口是你的从端口,另一个端口是显示数据包的主机,比如 qModMaster。

关于node.js - Modbus RTU slave RS-485 响应失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42718202/

相关文章:

node.js - 如何使用socket.connect()打开多个连接

linux - 内核函数 asm_do_IRQ() 中的 irq 与我在模块中请求的不同

linux - 读取/写入特定内存地址(非常简单的内存测试)-> 段错误

php - CRC-CCITT 到 CRC16 Modbus 实现

java - Java/Android 中的 Modbus TCP

java - 发送 0xFF 并计算带符号字节的 CRC - WriteSingleCoil & ModBUS & Java & Android -

sql - 我如何在 sequelize 中编写这个 Raw Postgres 查询

node.js - nodejs如何将node_modules目录服务到前端进行访问?

node.js - NodeJS 集群将所有请求发送给一个工作人员 (Windows)

linux - osx 的/etc/init.d 等效项?