开源自动化控制软件Sedona在物联网中的应用※

2012-06-25 02:46:08邱旭华
单片机与嵌入式系统应用 2012年12期
关键词:工具包图形化开发者

邱旭华

(公安部第一研究所,北京 100048)

引 言

如何在不更换设备的情况下,让嵌入式智能设备和系统协调工作并且更好地管理是每个集成商和用户所面临的关键问题。Sedona软件解决了这一问题。Sedona软件为开发、部署、集成和管理无处不在的最底层的智能设备应用提供完整的软件平台,为廉价的设备提供可编程控制和连接Internet的能力。Sedona框架的分布式决策系统可以使所有的设备都具备控制和管理的能力,连接到网络的任何地方。

1 物联网简述

物联网(Internet of Things)概念是2005年正式提出来的,是互联网的延伸。它是一个基于互联网、传统电信网等信息的承载体,让所有能够被独立寻址的普通物理对象实现互联互通的网络。它具有普通对象设备化、自治终端互联化和普通服务智能化3个重要特征。

在物联网应用中有两项关键技术:传感器技术和RFID标签。

编者注:关于物联网特征、关键技术及展望的详述略。

2 Niagara AX平台

随着物联网技术的迅速发展和应用,如何使各种智能设备连接IP网络并融入上层的应用系统,就变得至关重要。Tridium公司所研发的Niagara AX平台正是用于解决设备连接应用的软件框架平台。它创造了一个通用的环境,几乎可以连接任何能够想到的嵌入式设备或系统,而不用太多考虑这些设备的制造厂家和所使用的通信协议。其关键在于Niagara AX可以与各种设备和系统通信,将它们的数据和属性转换成为标准的软件组件,通过大量基于IP的协议,支持XML的数据处理和开放的API,为企业级应用提供无缝的、统一的设备数据视图。图1表示的是一种多对一架构的Niagara AX平台。

通过转换各种外部设备和系统的数据成为规范的软件组件,Niagara AX创造了一种开发架构,大大优于基于网关集成的多对多的复杂架构。这种优势体现在任何的设备和系统通过Niagara AX规范,就可以兼容其他连接到应用框架的设备和系统,为企业级应用提供真正的系统内的互操作能力和统一的数据呈现。开发者不再需要花费时间去创建、测试和重复验证各种网关设施。图2是传统的多对多系统结构。

图1 多对一架构的Niagara AX平台

图2 传统的多对多系统结构

3 Sedona及其应用

Sedona是一个开源自控软件体系框架,由Tridium公司研发,包含Sedona语言、Sedona工具包、Sedona虚拟机、Sedona编译器、Sedona图形化开发调试工具等部分,于2009年8月正式推出第1版,并开放源代码。

Sedona语言继承了Java、C#等面向对象语言的特点,使得开发非常简单,而实现的功能又非常强大。以Sedona工具包形式发布的控制逻辑模块,实现了“一次开发、随处可用”的目的,大大降低了用户的应用难度,同时也使很多行业应用经验得到很好的积累与发展。Sedona虚拟机(Sedona Virtual Machine,SVM)专门针对楼宇自控设备进行了优化,能高效地运行在只有100KB左右内存的小型嵌入式设备上,并且实时性能得到很好的保证。采用Sedona图形化开发工具进行在线实时开发调试,用组件模块的方式简单拖拽各种所需功能,并进行数据流向和控制逻辑的连线,就可以立刻完成用户的应用逻辑开发,还能实时看见反馈结果,使用户开发业务控制逻辑非常简单、直观,大大降低了用户使用难度。

3.1 Sedona工作流程

图3所示的流程列举了在楼宇智能控制器上开发Sedona应用程序的整个过程。在Sedona软件架构下进行开发,有两种角色:一种是开发者(Developer),另外一种是集成者(Integrator)。虽然在实际工作中不可能将这两种角色区分得很清楚,并且大多数情况下用户是用两种角色配合来完成工作的,但在这里区分这两种角色将有助于对Sedona软件框架的深入讨论。

图3 Sedona开发工作流程图

(1)开发者角色

该角色主要是指软件开发工程师,他们负责用Sedona编程语言开发各种Sedona应用组件模块,如行业特殊应用功能模块、设备I/O驱动模块、特殊算法模块等等。组件模块开发好以后将以工具包(kit)的形式进行发布,这样有利于版本的管理,同时也便于行业经验的积累和延续。

(2)集成者角色

该角色主要是指某个行业或领域的专家,通常他们只需要在如图3所示的图形化开发工具里,将开发者发布的工具包中所需要用到的组件模块拖拽到工作区,然后用连线方式将所选择的组件模块按照业务数据流程或者控制逻辑关系连接在一起,就完成了数据处理和控制逻辑的工作。对于开发者发布的每个组件模块,集成者还可以通过属性来配置和调整其实现功能的各项参数,以满足具体应用的需要。这样对于没有软件开发经验的行业专家来说,Sedona允许他们采用组件模块的方式来积累并延续行业经验,并且以图形化的方式让用户进行模块的简单连线组合,这就为行业专家在各自的领域中进行创造性应用奠定了坚实的基础。

