基于webserver的工业数据采集项目
工业监控系统项目摘要 本项目开发了一套轻量高效的工业数据采集与远程控制系统,采用C语言轻量级Web服务器(thttpd)结合Modbus协议实现设备通信,前端通过HTML5/Chart.js实现数据可视化。系统支持光照/加速度传感器数据采集(5秒/次)及设备远程控制,采用多线程架构(数据采集与控制分离)和消息队列实现进程通信。亮点包括嵌入式友好设计、实时性优化及低成本远程控制。未来拟扩展数据库存储
项目源码->点击这里
项目视频演示->点击这里
项目概况:
- 工业场景需求:工业场景中存在实时数据采集与设备监控的需求,如生产状态监控、设备远程控制等。
- 传统采集痛点:传统工业数据采集存在布线复杂、实时性差、可视化不足等问题。
- 系统目标:构建轻量、高效的工业数据采集与控制平台。
项目展示:

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

所有评论(0)