一、引言
这项工作描述了照明设备ANKA控制系统的I/O控制子系统。控制系统基于PC,因此,采用现场总线作为接口设备适合的解决方案,从而避免复杂的VME。
我们寻找一种综合的解决方案,将所有的通讯细节屏蔽,从而缩短开发周期。LonWork技术被证实是目前最适合我们需求的实用解决方案。它的网络协议包含国际标准组织开放系统互连模型(ISO/OSI)的所有7层协议,将网络设计简化为只需设定应用层信息包格式或甚至只需要给变量幅值。LonWork网络上的每个节点都有名为Neuron芯片的微控制器,这种芯片带有内置网络、I/O接口以及应用功能。它利用NeuronC编程语言进行编程,除了满足标准C语法外,还包括为定义I/O对象构建的说明语法,网络变量以及软件定时器,详尽的I/O控制运行时间库以及网络通讯等。编程和网络通讯都属于事件驱动,只需要简单定义任务,当事件发生时通过内置的任务调度程序执行。
所有这些特性允许我们在设备层面上更多引入智能化,而不是仅仅将I/O口映射到PC。因此,我们在不同层面上有两种主要处理过程:设备驱动器运行在现场总线节点上。它监视物理设备,产生警报,以异步方式对数据进行发送更新等。设备服务器运行在PC上。作为一台面向控制系统其余部分的公共对象请求代理体系结构(CORBA)服务器,它与所有相同类型的设备驱动器通讯并进行管理,并输出设备功能。
二、I/O板
尽管已经存在很多实用的商业I/O接口板,但我们仍然决定开发自己的I/O板,这有助于我们将不同板子类型的数量最小化。总共三种类型包含了控制系统I/O要求的所有情况。我们的板子配备了带有24k字节SRAM和32k字节FLASH存储器的MC143150微控制单片机(Neuron芯片),固定尺寸为小型欧洲格式(160×100mm)。单独的I/O板包括:
Ariadne串行接口板,它支持EIA-232、EIA-422以及EIA-485标准,最大波特率可达115kbps。它包括16k字节的接收和发送缓冲器,板上电源能从230V交流线路、7V~12V未稳压直流电源以及5V稳压直流电源提供电流。
Hera通用数字I/O卡,带24路输入(50mA)、8路输入/输出(50mA)以及8路固体继电器(1A)。所有I/O通过光耦隔离。它为输入和输入/输出提供两种运行模式。卡上还带有一个0~100kHz的16位计数式频率计(绝对误差1.53Hz)。
Zeus高精度I/O卡,带16位ADC和DAC,DAC由触发脉冲输入,并且数字通路采用光耦隔离(8输入和8输出)。ADC的4个模拟通道标称采样频率为1kHz,以4kHz频率过采样时保证精度为0.3LSB。DAC最大工作频率为10kHz。板上额外的外设微控制器(为控制升压和存储环电源而设计)包括:与DAC触发脉冲输入同步的函数发生器,缓存DAC函数和ADC数据的32kb存储器以及外设自检。
三、软件
1. 节点层
我们控制系统中,软件对设备的控制是设备能够感知的,并且从更高层面上屏蔽了I/O细节。由于Neuron芯片CPU功率限制,这种封装只是在一种合理的范围内进行,例如由于Neuron芯片低劣的浮点性能,十六进制数值向工程单位的转化在PC上完成。
我们的控制系统含有超过20种设备类型。使设备尽量智能化的要求增加了设备层面的编程量。考虑到所有这一切,有必要为实现器件驱动器而定义一种带通用通讯接口的通用API。通过这种API,我们简化了新设备驱动器以及与设备通讯的软件的开发过程(设备服务器在PC上运行)。
根据我们“设备感知”现场总线节点的范例,设备驱动器API也允许在同一块I/O板上实现多种相同或不同的设备。
通用设备成为控制系统的一部分必须满足:
接收、处理并应答外来请求;
向观察者传播监控参数及其警报;
设备内部具有程式化的状态机或附加逻辑。
通过LonWork,利用请求/应答机制实现的简单RPC可以很容易满足第一个要求。
通过定义适当的网络参数类型,以及每当从设备读取数据时更新网络变量,可以实现第二个要求。这些网络变量称为监控变量。一对可调的软件定时器控制网络监视变量的传播。“最大定时器”定义了监控变量的周期,“最小定时器”定义了在两个监控变量更新之间所必须间隔的最小时间。最小定时器防止当监控参数值变化太快时造成网络流量过大。一些参数类型也可以定义增量极限来防止过快的传播。每个监视变量都有称为报警的互补网络变量,用于传达警报和对该警报的响应值。
由于传播受“定时器溢出”、“数值改变”或“报警条件”事件触发,因此监控和报警为异步通讯。
我们还编写了通用设备驱动库,这样经过单纯的编译器指示,任何设备驱驱动器都能编译为设备的模拟。由于不同接口板的数目很少,并且详细定义了通讯接口,这是可能实现的。模拟被证明非常有助于代码调试和测试过程。
2. PC侧通讯
美国埃施朗(Echelon)公司提供独立的LNS(LonWork网络服务)平台,以及用于管理LonWork网络的面向对象结构。在Windows环境下,有称为LCA(LonWork组件结构)的ActiveX的LNS封装。不幸的是,目前的LCA版本过于面向互操作。由于这种原因和网络服务的自动化和最简化实现,它向开发者隐藏了很多关键的细节,使其被迫直接使用LNS API。
在开发的初始阶段,我们利用LCA在相对短的时间内开发控制系统原型。第二阶段,我们引入显示报文功能,为此需要LNS层。现在,我们完全避免了LCA,并由此实现了对网络服务的完全控制,同时也避免了上层的ActiveX。
3. 设备配置
为了消除硬编码常数从而让设备驱动器具有通用性,我们将配置参数下载到设备中。为此,与LonWork工程报告中相似,我们开发了自定义的窗口式文件传输协议。我们同样能够利用FTP传送大量数据。
每次设备服务器启动时,它检查节点上是否存在有效运行的设备。如果没有,在数据库中找到可执行路径,将应用程序下载到节点。如果需要,可以对节点配置文件进行更新。
配置数据存储在数据库中,被设备驱动器和设备服务器共同使用。所有数据按工程单位存储,在Neuron应用程序使用前必须转化为原始格式。为简化设备配置过程,以及消除同样的配置常数存在于数据库内多个位置或多种格式,编写了一个模板编译器。这个编译器从NeuronC应用程序中提取原始头文件并将其编译为模板,然后将其填满数据库数据并转化为二进制格式。这种二进制格式能够通过FTP下载,可以直接复制到用于创建模板的相同数据结构中。从而,我们得到了一种将数据库数据转化为Neuron应用程序可识别格式的通用方法。
PC上通过开设FTP服务器可以很容易地实现FTP的特性。服务器运行在并行或串行模式下,可以对256个交易进行处理。集成的报告机制允许处理FTP报告事件。数据交换能够利用本地PC API或者远程Neuron应用程序启动或中断。
一个较好的利用FTP和模板编译器进行配置例子是,将板上的I/O引脚映射到逻辑器件。这种映射是设备配置文件的一部分,通过模板编译器产生,如果需要可以在设备服务器每次启动时下载。
四、性能
ANKA控制最苛刻的情况是,当一个现场总线支路上最大可能的节点(64)以1Hz的频率定期对3个参数进行数据更新,同时以20Hz的频率设置并读取一块板上的一个参数。这对应为每秒212(3×64+20)个非确认输入包以及20个请求/应答包。
测量显示,我们系统每秒能够处理高达230个非确认包(这也是吞吐量的上限),并传送高达40个请求/应答包,这足以满足我们的需求。即使当节点在网络上产生过多通信时,吞吐量也不会降为0,而是保持在每秒约190个包的水平。测试中平均每个包的大小设置为12字节。
我们的测试装置包括11个工作于模拟电源设备的Neuron节点。节点通过1.25Mbit双绞线收发器连接,埃施朗(Echelon)PCNSI卡作为PC接口。测量表明这种接口是数据吞吐量的瓶颈。
五、结论
目前ANKA控制系统由超过200个Neuron节点组成。出于效率和拓扑原因,每台PC上连有7条独立的支路。现场总线系统运行决定稳定,不受干扰,甚至在控制系统其余部分关闭或重启时也能正常工作。
8/2/2006
|