APP下载

基于以太网和CAN总线的楼宇自动化系统设计

2012-07-13顾俊卿张福斌

电子设计工程 2012年16期
关键词:寄存器以太网上位

顾俊卿,张福斌

(西北工业大学 航海学院,陕西 西安 710072)

随着现代化城市建设的发展,出现了越来越多的高层建筑,如何统一管理和监控建筑内公用的机电设备,成为当今楼宇自动化研究的热点方向之一 。以“分散控制,集中管理”为基本思想,设计了一种基于以太网和CAN总线的楼宇自动化控制系统。采用分层管理和控制,与传统控制结构相比,每个现场设备节点都具有通信和控制能力,各自可以独立控制而不依赖于主控计算机,同时也具有简单的故障自动修复功能,因而只要控制规律确定以后,平时主控机只需要监视设备节点既可,这样就提高了整个系统的自动化水平。所选的以太网和CAN总线的组合,相比其他总线,软硬件技术成熟、安全可靠、传输速度快且成本低廉、易于扩展和维护。

1 网络结构设计

系统结构如图1所示。系统设计两层网络,第1层是以太网,由路由器和交换机组成,负责连接主控机和各个区域的上位机,各上位机内嵌简单的TCP/IP协议栈,通过以太网将其下的设备节点的状态实时的反馈到主控机中,也可以接受主控机发送出的控制指令。以太网提供了冗余网络结构,主控机的位置可以随时移动,通过新的路由器接入网络即可。第2层是CAN网络,由CAN控制器和收发器组成,负责连接设备节点,将采集到的数据传送至上位机,并接收上位机的命令消息。由于上位机实际上起到了一个网关的作用,因此两层网络结构扩大了通信的带宽,减轻了总线的负担。再加上CAN特有的非破坏性总线仲裁技术,即使在网络负重很大的情况下,也不会出现网络瘫痪情况。

2 硬件方案

上位机以NXP LPC2478为主芯片,由电源稳压模块、以太网收发器,隔离变压器、CAN收发器等组成。LPC2478以ARM7为内核,它包括1个10/100以太网媒体访问控制器(MAC)、1个带 4 kB终端 RAM的 USB全速设备/主机/OTG控制器、4个UART、两路CAN通道、1个SPI接口、2个同步串行端口、3个I2C接口和1个I2S接口。同时还带有1个4 MHz的片内振荡器、98 kB RAM、以及一个外部存储器控制器来支持上述的各种串行通信接口[1]。电源稳压模块将输入电源电压滤波并稳定在3.3 V左右,可以防止电压瞬时的下降导致的程序跑飞。CAN收发器采用PCA82C250,以太网接口用常见的的RJ45型网线接口。

设备节点使用STC89C52单片机作为微控制器,外扩SJA1000为CAN控制器,为便于调试,扩展电平转换芯片MAX232作为备用调试通道。根据不同需要,还要连接不同的传感器和其他执行机构,比如中央空调系统,可连接DS18B20温度传感器将温度采集并以数字量直接传送给STC89C52[2],STC89C52则按预先设置好的方案,控制压缩机工作。必要时可以由主控机发送控制命令,修改预先设置的方案参数。

图1 BAS网络结构Fig.1 BAS net layout

将上位机的网口连接至交换机网口,路由器的LAN口也和交换器连接,路由器的WAN口连接进入楼宇局域网。

3 软件架构

软件由主控机人机接口界面、上位机软件、设备节点软件组成。上位机软件包括嵌入式TCP/IP协议簇、以太网收发软件包、CAN收发软件包等,设备节点软件包括CAN模块、数据采集分析模块等组成。

3.1 移植μC/OS-Ⅱ实时操作系统的方法

上位机既要和主控机通信,又要负责管理下属的设备节点,负载较大。移植μC/OS-Ⅱ操作系统可以使上位机具有多任务运行的功能。μC/OS-Ⅱ是一个完整的,可移植、固化、裁剪的占先式实时多任务内核。它包含了任务调度、任务管理、时间管理、内存管理和任务间的通信和同步等基本功能。μC/OS-Ⅱ采用的是可剥夺型实时多任务内核,可剥夺型的实时内核在任何时候都运行就绪了的最高优先级的任务。

