技术期刊   Jsqk
    无分类
联系我们   Contact
你的位置:首页 > 技术期刊

家居控制器底层软件的设计与开发

2014/5/6 10:36:05      点击:

4.2.1底层软件的功能设想

底层软件应该协助硬件实现设备监控和信息处理,同时能够和人机管理界面对话,将信息传送给上位机。软件功能包括:采集脉冲并累加:检测报警器状态并实现联动:和人机管理界面对话。本文对应用程序的设计有这样的构想:应用程序中的不同功能应以模块化形式实现。主要有远程抄表、报警、联动腔制三个功能模块,各个功能模块分析如下:

(1)远程抄表模块:该程序模块应包括:①抄表输入管脚的严格定义,包括每一管脚所抄表的类型、数据格式及精度等等;②对每一块表的数据的采集、存储、采样及与管理节点的通一讯方式;③可实现管理节点对抄表数据的现场调整、实时查询。

(2)报警功能模块:该模块主要是对报警信号进行处理,包括:①报警输入管脚的定义,对各式传感器(主要包括煤气泄漏检测、火灾探测、双监探测、玻璃破碎控测、紧急呼叫按钮和门磁开关)信号的周期巡检、信号采集及处理;②对报警信号的处理:在设防状态下,所有的报警信号在触发联动控制模块的同时,均以两种方式处理(在配有电话自动拔号器的情况下):一是以网络变量的形式通过控制网络向小区管理中心报警,在小区管理软件上自动弹现报警界面,且发出声光报警,并在小区电子地图上显示报警位置;二是通过电话自动拔号器顺序拔打所预设的电话号码以通知房屋主人和报警台;在撤防状态下,盗警探头(包括双监探头、玻璃4住宅智能化控制系统的构建破碎探测器及门磁开关)均处于不工作状态。除紧急呼叫按钮外,其余报警信号(火灾报警及煤气泄漏报警)既不向小区报警也不向外拔号,而是通过报警喇叭现场报

警并触发联动控制模块,由主人判断情形的轻重缓急以采取相应的处理措施。如情形紧急,可通过紧急呼叫按钮向小区管理中心报警;在所有的报警信号中,紧急呼叫具有最高的优先级。

(3)联动/控制功能模块主要实现对室内设施的时序控制,如当煤气泄漏报警时,输出管脚输出信号联动控制开启排风扇或关闭煤气阀门等。

4.2.2底层软件的编程语言简介

底层软件包括对硬件功能的规定和对底层数据信息的整理和统计,这里即指对Lonwbkrs神经元芯片程序的编制和刷写。现对LonW6krS神经元芯片所用的编程语言简要介绍如下:底层软件的编写主要部分是对神经元芯片的编程。NueronC是专门为神经元(Nueorn)芯片设计的编程语一言,它是从ANSIC派生出来的,并对ANslC进行了一些删减和增补。对ANSIC的扩展主要包括以下几点:(1)一个内部多任务调试程序。允许编程人员以自然的方式描述事件驱动的任务,同时控制这些任务的优先级的执行;(2)1/0对象直接映射到处理器的FO能力;(3)网络变量的定义,网络变量是NeuornC语一言的对象,无论什么时候对网络变量赋值,它的值都通过网络自动地被传送。提供了一种简单的实现节点之间数据共享的方法。(4)when语句。引入事件并定义这些事件的临时排序。(5)显示消息传递。用于直接对LonTakl协议的底层进行访问。(6)毫秒和秒计时器对象的说明语法。这些计时器在终止时激活用户的任务。(7)一个RunTime函数库。调用它可以实现事件检查、1/0活动的管理、通过网络接收和发送报文以及控制Nueorn芯片的各种功能。LonO/rks的固件支持以上所述的所有功能。因此,不需要编程人员再编写这方面的程序。除了以上扩展外,NueronC与标准C还有许多不同的地方,NeuornC不支持标准C的浮点运算或浮点运算符,但是提供浮点库来使用浮点数;NeuornC只定义了8位短整型和16位长整型,对于32位的数只能使用32位的有符号整型库:NeuornC不支持寄存器变量;NeuronC在自动变量定义时不赋初值等等。

具体从语法角度说,通过在NeuronC中增加连接信息(eonneetioninofmration)、报文标签说明符(messetagspeeifier)、网络变量说明符(networkvariabespeeifier)和计时器类型说明符(timertypespeeifiers)扩展了ANsle的说明符。连接信息(eonneetioninofmration)功能是Neurone特有的。允许NeuronC编程人员为各个的报文标签和网络变量直接向网络管理工具传送特定的选项。另外,NeuornC扩展算述术定义了两种结构数据类型如下:

