NS PM PS O NS NS NM NM
NM PS PS O NS NM NM NM
NB O O NS NM NB NB NB
5.2 系统主程序设计
C51单片机通信任务函数和 LED 灯控制任务都运行在操作系统上,系统对任务时间进行触发来实现任务调度。每个任务包含若干事件,当一个事件产生时,对应任务的事件变量就被设置相应的事件号,这样事件调度程序就会调用相应的任务处理程序。其主程序流程图,如图5.2所示。
图5.2 主程序流程图
5.3 系统节点启动程序设计
本文设计了两种LED照明控制系统的启动方式。LED照明控制系统节点完成各种初始化以后,读取网络层的启动NV条目,查看是否恢复网络信息。如果是恢复网络信息,则程序直接从NV中读取节点以前运行时保存的网络信息NV条目,完成启动,否则节点以自动加入网络的方式启动。LED照明控制系统节点终端启动流程图如图5.3所示。
图5.3 KED灯系统节点启动流程图
5.4 LED灯节点任务程序设计
除了协议栈完成的功能外,应用上层用户需要添加自己的任务函数,包括初始化函数和任务事件处理函数。任务事件处理函数处理任务所有的事件,包括时间、消息和其他用户定义的事件。用户定义事件有节点状态检测事件LAMP_STATE_DETECT 和 LED灯照度控制事件 LED_LIGHTING_LEVEL。系统事件消息有 ZDO 状态改变、AF 数据输入 AF_INCOMING_MSG_CMD、消息确认事件和按键事件 KEY_CHANGE 等事件。地铁LED灯应用任务设计流程图如图5.4所示。
图5.4 LED灯节点任务程序流程图
5.5 消息指令处理程序设计
当地铁LED灯协调器收到控制指令时,就执行该子程序。这些命令包括状态检测请求/上传命令、故障报告、灯照度/开关控制指令,这些指令都是以不同的簇表示 ,程序处理指令消息就是处理输入簇的过程 。当应用程序到AF_INCOMING_MSG_CMD 事件消息后,提取 Cluster ID 以便处理相应的指令。下面只给出了状态检测请求/上传指令和LED灯照度/开关控制指令的处理过程,其他指令的处理过程类似。指令消息处理程序流程图如图5.5所示。
图5.5 指令消息处理程序流程图
5.6 LED照明亮度调节事件处理
地铁站LED照度调节除了监控中心发送的 Lamp_LightingLevel_Cmd 命令实现的照度控制外,在大部分事件内LED 照度都是根据灯的运行状态自行控制的。当在上下班客流高峰时候,LED开始可以以满照度运行,其余在客流量少的时候,可以不同程度的减少LED灯的照度。为了取得更好的照明效果,还可以考虑天气和季节因素。权衡上述因素,采用前面介绍的模糊控制完成照度的控制,使得LED灯节点如图5.6所示实时自行调节其运行照度。
图5.6 LED亮度自动调节程序流程图
5.7 地铁LED灯协调器网关设计
与LED灯节点程序类似,协调器也运行在OSAL层下,然而,由于需要和上位机监控中心进行远程数据交互,因此涉及到GSM消息格式与C51单片机格式相互转换的问题,故此协调器需要进行协议转换。
由于在前文中已经对两种消息的格式进行了介绍和分析,因此只要把消息格式中我们自己定义的那部分提取出来,然后加上不同的格式的封装即可。处理流程如图5.7所示。
图5.7 网关设计处理流程图 基于无线智能信息处理的地铁站LED照明节能控制系统设计与开发(14):http://www.751com.cn/zidonghua/lunwen_860.html