基于CAN总线的数据采集与控制系统设计
扫描二维码
随时随地手机看文章
摘要:为了保证数据传输的实时性、可靠性,解决数据传输过程中易受干扰的问题,并保证数据采集和控制系统的性能,采用CAN总线作为现场总线来实现数据传输。经过对系统软硬件在不同环境下的多次测试,验证了该系统的性能,同时也体现了CAN总线在通信能力、可靠性和实时性等方面的明显优势。
关键词:CAN总线;数据采集;控制系统;串行通信
0 引言
随着计算机网络上的高速发展,使得信息的交流与共享变得空前广泛和自如,而这项技术也渗入到自动化领域的变革当中,现场总线(Fieldbus)由此应运而生,开创了工业控制的新篇章。现场总线是一种应用于生产现场,在现场设备之间、现场设备和控制装置之间实行双向、串形、多结点的数字通信技术,在当今自动化领域中具有广阔的发展前景。本文给出了一种基于CAN总线的数据采集与控制系统设计方案,实现对开关量的数据采集和对外部设备的控制功能。
控制器局域网(Controller Area Network,CAN)总线是现场总线的一种,是一种有效支持分布式控制或实时控制的串行网络通信,已经被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面,并被公认为最有前途的现场总线之一,其主要特点如下:
(1)CAN是有国际标准的现场总线。
(2)CAN为多主工作方式,网络上的任意一节点都可在任意时刻向网络上的其他节点发送信息,且不分主从。
(3)CAN采用非破坏总线仲裁技术。当多个节点同时向总线发送信息出现冲突时,优先级低的节点将主动退出发送,而优先级高的节点不受影响继续发送。
(4)CAN节点在错误严重的情况下具有自动关闭输出功能,使总线上其他节点的操作不受影响。
(5)报文采用短帧结构,传输时间短,受干扰概率低,而且每帧都有CRC校验及其他校验措施,具有极好的检错效果。
(6)CAN的直接最远通信距离可达10 km,最高通信速率可达1 Mb/s。
1 系统总体结构设计
系统主要由上位机(PC机)和数据采集和控制模块组成。系统总体结构设计如图1所示。
上位机是整个系统的核心,实现系统的监控和管理功能。CAN总线智能适配卡的作用是收集各个CAN节点上的数据,然后转发到上位机,同时把上位机的命令转发到各个节点。由于CAN总线特有的多主传输方式,各个节点根据需要自主地向总线发送数据,而且在上位机监听各个节点的同时,节点也实时监听总线并接收自己需要的数据。数据采集和控制模块采用微处理器和可编程的CAN控制芯片,主要用于完成现场数据的采集、数据的传送以及各个现场设备运行的控制。
2 数据采集和控制模块硬件设计
基于CAN总线的数据采集与控制系统将功能尽可能地分散到各个控制模块中,各个模块以微处理器为核心,完成数据采集和控制功能。为了使信息能在CAN协议的标准下进行通信,各个模块都设有CAN总线接口电路。该模块的微处理器(MCU)选用宏晶科技的STC89C52RC单片机。STC89C52RC是新一代超强抗干扰、高速、低功耗的8位单片机,指令代码完全兼容传统的8051单片机,36个通用I/O口,3个16位定时器/计数器,4路外部中断。根据实际需求分析,STC89C52RC单片机完全满足本设计的需求。数据采集和控制模块的结构如图2所示。
2.1 CAN总线接口硬件设计
CAN总线接口硬件结构如图3所示。
在本系统中CAN总线控制器选用SJA1000。SJA1000是Philips公司生产的独立的CAN总线控制器,可以应用于一般的工业环境中和移动目标的CAN总线网络控制。SJA1000是Philips半导体PCA82C200 CAN总线控制器BasicCAN的替代产品,而且增加了一种新的工作模式PeliCAN,这种模式能支持具有很多新特性的CAN 2.0B协议。基本特性如下:兼容BasicCAN模式;扩展地接收缓冲器(64 B,先进先出FIFO);同时支持11位和29位识别码;位速率可达1 Mb/s;24 MHz时钟频率;对不同微处理器的接口兼容;可编程的CAN输出驱动器配置。PeliCAN模式扩展功能包括;可读/可访问的错误计数器;可编程的错误报警器;对每一个CAN总线错误进行中断;单次发送无重发;验收滤波器控制4 B代码、4 B屏蔽等。
CAN总线收发器选用Philips公司生产的专用CAN总线收发器PCA82C250,提供CAN总线协议控制器和物理总线接口,而且对CAN总线控制器提供差动接收能力。基本特性如下:高速率(最高达1 Mb/s);具有抗瞬间干扰和保护总线的能力;利用斜率控制,可降低射频干扰;使用差分接收器,可抗宽范围的共模干扰,以及抗电磁干扰;热保护;低电流待机模式;未上电的节点对总线无影响;可以支持多达110个节点。
为了增强CAN总线节点的抗干扰能力,并不是在SJA1000与PCA82C250之间直接相连,而是加入了高速光耦隔离器。这样能很好地实现总线上各个CAN总线节点之间的电气隔离。在该系统中高速光耦采用6N137。6N137兼容TTL和COMS电平,可通过信号的宽度为10 MHz,完全可满足CAN总线信号1 Mb/s通信速率的要求。
2.2 开关量数据采集单元硬件设计
该单元用于采集现场的开关量数据的采集。硬件电路图如图4所示。
该单元将采集到的开关量数据传送到微处理器,并传送到CAN总线上,然后通过CAN总线智能适配卡转发给上位机进行处理。外界环境以及电路、器件本身对系统引入了干扰和噪声,为了提高单片机系统的性能,保证其稳定性,采用光耦器件进行隔离,抑制干扰。光耦器件将电信号转变为光信号,光信号传送到接受侧再转换为电信号。由于光信号的传送不需要共地。可以将光耦器件两侧的地加以隔离。因此在加入光耦器件后,在传输信的同时能有效地抑制尖脉冲和各种噪声干扰,大大提高通道上的信噪比。需要注意的是光耦器件两端的电源不能共用,否则起不到隔离的作用。
2.3 控制单元硬件设计
该单元用于控制现场外部设备的运行。该单元硬件电路如图5所示。
该单元是上位机按照预先设定好的程序自动控制输出,上位机通过CAN总线智能适配卡传送开关量到CAN总线,然后数据采集和控制模块根据需要接受CAN总线上的开关量,以控制现场设备。在该单元中,开关量通过单片机的I/O端口输出,但I/O端口的驱动能力有限,一般不足以驱动继电器,此时需要添加驱动电路。同时,为了避免单片机受到干扰,在驱动电路设计时,必须采取隔离措施。
3 软件设计
该系统软件设计主要分为两个部分:数据采集与控制模块程序设计和CAN总线通信程序设计。
3.1 数据采集与控制模块程序设计
数据采集与控制模块程序设计流程图如图6所示。
3.2 CAN总线通信程序设计
CAN总线通信程序设计分为三个部分:CAN总线初始化、数据发送和数据接收。
(1)CAN总线初始化。CAN总线初始化主要是设置一些通信参数,保证通信的正常进行。初始化主要包括工作方式的设置、验收滤波方式的设置、验收屏蔽寄存器和验收代码寄存器的设置、波特率参数设置、中断允许寄存器的设置等。特别需要注意的是,初始化只有在复位模式下才可以进行,因为SJA1000配置信息的寄存器只有在复位模式下才可以进行写操作。
(2)数据发送。数据发送前,微处理器周期查询状态寄存器,查看发送缓冲器是否被锁定。若没有锁定,则把从现场取得的开关量数据发向CAN总线控制器的发送缓冲区,然后启动CAN总线控制器发送命令,此时CAN总线控制器自动向总线发送数据。数据发送的流程图如图7所示。
(3)数据接收。数据接收采用中断方式。系统中的CAN控制器检测到总线上有数据时会自动接收总线上的数据,存入其接收缓冲区,并向微控制器发送接收中断,启动中断接收服务程序,通过执行中断接收服务程序,从CAN控制器的接收缓冲区读取数据,并对其进行进一步处理工作。数据接收流程图如图8所示。
4 结语
通过对系统的软硬件的反复调试表明,该数据采集和控制系统的设计方案是成功的。该系统能高速有效地采集、传递和处理现场数据,并且能在恶劣环境下保证通信速率和极低的出错率,运行效果很好,体现了CAN总线高性能和高可靠性的优点。