532type有符号32位整数4住宅智能化控制系统的构建fot一妙peIE7EE54单精度浮点数网络变量是Nuero所特有的,使用下列关键字序列之一来定义网络变量:

netv剐吐一tyPe:

netwokriPnut

networkiPnutsyne

newtorkinPutsynehronized

newtokroutPut

newtokroutPutPolled

newtokroutPutsyne

netwokroutPutsynehLronized

计时器对象是NeuornC特有的,使用下列关键字序列之一来定义计时器对象:

Time几一tyPe:

Mtimer[rePeatingl

Stimer!rePeation

NeuornC还包含任务说明。一个任务说明是后跟一个任务的一个when语句表。一个任务是一个复合语句(象一个ANSIC函数体)。在NeuronC,一个事件是一个表达式,该表达式可以为真或假。用特殊的内部函数去测试特殊的Neuorn芯片固件事件,扩展了ANSIC的条件表达式的概念。除了ANSIC主要表达式的定义,

NeuronC增加了一些内部变量和内部函数,为分布式LonW0rks环境提供了特定的对象集合及访问这些对象的内部函数。NueornC提供了内部类型的检查,同时允许编程人员生成高效的分布式LonwbrkS应用的代码。

LonWOkrs网络由智能设备(称之为节点)组成,遵守LonTakl协议并通过控制网络进行通信。节点是与物理连接的1/0设备相互配合的对象,同时也使用LonTakl协议与网络上其它节点通讯。所有的节点都包括一人用以实现通讯和控制的Neuorn芯片,一个或多个UO设备的接口,和一个收发器以便连接到网络上去。节点的行为由包含在节点贮器中的程序和配置信息来定义。节点存储器的用户可定义部分由两部分组成:应用映象(ApplieationImage)和网络映象困ewtorkImage)

节点的存储器由三个主要部分组成:系统映象、应用映象和网络映象。这些映象是用户可定义的,并且可在不同时间由不同用户来定义。例如,应用映象和系统映象可由节点开发者设计(定义),而网络映象则可由节点安装者定义。

系统映象包括实现LonTakl协议的Neuron芯片的固化软件、NeuronC运行时间库及任务调度程序。系统映象可被扩展。应用映象包括节点的应用程序,它定义了节点响应的事件以及响应这些事件所作的动作,节点存贮器的一部分包括这些代码。4住宅智能化控制系统的构建LoTak协议包括一个预定义的标准网络变量类型NSVIs)的集合,它增强了不同节点间的网络变量的兼容性,SNVTs同时具有使节点易于安装的特性,提供了产品间的互操作作。

总的来说,NeuronC语一言使得迅速完成应用程序的编写变得相对容易一些,下面就利用NeuronC语一言对底层软件的主要部分进行开发。

4.2.3底层软件的开发

底层软件本文采用模块化开发,其包括三表远传计费、模拟量采集、安防及室内设施时序控制等功能模块程序,各个模块的主要实现程序如下:

(l)三表远传程序:该段程序主要用于实现将各种表的一记录值发送到上位机中。

在程序中,用定义网络变量来驱动读表值这项任务,利用输出网络变量将装置记录的表具数值上传给计算机,在计算机上对该数据进行一定处理后就可实现远传计费。其程序如下:

newtooutputsNvT_eountnvo_state[3];//定义一记录表数的网络变量netwooutputsNvT--countReadmeter;//定义读表输入的网络变量when(nv-updat--eoeeurs(readmete)r)//读表{

intl:

unsignedveriyf;

ofr(I=0;I<3;I++)

{

nvo_state[I]=metereountI;//将记录的表值送入上位机

veri=yfveriyf+metereount[I];//校验记录值

}

}

(2)模拟量采集程序;该段程序主要用于实现室内温度的检测,采样室内温度运用NEUROwRIE总线方式实现,首先启动采样温度定时器的事件,利用片选信号启动NEUROWIRE总线工作方式,通过对采样数据进行处理转化成实际计数值,最后以网络变量的形式传给家用电脑。其程序如下:

10_8neuroremasterselect(10_7)10DC;//定义neuorwier总线方式

10_7outPutbit10_ADC_seleet=l:NewtorkoutputsNVempTHER人扭;//定义温度输出网络变量Stimersmapletime=rl;//定义采样定时器When(timexpire(smapletimer))//驱动定时器事件4住宅智能化控制系统的构建

