调节多点控制器的控制参数是一项复杂的工作,以CAN_BUS通信协议为基础,设计了一种连接多个CAN端点的调试系统,通过创建通信协议,实现了上位机与控制器的CAN端点的实时数据交流。阐述了控制器与上位机的通信流程。
磁悬浮转向架的悬浮由四组电磁铁实现,每组电磁铁都有独立的悬浮控制器,控制该点的悬浮与下落。为了获得最优的控制参数,需要在整个转向架的悬浮过程中通过上位机监视轨道与电磁铁之间的间隙、电磁铁工作电流等状态参数以及悬浮控制器的控制参数,动态地修改控制参数以观察控制效果。
悬浮控制器之间是相互独立的,上位机无法同时监控多个悬浮控制器,因此需要找到合理的通信方式使上位机同时与所有的控制器连接,使它们之间能够实时传递数据。CAN总线是一种有效支持分布式控制和实时控制的多主的异步串行通信网络。由于CAN总线具有较强的纠错能力,支持差分收发,适合高噪声环境,具有较远的传输距离,在各个领域中得到了广泛应用。CAN通信协议规定通信波特率、每个位周期的取样位置和个数都可以自行设定,这保证了用户在使用过程中的灵活性。选用CAN总线,无论是在抗电磁干扰方面还是在实时性方面都能够满足实验要求。
图1
1 调试系统硬件端口的设计
悬浮控制器使用SJA1000作为CAN总线协议转换芯片。SJA1000是一种独立控制器,用于移动目标和一般工业环境中的区域网络控制。它内建BASIC CAN协议,并提供对CAN2.0B协议的支持。通过对片内寄存器的读、写操作,悬浮控制器的核心处理器能够设置CAN总线通信模式,实现数据的发送与接收。它的传输速度很快,位速率可达1Mbit/s,可满足高速大流量实时传输要求。
SJA1000在逻辑上实现了传输数据的编码和解码,若要与物理线路连接,必须借助总线驱动器。PCA82C250是协议控制器与物理链路之间的接口,可以用高达1Mbit/s的位速率在两条有差动电压的总线电缆上传输数据,它与SJA1000结合才能实现CAN总线通信。
图1为CAN总线接口电路原理图。图中,SJA1000用16MHz的晶振作为基准时钟,数据线AD0~AD7与核心控制器的低八位数据线相连,在CS、RD、WR的控制下可实现芯片寄存器的读写。RX0和TX0与PCA82C250数据输入引脚相连,作为串行数据线。RX1与PCA82C250的参考电压引脚5相连,向PCA82C250输出参考电压。PCA82C250的两根输出数据线之间加上120Ω的终端电阻,用以匹配线路。
上位机通过专用的USBTOCAN转换器实现PC机与CAN总线的连接,市场上有很多这类产品,这里不再详细说明。上位机主要提供人机交互界面,显示状态和控制器参数,并完成参数与程序的下载。
2 通信协议构建
DSP控制器上的CAN总线端口要完成两项工作:(1)上传控制器的控制常量和电流、间隙等状态参数,送给检测系统;(2)读取上位机下传的待修改的控制参数,实现参数的在线修改,接收下传的程序文件,实现DSP主程序的在线写入。
在调试过程中,实现多DSP系统的在线联调是很有效的调试手段。这样,上位PC机不但能够采集各控制器的状态参数,还能够对采集的数据进行整理与显示,并能实时调整不同控制器的控制参数,最终实现控制器运行程序的远程下载。
为实现CAN总线的数据传送,需要定义参数包、程序包、命令包三种传送数据包,并分别由0x11、0x22、0x33标示出来。根据数据传送方向的不同,数据包的格式略有差异。考虑到CAN总线上的节点较多,为避免数据传送过程中出现混乱的情况,定义数据发送的基本数据包大小为8个字节,即CAN总线一次传送的最大字节数为8。
2.1 下传数据协议
下传数据包括程序、参数、命令三种数据类型。
2.1.1 参数数据包格式
上位机需要下传的数据包括控制参数C1、C2、C3及给定间隙与电流,根据修改需要,每个参数都是单独下传的。下传数据包的大小与CAN的最大有效传送字节数一致,为8个字节。第一个字节指出数据包的类型(用Oxll标示),第二个字节指出参数类型(用0xx7标示),第三字节至第八字节指出传送的有效数据,对应上面给定参数的参数标示依次为0x17、0x27、0x37、0x47、0x57。图2所示为数据包的一般格式。
2.1.2 程序数据包格式
FLASH写入文件较大,一般有几十K字节。控制系统采用的FLASH芯片AT29C010以128字节为基本操作单位。为了适应芯片,可将文件分成128字节的数据段,并为每个数据段标定次序。发送时,标出数据段号及该片数据所处段中的位置即可。控制器接收到128字节后,做一次写入FLASH操作,数据包格式及说明见图3。