3.2 开发者工作流程

开发者的工作流程通常按如下步骤进行:

① 用面向对象的Sedona编程语言编写Sedona组件,用于实现某种功能或者算法。

② 用sedonac编译器工具将Sedona组件源代码编译成工具包。在编译的过程中,工具包里所有包含的类都要先进行有效性检查,然后才被编译成一种特殊的中间格式代码(Intermediate Representation,IR)。IR就像是Sedona的汇编语言一样,它的引入使得用Sedona语言开发的组件或者应用有了很好的移植性,因为用IR实现的用户逻辑代码直到最后才会针对某个具体应用平台编译成对应的二进制Sedona虚拟机指令,这样就能让开发好的工具包适应所有的平台,而不需要在不同平台之间进行多次编译。在编译的同时,该编译器也能针对每个类产生标准的Java classfile文件,从而可以在Java虚拟机上直接运行Sedona应用代码,以便于开发者利用Java的开发调试工具对应用组件进行开发调试,大大提高开发效率。

③ 开发者将组件以工具包的形式发布,由集成者选择将哪些工具包安装到最终的设备上去,这样就由sedonac工具将这些工具包编译成二进制的scode映像文件(这一步通常由工具自动完成)。集成者选择的工具包决定了在设备上能使用的组件功能,这样的自由选择能力,大大提高了设备的适用范围,使得集成者可以根据具体应用环境进行灵活的裁剪。

④ 将Sedona虚拟机和scode映像文件加载到设备上运行。这些文件既可以预先保存在设备的ROM上,从而在设备上电之后直接运行,也可以由集成者临时选择,通过网络用SOX协议动态加载。这样就使得集成者能非常灵活、方便地根据不同需求进行现场定制。

3.3 集成者工作流程

在开发者将基本的组件模块设计好并发布出来之后,就可以让集成者自行进行设备功能的开发与定制,从而用标准的开发方式实现统一的“分散控制”思想。通常集成者是某个领域或者行业的专家,他们用图形化工具,灵活地选择哪些工具包用在设备上,然后选择需要的控制组件拖拽到工作区上,依据组件之间的数据流向或者控制逻辑关系,采用连线的方式将它们组织在一起,从而实现最终的应用程序。

采用图形化的工具来设计应用程序,既可以在现场直接连接设备,实时地用SOX协议对设备进行开发,直接观察到设备的运行效果;又可以离线进行设计,然后将应用程序保存在“sax”文件里,之后在需要更新设备的时候用sedonac工具将其编译成“sab”文件,并用SOX协议将编译后的程序传输安装到设备上,完成应用程序的更新。

3.4 控制逻辑实现

在Sedona开发软件中并没有现成的组件可以实现楼宇自控系统中风机的控制逻辑。虽然可以利用其基本的各种逻辑控制组件实现控制算法,但这里介绍如下步骤,让开发者能很容易地开发用户自定义的控制逻辑组件。

① 以3.4.43版本的软件为例,假设应用软件安装在“C:\Niagara\Niagara-3.4.43”下根目录,后面为表述方便,将根目录简述为{Root}。

② 在{Root}\sedona\src目录下创建一个新的工具包目录,这里取名为LongDHuaTools。

③ 在{Root}\sedona\src\LongDHuaTools目录下创建“kit.xml”文件,该文件是用来描述编译器编译时所需要的相关源代码目录及其他信息,详细的内容如下:

④ 在{Root}\sedona\src\LongDHuaTools目录下创建“Fan.sedona”文件,该文件是用户自定义风机控制逻辑的源代码文件,详细的内容如下:

⑤ 启动一个DOS命令行窗体,转到{Root}\sedona\src\LongDHuaTools目录下,输入如下命令执行编译的过程:

⑥ 在经过上述5个步骤之后,将会自动创建{Root}\sedona\kits\LongDHuaTools目录,并将编译好的工具包文件拷贝到该目录下,如 LongDHuaTools-182eba01-1.0.0.kit。其命名分3个部分,第1部分是工具包名称,包含供应商信息,第2部分是校验码,第3部分是工具包的版本号。至此一个新的风机控制逻辑组件已经创建成功。

4 总 结

Sedona软件框架主要是面向基于互联网的智能型嵌入式设备而设计的,其主要特点如下:

①Sedona语言是一种通用的面向组件化的编程语言,非常类似Java或者C#;它支持单一继承、多态等面向对象的特性,不支持接口扩展;采用静态内存设计模式,不支持new关键字,从而非常适合只有100KB左右的嵌入式设备,用户可以编写自定义的扩展功能函数或者对象组件等,从而可以不断扩充新的功能。