sttaiesigedogra认匕reaidg:

sigedogdigita_ot;

sigedehae;

io--ot(10DC_seeet,0)://选通neuorwier总线方式

ehnnael=ob10001111;//选采样通道

10-out(10oC,&ehnnael,8);//测实际温度

in(IODC,&ar认匕redanig,16);刀转换成实际温度并传给家用电脑

digitalut=ra认匕redaing>>3;

THER人度=muldiv(digital_out,50,4095);}

(3)安防程序:该段程序主要用于实现门磁报警,当有门磁报警信号时且此时处于设防状态,声、光报警器启动,自动拨号器将预先设置好的报警电话号码拨出,同时有报警信息传给小区管理机上。其程序如下:

when(time--rexpires(Alamrestimer))//启动报警定时器{

(if(degreeocunil])l&&(ofrtiyf==)l)//判断设防状态及门磁报警信息

{(ifnv--od0or!1n)v--odoo=r1:刀发送报警信息给小区管理机

(ifPsekae0)刀启动声、光报警器

{

sPekae2:

ag=0;

outsixl();

}

(ifetl二二0)//启动自动拨号器

{

tel=2:

alo=0;

outsixl();

}

}

(4)设备时序控制程序:该段程序主要用于实现对住宅中设备的时序控制,4住宅智能化控制系统的构建可以用于煤气泄漏时启动排风扇等,在程序中,通过输入网络变量设置定时器时间,然后通过定时器事件驱动住宅中设备。其程序如下:

When(ny-Llpdat--eoeeusr(nviitehenl))//设置设备l定时器的时间值

{

kit1time10:

}

When(n--vtIPdat--eoecusr(nviiteheZn))//设置设备2定时器的时f司值

{

kitZtime5;

}

when(time--rexPires(kitltimer))

{

a121://开设备1

outsixZ();

}

when(time--rexPires(kitZtimer))

