首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >python通信MODBUS TCP/IP raspberry pi和HMI - write value

python通信MODBUS TCP/IP raspberry pi和HMI - write value
EN

Stack Overflow用户
提问于 2018-08-18 23:37:03
回答 1查看 14.2K关注 0票数 2

我是一名法国学生,我需要你在我的程序中使用Python。

我在Python中的rapsberry中有一个程序,它从温度和湿度传感器获取数据。

我需要通过MODBUS TCP/IP协议将这些值传递给人机接口主管,以便在我的HMI中显示这些值并制作一些图形

代码语言:javascript
复制
The IP adress of the raspberry : 172.16.0.2
The IP adress of the HMI : 172.16.0.10

我想我需要使用像pyModbusTCP这样的包或者类似的东西,但是我不知道如何使用它。

您能帮助我理解如何在我的Rpi和我的人机界面之间进行通信吗?例如,我如何在地址索引1处写入整数值100

感谢大家!

安托万

EN

回答 1

Stack Overflow用户

发布于 2018-08-19 01:10:43

MODBUS是一个单主协议,这意味着只能有一个主协议,其余的连接设备都是从协议( http://www.ni.com/white-paper/52134/en/,类似于USB协议,在这里称为主机和设备)。此外,在MODBUS协议中,从站从不启动通信,从站只对请求作出应答。因此,运行HMI的机器必须是MODBUS master /client (这种命名约定有点无意义)。

要快速了解总体概述,请阅读此和http://www.simplymodbus.ca/TCP.htm

人机界面机器上的pymodbus客户端/主机

通过此主/客户端,您可以使用以下代码向RPi ( MODBUS从机/服务器)及其传感器发送请求(如果其中一个传感器将其数据存储在寄存器中,该寄存器由在RPi上运行的pymodbus服务器以coil 1形式提供给总线,请参见下文)。这只是一个例子,MODBUS中还有其他数据块,即线圈、离散输入、输入寄存器、保持寄存器,您使用哪一个取决于您在RPi上配置MODBUS服务器的方式,通常离散输入和输入寄存器很少使用:

代码语言:javascript
复制
client = ModbusTcpClient('172.16.0.2')
client.write_coil(1, True)
result = client.read_coils(1,1)
print(result.bits[0])
client.close()

https://github.com/riptideio/pymodbus

Rpi上的pymodbus服务器/从机

为此,RPi必须运行软件( pymodbus服务器),使其成为MODBUS从站/服务器,传感器必须将它们的值写入特定的内存位置,这些位置以线圈/寄存器的形式呈现给MODBUS。如何做到这一点是在https://www.youtube.com/watch?v=p3Dgd0PDjnUhttps://jacekhryniewicz.wixsite.com/website/raspberry-pi-with-modbus-tcp (有点过时)

In 是一个必须在RPi上运行的MODBUS服务器的工作示例(请阅读注释,特别是# initialize your data store后面的几行)

线圈一词起源于MODBUS协议,该协议是在自动化技术中使用带线圈的机电继电器时开发的

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51910169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档