1 引言
随着科学技术的迅速发展,人们的生产行为、生活方式都发生了重大的变化,作为生活生产中非常重要的一项技术即监控技术的重要性正在逐渐被人们所认识和重视。监控系统的演变,是一个从集中监控向网络监控的发展历史。早期的监控系统,采用大型仪表集中对各个重要设备的状态进行监视,并通过操作盘来进行集中式操作。而计算机监控系统是以监测控制计算机为主体,加上检测装置、执行机构与被监测控制的对象(生产过程)共同构成的整体。在该系统中,计算机实现了生产过程的检测、监督和控制功能。在现代企业的生产和管理中,大量的物理量、环境参数、工艺数据、特性参数需要进行实时检测、监督管理和自动控制。本文主要设计了 CAN 总线测控系统中的 DSP 下位机现场测控装置及通信软件。
2 测控节点的总体设计
本文所讨论的测控系统是以 CAN 总线为基础,结合 PC 机和 DSP 测控节点来完成数据的采集工作的。因此 CAN 总线上的测控节点具有很重要的作用。节点结构框图如图 1.
图 1 节点结构框图
3 CAN 总线接口电路及工作原理
CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由研发和生产汽车电子产品着称的德国BOSCH公司开发了的,并终成为国际标准(ISO118?8)。是国际上应用广泛的现场总线之一。 在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议。近年来,其所具有的高可靠性和良好的错误检测能力受到重视,被广泛应用于汽车计算机控制系统和环境温度恶劣、电磁辐射强和振动大的工业环境
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 从节点主程序流程图
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 现场智能测控装置初始化,报文发送及中断接收。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。