基于STC89C58RD+单片机的空调网络管理系统的控制终端设备设计
扫描二维码
随时随地手机看文章
在学校等单位,分散安装空调存在随意开、通开造成的电能浪费现象,这不仅增加了单位的运作成本,同时还给管理增加了难度。为解决此问题,利用STC89C58RD+作中央处理器、rtl8019as作网卡、TCP/IP为通信协议,设计一款空调网络管理系统的控制终端设备。便于管理人员通过空调网络管理系统的操作,实现在网络上对空调(受控设备)的开、关实施控制,也便于通过空调网络管理系统了解空调(受控设备)的运行状态,并随时加以管理控制。从而达到节能降耗和节支增效的经济、高效的IT管理模式,具有理论意义和应用价值。
1 硬件
1.1 终端主机电路
整个电路分为电源、网络接口、数据处理和控制I/O接口等四部分。电源由一个DC 9 V输入,分别用78L05和78L06两个集成稳压器分成+5 V和+6 V的分支电源。+5 V电源为控制终端提供电源;+6 V电源作为光电耦合器的启动电源,以便在光电耦合器的动作过程中,不影响主机的工作。服务器通过英特网接口与终端交换信息,再由控制终端通过I/O接口控制或获取空调(受控)设备的即时状态。其结构框图如图1所示。
1.2 主要元器件
线路板主要由网络变压器FB2022、高度集成的以太网控制器RTL8019AS、锁存器74HC573、静态RAM存储器62256、主控制STC89C58RD+等芯片,RJ45接口和几组光电耦合器以及一些外围元器件组成。其中,主控芯片STC89C58RD+内部资源[1]包括:32 KB内部闪存;1 280 B片内RAM数据存储器;工作频率0~35 MHz(相当于普通8051的0~420 MHz);有内部看门狗电路,解决了外界影响带来的“死机”问题;具有4级8个中断源,提供2个额外的外部中断机制和4组I/O口等。此外,还有宽电压,低功耗,与其他8051完全兼容的特点。RTL8019AS为台湾芯片生产商ReaLTEk公司针对第三代快速以太网连接而设计,它支持多种嵌入式处理器芯片,内置FIFO缓存器用于直接发送和接收数据。RTL8019AS支持以太网II和IEEE802.3;软件兼容8 bit和16 bit的NE2000。对于没有很复杂数据流处理的本控制终端机来说,低廉的造价也能够达到较理想的网络系统管理效果。
1.3 硬件控制实现
控制终端与空调间用光电耦合器连接,当控制终端接收到系统“电源开”指令时,相应的光电耦合器闭合,打开空调电源,此时空调处于伺服状态,面板上的电源指示灯亮,等待系统或遥控器等发送“运行”指令。同时,因空调电源指示灯打开而相应的光电耦合器导通,把空调的即时状态信息通过控制终端处理后传给系统。空调进入伺服状态后,如果接收到系统或其他方式的“运行”操作指令时,空调就开始运行,面板上的“运行”指示灯亮。同时因面板“运行”指示灯亮而相应的光电耦合器导通,把空调的“运行”状态信息通过控制终端处理后传给系统。当控制终端接收到系统“电源关”的指令时,将关闭空调的运行状态,并且切断空调的电源。此时空调处于完全停止状态,遥控及受控设备本身的任何硬件按钮操作均无效。就这样,基于TCP/IP协议的可靠通信连接,控制终端随时等待着执行服务器给它的系统指令,并周期性地把受控设备的即时状态信息反馈给服务器。在试验中,如表1所示为用LED模拟空调设备,由不同IP和端口的两个终端与同一台服务器相连得出的实验结果。当控制终端接收到系统发来的指令“1”时,空调“总电源”开启,LED1亮,同时向服务器反馈“电源开”的信息。在“电源开”的状态下,控制终端接收到系统指令“2”时,空调“总电源关”,LED1灭;接收到系统指令“3”、“4”时,控制终端和负载相应的动作是“运行、LED2亮”、“停止、LED2灭”。当“总电源关、LED1灭”后,没有收到系统指令“1”时,其他任何指令对负载的控制无效,终端状态灯无显示,同时反馈给系统的信息为“关闭中”。
1.4 安全控制原理
在同一管理系统内,每一个控制终端都固化唯一的物理地址(MAC)、本地IP地址和端口号,除了只与本身固有IP地址的服务器相应端口通信外,不与其他微机发生关系;终端与终端之间也不会有任何干扰。其他PC主机在权限范围内可以通过服务器浏览或操作系统中各控制终端的设备状态。这样有利于设备运行的安全性和可靠性。如需系统维护,也只需将安装好空调管理系统的备用服务器的IP地址更改成控制终端对应服务器的IP地址即可。
2 TCP/IP的移植引用
2.1 开源TCP/IP的选择
从来自不同出处的资料显示,移植TCP/IP到8 bit低端处理器上,如uIP等不同版本TCP/IP栈的移植已有很多成功的案例。本控制终端的网络接口实现,是成功地移植引用了ZLIP版的TCP/IP协议栈[2],其显着特点是:
(1)有适中的代码量和RAM使用量。使用22.118 4 MHz晶振、KeilC编译器、STC89C58RD+单片机下测试的技术参数如表2所示。
(2)与BSD套接字基本相同,接口简单,使用方便。
(3)支持PINg命令的响应。
(4)本身为单片机设计。所有的外部变量都使用了 xdata类型,全部指针都为明确存储类型的指针,需要重入的函数已经声明为reentrant,减少了重入函数在内存中的滞留。
2.2 网络通信的实现
(1)ZLIP栈符合BSD标准,定义一个套接字类型的全局变量“ExConn”,创建套接字。即:
ExConn = TCPSocket(IPAddr);
(2)写函数void OnACCeptRecv(void DT_XDATA* buf,WORD size)REENTRANT_MUL作为连接函数的参数,以便数据传输的有效对接。
(3)通过调用函数TCPConnect(ExConn,0xc0a80002, 55000,OnAcceptRecv,OnClose)主动与IP“192.168.0.2(IP地址的十六进制表示为0xc0a80002)”相匹配的服务器进行连接。获得服务器分配相应的“55000”端口进行套接,实现收发数据和关闭连接的接口,从此进行正常通信。
(4)主动与服务器进行连接,提高系统管理的可靠性和安全性。如遇服务器故障或关闭,终端会周期性发出ARP广播,直到重新正常连接。
3 软件的实现
3.1 网卡驱动的引用及更改
3.1.1 网卡驱动基地址的更改
因为硬件的线路板设计有差别,将ZLIP里的RTL8019.H的基地址宏定义0xb000改成0x8000(#define RTL_BASE_ADDRESS 0x8000)。
3.1.2 网卡复位启动
添加函数:
void rtl8019as_rst()
{
unsigned int idata i;
reset8019=1;
for(i=0;i<250;i++); reset8019=0;
for(i=0;i<250;i++);
}
终端上电时,采用冷启动复位,便于终端即时初始化网卡。
3.1.3 控制终端主程序
终端上电,初始化各模块后,通过创建的套接字主动去与服务器对接,然后向服务器发送准备就绪的信号,周期性地检测与服务器连接的情况,静静地等待服务器的指令和观察受控设备的状态。一旦情况有变,就立即执行相应的动作。终端工作流程图如图2所示。
3.2 控制管理的实现
3.2.1 管理设备电源
受控设备的电源只有一种开通方式:即系统管理员通过服务器的“电源开”指令操作。其他任何形式和个人(专业维修人员除外)在没有授权的前题下操作均无效。
3.2.2 受控设备的状态管理
系统管理员可随时从空调网络管理系统中了解到设备的开启运行状况,对有异常的设备及时向工程维修中心发送维修申请,然后由维修中心解决出现的异常。其他人员可以通过系统平台浏览设备运行状况,递交设备使用时段申请文件,请求系统管理员给予使用时效权。空调(受控设备)电源一旦开通,就给使用者充分的使用权限,让其自由使用。这样,既给使用者充分的自由,又给管理带来了方便,就基本上杜绝了随开、乱开、通开的电能浪费的现象。从而提高了设备的利用率和完好率,令其运行于经济、高效的网络系统管理模式下。
单片机的应用有利于产品的小型化、多功能化和智能化,有助于提高劳动效率,减轻劳动强度,改善劳动环境,减少能源和材料消耗,保证安全等。本控制终端是作为单一的客户端设计,把系统管理中大量数据处理及存储的工作交给服务器去做。这样大大节省了控制终端的资源,降低了负荷,让控制终端专注于处理服务器发来的指令并按要求对空调加以控制。同时,把受控设备的运行状态及时传送给服务器,让系统管理员随时掌控系统中各空调的运行状态。基于程序结构简单、硬件结构合理、造价低廉且安装方便的空调网络管理系统控制终端,仅对空调小作改进,即可轻松把已有的设备纳入统一、高效的智能化管理,让“物尽其用、物尽其能、物有所值”。
参考文献
[1] 宏晶科技.8051系列单片机选型[DB/OL].http://www.mcu-memory.com/stc-mcu-select-1.htm.
[2] 李章林.ZLIP使用简介[DB/OL].[2