随着网络技术向工业控制领域的渗透,产生了工业控制网络,它广泛地应用于对生产、生活设备的控制,对生产过程的状态检测、监视或控制,技术上要求具备高度的可靠性,实时性和安全性。它的网络节点除了常规微机、工作站以外,更多的是具有计算与通信能力的智能电器设备和仪表。因此,智能电器的主要特征就是:产品内嵌微处理器,有通信接口,能与现场总线连接,且采用网络标准化结构等,它不仅完成对现场的各种控制任务,而且还肩负着各类信息的网络远程采集、传输和控制功能,即实现信息控制与管理的网络化。随着目前控制网络结构形式的迅速发展,协议种类增多而协议标准各异,造成诸多问题,开始影响控制网络的进一步发展,而且也成为影响智能电器的研发、产品化、工程应用与推广的主要因素。因此,智能电器作为控制网络中的一个节点,应用场合往往是工业现场,在目前多种总线系统并存的情况下,控制网络的互联技术和智能电器控制网络规范研究成为用户和厂家关心的焦点问题。目前的研究与应用主要采用系统级集成(基于OPC的系统级集成方法)和设备级集成(基于网关的设备级集成)的方法来解决异构控制网络互连问题。
1 基于DeviceNet总线的控制网
络系统结构
智能电器设备实现信息控制与管理的网络化,就是从传统的现场开关量、模拟量信号控制方式转化为通过现场总线构成的网络控制方式,实现网络化、开放式、分散式、全数字化控制。基于DeviceNet总线的控制网络系统结构如图1所示,主要由三部分组成:DeviceNet总线、上位机(主站)和智能电器节点(从站)。
DeviceNet是现场总线国际标准IEC61158的第二类总线的设备级网络,也是国际标准IEC 62026《低压开关设备和控制设备控制器一设备接口(CDI)》所推荐的第二种总线。我国已公布国标GB/T18858.3-2002等同采用该标准。DeviceNet是基于CAN总线技术的现场总线,它沿袭了CAN总线的短报文帧传输、无破坏性的总线仲裁技术、强大的故障诊断能力和抗干扰能力等优点,主要用于实时传输、控制数据。由于智能电器控制网络系统中的通信数据量不大,有些信息的处理可以由智能电器节点本身实现就地控制。因此,可以充分利用DeviceNet特性,对通信数据进行良好的配置以达到实时性、安全性和可靠性的要求。
上位机(包括DeviceNet接口卡)实现智能电器与主机PC的高速数据交换,主要负责对整个智能电器控制网络系统的管理和调度;同时,主机可通过内置网卡或Modem连接到以太网,与以太网上其他总线组成的子网进行数据交换。目前已有商品化的DeviceNet总线PC接口卡。
智能电器节点主要包括微处理器基本系统、采集控制逻辑、系统监测与保护,DeviceNet通用I/0(含A/D,数字I/0)等,主要完成对现场信号检测、参数显示和控制任务,它和传统电器产品的本质区别是内嵌有具有控制与通信功能的DeviceNet通用I/0接口,它不仅是智能电器的组成部分,而且还可独立作为DeviceNet网络I/0设备,主要用于连接工业控制系统中的按钮、开关、电磁阀、继电器、指示灯、照明灯等各种现场装置。由于其开发过程涉及DeviceNet核心协议内容的实现,是开发DeviceNet网络智能电器的基础。目前其开发途径主要是以微处理器为平台,在确定DeviceNet通用I/0的功能和硬件构成的基础上,重点进行DeviceNet协议栈及应用层的软件设计。
2 DeviceNet通用军0的硬件电路设计
硬件电路主要包括DeviceNet总线通信接口和数据采集I/0两部分,如图2所示。
2.1 DeviceNet总线通信接口
主要由微处理器、DeviceNet接口、拨码开关及LED显示三部分组成。这部分主要实现与DeviceNet总线的接口以及报文的收发。
微处理器78E58是8位内置看门狗的单片机,与52单片机指令兼容并支持KeilC51编程,内置256Byte的内部RAM以及32kB的快闪存储器,避免了由于外扩程序存储器而造成电路设计复杂的缺点,不仅满足DeviceNet协议程序的容量要求,而且具有高速、在线程序下载等功能。
由于DeviceNet是基于CAN总线的协议,它的数据链路层及物理层部分引用了CAN协议,所以DeviceNet接口是由独立的CAN协议控制器SJA1000和收发器接口芯片82C250来实现的,其接口电路如图3所示。DeviceNet接口在系统正常初始化后,当总线上某一节点需要向总线发送信息时,首先判断总线是否处于空闲状态,在空闲时向总线发送已经作好封装的信息。在总线上的节点接收总线信息并进行验收码位的验收,判断是否是发送到本节点的信息,是接收还是停止接收。当SJ
A 1000接收完一帧信息后,SJA 1000产生中断信号,从而引起78E58的外部中断,78E58从SJA1000的接收缓冲区取得接收信息,使接收缓冲区空出以便CAN节点接收新的信息。
拨码开关及LED显示由8位拨码开关、数据缓冲器74HC245和2个LED组成。其中8位拨码开关的二位用作DeviceNet三种波特率的设定,六位作为智能电器节点地址的设定(总线最多可挂64个节点)。2个LED的显示组合用于显示节点通信的状态和I/0模块的状态。
2.2数据采集I/0电路
主要由AI/AO(模拟量输入/输出)DI/DO(数字量输人/输出)等组成,在单片机的控制下,通过DeviceNet总线通信接口,将智能电器的各类数据发送给上位机或者将上位机的控制命令与数据输入给智能电器。因此,本部分电路根据实际智能电器所具有的功能不同而不同。本设计采用了8路AI、2路AO和8路DI、8D0。AI通过CD4051距阵单元构造的组合逻辑,由单片机进行地址选通,经过串行A/D MAX 1247进行A/D转换;D/A转换由具有两路模拟量输出的MA X532实现
另外,DeviceNet总线上提供的电压为+24V,而控制系统使用+5V,因此需要对总线电压进行转换,采用DC-DC电源模块HZD05 -24SOSJ实现24V到5V的单路转换。
3 DeviceNet应用层协议分析及软件设计
DeviceNet协议规范是描述DeviceNet设备之间实现连接和交换数据的一套协议,采用面向对象的方法来进行描述。应用层软件设计需要在熟悉DeviceNet协议的基础上,建立I/0节点设备的对象模型。清楚对象的属性和行为、对象间的相互作用、对象的状态转变的触发条件、不同状态下对象可执行的操作等,然后再进行各个类的编写及主程序的设计。
3.1 DeviceNet的报文传送
与通信链接有关的两类报文I/0报文和显式报文。I/0报文适用于实时性要求较高和面向控制的数据。I/0报文数据帧中的8字节数据场不包含任何与协议有关的信息,只有当I/0报文为大报文经过分割后形成的I/0报文片段时,数据域中有一个字节由报文分段协议使用。连接标识符提供了I/0报文的相关信息,在I/0报文利用连接标识符发送之前,报文的发送和接收设备都必须先进行设定。设定的内容包括源和目的对象的属性,以及数据生产者和消费者的地址。显式报文适用于2个设备间多用途的点对点报文传递,是典型的请求-响应通信方式,常用于节点的配置、问题诊断等,如设定属性、获取属性等。
3.2 I/0节点设备的对象模型描述
每个设备为一个节点,节点是对象集合的模型。节点中定义了一定数量的对象类、实例属性及行为。模型为每个属性提供了由4个数字组成的寻址方案,分别是节点地址(MAC ID)、对象类标识符、实例编号和属性编号。这4级地址与显示报文连接相结合,将数据从DeviceNet网络上的一点传送到另一点。本设计节点设备的对象模型如图4所示。其中应用对象有:8个模拟量输人对象,2个模拟量输出对象、8个数字量输人对象、8个数字量输出对象,每个对象对应一个真实的输人/输出点。可见,它定义设备对外部物理接口的行为,如与其他设备的连接等。
连接对象(Connection object):分配和管理与I/0信息和显式信息连接有关的内部资源。所有的服务、属性均可使用显式信息连接来获取。I/0连接对象负责接收主站下发的轮询命令报文,并发送轮询响应报文给主站;显式连接对象负责接收主站下发的显式请求报文,并发送显式响应报文和未连接响应报文给主站以建立连接。
报文路由对象(Message Router object):路由器显式报文相对应的对象,可将报文路由器到设备中任何对象或实例的通信连接点。
标识对象(Identity object):提供设备的,一般标识信息。标识对象的实例属性在主站扫描时通过显式报文读人,主站通过这些属性值识别节点的类型。标识对象包括供货商ID,设备类型、产品代码、产品名称以及设备版本等。
设备网对象(DeviceNet object):提供物理连接的状态和配置重要信息,其实例属性包括介质访问控制标识符(MAC ID)和波特率等。另外,还负责组2未连接显式请求报文的接收和节点地址重复检测报文的收发。
除上述四项所有节点设备必须的对象以外,针对不同的DeviceNet节点,应设置不同的组合对象、参数对象和应用对象。参数对象用于在带有可配制参数的设备中,参数对象为配制工具访问所有参数提供标准的方法。
组合对象的主要任务是将来自不同应用对象的不同属性组合成一个能够随单个报文传送的属性。设备的输人/输出数据利用组合对象来结构化,其实例属性定义了数据是输人还是输出,并定义了数据来源(应用对象的类编号、实例编号和属性)。本设计组合对象有:轮询输入组合对象,负责把8个模拟量/8个数字量输人对象的数据打包,供I/0轮询连接对象使用;轮询输出组合对象,负责把I/0轮询连接对象收到的数字量输出和模拟量输出解包,供开关量输出对象和模拟量输出对象使用。
例如,对8个模拟量采样输入,并将数据存储在该对象的VALUE属性中,可由外部命令(输入状态改变,周期数据触发器等)触发模拟值的采样。模拟量输人点对象的实例、属性的定义如表1所示。在此实例属性中,有一个可配置的属性(ID=7),因此可选择一个参数对象,提供一个到设备设置数据的公共接口08输入8输出数字I/0数据,选择的实例为组合实例4和组合实例34,组合实例数据的属性格式如表2所示。
3.3预定义主/从连接组
DeviceNet中的连接提供在多种应用之间交换信息的路径。当建立1个连接时,
3.4软件设计
DeviceNet协议栈及应用层的软件主要包括主程序和中断服务程序。主程序完成变量定义、微处理器初始化(清除中断,设置中断级别)、通信初始化(硬件定时器、CAN控制器初始化)、特定应用初始化(应用对象参数初值设置、属性初始化等)和调用各类对象的服务函数(程序)。主程序实现步骤如图5所示。
中断服务程序是描述节点设备模型中每个对象所具有的属性,完成的服务,以及网络协议各层次对象之间的联系与接口的函数。对于每个类的编写,需要考虑所要编写的类的属性、实例的属性(如: Revision、Data)以及类和实例的服务(如Get-Attribute-single等)。根据上述特点,中断服务程序采用面向对象编程技术(KeilC51),把对象看成一个个模块,各个模块具有独立性,每个对象类和实例的服务由函数实现,由主程序进行调用。整个体系就表现为相互关联的各个对象构成的网状结构。
实例属性采用结构体实现,每个实例定义为结构、体的变量。应用对象属性包含应用数据,DeviceNet访问应用数据通过调用读和写函数。如:Set-Attribute-single表示写访问Get-Attribute-single表示读访问,对象的行为可由一个服务触发,并且以服务访问的属性值为基础,服务和属性值一起引发对象中状态的改变。通信中断服务程序负责节点报文的接收与发送,由所有程序共用,程序框图如图6所示。
4 结束语
本文基于DeviceNet总线,提出了智能电器控制网络系统的结构,在完成DeviceNet通用I/0的软、硬件设计后,在实验室组成了具有三节点的控制网络,上位机选用通用PCI-CAN卡,应用VC++编写通信应用程序,实现了网络通信量的监控,报文的建立和传送。根据本开发所提出的设计思想,可以方便的为现有智能电器提供DeviceNet接口,从而满足模块化、数字化、网络化等要求。