总线通信设计王建英方安平武汉理工大学计算机科学与技术系,湖北(430070)E-mail:sara2015@126.com摘要:LabVIEW是NI公司推出的虚拟仪器开发平台,采用图形化的编程语言,具有强大的人机界面设计和数据分析处理功能,提供了丰富的仪器驱动程序,便于快速创建灵活可靠的应用系统,广泛应用于测控系统的开发。本文将LabVIEW的VI技术引入到工控系统的开发之中,并与CAN现场总线技术结合起来,添加一个RS232/CAN转换器对CAN系统扩展,利用NIVISA驱动包实现了上位机应用系统节点与下位监测功能模块之间的CAN总线应用层数据通信,CAN下传报文打包及CAN上传报文解析,有效地实现了CAN总线通信的上位机应用系统的快速、高效的开发。关键词:LabVIEWNI-VISACAN总线CAN报文中图分类号:TP2731.引言LabVIEW采用图形化编程语言和数据流编程方式,具有强大的人机界面设计功能,提供了丰富的仪器驱动程序,LabVIEW的NI-VISA可以实现与各种仪器总线进行通信,如:USB、GPIB、串口、VXI、PXI和以太网等[1][2]。由于其操作简单易用,因而被广泛应用于汽车工业、仪器控制、数据采集、系统测试和工业自动化等领域的系统组态。CAN总线具有成本低、总线利用率高、数据传输距离远(10km)、数据传输率高(1Mbit/s)、可靠的错误处理和检错机制等特点,被广泛应用于机械工业领域[3]。CAN总线应用协议较为复杂,LabVIEW并没有与CAN总线通信的驱动函数。如何设计LabVIEW下设计功能可靠的子VI,根据目标系统的需求设计CAN总线的通信协议,实现目标系统的采集数据与管理系统的交互,是本文完成的工作。2.CAN总线测控网络的结构CAN总线应用在我国起步相对国外较晚,符合CAN现场总线接口标准的智能型仪器仪表较少,国外产品价格很高,在实际构建CAN总线工业测控网络时,必须考虑对现有传统设备及仪器仪表的改造。由于现有PC机大多不具有专门的CAN接口而只有RS232接口,可以通过在PC机与旋转机械监控系统之间增加一个RS232/CAN的转换器,实现低成本、长距离、高速率的数据传输。基于LabVIEW的工控CAN总线监控系统的CAN总线网络结构如图1所示。CAN总线是由各个下位监测模块节点的CAN接口引出并驱动,LabVIEW应用程序通过RS232/CAN转换器与各个下位节点通信,通过发送CAN报文和从CAN总线上接收CAN报文,实现下位机数据采集和配置修改等功能。LabVIEW应用程序是人机界面节点,参与系统的实时控制,完成对其他各节点的在线控制以及对返回信息的分析处理,并将处理的结果以各种方式显示于电脑显示屏上。子节点只能实现对本子系统的控制,并受人机界面主节点的控制,可根据主节点的控制命令来完成对各子系统的控制和各子节点与主节点的实时数据交换。.CAN通信应用层协议设计基于CAN总线构建的通信网络是依照开放系统互联规范(OSI)中的层次结构设计。由于工业测控底层网络的信息传输量相对较少,信息传输的实时性要求较高,网络连接方式相对较简单,因此CAN总线网络在底层只采用了OSI7层通信模型的最低两层:物理层和数据链路层,而在高层只有应用层。CAN的数据链路层分为逻辑链路控制(LLC)子层和媒体访问控制(MAC)子层。物理层的功能包括:定义信号怎样传输,完成电气连接,实现驱动器/接收器功能;MAC子层是实现CAN协议的核心,它的功能主要是报文滤波、超载通知和恢复管理[4]。物理层和数据链路层的功能可由CAN接口器件来完成,应用层的功能是由微处理器完成的。标准的CAN协议仅仅对数据链路层和物理层进行了定义,通过数据链路层传输的数据单元不能超过8个字节,这就限制了CAN在实际中的应用范围,所以对于控制系统来说并不是一个完整的协议,从而需要一个更高层次的应用层协议来实现较复杂的应用问题[5]。由于CAN总线的数据域只有8个字节,因此采用了CAN2.0B扩展帧模式,以求在报文ID中包含较多的信息。CAN2.0B扩展帧帧信息是13个字节,前5个字节为帧的信息部分,包括1字节的帧信息和4字节的帧ID,后8字节为帧的数据部分。应用层协议只使用了29bit的扩展ID中ID28=1的部分。29bit的报文ID的格式如下:表129bit的报文ID的格ID28=1ID27-24后续帧数量ID23-16功能IDID15消息属性ID14机箱号IDID13-11目标端口号ID10-7目标地址IDID6-4源端口号ID3-0源地址ID在应用层协议中,共定义了四类数据传输的报文格式:“上位机操作指令”、“上位机上传数据请求”、“下位机数据上传(应答)”和“上位机数据下传”。其中“上位机操作指令”是LabVIEW应用程序主节点发送给各子节点下位监测功能模块的操作命令,主要实现改变下位监测功能模块工作状态的功能,使其进入采集,组态或者线性校正等各种状态,“上位机上传数据请求”是主节点读取各子节点各种参数的命令,并且要求子节点应答,“下位机数据上传(应答)”是各子节点根据接收到的“上位机上传数据请求”报文内容上传相应数据参数的报文,“上位机数据下传”是主节点下传各种数据到各子节点的命令。每类报文格式中按“功能ID”的不同定义了各种不同的报文。4.CAN通信软件设计CAN通信软件设计包括主节点与子节点之间的通讯程序设计以及LabVIEW应用程序主节点的人机界面设计。主节点与子节点之间的通信程序设计主要包括VISA串行通信设计报文打包和解析两个主要模块。4.1VISA串行通信的设计由于监控系统需要传输的数据种类较多,根据系统的实时性要求,对于上位机的上传数据请求,下位机采用中断模式处理,而其他数据实时性要求较低,则下位机采用查询处理的方式,在LabVIEW环境下通过NI-VISA实现串口通信。图2串口发送与接收程序框图由于VISA串口发送的是字符串数据,而CAN应用协议定义的报文帧是十六进制数格式,为了便于报文打包,可以将报文帧转化成十六进制字符串,然后再转化成其ASCII码串赋给VISAWrite发送,十六进制字符串转换为ASCII码串的后面板程序框如图3所示。图3十六进制字符串转换为ASCII码串子VI后面板程序框图4.2报文打包和解析的设计上位机下传到CAN总线的报文有多种,如下传“上位机操作指令”、“上位机上传数据请求”或者“上位机数据下传”等报文时,每种报文的报文ID及帧数各不相同,因此LabVIEW组态软件需要按照CAN应用协议将按照相应的报文格式打包各连续帧报文,然后再下传。报文打包流程如下:(1)根据要下传的报文判断该报文的连续帧数;(2)生成第一帧报文的报文ID,结合其数据域数据,生成该帧报文,以十六进制字符串格式表示;(3)若该报文为多帧报文,则继续打包下一帧,直至该报文的所有帧打包完毕;否则直接转到(4);(4)连接该报文的所有帧,形成完整的报文,调用“十六进制字符串转换为ASCII码”,将十六进制字符串表示的报文转换为ASCII码串,再赋予VISAWrite发送。如果上位机收到下位机关于“上位机上传数据请求”报文的应答,则根据“下位机数据上传(应答)”报文格式对从VISARead中接收到的应答报文进行解析,根据报文中的“功能ID”字段解析出下位机上传的各个参数,并转换成该参数的相应格式显示于界面上。图4CAN_ID打包子VI后面板程序框图图5CAN_ID解析子VI后面板程序框图5.结论本文将LabVIEW的VI技术引入到工控系统的开发之中,并与现场总线技术结合起来,利用LabVIEW实现了上位机应用系统节点与下位监测功能模块之间的CAN总线应用层数据通信,CAN下传报文打包及CAN上传报文解析,使得监控系统的范围在进一步扩展。同时,利用LabVIEW开发上位机应用软件,丰富的控件库可以开发出更加友好、灵活的用户界面,子VI技术可以简化应用程序的后续开发和完善工作,缩短开发系统的周期,提高编程效率和软件质量。此外,LabVIEW具有与其他软件(如C语言,SQLServer2000,Matlab,,Excel等)通信的外部代码接口,有利于对各种工业数据进行图谱分析。该LabVIEW与CAN总线之间的通讯设计具有一定的通用性,可以为CAN网络的上位机应用软件的开发提供一定的借鉴。参考文献[1]杨乐平,李海涛,杨勇等编著.LabVIEW高级程序设计[M].北京:清华大学出版社,2003[2]陈锡辉,张银鸿编著.LabVIEW8.20程序设计从入门到精通[M].北京:清华大学出版社,2007[3]王黎明.CAN现场总线系统的设计与应用[M].北京:电子工业出版社,2008[4]张培仁,孙力编著.基于C语言C8051F系列微控制器原理与应用[M].北京:清华大学出版社,2007[5]邬宽明.CAN总线原理与应用系统设计[M].北京:北京航空航天出版社,2002IndustrialCANbuscommunicationdesignbasedonLabVIEWWangJianyingFangAnpingDepartmentofComputerScienceandTechnology,WuhanUniversityofTechnology,Wuhan,PRC(430070)AbstractLabVIEWisakindofVirtualInstrumentsDevelopmentPlatformthatisdevelopedbyNationalInstrumentsCorporation.Itadoptsthegraphicprogramminglanguage,andcanprovidelotsofinstrumentdriverprogramsforuserstogetherwithpowerfulfunctionsofhuman-computerinterfacedesignanddataanalysisandprocessing,userscanestablishflexsibleandreliableapplicationsystemquicklywithit,soLabVIEWiswidelyusedincontrolsystemdevelopment.ThispaperpresentstheintroductionofVItechnologyintotheindustrialcontrolsystem,andcombinesVItechnologywithfieldbusCAN.ByaddingaRS232/CANconverter,itimplementsapplication-leveldatacommunication,packingthedown-transmissionCANmessageandseparatingmessagebetweenthehost-computerapplicationsystemandthemonitoringfunctionmodules.Thehost-computerapplicationsystemofCANbuscanbequicklyandeffectivelydevelopedwiththismethodthatintroducedinthispaper.Keywords:LabVIEW,NI-VISACANbusCANmessage作者简介:王建英:女,1985-,硕士研究生,研究方向:嵌入式系统,E-mail:sara2015@126.com方安平:女,硕士生导师,研究方向:嵌入式系统