基于CAN总线的温室测控系统的研究与设
3 软件设计
本系统的软件程序设计是在Freescale公司的集成开发环境——Freescale Codewarrior 5.1下完成的。该系统的软件由CAN控制器软件和应用层通信协议构成。
3.1 CAN总线驱动层软件实现
CAN控制器软件主要包括器件初始化、数据发送和接收。初始化工作主要是对QG8微处理器、SPI接口和MCP2515CAN控制器的初始化。其中微处理器初始化主要包括定时器、变量和外部中断的初始化。需要特别注意的是飞思卡尔单片机的定时器与其他单片机(如51系列单片机)不太一样,QG8微处理器的定时器是不能预置某个数值的,而且是只读的,因此必须要有辅助寄存器才能实现该定时器的功能,本文采用的是QG8微处理器的16位的定时器模块TPM:SPI接口的初始化主要包括对控制寄存器SPIC1和SPIC2、波特率寄存器SPIBR、状态寄存器SPIS、数据寄存器SPID的设置。MCP2515的初始化为复位MCP2515、寄存器配置。只有对MCP2515初始化后,进入了配置模式才能对相关的寄存器进行初始化,初始化工作完成后进入工作模式,进行报文发送。为了能使节点稳定的通信,CAN总线上所有的节点都必须有相同的波特率。对于振荡器时钟频率不同的器件,可以通过对波特率预分频比和每一个时间段中时间份额数量的设置来调整比特率。
QG8是通过使用标准SPI读/写命令对寄存器进行读/写操作。外部数据和命令式通过SI引脚在SCK时钟信号上升沿传送到器件中。MCP25 15在SCK下降沿通过SO引脚发送数据。本文采用状态查询方式发送报文。首先应该禁止CAN发送中断产生,以保证报文发送不被中断。为了启动报文发送,必须将相应缓冲器的TxBnCTRL TxREQ位置1,文中是通过调用RTS2515()请求发送来实现的。缓冲器中TxBnCTRL TxP1:0>优先级最高的报文在总线空闲时首先被发送。如果发送成功将产生中断来通知接收,否则TxBnC TRL TxRR和CANINIF.MERRF将被置位,产生发送错误状态,同时INT引脚置位,产生中断请求。具体报文发送流程如图4所示。
为了提高系统的实时性,报文接收模块采用中断接受方式。该模块包括主程序和接受中断服务程序两部分组成,主程序必须在中断控制报文接受之前使能CAN的接受中断和微控制器QG8的全局中断。当报文发送完之后会产生一个中断通知来接收报文。首先应该看一下中断标志类型,如果是报文成功发送产生的中断,将报文读入滤波器中,否则产生报文出错标志,CANINTF.MERRF位被置1.将接收到报文的标示符字段与滤波寄存器中的值进行比较,如果两者匹配,将该报文载入相应的接受缓冲器,否则产生一个无效报文。如果缓冲器慢将会产生溢出错误,EFLG.RXOOVER位置1.报文接受成功且处理完毕后,MCU将清除中断标志,返回主程序以接受下一条报文。具体的流程图如图5所示。另外整个报文接受过程都可以在接受中断服务程序中完成,不需要与主程序发生交互作用。
3.2 CAN总线应用层软件实现
目前国内还没有CAN通讯的应用层协议标准,而国外现有流行的CANopen、DeviceNet和CANkingdom等应用层协议对于本系统的要求来说实现复杂会造成资源浪费。本文定义了一个简单的通信协议来完成系统所需求的功能。
该协议中采用29位(ID.28-ID.0)标识符的扩展帧格式,这些位的发送顺序是从ID.28到ID.0,最高7位ID.28~ID.22不能全是隐性1。每一个标识符对应一条信息,只有与自己标识符相同的信息才被接收端接收。标识符ID号的大小还决定了发送的优先级和等待时间,标识符越小的报文帧优先被发送。本协议中ID号位28~24的五位表示信息采集节点,包括各种传感器模块,ID号为23~18的四位表示显示节点,包括各种数据的显示和报警节点。ID号为19~14的六位为执行控制节点,包括CO2发生器、循环风扇等控制设备节点。ID15~13为信息类别,包块各种命令信息和状态信息等信息节点。ID12~ID0为预留。
4 系统测试
为了测试本设计的性能,在实验室里进行了CAN总线节点之间的温度测试,如图6所示。在18点和19点(横坐标表示时间)之间进行了温度的测试,在18点钟到18点30分之间A和B节点一直显示实验室的室内温度(15~17℃之间),过半个小时后将B节点放入22℃的温水中,然后取出。从图中可以看到红色曲线(A节点温度曲线)一直是恒温状态(15~17℃之间),而白色曲线(B节点温度曲线)在18点30分钟温度升到22℃,随着温度传感器被取出,温度也在下降到15~17℃之间。
5 结束语
本文根据目前温室系统存在的问题,提出了用CAN总线构成温室测控系统传输网络,并根据系统需要设计了简单的应用层通信协议和进行了CAN节点之间温度测试。测试结果表明:本设计传输网络结构简单、可靠性高。另外该测控模块也可以运用在锅炉控制、楼宇控制等各种工业现场测控系统中,实用性强、应用范围广。
CAN总线 MC68S08QG8 应用层协议 相关文章:
- 对TTCAN的分析(05-26)
- 嵌入式Win CE中CAN总线控制器的驱动设计与实现(05-01)
- μC/OS-II的多任务信息流与CAN总线驱动(07-11)
- 采用CAN总线实现DSP芯片程序的受控加载(11-08)
- 基于DSP的电动汽车CAN总线通讯技术设计(10-08)
- 基于DSP的CANopen通讯协议的实现(01-18)