在Linux下的python中设置RS485设备地址

问题描述 投票:1回答:3

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

据我所知,只要设置了地址,就可以在一条RS485线上连接多个设备。这是问题所在:我看不到在哪里设置此地址。它是否包含在每个发送的“框架”中?是否已将其设置在USB <> RS485适配器的驱动程序中?是否在适配器中进行了硬编码?

提前谢谢您,

Michał

python serial-port pyserial plc rs485
3个回答
1
投票

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

如果连接第二个主设备,则您正在网络上创建冲突,RS-485无法管理这些冲突。

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

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


0
投票

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

RS-485 - Wikipedia

RS-485仅指定发生器和接收器的电气特性:物理层。它没有指定或推荐任何通信协议;其他标准定义了通过RS-485链路进行通信的协议。标准参考的前言是《电信系统公告TSB-89》,其中包含应用指南,包括数据信令速率与电缆长度,短截线长度和配置的关系。

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

Modbus是最初由Modicon(现为Schneider Electric)在1979年发布的一种数据通信协议,用于其可编程逻辑控制器(PLC)。 Modbus已成为事实上的标准通信协议,并且现在已成为连接工业电子设备的常用方法。 Modbus在工业环境中很流行,因为它是公开发布且免版​​税的。

还有一些python软件包。minimalmodbus 1.0.2pymodbus 2.3.0

如何根据所采用的包装的规格设置设备地址。


另外:

顺便说一句,如果您将制造商的专有协议用于PLC设备,则很可能会将这种多分支用于该设备和协议。似乎第一种方法是与制造商的支持部门联系。

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

HMI_SupportPLC_SupportHMI_ProductsPLC_Products


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.