news 2026/7/7 10:15:19

基于网络的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/7/2 4:37:16

Kiro教程(二)| Kiro 核心功能完全指南

Kiro教程(二)| Kiro 核心功能完全指南Kiro 核心功能完全指南1. 开发模式选择2. Vibe 模式深度解析2.1 核心概念2.2 提示词技巧2.3 多轮对话3. Spec 模式深度解析3.1 核心概念3.2 三阶段流程3.3 需求文档(requirements.md)3.4 设计…

作者头像 李华
网站建设 2026/7/1 8:25:51

Vibe Coding在QT桌面开发中的可行性分析

资深QT开发者拉斐尔在一个小型桌面应用项目中尝试了Vibe Coding,两周内完成了原本需要两个月的开发工作,但后续维护阶段发现,修复AI生成的代码漏洞所花费的时间,几乎与重写整个项目相当。“看起来很简单,但实则在应用部…

作者头像 李华
网站建设 2026/7/1 1:09:50

计算机毕业设计springboot基于Java的房屋租赁系统的设计与实现 基于SpringBoot与Java的在线租房管理平台的设计与实现 JavaWeb架构下智慧住房租赁服务系统研发

计算机毕业设计springboot基于Java的房屋租赁系统的设计与实现a1b8r553 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。城市化把“找房”变成一场信息拉锯战:传单、中…

作者头像 李华
网站建设 2026/7/1 8:24:34

【YOLO模型导出格式】大全

一行命令即可完成模型格式转换,了解每种格式的设计逻辑才能在实际部署中做出最佳选择。 YOLO模型在训练完成后,我们通常会将其从PyTorch格式导出为多种不同格式。这些格式不仅代表着不同的文件扩展名,更代表着为不同硬件平台和部署场景量身定做的优化策略。 从旨在最大化C…

作者头像 李华
网站建设 2026/7/2 10:20:28

关于严格维护2025博客之星年度评选活动公平性、打击刷票行为的公告

致所有参与2025博客之星活动的用户: 近期,我们荣幸地看到广大用户积极参与2025年度博客之星评选活动,我们的投票环节正在火热进行中,公平、公正、公开是CSDN一贯秉持并珍视的活动原则,是所有创作者心血与才华得以被平…

作者头像 李华