项目源码->点击这里

项目视频演示->点击这里


项目概况:

  • 工业场景需求:工业场景中存在实时数据采集与设备监控的需求,如生产状态监控、设备远程控制等。
  • 传统采集痛点:传统工业数据采集存在布线复杂、实时性差、可视化不足等问题。
  • 系统目标:构建轻量、高效的工业数据采集与控制平台。

项目展示:
在这里插入图片描述
在这里插入图片描述

以下是用户web界面,用于对工业设备的实时监控和控制
这里每五秒自动采集一次光照传感器和加速度传感器的值,可以远程控制开关灯/蜂鸣器(也可以在手机的web页面上进行操作)
在这里插入图片描述


技术栈:

  • 前端:运用HTML5、JavaScript、Tailwind CSS(样式框架)、Font Awesome(图标资源)、Chart.js(数据可视化)技术。
  • 后端:使用C语言开发轻量级Web服务器(thttpd),多线程并发服务器;modbus主机多线程处理事务(一个线用于采集,一个线程用于控制),引用了modbus库。
  • 通信协议:HTTP协议用于前后端交互,Modbus协议用于与工业设备通信。
  • 数据交互:前后端数据封装采用JSON格式;进程间通信采用消息队列

整体架构:

在这里插入图片描述

  • 数据采集流程:传感器采集数据,经Modbus传输至Web服务器,最终在前端展示。
  • 设备控制流程:前端操作触发HTTP请求,后端接收处理后通过Modbus控制设备,设备响应操作

部分代码实现:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


项目亮点:

  • 轻量级架构:C语言Web服务器搭配Modbus协议,资源占用低,适用于工业嵌入式场景。
  • 实时性优化:多线程处理与定时采集相结合,保障数据时效性。
  • 易用性设计:可视化界面降低操作门槛,方便非专业人员使用。
  • 可扩展性:支持新增传感器类型与设备控制逻辑,方便系统功能拓展。
  • 降低控制成本:远程操作减少人工干预,降低设备控制成本。

未来优化:

  • 引入数据库:当前系统无历史数据持久化功能,采用如SQLite等数据库存储历史数据,支持数据分析。
  • 强化安全措施:增加HTTPS加密,加强登录鉴权。
  • 扩展设备支持:纳入温湿度传感器、电机控制等更多设备类型。

遇到的问题与解决方案:

  • 进程间通信方案选择哪个?

因效率高优先考虑的是共享内存方案,但又考虑到进程间同步,用共享内存得加标志位(耗费cpu),或加信号灯集(代码会更复杂一点),综合考虑,选择消息队列(有类型又带阻塞函数)

  • 发送开关请求时,进入了采集的线程?

ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg);
msgtyp=0时,不是表示的接受消息类型为0的第一个消息,而是接收消息队列中第一个消息,故消息类型要大于0

  • 换了网络后,用户无法进入工业采集界面?

切换网络,保证网络畅通
可能被防火墙拦截,关闭ubuntu防火墙ufw disable

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