我试图连接到通过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 - Wikipedia
例如,Modbus不是经常使用吗?
Modbus -Wikipedia
还有一些python包。
minimalmodbus 1.0.2
pymodbus 2.3.0
如何设置设备地址将需要根据要采用的软件包的规格进行
此外:
顺便说一句,如果您正在为PLC设备使用制造商的专有协议,那么您很可能会为该设备和协议使用这种多点连接。 第一种方法似乎是联系制造商的支持部门
或者,即使此站点是制造商支持位置,您也需要添加信息,例如您尝试连接的设备以及配置
HMI_Support&PLC_Support
HMI_Products&PLC_Products
看起来您的系统正在使用“Fatek通信协议”,该协议记录在FB用户手册的附录1中。(Download here)
该协议看起来像许多工业PLC控制器的典型协议。但是,由于消息类型的数量,它有点复杂。不用深入研究,几天内实现逻辑似乎是可行的。或者某个地方可能有一个开源实现(尽管我没有搜索)
相关问题 更多 >
编程相关推荐