基于CAN总线的分布式机器人控制系统设计
扫描二维码
随时随地手机看文章
0 引言
机器人控制系统是机器人信息处理和控制的主体,其设计好坏将决定机器人系统的整体行为和性能。机器人控制系统结构一般可分为三种类型:(1)集中控制方式,利用一台微型计算机实现全部功能,这种方式具有结构简单、经济的特点,但处理能力有限,难以满足高性能控制要求并且控制风险高度集中。(2)主从控制方式,用主从两个CPU进行控制,主CPU担当系统管理,机器人语言编译和人机接口功能,同时也利用它的运算能力完成坐标变换、轨迹插补;从CPU完成全部关节位置数字控制,主从CPU间通过公用内存交换数据,对采用更多的CPU进一步分散功能比较困难。(3)分布式控制,普遍采用上、下位机二级分布式结构,上位机负责整个系统管理以及运动学计算、轨迹规划等,下位机由多个CPU组成,每个CPU控制一个关节运动,这些CPU和上位机通过总线形式相联系。这种结构的控制器工作速度和控制性能明显提高,是一种比较理想的机器人控制方式[1]。传统的机器人控制器采用MCU作为控制芯片,其运算速度和处理能力难以满足日益复杂的机器人控制。在通讯方式上,常用的是RS422或RS485通讯,通讯的实时性较差,故障率较高,出现故障时,不容易排查[2]。本文所设计的机器人控制系统采用分布式控制方式,上位机采用高性能的工业PC机,下位关节控制器选用集成DSP的高速运算处理能力和MCU的控制特性于一体的Motorola DSP56F807作为控制芯片,上位机和下位各关节控制器之间采用了有效地支持分布式控制和实时控制的CAN(Controller Area Network)总线通讯方式,既能快速地实现机器人控制的复杂算法,又具有较高的控制实时性,是一个高性能的机器人控制系统。
1 控制系统结构
机器人是一个多自由度系统。机器人控制本质上是对各个关节的运动进行控制,使其协调运动,从而完成一些相对复杂的动作。该控制系统采用分布式控制方式,由上位主控计算机模块、通讯模块和下位关节控制器模块组成,如图1 所示。上位主控计算机负责整个系统的调度管理、在线运动规划、故障诊断和人机交互等功能;通讯模块负责上位计算机与下位各关节控制器之间的实时信息交换;各关节控制器和驱动直流无刷电机集成在一起,各个关节的运动由各关节控制器发出PWM信号驱动直流无刷电机实现。
图1控制系统简图
1.1 上位主控计算机模块
上位计算机是控制系统的中枢,要求体积小,运算速度快,满足机器人实时控制的要求,通常采用高性能工业控制计算机。上位机应用程序在可视化编程环境VC++6.0下编制,分为程序界面、通讯初始化部分和控制部分。控制部分是整个上位机软件控制的核心,可实现单关节控制和多关节协调控制,图2为单关节控制部分流程图,单关节控制是从上位机输入关节应该运动的期望位置值,然后向下位关节控制器发送单关节控制指令,并从下位关节控制器接受关节实际位置信息;下位关节控制器从上位机接收位置信息并加以运算处理,输出PWM信号驱动直流无刷电机运动到期望位置。上位计算机的控制周期为20ms,它通过CAN总线接口卡连接到通讯总线上,与通讯总线上的各关节控制器交互信息。
图2上位机单关节控制程序流程图
1.2 通讯模块
机器人的分布式控制系统中,对通信方式的选择至关重要,上位计算机和下位各关节控制器间的通信既要满足硬件连接简单,扩充方便,又要满足通信的高可靠性和实时性。本设计采用CAN总线作为通信标准,CAN总线是一种有效支持分布式控制和实时控制的串行通讯网络,与一般的通信网络相比具有可靠性高、实时性和灵活性好的优点,非常适合作为机器人控制系统中的通讯方式[3]。
本控制系统中,上位计算机通过周立功单片机公司的USBCAN-II智能CAN接口卡连接到CAN网络,在上位机中调用随卡提供的ZLGVCI驱动库函数,来实现CAN通信的管理和监控。CAN网络各设备间通过双绞线连接,因为双绞线的特性阻抗为120欧,为了增强CAN通信的可靠性和抗干扰性,在CAN网络的两个端点加入120欧的抑制反射的终端匹配电阻。
1.3 下位关节控制器模块
下位关节控制器模块是整个控制系统的底层,与各关节驱动电机集成在一起,实际上是一个单关节运动控制和驱动模块,主要用来控制各个关节运动具体执行过程。关节控制器接收主控计算机的控制命令,对各个关节的运动进行控制,同时把底层信息反馈给上位计算机,便于上位计算机协调规划,统一管理。所有的下位关节控制器在硬件结构上完全相同,根据各关节运动控制的差异,内部灌注的软件程序有所不同。关节控制器是整个控制系统的核心,也是本文研究的重点,它的性能好坏直接关系到机器人的整体性能。
2 控制器硬件系统设计
控制器硬件系统按结构和功能可分为主处理器单元、电源电路、电机驱动电路、CAN接口电路、欠压保护电路、过流检测电路等模块,具体电路如图3所示。[!--empirenews.page--]
图3控制器硬件电路原理简图
2.1 主处理器芯片
本设计核心控制芯片采用Motorola DSP56F807,该芯片混合了DSP 的高速运算能力与MCU 的控制特性于一体,提供了许多专用于电动机控制的外设,包括两个脉宽调制模块(PWMA、PWMB)、2个相位检测器模块(quadrature decoder)、12位精度的模数转换模块(ADC)、4个定时器模块、通讯外设模块(SCI、SPI、CAN)等,因此非常适合于对实现机器人各关节运动的直流无刷电机进行数字控制[4]。
2.2 CAN接口电路
DSP56F807芯片内集成了CAN控制器,要完成数据帧的收发还需外加CAN驱动器芯片,本设计采用Philips公司的PCA82C250为CAN驱动器。为了增强抗外部干扰,在DSP56F807的MSCAN_TX和MSCAN_RX引脚与CAN驱动器之间加两个高速光电耦合器6N137。
2.3 电机驱动电路
电机驱动采用Motorola公司的MPM3003,它内部由上桥臂的3个P-沟道功率型MOSFET 和下桥臂的3个N-沟道功率型MOSFET组成三相桥式电路,是理想的伺服电机驱动集成电路芯片[5]。因PWM输出电压不能直接推动MPM3003,在PWM输出口和MPM3003之间加一个TTL到CMOS转换芯片MC14504B。
2.4 电源电路
控制器上同时需要5.0V 和3.3V 两种电源。外部采用的是直流24V电源,通过MAX724将24V 稳压到5.0V,再通过MAX604将5.0V稳压到3.3V。为了减少电磁干扰,使用磁珠隔离3.3V 的数字电源和模拟电源。
因篇幅有限,其它的电路模块不再一一介绍。
3 控制器软件设计
控制器软件设计是在Codewarrior6.0集成开发环境下进行的,采用模块化设计,可分为初始化模块、主循环模块和中断子程序模块,整个控制功能由各中断子程序实现,如图4所示。初始化模块的作用是初始化DSP 及控制参数,主循环模块是一个死循环,主要是查询是否有中断产生,如果有中断则转而去执行相应的中断服务子程序。数字PID控制子程序是实现控制功能的主体,完成对关节的位置、速度PID控制,通过定时器中断实现。
图4控制器软件结构简图
对于数字PID控制子程序中的PID算法,采用了一种改进的变速积分PID算法,有效地克服了常规PID算法中出现积分饱和时,造成超调量增加,使调节品质变坏的缺点。变速积分法的基本思想是设法改变积分项的累加速度,使其与偏差大小相对应,偏差大时,减弱积分作用,反之则加强。
常规PID算法数字离散化为:
式中,KP,KI,KD分别为调节器的比例、积分和微分系数;E(k),E(k-1)分别为第k次和k-1次的期望偏差值;U(k)为第k次的调节器输出。
改进后的变速积分PID算法为:
f[E(k)]是E(k)的函数,当|E(k)|≤B时,进行常规的PID控制;当|E(k)|>(A+B)后,不再进行积分项的累加;而当B<|E(k)|>(A+B)时,f[E(k)]随E(k)的减小而增大,累加速度加快。其中,A,B为分离区间。
4 结论
本文设计的机器人分布式控制系统,采用CAN总线作为通信方式,和过去机器人控制中常用的RS485总线相比具有通讯稳定可靠、实时性高等优点。在下位关节控制器中选用了Motorola DSP56F807作为控制芯片,既能方便地利用丰富的外围模块实现控制功能,又能以较快的运算速度实现复杂的控制算法,克服了过去利用MCU作为控制芯片时,难以实现复杂的控制算法的缺点。在控制器软件中采用了改进的变速积分PID算法,对关节位置、速度进行数字PID控制。该控制系统即插即用,功能扩展和故障处理方便;连线简单,过去对6DOF的机械手进行控制,需118根线缆(包括电机线、传感器线和其它开关量控制线),现在只需一根双绞线,外观也很美观;另外,各关节控制器直接分布在控制现场,使模拟信号传输距离明显缩短,有效地改善了抗干扰能力。