虚拟仪器是电子测量技术与计算机技术深层次结合的产物,通过软、硬件的结合来实现传统仪器的各种功能,大大突破了传统仪器在数据处理、显示、传送、存储等方面的限制,使用户可以方便地对仪器进行维护、扩展和升级。用户通过友好的图形界面来操作虚拟仪器的面板就如同操作真实仪器一样方便。CAN协议只定义了物理层和数据链路层,本身并不完整,有些复杂的应用问题需要一个更高层次的协议——应用层协议来实现。CANopen协议就是将CAN网络中通信数据的组建和传输进行标准化,并给用户很大的自由度,允许用户随时添加自己所需要的新功能。
本文将虚拟仪器技术应用于CANopen协议开发,有利于实现分布式工业现场的实时监控、数据采集,改善现场总线网络通信系统的运行效率,提高实时性和信息处理能力。
1 CANopen协议概述
CANopen协议是由CiA协会针对CAN协议的不完整性而定义出来的一个更高层次的协议——应用层协议。不同CANopen设备间的通信都是通过交换通信对象完成的。
1.1 通信对象
通过CAN网络传输的CANopen通信对象可以通过服务和协议来描述。分类为:实时数据通过过程数据对象(PDO)协议传输;服务数据对象(SDO)协议用来对对象字典进行读写操作;特殊功能对象协议提供了特定应用,网络同步,时间戳和紧急报文传输;网络管理(NMT)协议提供了网络初始化,错误控制和设备状态控制服务;层设置服务(LSS)协议用来配置CAN总线通信参数和设备参数。
1.2 CANopen预定义连接集
为了减少简单网络的组态工作量,CANopen定义了强制性的缺省标识符(CAN-ID)分配表。这些标识符在预操作状态下可用,通过动态分配还可修改他们。CANopen设备必须向它所支持的通信对象提供相应的标识符。缺省ID分配表是基于11位的CAN-ID,包含一个4位的功能码(Function Code)部分和一个7位的节点ID(Node-ID)部分。
Node-ID由系统集成商定义,范围是1~127(0不允许使用)。预定义的连接集定义了4个接收PDO(Receive-PDO),4个发送PDO(Transmit-PDO),1个SDO(占用2个CAN-ID),1个紧急对象和1个节点错误控制ID。也支持不需确认的NMT-Module-Control服务,SYNC和Time Stamp对象的广播。标识符的默认值如表1,表2所示。
2 CANopen监控面板工控现场应用框架
采用虚拟仪器软件LabVIEW进行CANopen协议监控面板的开发,完成CANopen数据的接收与发送,实现分布式工控现场总线网络的数据监测。LabVIEW是NI公司开发的虚拟仪器应用程序编程环境,是一种图形化编程语言,特别适合开发测控应用软件,其具有所有通用编程环境的标准,如数据结构、循环结构和事件处理。其内置各种专业工具软件包可满足工程应用开发。应用示意见图1,通过RS 232-CAN协议转换器实时监测现场总线上各节点的数据,完成控制任务。
3 RS 232-CAN协议转换器
虚拟仪器LabVIEW软件及PC机内部没有专门的CAN接口只有RS 232串行接口,因此使用单片机等微控制器设计RS 232-CAN转换器,实现PC机接入现场总线网络,完成数据监听。在PC机上可用LabVIEW环境下的NI-VISA实现串口通信。图2为RS 232-CAN协议转换器硬件原理图,选用内嵌CAN总线控制器的Microchip公司PIC18F258单片机为核心处理芯片。
ADuM1100高速数字隔离器支持100 Mb/s数据传输速率并且可以采用3.0~5.5 V单电源供电,以一种新的更有效的传输数据的方法替代传统的光耦合器,从而保护了高电压和低电压电气环境之间的接口。MCP2551是一种可容错的高速CAN收发器,可作为CAN协议控制器和系统物理总线的接口。MAX232用于完成RS 232与TLL/CMOS的电平转换。RS 232接口用于连接PC机。当单片机内部CAN总线控制器收到CAN总线上的信号后通过USART接口传给PC机的RS 232接口,同样PC机把数据通过RS 232接口发给单片机,再发送到CAN总线上。单片机负责实现通信协议的转换,转换RS 232串口通信数据与CAN通信数据。
4 虚拟仪器上位机监控面板开发
LabVIEW程序开发主要包括三方面内容:CANopen监控面板主程序、数据发送模块和数据接收模块。其中,数据接收和发送模块作为子VI供监控面板主程序调用。
4.1 CANopen主控面板程序设计
主控面板的设计主要包括:CANopen报文的组建及打包发送,以及CANopen报文的接收显示。
4.1.1 CANopen报文打包
根据CANopen协议标识符分配表及主从节点设置定义了各报文的ID号,如图3所示,通过LabVIEW分支结构实现报文类型的选择,并按照CANopen协议数据帧格式要求定义了发送的数据内容,包括高低8位ID、数据长度、远程帧标志以及8 B数据,通过捆绑送入CANWrite.vi子模块发送到VISA接口。
4.1.2 CANopen报文解析
CANopen报文的解析是实现CANopen协议监控面板的重点,实现过程为:将从VISA接口接收的数据按照CANopen报文格式进行组建;判断接收的报文是远程帧还是数据帧;将接收的数据帧累积;对累积的数据帧依次进行格式转换,完成数据显示(见图4)。
4.2 数据发送/接收模块程序设计
数据发送模块CANwrite.vi使用VISA Write节点予以实现,并将该发送模块作为子VI调用。在LabVIEW平台控制的串行通信过程中,数据格式是以字符串的格式组成的,字符串中的每个字符实际上对应大家熟悉的ASCII字符,即计算机能够识别的数据代码是ASCII代码,所以在传送到串口发送数据之前要经过代码转换,这就意味着以十进制、二进制、十六进制表示的数据必须转化为ASCII字符串才能进行传送和接
收。数据发送模块如图5所示,其中,以0xAA作为握手信号
数据接收模块CANRead.vi使用VISA Read节点读取数据,如图6所示,从缓冲器接收到的数据是ASCII字符串,经过ASCII字符串转换为十六进制字节数组的模块处理后,最终得到正确的数据。
4.3 监控面板
使用虚拟仪器LabVIEW开发的监控面板如图7所示。可以看到,左侧为数据发送部分,首先设置NodeID,选择主从节点类型,根据用户需要选择待发送的报文类型,并设置帧类型(数据帧/远程帧)以及具体的发送数据。右侧为数据接收部分,显示从CAN总线上监听到的CANopen报文。
5 结语
本文将虚拟仪器技术与现场总线高层通信协议CANopen相结合,实现了现场总线上位机监控面板的开发,为分布式网络控制系统提供了高效、全面的监控环境,不仅解决了工业现场不同设备同步监控的问题,而且提供了较强的在线可控性。同时,利用LabVIEW提供的各类专业工具软件包,可以进一步对工业数据进行处理,完成波形显示、信号滤波和频谱分析等功能。