linux下python中RS485设备地址的设置

2024-09-30 14:22:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图连接到通过RS485(HMI+PLC,通信协议为Fatek自己的协议)进行通信的现有设备网络。我没有问题直接连接到PLC(我可以读取和写入寄存器),但我必须离开HMI<&燃气轮机;PLC连接。当直接连接到HMI和PLC之间的线路时(通过FTDI USB<;>;RS485适配器),我无法从PLC读取或写入寄存器(我没有收到正确的响应)

从我收集的信息来看,只要设置了地址,就可以在一条RS485线上连接多个设备。问题是:我看不出在哪里设置这个地址。它是否包含在发送的每个“帧”中?它是否设置在USB驱动程序的某个位置<&燃气轮机;RS485适配器?适配器中是否有硬编码

提前谢谢大家,

米查


Tags: ltgt网络协议地址适配器寄存器线路
3条回答

通常,在串行通信中,无论是1:1还是1:N,只能有一个主设备(在您的情况下,HMI是主设备)和一个或多个从设备响应来自主设备的请求,并且主设备必须在提交新请求之前始终等待收到响应

如果连接第二台主机,则会在网络上产生冲突,RS-485无法管理这些冲突

串行网络上只能存在一个主机

如果您想克服这些限制,可以考虑用以太网和TCP/IP替换该网络

正如下面的维基百科文章所述,RS485是一种没有默认软件或协议的电气规范。
处理设备地址的机制必须由您自己创建,或者通过选择具有此功能的协议并应用它来创建

RS-485 - Wikipedia

RS-485 only specifies electrical characteristics of the generator and the receiver: the physical layer. It does not specify or recommend any communications protocol; Other standards define the protocols for communication over an RS-485 link. The foreword to the standard references The Telecommunications Systems Bulletin TSB-89 which contains application guidelines, including data signaling rate vs. cable length, stub length, and configurations.

例如,Modbus不是经常使用吗?
Modbus -Wikipedia

Modbus is a data communications protocol originally published by Modicon (now Schneider Electric) in 1979 for use with its programmable logic controllers (PLCs). Modbus has become a de facto standard communication protocol and is now a commonly available means of connecting industrial electronic devices. Modbus is popular in industrial environments because it is openly published and royalty-free.

还有一些python包。
minimalmodbus 1.0.2
pymodbus 2.3.0

如何设置设备地址将需要根据要采用的软件包的规格进行


此外:

顺便说一句,如果您正在为PLC设备使用制造商的专有协议,那么您很可能会为该设备和协议使用这种多点连接。 第一种方法似乎是联系制造商的支持部门

或者,即使此站点是制造商支持位置,您也需要添加信息,例如您尝试连接的设备以及配置

HMI_Support&PLC_Support
HMI_Products&PLC_Products

看起来您的系统正在使用“Fatek通信协议”,该协议记录在FB用户手册的附录1中。(Download here

该协议看起来像许多工业PLC控制器的典型协议。但是,由于消息类型的数量,它有点复杂。不用深入研究,几天内实现逻辑似乎是可行的。或者某个地方可能有一个开源实现(尽管我没有搜索)

相关问题 更多 >