我正在尝试编写modbus slave并遇到一个问题:我正确接收来自master的请求,但是当我尝试响应时,看起来有些东西被错误地发送到serialport,因为当我插入RS485嗅探器时 - 我看到了req和res(在HEX中)。
硬件:Mac(我写的奴隶) - USBtoRS485 - ICPCON tGW-715(TCPtoRTU网关) - Win PC(软件主机)
当我尝试这个变种时:Win PC(软件从属) - USBtoRS485 - ICPCON tGW-715(TCPtoRTU网关) - Win PC(软件主机)一切正常。
Libs:libmodbus,h5.modbus(node.js)。无所谓 - 正确的请求,但没有回应。
目标PC(用于奴隶)将在Linux上,因此Mac几乎比Win更接近。
我已经不知道要检查什么以及如何使其工作。什么可能是错的?
答案 0 :(得分:0)
Win PC版本正在运行,硬件应该没问题。如果没有更多细节,我会建议另一种方法,如果你的最终目标是在Linux中使用该系统:在Windows上使用虚拟机,使用Linux客户机。 我使用ICP DAS技术支持,并将VirtualBox与tM-7561和I-7561 USBtoRS485转换器一起使用,包括Linux和Windows主机。
我没有Mac上的经验,但另一个选择是尝试不是你编写的Modbus Slave,例如pyModSlave并查看它是否在Mac上正常工作,它还会显示发送/接收的数据包。
如果pyModSlave在Mac上正常工作,也许可以尝试与您的奴隶一起使用软件串口嗅探器。在Windows上我使用HHD软件中的一个,它有串口,USB和TCP / IP嗅探器。在Mac / Linux上,您应该能够使用Wireshark来嗅探USB通信,但我还没有亲自完成这项工作。
您可以使用零调制解调器仿真器代替嗅探器,以便从(虚拟)串行端口发送的内容将在Mac上的另一个(虚拟)串行端口上接收,以便您可以检查数据发送/接收。在Windows上我使用com0com,对于Linux,我还没有使用tty0tty。不确定Mac上有什么可用。或者只使用2个USBtoRS485与D +和D-互连,在一个端口上你的从机,在另一个端口上像qModMaster那样显示数据包。