首页 理论教育LonTalk协议Neuron芯片最多支持62个网络变量

LonTalk协议Neuron芯片最多支持62个网络变量

【摘要】:LonTalk协议推出网络变量新概念。在Neuron芯片上运行的Neuron C应用程序最多可声明62个网络变量。使用该类别网络变量时要注意,对其修改次数有限。

LonTalk协议推出网络变量(Network Variable)新概念。网络变量大大简化了具有互可操作性、使用多个厂商产品的LonWorks应用程序的设计工作,而且方便了以信息为基础而不是以指令为基础的控制系统的设计。所谓网络变量是指一个特定的设备应用程序期望从网上其他设备获得的(输入网络变量)或期望向网上其他设备提供的(输出网络变量)任何数据项(温度、开关值或执行器位置设定等)。

设备中的应用程序根本不需要知道输入网络变量由何处来,输出网络变量往何处去。应用程序具有输出网络变量新值时它就简单地把新值发给设备固件。通过一个在网络设计过程中产生的称为“绑定(binding)”的过程,设备固件被配置成知道网上要求这个网络变量的其他设备或设备组的逻辑地址,于是它就汇集并发送合适的数据包到这些设备。类似地,当设备固件收到应用程序所需的输入网络变量的更新值时,它就把该数据发给应用程序。这样,绑定过程就在一个设备的输出网络变量和另一设备或设备组的输入网络变量间建立了逻辑联系。这样的连接也可以看作“虚拟线路”。假如一个设备包含一个物理开关,具有称为“switch on/off”的输出网络变量而另一个设备驱动一个灯泡,具有相应的称为“lamp on/off”的输入网络变量,把这两个网络变量绑定起来建立的连接具有像从开关到灯泡的同样的功能效应。

每个网络变量具有类型,它定义包含在网络变量内的数据的单位、比例和结构,只有相同类型的网络变量才能连接。这可以防止发生通常的安装错误,例如,压力输出连接到温度输入。有类型转换程序可把网络变量从一个类型转换成另一个类型。如下一章中介绍的那样,对通常使用的类型定义了一套标准网络变量类型(SNVT)。另外,制造商为他们自己的用户定义网络变量类型(UNVT)。

LonWorks系统中的各个节点之间的通信是通过节点提供的网络变量或报文来实现的,网络变量是节点中的一个对象,可以与一个或多个其他节点的网络变量相连接,用于在网络上互传信息。网络变量可以为输入,也可以为输出,允许在控制网络中共享数据。无论何时,如果一个程序更新了它的输出网络变量的值,则该值将会通过网络传给所有与该输出变量相关联节点的输入网络变量。虽然网络变量通过LonTalk报文传播,但报文的传送是透明的,应用程序不需要任何显式的指令来接收或发送更新后的网络变量。

节点在通过SERVICE引脚安装在网络上后,可以与网络上的其他节点通过网络变量进行逻辑连接,此时发送方节点的网络变量类型必须和接收方网络变量数据类型相匹配。LonTalk协议提供有标准网络变量类型(SNVT),是对互操作性的进一步支持,SNVT是具有相应单位(如V、℃、m等)的预定义类型的集合,是由Neuron C内部定义的变量类型,用户可以根据实际需要选用,具体类型可参考Echelon公司提供的标准网络变量表。

在每个互相独立的节点程序中,对所使用的网络变量首先要加以定义,然后才能使用。需要将节点中的输出网络变量与另外一个或多个节点中的输入网络变量先行进行连接(connect)才能实现通信功能。

在Neuron芯片上运行的Neuron C应用程序最多可声明62个网络变量。主机(host)应用程序可以声明更多的网络变量,最多可达4096个。

网络变量定义语法为

network input|output[修饰字][存储类]网络变量类型

[连接信息]网络变量名[=初始值];

如果定义数组网络变量(一维),语法为

network input|output[修饰字][存储类]网络变量类型

[连接信息]网络变量名[数组长度][=初始值];

1.input|output

说明是输入网络变量,还是输出网络变量。

2.网络变量修饰字(可选)

有关的修饰字如下:

(1)sync|synchronized

定义网络变量为同步网络变量。只要发生同步网络变量的赋值,所赋的值必须一一发送,不丢一个值。如果定义时没有设置该选项,即非同步网络变量,调度程序就不能保证每次赋予的值都能被发送出去,例如,如果网络变量赋值过于频繁以至于调度程序来不及传送,那么调度程序将丢掉某些中间值。

(2)polled

仅为输出网络变量选用,定义网络变量为轮询输出网络变量,只有在该网络变量的接收方节点发送轮询请求(使用poll()函数)时,该网络变量的值作为响应才被发送。

(3)d_string

用于设置网络变量的自编文件串,最长为1023B。这个修饰字在每个网络变量定义时只能出现一次,且放在sync或polled修饰字后面。sync和polled不能同时使用。

3.网络变量的存储类别

可选择以下3种:

(1)const

指定应用程序不能修改的网络变量。该类别的输出网络变量存放在ROM或EEPROM中,输入网络变量则存放在RAM中。

(2)eeprom

允许应用程序将网络变量值存放到EEPROM或闪存内,以免节点掉电时有些数据会丢失。使用该类别网络变量时要注意,对其修改次数有限。当程序装载时,该类别网络变量的初始值生效,复位后这些变量不会再初始化

(3)config

由输入网络变量使用,指定存放在EEPROM中的const类别的网络变量只能由另一个节点修改,这类网络变量通常由网络管理器用来配置应用。

某个网络变量的存储类别可以是上述3种的组合,如果没有指定存储类别,网络变量就是全局变量,存放在Neuron芯片的RAM内。

4.网络变量连接信息

用来指定网络变量连接的各可选属性:

(1)offline

用于告知网络管理器在对该网络变量修改之前,节点应离线(offline),该选项通常由config类别的网络变量选用。

(2)unackd|unackd_rpt|ackd[(config|nonconfig)]

指定网络变量采用的LonTalk协议报文服务类型,允许的报文服务类型有:非应答、非应答重发以及应答服务(默认)。若选择config,则允许网络管理器在安装节点时修改消息服务类型,若选择nonconfig,网络管理器不能修改报文服务类型。

(3)authenticated|nonauthenticated[(config|nonconfig)]

指定网络变量修改是否需要鉴别认证服务,如果选用authenticated,接收方节点将对发送方节点的身份进行鉴别,如果身份不符可以拒收网络变量值,这里也可以用auth|nonauth。config和nonconfig用于指定网络管理器是否可以修改鉴别服务的选择,默认是nonauth(config)。

(4)priority|nonpriority[(config|nonconfig)]

指定该网络变量的修改消息是否能优先传送。config和nonconfig用于指定网络管理器是否可以修改优先服务的选择。默认是nonpriority(config)。

以上各选项的前后顺序不受限制。