②Sedona虚拟机是一个小型解析器,采用ANSI C编写,具有良好的可移植性,无论底层有没有操作系统的支持,移植都很方便。由于有了Sedona虚拟机,也就实现了类似Java语言的“一次编程、随处可运行”的目标,只要是采用Sedona语言编写的代码,只要编写一次,就可以在任何支持Sedona虚拟机的设备上运行。

③ 支持Java。Sedona编译器不仅能将Sedona程序编译成Sedona虚拟机能识别的二进制代码,也能将其编译成标准Java字节码,从而可以在Java虚拟机上运行用户的Sedona应用程序,这就允许像使用Java的JAR文件那样运行Sedona应用程序。在Java虚拟机上运行Sedona应用程序有两点好处,一方面类似HotSpot这样的Java虚拟机拥有高效的即时编译技术(JIT),能在运行时将Java字节码编译并优化成本机代码执行,从而提高运行效率,使得Sedona应用程序在Java上能运行得更快;另外一方面,在Java环境下能有更多的开发调试工具可以使用,这样就能在程序运行出现异常情况的时候,充分利用Java下的开发工具进行边界检查和堆栈跟踪,方便快速开发调试程序。

④ 面向小型设备。在Java上运行的Sedona所需要的资源和性能使其并不适合大多数嵌入式设备。Java通常需要好几兆的内存来运行,并且有些Java虚拟机还需要运行时的授权费用,所以Sedona的虚拟机就专门针对只有100KB左右内存的嵌入式设备进行设计。Sedona虚拟机不支持new关键字,并且采用静态内存设计模式,这样就避免了Java虚拟机在运行时存在垃圾回收算法影响运行效率的问题,使得Sedona虚拟机在嵌入式领域中能满足对实时性的特殊要求。

⑤ 面向组件化的编程。Sedona采用组件化的方式编程,组件可以是某种服务程序,也可以是其他组件的组合连接,从而完成某种数据处理或者流程控制。在已经开发好的组件基础上,将各个预先编译好的组件连接起来,形成最后的应用程序,这样的编程模型非常适合采用图形化编程工具来进行开发,同时也便于用户的理解和使用。

⑥ 联网性能。Sedona内嵌多种通信协议,可以运行在任何基于IP通信的网络上,包括6LoWPAN等。通过联网通信协议,可以让用户实时观察设备运行数据并进行远程控制,也允许用户通过联网远程实时对应用程序进行增加、删除、修改操作,甚至可以远程更新整个嵌入式系统的固件代码。Sedona不仅提供标准的通信协议,如BAC-net、Lonworks、Modbus等,还允许用户自行开发新的通信协议,以便兼容传统的控制设备或者扩展新的用途。

⑦ 开源的系统。Sedona核心技术基于一种灵活的学术性授权,因此对于制造厂家来说很容易在其设备上集成Sedona技术,并且保证用Sedona开发的工具或者应用很容易地移植到任何Sedona设备上。Sedona开源框架整合了最新的IT技术,如面向对象编程语言、虚拟机、图形化组件开发技术等,给楼宇自动化领域带来了一种新的解决方案。相信经本文的抛砖引玉,会有越来越多的人参与到这个开源项目的开发与建设中来,那时就会有源源不断的新思路补充到这个开源框架里来,使其不断壮大,给楼宇自动化领域也注入新的活力。希望本文能为Sedona在国内的应用与发展开个好头。

编者注:本文为期刊缩略版,全文见本刊网站www.mesnet.com.cn。

[1]朗德华信(北京)自控技术有限公司.开源楼宇自控软件体系框架 Sedona简介[OL].[2012-07].http://www.1000bas.com/html/2009-10/8100.html.

[2]吴财军.开源楼宇自控软件体系框架Sedona简介[OL].[2012-07].http://www.jielizhun.com/Read.Asp?NewsID=3.

猜你喜欢
工具包图形化开发者
Epigallocatechin-3-gallate exerts antihypertensive effects and improves endothelial function in spontaneously hypertensive rats
谷歌云与Digital Asset合作推出区块链工具包
LKJ自动化测试系统图形化技术研究
运用MATLAB软件求解高中数学中的线性和非线性规划问题
科技视界(2016年21期)2016-10-17 19:09:05
16%游戏开发者看好VR
CHIP新电脑(2016年3期)2016-03-10 13:06:42
运用图形化听写式复习,构建高效地理课堂
地理教学(2015年18期)2016-01-06 12:00:40
iOS开发者调查
电脑迷(2015年8期)2015-05-30 12:27:10
iOS开发者调查
电脑迷(2015年4期)2015-05-30 05:24:09
图形化地区电网无功优化软件开发与应用
Microchip推出PIC32蓝牙入门工具包