技术频道

基于CAN总线的数据采集模块设计

1 引言

众所周知,对于每一个复杂的控制系统都是由各种各样的传感器,变送器等检测设备组成,以便及时地将现场设备的运行状态和被控对象的各种参数反应到控制器或控制计算机,从而实现整个系统的精确控制.我们将这些传感器检测到的现场信号尽快的传送到控制器或上位机进行显示,处理,传输和记录的技术,称之为数据采集技术,他是当今控制领域所研究的一个重要方向.目前,对于数据采集设备也提出了微型化,低功耗,长寿命,高可靠性等要求.同时,为了适应多种任务的需要以及在各个领域中普遍应用,需要研制一种比较灵敏通用的数据采集模块,对不同的采集任务应具有一定的适应性和实时性.随着计算机,通信,集成电路,传感器技术的发展,在控制领域又出现了一种新兴的控制技术,即现场总线(FCS).现场总线的出现,为数据采集提供了一种新的手段.在总线系统中,总线中的各个单元将分别完成各种不同的任务,系统中的测量,控制任务将大部分下放到现场的智能仪表单元中去.这种智能化仪表设计的概念使得总线系统的数据采集任务可以通过单独的数据采集单元来完成.而基于CAN总线的数据采集模块则是为了适应这样的要求而设计的.CAN总线是一种有效支持分布式控制和实时控制的串行通信网络,具有可靠性高,成本低,传输距离远,传输速率快等优点,在国际上已经得到了广泛的应用.

2. 数据采集模块的功能

由于分布在控制现场的各种传感器,变送器的输出可以是模拟量,也可以是数字量,为了将这些不同形式,不同类型的信号能够被基于CAN总线的控制器或上位机所识别,因此基于CAN总线的数据采集模块所要完成的功能分为两个方面:一方面是将未知的连续的模拟输入信号转换为微计算机能接收的数字信号,即模拟量数据采集,另一方面是将现场数字传感器,变送器等设备所输出的遵循某一协议格式的数字信号或数字量I/O信号转换成符合CAN总线协议的信息,即数字量数据采集.其具体实现功能图如图1所示:
由图1可知,对于模拟量数据采集部分,多路模拟信号通过模拟输入通道进入A/D转换器的输入端,A/D转换器在微计算机(即CPU)的控制下开始逐个对多路模拟信号进行转换,并将转换的结果读入CPU中,当一轮数据转换完后,判断各路转换结果是否合理,

图1 基于CAN总线的数据采集模块功能图
对合理的结果进行必要的处理,然后将数据写入CAN微控制器转换成CAN 协议的数据格式通过其接口发送到总线上供上位机进一步处理或其他模块使用.而对于数字量数据采集部分,该模块主要是将从控制现场以RS-232协议形式传送来的数据信息转换成CAN 协议要求的数据格式并发送到CAN 总线上供上位机和其他模块使用.由于该数据采集模块带有CPU,是一种微机化的智能设备,能对采集到的数据作初步的处理和完成一定的控制,显示任务,因此在该模块上还扩展了多路数字量输入输出和与其他单片机进行直接串行通讯的接口.整个模块可实现对现场信息的采集,对设备状态的显示,报警,与现场设备及上位机进行通讯等功能.

3. 数据采集模块硬件实现

根据基于CAN 总线的数据采集模块所要实现的功能,其硬件实现电路如图2所示:

图2 基于CAN总线的数据采集模块硬件结构图
由图2可知,基于CAN总线的数据采集模块以单片机SST89C54为核心处理芯片;SST89C54单片机是MCS-51系列单片机的派生产品.它在指令系统,硬件结构和片内资源上与标准8052单片机完全兼容,只是加大了内部程序存储器Flash的容量.内置20K ROM,程序空间余量大,方便系统的软件升级,而且SST89C54内置EEPROM,看门狗定时器,成本低廉,可靠性高.整个硬件实现电路由四个部分组成:
1)CAN总线接口电路:由SJA1000及82C250组成,SST89C54对SJA1000的操作相当于外部RAM的操作,其P0口接SJA1000的AD0~AD7,ALE,/WR,/RD,P2.4端分别接SJA1000的ALE,/WR,/RD,/CS端,另外SJA1000的中断信号端/INT接SST89C54的/INT0端,使得SST89C54可收发各类信息.CAN总线收发器82C250提供了CAN控制器与物理总线之间的接口,提供总线的差动发送和接收能力,抗干扰能力,使得信号能更远更可靠的传输.其 TXD,RXD端通过高速光隔分别接SJA1000的TX0,RX0,两个输出端CANH和CANL分别与物理总线的CANH和CANL连接.
2)A/D转换电路:由11路模/数转换芯片TLC2543实现,SST89C54的P1.0~P1.3引脚分别与TLC2543的/CS,CLOCK,DATA IN和DATA OUT相连,通过这些连接,SST89C54可以控制A/D转换的时机,选择转换通道,极性;当A/D转换结束后,TLC2543通过EOC引脚,以中断的形式通知SST89C54接收数据.其中TLC2543 为CMOS 12位开关电容逐次逼近模/数转换器.具有快速转换和通用的控制能力.片内设有采样-保持电路.
3)RS-232协议转换电路:SST89C54通过串口TXD,RXD与MAX232的相应管脚相连,当SST89C54需要将从现场采集到的数据或从CAN总线上接收到的数据转换成RS-232协议格式的信息与现场设备或其他模块进行通信时,可直接将信息通过串口TXD,RXD传送给MAX232,由芯片MAX232完成数据格式的转换.同时该部分还扩展了串口通信电路,通过高速光电隔离器隔离可实现与其他设备进行串行通信.
4)多路输入输出电路:由于基于CAN总线的数据采集模块可直接与多种模拟量或数字量设备相连,且内部带有CPU,具有一定的数据处理和控制能力,所以当模块需要采集现场的I/O量信息或需要根据处理结果进行显示,报警,控制时,可通过由P1.4-P1.7和高速光隔组成的多路输入输出电路实现.
此外,为了满足数据存取和处理的需要,电路中还扩展了8K 的数据存贮器空间(RAM).

4. 数据采集模块软件结构
基于CAN总线的数据采集模块的软件结构图如图3所示:

图3 基于CAN总线的数据采集模块软件结构图
由软件结构图可知,SST89C54先对自身进行初始化,然后立即对SJA1000进行初始化以尽快建立该数据采集模块与CAN总线之间的通信链接,其中对SJA1000的初始化是该软件设计中一个比较关键的部分,主要包括在复位模式下设置通信的波特率,AMR,ACR,OCR,CDR,在通用模式下写控制寄存器命令字等.其中对ACR,AMR寄存器中所写的内容要根据网络系统和现场工艺的实际要求来确定,并且与将要发送的报文标识符有关;BTR0,BTR1寄存器的内容可唯一确定系统的通信波特率和同步跳转宽度,所以整个系统中的所有节点,这两个寄存器的内容必须相同,否则将无法进行通信;对OCR的操作可确定CAN控制器的输出方式,并建立起CAN总线要求的电平逻辑所需输出驱动器的配置.
与CAN总线的通信建立之后,SST89C54就开始采集现场数据,先是模拟量,然后是数字量,在对模拟量的数据采集中,为了减少外部干扰带来的误差还进行了消除误差处理,主要包括判断数据是否存在超大误差,对连续多次采样得到的数据求平均值作为采样值等措施,以减少系统采样误差.在采集到了现场的各种数据后,CPU还要进行数据处理,主要包括将采集到的数据进行组装,拆包打包,简单的数据运算,与设定值作比较;判断现场参数是否超出了设备正常工作的上下限,是否需要显示设备状态或报警,如需要则进行显示或报警;判断是否需要往CAN总线上发送数据,如需要则要进行不同数据格式的转换,当需要往CAN总线发送超过8个字节的数据时,还要按事先设计好的算法分多个数据包发送.

5. 结束语

实践证明基于CAN总线的数据采集模块具有采样数据更新速度快(10毫秒),转换精度高(±0.5%),转换线性误差小(±1LSB Max),通信速率高,抗干扰性能强,出错率极低,传输举例较远等特点,能很好地完成对现场信息的采集和进行简单的数据处理及数据通信,由该类模块组成的系统特别适合于现场环境比较复杂,实时性要求高的分布式控制系统,且由于其价格低廉,在自动化领域有着广泛的应用前景.

文章版权归西部工控xbgk所有,未经许可不得转载。