引言
多电机的同步控制在工业领域中的应用已越来越广泛,诸如造纸设备、印刷设备等有着多个分散工作机构的大型设备,对其控制精度的要求越来越高。因此,对多节点的同步性研究有助于从总线角度研究多电机的同步控制,提高其同步精度。
CAN(Controller Area Network)现场总线是由德国Bosch公司推出的一种国际标准化的串行通信协议[1]。目前大多数研究对其实时性关注较多,对同步性多限于理论研究,实际应用较少。鉴于此,将CAN总线广播通信方式以及CAN总线滤波机制成功应用于本系统,结合时间触发协议(TTCAN)的理论知识,基于AT90CAN128单片机,成功完成多节点的同步通信,将节点间的同步时间控制在μs级。
1 多节点同步通信方法
为实现多个节点的同步通信,采用和节点数目相同的位数表示节点,每一位对应一个节点,只要相应位置1,其对应节点就对主节点响应。当多个位置1时,其对应节点将同时响应,由此实现多节点的同步通信。
2 通信协议的制定
AT90CAN128内置CAN总线控制器,提供4个验收码寄存器IDT和4个接收屏蔽寄存器IDM构成验收滤波器[2],利用这些寄存器进行通信对象的设置。
子节点对主节点的响应有两种方式:①以ID标识符中的一位对应一个节点,通过准确设置验收滤波器参数,对总线上报文仲裁场中29位ID标识符进行识别,标识符中表示节点的相应位置1时,对应节点接收报文并作出响应,实现报文滤波[3]。②将所有节点的验收滤波器设置为屏蔽状态,即屏蔽寄存器IDM均设置为00 00 00 00,对来自总线上的消息报文均接收,以数据场中的一位对应一个节点,当相应位置1时,对应节点响应,实现报文滤波。
为区分两种不同的滤波方式,本文以标识符滤波和数据场滤波分别命名这两种滤波方式。
采用标识符滤波时,总线上子节点的数量将受限于标志场的长度。而在主节点与多节点进行同步通信的过程中,通常为控制指令和命令指令,数据场通常为0字节。此时可进一步利用数据场,采用数据场滤波方式。数据场滤波的好处是:①对所有节点,无需专门配置接收屏蔽寄存器,统一设置成屏蔽状态;②由于数据场最多可为8个字节,每个字节均可用来表示8个节点。因此,在满足总线物理特性的情况下,增加了总线上子节点的数量。但是,数据字节的增加对实时性有一定影响。
3 硬件设计
本系统节点电路主要由AVR单片机AT90CAN128和高速收发器CTM1050T构成。系统硬件电路图如图1所示。

图1 硬件电路图
AT90CAN128单片机负责上层应用与系统控制,执行完整的CAN总线协议,采用16 MHz时钟,其内部的时钟分频寄存器CLKPR可用于时钟分频。
CTM1050T是一款高速隔离CAN收发器芯片,其隔离电压可达DC 2500 V;电磁辐射EME极低;电磁抗干扰性EMI极高。 因此,无需外加光耦、DC/DC 隔离、CAN 收发器等其他元器件便可直接使用,接口简单,使用方便。
4 软件设计
为提高多个节点接收消息的同步性,以TTCAN协议的时间触发机制为理论支撑,发送触发帧让所有子节点同时进行定时,同步所有子节点。同步过程如图2所示。
AT90CAN128是整个系统的核心,其基本流程图如图3所示。

图2 子节点同步过程
5 实验过程及结论
对同步性进行验证的过程,首先应发送触发帧进行同步定时,同步触发帧如表1所列(8个节点同步定时)。
表1 同步触发帧


图3 AT90CAN128流程图
在上文两种滤波方式下,发送如表2所列的报文进行实验,对本文设计的CAN总线节点间的同步性进行验证,每帧发送20次。
表2 发送的报文数据帧

5.1 实现基本通信
上位机模拟主节点进行报文的发送和接收,上位机发送报文,节点2、3、4接收到报文返回数据给上位机,上位机显示的通讯结果如表3所列(以数据场滤波为例)。
表3 上位机显示

5.2 相同节点数不同滤波方式同步性
选用2、3、4号子节点,主节点发送报文,子节点接收到符合自身要求的报文,引脚置1。节点滤波器根据AT90CAN128内CAN总线转换控制器的特点以及上位机和节点间所使用的USBCAN转换器的对应关系进行设置,本文选用吉阳光电的USBCAN200GY8508进行转换,对节点中AT90CAN128中滤波器的设置如表4所列。
表4 滤波器设置

对标识符滤波方式,当发送报文的ID为 0x00 01 00 0E时,对节点进行同步定时。ID为0x00 02 00 0E时,节点接收报文并相应引脚置1。对数据场滤波方式,发送报文的ID为0x 00 24 00 01,数据场为B1 0E ## ## ## ## ## ## 时,节点进行定时,数据场为B2 0E ## ## ## ## ## ## 时,节点接收报文并相应引脚置1。由此对3个节点的同步时间差进行观察,节点之间的最大时间差如图4所示。由图可知,ID标识符滤波方法测得的同步性略高,但两种滤波方式的同步性差别不大,仅有20 ns左右的差异,在一般的实际应用中可忽略不计。

图4 不同滤波方式同步性对比
5.3 相同滤波方式不同节点数同步性
在数据场滤波已发送触发帧的情况下,当发送报文ID为0x00 24 00 01,数据场为B2 06 ## ## ## ## ## ## 时,观察节点2、3同步时间差。将其与2、3、4号子节点的同步时间差进行对比,结果如图5所示。由图可知,2个子节点同时接收时的最大时间差分布在270 ns左右,3个子节点同时接收时的最大时间差分布在842 ns左右,同步时间差增加,同步性降低。由此可知,随着节点的增加,同步性将有所降低,节点数目将影响系统中子节点的同步性。

图5 不同节点数同步性对比
结语
由实验可得,采用ID标识符滤波和采用数据场滤波两种方式均能实现多节点的同步通信,对同步性影响不大。但由于ID标识符滤波过程中,数据场为空,因此其实时性将更高,而数据场滤波适用的节点数则更多。两种滤波方式下,节点间的最大同步时间差不超过1 μs,能够满足一般多电机设备的同步性要求。另外,在大型多级设备中,可两种滤波方式配合使用,以最大程度满足系统的实时性、同步性以及节点数目的要求。