Neuron C是专门为Neuron芯片设计的编程语言。它是从ANSI C中派生出来的,并对ANSI C进行了增删。对ANSI C的扩展直接支持Neuron芯片的固件,使之成为开发Lon-Works应用的强有力工具。
它的一些主要功能如下:
1)一个新的对象类——网络变量NV(Network Variables),它简化了节点间的数据共享。
2)一个新的语句类型——when语句,它引入了事件(Events)并定义了这些事件的当前时间顺序。
3)I/O操作的显式控制,通过I/O对象(Objects)的说明,使Neuron芯片的多功能I/O得以实现。
4)支持显式报文通过,用于为以直接访问为基础的LonTalk协议服务。
Neuron C为分布式的LonWorks环境提供了特定的对象集合,及访问这些对象的内部(build_in)函数,允许程序员生成高效的分布式LonWorks应用的代码。
(1)I/O对象
Neuron C语言利用34个预编程的I/O对象来实现有效的测量、计时和控制应用的不同操作模式。通过将Neuron芯片的11个I/O管脚(IO0~IO10)定义为不同的I/O对象,可以提供Neuron芯片灵活支持不同的输入输出设备的能力。在一个程序中,一个或多个I/O管脚可以被定义成不同的I/O对象,程序自动完成相应的输入输出操作。
(2)网络变量NV
LonWorks网络中的节点是通过网络变量NV(Network Variable)来相互联系的,完成通信功能。不同节点中具有相同数据类型的网络变量通过捆绑(Binding)方式,可以实现节点间“自动”的信息传递。当一个网络变量在一个节点的应用程序中被赋值后,这个值就会“自动”发送到这个网络中其他被赋值为接收这一数据的节点中。一个节点通过一个在该节点被定义为输出的网络变量,和与其具有同一类型的被定义为输入的网络变量的其他所有节点,进行潜在的隐式报文通信。
为了提高互操作性,LonTalk协议引入了标准网络变量SNVTs(Standard Network Varia-ble Types)的概念。SNVTs是一组与度量单位(如摄氏温度℃、电压V、长度m)有关的预定义的类型集,被定义为同一种SNVTs的变量具有相同的数据结构,可以直接交换信息。LonTalk协议可支持多达255种SNVTs。
(3)任务调度
为了提高系统的实时性,Neuron C语言引入了一个内部多任务调度程序。抛弃了ANSI C中程序顺序执行的方式,而以事件驱动的方式调度程序的执行。任务调度程序允许程序员以自然的方式,来表达逻辑上并行的事件驱动的任务,同时控制这些任务的优先级。调度程序响应在应用程序when语句中说明的事件或条件,执行用户定义的任务。(www.xing528.com)
(4)预定义事件
Neuron C中预先定义了一些事件(Events)用来描述系统或对象的行为。事件可分为以下5类:
1)系统事件,如Reset、Online、……
2)输入/输出事件,如io_out_ready、io_changes、……
3)报文和网络变量事件,如mag_arrives、nv_update_occurs、……
4)定时器事件,如timer_expires、……
5)用户说明事件:用户说明的表达式,用于判断为真还是为假。
(5)显式报文
对于很多应用场合,网络变量允许最大限度的紧缩和最简单的实现。然而如果需要发送的数据大于31个字节,或使用了请求/响应服务,或者网络变量模式不适合,就应该使用显式报文发送数据。应用程序可以构造最大可达228个字节的报文。由称做报文标识的隐含地址,访问其他节点或节点组,也可以用子网/节点、组、广播通信或唯一的ID号,显式地访问其他节点。报文发送有4种服务:ACKD、UNACKD、UNACKD一RPT、REQUEST。
(6)Run-time运行库
Neuron C语言中扩展了一个Run-time函数库,调用它可以实现事件检查、I/O活动的管理、通过网络接收和发送报文,以及控制Neuron芯片的各种功能。
增加的库函数共分为3类:杂函数,执行控制或网络管理控制,如delay、access-ad-dress;实函数,如bin2bcd;输入/输出函数,如io_out。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。