(3) CAN模块的数据发送
CAN发送数据帧时也采用中断机制,但与接收中断不同的是,由于MSCAN初始化时设置发送器控制寄存器CANTCR,不允许发送缓冲区空中断,所以在发送数据帧时需要通过设置CANTCR允许发送缓冲区空中断,从而启动发送中断,进入发送中断服务程序, CAN发送中断流程图如图5所示。在中断服务程序中,设置CANTCR不允许发送缓冲区空中断,直到下一次启动发送中断。确定发送缓冲区为空时填写发送缓冲数据寄存器并清除发送缓冲区空标志,这样MSCAN才能开始发送数据。
3.3 装置内部各CPU模块的CAN通讯
装置内部各CPU模块CAN通讯的信息量很大,所以通讯协议使用CAN 2.0B扩展模式,报文标识符几乎不受限制,此时仲裁场的标识符有29位。
在CAN的规范中,只定义了数据帧的结构,而没有定义有关发送和接收的结构信息,所以在编写通讯程序时,首先需要给数据帧的不同位赋以特定的含义,其中包含数据传输所需要的所有信息,包括传输源地址、目标地址、帧类型、传输字节数、传输信息体等等。由于CAN协议规定,每帧最多传送8个字节的数据,所以,为了尽可能使8个字节中的数据都为传输信息体,较好的解决办法就是将其他的信息包含在29位标识符中。本设计中,CAN通讯的数据帧格式定义如表1所示。
其中,前4个字节是扩展数据帧的仲裁场和控制场,后8个字节是数据场。
表1在设计中:
PRI:优先级。1为低优先级,0为高优先级,剩余的优先级由源地址决定,低地址优先级高,该功能可有效支持紧急信息传送如报警等。
Source Address:发送数据的源地址。
Type:帧类型,包括单帧、多帧、点对点传送、广播传送。
SRR:在数据帧中,SRR必须为“显性”电平,而在远程帧中,SRR必须为“隐性”电平。
IDE:属于仲裁场,为“隐性”电平。
DLC:表示要发送的字节数,等于字节数减1。由于每帧最多发送8个字节的数据,故DLC最大为7。
Data index:索引字节。单帧没有索引字节,所以该字节为空;多帧数据时Data index表示发送数据帧的帧序号。
Destination Address:发送数据的目标地址。
RTR:定义本帧信息为数据帧还是远程数据帧请求位。
Data length (L), Data length (H):多帧信息包的长度,只有在传输多帧数据的第一帧时填充,其他帧不填充,而可以填充要传输的信息体。
6 bytes data:要传输的信息体。
遵循上述约定的CAN协议,各CPU模块之间的通讯快速可靠,抗干扰性强,传输波特率达到500kbps,达到了研发的性能指标要求。
4 小结
为了实现小型水电站提出的少人值班、无人值班的要求,提高水电站的自动化水平,集发电机测控保护、励磁调节、同期并列、顺控、远程通讯、人机交互等多功能于一体的组合智能装置是一个经济可行的技术方案,必将成为小水电综合自动化未来发展的趋势。此研发的多功能测控装置采用面向对象的分层分布式结构,各CPU模块采用CAN总线相连,各模块之间的数据交互快速可靠、抗干扰性强,在外观上这些功能模块都在一个机箱内,结构紧凑,便于安装使用。实际应用中,既可以在现场独立运行和操作,又可以在多机系统联合运行时根据需要配置上位机,构成水电站监控系统,具有非常广泛的应用前景。