本文将基于 MPC-ZC1 工控单板,通过 EsDA 设计工具,分享如何搭建出一个常用的物联网监测控制系统。 简介在大多数嵌入式物联网应用场景中,温度、湿度、电压、电流等基本数据的采集是必不可少的。且需将数据上报至物联网平台,并支持云端远程控制。对于安全性、实时性要求较高的场合,还需要支持本地数据处理和及时响应。本文将基于MPC-ZC1工控单板,通过EsDA设计工具,搭建出一个常用的物联网监测控制系统。
前期准备
可通过 EsDA MPC-ZC1 系列文章,掌握 EsDA 开发流程:
- EsDAMPC-ZC1入门(一)——软件安装
- EsDAMPC-ZC1入门(二)——LED控制
- EsDAMPC-ZC1应用——串口服务器(一)
- EsDAMPC-ZC1应用——串口服务器(二)
一、项目需求
项目开发前,先对项目需求进行梳理和拆解,主要有以下几点:
采集温湿度数据;
温度异常报警;
数据上报云端物联网平台;
控制风机降温;
接收云端控制命令。
二、业务框图
根据项目需求,大致将系统划分为以下几大模块:
1. 温湿度采集
- 采集环境温湿度;
- 可配置周期性采集。
2. 异常警报
可配置警报温度阈值;
输出高温异常警报提示;
输出低温异常警报提示。
3. 云端监控
接入物联网平台;
上报数据至云平台;
接收云平台控制命令;
- 组态设计。
4. 风机降温
- 可配置降温温度阈值;
- 控制风机开关。
业务开发
一、温湿度采集
本项目选用通用的 RS485 接口温湿度变送器来实现温湿度采集,该设备使用 Modbus RTU 通信协议。AWFlow 集成了通用的 RS485 温湿度变送器节点,包括 modbus_master_rtu 、th_transmitter_in 2个节点。
1. 节点介绍
1.1 modbus_master_rtuModbus RTU 主机(客户端)配置节点,属于隐式节点,不会被显示在画布中,需要配套对应的功能节点一起使用。该节点提供了Modbus RTU 主机通信服务。1.1.1 属性
名称(name):节点名称,用于索引查找本节点;
显示名称(displayName):用于画布上显示的名称;
端口(port):用于索引串口设备;
波特率(baudrate):串口波特率参数;
数据位(bytesize):数据位参数;
校验位(parity):串口奇偶校验位参数;
停止位(stopbits):串口停止位参数;
响应超时(respond_timeout):通信应答超时时间。
* 配置节点(config类型)只存在节点属性,不具备输入输出功能。
1.2 th_transmitter_in
通用 Modbus RTU 温湿度变送器节点,负责读取指定从机设备温湿度数据。1.2.1 属性
名称(name):节点名称,用于索引查找本节点;
显示名称(displayName):用于画布上显示的名称;
modbus配置参数(modbus):绑定一个Modbus RTU配置节点;
从机ID(slave_id):从机(服务端)地址;
温度寄存器地址(temp_addr):温度数据所在的寄存器地址;
湿度寄存器地址(humidity_addr):湿度数据所在的寄存器地址;
输出周期(period):轮询读取寄存器数据的周期。
1.2.2 输入
* pump类型节点通常不具备数据输入。
1.2.3 输出
- slaveID:从机(服务端)地址,通常用于后级节点区别设备;
- temperature:温度数据,float 类型;
- humidity:湿度数据,float 类型。
1.3 to_json
由于 th_transmitter_in 节点是以 temperature 和 humidity 属性输出数据,不能直接使用 log 节点输出到调试窗口,所以我们通过 to_json 将属性转换成 json 数据进行输出。1.3.1 属性
名称(name):节点名称,用于索引查找本节点;
显示名称(displayName):用于画布上显示的名称;
模板(template):可指定字符进行替换操作。
1.3.2 输入
msg:用于转换的对象
1.3.3 输出
payload:转换后的 json 字符串数据;
payloadType:数据类型,json;
payloadLength:数据长度。
2.采集测试
我们将温湿度数据采集并打印到调试窗口,验证数据的正确性。
2.1 添加节点
添加 th_transmitter_in、to_json、log 节点到画布上。
2.2 配置节点
双击 th_transmitter_in 节点,打开属性面板。
选择“添加新的 modbus_master_rtu 节点”,点击编辑配置,进入配置节点属性面板。
端口:Uart1
波特率:9600
数据位:8bits
校验位:None
停止位:1bits
响应时间:0
完成串口参数配置,回到 th_transmitter_in 配置界面。
从机ID:1
温度寄存器地址:0
湿度寄存器地址:1
输出周期:1000
可以看到已经创建了一个新的配置节点,名为 modbus_master_rtu。同时配置传感器从机地址和寄存器地址,点击完成,完成节点配置。
* 传感器从机ID、寄存器地址可根据实际产品手册进行配置。
2.3 绘制流图
连接 th_transmitter_in、to_json、log 节点。
2.4 下载验证
确保硬件正确连接。
选择流图下载接口,并点击运行按钮。
完成流图下载,通过调试窗口可以看到读回的传感器数据。
二、异常警报
这里以实现对高温、低温2个阈值的监测,作为异常警报条件,以一个红色LED作为警报提示。此处,需要用到 fscript、led 2个节点来实现异常警报业务。
* fscript、led 节点使用可参考以往教程。
1. 添加节点添加 fscript、led 节点到画布上。
2. 配置节点
双击 fscript 节点,打开属性面板,这里需要配置 Initialize、Function 2个阶段的脚本。
/* 初始化高温预警环境变量*/
global.high_temp = 30
/* 初始化低温预警环境变量*/
global.low_temp = 15
在脚本加载阶段,初始化了2个变量,分别为 high_temp 和 low_temp,用于保存高温预警和低温预警的温度判定值。
此处使用 global 对象的属性来做为变量,相当于全局的环境变量。后续可以通过其他脚本来访问和修改此2个变量,为后续可以动态修改这2个参数做准备。
/* 当温度大于高温阈值 或 低于低温阈值,则属于异常 */
if (msg.temperature >= global.high_temp ||
msg.temperature <= global.low_temp) {
/* 点亮警报信号 */
output.payload = 1
} else {
/* 熄灭报警信号 */
output.payload = 0
}
脚本运行阶段,通过判断输入的温度值 msg.temperature 是否超过预警值边界,如超过,则向后级节点输出有效预警信号,否则输出无效信号。
led 节点配置为红色LED。
3.绘制流图
连接 th_transmitter_in、fscript、led节点。
4. 下载验证
选择流图下载接口,并点击运行按钮。
完成流图下载,通过外部暖风机加热周围空气,可以看到温度值逐渐上升。
当超过高温预警值(30℃)时,红色LED被点亮。
三、云端监控
云端监控业务,需要实现设备接入、上报数据、远程控制 3部分功能。
本项目,选择同为 EsDA 组成部分的 ZWS(ZLG物联网平台)作为云服务平台。
* 可通过ZLG物联网平台教程深入学习 ZWS 的应用:
https://www.zlgcloud.com/index.html#/home/service
1.接入云端
登录https://www.zlgcloud.com/
1.1 ZWS-创建设备
1.1.1 创建设备类型
打开设备类型管理页面。
点击添加类型。
选择basic模板,并将新设备类型命名为iot_mpc_zc1 。
点击确定,完成设备类型的创建。
1.1.2 添加设备
打开设备列表页面。
点击添加设备。
选择新建的 iot_mpc_zc1 类型,并将设备的名称和ID命名为 mpc_zc1_0。
*设备名称和设备ID并不一定要一致,此处仅为了方便描述。
点击保存,完成设备添加。
返回设备列表。
可以在设备列表中看到新添加的设备,并且设备处于离线状态。
1.2 ZC1-连接云端
接入 ZWS 并上报数据需要使用到 zws_iot、zws_iot_data_out 2个节点。
1.2.1 zws_iot
zws_iot 配置节点,属于隐式节点,不会被显示在画布中,需要配套对应的功能节点一起使用,主要用于配置 ZWS 服务所需参数,并提供与 ZWS 云平台通信的服务
1.2.1.1 属性
名称(name):节点名称,用于索引查找本节点;
显示名称(displayName):用于画布上显示的名称;
是否连接(connection_status):使能立即连接;
设备类型(dev_type):ZWS 三元组-设备类型;
设备ID(dev_id):ZWS 三元组-设备ID;
设备密钥(dev_secret):ZWS 三元组-设备密钥;
固件版本(firmware_version):设备固件版本,产品自定;
设备心跳周期(keep_alive_interval):心跳周期。
*配置节点(config类型)只存在节点属性,不具备输入输出功能。
1.2.2 zws_iot_data_out
ZWS 数据上报节点,提供ZWS数据点上报服务。
1.2.2.1 属性
- 名称(name):节点名称,用于索引查找本节点;
- 显示名称(displayName):用于画布上显示的名称;
- 设备配置(config):绑定一个 zws_iot 配置节点;
- 数据上报方式(output_type):选择上报数据方式;
- 目标键值对(key_names):指定上报的数据点名称。
1.2.2.2输入
payload:当上报方式为 RAW 类型时有效;
其他属性:当与 key_names 匹配时有效。
① 添加节点
添加 zws_iot_data_out 节点到画布上。
② 配置节点
双击 zws_iot_data_out 节点,打开属性面板。
选择“添加新的 zws_iot 节点”,点击编辑配置,进入配置节点属性面板。
是否连接:conncected
设备类型:iot_mpc_zc1
设备ID:mpc_zc1_0
设备密钥:以个人创建的设备密钥为准
* 只需配置立即连接和ZWS三元组(类型、ID、密钥)即可,其他默认。三元组信息必须与云端设备一致。
完成 zws_iot 参数配置,回到 zws_iot_data_out 配置界面。
选择创建的配置 zws_iot,其他参数保持默认。
③ 绘制流图连接 th_transmitter_in、zws_iot_data_out节点。
④ 下载验证
选择流图下载接口,并点击运行按钮。
完成流图下载,等待片刻,可以从ZWS平台看到设备已经上线。
2. 上报数据
ZWS 平台需要配置与设备上报的数据对应的数据点,才能正确展示接收到的数据内容。
2.1 ZWS-添加数据点2.1.1 添加温度数据点打开设备类型页面。点击编辑 iot_mpc_zc1 类型。
点击添加新数据点。
添加温度数据点,点击保存。
2.1.2 添加湿度数据点
继续添加湿度数据点。2.2 ZC1-上报温湿度
要在ZWS云平台正确显示出上报的数据,则需要上报与添加的的数据点匹配的数据。
2.2.1 配置节点
双击 zws_iot_data_out 节点,打开属性面板。
选择 Key_Values 上报方式,同时配置 temperature,humidity 2个键名。
* temperature,humidity 键名必须与ZWS数据点一致。2.2.2 下载验证
保存并下载流图。
完成流图下载,等待设备上线。
进入设备详情。
查看实时数据。
可以看到,温度、湿度数据已经可以正确上报。
至此,已经完成了温湿度采集、异常警报、数据上报等业务,将在后续章节,继续完成远程控制、风机降温、云端组态等业务。
最后整理已完成流图,如下:
-
物联网
+关注
关注
2909文章
44569浏览量
372832
发布评论请先 登录
相关推荐
评论