基子CAN_BUS的控制器调试系统的设计
关键词:CAN_BUS 调试系统 通信协议
磁悬浮转向架的悬浮由四组电磁铁实现,每组电磁铁都有独立的悬浮控制器,控制该点的悬浮与下落。为了获得最优的控制参数,需要在整个转向架的悬浮过程中通过上位机监视轨道与电磁铁之间的间隙、电磁铁工作电流等状态参数以及悬浮控制器的控制参数,动态地修改控制参数以观察控制效果。
悬浮控制器之间是相互独立的,上位机无法同时监控多个悬浮控制器,因此需要找到合理的通信方式使上位机同时与所有的控制器连接,使它们之间能够实时传递数据。CAN总线是一种有效支持分布式控制和实时控制的多主的异步串行通信网络。由于CAN总线具有较强的纠错能力,支持差分收发,适合高噪声环境,具有较远的传输距离,在各个领域中得到了广泛应用。CAN通信协议规定通信波特率、每个位周期的取样位置和个数都可以自行设定,这保证了用户在使用过程中的灵活性。选用CAN总线,无论是在抗电磁干扰方面还是在实时性方面都能够满足实验要求。
图1
1 调试系统硬件端口的设计
悬浮控制器使用SJA1000作为CAN总线协议转换芯片。SJA1000是一种独立控制器,用于移动目标和一般工业环境中的区域网络控制。它内建BASIC CAN协议,并提供对CAN2.0B协议的支持。通过对片内寄存器的读、写操作,悬浮控制器的核心处理器能够设置CAN总线通信模式,实现数据的发送与接收。它的传输速度很快,位速率可达1Mbit/s,可满足高速大流量实时传输要求。
SJA1000在逻辑上实现了传输数据的编码和解码,若要与物理线路连接,必须借助总线驱动器。PCA82C250是协议控制器与物理链路之间的接口,可以用高达1Mbit/s的位速率在两条有差动电压的总线电缆上传输数据,它与SJA1000结合才能实现CAN总线通信。(凹丫丫范文网fanwen.oyaya.net收集整理)
图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_BUS的控制器调试系统的设计》