-
1
、
引言
随着当今社会的高速发展,
嵌入式、
智能
设备和系统已经遍及我们的周围,
它们隐藏在我们
工作和生活的各个角落,负责从环境控制(温度、湿度、空气质量、照度)
,到安全(
消防
安防
报警
、通道控制、视频监视)
,到测量(水、电、燃气)
,到服务(电梯、垃圾处理,热
p>
水器)
,甚至是我们所使用的商品的生产线上。智能设备和系统越来
越多的影响着我们的世
界。
如今的设备的智能化越来越高,能力也越来越强,但是我们真正发挥出它们的所有能力了
吗?它们告诉我们它们在做什么了吗?它们检测到某些情况了吗?它们决定做什么或不做
什么吗?它们知道彼此的存在并相互配合了吗?现实是这些嵌入式的设备,不像
PC
或者
Server<
/p>
,可以支持图形操作系统的各种应用,并不容易相互通信,嵌入式设备大都使用成百
上千的不同的,
非
IP
的通信
协议
,
其中只有一部分被认定为标准。
和我们的
PC
和
Server
不同的是,
用户投资这些设备会保留
p>
10
到
15
年,
而非
3
到
5
年。
也就是说这些设备会
跟随我们相当长的时间,
< br>如何在不更换这些设备的情况下,
让它们协调工作并且更好的管理
是摆在每一个集成商和用户面前的关键问题。
p>
正如
“
团结就是力量
”
,当信息被分享并相互关联时,智能化的效果就会大大提升,
麦特卡夫
定律(互联网奠基人)正好说明了这一点,
“
p>
网络价值同网络连接数量的平方成正比
”
,
如
何让各种智能设备连接
IP
p>
网络并融入上层的应用系统,
也就是我们所提出的创建智能设备
p>
的各种应用,就变得至关重要。
Tridium
公司所研发的
Niagara
AX
平台正是设计用于解决设备连接应用的软件框架平
台。
2
、
Niagara AX
简介
NiagaraAX
是一种应用框架,或者说是软件框架,特
别设计用于应对智能设备所带来的各
种挑战,
包括设备连接到企
业级的应用,
支持互联网的产品和基于互联网自动化系统的开发。
应用框架是一个软件工程中的概念,
不同于普通的软件,<
/p>
它是用于实现某应用领域通用完备
功能的底层服务,
使用这种框架的编程人员可以在一个通用功能已经实现的基础上开始具体
的产
品和系统开发。
应用框架强调的是软件的设计重用性和系统的可扩展性,
以缩短各种应
用软件开发的周期,提高开发的质量。
NiagaraAX
提供了一个统
一的,具有丰富功能的开放式平台,它可以简化开发的过程,明
显的降低产品或系统的开
发成本,缩短企业进入市场的时间或工程的建设周期。
NiagaraAX
创造了一个通用的环境,几乎可以连接任
何能够想象到的嵌入式设备或系统,
而
不
用
太
多
考
虑
这
些
设
备
p>
的
制
造
厂
家
和
所
其
使
用
的
通
< br>讯
协
议
。
这
一
切
的
关
键
在
于
p>
NiagaraAX
可以与各种设备和系统通信,
< br>将它们的数据和属性转换成为标准的软件组件,
通
过大量
基于
IP
的协议,支持
XML
的数据处理和开放的
API
为企业级应用提供无缝的,
统
一的设备数据视图。如下图所示,
NiagaraAX
平台是一种多对一的架构。
通过转换各种外部设备和系统的数据成为规范的软件组件
,
NiagraAX
创造了一种开发
架
构,
大大优于基于网关集成的多对多的复杂架构。
这种优势体现在
——
任何的设备和系统通
过
Niagara AX
< br>规范,
就可以兼容其他连接到应用框架的设备和系统,
为
企业级应用提供真
正的系统内的互操作能力和统一的数据呈现。
开发者不再需要花费时间去创建,
测试和重复
验证各种网关设施
。下图是传统的多对多的系统结构:
2.1
NiagaraAX
框架所带来的好处
NiagaraAX
框架用于应对自动化系统,控制设备与企
业级应用实时连接的各种挑战,创造
各种出各种衍生产品,
为终
端用户、
OEM
和集成商都带来了巨大的价值。
对于
OEM
客户
和系统集成商,
NiagaraAX
框架解决了几个关键性的问题:
?
开发软件与设备通信并处理这些数据需要花费很高的成本
?
需要传输实时控制流程的信息到别的一个更高级别的产品和系统
?
集成以前老的产品,让公司可以很
容易为现有客户提供新的产品和技术,而无需大规模
更换以前的设备。
< br>
OEM
和系统集成商可以将
NiagaraAX
框架作为自己的软件系统的基础,有了这
种稳定且
功能强大的基础保证,公司就可以将资源集中在具有自己核心竞争力的应用开发
和市场上。
通过降低产品、
应用和增值服务的开发成本,
缩短它们进入市场的时间,
公司就可以在市场
上获得更强的竞争力。
NiagaraAX
的最终用户所获得的益处:
?
当客户准备采用新的产品或技术时
,可以保留已投资的控制和检测设备;
?
通过一个标准的浏览器,就可以管理和控制所有的设备和系统;
?
从不同的系统整合信息,更好的从全局管理企业资产;
?
可以为不同供应商提供的设备和系
统建立互操作的能力,这就避免了被供应商锁定的潜
在风险;
2.2
控制系统集成
使用
Niagara
框架,控制系统的集成就意味着:
1.
在一个相同的通讯介质里连接各种设备
2.
建立各种设备的软件模型
3.
利用这些设备的信息设计各种应用
在一台设备,
如制冷机、
V
A
V
箱或温度传感器被使用前,
这些设备的信息必须被接入
Niagara
软件。然后
Niagara
通过通用的对象模型对这些设备和它们的数据类型建立软件模型。通
常
需要简化设备的数据类型,使得它们易于通过软件使用和控制。
Niagara
的通用对象模型也
用于建立各种应用,根据目的可以使用非程序员的开发方式,无
需编写任何代码就可以设
计系统。
Niagara
的通用对象模型很像一种程序设计语
言,拥有一
些关键的习惯用法,
但是最有效的是可以重用的应用
库和对象库。
一旦理解了这些习惯用法
就可以利用它们,可以使
用
Niagara
的对象快速、有效的建立控制系统解决方案。
如下图所示,
Niagara
的通用对象模型可以使得
Niagara
框架:
?
在设备和
Internet
之间建立双向通信
?
通过
Internet
传输实时设备信息
?
通过
Internet
实时控制设备
2.3
Java
Niagara
软件的所有部分都是使用
Java
语言来编写的,这就意味着这个平台的独立性。在
Java
之前,大部分的软件只能针对特定的设备或操作系统
来编写和编。一旦软件需要运行
在另外的处理器上,就不得不重新编译。而同样的情况,
Java
只需编译一次。
Niaga
raAX
软件可以运行在嵌入式的
JACE
控制器上,它使用
QNX
操作系统和
IBM
的
J9
Java
虚
拟机,也可以运行在
Microsoft
的
Windows
桌面操作系统,还可以运行在
Linux
系统和
使用
HotSpotJava
虚拟机的
Solaris
系统。
2.4
虚拟机
能
够实现编译一次就可以运行于任何平台,
是因为有一个特殊的软件层,
< br>存在于机器和软件
之间,这就是
Java
虚拟机,
Niagara
框架使用
Java
虚拟机做为跨越不同操作系统和硬件
平台的通用环境。
框架的核心可以部署到从嵌入式控制器到高端服务器的各种平台。
框架的
运行系统针对遵从
VMs
的
J2ME
系统,用户界面工具包和图形化编程工具针对
J2SE 1.4
VMs
系统。
NRE
(
Niagara
RunTime
)运行的不同平台有不同的虚拟机,但是对于
NRE
本
身
来
说
,
所有的
模块都是与平台无关的。虚拟机负责定义软件如何运行在给定的硬件上
——
如何与
LonWorks
的适配器对话,如何与通
信端口对话,如何与操作系统及其他的进程互动。
2.5
通用网络和
Internet
协议
Niagara
的设计前提是假设
永远不会有任何一个
“
标准
”
的网络协议,
分布式架构和现场总线。
Niag
ara
的设计目标是能够完全集成所有的网络和协议。
Niagara
框架标准化黑盒子里面的
东西,而不是盒子在说什么。
Niagara
框架运行一套高效的
JavaBean
组件软件模型和
Internet
技术,能够在不同的自动
< br>化产品间提供真正的互操作能力。
Niagara
组件
模型可以用于集成大部分的设备,控制器和
早期的控制应用,
包
括
LonWorks
,
Bacnet <
/p>
对象和旧有协议的控制点。
这样的结构可以让旧
< br>的系统向前发展,不断增强,很容易与新的标准,应用和解决方案融合。
企业级软件标准包括了传输控制层协议
/Internet
协
议
(
p>
TCP/IP
)
展
标
记
语
言
(
XML
)
,
扩超文本传输协议(
HTTP
)和其他的一些标准。这些标准提供了建立控制系统和企业级应
p>
用间信息共享的基础。
2.6
非程序员式开发
Niagara
框架的大部分功能
为两种不同用户设计使用(程序员和非程序员)
,这些功能围绕
着一套
Java
APIs
来设计,开发者可以通过编写
Java
代码来访问这些
APIs
。同时,大部
分功能也支持通过高级的
图形化编程和配置工具来使用。这就极大地扩大了使用
Niagara
平台开发应用的用户群。
2.7
组件软件设计
Niagara
使用一套围绕
“
p>
面向组件开发
”
的结构,组件是一段自我描
述的软件,能够像建筑用
的砖块一样被组装,用于创造新的应用。一套中央组件结构解决
了许多
Niagara
中的问题:
?
数据标准化
组件提供了一个模型,<
/p>
用于规范不同类型的协议和网络的数据和特征,
使得它们可以被无
缝
集成。
?
图形化开发工具
使用
Niagara
Workbench
中的图形化工具,
就可以组装组件成为新
的应用。
新的应用的建立
不再需要
Java
的程序员
?
应用可视化
组件为应用提供了卓越的
可视化能力,
一旦组件被自我描述,
就很容易通过工具看到应用
如
何被组装,配置,同时知道任何时点发生的问题。这对于调试和维护
< br>
Niagara
的应用非常
重要。
?
软件重用
组件使得软件可以重用。
NiagaraAX
允许用户自己开发和扩展框架。
Niagara
组件能
够被扩
展并且超越数据和协议,统一整个开发环境。
2.8 Niagara
软件架构
Niagara
软件架构有四个层次,最底层如图
1-2
所示,是主机平台,
JACE
控制器或
PC
,
下一层是
Java
虚拟机,
JVM
介于硬件,操作系统和
Niagara
软件之间,作为
Niagara
的
运行环境(
NRE
)
在
NRE
的上面是
Niagara
的模块。
NiagaraAX
软件子系统如下图所示:
关于
Sedona
1.
什么是
Sedona
Framework
?
Sedona
Framework
是一个软件框架,用于使开发智能联网型设
备变得容易,包括了编程语
言,可移植的运行环境(
Sedon
a VM
)
,用于设备编程的通讯协议(
Sox
)
,
Sedona
可以运行
于任何支持
IP
的设备中。
只是另一种通讯协议吗?
Sedona
不仅仅是一种通讯协议(如
Lon<
/p>
,
BACnet
)
,它还定义了
Sedona
设备如何与编程工
具和相互间的通讯。软件框架提供了一个统一的编程和运行环境,这样子就使得
Sedona
的
应用程序可以在不同的硬件平台上移植。
和
BACnet
有什么区别?
BACnet
只是定义了通讯协议,它并不负责处理运行环境和编程模式。
BACnet
的应用程序
并不可以在不同平台间移
植。
和<
/p>
Lon
有什么区别?
< br>Lonwork
只能在特定的平台上运行,而
Sedon
a
支持所有的
IP
设备。
和
Zigbee
有什么区别?
Zi
gbee
仅仅是定义了支持
802.15.4
< br>的设备间通讯协议和互操作,而并没有提供编程模式。
6.
为什么选择开源?
Tridiu
m
为什么选择这样做?
Tridiu
m
希望通过开源
Sedona Framework
来促进该技术在全世界的推广和普及,
让第三方可
以很容易尝试移植
Sedona
到不同平台。
< br>
同时,
Tridium
保留<
/p>
“Sedona Framework
的命名权,通过
”Sedona
认证
“
来
保证
Sedona
设备的
兼容性。
p>
7.
我是否
可以把
Sedona
运行在处理器
A,
B,C?
Sedona
已经被运行到
不同的处理器平台(
ARM7,ARM9,JENNIC
等等)
,最基本的要求包括
——
ANSI C
编译器(这个似乎到处都是)
——<
/p>
支持
64
位整型(长整型)或
64
位浮点(双精度)数据(
32
位
CPU
可以轻松应对,当然
8
位也可以,只是你还能买到
8
位的<
/p>
CPU
吗?)
——
具备以太网、
WiFi
、
802.15.4
或
6LoWPAN
,支持
UDP/IP
——
文件管理系统
需要多大的
RAM
和
Flash
?
这与处理器的架构和配置有关,因为
Sedona<
/p>
的字节码可以直接从
ROM
执行或者载入
到内
存,
如果平台支持直接访问
Fla
sh
和
ROM
,
那么
RAM
的需求可以减少。
Sed
ona
工具
(
SedonaC)
p>
可以帮助估算一个给定的
Sedona
应用
或者一套
Kit
(功能模块)的
RAM
/ROM
需求。另外,
RTOS
和网络
Stack
也需要消耗内存。
两个
Sedona
平台的例子
——
Jennic
5139T01
(
32bit
uC
,
96k
RAM
,
192KB ROM
,不支持
外部
Flash
内存寻址,所有
的
p>
Sedona
代码和
App
都必须载入
RAM
运行)
——
Atmel AT91SAM7X-EX
< br>(
AT91SAM7X256
微控制器,
ARM7tdmi 32Bit RISC
处理器,
64K
SRAM
,
256KB
ROM
)
9. Tridium
是否支持基于串行通道的
Sox
通讯(
Sedona
通
信协议)?
Sox
要求通过
IP
连接
Sedona
设备。
Sedona
Jennic
设
备能够基于
Bacnet
MSTP/RS485
支持
6LoWPAN
,如果没有
6LoWPAN
的
RS485
和<
/p>
MSTP
,
Sox
是不支持的(不过已经有厂家实现了普通
RS485
支持<
/p>
Sox
,开源的好处就在于此吧)
Sedona
Framework
是
一
个
开
p>
源
的
用
于
嵌
入
式
设
备
编
程
和
< br>开
发
的
软
件
平
台
,
是
一
个
“Micro
-Niagara
。如果
Niagara
< br>是
“Windows
XP
的话
,
Sedona
就是
”Windows
CE“
。
Niagara
大多时候是应用在控制系统的中上层,
对于大量的底层智能设备,
需要一个效率更高,
更简
单的平台。在延续
Niagara
模块化结构的体系下,保留设备驱动,实时控制和图形
化编程的
功能。就是我们现在看到的
Sedona
平台。
所有的
Sedon
a
设备可以使用
Worbench
来编
程
(所有会
Niagara
的人都会很
容易使用
Sedona
设备)
可以装载到不同的
CPU
和内存的嵌入式设备
中:支持有线或无线电应用。
对于
设备制造商来说:
Sedona
可以让智能设备的开发更便捷,
大大缩短智能设备进入市场
的时间(功能强大的编程工具已经具备,大量的潜在客户无需
太多的培训和支持)
对于系统集成
商:
可以自己为硬件设备开发功能,
适应不同用户的要求,
p>
并且这个功能还可
以移植到新的
硬件中。
这一切像极了我们今天所使用的智能手机,
所有的功能是看第三方的软件设计,
也许有一天
我们也会出现
”
自动控制的软件商店
”
。
本周五会有
Sedona
设备的演示,也许能更直观的了解。
关于
Sedona
的详细的信息可以访问
Niagara
位于中上层
,
起到数据
,
信息汇集
,
处理
,
通信管理
,
用户界面和
应用的功能
,
是开发各种
基于网络的自
动化应用的平台
.
Sedona
位于最底层
,
提供各种智能设备的运行平台
,
是开发智能设备的平台
.
它非常
Sed
ona
是一个全新的概念
,
不过目前发
展很快
,
在某种程度上我比较喜欢拿手机做比较
:
Sedona
就是现在的智能手机的操作系统
p>
,
如
Andriod.
p>
如何新建一个
Station
并运行
从其他入门贴子中,大家应该能了解
sta
tion
和
platform
的区别。
简单的说,承载实际
项目逻辑和
界面
的
是
station
,而
platfor
m
则是运行这个
station
的平台
。
首先需要打开
< br>workbench
,
Open
Platform
。这一步的具体操作大家参考:
Chang
Kan
——
边
学边做
< br>-
Niagara
从头开始自学笔记。
< br>
新建
一个
< br>station
的过程很简单,
Tools-New S
tation
,然后输入该站点的名称,然后
Next
,之
后输入用户名密码端口号等等。
station
建立的过程,其实就
是系统自动在安装目录下建立了个文件夹和
bog
文件。
建好之后,在
p
latform
下的
Application
director-station
上
右键
,可以启动该
station
。
sta
tion
启动后,可以通过
file-open-open s
tation
来打开正在运行的
station
。
这样,你就会在
platform<
/p>
下面的节点处看到这个
station
啦
!
p>
最后说一句:
station
其实是在后台
运行的,前面所看到的一切,都是通过
workbench
远程
连
接而展示出来形象化界面。所以,
workbench
关掉了,不会影响到后台
station
的运
行。除非
通过
application director
p>
发送命令将该
station
停止。
登陆页面设置
AX
登陆界面是使用
LoginTemplate
设定的,这里要修改需要一点点编程能力。
1
、开发个
p>
Module
,其中包含了一个继承
BLo
ginTemplate
的类。
<
/p>
2
、在你自己类的代码中,可以设定所需要的样式等等。
3
、在
station/config/services/webservice
下面,你就可以选择这个
Template
了。
AX
做的一个仿
Window
工具栏
File
的下
拉菜单
AX
做的一个仿
Window
工具栏
Fi
le
的下拉菜单,这个功能个人觉得在
grpahic
页面操作
上是有很方便的作用,可以像
Wind
ows
的工具栏一样点击就展开菜单,效果如下:
第一步:先在
station
的
config
下建一个文件夹
drogmenu,drogmenu
文件夹下建名字为
drogButton
,O
bject1,Object2
,Object3,Object4,Object5
的
boo
leanWritable
Point,
然后我在这个
文件夹
new
一个
view,
名字叫
,
把
drogmenu
文件夹中的
drogButton<
/p>
拖到
px
上,
选
from
palette,
加载
p>
kitPx
这个
module
,选
kitPx
的
Modu
le
下的
SetPointToggleButton
这个
widget
,
T
ext
上写
File
,如上图,这个下
拉菜单的
button
就做好了。
<
/p>
第二步:建一个
px
文档叫
,接着把
drogmenu
文件夹下的
Object1-5
拖到这个
px
文档上,选
Bould Label
这个
widget
,风格如上图。
第三步:
返回
文档上,
把刚刚建立的
拖到
上,
我们会
看到
显示在
上,位置如上图
显示,接下来要做的一步就是实现
显示和隐藏的效果了,编辑<
/p>
的属性,添加一个
Value
Bounding,ORD
选
drogmenu
文件夹的
drogButton,
然后
在
visible
上使用
animat
e
动画,选
boolean to
simple
,
下面的
true
vale
选
true,false value
选
false,
点击确定,
保
存
文档,
点击
File
按钮,
就可以看到效果了。
关于
ProgramService
的使用
P
rogramService
是
Niagara
提供的一个可以对
Niagara
的各种对象批量处理
的高效服务之
一,下面用一个具体的例子来演示如何使用。
在示例的
Station
中,我们建立一个
AHU1
的文件夹,里面有建一
个基本的逻辑,如下图所
示:
利用拷贝和粘帖我们建立同样的
10
个从
AHU1
到
AHU10
的
10
个文件夹:
如果此时想修
改
SupplyTemp
和
Setpo
int
的单位,利用
ProgramService
我们可以很容易的做
到,首先在
ProgramS
ervice
中利用
Find
Object
来查找所需修改的对象:
找到所有的
SupplyTemp
对象
对于需要修改单位,可以选择
Edit Slot
,对
Facts
进行修改
系统提示已经对所有的
SupplyTemp
的
Facts
修改为摄氏度显示:
同样的也可以对所有的
Setpoi
nt
进行修改:
所有的
SupplyTemp
和
Setpoint
都已经修改:
除了对各种对象进
行修改外,
我们也可以增加新的对象或功能,
如可以为所有的<
/p>
SupolyTemp
增加历史记录的功能:
利用
Add Slot
来增加<
/p>
History
的
Extention<
/p>
: