我是法国学生,我的程序需要你的Python帮助。
我用Python编写了一个rapsberry程序,从温度和湿度传感器获取数据。
我需要通过MODBUS TCP/IP协议将这些值传送给人机界面管理器,以便在我的人机界面上显示和绘制这些值的一些图形
The IP adress of the raspberry : 172.16.0.2
The IP adress of the HMI : 172.16.0.10
我想我需要使用像pyModbusTCP
这样的包或类似的东西,但我不知道如何使用它。
你能帮助我理解我如何在我的Rpi和我的HMI之间进行通信,例如我如何在地址索引1
处写入整数值100
?
谢谢大家!
安托万
MODBUS是一个单主机协议,意味着只能有一个主机,其余连接的设备是从机(http://www.ni.com/white-paper/52134/en/,类似于USB协议,称为主机和设备那里)。此外,在MODBUS协议中,从机从不启动通信,从机只响应请求。因此,运行HMI的机器必须是MODBUS主/客户端(这个命名约定有点不明智)
有关快速的一般概述,请阅读此https://www.reddit.com/r/PLC/comments/7bqppu/using_raspberry_pi_as_modbus_slave_and/和http://www.simplymodbus.ca/TCP.htm
人机界面机器上的pymodbus客户机/主机
从这个主/客户端,您可以使用以下代码向带有传感器的RPi(MODBUS slave/server)发送请求(如果其中一个传感器将其数据存储在RPi上运行的pymodbus服务器以
coil 1
的形式呈现给总线的寄存器中,请参见下文)。这只是一个例子,在MODBUS中还有其他数据块,即线圈、离散输入、输入寄存器、保持寄存器您使用哪一个取决于您如何在RPi上配置MODBUS服务器,通常很少使用离散输入和输入寄存器:https://github.com/riptideio/pymodbus
Rpi上的pymodbus服务器/从机
要在RPi上运行,必须运行软件(pymodbus服务器),使其成为MODBUS从机/服务器,传感器必须将其值写入特定的存储器位置,这些存储器位置以线圈/寄存器的形式呈现给MODBUS。如何做到这一点是在https://www.youtube.com/watch?v=p3Dgd0PDjnU和https://jacekhryniewicz.wixsite.com/website/raspberry-pi-with-modbus-tcp(有点过时)
Inhttps://github.com/riptideio/pymodbus/blob/master/examples/common/asynchronous_server.py是必须在RPi上运行的MODBUS服务器的工作示例(阅读注释,特别是
# initialize your data store
后面的行)“线圈”一词起源于MODBUS协议,该协议是在自动化技术中使用带线圈的机电继电器时开发的
相关问题 更多 >
编程相关推荐