我正在尝试连接到通过RS485(HMI + PLC,通信协议是Fatek自己的协议(通信的现有设备网络。我直接连接到PLC没有问题(我可以读写寄存器(,但我必须离开HMI<>PLC连接。当直接连接到HMI和PLC之间的线路时(通过FTDI USB<>RS485适配器(,我无法从PLC读取或写入寄存器(我没有收到正确的响应(。
据我所知,只要设置了地址,就可以在一条RS485线路上连接多个设备。问题是:我看不到在哪里设置此地址。它是否包含在发送的每个"帧"中?它是否设置在 USB<>RS485 适配器的驱动程序中的某个位置?它是在适配器中硬编码的吗?
提前谢谢你,
米哈乌
通常在串行通信中,无论是 1:1 还是 1:N,只能有一个主站(在您的情况下,HMI 是主站(和一个或多个从站响应来自主站的请求,并且主站必须始终等待收到响应才能提交新请求。
如果连接第二个主站,则会在网络上创建冲突,RS-485无法管理这些冲突。
串行网络上只能存在一个主设备。
如果你想克服这些限制,考虑用以太网和TCP/IP替换该网络
。正如下面的维基百科文章,RS485 是一种没有默认软件或协议的电气规范。
处理设备地址的机制必须由您自己创建,或者通过选择具有此类功能的协议并应用它来创建。
RS-485 - 维基百科
RS-485仅指定发电机和接收器的电气特性:物理层。它不指定或推荐任何通信协议;其他标准定义了通过RS-485链路进行通信的协议。该标准的前言参考了电信系统公告TSB-89,其中包含应用指南,包括数据信令速率与电缆长度,短截线长度和配置的关系。
例如,Modbus不经常使用吗?
Modbus -维基百科
Modbus是一种数据通信协议,最初由Modicon(现为施耐德电气(于1979年发布,用于其可编程逻辑控制器(PLC(。Modbus已成为事实上的标准通信协议,现在是连接工业电子设备的常用方法。Modbus 在工业环境中很受欢迎,因为它是公开发布且免版税的。
还有一些python包。
最小模数 1.0.2
PYMODBUS 2.3.0
如何设置设备地址将需要根据要采用的封装的规格来完成。
另外:
顺便说一下,如果您将制造商的专有协议用于PLC设备,则很可能会为该设备和协议使用这种多点。 似乎第一种方法是联系制造商的支持台。
或者,即使此站点是制造商支持位置,您也需要添加信息,例如您尝试连接的设备以及配置。
HMI_Support & PLC_Support
HMI_Products & PLC_Products
看起来您的系统正在使用FB用户手册附录1中记录的"Fatek通信协议"。 (在此下载(
该协议看起来像工业PLC控制器中典型的许多此类协议。 但是,消息类型的数量有点复杂。 不用太深入地研究,在几天内实现逻辑似乎是可行的。 或者可能在某处有一个开源实现(尽管我没有搜索(。