1 引言
随着工业规模的扩大,工业控制系统的信息集成程度也越来越高。基于网络的现场总线控制系统为信息的集成提供了有效技术保证。现场总线是应用在制造或过程区域现场装置与控制室内自动控制装置之间的数字式、串行、多点通信的数据总线,也被称为开放式、数字化、多点通信的底层控制网络。以现场总线为核心的工业控制系统,称为现场总线控制系统。本文主要设计了 CAN 总线测控系统中的 DSP 下位机现场测控装置及通信软件。
2 测控节点的总体设计
本文所讨论的测控系统是以 CAN 总线为基础,结合 PC 机和 DSP 测控节点来完成数据的采集工作的。因此 CAN 总线上的测控节点具有很重要的作用。节点结构框图如图 1。
图 1 节点结构框图
网络节点,可以采用单独的微控制器、CAN 控制器和 CAN 收发器组合而成,也可以将微控制器和 CAN 控制器集成在一起的带有在片 CAN 的微控制器。节点控制器的选择有两种方案,一种是选择 MCS196 等单片机,但是必须在外部扩充高精度的 A/D 转换器、CAN 通信模块、定时器等模块,处理数据能力较低。而另一种方案采用具有在片 CAN 的微处理 器,如 PHILIPS 的 81C90/91、TMS320LF2407 处理器等。因为 TMS320LF2407 具有较高的 运行速度和数据处理能力,因此,在本系统中采用 TMS320LF2407 作为节点的微处理器。
3 CAN 总线接口电路及工作原理
TMS320LF2407 与物理总线之间通过 CAN 总线收发接口电路来连接。从 CAN2.0 协议 的特征可知,一条总线上节点数可以无限多,但要受到总线驱动能力限制,考虑这一点,设计中采用收发驱动芯片方案。本文选用 Philips 公司的 CAN 总线驱动器 82C250。CAN 总线驱动器提供了 CAN 控制器与物理总线之间的接口,是影响网络性能的关键因素之一。它最初是为汽车中的高速应用(达1Mbps)而设计的。器件可以提供对总线的差动发送和接收能力。
图 2 硬件接口电路图
以 TMS320LF2407 为核心芯片,PCA82C250 为驱动 CAN 控制器和物理总线间的接口, 对总线提供差动发送能力,对 CAN 控制器提供差动接收能力。因为 TMS320LF2407 用 3.3V 的电压,PCA82C250 用 5V 的电压,所以需要电平转换。图中:R2、R3、R4 和二极管 D 组成的电路为电平转换电路,R1 为 CAN 终端匹配电阻。接口电路如图 2 所示。
如果考虑到提高系统的抗干扰能力,可以在 CAN 总线收发器 PCA82BC250 前增加 2 个 高速光电隔离器件 6N137 芯片,实现总线与控制器的隔离,可以保护总线不受瞬态冲击的影响,并可提高节点的总线驱动能力。
4 软件设计
图 3 从节点主程序流程图
节点的软件设计主要包括四大部分:CAN 现场智能测控装置初始化、报文查询发送及中断接收、用户 A/D、D/A 转换子程序即协议实现程序。其主程序的实现流程如图 3 所示。 本测控装置的节点通信软件采用的语言是 DSP 的 C 语言嵌入汇编语言,因为在用 C 语言开发 DSP 应用程序时,可能会遇到一些对实时性要求较高或是需要对 DSP 的底层资源进行操作的场合。这时如果用 C 语言编写相应的代码就会给开发带来一定的难度,甚至某些操作 C 语言根本就无法实现。这时,就需要在 C 语言中嵌入汇编语言。
4.1 节点的通信初始化流程
CAN 现场测控装置节点的初始化主要包括:系统初始化、CAN 初始。系统初始化包括开中断优先级、清中断标志等。CAN 初始化主要包括:局部接收屏蔽寄存器的设置、主控制寄存器的设置、邮箱方向控制寄存器的设置、波特率参数设置、邮箱标识符的设置、邮箱的设置和中断允许寄存器的设置等。
1、位定时器的初始化
在对位定时器(BCR1 和 BCR2)进行初始化时,首先注意要对 CAN 模块主控制寄存器 MCR 中的 CCR(改变配置请求位)置 1,并对全局状态寄存器 GSR 中的 CCE(改变配置始能位)置 1,方可进行下面的初始化。因为此时 CAN 控制器处于脱离 CAN 总线状态,因此当配置完位定时器后,将 CCR 位清零,使 CAN 控制器恢复总线。CAN 控制器波特率的计算方法如下:
波特率=ICLK/ [(BRP+l)+Bit Time]
其中:TCLK 为 CAN 控制器的时钟频率,也就是 DSP 的系统频率。BRP 为波特率预分频位,决定CAN 控制器的时间片(TQ)。TQ= (BPR+1)/ ICLK
位时间(Bit Time)=(TSEGl+1)+(TSEG2+1) +1
TSEG1 为时间段1,可编程为 3 到 16 个 TQ 时间片。TSEG2 为时间片 2,可编程为 2到 8 个 TQ 时间片,但必须满足小于或等于时间段 1。
2、CAN 初始化。对 CAN 控制器的访问是以外部存储器的方式。
4.2 CAN 信息的发送与接收
本系统中数据的传输速率设置为 1Mbps,将邮箱 0、2 配置为接收邮箱,其中邮箱 2 为 命令信息专用邮箱,用于接收上位机发来的控制命令。邮箱 0 用来接收上位机发来的节点参数,节点可根据这些参数来重新配置节点的信息。将邮箱3配置为发送邮箱,这个邮箱用于节点给上位机发送信息。
4.2.1 CAN 发送程序
数据从 CAN 控制器发送到 CAN 总线是由控制器自动完成的,所以 DSP 在发送数据时只需把要发送的数据帧发送到 CAN 的发送区(邮箱 3),然后将发送控制寄存器中的相应位置1 即可启动发送命令,当 CAN 控制器将数据成功发送后会将发送控制寄存器中的发送成功 标志位置 1,通过判断这一位是否为 1,用户即可知数据是否发送。如果发送的数据非常大,可以用邮箱 4 或 5,邮箱轮流发送,一个邮箱发送完成即启动另一个邮箱。由于 DSP 的在片 ADC 模块是 10 位的,即采集到的数据为10 位,而邮箱为 16 位,为此我们在发送数据时,将采样的结果通过移位后将多个采样结果合在一起发送,可减少所发送的帧。
4.2.2 CAN 接收程序
本系统中帧的接收以中断方式。CAN 控制器在接收信息时,先将要接收的信息的标识符与相应的接收邮箱的标识符进行比较,只有标识符相同的信息才能被接收。CAN 控制器的接收滤波器使接收邮箱可以忽略更多的位来接收信息,即如果只有被屏蔽的那几位标识符不相符,则接收邮箱仍可接收此信息。当接收屏蔽使能位为 0 时,则局部接收屏蔽寄存器不起作用。CAN 的接收流程图如图 4 所示。
图 4 CAN 接收流程图
现场测控装置的中断服务程序,包括接收数据中断并保存接收到的数据,同时处理相应的错误中断。当主节点(PC 机)向从节点(现场测控装置)发送请求数据命令时,从节点即产生接收数据中断。进入中断服务程序后首先保护现场,然后 CPU 读出接收缓冲区的内容,最后恢复现场、中断返回后调协议分析程序。
4.2.3 协议实现程序
中断服务程序结束后,读出节点 ID,并读出命令内容,进行任务分析,根据任务分析的结果确定数据发送任务,并向主节点发送数据。其协议实现程序框图如图 5 所示。
图 5 节点协议实现框图
4.2.4 用户子程序设计
对从节点子程序的设计,主程序通过调用子程序即可完成,这样减少了程序重复编写。 子程序的模数转换是利用 TMS320LF2407 内部的模数转换模块,避免了芯片的外扩的工作。A/D 转换是采用定时中断的方式,这里用定时器 3。
本文作者创新点:
本文从软硬件方面详细描述了基于 DSP 现场硬件智能测控装置及通讯软件的设计。其中从节点通讯软件主要包括:CAN 现场智能测控装置初始化,报文发送及中断接收。