-100-
360元/年邮局订阅号:82-946
嵌入式功能模块应用
中文核心期刊《微
计算机信息》嵌入式与SOC)2006年第22卷第8-2期(
智能家居系统中的BACnet对象属性值写入数据库和将数据库中属性值写回智能家居BACnet对象中去的功能。控制系统的两个软件模块都是基于数据库工作的,数据库中保存了智能家居系统中BACnet对象的属性值。图1显示了这种软件设计的结构。在这种架构下,系统的初始配置信息写在数据库中。智能家居系统启动时,接口模块将数据库中的配置信息写入智能家居系统中完成系统的初始化。当用户要监控智能家居系统的当前状态,通过web页面向控制模块发出命令,控制模块通过socket与接口模块建立连接并发送相关通告报文,接口模块收到报文后根据智能家居系统当前状态更新数据库,然后通知控制模块更新完毕,接口模块从数据库中取出系统信息,更新模型(java对象),然后将模型以web页面的形式呈现给用户。当用户要对家庭内部某设备进行控制,控制模块接收到控制命令后,改变模型,将模型的改变写入数据库,然后与接口模块建立socket连接并发送通告报文,接口模块收到报文后根据数据库中的数据更新智能家居系统,并向控制模块发送响应报文,控制模块根据响应报文向用户
报告操作结果。
用户提供动态的web页面。3.2控制模块中的java对象设计与ORM(对象-关系映射)在远程控制系统中的java对象模型中,我们保持了BACnet对象模型中描述系统状态的对象类型,同时在两个方面扩展了BACnet对象模型:增加对象结构和赋予对象行为。对象结构是智能家居内受控设备连接和控制关系在java对象模型中的体现,比如一个直接数字控制器(DDC)有多个数据点,每一个数据点对象代表着一个实际的家庭设备,这种结构表现为对象的继承和连接关系。对象行为维护对象自身的状态等功能,比如在对和行“灯”象中添加打开”“关闭”“为。用户对这些对象的操作通过向对象发消息来完成。另一方面,为了在web页面上向用户展示家庭内部的状况,必须要以一种更贴近用户的视角描述智能家居系统。我们在java对象模型添加了一些在BAC-net协议中没有定义的对象,比如描述家庭内部位置信息的房间对象(Room)。由于要在数据库中保存智能家居BACnet对象的状态,就需要实现对象的持久化存储。在控制模块中,从数据库中取出BACnet对象属性值形成模型(java对象)和根据模型的改变更新数据库需要大量的数据库操作,如果通过JDBC完成,则编程工作十分复杂,容易出错,不易维护。基于以上考虑,我们在控制模块中使用Hibernate构架实现ORM。ORM是为了解决在面向对象的应用
程序中使用关系数据库存储持久化对象而提出的技术。许多应用系统采用面向对象的技术进行开发,而作为数据源的数据库多是关系数据库,这就出现了面向对象系统从关系数据库中存取数据的困难。ORM提供了一种较理想的解决办法:区分持久和非持久对象,支持持久对象的存取,提供一套面向对象的
查询语言。Hibernate正是基于java的ORM的实现,具有轻便、活、效的特灵高点,是一个非常优秀的开源的javaORM架构。
3远程控制系统架构实现
3.1控制模块的MVC实现控制接口模块采用struts框架实现MVC设计。MVC的主要思想是将应用程序分为三个部分:模型视(Model)、图(View)和控制器(Controller),以提高应用程序的可扩展性。Struts为
JavaWeb应用提供了现成的通用框架,可以大大提高Web应用的开发速度。图2显示了Struts的一个概览。
技术创新
3.3接口模块的实现接口模块采用c语言编写,部署在智能家居网络
中的嵌入式设备上。接口模块的主要完成两个功能:操作数据库和与控制模块通信。接口模块通过网络访问安装在服务器上的数据库,由于要完成大量的数据库操作,接口模块使用了连接池技术。为了减少控制模块和接口模块之间的通信,我们定义了简单的通告/回复报文,通告报文由控制模块发起,接口模块收到报文并解析后,根据报文完成相应任务并向控制模块
图2
Struts框架结构
发出回复报文。
控制软件提供不同功能,
每种功能通过一个Action
的子类完成。将配置信息写入配置文件struts-config.
xml中,控制器会将用户命令和相关参数转发给不同的Action子类去完成。模型由javabean承担,一个javabean对应一种BACnet对象。视图由jsp完成,向
《PLC技术应用200例》
4总结