睿擎平台:基于Modbus的在线监控网关方案

描述

论坛原文

https://club.rt-thread.org/ask/article/04554bb1d4ba5bfe.html

作者:XLUR_8603


 

功能综述

 

基于睿擎派和RT-Thread操作系统,我们开发了一款高性能工业物联网数据网关,实现了设备信息的实时采集、可视化监控和远程管理。该方案为传统工业设备的智能化升级提供了可靠且经济的技术路径。

 

核心功能

 

1. 实时数据采集与可视化

 

 

a. 通过Modbus RTU协议采集从设备数据

 

 

b. 基于WebNet实现数据的网页可视化展示

 

 

c. 支持温湿度、光照、距离等多种传感器数据监控

 

 

2. 远程设备管理

 

 

a. 通过Web界面实现设备参数配置

 

 

b. 支持在线OTA固件升级

 

 

c. 实现数据导出功能,方便数据分析

 

 

3. 稳定可靠的通信

 

 

a. 采用RS485总线连接,通信稳定可靠

 

 

b. 基于RT-Thread实时操作系统,确保系统响应及时

 

 

c. 使用互斥量保护数据,避免并发访问冲突


 

系统架构

 

硬件架构设计

 

本方案采用主从架构设计,实现了分布式数据采集与集中管理:

 

 

在线监控
 

 

 

主机:睿擎派作为主站,负责数据汇总、处理和可视化

 

 

从机:星火一号作为从站,负责前端传感器数据采集

 

 

通信链路:通过RS485总线实现主从机之间的Modbus RTU通信


 

 

 

软件架构设计

 

本项目采用分层模块化设计,确保代码的可维护性和功能分离,核心模块包括:

 

 

主入口模块:程序执行入口,负责系统初始化流程

 

 

应用管理模块:集中管理应用任务,初始化全局资源

 

 

Modbus通信模块:实现Modbus RTU协议功能,负责数据读写操作

 

 

Web服务模块:基于WebNet实现HTTP服务,提供网页界面

 

 

传感器采集模块:负责各种传感器数据采集和处理

 

 

在线监控
 

 

 


 

核心代码实现

 

Modbus初始化配置

 

代码说明:此模块负责初始化Modbus RTU通信环境,配置串口参数、从机地址、超时设置和RS485模式,为后续的数据采集建立通信基础。

 

 

  •  
  •  
  •  
  •  
  •  

/* Modbus初始化 - 根据硬件配置 */staticrt_bool_tmodbus_init(void){/* 创建Modbus RTU上下文 - 使用串口配置 */    modbus_ctx =modbus_new_rtu("/dev/uart5",115200,'N',8,1);if(modbus_ctx ==NULL){LOG_E("Unable to create Modbus context");return-1;}/* 设置从机地址 */modbus_set_slave(modbus_ctx, MODBUS_SLAVE_ADDR);/* 设置响应超时 */modbus_set_response_timeout(modbus_ctx,1,0);/* 设置为 RS485 模式 */modbus_rtu_set_serial_mode(modbus_ctx, MODBUS_RTU_RS485);/* 设置 RTS 控制 */modbus_rtu_set_rts(modbus_ctx, RS485_RTS_PIN, MODBUS_RTU_RTS_UP);/* 连接Modbus设备 */if(modbus_connect(modbus_ctx)==-1){LOG_E("Modbus connection failed: %s",modbus_strerror(errno));modbus_free(modbus_ctx);        modbus_ctx = RT_NULL;return RT_FALSE;}LOG_I("Modbus initialized successfully with UART5, 115200, RS485 mode");return RT_TRUE;}


 

数据采集实现

 

代码说明:此模块实现从Modbus从设备读取传感器数据的功能,包括温湿度、光照和距离等参数,并进行数据处理和验证。

 

 

  •  
  •  
  •  
  •  
  •  

staticrt_bool_tread_sensor_data(structsensor_data*data){uint16_t tab_reg[MODBUS_REG_COUNT];int rc;int i; if(modbus_ctx ==NULL){LOG_E("Modbus context is null");return RT_FALSE;}     rc =modbus_read_registers(modbus_ctx, MODBUS_REG_START, MODBUS_REG_COUNT, tab_reg);if(rc ==-1){LOG_E("Modbus read failed: %s",modbus_strerror(errno));return RT_FALSE;} /* 读取温度值(假设为有符号16位整数,单位0.1℃) */    data->temperature =(int16_t)tab_reg[TEMPERATURE_REG - MODBUS_REG_START]/1.0f;    data->humidity = tab_reg[HUMIDITY_REG - MODBUS_REG_START]/1.0f;    data->ps_data = tab_reg[PS_REG_ADDR - MODBUS_REG_START];    data->brightness = tab_reg[BR_REG_ADDR - MODBUS_REG_START]/1.0f;    data->valid = RT_TRUE; LOG_D("Modbus read: temp=%.1f℃, humidity=%.1f%%",          data->temperature, data->humidity);return RT_TRUE;}


 

 

 

Web服务实现

 

代码说明:此模块实现Web服务的CGI处理函数,用于响应前端的光照数据请求,通过互斥量保护共享数据,确保数据访问的安全性。

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

staticvoidcgi_get_light_handler(structwebnet_session*session){constchar*mimetype;float light_value =0.0f;     mimetype =mime_get_type(RT_NULL);webnet_session_set_header(session, mimetype,200,"Ok",-1); char*trans_buf ="{\"light\": %.2f}"; if(temperature_mutex != RT_NULL){rt_mutex_take(temperature_mutex,100);        light_value = g_light_value;rt_mutex_release(temperature_mutex);} webnet_session_printf(session, trans_buf, light_value);}


 

网页界面设计

 

代码说明:此模块定义了Web界面的页面路由配置,根据用户选择加载不同的功能页面,包括设备信息、从机设备信息、视频流、数据导出、OTA更新和参数设置等。

 

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

// 根据选择加载不同内容页const pages ={  device_info:"device_info.shtml",  slave_device_info:"slave_device_info.shtml",  video_stream:"video_stream.shtml",  data_export:"data_export.shtml",  ota_update:"ota_update.shtml",  parameter_settings:"parameter_settings.shtml",};


 

技术优势

 

1. 高实时性

 

 

a. 基于RT-Thread实时操作系统,任务响应及时

 

 

b. 采用消息队列和互斥量等IPC机制,确保数据处理的实时性

 

 

2. 易于扩展

 

 

a. 模块化设计,功能分离清晰

 

 

b. 基于RT-Thread软件包生态,可快速集成各种传感器

 

 

3. 稳定可靠

 

 

a. Modbus RTU协议,通信稳定可靠

 

 

b. RS485总线,抗干扰能力强

 

 

c. 完善的错误处理机制

 

 

4. 用户友好

 

 

a. 直观的Web界面,操作简单

 

 

b. 支持在线OTA升级,维护便捷

 

 

c. 数据可视化展示,一目了然

 

 


 

应用场景

 

工业设备监控:实时监控工业设备的运行状态和环境参数

 

 

智能楼宇:监控楼宇内的温湿度、光照等环境参数

 

 

农业大棚:监测大棚内的环境参数,实现智能调控

 

 

仓储物流:监控仓库内的温湿度、烟雾等参数,确保存储安全

 

 


 

部署与配置

 

硬件配置

 

主机:睿擎派开发板

 

 

从机:星火一号开发板

 

 

通信:RS485总线连接

 

 

传感器:温湿度传感器、光照传感器、距离传感器

 

 

软件配置

 

操作系统:RT-Thread 4.0+

 

 

协议:Modbus RTU

 

 

网络:WebNet HTTP服务

 

 

串口配置:UART5,波特率115200,无校验位,8位数据,1位停止位

 

 


 

演示效果

 


 

总结

 

基于Modbus的在线监控网关系统方案,充分利用了RT-Thread操作系统的优势,实现了设备信息的实时采集、可视化监控和远程管理。该方案具有高实时性、易于扩展、稳定可靠和用户友好等特点,可广泛应用于工业、楼宇、农业等领域的设备监控场景。

 

 

通过本方案的实施,传统工业设备可以快速接入物联网,实现智能化升级,提高生产效率和管理水平。RT-Thread软件包生态的丰富资源,也为系统的快速开发和功能扩展提供了有力支持。

 

 

 

 

 

项目代码地址

https://gitee.com/lv-yuhaogree/rui-ching_demo

 

 

相关文档

https://www.rt-thread.com/ruiching/document/site/


 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分