命令数据指出对下传参数的操作,Oxx7+0x44表示对某一参数的修改生效,如:0x17+0x44使能C1,0x27+0x44使能C2,0x37+0x44使能C3。如果修改的参数不能满足控制要求,调试员希望能恢复原来的运行参数,因此定义0x55为修改参数恢复命令,如:0x17+0x55恢复C1,0x27+0x55恢复C2,0x37+0x55恢复C3。0x66+0x66表示将下传数据写入最后的FLASH参数存储区。命令数据包格式如图4所示。
2.2 上传数据协议
上传数据包的大小也为8个字节,数据包类型分为参数反馈、命令反馈两种,参数反馈用于上传DSP的实际运行控制参数及间隙、电流等状态信息,命令反馈用于对PC机使能、写入、参数恢复等命令的应答。
上传数据依次为控制参数C1、C2、C3、CURRENTl、CURRENT2、CLEARANCE。数据类型标示依次为0x17、0x27、0x37、0x47、0x57、0x67。由于上位机要同时接收多个控制器上传的数据,所以为了正确区分这些参数,需要给上传的数据包加入端口标示,指出数据包来自哪个总线端口。上传的数据包在前面格式的基础上还要加入对应于各控制器的CAN总线端口号。
上传命令是对总线通信出现异常情况的应答,因为控制器随时将控制参数上传,且参数字节数较少,出错的可能性较低,不需配备应答命令;而上传程序的数据量较大,容易出现错误,必须配备应答命令,指示程序写入过程。
因为控制器是周期性地扫描SJAl000的接收缓冲区,当总线连接的节点较多时,数据量较大,难免会发生数据漏收的情况;而且控制器对外部中断的响应也会影响扫描周期,使接收缓冲区中未来得及读取的数据被新数据冲掉。当控制器发现应接收的数据位置与已接收到的数据位置不符时,控制器发差错命令给上位机,指出应接收的数据段号及位置,上位机接收到这一信息后重发相关数据。发送数据包包含CAN端口字节、命令标示、段号、位置号等信息。通信过程中也可能出现发送数据与接收数据不符的情况,因此有必要引入数据校验算法。控制器将接收到的128字节校验后得到的校验值与接收到的校验值作比较,一致后才将数据写入FLASH;否则反馈回校验值错误信息,上位机重发该段数据。发送数据包包含CAN端口字节、命令标示、段号、重发标示(0x88)等信息。
图5
3 通信程序设计流程
3.1 控制器通信流程
控制器的通信部分主要在主程序循环中完成。每次主程序循环中,控制器都向调试系统发送当前C1、C2、C3、CURRENTl、CURRENT2、CLEARANCE等信息;一旦接收到调试系统下传的信息,控制器便分析下传信息的性质,对它们分别进行判别与应答。
图5是控制器的通信流程。控制器上电后,程序从FLASH的参数存储区(最后256个字节)读取控制参数值,存人控制参数缓存中,作为参数初值。同时,控制器通过CAN总线接收上位机下传的控制参数,校验后存入控制参数缓存中。一旦接收到参数使能命令,则将缓存中的数据复制给C1、C2、C3等变量,作为实际的工作参数;调试完毕后,在接收到参数写入命令后,将参数写入FLASH的参数存储区,作为永久工作参数。接收到程序数据包后,控制器首先检验数据的次序,保证接收到的数据按次序排列;接着代入校验算法,将计算得到的校验值和接收的校验值作比较,不一致则给上位机反馈校验值错误命令,要求上位机重发该段程序,否则将数据写入FLASH。图中监控信息的发送周期可根据情况确定。
3.2 上位机通信流程
上位机是调试员与控制系统的接口,它显示控制器的上传参数,将调试员需要修改的控制参数下传。为完成上述功能,调试界面应包括参数显示窗口、参数输入窗口、命令工具条等,必要的话,还应将状态参数以曲线的形式显示出来。调试人员根据状态曲线调整控制参数。
图6是上位机的调试流程,单控制器的总线最短发送周期为5ms,随着总线通信量的增加,监控界面的扫描周期也应相应延长。参数显示界面显示的是上位机最新收到的参数,其值总是实时刷新的。发送修改参数时,每次只发送一个参数,上位机需将参数变成不大于4字节的字符型数组才能发送。控制器在收到参数数据包后,也要将数据字节逆序重组,才能得到需要的修改参数。上位机在下载程序的过程中,若在对某段程序多次重复发送后依然收到错误反馈,则显示错误状态,停止数据发送,由调试人员检查线路,重新给出下载命令。
多个控制器控制参数的调试是一个相当繁杂的过程,本文给出了基于CAN总线的调试系统,其设计目的就是简化调试过程,缩短调试时间。应用这套系统,调试人员可以同时动态地调整多个控制器的控制参数,通过反馈的控制器状态判断参数优劣,达到快速寻找最优控制参数的目的,是调试过程中的一条有效辅助手段。