在ARM下移植μC/OS-Ⅱ操作系统主要是修改μC/OS-Ⅱ中一部分与CPU相关的汇编代码,这里主要是任务上下文的切换代码。

任务切换发生在任务调度的时候,μC/OS-Ⅱ下任务调度的时机主要有以下几种情况:1)高优先级的任务因为需要某种临界资源,主动请求挂起,让出处理器,此时将调度就绪状态的最高优先级任务并执行。2)高优先级的任务因为时钟节拍到来,在时钟中断的处理程序中,内核发现更高优先级的任务就绪,获得了执行条件,则在中断后直接切换到更高优先级任务执行[3-5]。

任务切换就是保存前一个任务的基本信息,同时读取新任务在上一次被切换时保存的这些信息。调度器将前一任务的上述信息保存在该任务的栈空间中,其目的是为了下次运行时能够恢复到被切换时的状态,调度器将从该任务的栈空间中读取上述信息,从而从该任务上次被中断的位置继续执行,其基本过程如下[3-5]:

1)将当前任务的PC位置、通用寄存器数据、CPU状态入栈。

2)将全局变量OSPrioCur(当前任务优先级变量)的值修改为全局变量OSPrioHighRdy(最高优先级任务优先级)的值,即把最高就绪任务优先级设置为新的当前任务优先级。

3)将原任务TCB的第一个成员(指向栈顶的指针*OSTC B-StkPtr)的值修改为当前SP寄存器的值,以便再次返回。

4)获取最高优先级的任务控制块中第一个成员(指向堆栈栈顶指针*OSTCBStkPtr)的值并将其保存到SP寄存器中。

5)将OSTCBCur的值修改为新就绪最高优先级任务的任务控制块地址。

6)将新任务的PC地址、通用寄存器数据、CPU状态出栈,开始执行新的任务。

因为任务切换是将当前任务的基本信息保存起来(入任务栈),并加载新任务的基本信息(出栈),而这些信息很大一部分都被存储在CPU的寄存器中,因此根据处理器的不同,此函数在实现上略有差异,一般都采用汇编语言实现。

3.2 编写设备驱动程序

设备驱动程序主要包括以太网和CAN软件包,以太网驱动主要是初始化LPC2478内部以太网模块的一些重要的寄存器如MAC配置寄存器、MAC地址寄存器、命令寄存器、状态寄存器、中断状态寄存器等等。以太网模块内部采用DMA方式读取数据,分别使用接收、发送描述符数组来表示接收和发送的数据块[6]。以太网模块发送和接受数据的流程如图2所示。

图2 以太网模块发送和接收数据流程Fig.2 Sending and receiving process of Ethernet module

CAN的初始化包括初始化时钟分频寄存器,同时选择能支持扩展帧的PeliCAN模式[7],设置接收中断,采用中断来接收数据,设置总线时序寄存器、输出控制寄存器等。初始化CAN流程图如图3所示。

图3 初始化CANFig.3 Initialization of CAN

3.3 嵌入式TCP/IP协议栈的实现方法

嵌入式TCP/IP协议栈同样由套接字来实现,主要包括IP、ARP、ICMP、TCP、UDP 协议等等。 TCP/IP 模型结构分为 4层,由上到下分别是:应用层、运输层、网络层、物理和数据链路层[8-9]。数据从应用层发出,经过套接字封装,传输至数据链路层,交由以太网发送模块处理。同样的,以太网接收模块收到的数据,经过解包,最终交由应用层接收。考虑到系统实时性,我们采用UDP传输协议进行数据和命令的传送。编写UDP通信的任务时分为服务器方式和客户机方式两种,服务器方式是先接收到数据再进行处理,而客户机则是先发生数据,然后等待回应处理[10]。UDP进程的流程如图4所示。

图4 UDP进程流程图Fig.4 UDP process

