[0019] 下面结合附图对本发明的实施例作详细说明:本实施例是以本发明的技术方案为前提进行实施,以下给出了详细的实施方案和具体的操作过程,但本发明的保护范围不限于下述的实施例。
[0020] 如图1所示,本实施例包括控制模块、运动驱动模块、通信模块、输入输出模块、电源模块。
[0021] 控制模块主要包括主CPU、从CPU及其外围电路构成,其中主从CPU均为Cortex-M3微处理器,采用ST(意法半导体)公司的STM32F103ZCT6。其时钟电路包括2部分:HSE振荡器时钟(高速外部信号时钟)和LSE时钟(低速外部信号时钟),HSE振荡器时钟为8Mhz的有源晶振,经倍频后,为系统提供72Mhz的时钟;LSE时钟为32.768Khz的无源晶振,为系统的RTC(实时时钟)提供时钟信号。JTAG接口为系统的调试提供接口,可以实现下载程序和在线调试程序的功能。掉电保护电路包括纽扣电池和电压选择电路,可以保证系统在断电的情况下,保证主从控制模块中CPU的BKP区的正常工作,防止重要数据的丢失。
[0022] 其中主CPU实现运动反馈和逻辑控制,包括:接收外部输入信号;处理逻辑关系,进行逻辑判断;根据判断结果,输出信号给输出模块;处理与PC机的串口通讯数据;处理与外接设备的CAN通讯数据;发送命令给从CPU,控制从CPU发送PWM脉冲的状态;接收从CPU发出的PWM脉冲;接收从运动设备发出的反馈信号。从CPU实现运动控制输出,包括:解析主CPU发出的命令和运动参数;根据运动参数进行插补运算;根据运算结果,输出PWM脉冲。
[0023] 输入输出模块主要对外部IO设备与主从CPU之间的连接电平转换和光电隔离;串口通讯模块主要负责运动控制器与PC机的通讯,使实现PC机对运动控制器的控制;CAN通讯模块为外接的CAN设备提供接口,方便扩展CAN设备。
[0024] 运动驱动模块包括驱动输出电路和反馈电路。其中驱动输出电路负责将主从控制模块发送的运动命令传递给电机驱动器,反馈电路将电机驱动器的反馈信号传递给主控制模块;运动设备可以利用光栅尺等设备,对其运动位置进行监控,其信号通过反馈模块进行计数,并将信号传递给主控制模块,实现运动的闭环控制。
[0025] 如图2所示,为双CPU交互的示意图。主CPU与从CPU之间的握手方式有三种:单个IO传递命令、组合IO方式传递命令、通讯方式传递命令和参数。单个IO传递命令和组合IO方式传递命令是由主CPU通过IO口发送命令,从CPU通过中断的方式接收命令,根据已经约定的格式确定主CPU发送的命令,通过这种方式可以快速的将主CPU的任务传递给从CPU;通讯方式传递参数和命令是有主CPU发起传参数和命令的通讯,从CPU接收后进行校验,并反馈返回帧,通过这种方式可以保证传送数据的正确性,但速度比较慢。
[0026] 由于主控制模块的硬件资源有限,所以利用从CPU的硬件IO资源扩展输入输出端口,其状态通过另一个串口传递。
[0027] 如图3所示,为电机驱动输出的示意图。主CPU将控制电机的方向信号传递给运动驱动模块,从CPU将控制电机的PWM信号和脉冲模式选择信号传递给运动驱动模块。运动驱动模块根据脉冲模式选择信号,利用数据选择器,将方向信号与PWM信号的输出端口进行重新分配,从而输出指令脉冲+指令方向或者CW脉冲+CCW脉冲两种类型的脉冲,所选的数据选择器为74HC153。经过数据选择器后的信号经过电平转换,转换为差分信号传输给电机驱动器,驱动电机运动。
[0028] 电机驱动器发出的Z相反馈信号经过运动驱动模块后,将差分信号转换为TTL电平信号后,传输给主CPU,主CPU利用中断接收Z相反馈信号,用于电机的零点定位。
[0029] 电机驱动器驱动电机运动后,会有正交信号反馈给运动驱动模块中的反馈电路,反馈电路根据接收到正交信号的相位差确定计数的加减。主控制模块会根据需要发送命令给正交计数模块:清计数命令、读当前计数命令和设定比较值命令。反馈电路根据命令,反馈响应的数据给主控制模块。反馈电路通过CPLD实现正交计数和对主控制模块的命令响应,所用的CPLD为Altera公司的EPM240。
[0030] 如图4所示,本实施例与外部的通讯由两部分组成:串口通讯和CAN通讯。串口通讯主要实现上位机与控制器的通讯,通过Modbus协议实现,其中上位机作为主机,控制器作为从机,上位机主动发送命令帧,控制器根据接收到的命令帧,确定否需要改变某些变量的值,再构造返回帧,并发送给上位机。通过串口通讯,可以实现上位机对控制器的控制,也可以通过人机界面实现对控制器的控制。本实施例中,主CPU信号输出后,先经过光耦将信号进行隔离,再利用max232将TTL信号转换为RS232信号。CAN通讯主要用于设备的扩展或者控制器的级联。
[0031] 本实施例所述输入输出模块包含32个输入点和20个输出点。其中,输出点有分为16个光耦输出点和4个继电器输出点。外部信号经过光耦隔离后,传输给主从CPU;主CPU的输出信号,先经过ULN2003的电流放大后,驱动光耦和继电器输出。
[0032] 如图5所示,本设计采用梯形图对运动控制过程进行编程,其软件由三层架构组成:Bootload、引擎与梯形图。其中, Bootload用于引导引擎与梯形图的下载,实现控制器的在线更新功能;引擎分为主CPU引擎与从CPU引擎,主CPU引擎负责实现梯形图指令,并为梯形图指令提供调用的接口,从CPU引擎负责实现运动控制的输出;梯形图是由用户根据需要设计,用以实现具体的逻辑控制功能与运动过程控制。
[0033] 如图6所示,本实施例工作时,上位机将运动命令通过串口通讯模块,发送给主控制模块,主控制模块经过命令解析后,计算运动控制所需的数据,再发送运动参数给从控制模块。发送完成后,给从控制模块发送启动PWM发送命令同时给运动驱动模块发送电机运动方向信号,同时主控制模块接收从控制模块发送的PWM信号进行计数,并根据计数值确定电机的运动状态。电机开始运动后,将电机的位置值反馈给高速正交计数模块进行计数,高速正交计数模块将计数值传输给主控制模块,主控制模块根据反馈的信息确定电机位置,并确定是否需要校正电机位置,并将反馈的信息反馈给上位机,供用户了解电机的运行情况。