news 2026/4/18 2:01:26

基于网络的Modbus TCP通讯控制实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于网络的Modbus TCP通讯控制实践

基于网络的Modbus TCP通讯控制,通过网线连接以太网,本电路板可以控制四路继电器,一路温度,一路湿度,一路烟雾浓度,温湿度测量基于sht30。 通过Modbus TCP上传的上位机或手机app。

最近折腾了一个基于网络的Modbus TCP通讯控制项目,感觉还挺有意思,和大家分享分享。

咱们的电路板主要厉害在啥地方呢?它通过网线连接以太网,就能实现各种控制和数据采集。具体来说,可以控制四路继电器,还能测量一路温度、一路湿度以及一路烟雾浓度,其中温湿度测量是基于sht30传感器。最后这些数据还能通过Modbus TCP上传到上位机或者手机app,方便远程监控和操作。

Modbus TCP通讯基础

Modbus TCP是啥呢?简单讲,它是一种应用层协议,跑在TCP/IP之上,专门用来在不同设备间传递信息。就好比不同设备之间的“语言”,大家都按这个规则说话,就能互相听懂。

在代码实现上,咱们以Python为例,要用到pymodbus库。安装很简单,在命令行里敲pip install pymodbus就行。

硬件连接与初始化

先说说硬件部分,sht30传感器得和咱们的主控板连接好,引脚对应接对。比如数据引脚接到主控板的某个GPIO口,时钟引脚也对应接好。

基于网络的Modbus TCP通讯控制,通过网线连接以太网,本电路板可以控制四路继电器,一路温度,一路湿度,一路烟雾浓度,温湿度测量基于sht30。 通过Modbus TCP上传的上位机或手机app。

在代码里初始化sht30传感器,假设用的是树莓派,代码大概这样:

import smbus # I2C address of the SHT30 SHT30_ADDR = 0x44 # Register addresses CMD_MEASURE_HIGHREP = 0x2C06 bus = smbus.SMBus(1) # 使用I2C总线1 def sht30_init(): bus.write_i2c_block_data(SHT30_ADDR, CMD_MEASURE_HIGHREP[0], [CMD_MEASURE_HIGHREP[1]])

这里初始化了I2C总线,设置了SHT30的地址和测量命令。sht30_init函数就是往传感器写测量命令,准备获取数据。

数据采集与继电器控制

采集温湿度数据的代码接着上面来:

def read_sht30(): data = bus.read_i2c_block_data(SHT30_ADDR, 0, 6) temperature = ((((data[0] * 256.0) + data[1]) * 175) / 65535.0) - 45 humidity = ((((data[3] * 256.0) + data[4]) * 100) / 65535.0) return temperature, humidity

这段代码从传感器读回6个字节的数据,然后根据SHT30的数据手册,把原始数据换算成实际的温度和湿度值。

继电器控制就更简单啦,假设继电器连接到树莓派的GPIO17口,控制代码如下:

import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) GPIO.setup(17, GPIO.OUT) def control_relay(state): if state: GPIO.output(17, GPIO.HIGH) else: GPIO.output(17, GPIO.LOW)

这里设置GPIO17为输出模式,control_relay函数根据传入的状态来控制继电器的开和关。

Modbus TCP上传数据

接下来就是重头戏,把采集到的数据通过Modbus TCP上传。

from pymodbus.client.sync import ModbusTcpClient client = ModbusTcpClient('192.168.1.100') # 上位机IP def upload_data(temperature, humidity): if client.connect(): client.write_register(1, int(temperature * 100)) # 把温度数据放大100倍存到寄存器1 client.write_register(2, int(humidity * 100)) # 把湿度数据放大100倍存到寄存器2 client.close()

这里先创建了一个Modbus TCP客户端,连接到指定IP的上位机。upload_data函数把采集到的温湿度数据放大100倍后,写入到Modbus寄存器里,方便上位机读取和处理。

这样一套流程下来,就能实现基于网络的Modbus TCP通讯控制,从硬件的数据采集、设备控制,到数据通过网络上传,整个链路就通啦。无论是通过上位机软件还是手机app,都能方便地监控和控制咱们的设备。希望这篇分享对大家在类似项目上能有点帮助!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 3:01:19

Winform UI界面开发:多文档选项卡关闭与丰富提示框实现

winform ui界面 c#界面 支持多文档选项卡关闭,4种类型提示框(提示,询问,警告,错误)源代码在Winform开发中,打造一个用户体验良好的UI界面是至关重要的。今天咱们就来聊聊如何实现支持多文档选…

作者头像 李华
网站建设 2026/4/17 22:30:48

HTML教学系统设计4:打造三角色协作的自主学习系统,小白也能上手

本文介绍了HTML教学系统中学生自主学习场景的设计,提出老师、学生和AI三角色协作理念:老师作为学习路径设计师,学生作为节奏掌控者,AI作为学习伙伴。文章详细说明了如何提炼本质问题、拆分学习任务、设计AI协作提示和"费曼讲…

作者头像 李华
网站建设 2026/4/16 19:47:51

世界棋局:国家、巨头与文明的AI竞赛以及星链的最新发展

第三章:终极棋局:国家、巨头与文明的AI竞赛“当算力成为新军备,数据成为新疆域,星球级的智慧博弈已悄然布子。”在前两章,我们剖析了AI作为新物种的觉醒与其产业狩猎的逻辑。现在,让我们将视野拉升到星球尺…

作者头像 李华
网站建设 2026/4/15 23:31:19

灵遁者诗歌:演员之镜 · 真实的演技

33. 【外卖员之镜 算法的脚注】他的运动轨迹,是城市血管里一颗被算法驱动的红细胞。准时率是他的血氧饱和度。在每一个红绿灯的间隙,他抬头望了一眼高楼里格子状的灯光。那其中一扇窗,是他今天送过的晚餐,也是他永远无法抵达的“…

作者头像 李华
网站建设 2026/4/12 22:45:17

吐血推荐MBA必备AI论文平台TOP9

吐血推荐MBA必备AI论文平台TOP9 2026年MBA必备AI论文平台测评:功能与效率的双重考量 在当前学术研究日益依赖AI工具的时代,MBA学员在撰写论文过程中面临着诸多挑战,如文献检索效率低、格式规范不熟悉、内容改写耗时等。为了帮助用户更高效地完…

作者头像 李华
网站建设 2026/4/13 23:10:55

力扣14.最长公共前缀-纵向扫描法

📋 题目描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入:strs ["flower","flow","flight"] 输出:"fl"示例…

作者头像 李华