完整测试项目
- 基本概述
本测试项目基于以太网实时传输技术完成采样数据传输,基于Modbus-TCP完成数据控制和显示数据获取,基于Node-red完成基本信息的显示。
基本网络拓扑和功能描述图
系统采用以太网作为数据传输基础,利用pcap技术快速接收来自系统内多个数据终端(目前实现了一个数据终端)的数据内容,并进行相应的数据处理,处理后的数据通过modbus-tcp完成采集系统和node-red系统之间的共享。
- 数据采集通道
数据采集利用了Linux下的pcap技术,通过以太网链路层直接截获以太网数据帧,并解析。
VisionFive2系统对于libpcap支持比较好,我们只需要执行简单的安装命令就可以完成安装。
需要我们安装libpcap-dev和libpcap0.8两个库文件才可以进行后续的开发。
具体可以参考测试贴:https://bbs.eeworld.com.cn/thread-1251111-1-1.html
- modbus-tcp数据共享通道
Modbus协议作为当今工业控制领域的通用通讯协议,在无数物联网产品中得到应用,工业、农业等物联网解决方案中都有其身影。ModBus网络是一个工业通信系统,由智能终端的可编程序控制器和计算机,通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件,应用于各种数据采集和过程监控。
通过Modbus协议,控制器相互之间、或控制器经由网络(如以太网)可以和其它设备之间进行通信。Modbus协议使用的是主从通讯技术,即由主设备主动查询和操作从设备。一般将主控设备方所使用的协议称为Modbus Master,从设备方使用的协议称为Modbus Slave。典型的主设备包括工控机和工业控制器等;典型的从设备如PLC可编程控制器等。Modbus通讯物理接口可以选用串口(包括RS232和RS485),也可以选择以太网口。
我们这里选用Modbus-TCP网络接口的通讯方式,并且利用libmodbus这个非常有名的modbus开发库完成基本开发。
库文件的基本安装流程:
过程非常简单。
在应用程序中,作为数据提供者,实现了一个Modbus-TCP的设备端(即服务端)软件。提供了保持寄存器访问和线圈控制功能。
序号 |
数据内容 |
寄存器 |
方向 |
1 |
采集数据1 |
保持寄存器0 |
输出 |
2 |
采集数据2 |
保持寄存器1 |
输出 |
3 |
采集数据3 |
保持寄存器2 |
输出 |
4 |
采集控制 |
线圈控制0 |
输入输出 |
- node-red显示和控制系统
Node-RED是一个物联网编程工具,它以新颖和有趣的方式,将硬件设备、应用接口和在线服务连接到一起。
它不仅提供了一个基于浏览器的编程环境和丰富的节点类型,使流程的创建变得非常容易,而且还为流程的运行提供了运行环境,实现了一键部署的能力。
Node-RED基于Node.js的轻量化运行时环境,充分继承了事件驱动和非阻塞模型的优点,使其不仅能运行在云平台中,也能非常好运行在树莓派这类位于网络边缘的低功耗硬件设备上。
借助超过22多万既有Node模块资源,可使组件面板的类型范围以及整个工具的能力的扩展变得非常容易。
Node-RED提供了一个基于浏览器的流程编辑器,不仅可非常方便地将面板上丰富的节点组装成流程,而且可以通过一键部署功能,将其安装到运行环境中。
利用其中的富文本编辑器可以创建JavaScript函数。
预置的代码库可用于保存有用的函数、模板和可复用的流程。
4.1 数据通讯
在node-red中安装modbus操作控制,具体可以参考:https://bbs.eeworld.com.cn/thread-1250342-1-1.html 的相关说明。
这里利用modbus-read控件,读取FC3的寄存器内容,获取采集系统中采集到的数据。
利用modbus-wirte控件完成采集过程的启停控制流程。
4.2 显示画面
在node-red中安装dashbord控件,并利用其中的Chart控件完成曲线显示,利用button控件完成启停流程控制的输入,通过文件读取控件,获取处理器温度,并且利用gauge控件显示。
显示界面为node-red编辑界面网络地址:1880/ui
- 测试和视频
通过QT开发了一个数据终端仿真环境,用来产生数据源。
运行的主程序完成数据获取和提供modbus数据服务:
通过node-red提供相应的显示界面
视频
vf2-modbus