数据报的接收是通过一个任务来进行的。该任务优先级较高,可以通过时间片来触发,也可以通过中断来触发。Rec_Packet()函数是底层的驱动程序函数,它在接收时调用了Rec_Ethernet_Packed()函数进行以太网层处理,而Rec_Ethernet_Packed()函数又调用了 IP_PROCESS()函数。IP层的处理由IP_PROCESS()函数执行,它将UDP报通过消息队列交给UDP处理任务去执行。

数据报的发送与数据报的接收是一个相反的过程,是由上层协议函数调用下层协议函数来进行的。上层UDP处理函数或Socket接口函数都是通过调用Send_Ip_Frame()函数来发送IP报的,而Send_Ip_Frame()函数则调用Send_Ip_To_LLC()函数来处理IP地址对应MAC地址的事情,然后 Send_Ip_To_LLC()再调用 Send_Ethernet_Frame()函数,把对应的MAC地址写入发送区,最后调用驱动程序的发送函数 Send_Packet()。

4 关键部位实验验证

设备节点样机如图5所示,它带有一个DS18B20数字温度传感器,实时将温度数据通过CAN传输至上位机,再通过局域网传至主控计算机;具有多路I/O接口(可外接继电器),能接收上位机命令改变I/O口的输出。上位机使用ARM核心板外扩通信接口作为实验板,主控机使用路由器接入,控制界面由VC++编写。实验时将IP地址设为一固定的私有IP,网关IP设为内置交换机的TP-LINK路由器IP,设置好路由器工作方式后即可运行。以温度采集与继电器控制为例,验证了主控机对设备节点的监控和管理功能,表明该方案技术切实可行。

图5 设备节点样机Fig.5 Control node for test

5 结束语

提出了一种实时性较高、实用性较强的楼宇自动化控制系统解决方案,并对关键技术进行了验证。系统技术成熟,易于维护和扩展,可以将建筑内各种机电设备的信息进行分析、归类、处理、判断,对各系统设备进行集中监控和管理,使各下属设备协调有序的工作,并及时处理故障。

[1]周立功.深入浅出ARM7—LPC2400[M].广州:广州致远电子有限公司,2008.

[2]郑锋,王巧芝,王鼎媛,等.51单片机应用系统典型模块开发大全[M].北京:中国铁道出版社,2010.

[3]杨宗德,张兵.μC/OS-Ⅱ标准教程[M].北京:人民邮电出版社,2009.

[4]Labrosse J J.MicroC/OS-Ⅱ The Real-Time Kernel[M].邵贝贝,译.2版.北京:北京航空航天大学出版社,2003.

[5]陈是知.μC/OS-Ⅱ内核分析、移植与驱动程序开发[M].北京:人民邮电出版社,2007.

[6]周立功.ARM嵌入式系统应用技术笔记—基于LPC2400[M].广州:广州致远电子有限公司,2008.

[7]铙运涛,邹继军,王进宏,等.现场总线CAN原理与应用技术[M].2版.北京:北京航空航天大学出版社,2007.

[8]Forouzan B A,Fegan S C.TCP/IP协议族[M].3版.马海军,吴华等,译.北京:清华大学出版社,2006.

[9]Chappell L A,Tittel E.TCP/IP协议原理与应用[M].马海军,吴华等,译.北京:清华大学出版社,2005.

[10]周立功.ARM嵌入式系统软件开发实例1[M].北京:北京航空航天大学出版社,2005.

猜你喜欢

寄存器以太网上位
STM32和51单片机寄存器映射原理异同分析
基于1500以太网养猪场的智能饲喂控制系统的设计与实现
Lite寄存器模型的设计与实现
特斯拉 风云之老阿姨上位
谈实时以太网EtherCAT技术在变电站自动化中的应用
“三扶”齐上位 决战必打赢
基于ZigBee和VC上位机的教室智能监测管理系统
一种90W高功率以太网供电系统的设计
以新思路促推现代农业上位
浅谈EPON与工业以太网在贵遵高速公路中的应用