资源描述:
,主要内容LonWorks技术基础LonWorks通信协议与编程语言LonWorks控制网络的应用开发建筑物自动化总线BACnet其他常用的楼宇测控总线,随着网络技术的发展,集散控制系统结构模式的建筑物自动化系统正在向现场总线控制系统结构模式转化。现场总线控制系统(FCS)是一种用于现场仪表与控制系统和控制室之间的一种全分散,全数字化的,智能、双向、多变量、多点、多站的分布式测控系统。FCS模式简化了网络结构,用一条总线就可将系统所有监控模块连接起来,使整个系统的可靠性大大提高,同时通过在总线上增减节点就能随意增加或减少监控模块,系统的扩展能力强。,自上世纪80年代末以来,有几种现场总线技术已逐渐形成其影响并在一些特定的应用领域显示出其优势。下面是有代表性的几种。(1)CANCAN是控制局域网络的简称,主要用于过程监测及控制。其总线规范现已被ISO国际标准组织制订为国际标准。(2)ProfibusProfibus是德国国家标准DIN19245和欧洲标准EN50170的现场总线标准。(3)FF(基金会现场总线)基金会现场总线是在过程自动化领域得到广泛支持和具有良好发展前景的技术。(4)HARTHART最早由Rosemount公司开发并得到八十多家著名仪表公司的支持,于1993年成立了HART通信基金会。,(5)LonWorks技术LonWorks是由美国Echelon公司推出并由它与Motorola、Toshiba倡导于1990年正式公布形成的局部操作网络技术,它采用了ISO/OSI模型的全部七层通信协议,面向对象的设计方法,通过网络变量把网络通信设计简化为参数设置。在现场总线控制系统中,LonWorks技术和BACnet技术是目前智能建筑发展中用于楼宇设备控制中的较多选择。除此以外,CAN、EIB、KNX、X-10和CEBus也有应用。,1.1LonWorks技术基础,1.1.1LonWorks概述LonWorks是由美国Echelon公司推出并与Motorola、Toshiba倡导于1990年正式公布形成的局部操作网络(LON)技术,它采用了ISO/OSI模型的全部七层通信协议,面向对象的设计方法,通过网络变量把网络通信设计简化为参数设置,被誉为通用控制网络。LonWorks的最大优点是其完全的开放性。它采用分布式的智能设备组建控制网络,同时也支持主从式网络结构。LonWorks支持多种传输介质,如双绞线、电力线、同轴电缆、光缆及无线电波、红外等。Nenron芯片是LonWorks技术的核心,它同时具备了通信与控制功能,并能完成LonWorks技术中所有关于网络的操作。LonWorks技术的另一个重要特点是它的互操作性。,1.1.2LonWorks控制网络的结构从产品和功能上划分,LonWorks控制网络的结构由网络协议、网络传输介质、网络设备、执行机构和管理软件五个部分构成。其中,网络设备包括LonWorks节点、路由器和网关等。在LonTalk协议的协调下,分散在现场的众多设备融为一体,形成一个包含多介质的、完整的控制网络。LonWorks控制网络的结构框图如图6-1所示。,图6-1LonWorks控制网络的结构框图,,一、LonWorks节点LonWorks网络的基本单元是节点。一个典型的现场控制节点主要包括Neuron芯片、电源、一个收发器和有监控设备接口的I/O电路。LonWorks节点按其结构可以分为两种类型,一是以神经芯片元为核心的智能节点,一是采用MIP结构的智能节点。1.以Neuron芯片为核心的控制节点Neuron芯片是一个复杂的超大规模集成电路元件,可以实现网络功能和执行节点中特定的应用程序。该芯片通过独特的硬件、固件相结合的技术,集应用CPU、I/O处理单元和通信处理器于一体,使其外加一个收发器即构成一个典型的现场控制节点。图6-2为一个典型节点的结构框图。,,图6-2典型节点的框图,,2.采用MIP结构的控制节点所谓的MIP(微处理器接口程序)结构即是将Neuron芯片作为其他微处理器的通信协处理器,用高性能的主机资源来完成复杂的测控功能。因此该种结构也称为基于主机(hostbase)的结构。其典型结构图如图6-3所示。,图6-3基于主机结构的节点结构图,二、网络协议LonWorks技术采用LonTalk协议。LonTalk协议提供了一整套通信服务,使网络上的节点应用程序对其他节点发送和接收报文时,无需知道网络的拓扑、名称、地址或其他节点的功能。通常,LonTalk协议的内容都固化在Neuron芯片中,而不需开发人员了解其细节。三、传输介质传输介质是网络中的物理通路,也是通信中传递信息的实际载体。LonWorks网络中常用的传输介质有双绞线、电力线、同轴电缆、光缆、无线与卫星通信。四、网络管理在LonWorks网络中,需要一个网络管理工具,用于网络的安装、维护和监控。Echelon公司提供了LonMakerforWindows软件用于实现这些功能。网络管理主要有以下三个方面的功能,即网络安装、网络维护和网络监控。,1.1.3Neuron神经元芯片,一、Neuron芯片Neuron芯片是LonWorks技术的核心器件。该芯片是一个超大规模集成电路元件,可以实现网络功能和执行节点中的特定应用程序。神经元芯片是通过独具特色的硬件、固件相结合的技术,使一个神经元芯片几乎包含一个现场节点的大部功能。Neuron芯片主要有MC143150和MC143120两大系列,MC143150支持外部存储器,适合更为复杂的应用;MC143120则不支持外部存储器。图6-4示出了Neuron芯片的内部结构。图6-5示出了Neuron芯片的引脚配置图。,,图6-4Neuron芯片结构图,,图6-5Neuron芯片的引脚配置图,,二、处理器单元一个Neuron芯片中包含三个8位微处理器,分别是介质访问控制(MAC)处理器、网络处理器(NET)和应用处理器(APP)。图6-6为三个处理器和存储器结构框图。其中,MAC处理器用于完成开放式系统互连参考模型中的第一层和第二层的功能,实现介质访问的控制与处理;NET用于完成第三层至第六层的功能,包括处理网络变量、事务处理、背景诊断、软件定时器、路由、权限证实和网络管理等,并负责网络通信控制、发送和接受数据包等。,图6-6Neuron芯片中三个微处理器结构框图,,三、存储器3120仅含有内部存储器,3150除含有内部存储器外,还可外接存储器。(一)内部存储器Neuron芯片的内部存储器有三种,即EEPROM、静态RAM和ROM。1.EEPROM所有的Neuron芯片内部至少都有512B的EEPROM存储器,用来存储①网络配置和寻址信息;②由芯片制造商写入的唯一的48bNeuron芯片ID码;③可选的用户写入的应用代码和数据表。,,在EEPROM中,有8个字节是在制造芯片时写入的,其中包括6个字节的ID码和2个字节的设备代码。其余内容可在程序控制下写入。2.静态RAM3120和3120E1芯片中有1024B的静态RAM,3150和3120E2芯片中有2048B的静态RAM。静态RAM可以用作①堆栈段,存储应用和系统数据;②LonTalk协议的网络缓冲区和应用缓冲区。3.ROM所有的3120芯片上都有10240B的ROM,用于存储LonTalk协议代码、实时任务调动程序和应用函数库。,(二)外部存储器3150可寻址的总地址空间为64kB。其中内部存储器占用6kB空间,因此允许寻址的外接存储器空间为58kB。在外部地址空间中,有16kB用来存储Neuron芯片固件、LonBuilder开发调试器及预留区。其余42kB用来存储用户的应用程序和数据,也可用作LonTalk协议需额外添加的网络缓存器和应用缓存器。外部存储器空间可由RAM、ROM、PROM、EPROM、EEPROM或闪存组合占用。,,,(三)MC143150存储器分布①512B的可编程EEPROM,用于存储i网络配置和寻址信息;ii由制造商写入的唯一的48位Neuron芯片ID码;ⅲ用户写入的应用代码和只读数据。②2048B的静态RAM,用于i堆栈段,存储应用和系统数据;ⅱLonTalk协议的网络缓冲区和应用缓冲区。③最高为65536B的存储器地址空间,可为ROM、EPROM、EEPROM或RAM。处理器通过外部存储器接口可访问其中的59393B;另外的6144B为内部映射。需要16384B的外部存储器来存储LonWorks操作系统,它包含有MAC和网络处理器执行的系统固件以及支持应用程序的执行部分。余下的外部存储器可用于i)存储用户写入的应用程序代码;ii)存储附加的应用程序读/写数据;ⅲ)附加的网络缓冲区和应用程序缓冲区。,(四)MC143120存储器分布①512B的可编程EEPROM(MC143120E2为2048B),用于存储i网络配置和寻址信息;ii由制造商写入的唯一的48位Neuron芯片ID码;ⅲ用户写入的应用代码和只读数据。②1024B的静态RAM(MC143120E2为2048B),用于i堆栈段,存储应用和系统数据;ii)LonTalk协议的网络缓冲区和应用缓冲区。除掉电情况外,RAM的状态一直保持不变。③10240B的可屏蔽ROM,用于存储i)MAC和网络处理器执行的系统固件;ⅱ)支持应用程序的操作系统。,,图6-7MC143150芯片图6-8MC143120DW/BIDW芯片存储器分配存储器分配,,MC143150的外接存储器总线有8根双向数据线,16根地址线和2根由Neuron芯片驱动的控制输出线(R/W和E)。表6-1列出了MC143150的外部存储器接口引脚。表6-1MC143150的外部存储器接口引脚。,,四、输入/输出①11根双向I/O管脚Neuron芯片具有11管脚(IO_0IO_10)的I/O口,这11个I/O口可应用于不同的配置,为外部硬件提供灵活的接口。IO_4IO_7管脚有可编程的上拉电阻,IO_0IO_3管脚有高电流吸收能力(20mA,0.8V),其他具有标准吸收能力(1.4mA,0.4V)。所有管脚均有滞后的TTL电平输入。IO_0IO_7还带有低电平检测锁存。②定时/计数器Neuron芯片带有两个片内定时/计数器。定时/计数器1称为多路选择定时/计数器,它的输入可通过一个多路选择开关,从IO_4IO_7中选择一个,输出可连至IO_0。定时/计数器2称为专用定时/计数器,其输出为IO_4,输出为IO_1。每个定时/计数器包括可以被CPU写入的16bit装入寄存器;16位计数器;可以被CPU读出的16bit锁存器。但要注意,前述管脚并不是固定的分配给定时/计数器。,,,图6-11定时/计数器外部连接图,③专用编程语言NeuronC可以将11个应用I/O配置成34种不同的I/O对象。通过函数io_in和io_out可对所定义的I/O进行输入输出操作,有效地实现这11个I/O的测量、计时和控制等功能。上述34种I/O对象中,按其输入/输出方向来分,有输入、输出和双向三大类;按对象的类型来分,可分为直接I/O对象、并行I/O对象、串行I/O对象和定时/计数器I/O对象。,五、通信端口1通信及通信端口Neuron芯片可支持多种通信介质,使用最广泛的是双绞线和电力线,还有无线射频、红外、光纤和同轴电缆。Neuron芯片有5个通信端口,通过配置可与多种介质连接,实现较宽范围的数据传输速率。通信端口可工作在以下三种模式之一单端、差分和专用工作模式。各种工作模式下的管脚定义如下表所示。,(1)单端模式是最常用的一种模式,用于实现收发器与多种通信介质的连接,广泛应用于RF(无线射频)、IR(红外)、光纤和同轴电缆等通信介质的接口场合。,图6-4单端模式的通信端口配置,,,(2)差分模式在差分工作模式下,Neuron芯片中的内置收发器能够配合外部无源部件有区别地驱动和感知双绞线传输线。差分模式在大多数场合与单端模式类似,他们的主要区别在于驱动/接收电路被设置为差分线路传送。,图6-5差分模式的通信端口配置,,(3)专用模式在某些特定场合,需要Neuron芯片提供无编码格式和无同步头的数据包。在这种情况下,需要一个智能的收发器,处理从网络上或Neuron芯片上来的数据。,六、时钟系统在Neuron芯片中有振荡器,利用外接晶振可产生输入时钟。Neuron芯片输入时钟频率范围在625kHz-10MHz之间。有效的输入时钟频率为10、5、2.5、1.5MHz和625kHz。另外,外部时钟也可驱动Neuron芯片的管脚CLK1。在这种情况下,CLK2必须悬空或驱动不超过一个外部CMOS的负载。,,图6-14Neuron芯片的时钟信号产生电路,七、睡眠/唤醒机制Neuron芯片可在软件控制下进入低功耗睡眠模式。在这种模式中,系统时钟、定时/计数器关闭,但是使用的状态信息被保留。当有如下的输入转换时,正常的系统操作被恢复。I/O管脚的输入IO4-IO7。服务功能管脚。通信端口差分模式时的CP0、CP1,单端模式时的CP0,专用模式时的CP3。,八、服务管脚SERVICE管脚是Neuron芯片里的一个非常重要的管脚,在节点的配置、安装和维护的时候都需要使用该管脚。该管脚既能输入也能输出。输出时管脚通过一个低电平来点亮外部的LED,LED保持位量表示该节点没有应用代码或芯片已损坏,LED以1/2Hz的频率闪烁表示该节点处于位配置状态。服务管脚电路如右所示。,,九、看门狗定时器为保证在软件出错和存储器故障时不死机,Neuron芯片内部为3个处理器提供1个看门狗定时器。如果应用程序或系统程序不能周期性地复位这些定时器,Neuron芯片将自动复位。Neuron芯片在睡眠模式时,屏蔽所有的看门狗定时器。十、复位复位管脚是一漏极开关、双向且低电平有效的管脚,其内部的电流源作为一上啦电阻。复位管脚既可以被外部信号置为低电平有效,也可以在内部控制下产生低电平有效。引起复位管脚复位的内部控制有①软件(应用程序或来自于网络的复位信息);②看门狗定时器超时;③检测到低压。,通常复位管脚在下列情况下会起到关键作用①VDD上电;②VDD电源波动;③程序恢复;④VDD掉电。在复位期间,I/O管脚、通信端口以及复位管脚都处于高阻状态。在复位管脚释放后,Neuron芯片允许在执行应用程序前振荡器起振,稳定并完成软硬件的初始化。,1.1.4通信,LON总线的一个非常重要的特点是它对多种通信介质的支持。由于突破了通信介质的限制,LON总线可以根据不同现场环境选择不同的收发器和介质。双绞线收发器、电力线收发器、无线射频收发器、光纤收发器和红外收发器都可以用于数据通信中。而双绞线和电力线收发器应用最为广泛。一、双绞线收发器双绞线收发器是一种最通用的收发器,配置双绞线收发器可以满足其性能价格比的要求。双绞线收发器与Neuron芯片的接口有三种类型直接驱动、EIA-485和变压器耦合。,1.直接驱动直接驱动使用Neuron芯片的内部收发器,外部配加限流和ESD保护电路,如图6-16所示。如果LonWorks网上的节点数不超过64个,各节点使用普通电源供电,最高通信速率为1.25Mbps,传输距离最远为30m,选择直接驱动收发器最为理想。,,2.EIA-485在不改变外部参数的情况下,EIA-485收发器能支持多种数据传输速率,最高可达1.25Mbps。EIA-485收发器通用方式的电压范围比直接驱动收发器要宽,但略窄于变压器耦合收发器。它的公共供电范围为-7~12V,如果添加光电隔离器,可将电压范围提高。下图是一个EIA-485接口的典型配置电路。,,3.变压器耦合变压器耦合适用于需要高性能、高隔离度、高抗干扰能力的场合。变压器耦合的设计数据传输速率可达1.25Mbps。变压器耦合收发器的种类很多,其中FTT-10A自由拓扑收发器是使用最为广泛的一种。该收发器最突出的特点是具有十分灵活的拓扑结构,能够支持星形、环形及总线形拓扑结构。二、电力线收发器电力线收发器是将通信数据调制成载波信号或扩频信号,然后通过耦合器耦合到220V或其他交直流电力线上,甚至是没有电力的双绞线。这样做的好处是能够利用已有的电力线进行数据通信,大大减少了繁琐的布线。,三、无线收发器符合LonWorks技术的无线射频收发器可用于许多场合,且有不同的频率范围可供选择。在低成本、低发射功率的应用场合,可使用单一频率(350MHz)的收发器。对于需要高发射频率的应用场合,Motorola公司开发的收发器可工作在450MHz的频率范围内。使用无线射频收发器的同时还需要一个大功率的发射机。与无线射频发射器接口时,Neuron芯片的通信端口设置为单端工作模式,此时最大数据传输速率为4800Bd。,四、光纤收发器目前最常用的LonWorks光纤收发器是美国Raytheon公司开发的光纤收发器。该收发器通信速率为1.25Mbps,最长通信距离为3.5km,采用LonWorks标准的SMX收发器接口,每一个收发器包含两路独立光纤端口,可以方便地实现光纤环网,增加系统的可靠性。,注现在,各厂商生产芯片时已经将收发器固化在芯片中,用户只需按照所需选用芯片即可。,6.2LonWorks通信协议与编程语言,6.2.1LonWorks通信协议LonTalkLonTalk协议是LonWorks技术的核心。它遵守国际标准化组织的分层体系结构要求,提供了一整套通信服务,网上任一节点使用该协议都可以与同一网络上的其它节点互相通信。LonTalk协议遵循了ISO的OSI模型。LonTalk协议提供了OSI参考模型的所有七层协议。,LonTalk协议的有关服务如下物理信道管理(第1层、第2层);命名、编址与路由(第3层、第6层);可靠的通信及有效地使用信道带宽(第2层、4层);优先级(第2层);远程控制(第5层);证实(第5层);网络管理(第5层);网络接口(第5层);数据解释与外部帧传输(第6层);应用程序兼容性(第7层)。,LonTalk网络通信协议是LonWorks技术中的核心内容之一。它提供了ISO/OSI参考模型所定义的全部七层服务,这是任何其他总线技术所不具备的。另外它在拓扑结构、寻址方式、冲突检测、响应优先级和报文服务等方面都具有自己独特的优势。因而它可以支持一个多节点、多信道、不同速率和高负载的自由拓扑结构的大型监控网络可靠地工作。而LonTalk通信协议的所有内容,都已固化在小小的Neuron芯片中,开发者并不需要知道其细节。,一、物理层LonTalk协议的物理层支持多种传输介质,如双绞线、电力线、同轴电缆、光纤、无线电和红外线等。每种传输介质都有对应的收发器作为节点与传输介质之间的通信接口。不同的收发器采用不同的数据编码和解码方案。每一种传输介质称为一种信道,一个LonWorks网络由一个或多个信道组成,信道之间通过路由器连接。信道的数据传输速率与传输介质、传输距离、收发器的性能和数据包的长度等因素有关,主要依赖于所使用的传输介质和收发器的设计。对于同一种传输介质,可以设计多种传输速率的收发器,从而在通信距离、通信速率、节点能耗和成本上取得平衡。,二、数据链路层LonTalk协议的链路层提供介质访问控制、帧传输、数据编码、CRC错误校验、冲突避免、冲突检测与优先级等机制。1.带预测的P-坚持CSMA算法LonTalk协议使用一种改进的载波监听多路访问(CSMA)介质访问技术,称为带预测的P-坚持CSMA。该算法既保留了CSMA的优点,又克服了它在控制网络中的不足。在带预测的P-坚持CSMA算法中,如果一个节点需要发送数据欲占用信道时,首先在T1周期中检测信道上有没有信息发送,以确认网络是否空闲。随后节点产生一个随机传送延时T,T为0~W时间片T2中的一个。如传送延时时间到,信道仍然空闲,该节点开始传送报文;否则节点检测到信道上有信息发送,接收信息,然后再重复访问信道。图6-18为带预测的P-坚持CSMA算法示意图。图中的T1为空闲时间,T2为随机时间。,图6-18带预测的P-坚持CSMA算法示意图,,2.冲突检测当使用的传输介质(双绞线)支持硬件冲突检测时,收发器如果检测到冲突,LonTalk协议可立即让节点重发被冲突破坏的数据包。如果无冲突检测,在采用应答或请求/响应服务时,只有在未收到目标节点的应答或响应,且事务定时器溢出后才能确定发送失败,然后再重发,而这样则要花费很长时间。因而,要保证网络的响应快速性及通信可靠性,必须选择合适的服务类型并采用冲突检测电路。3.冲突避免LonTalk协议中的带预测的P-坚持CSMA算法也是一种冲突避免算法。该算法使得网络在过载时,仍能达到最大的通信量,而不致于发生冲突过多而导致瘫痪的现象。,4.优先级为了缩短对重要数据的响应时间,LonTalk协议提供了一个可选择的优先级机制。该机制可为每一个需要优先级的节点分配一个特定的优先级时间片,在发送过程中,优先级数据报文在这个特定的时间片里将报文发送出去。优先级时间片取值范围为0-127,0表示立即发送无需等待,1表示等待一个时间片,2表示等待两个时间片,以下类推。可见,优先级低的节点需要等待的时间片要多于优先级高的节点。而且,优先级时间片要加在节点的随机等待时间T之前,非优先级节点必须等待优先级节点的时间片都完成之后,才能在T结束后发送报文,因此高优先级的节点必然比低优先级的节点具有更快的响应时间。,三、网络层LonTalk协议的网络层提供网络地址分配、路由选择、流量控制、网络服务和网络证实等服务。(一)命名、寻址名字是用来唯一标明某个对象的。当创建一个对象时名字即被赋予,且终身不变。Neuron芯片的名字是一个48b的ID码,它是唯一的且在Neuron芯片的生命期内不会改变。地址是在一类对象类中唯一标识一个或一组对象的标识符。与名字不同的是,地址在创建之后被赋予且可以更改。,1.域地址域是一个或多个通道上节点的逻辑组合。只有在一个域中的节点才能相互通信。LonTalk协议虽然不支持两个域之间的通信,但可通过应用程序实现两个域间的数据报文的传送。域标识使用域标识符,域标识符可以配置为0B、1B、3B或6B。2.子网地址子网是同一个域中最多127个节点的逻辑集合。每个域最多可以有255个子网。一个子网中的所有节点都必须位于同一个网段上,子网不能跨越智能路由器。3.节点地址一个子网中的每一个节点都被赋予一个唯一的节点号,其长度为7b。这样,一个子网有127个节点,一个域可容纳32385个节点。,4.组地址组是一个域中节点的逻辑集合。不同于子网,分组中的节点对其物理位置无任何限制。一个节点可以同属于15个分组。组可以由长度为1B的组号来标识,一个域最多可定义256个组。5.NeuronIDNeuron芯片的48bID码可以用作地址。该地址由网络管理工具在节点安装时使用,称为域/NeuronID编址方式。6.编址方式节点使用的编址方式有五种,即域、域/子网、域/子网/节点、域/组、域/子网/NeuronID,不同编址方式的源地址和目标地址所需要的字节数也不同。,7.寻址方式LonTalk协议提供的寻址方式有三种,即单点寻址、多点寻址和广播寻址。单点寻址即是将数据报文传递到某个节点;多点寻址是指在对节点编组后,将数据报文传送到某组节点中;广播寻址则是将数据报文传送到某个子网或某个域。,(二)路由器路由器是LonWorks技术的一个非常重要的组成部分,其主要作用是连接不同传输介质的LonWorks网络,实现多种介质的混合组网。路由器有四种,即中继器、网桥、学习路由器和配置路由器。此处将简要介绍学习路由器和配置路由器。这两种路由器都是智能路由器,它们可以提高整个系统的容量和可靠性。1.学习路由器学习路由器可以用来监视网络的通信量、学习域/子网的网络拓扑关系,然后用其所学知识有选择性地确定数据包的路由。但是,学习路由器不能学习组拓扑,因而不能传递使用组地址的数据包。,图6-19学习路由器学习过程示意图,,2.配置路由器配置路由器也是借助内部的路由表在通道间有选择地路由消息包。与学习路由器不同的是,其内部的路由表是由网络管理器建立的。网络管理器通过建立子网地址及组地址的路由表来优化网络的通信能力,使网络的通信量达到最佳。,四、传输层LonTalk协议的传输层管理报文的执行和报文的二次检测,负责点对点及点对多点的可靠传送,提供信息证实服务等。传输层有五个定时器用于辅助实现其服务。这五个定时器是事务定时器、重复定时器、组接收定时器、非组接收定时器和等待空闲缓存器定时器。这些定时器的值均由网络管理工具自动计算并配置。(一)基本报文服务LonTalk协议提供了四种基本报文服务,即应答服务、请求/响应服务、非应答重发服务和非应答服务。报文服务是由Neuron芯片内的NET自动完成的,不需人工干预。⑴应答服务。应答服务是最可靠的报文服务。使用应答服务时,当报文被发送到一个节点或一组节点时,发送节点希望收到所有应收到该报文的节点发回应答,如果在规定时时间里没有收到应答报文,发送节点会重发这条报文。,⑵请求/响应服务。请求/响应服务也是最可靠的服务类型。当报文被发送到目的节点时,发送节点期望收到接收方发送的响应报文。但在发送响应报文之前,接收方要对接收到的报文进行处理。不同的是,在响应报文中可以包含数据。⑶非应答重发服务。该种服务方式的可靠性要低于前两种。发送方向目的节点重复发送报文,无需应答报文。当向一组节点广播式发送报文时,为避免应答报文过多而引起网络阻塞,通常采用非应答重发服务。⑷非应答服务。非应答服务的可靠性最低。发送端只向目的节点发送一次报文,并且无需应答。这种服务类型适用于对可靠性要求较低,但需要速度较高、报文长度较长的场合。,(二)证实服务LonTalk协议支持证实服务,它允许报文的接收方确定发送方是否有权发送该报文。要使用证实服务,可在网络安装时为收发双方约定一个6字节的密钥。证实服务可以防止对节点或应用的非法访问。五、会话层LonTalk协议的会话层为会话用户提供服务和活动管理。主要是提供请求/响应机制,即通过节点的连接来进行远程数据服务。使用该机制可以遥控实现远端节点的过程建立。六、表示层和应用层LonTalk协议的表示层和应用层主要提供以下几种服务网络变量服务、显式报文服务、外来帧传送服务、网络管理服务和网络跟踪服务。,6.2.2NeuronC语言,NeuronC语言是专门为Neuron芯片设计的程序设计语言,它采用面向对象的编程方式,用事件驱动任务。它在标准C的基础上进行了自然扩展,删除了标准C中一些不需要的功能,与采用其他编程语言相比,使控制装置的实时性得到了增强,是一个开发LonWorks应用的有力工具。虽然NeuronC以ANSIC为基础,但在数据类型上和ANSIC仍有一定的差别。NeuronC定义char为8b,shortint为8b,longint为16b,Boolean为8b。NeuronC支持ANSIC的定义类型typedefs、枚举类型enums、数组类型(arrays)、指针类型pointers、结构类型structures和联合类型unions。,NeuronC有自己的扩展运行库和语法。这些扩展功能包括定时器、网络变量、显式报文、多任务调度、EEPROM变量和其他多种功能。与C比较,NeuronC提供了以下几个新功能①一个新的对象类网络变量(networkvariable),简化了节点间的数据通信和数据共享。②一个新的语句类型when语句,引入事件(events)并定义这些事件的当前时间顺序。用事件驱动程序。③I/O操作的显式控制,通过对I/O对象(object)的声明,使Neuron芯片的多功能I/O得以标准化。④支持显式报文,用于直接访问基础的LonTalk协议服务。,一、事件驱动Neuron芯片的任务调度采用事件驱动(eventdriven)方式,即当一个给定事件发生的条件为真时,与该事件关联的一段代码(称为任务)被执行。调度程序允许自定义任务,如输入管脚状态的改变,网络变量的更新或计时器的终止等。也可以定义某些任务作为具有优先级的任务,从而使一些重要事件能够得到优先服务。在NeuronC中,事件是通过when语句来定义的,一个when语句包含一个表达式,当这个表达式为真时,表达式后面的代码被执行。用于when语句中的事件共有五种类型,即系统级事件、输入输出事件、定时器事件、网络变量和报文显示事件、用户自定义事件。,例一个简单的when语句和与之相关联的定时关闭LED显示灯的任务。stimerled_timerIO_2outputbitio_ledwhentimer_expriresled_timer{io_outio_led,OFF},,二、定时器NeuronC语言提供了两种定时器对象毫秒定时器和秒定时器。毫秒定时器的计时范围为1–64000ms,秒定时器的计时范围为1–65535s。在一个应用程序中,最多可以定义15个计时器。这些计时器是由软件实现的,与Neuron芯片上的两个硬件定时/计数器无关。声明一个定时器对象的语法如下mtimer[repeating]timer-name[initial-value];stimer[repeating]timer-name[initial-value];,三、输入/输出对象Neuron芯片有各种各样用于实现输入/输出函数的内部接口选项。在实现I/O功能之前,必须首先说明用以监测和控制Neuron芯片的11个I/O管脚的I/O对象,即对I/O对象进行定义。I/O对象的基本类型有四种,即直接(direct)I/O对象、定时/计数器(timer/counter)I/O对象、串行(serial)I/O对象和并行(parallel)I/O对象。在为Neuron芯片说明了I/O对象之后,可以用NeuronC提供的I/O函数访问这些对象。I/O对象也可以与NeuronC事件相连接,因为I/O的改变经常影响任务的调度。,定义when语句中的事件一般分为两种类型预定义事件和用户定义事件。预定义事件使用编译程序内部固有的关键字。用户定义事件可以使用任何有效的NeuronC表达式。由于预定义事件使用的代码空间较少,要尽可能使用预定义事件。NeuronC中常用的预定义事件有19个。如_completes//当所有输出事务完成;io_in_ready//当并行口输入数据准备好;msg_arrives//接收到显式报文。用于对I/O对象类型进行显式说明的语句格式如下图所示。,四、网络变量定义网络变量是任何数据项(温度、开关值或执行器位置设定),他们是期望从网上其他装置得到的(输入NV)或期望提供给网上其他装置的(输出NV)一个特定装置应用程序。网络变量可以是整型、字符型或结构等类型。从通信的角度来看,网络变量可分为输入或输出两种,对于一个输出的网络变量可以和其他节点的多个输入网络变量互联。如果一个输出网络变量的值被更新,则该值会通过网络传给所有的与该输出变量相连接的其他节点的输入网络变量。网络变量的传送是通过LonTalk协议来实现的,由于LonTalk报文的传送是透明的,应用程序不需要任何显式的指令来接收或发送更新后的网络变量。可见,网络变量大大地简化了开发和安装分布系统的过程。,在一个Neuron芯片上运行的NeuronC应用程序最多可以定义62个网络变量。主机应用程序可以定义更多的网络变量。一个网络变量的长度不能超过31字节,如果数据超过32字节可以使用显式报文。声明一个网络变量对象的完整语法为network|output[netvar_modifier][class]typeconnection_info]identifier[initial_value],图6-21所示是一个用开关控制灯的简单应用网络,它使用网络变量来连接开关节点和灯节点。图中,开关节点的输出是代表该开关状态的网络变量,灯节点的输入是表示灯状态的网络变量,要求这两个网络变量必须有相同的网络变量类型。,图6-21网络变量连接示意图,,例灯节点的应用程序includenetworkSNVT_lev_discnv_lampST_ON;defineLED_ON1defineLED_OFF0IO_0outputbitioLEDLED_OFF;whennv_update_occursnv_lamp{io_outioLED,nv_lampST_OFFLED_ONLED_OFF},例开关节点的应用程序programenable_to_pullupsincludenetworkoutputSNVT_lev_discnv_switchST_OFF;defineBUTTON_DOWN1defineBUTTON_UP0IO_4bitioBUTTONBUTTON_UP;whenio_changesioBUTTONtoBUTTON_DOWN{nv_switchnv_switchST_OFFST_OFFST_ON;},五、显式报文(一)概述节点之间的通信除了通过网络变量外,还可以通过显式报文。同网络变量不同的是,显式报文的数据长度是可变的。因此在数据量较大时,使用显式报文比使用网络变量更加有效。显式报文是一个结构变量,该结构分为输出显示报文、输入显示报文、响应输出报文和响应输入报文。显式报文必须通过函数显式地发送与接收。NeuronC定义了两个对象msg_out和msg_in来表示发送和接收的显式报文。用函数msg_send()控制报文的发送,用函数msg_receives()或预定义事件whenmsg_arrives接收报文。,显式报文有四种服务方式,即确认方式、非确认重复方式、非确认方式和请求/应答方式。(二)用于报文处理的事件和函数1.发送报文确认的事件msg_completes事件当一个报文输出后,无论成功与否,该事件变为TRUE。msg_succeeds事件当一个报文被成功地发送后,该事件为TRUE。msg_fails事件当一个报文发送失败时,该事件变为TRUE。,2.用于请求/应答方式的函数、对象和事件resp_out对象是一个输出响应对象。resp_in对象是一个输入响应对象。resp_send()函数该函数使用resp_out对象发送一个响应。resp_cancel()函数该函数取消被建立的响应,同时释放相关联的resp_out对象。resp_arrives事件该事件用于接收相应的预定义事件。如果响应到达,则该事件变为TRUE。resp_receive()函数该函数将一个响应接收到resp_out对象中。如果接收到一个新的响应,该函数返回TRUE;否则返回FALSE。,3.用于显式地分配缓冲区的函数msg-alloc()函数该函数为输出报文分配一个无优先级的缓冲区。如能够分配msg_out对象,函数返回TRUE;如不能分配msg_out对象,函数返回FALSE。msg_alloc_priority()函数该函数为输出报文分配一个优先级缓冲区。如能够分配msg_out对象,函数返回TRUE;否则,函数返回FALSE。msg_free()函数该函数为一个输入报文释放msg_in对象。resp_alloc()函数该函数为一个输出响应分配一个对象。如果能够分配resp_out对象,函数返回TRUE;否则返回FALSE。resp_free()函数该函数为响应释放resp_in对象。,六、其他功能NeuronC语言还包括以下一些功能Neuron芯片固件调度程度、调度复位机制、旁路方式、看门狗定时器、补充的预定义事件、睡眠方式、错误处理及存取节点错误状态。这些功能大部分以函数和事件的形式提供。虽然显式报文使网络通信更加灵活,但在NeuronC编程的过程中,并不提倡使用显式报文进行通信,一般在网络变量不适合使用的场合才使用显式
展开阅读全文