can(control area network)即控制器局域网络,它最初是由德国的bosch公司为汽车监测、控制系统而设计的。由于其高性能、高可靠性及独特的设计,越来越受到人们的重视。目前,can总线是唯一已成为国际标准的,被公认为是几种最有前途的现场总线之一。
can具有下列主要特性:
(1) 多主站依据优先权进行总线访问;
(2) 无破坏性的基于优先权的仲裁;
(3) 借助接收滤波的多地址传送;
(4) 远程数据请求;
(5) 配置灵活性;
(6) 全系统数据兼容性;
(7) 错误检测和出错信息;
(8) 若丢失仲裁或由于出错而遭破坏的帧可自动重发送;
(9) 暂时错误和永久性故障节点的判别以及故障节点的自动脱离。
考虑到can总线具有的这些优点,我们设计了基于can总线的双容水箱水位控制系统。
2、系统的总体结构
双容水箱试验台由双容水箱、变频器、水位传感器、交流电机、水泵和配电盘构成。其中水位传感器的作用是测量被控水箱的水位,水泵用来给供水水箱抽水。系统控制的目的就是使被控水箱的水位保持在给定值高度,当外加扰动或改变对象特性,能使水位恢复在给定值高度。
本系统是将普通的变送器、执行器和pc机改造成为具有can接口的智能节点,然后将它们通过总线有机的联系在一起所形成的完整的控制系统。控制系统的总体结构 如图1所示。
图1 双容水箱控制系统的总体结构图
系统的网络拓扑采用总线式结构,可以分为两层:现场控制层和过程监控层。
2.1 现场控制层
现场控制层为系统的底层,由带有can接口的变送器或执行器构成,它们之间通过can总线进行通信,完成全部的控制工作。它的基本工作过程如下所述:变送器将被调量的值变换为标准信号,该信号在can接口内完成a/d转换、数字滤波等处理,然后将变换所得的数字信号通过总线传送到相应的can接口。在该节点内将信号接收后,根据所选择的控制算法(pid或模糊控制)进行运算,之后将运算结果进行d/a变换,再将模拟信号通过放大处理去驱动执行器。这样整个控制系统就可以按照一定的控制规律构成一个完整的闭环控制系统。
2.2 过程监控层
过程监控层是现场控制层的上一层,接收由该层传输上来的所需的生产过程的数据,以及向该层发送操作命令,以便运行人员对整个生产过程进行监控。过程监控层的上面可与以太网相连,以便管理层可以直接快速的获得来自生产一线的数据,这也充分的体现了现场总线全数字化的优点。
过程监控层主要由两部分构成:can适配器和上位机。其中can适配器一端和总线相连, 完成和can总线的通信;另一端和上位机连接, 完成和上位机的通信。它的主要功能是将上位机的操作信号和控制参数传送给指定的can网络节点, 同时, 将节点的数据传输给上位机做进一步处理。本系统通过rs232串行口和上位机交换数据。这种方法虽然传输速度低, 但结构简单、易于实现、价格低廉。
3、系统的硬件设计
由系统总体结构图(图1)可见,系统硬件主要包括3个can智能站:can通信适配器(#3 can智能站)、智能传感器节点(#1 can智能站)和智能执行器节点(#2 can智能站)。各个智能站的设计相似,下面以智能传感器节点为例进行介绍。其硬件结构图如图2所示。
图2 智能传感器节点的硬件结构图
这里要重点介绍的是can通信电路。这部分电路主要由can的协议芯片sja1000、can的收发芯片82c250和光电隔离电路构成。
(1) can控制器
can控制器是can通信的核心芯片,主要功能是实现can总线协议和与微处理器接口。本文的can控制器采用philips的sja1000,它是一个独立的can控制器,支持can2.0b协议,可以实现can总线物理层和数据链路层的所有功能。sja1000有两种工作模式可以选择,basiccan 模式和pelican模式。本次设计中采用pelican模式,它在basiccan 模式的基础有如下的扩展:可读/写访问的错误计数器,可编程的错误报警限制,最近一次错误代码寄存器,对每一个can 总线错误的中断,支持热插拔,具有只听模式,可单次发送等。这些增加的功能对系统优化和错误诊断非常重要。
(2) can收发器
can收发器采用pca82c250,它是can控制器和物理总线的接口,可以提高总线驱动干扰能力,增加通信抗干扰能力,并可保护sja1000免遭破坏。它可以支持多达110个节点,并能在1mbps的传输速率下工作于恶劣的工作条件下。82c250提供对总线的差动发送能力和对can控制器的差动接收能力,其差分接收器共模抑制比宽,抗电磁干扰能力强。它内部有总线保护电路和限流电路,并具有低电流待机工作方式和降低射频干扰的斜率控制。
(3) 光电耦合器
光电耦合器是为了将网络和系统内部隔离起来,以提高其抗干扰性能。can通信部分的硬件电路图如图3所示。
图3 can通信电路原理图
4 系统的软件设计
基于can总线的测控系统的软件分为下位机部分和上位机部分,下位机软件完成采集、控制、数据传输等功能,采用模块化设计方法,主要包括以下几个模块:通用can通信模块、控制算法模块、rs232通信模块、数据采集和输出模块、自检和故障处理模块。上位机软件主要是完成监控画面的组态和与适配卡的通信。
软件的编写根据不同的情况采用不同的语言。单片机部分采用c51语言编写,使用keil c51集成开发环境。组态软件采用“组态王6.5”,它是目前比较流行的一种用于建立工控对象人机接口的智能软件包,支持microsoft windows95/98/nt中文操作系统,可以很方便的开发出功能完善、界面友好的组态软件。上位机的通信和调度软件采用高级语言visual basic 6.0编写,它支持面向对象的程序设计,有丰富的控件资源,可以大量节约开发的时间。
下面详细介绍can通信模块和上位机通信程序的设计。
4.1 通用can通信模块的设计
通用can通信模块的功能是完成can控制器的初始化设置;控制各节点之间的数据交换;检测各个节点和总线的状态;进行故障处理。其程序流程图如图4所示。
图4 通信模块主程序流程图
1) can控制器的初始化设置
can控制器的初始化主要是完成sja1000的初始化设置,是设计的一个重点,也是一个难点。sja1000在系统上电、硬件复位或主控制器发出复位命令后需进行初始化,以设定它的工作模式、通信速率、输出控制方式、标识符和屏蔽格式等重要参数。
(2) 数据发送、接收子模块
数据发送、接收子模块主要是控制各个节点数据的发送和接收,数据从can控制器sja1000发送到can总线是由can控制器自动完成的。
·发送程序只需把包装好的数据送到can的发送缓冲区,然后启动发送命令即可。发送程序可采用查询方式或中断方式。由于查询方式比较简单,这里不作介绍。而对于中断方式,发送程序分为两部分:一是主程序,二是中断服务程序。主程序主要用于控制信息的发送及当发送缓冲区满时,把要发送的信息暂存到临时存储区;中断发送程序负责把临时存储区中的暂存信息发送出去。信息从can总线到can接收缓冲区是由can控制器自动完成的。
·接收程序只需从接收缓冲区读取要接收的信息即可。接收程序也可采用查询方式或中断方式,两者的繁简程度相当。
4.2 上位机通信程序的设计
上位机的软件设计主要包括两部分内容:监控界面软件的设计和与适配器通信软件的设计。监控界面采用“组态王”软件包,对于不同的系统应用再进行二次开发,通信程序采用vb编写。上位机的通信程序相当于一个接口转换程序,一面和适配器的rs232口进行数据交换;另一面和组态王进行数据交换,如图5所示。
图5 上位机通信程序功能示意图
vb和适配卡的通信是通过rs232协议完成的,应用vb的通信控件mscomm可以很方便的实现。vb和组态王的通信是动态数据交换(dde)实现的。
5 结束语
现场总线由于具有数字式串行网络的高可靠性,又是一种低成本的计算机网络,因此倍受人们青睐,已被广泛应用到各种测量、控制系统中。can总线是现场总线技术中发展较快的一种现场总线,与其他总线相比,总线的数据通讯具有独特的可靠性、实时性和灵活性等技术特点,是有效支持分布式控制或实时控制的串行通讯网络,且易于用户进行二次开发工作,因此,越来越受到各工业厂家的重视并成为公认的最有发展前途的现场总线之一。
本文介绍的基于can总线双容水箱水位控制系统已经在武汉大学动机学院系统实验室得到了成功的应用,实验证明该系统运行稳定,控制实时性良好。
参考文献
[1] 邬宽明. can总线原理和应用系统设计[m]. 北京:北京航空航天大学出版社,1996.
[2] 马忠梅等. 单片机的c语言应用程序设计[m]. 北京:北京航空航天大学出版社,2003.
[3] data sheet sja1000[z]. philips semiconductors.