智能照明无线远程控制系统:应用无线传感器网络的智能照明控制系统
智能照明无线远程控制系统:应用无线传感器网络的智能照明控制系统2.1 无线传感器网络设计图2 系统框图图1 节点结构上位机中具有专门开发的OPC DA服务器。OPC 服务器与组态软件中开发的用户界面之间采用OPC技术通信,与无线网络中的基站之间采用RS232串行通信。OPC服务器负责将用户下达的控制命令传送给无线网络中的基站,并将基站传输的设备状态上传至用户界面显示。在组态软件中开发的用户界面能实时准确的显示设备状态,并可实现对LED灯的组合控制、温度控制、PWM控制、定时控制及操作记录等功能。
智能照明控制系统由无线传感器网络、OPC DA服务器和用户界面组成。无线传感器网络采用星型结构,由ATmega16L和nRF905组成网络节点控制LED灯。无线网络中的基站通过RS232连接PC机中的OPC DA服务器。OPC服务器将设备状态传递给用户界面,并将接收的控制命令下达给无线网络节点。利用nRF905无线模块模拟组建一个智能照明控制系统,运行结果表明,系统具有良好的可扩展性。
智能照明控制在我国存在极大发展潜力及重要现实意义。本文将无线传感器网络、OPC通信与照明控制技术相结合,设计一套智能照明控制系统,实现灯具自动控制,提高系统管理水平。
1 系统方案概述本文的智能照明控制系统由无线传感器网络、OPC服务器和用户界面三部分组成。
底层的无线网络采用星型结构,包括一个基站和多个从站。其中,从站与被控LED灯连接并将灯的状态信息传送给基站。基站通过RS232与PC机相连,将接受的控制命令下达给从站。系统使用ATmega16L单片机和nRF905无线射频模块构成工作于433MHz的无线网络节点,两者通过SPI串行口相连。
图1 节点结构
上位机中具有专门开发的OPC DA服务器。OPC 服务器与组态软件中开发的用户界面之间采用OPC技术通信,与无线网络中的基站之间采用RS232串行通信。OPC服务器负责将用户下达的控制命令传送给无线网络中的基站,并将基站传输的设备状态上传至用户界面显示。
在组态软件中开发的用户界面能实时准确的显示设备状态,并可实现对LED灯的组合控制、温度控制、PWM控制、定时控制及操作记录等功能。
图2 系统框图
2 系统软件设计2.1 无线传感器网络设计
无线传感器网络是由一些低功耗、低成本、体积小的传感器节点,以无线通讯方式组成的网络,融合传感器技术、信息处理技术、嵌入式技术和网络通信技术,实现信息的采集、处理、传输及应用,具有施工成本低、系统扩展性好、运行维护易等优点。本系统的无线网络结构设计如下:
1)网络拓扑
系统无线网络采用星型结构,有基站和从站两类节点。基站与各从站间进行双向通信,从站互不通信。网络中的每个节点都配有ID地址,有接收、发送两种状态,默认处于接收状态。
2)MAC层协议
为避免多个从站同时向基站发送信息导致信道冲突,且照明系统对控制时延性要求不高,所以网络MAC层采用非坚持CSMA/CA协议。通信前,节点先利用nRF905的载波检测引脚CD监听信道是否空闲,若空气中有同频信号则CD自动置高。若信道忙碌则节点随机延迟一段时间后再重新监听。
信道空闲时,节点并不立即发送,而是采取一定的退避机制,将信道冲突的概率降至最小。因为当某从站与基站通信完毕的瞬间,可能有多个要发送数据的从站同时监听到信道空闲,此时信道冲突的可能性最大,所以节点随机退避一段时间后再进行发送。
这里采用二进制指数退避算法BEB,设争用期(即节点发出数据至接收到信道冲突的时间)为2t,各站重传次数为N 从整数集合[0 1 … (2N-1)]中随机取数,记为R。节点重传产生的时延D为2t的R倍,即D=R×2t。
站点在发送前若检测到信道空闲,就立即启动退避计数器,只要信道空闲,退避计数器就递减,若退避过程中检测到信道被占用则暂停退避计数器并保持计数器值不变,当信道重新空闲时在原有计数值基础上再次启动退避计数器,当计数值减到零时节点发送数据。
图3 非坚持CSMA/CA流程图
3)冲突避免策略
CSMA/CA协议只能解决发送端的数据冲突问题,但接收端仍存在数据冲突的可能,即“隐藏节点”问题。因此系统引入RTS/CTS/DATA/ACK握手机制。具体过程如下:
⑴从站向基站发送前先通过竞争方式获得信道使用权,再向基站发送请求连接帧RTS(Request To Send)。
⑵基站收到从站的RTS帧后,向从站发送连接确认帧CTS(Clear To Send),建立两者之间的通信连接。
⑶从站收到基站的CTS帧后,向基站发送数据帧DATA,若没有收到CTS帧,则重新发送RTS帧。
⑷基站收到从站的DATA帧后,向从站发送数据确认帧ACK。
⑸从站收到基站的ACK帧后,整个通信过程结束,若没有收到 则重新发送DATA。
图4 从站流程图
图5 基站流程图
4)差错控制
在差错控制方面,系统采取数据重发机制与nRF905自身CRC校验相结合的方式。从站在发送RTS或DATA后,若在一定时间内没有收到基站的CTS或ACK,则重新发送传输失败的帧,直到接收到回复或重发次数达到设定值。
另外,nRF905提供对CRC校验的硬件支持,通过设置RF配置寄存器中的CRC_MODE值,采取8位CRC校验。当接收的数据CRC校验出错时,nRF905会自动丢弃错误帧。
5)数据传输
系统有两种数据传输模式:点播和广播。点播是指基站向指定从站发送命令或某一从站向基站传输数据,是点对点通信。广播是指基站向所有从站发送命令,此时目的地址为统一值,是点对多点通信。
6)通信帧
系统有两种帧类型,分别是控制帧RTS、CTS、ACK和数据帧DATA。其中,前导码表明帧的开始;源地址为发送的设备地址;目的地址为接收的设备地址;帧类别说明此帧的功能;有效数据是传输的具体内容;结束码表明此帧的结束。
2.2 OPC DA服务器
OPC技术是用于过程控制的对象链接与嵌入技术,其以COM/DCOM/COM 技术为基础,采用服务器/客户端模式。本系统针对智能照明控制系统的需求,开发专门的OPC DA服务器,设计如下
图6 OPC DA服务器结构图
1)OPC对象与接口
系统编写实现OPC DA服务器的定制接口,采用E形式,以OPC3.0规范为标准,向下兼容OPC2.0版。系统的OPC对象与接口包括OPC Server、OPC Group和OPC Item三种对象。
其中,OPC Server和OPC Group为标准COM对象,服务器对象不支持聚合,支持连接点机制。组对象支持聚合、连接点机制。项对象不是标准的COM对象,通过一个类进行描述,在类中定义项对象的属性和操作方法。
系统OPC Server对象实现的接口包括:IOPCServer、IOPCommon、IOPCBrowseServerAddressSpace、IOPCItemIO 、IOPCItemProperties及IOPCBrowse。OPC Group对象实现的接口包括:IOPCItemMgt、IOPCItemDeadbandMgt、IOPCGroupStateMgt2、IOPCGroupStateMgt、 IOPCSyncIO、 IOPCSyncIO2、IOPCAsyncIO、 IOPCAsyncIO2及IOPCAsyncIO3。
2)服务器地址空间
系统的服务器地址空间由OPC服务器内所有可读写的数据项组成,根据实际情况预先设计,采用树型结构。整个服务器地址空间使用一个自定义的结构体数组进行存储,其结构体成员包括:结点唯一的ID号、结点的名字、父结点的ID号、左子女结点的ID号和右兄弟结点的ID号。最后,系统通过定义一个类对服务器地址空间进行管理。
3)硬件数据采集部分
OPC DA服务器通过RS232串行口与无线网络中的基站连接。本系统将与串口通信有关的API函数封装在一个类中进行管理,并定义一个属于此类的全局变量。通过对此全局变量的读操作,将无线网络基站上传的设备信息写入服务器地址空间及相应的OPC Item中。当OPC服务器接收到控制命令后,会自动调用串口全局变量的写函数,将指令下发给无线网络中的基站,并由基站将指令传输给具体从站。
4)线程设计
图7 OPC DA服务器更新及事务处理流程图
系统的OPC服务器包括一个主线程,两个辅助线程。主线程由服务器启动时自动创建,用于初始化COM库,建立消息循环和处理消息。第一个辅助线程用于处理服务器数据更新及异步事务,线程会周期性更新每个OPC Server对象中所有组对象的数据项,同时执行异步操作事务,并将操作结果回调给客户。
第二个辅助线程用于RS232串口监测,当串口接收到数据后,会以消息方式通知主线程,激发消息处理函数对数据进行处理,最后将处理好的数据写入服务器地址空间。不同线程间采用临界区方式进行同步。
5)数据访问
本系统的OPC服务器支持同步和异步两种数据访问方式,包括提供六种读数据方式,其中IOPCSyncIO2::ReadMaxAge、IOPCSyncIO::Read和IOPCItemIO::Read用于同步读;IOPCAsyncIO2::Read、IOPCAsyncIO3::ReadMaxAge用于异步读;而当数据改变或异步刷新被调用时,采用IOPCCallback::OnDataChange。
本文由于无线网络中的基站会自动将设备最新状态上传至OPC服务器中的服务器地址空间,因此所有读操作都直接读取OPC服务器中的内存数据。OPC服务器具有五种写数据方式,其中同步写操作包括:IOPCSyncIO::Write、IOPCSyncIO2::WriteVQT及IOPCItemIO::WriteVQT;异步写操作包括:IOPCAsyncIO3::WriteVQT、IOPCAsyncIO2::Write。当用户下达指令时,OPC服务器通过调用RS232串口写函数,将命令下传给无线网络中的基站。
图8 异步读数据流程图
图9 同步写数据流程
3 智能照明控制系统模拟组网本文使用ATmegal6L和nRF905构成无线节点模拟组建一个智能照明控制系统,模拟实现LED灯的组合控制、PWM控制、定时控制等功能。
图10 模拟智能照明控制系统实物图
系统通过ATmega16L开发板上的LED灯模拟被控灯具。温度控制方面,采用白炽灯与晶闸管BTA12-600及光耦隔离器MOC3041相连接模拟被控端。从站的微控制器将实际灯温度值与设定值进行比较,通过PID算法计算修正PWM占空比,调整灯的明暗程度。
最后,系统利用组态王软件开发用户界面。在操作界面上,可实时显示设备状态,对LED灯进行各种控制操作。系统会对各项操作进行历史记录,同时可利用组态王的Web功能使用户能随时随地通过Internet/Intranet实现设备的远程监控。
图11 用户操作界面
试验平台的模拟运行结果表明,该智能照明控制系统满足设计要求,具备良好的可扩展性。
部分程序代码:
uchar csma_ca(void)//载波检测和退避机制
{
uint s=1;
uchar i=0;
uchar ran=0;
uchar j=0;
for(j=0;j<8;j )//重传次数设置为9次
{
if((PIND&RF_CD)==0)//载波检测
{
srand(t);//随机取值R
ran=(uchar)(rand()%s);
ran=ran*30; // D=R×2t
delay_ms(ran);
}
else
{
s=s<<1;//二进制指数退避
srand(t);
ran=(uchar)(rand()%s);
ran=ran*30;
delay_ms(ran);
}
s=s<<1;
if((PIND&RF_CD)==0)
break;
}
if(j<9)
i=1;//CSMA/CA成功
else
i=0; //CSMA/CA失败
return i;
}
4 结论本文将无线传感器网络、OPC DA服务器应用于智能照明控制系统中,实现从用户界面到无线终端的整体控制。经验证,系统安装方便、工作稳定、各部分衔接良好,满足控制要求。此外,系统还易于扩展,具有良好的通用性和一定的可移植性,稍作修改可应用于其他控制领域。
本文编自《电气技术》,原文标题为“基于无线传感器网络的智能照明控制系统”,作者为刘璐、周靖林。