{

kind=intemipt://开设备2

setoutdata();

outsixZ;

4.2.4底层软件的调试与安装

家居控制器的软件在LonBuilder开发系统中进行调试。开发系统中的NeuronC调试器为开发的应用程序提供一个源级显示,它能够使开发者在任一点中断程序,随时运行程序的某一段,并可显示代码,修改和观察程序中的任何一个变量。调试器还包括多个仿真器的内部支持,这样应用程序可以在1~24个仿真器上同时调试,这样还可以简化网络应用的调试。经调试过的应用程序可以生成与各类存储器相应的目标文件,该目标文件可以通过编程器或开发系统下载到家居控制器中。

4.3家居控制系统与小区管理系统的对话

每个家庭控制器都是Lon认勺rks网络中的一个节点,各个节点都是通过Lonbkrs总线与管理间相联,它们的结构和功能都是相同的,如不对这些节点加以月住宅智能化控制系统的构建区分,便无法进行正常管理。至于如何区分不同节点,最好还是用程序来实现。

4.3.1,点间的对话

Lnowbrk技术介绍中已提到,Lonwbkrs网络中各节点之间是点对点通讯。Lonwbkrs网络是一种局域操作网,网络节点和计算机之间需要有一个管理节点来实现网络节点和计算机之间的通讯,同时对网络节点进行管理。在一个LonWOrks网络中,节点用事件驱动或查询进行通一讯。大多数控制系统的节点之间的通讯是通过将网络变量绑定到一起进行事件驱动更新实现的。事件驱动更新时,每个源节点基于某一事件时,随时向目标节点发送自身信息。它可以在

等待一段时间后发送,也可以一直等到有一明显事件发生时再送。目标节点不知道什么时候信息会再次被送来。另一种通一讯方法是查询。当使用查询时,目标节点查询变量值,源节点发送变量给目标。

NeuornCNeuron芯片编写程序,实现节点之间的对话非常容易,只要用两条语句就能实:一条用于说明网络变量,另一条为这个网络变量赋值。对于应用程序编程者来说,网络变量和标准变量一样,LonTakl协议允许网络变量被Lon26ksr网络上的一组节点共享。在一个LonO/krs网络中至多可能定义62个网络变量,但是一个输入网络变量可以从无数个节点处接收信息,一个输出网络变量可以向无数个节点发出信息。因此,网络变量数目的限制不会对实现对话功能有任何的局限。Neuorn芯片己经具备这样的功能,目前关键就是如何利用好它的特点,以尽可能小的工作量完成全部所需功能。

4.3.2节点地址的识别

每个Neuorn芯片在出厂时就己经具有一个64DI,根据这个DI号可以用LonMkaer实现节点在网络上的安装。但是在节点之间进行对话时,这个长达64位的ID号未免太不方便了,在一个小区里至少要有上千户,也就是说至少有上千个节点,我们根本无法逐个查知每个Neuron芯片的ID号再把些ID号编排到程序中去,而且这样一来若有个别节点有所变化的话,就未必能保证不影响其它节点。这里利用网络变量的功能对每个节点进行了逻辑地址的查询:EEpROM中查出节点在网络中的逻辑地址,说明一网络变量,用芯片内网络变量值代表逻辑地址值。

Echelon提供的数据手册中给出了各种芯片的EEPROM的分配,并提供了相应的寻址函数,节点可能查出自己的逻辑地址,将其赋给网络变量送到信道上去,也可以接受其他节点的逻辑地址并储存。一个Lonwbrks网络至多可以有32000个节点,只要说明一个16位的网络变量就足够代表整个Lon认勺krs网络中的所有节点。至于该网络变量的值在安装时由管理界面给予赋值,在系统中可随时增添节点。这样,管理节点就能根据逻辑地址值判断数值的来源,也可以根据对逻辑地址的选择决定4住宅智能化控制系统的构建数据的去向,从而实现对节点的查底、赋初值、修改数据等功能。

4.3.3对节点的操作

对节点的查询、赋初值、修改数据也是通过对网络变量的操作来实现的。节点中所需要掉电仍不丢失的数据,如每块表的累积数值。其它数据则主要是与外界交流时所用,如家庭当前的报警状态等,只有当时的状态刁`有意义,至于过去的状态留在芯片内是没有意义的,如果需要的话存贮在计算机中的数据库里就可以了。这里单独把远程抄表的累积值放在掉电仍不丢失数据的EEPROM,每次查询时,把累积值赋给网络变量,再通过LoMnnagaerDDEesvrer传送给计算机中的管理程序,就可以完成查询的功能。LonMnaage:DnEsevre:LoN网和windows应用程序之间交换数据。网络变量绑定是监测变量的最好的方式,有了DDE,任一可进行DDE对话的Windows应用程序都可以监测和控制一个Lonolrks网络。就是说,应用程序能够观察网络变量的值,并能改变网络变量的值来影响网络的运行。DDE使用命名、寻址、和存贮在由一个网络管理工具创建的LON数据库里计时信息来达到它的目标。赋初值和修改数据的实现与此类似,就不再一一解释了。

4.3.4数据库的生成

每个NeuronC程序中都有大量的参数需要管理。为了进行网络通讯,需要把每一个网络变量与外界绑定。这里专门为NeuornC程序与人机界面程序之间的通讯做了一个接口中转程序(不做这个程序也可以实现通一讯,这样做只是为了让程序调试容易些)。这个接口中转程序中没有事件处理,主要是由网络变量的定义组成,其数目和名称与控制节点中的NeuronC应用程序基本一致,只是输入输出类型与控制节点中的NeuronC应用程序正好相反。将这两个程序中相同名称,输入输出性质相反的两个网络变量绑定在一起,每当控制节点应用程序中的网络变量值有所变化时,接口中转程序中的网络变量值也随之发生变化。

底层应用程序与Windows下的人机界面对话之前需要先提供底层的数据库,DDESevrer利用该数据库作为命名信J自、、网络寻址信息、计时信息的来源。LonBuilder数据库不能直接与人机界面接口,需要用LonManagerDDESevrerNeuornC程序中的LoBnuilder数据库转化成LON数据库(LoanagerDDESevrerLonO/rks网络与计算机之间进行动态数据交换的支持软件)。即使某些纪录目前并不为任何应用节点所使用,转换过程也会输出LonBuidler数据库中的全部数据库纪录。如果LonBuilder数据库中的应用映象纪录没有唯一的程序ID,DDESevrer

将无法将它转换成LON数据库,因为LON数据库要用这些程序ID号作为唯一的识别器。为了避免产生非唯一的程序纪录工D,在转换之间要把不用的应用映象删除。这里是把对中转程序自动生成的LonBuilder数据库转化成LON数据库,4住宅智能化控制系统的构建7就是说,人机界面的直接对话对象是中转程序,当然,真正的数据来源还是控制节点中的应用程序。