news 2026/3/25 17:33:32

基于网络的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/3/24 8:10:07

Kiro教程(三)| Kiro 实战与最佳实践

Kiro教程(三)| Kiro 实战与最佳实践 Kiro 实战与最佳实践案例 1:从零开发 Todo 应用(Spec 模式)项目要求Step 1:创建项目并配置 SteeringStep 2:启动 SpecStep 3:审核三阶段文档 案例…

作者头像 李华
网站建设 2026/3/21 23:22:52

SSM231的电子竞技周边商城购物论坛vue

目录SSM231电子竞技周边商城购物论坛Vue摘要开发技术源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!SSM231电子竞技周边商城购物论坛Vue摘要 SSM231电子竞技周边商城购物论坛是一个基于Vue.js的前端项目,结合SSM&#xff0…

作者头像 李华
网站建设 2026/3/25 8:12:54

SSM240的二手手机回收平台

目录SSM240二手手机回收平台摘要开发技术源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!SSM240二手手机回收平台摘要 SSM240二手手机回收平台是一个基于SSM(SpringSpringMVCMyBatis)框架开发的在线交易系统&…

作者头像 李华
网站建设 2026/3/13 22:18:15

SSM246的高校毕业生就业满意度调查

目录SSM246高校毕业生就业满意度调查摘要开发技术源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!SSM246高校毕业生就业满意度调查摘要 本次调查以SSM246为研究框架,聚焦高校毕业生就业满意度,覆盖全国15所高校的…

作者头像 李华
网站建设 2026/3/13 18:12:10

【Yolactedge】Unbuntu22.04运行Yolactedge推理

主要用于自己搭建环境,有不对的地方欢迎讨论。 文章目录前言一、环境构建1.1 CUDA11.8安装1.2 虚拟环境构建1.3 pytorch安装1.4 其它依赖二、评估推理2.1 权重下载文件2.2 推理前言 Yolactedge地址:Yolactedge 采用CUDA11.8torch2.0.1 一、环境构建 下…

作者头像 李华