代码说明:
当您运行这段Lua代码,它将在每隔1秒钟的定时回调函数中执行以下操作:
1. 重新读取各个保持寄存器的值,这些寄存器存储了不同传感器的数据,如湿度、温度和烟雾感应器等。
2. 获取文本控件的数值,这些数值是您在界面上设置的阈值,用于判断是否满足条件以控制线圈的状态。
3. 根据条件判断,将根据不同的条件设置线圈的状态,以控制相应的设备。例如,如果湿度值高于阈值,代码会打开相应的线圈,表示设备正在运行,并将文本控件显示为”运行中”。如果湿度值低于阈值减3,代码会关闭线圈,表示设备已停止,并将文本控件显示为”已停止”。
4. 通过这些操作,您可以根据传感器的数据状态,实时控制设备的运行状态,同时通过文本控件在界面上清晰地显示设备的状态信息。这使您能够实现设备的自动控制和状态显示,以满足不同条件下的需求。
function on_systick() -- 重新读取保持寄存器的值 local reg1 = get_variant("1#湿度") local reg2 = get_variant("6#湿度") local reg3 = get_variant("8#湿度") local reg4 = get_variant("机箱温度") local reg5 = get_variant("烟雾感应器") -- 获取文本控件的数值 local txtValue1 = get_value(10, 1) local txtValue2 = get_value(10, 2) local txtValue3 = get_value(10, 3) local txtValue4 = get_value(14, 2) local txtValue5 = get_value(14, 4) -- 根据条件设置线圈的值并更新文本控件 if reg1 >= txtValue1 then mb_write_coil_05(16, 0, 1) -- 打开线圈1 print("打开线圈1") set_text(10, 16, "运行中") -- 设置文本为 "运行中" elseif reg1 <= (txtValue1-3) then mb_write_coil_05(16, 0, 0) -- 关闭线圈1 print("关闭线圈1") set_text(10, 16, "已停止") -- 设置文本为 "已停止" end if reg2 >= txtValue2 then mb_write_coil_05(16, 1, 1) -- 打开线圈2 print("打开线圈2") set_text(10, 17, "运行中") -- 设置文本为 "运行中" elseif reg2 <= (txtValue2-3) then mb_write_coil_05(16, 1, 0) -- 关闭线圈2 print("关闭线圈2") set_text(10, 17, "已停止") -- 设置文本为 "已停止" end if reg3 >= txtValue3 then mb_write_coil_05(16, 2, 1) -- 打开线圈3 print("打开线圈3") set_text(10, 19, "运行中") -- 设置文本为 "运行中" elseif reg3 <= (txtValue3-3) then mb_write_coil_05(16, 2, 0) -- 关闭线圈3 print("关闭线圈3") set_text(10, 19, "已停止") -- 设置文本为 "已停止" end if reg4 >= txtValue4 then mb_write_coil_05(16, 3, 1) -- 打开线圈4 print("打开线圈4") set_text(21, 1, "运行中") -- 设置文本为 "运行中" elseif reg4 <= (txtValue4-3) then mb_write_coil_05(16, 3, 0) -- 关闭线圈4 print("关闭线圈4") set_text(21, 1, "已停止") -- 设置文本为 "已停止" end if reg5 <= txtValue5 then mb_write_coil_05(16, 4, 1) -- 打开线圈5 print("打开线圈5") set_text(20, 1, "运行中") -- 设置文本为 "运行中" elseif reg5 <= (txtValue5-3) then mb_write_coil_05(16, 4, 0) -- 关闭线圈5 print("关闭线圈5") set_text(20, 1, "已停止") -- 设置文本为 "已停止" end end