随着现代科学技术的飞速发展和社会的进步,服务机器人与人们的生活联系越来越紧密,故日益受到关注。电机控制器作为机器人的核心部分,直接决定了其功能和性能。虽然用于工业机器人的伺服电机控制器技术已经成熟,但用于服务机器人的伺服电机控制器的研究和开发仍然存在许多问题。开发一种“具有开放式结构的模块化、标准化、小型化的嵌入式电机控制器”已经成为当前服务机器人控制器的一个发展方向。
基于美国Microchip公司生产的PIC单片机具有速度快、体积小、低功耗、驱动能力大、可靠性高等优点,故采用该系列微型芯片:PIC18F452开发了一种小型嵌入式电机控制器。该控制器和主控微机、驱动器共同构成机器人伺服控制系统。伺服控制系统采取了可变的控制模式,并且控制器能和驱动电机一起安装在机器人的各个关节,因此特别适合电池驱动的多轴服务机器人的应用。
本文着重介绍控制器的软件构造、操作指令和通信模式。设计了一种使用方便的指令模式,该模式能识别几十种指令语句,并容易实现对指令语句的扩展。同时用串口方式形成机器人伺服控制系统的神经网络,各个小型控制器不但能和主控微机之间通信,而且各个控制器之间也可以进行信息交流。为了保证通信的连续性和可靠性,该伺服控制系统具有通信错误处理机制。
1 控制器的软件构造
该控制系统最大的特点在于位置、速度、电流三种控制方式可随时变更。为了获得可调的直流电压,利用电力电子器件的完全可控性,采用PWM脉宽调制技术,直接将恒定的直流电压调制成可变大小和极性的直流电压作为电机的电枢端电压,实现系统的平滑调速。在每一个控制周期,三种控制模式独立计算,控制器将计算结果以PWM信号形式输出到电机驱动器,同时电机的位置、速度和电流能实时测量并送到主控微机,从而机器人的各个关节能根据不同的外部环境采取不同的控制方式。该控制器的控制原理如图1所示。
为了实现上述目标,在控制器软件的开发上,采用了模块化和子程序嵌套的设计思想。控制器的计算周期T为400μs,每一个周期划分成32个处理模块,利用中断处理在每一个处理模块(t=12.5μs)中对电机位置译码的脉冲进行计数测量。控制器软件构造及主要模块的功能如图2所示。
2 操作指令
该控制器的操作指令包括控制指令、设定指令、询问指令等。指令格式的最高字节为命令字节,即控制器的ID号和Code(指令号)。ID指出控制器的识别号码,Code指出指令代码,它们各占4位。
需要注意的是,对于控制和设定指令,紧随命令字节的是n个字节组成的控制或设定指令数据,但询问指令仅有命令字节,没有指令数据。
2.1 控制指令
伺服控制系统的三种控制模式均有相应的控制指令。
位置控制应用于进行连续点控制的插补点位置控制。位置控制数据由三个字节的有符号数来表示,其最大值和最小值分别为223-1(=7FFFFFH)和-223+1(=800000H)。其中,0H~7FFFFF为电机的正方向,800000H~FFFFFFH为电机的负方向。位置控制指令的格式如图3所示。
速度控制应用于机器人关节以一定速度运动的场合。速度控制数据由一个字节的有符号数来表示,其最大值和最小值分别为27-1(=7F)和-27+1(=80)。
其中,0H~7F为电机的正方向,80H~FFH为电机的负方向。在速度控制模式下,需要停止指令、目标值为零的速度或电流控制指令或到达极限位置时,系统才能停止运行。
电流控制(转矩控制)不仅可以应用于电机的转动方向和电流的控制方向相同的场合,还可以应用在外力作用下,电机处于停止状态或电机的转动方向和电流的控制方向相反的场合。电流控制指令的格式和数据字节的最大最小值与速度控制指令相同。在电流控制模式下,停止方式也和速度控制模式相同。
位置速度复合控制应用于一般位置控制,包括启动阶段的加速控制、速度控制、到达目标前的减速控制和位置控制四个部分。位置速度复合控制指令的控制数据包括3个字节的目标位置数据,1个字节的目标速度数据,1个字节的最大电流数据,共5个字节。各数据的最大最小值分别对应同上。
2.2 设定指令
控制增益设定指令用于设定位置、速度和电流控制的比例和积分常数。其指令格式如图4所示。
运动范围设定指令用于设定机器人关节的极限位置,其指令格式如图5所示。其中动作端A和动作端B分别表示正方向的最大和最小位置。
系统设定主要用于根据控制系统的需要设定各种系统数据。设定数据由一个字节的无符号数来表示。
2.3 询问指令
询问指令的主要功能是查询各电机的位置、速度和电流数据,并且发信侧只有接收到受信侧返回的数据后才能发送下一个询问指令,即询问指令通过一问一答的形式进行通信。询问指令仅由命令字节组成。
位置询问指令的返信数据格式同图3。
速度和电流询问指令的返信数据均只有一个命令字节和一个数据字节。其返信数据的格式如图6所示。
3 通 信
3.1 控制系统连接方式
由于该控制器的通信接口为RS 485,PC机一般只有常用的RS 232串行通信口,主控微机通过转换器将标准的RS 232C转换为RS 485后与控制器连接。一个串口可接16个控制器。控制器包括串联通信接口,电机位置传感器脉冲接收接口,电机电流检测A/D转换接口,PWM控制输出接口和其他I/O接口。主控微机、控制器、驱动器和电机的连接如图7所示。
当主控微机对控制器进行控制时,所有的控制器均接收指令。每个控制器对接收的指令首先要进行ID校验,如果接收的数据ID与本身的ID号一致,则执行该指令,否则忽略该指令,如图8所示。
3.2 通信时间
主控微机和控制器之间的通信速率为38 400 b/s。在每一个控制周期,设计了两次接收和送信程序,即控制器在一个控制周期最多可同时接收和送出两个字节的数据。需要注意的是,主控微机和控制器之间采用的是10位为一帧的异步串行通信方式,因此每个字节的通信时间还应包括帧的起始位和停止位的传输时间。若传输两个字节的数据,则通信时间为[2×(8+2)×1 000]/38 400=0.521 ms,依此类推,即可计算出各指令的通信时间。主要指令及其通信时间如表1所示。
3.3 通信错误处理机制
由于外界干扰或电压波动等原因,主控微机和控制器之间的通信可能会出现错误,导致数据丢失,受信侧不能正常接收数据或系统运行错误。为了确保通信的连续性和可靠性,设计了通信错误处理机制。
由于各指令的通信时间均在2 ms之内,如果受信侧在2 ms之内依然没有接收到完整的数据,则认为通信出现错误,系统将进行恢复处理。受信侧会把已接收的数据清零并等待重新接收,送信侧将再次发送数据。如此循环,如果发送三次之后依然不能恢复正常通信,系统将停止运行。
3.4 通信协议软件
通信协议软件在Windows XP操作系统上用汇编语言开发而成,其编制方案简要介绍如下:
(1)主控微机发送数据
当主控微机发送数据时,需要自动记录指令的命令字节,即需要记录接收该指令的控制器ID号以及指令号Code。
(2)控制器接收数据
控制器接收数据时,首先将会进行ID校验,如果一致则接收,然后根据指令号Code决定需要接收的数据字节数。如果指令ID号与自身的ID号不一致或者在2 ms内没有接收到完整的数据,控制器将会把已接收的数据清零并等待主控微机重新发送。
(3)控制器发送数据
当控制器接收到询问指令,并确认ID一致后,将返回该指令的命令字节(ID+Code)和相应的询问数据。对于控制指令和设定指令,则只返回一个命令字节(ID+Code)。
(4)主控微机接收数据
主控微机接收到控制器返回的数据后,对于控制和设定指令,将会把返回的数据与发送记录相比较,如果一致则删除发送记录,否则,认为通信有误,进行出错处理;对于询问指令,将把接收到的数据显示或储存以备后用。
4 实 验
图9是开发出来的控制器和驱动器。根据软件设计方案编制和调试程序后进行了位置控制、速度控制、电流控制的实机实验。
位置控制实验结果如图10所示。位置控制的单位是编码器的脉冲数(Pulse)。图10指出当目标位置是2 795时,位置控制能够精确地控制电机到达指定的位置。通过多次重复实验,其误差均小于±0.2脉冲。
速度控制实验结果如图11所示。速度控制以脉冲数/周期(Pulse/0.4 ms)为单位。
图11指出当目标速度是30 Pulse/O.4 ms时,速度控制能够精确地控制电机以指定的速度运行。通过多次重复实验,其误差均小于±2 Pulse/O.4 ms。
电流控制实验结果如图12所示。电流控制以电机的额定电流与最大指令比(A/7 FH)为单位。图12指出当目标电流是2 A时,电流控制能够精确地控制电机在指定的电流下运行。通过多次重复实验,其误差均小于±O.1 A。
实验表明本文提出的控制器位置精度、速度精度、电流精度能满足多轴服务机器人的需要。
5 结 语
提出的控制器为嵌入式服务机器人控制器的研究和开发提供了一种新的控制和通信模式。实验结果指出该控制器的控制精度能满足多轴服务机器人的需要。该项目的研究将有助于推动我国服务机器人控制器的发展,具有较好的应用前景。