当前位置 : 安防网>安防技术>楼宇对讲>阅读正文

楼宇控制器设计

作者: 时间:2008-10-22

基于嵌入式uC/OS2开发软件的可行性
      系统规模方面:uC/OS2适合小型控制系统[4]5],具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核可编译至2KB,开发者可利用标准uC/OS2先验知识等优势。其编译后目标文件可控制在几百KB 量级。
      实时性方面:uC/OS2是一种免费公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统。其内核提供任务调度与管理、时间管理、任务间同步与通信、内存管理和中断服务等功能。在楼宇控制设备这种实时性应用中,如果采用先进的内核机制,进程调度算法和较小分辨率的系统时间,是可以满足弱实时应用的要求的,因此,uC/OS2可以用于楼宇自动化。
      uC/OS2操作系统当前得到广泛应用的且公开源码的嵌入式操作系统。其采用的是可剥夺型实时多任务内核。可剥夺型的实时内核在任何时候都运行就绪了的最高优先级的任务。uC/OS2中最多可以支持64个任务,分别对应优先级0-~63,其中63为最高优先级。调度工作的内容可以分为两部分:最高优先级任务的寻找和任务切换。其最高优先级任务的寻找是通过建立就绪任务表来实现的。uC/OS2中的每一个任务都有独立的堆栈空间,并有一个称为任务控制块 TCB(Task Control Block)的数据结构,其中第一个成员变量就是保存的任务堆栈指针。任务调度模块首先用变量OSTCBHightRdy 记录当前最高级就绪任务的TCB地址,然后调用OS_TASK_SW()函数来进行任务切换。所以很容易把BACnet协议各种任务妥善分配到内核中。

BACnet协议的软件架构实现
      1、BACnet协议的软件结构基于BACnet协议的体系结构和上面对BACnet控制器功能的分析,可以得出BACnet控制器软件包括以下几个模块:BACnet协议栈,BACnet对象和服务,底层驱动模块,应用逻辑控制模块和控制器配置模块。所以要对uCOS2进行裁减,并把BACnet控制器的一些模块嵌入到uCOS2中,最终的开发软件体系结构如图2所示。
     2、BACnet协议栈的实现
     BACnet协议的分层体系结构支持多种底层通信协议。BACnet网络层功能则是对不同物理层和数据链路层的抽象。在BACnet应用层,定义了标准的对象和服务[6],以实现不同厂家的BACnet产品的互联。因此,从BACnet体系结构的各层协议内容来看,BACnet的体系结构呈"哑铃状",最低层包容不同的通信协议,最高层承接多样的"实体"和应用。在BACnet协议中,BACnet网络层是核心。其应用程序接口(API)应以系统调用(sys-call)的方式提供。对于BACnet的低层协议和应用层则以模块的方式外挂或为系统程序。原因是,对于具体的应用,低层协议通常是固定的,即一旦设备接入BACnet网络,低层通信协议就不会改变,从而形成一个楼宇设备自动化产品。
     3、BACnet对象和服务的实现
     BACnet是驻留在BACnet设备中的数据结构,提供对一个楼宇自控设备的"网络可见"部分的抽象描述[8]。每个对象都有一组属性,描述对象的特征和结构。BACnet对象按照其功能可以分为两类。一类是采集数据的对象,如模拟输入/输出对象。这类对象需要访问设备硬件,对象实现会根据不同设备硬件而变化,因此如果硬件变化,就要重写驱动程序。另一类对象是在采集的数据基础上完成复杂功能,如环对象以及它实现报警事件功能对象。这类对象不需访问硬件。每一种BACnet控制器需要对已实现的对象进行配置。
BACnet服务提供了用于访问和操作设备中BACnet对象的命令,并定义这些命令的格式和内容(即服务原语)。BACnet根据设备功能将不同服务分组得到7个部分:数据共享,报警和事件管理,时间表,趋势记录,设备管理,网络管理,虚拟中断。
      BACnet所定义的通信设备采用ASN.1记法对应用层协议数据单元(APDU)进行抽象表示。但传输层并未完全采用ASN.1基本编码规则。所以 BACnet编码是一种混合的编码方案。其编码的核心是BACnet编/解码器和BACnet标准数据类型,对象和服务原语的抽象数据类型。对于 BACnet对象的处理。不同的BACnet控制器具有不同的BACnet对象集合,且BACnet对象类型较多。这就要求嵌入式系统具有对BACnet 对象进行灵活的配置方式。实现这种灵活配置就需要采用 Ucos2灵活配置的方法,将不同的具体BACnet对象进行抽象,形成 "虚拟BACnet对象"概念。此处的"对象"是BACnet协议中定义的具体对象而言,其作用是管理BACnet协议中定义的具体BACnet对象,是内核提供配置和操作具体BACnet对象的接口。
      4、驱动程序的实现
     BACnet支持多种底层通信协议。在BACnet控制器中,必须为这些通信协议编写驱动程序,在UCOS2系统下将驱动程序以模块的形式存在,能够被动态的加载。对于不同的底层网络,可以灵活的加载不同的驱动程序。
开发设备驱动程序必须对内核有严格要求,其主要内容是根据文件操作数据结构开发相应的设备操作函数,并填写数据结构。若外围设备具有中断功能,则需要开发中断处理函数并安装中断函数。在file_operations的众多函数指针成员中,通常住需要实现read,write,open和release即可;可根据需要实现,增加对外围设备的控制和管理功能。
      5、BACnet控制器应用层实现
    应用逻辑层是建立在嵌入式操作系统之上的具体应用。根据BACnet协议中定义的3个级别的BACnet控制器-楼宇控制器,高级应用控制器,应用控制器 [7],实现不同类别BACnet设备规定的互操作域。这种方式不仅使协议的互操作域开发简单,而且使互操作域的开发具有可管理性。
这5个操作域是:数据共享,报警和事件管理,时序安排,趋势记录及设备和网络管理

上一篇:楼宇控制器功能分析
下一篇:没有了
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册