王振朝,王 亮,田晓燕,庞 姣,黄永平
(河北大学 电子信息工程学院,河北 保定 071002)
智能建筑由楼宇自动化系统(BAS)、通信自动化系统(CAS)及办公自动化系统(OAS)三部分组成,通常被称为3A。其中,楼宇自动化系统是对建筑物内的空调系统、给排水系统、变配电系统、照明系统、供热系统以及电梯等机电设备进行监控管理的控制系统。楼宇自动化系统应该是一个集散式控制、数据共享的控制网络[1]。同时,它作为一种民用普及技术,要求成本低、可靠性高,在技术规格上具有兼容性。
目前用于楼宇自动化系统的组网方法有现场总线、电力线、以太网、无线自组网、WiFi等技术。本技术方案充分利用楼宇内已有的用电线路和以太网,采用ODMA、L-PLC和以太网技术对楼宇自动化系统进行组网。本文以楼宇温度采集为例,设计数据采集节点结合软件编程,从而实现楼宇内无线数据采集和监控的功能。
ODMA(Opportunity Driven Multiple Access)即机会驱动多址接入是一种无线自组网技术,3GPP工作组把ODMA定义为一种ad hoc多跳中继协议[2-3]。ODMA物理层采用IEEE802.11g协议,数据传输速率为0~54 Mbit/s。调制方式是OFDM(正交频分复用),工作频段为2.4~2.483 5 GHz,其有13个工作子信道。鉴于ODMA技术传输速率高、组网灵活等特点,本方案利用ODMA网络进行同楼层组网。然而,由于ODMA网络进行无线多跳通信,跳数越多,信号衰减越大,延时越大,同时增加网络的复杂度并降低通信质量,因此本系统在同楼层建立多个ODMA子网,各子网工作信道不同。管理PC机采用分时机制,通过改变Dongle(ODMA设备)工作信道来控制各子网采集数据。同时,由于其隔楼层通信信号衰减快,通信不稳定,该方案采用L-PLC技术和以太网进行不同楼层之间网络的组建。
低压电力线载波通信(Lower Voltage Power Line Communication,L-PLC)是一种以低压电力线为传输媒介,利用载波方式实现数据传输的技术[4]。本方案采用L-PLC技术,即以楼宇内现有的低压交流供电线路为传输媒介,对不同楼层间的ODMA节点进行组网。
以太网最早由Xerox(施乐)公司创建,于1980年由DEC,Intel和Xerox三家公司联合开发成为一个标准。以太网以价格低、可靠性高、可扩展性好、易于管理等特点成为应用最为广泛的局域网,采用CSMA/CD控制访问法。L-PLC通信环境恶劣,信道传输特性随地点、时间变化剧烈且存在大量强脉冲宽带噪声和多径干扰,是一种很差的通信媒介,因此利用L-PLC通信对组网技术有特定的要求[5]。本方案中,不同楼层间组网结合L-PLC技术和楼宇内已有的以太网,进一步保证通信的可靠性。
本楼宇自动化系统由上位数据管理PC机、ODMA设备、L-PLC设备、以太网和若干个智能节点组成。方案利用ODMA技术、L-PLC和以太网把各节点连接成一个分布式智能控制系统,如图1所示。ODMA设备采用台湾Iwics公司的P212B,Dongle(Dongle是一种ODMA无线网卡,IP地址可设置,用于将PC机接入ODMA网络,通过自带USB口与PC相连);L-PLC设备使用台湾Billion公司的SG2095;智能节点选用Wiznet公司的W7100A网络微处理器芯片为核心进行设计。在监控网络中,PC机通过Dongle接入ODMA网络,从而对整个系统的节点进行集中控制管理。
图1 分布式智能控制系统
本文以楼宇温度采集为例,设计数据采集节点。硬件结构框图如图2所示,包括温度传感器、W7100A控制模块、ODMA接入模块。
DS18B20是美国DALLAS半导体公司生产的可组网数字式温度传感器,它是一种单总线设备,共有3个管脚(接地,数据输入输出,接+5 V电源)。在本节点中,DS18B20的数据输入输出管脚可以直接与W7100A芯片的P0~P3中的任意管脚连接,本设计选用P0_7。
图2 数据采集节点
W7100A控制模块包括数据处理模块和数据传输模块,该模块电路以W7100A芯片为核心进行设计,W7100A是一款功能强大的网络微处理器,它包含一个8051兼容的MCU内核、64 kbyte的SRAM、高性能的硬件TCP/IP协议栈[6]。在系统中,MCU实现数据处理的功能,即控制温度传感器采集数据并与TCP/IP内核进行数据交换。TCP/IP内核完成数据传输的功能,即收发网络数据以及与MCU交换数据。
种子(P212B)是ODMA接入模块的核心设备,种子具有标准以太网接口,通过交叉网线与控制电路RJ-45接口相连。嵌入固定的IP地址,有13个工作子信道可选,传输速率为0~3.5 Mbyte/s。种子具有无线中继的功能,可通过增加种子的数量来扩大ODMA网络的覆盖范围。同时种子也可以作为无线接入点,将网络设备接入ODMA网络[7]。
在系统中,温度传感器采集温度数据并通过单总线把数据传给W7100A控制模块,W7100A控制模块对数据进行处理并通过网线将其传给种子,最后数据通过种子被传到ODMA网络中。
智能节点的软件设计包括W7100A初始化、数据通信、数据采集。该部分的软件编程采用单片机编程,在Keil环境下完成。
W7100A初始化分3个步骤:设置8051MCU,网络信息和内部TX/RX存储器。
8051MCU设置包括开中断、定时器设置、存储器访问时间设置和将全部I/O置高电平等。定时器模式设置如下:
网络信息主要包括智能节点和目的主机的IP地址、端口号、网关、子网掩码等数据。网络中每一个智能节点对应唯一的IP地址。由于W7100A芯片嵌入了硬件的TCP/IP协议栈,不需要编写网络协议,只需调用相应的寄存器就可完成网络信息的设置。内部TX/RX存储器大小采用默认设置,即2 kbyte。
数据通信实现网络数据接收、将智能节点采集的数据发送到目的主机的功能。本系统采用UDP的通信模式,UDP是一种不面向连接的、不可靠的通信协议,但是它传输速度快、传输实时性高。通过设置标记符可有效解决其传输不可靠的问题。接收到的网络数据首先存入TCP/IP内核的RX存储器中,然后调用wizmemcpy函数将数据存入到外部存储器中,wizmemcpy函数用于快速处理数据的接收和发送,实现数据在TX/RX和MCU内核之间的传送。MCU内核接收命令采集数据并将数据传送给TCP/IP内核的TX存储器,TCP/IP内核再将采集到的数据发送到目的主机。函数类型如下:
void wizmemcpy(unsigned long fsrc,unsigned long fdst,unsigned int len);
数据采集功能由DS18B20完成,工作时钟采用12 MHz,温度采集程序流程图如图3所示。DS18B20数字温度计提供9位(二进制)温度读数,经过单总线接口与主机CPU进行信息交换。每一个DS18B20的应用程序首先要初始化,然后主机CPU进行设备搜索,记录每个DS18B20的序列号。如果总线上有多个DS18B20,主机CPU需要每次使用序列号识别设备。在该智能节点中,DS18B20的初始化是通过W7100A芯片的MCU内核发布复位命令实现的。由于该节点中只有一个温度传感器,因此不需要序列号的识别而直接发送转换命令。
图3 温度采集程序流程图
PC控制端的软件采用Windows套接字(Socket),UDP工作模式,在VC++环境下编程实现。套接字最早是由美国伯克利大学推出的,是一种用于开发网络应用程序的非常有效快捷的工具[8]。
PC控制端应用程序使用套接字完成网络数据的接收和发送。该程序通过套接字与网络驱动程序连接,首先在应用程序中创建套接字。然后通过绑定本机IP地址和端口号与驱动程序建立联系。应用程序把数据送给套接字,由套接字交给驱动程序并发送到网络中。同理,计算机从网络上收到与套接字绑定的IP地址和端口号的数据后,由驱动程序交给套接字,应用程序便可从该套接字中接收数据。最后实现收发功能并关闭套接字。
首先PC控制端发给智能节点一个命令标记符(本程序中命令标记符为“0”),然后智能节点接收到数据并进行判断,如果数据为“0”,则判断是来自PC控制端的命令,采集数据并传给PC控制端;如果不为“0”,则继续等待接收数据。
PC机通过Dongle接入ODMA网络,控制智能节点采集温度参数。Dongle有13个工作子信道,只有保证其工作信道与ODMA网络在同一通信信道中,才能实现PC端的控制功能。在系统中,同楼层有多个ODMA子网(工作信道不同),PC控制端采用分时机制,通过改变Dongle(ODMA设备)工作信道来控制各子网采集数据。一般通过人工配置工作信道,配置工作繁琐。本文设计了Dongle信道自动匹配的程序,该程序通过自动搜索ODMA子网的工作信道并与之匹配,信道匹配灵活且大大减少了工作量,程序流程如图4所示。
图4 信道匹配程序流程图
该程序通过MFC中的注册表相关库函数和基于ICMP协议的套接字编程实现。 首先,调用的Registry Functions函数查询本机的IP地址,Dongle工作子信道。用到的函数有:RegOpenKeyEx(),RegQueryValueEx(),RegSetValueEx()等。然后,执行Ping指令过程。
创建原始套接字,可通过以下语句实现:
socket(AF_INET,SOCK_RAW,IPPROTO_ICMP);
设置目的套接字地址,初始化ICMP报头,向目的地址循环发送32个ICMP数据包(sendto),并等待接收目的端返回的报文(recvfrom)。如果收到目的端返回的报文,则说明Dongle与ODMA网络已连通,该Dongle的工作信道即为ODMA网络的信道。如果Ping不同,则修改注册表中Dongle的工作子信道(信道依次递增),继续执行Ping指令,直到Ping通为止,最终确定ODMA网络的工作信道。
测试地点选在河北大学电信学院实验楼的103,237,239和337室,按图1进行组网,使用PC端控制软件和Dongle信道匹配软件对系统进行测试。
在测试中,同一楼层组建2个ODMA子网,不同楼层间的2个ODMA子网分别通过L-PLC和以太网连接。选定9:00~9:30,15:00~15:30和21:00~21:30这3个时间段(各时间段室内温度依次为:15℃,22℃,10℃),分别进行100次测试,通信成功率达到100%,温度采集误差为0.5℃(由于系统针对楼宇进行温度采集,对温度精度要求不高,故采集的温度只保留整数位,小数点后四舍五入),传输延时约为50 ms。15:00~15:30时间段采集到的温度数据在管理PC机端上的显示如图5所示,“0”为命令标记符,每个智能节点1次连续采集5个温度值(22℃)传给PC控制端。结果表明该系统可以完成既定的控制任务。
图5 控制端应用软件温度采集(截图)
本文提出一种基于ODMA、低压电力线和以太网技术的楼宇自动化系统设计方案。该方案成本低、网络易扩展、无须重新布线,且数据传输可靠性高。利用W7100A芯片设计具有数据采集、网络通信的智能节点,各节点能够采集数据实时传输。通过软件编程实现Dongle工作信道与所接入的ODMA网络信道自动匹配的功能。经过对系统进行测试,证明该技术方案可行,达到预期的设计目标。
[1] 王振朝,马金龙,薛文玲,等.基于LonWorks和L-PLC的楼宇自动化系统设计[J].低压电器,2009(6):22-26.
[2] CHENG R G,CHENG S M,LIN P.Power-efficient routing mechanism for ODMA systems[J].IEEE Trans.Vehicular Technology,2006,55(4):1131-1139.
[3] Opportunity driven multiple access[EB/OL].[2012-10-25].http://en.wikipedia.org/wiki/Opportunity_Driven_Multiple_Access.
[4] 王振朝,侯慧然,甘玉涛.基于混沌理论的低压电力线通信信道建模研究[J].电测与仪表,2007(8):20-24.
[5] 王振朝,张俊林,师洁.低压PLC信道特性研究与新型调制解调算法探讨[J].电测与仪表,2006(6):5-8.
[6] 成都浩然电子有限公司.W7100A数据手册(中文版)[EB/OL].[2012-10-16].http://www.hschip.com/down.
[7] PARROT 212B Datasheet[EB/OL].[2012-10-18].http://www.iwics.com/Technology/PARROTS/P212B.shtml.
[8] 孙鑫,于安萍.VC++深入详解[M].北京:电子工业出版社,2006:529-530.