三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

实验20 自动灭火场景实验

实验20 自动灭火场景实验

1.实验目的

串口屏通过温度传感器,检测火焰温度,当火焰温度超过报警温度时,启动风扇进行灭火。

2.实验工具

支持MODBUS、IO的串口屏,本例程串口屏型号为(SANY-WV-S43-04M-C)

支持MODBUS的温度传感器,本例程使用的是自主生产的传感器

一个5V继电器、一个直流电机、一个IO转接板及软排线

3.页面设计

项目设置,勾选MODBUS 主机。修改波特率为9600(传感器波特率为9600,需要保持一致)。

page0 页面控件

控件名

属性

功能

image0

可见 图片

场景UI

progressbar6

可见 进度条

显示当前温度

numf6

可见 浮点数

显示当前温度

numf8

可见 浮点数

设置报警温度(透明度属性设置为0)

gif7

可见 GIF图片

显示动态报警

io2

不可见 IO控件

输出高低电平(初始化为低电平0)

mod3

不可见 MODBUS

支持使用MODBUS协议

timer4

不可见 定时器

用于定时查询温度传感器并显示

timer10

不可见 定时器

用于对比报警值,超出报警温度时,IO输出高电平

4.传感器模块参数

波特率:9600 功能码:03,读取寄存器

设备地址

寄存器地址

1

0x0000

温度

只读

float类型,一个寄存器表示温度,单位*0.01℃

0x0001

湿度

只读

float类型,一个寄存器表示湿度,单位*0.01%rh

本例程仅使用温度寄存器。

5.逻辑实现

5.1 页面加载事件,初始报警温度

脚本如下:

numf8.valf=60.0;//初始化报警温度

5.2 定时查询温度(timer4)

脚本如下:

intRet;
Ret=modbusRead(0x01,0x03,0x0000,2,100);//查询一次
if(Ret==0)//查询成功
{
numf6.valf=(float)(mod3.rxBuf[1]<<8|mod3.rxBuf[2])/100;//转换温度
progressbar6.val=(int)numf6.valf;
}

5.3 对比报警温度(timer10)

脚本如下:

if(numf6.valf>numf8.valf)//读取温度超过设置温度
{
gif7.visible=1;//GIF图片可见
io2.val=1;//IO.Pin0输出高电平
}
else
{
gif7.visible=0;//GIF图片隐藏
io2.val=0;//IO.Pin0输出低电平
}

6.实验结果

编译成功后,点击下载按钮,下载到串口屏。

具体实验现象:用串口屏做一个自动灭火场景哔哩哔哩bilibili

← 返回列表