赵宵凯, 方益民 , 徐海林
(江南大学 轻工过程先进控制教育部重点实验室,江苏 无锡214122)
运动控制系统在工业控制系统中随处可见,同时工业控制对运动控制系统的要求也在不断提高。我国对运动控制产品质量要求不断提升,传统的基于PC 平台的运动控制器逐渐显示出高能耗、高成本、低可靠性等缺点[1-2]。随着嵌入式技术的不断发展,ARM 微处理器的成本低、能耗低、可靠性高等特点使得其在工业控制领域得到了充分应用[3-5]。PCL6045BL 是一种基于DSP 的专用运动控制芯片,DSP 强大的数据处理能力和较高的运行效率等优点,决定PCL6045BL 可以实现高精度、高速度的多轴伺服控制[6]。
为解决精密制造对低成本、可移植性强的通用型多轴数控系统的迫切需求,文中给出一种基于ARM 微处理器LPC1788 与DSP 专业运动控制芯片PCL6045BL 构成的嵌入式四轴运动控制器。该嵌入式四轴运动控制器具有可以脱离PC 机运行、通用性强、灵活性较大以及能耗低等优点,可以满足运动控制系统高速、高精度的要求。它可广泛应用于雕刻机、机器人、绣花机以及数控加工等工业控制领域。
嵌入式四轴运动控制器主要由硬件部分和软件部分构成。硬件主要包括LPC1788 嵌入式主控板和PCL6045BL 运动控制板两个部分。LPC1788 嵌入式主控板和PCL6045BL 运动控制板之间通过专用的IDE 通信接口进行连接。软件方面在硬件平台上移植μC/OS-Ⅱ嵌入式实时操作系统、触摸屏程序设计、设计PCL6045BL 应用控制程序。采用上述的软硬件平台,嵌入式运动控制器可以达到开放性能好、精度高的要求。嵌入式四轴运动控制器的结构如图1 所示。
图1 嵌入式四轴运动控制器的构成Fig.1 Composition of the embedded four axes motion controller
ARM 具有丰富的通信接口、存储器资源以及人机接口,具备了系统移植的基本条件[7]。PCL6045BL运动控制芯片速度快,可靠性高,性能好,在运动控制方面有很大的优势[8]。嵌入式实时系统μC/OS-Ⅱ不仅提供一些任务管理、通信以及时间管理等基本服务,将系统按照优先级合理地分成多个任务,并由μC/OS-Ⅱ提供系统服务进行通信,以配合实现系统的控制目的[9-10]。将LPC1788 处理器、PCL6045BL 以及μC/OS-Ⅱ三者的优势应用到本嵌入式四轴运动控制器中可以使其具有强大的功能,并缩短开发时间。
本嵌入式四轴运动控制器以LPC1788 为主控制芯片,在ARM 上移植μC/OS-Ⅱ实时操作系统来进行人机界面的显示、I/O 的管理、任务间的通信、指令的编译等工作。PCL6045BL 运动控制模块主要负责位置控制、插补驱动、速度反馈。用户通过触摸屏对运动的参数及模式进行设置,LPC1788 根据运动的具体要求,通过与PCL6045BL 之间的IDE 通信接口来控制DSP 运动控制芯片发出脉冲以达到使伺服电机高速运行。
嵌入式四轴运动控制器的硬件设计主要包括ARM 控制部分和PCL6045BL 运动控制部分。在设计时,分别对ARM 控制部分和PCL6045BL 运动部分进行设计,最后制板,再进行软硬件联合调试。运动控制系统的硬件如图2 所示。
图2 系统硬件框图Fig.2 System hardware block diagram
ARM 部分以嵌入式处理器LPC1788 为核心,配有丰富的存储模块和通用接口,其功能主要有:
配置外部NAND Flash 存储器、NOR Flash 存储器以及SDRAM 用来存放系统参数,操作系统代码以及运动控制系统控制程序。
通过串口、CAN 总线与工控一体机通信,接受触摸屏的数据,并对数据进行处理,得到控制命令和插补参数。
根据系统的运动控制参数对PCL6045BL 进行操作,使其完成控制伺服的功能。
DSP 部分主要以NPM 公司的PCL6045BL 为核心,其主要功能如下:
接受ARM 部分发来的控制命令和插补参数,同时反馈运动信息给ARM 部分。
PCL6045BL 根据LPC1788 发来的运动参数,发出控制伺服电机的脉冲信号,控制电机进行定长运动和插补运动。
接收并处理外部的限位、回原点、减速及编码器信号,增强运动控制系统的控制精度。
通过对IF0 和IF1 端子的设置,PCL6045BL 可以与8 位的Z80、16 位的8086、16 位的H8 和16 位的68 000 CPU 进行过接口。表1 是PCL6045BL 与CPU接口,其中L 表示低电平,H 表示高电平[8]。
表1 PCL6045BL 与4 种CPU 接口时端子设置Tab.1 PCL6045BL with four CPU interface terminal Settings
PCL6045BL 与LPC1788 的通信是通过读写输入输出总线上的地址来进行控制指令和数据传输的。PCL6045BL 每个轴的内部寄存器地址由A0、A1和A2 地址线输入决定,其控制地址范围由输入端子A3 和A4 进行选择[8]。因此在这种主从结构的设计中,ARM 与PCL6045BL 的连接如图3 所示。
图3 PCL6045BL 与LPC1788 的接口电路Fig.3 PCL6045BL and LPC1788 interface circuit
根据系统的硬件原理,运用Protel99 进行原理图设计,并完成PCB 设计、电路板的焊接,得到嵌入式四轴运动控制器的硬件实物如图4 所示。
嵌入式四轴运动控制器提供了丰富的外部接口信号,每个轴具有± EL、减速及ORG 的4 个专用输入信号,以及脉冲输出、编码器输入等信号。
μC/OS-Ⅱ是一种源代码公开的嵌入式实时系统,当外部操作和数据出现时,能够接收并快速处理,然后根据处理结果尽快进行反馈,控制系统对象或者对系统给出反应,创建有一定优先级实时任务,并协调其运行的嵌入式操作系统。μC/OS-Ⅱ具有可移植性、可固化、可裁剪的特点[11-12]。μC/OS-Ⅱ实时操作系统的源代码是完全公开的,其包含的文件结构如图5 所示[13]。
图4 嵌入式四轴运动控制器实物Fig.4 Embedded four axes motion controller object graph
图5 系统软件的整体结构Fig.5 Overall structure of the system software
对μC/OS-Ⅱ的移植主要是对处理器相关代码的重写或修改。移植的主要内容包括:在OS_CPU.H 中用#define 设置一个常量的值、声明10 个数据类型和#define 声明3 个宏;在OS_CPU_C.c 中用C语言编写6 个简单的函数;在OS_CPU_A.asm 中编写4 个汇编语言函数。
完成以上代码的移植,将源程序和操作系统一起编译,然后将生成的二进制执行文件下载到LPC1788 上,实时嵌入式系统μC/OS-Ⅱ就可以在ARM LPC1788 处理器上正常运行。
μC/OS-Ⅱ提供基于优先级抢占式的实时操作系统内核,大致可以分为系统核心(包含任务调度)、任务管理、时间管理、多任务同步与通信、内存管理、CPU 移植等部分。
μC/OS-Ⅱ操作系统支持多任务,每个任务都具有优先级,任务越重要,赋予的优先级应越高,系统内核总是将CPU 分配给处于就绪态的优先级最高任务。
根据实现性优先原则划分任务的方法,优先级大小将系统任务划分为PCL6045BL 控制任务、外部信号控制任务、伺服单元采集任务、Modbus 协议通信任务以及触摸屏管理任务。
与没有系统的程序一样,嵌入式μC/OS-Ⅱ实时多任务操作系统也有一个main 主函数,它是所有函数的运行入口点。在主函数中主要实现硬件的初始化、操作系统的初始化OSInit()、任务创建、一些任务通信方法的创建等操作。系统运行的基本流程如图6 所示。
图6 用户程序流程Fig.6 User program process
在μC/OS-Ⅱ运行任何任务程序之前,首先要调用系统初始化函数OSInit()对操作系统进行初始化。主函数中在用开始多任务调度OSStart()函数之前,用户必须通过OSTaskCreate()函数建立至少一个应用任务,而且任务不能在中断服务程序中建立,否则应用程序会崩溃。在主函数运行到OSStart()时,系统就会进入开始多任务环境,μC/OS-Ⅱ会运行处于就绪态的优先级最高的任务。
PCL6045BL 是通过LPC1788 的总线对寄存器赋值来工作的,把命令写入运动控制芯片PCL6045BL,用PCL6045BL 来完成运动控制,其工作流程如图7 所示。当写入启动指令后,PCL6045BL开始运动。
图7 PCL6045 工作流程Fig.7 PCL6045 workflow
圆弧运动从(0,0)到(2 000,2 000)的圆弧,如图8 所示。
图8 圆弧插补轨迹Fig.8 Trajectory of circular interpolation
选择圆弧插补顺时针模式来实现如上圆弧,此时MOD 设为64 H。使用该模式时,应设置每个插补轴的运动速度,在PRMD 寄存器中指定是否使用恒定合成速度控制,并在所有插补轴的PRMV 寄存器中指定终点位置,在PRIP 寄存器中输入中心坐标。在顺时针插补中,PCL 画一条以中心坐标为中心点,从当前坐标到结束点坐标的顺时针圆弧,其流程如图9 所示。
图9 圆弧插补控制流程Fig.9 Circular arc interpolation control flow chart
X 轴和Y 轴的输出脉冲波形如图10 所示。CH1为X 轴脉冲波形,CH2 为Y 轴脉冲波形,其脉冲均为低电平时有效。
从X,Y 轴2 轴圆弧插补实验可以看出,在看到的波形中X 轴分担了插补运算的主要任务,2 个轴互相配合完成圆弧插补动作。嵌入式四轴运动控制器可以准确地实现PCL6045BL 2 轴圆弧插补的功能,验证了系统方案的正确性。
该运动控制器的硬件结构是基于微处理器LPC1788 和PCL6045BL 运动控制芯片设计的,它较好地发挥了ARM 处理器的高性能、低成本和运动控制芯片的高可靠、开发周期短的优点和PCL6045BL强大的运动控制能力;在控制器硬件平台上移植μC/OS-Ⅱ实时操作系统既能使整个软件系统结构简洁、层次清晰,又能很好地达到运动控制实时性要求。圆弧插补实验验证了方案的正确性,整个系统可靠、稳定且响应速度快。
图10 圆弧插补脉冲输出拉宽显示Fig.10 Circular arc interpolation pulse output shows wide
[1]刘建群,陈新度.Qt 环境下基于PMAC 运动控制器的控制系统开发与应用[J].组合机床与自动化加工技术,2014(1):114-120.
LIU Jianqun,CHEN Xindun.Qt environment with PMAC motion controller based control system development and application of[J].Journal of Combination Machine Tools and Automatic Processing Technology,2014(1):114-120.(in Chinese)
[2]彭全海.基于GT 运动控制器开放式数控系统的研究[D].大连:大连交通大学,2012.
[3]马义德,刘映杰,张新国.嵌入式系统的现状及发展前景[J].信息技术,2001(12):57-59.
MA Yide,LIU Yingjie,ZHANG Xinguo. Current situation and development prospect of the embedded system[J]. Journal of Information Technology,2001(12):57-59.(in Chinese)
[4]Jack Ganssle.Changes in embedded design mathodology[J].Embedded System Programming,1999,9:35-40.
[5]孙安青.ARM Cortex-M3 嵌入式开发实例详解:基于NXP LPC1768[M].北京:北京航空航天大学出版社,2012.
[6]郑广,刘电霆.基于Rabbit6000 和PCL6045BL 的运动控制器设计[J].软件导刊,2012,11(4):100-102.
ZHENG Guang,LIU Dianting.Motion controller design based on Rabbit6000 and PCL6045BL[J].Journal of Software Tribune,2012,11(4):100-102.(in Chinese)
[7]CHEN Y D,WEI H X,WANG T M. Embedded control system for industrial robots[C]//2010 International Conference on Computer,Mechatronics,Control and Electronic Engineering.Shanghai:Shanghai Jiaotong University,2010:122-125.
[8]叶佩青,张辉.PCL6045B 运动控制与数控应用[M].北京:清华大学出版社,2007.
[9]陈瑶,李佳,宋宝华.Cortex-M3 +μC/OS-Ⅱ嵌入式系统开发入门与应用[M].北京:人民邮电出版社,2010.
[10]Jean J Labrosse.Micro C/0S—ⅡThe Real Time Kernel[M].Montreal,Canada:CMP Books,2002.
[11]贾丽.基于μC/OS-Ⅱ的以太网设备远程管理软件设计与实现[D].成都:电子科技大学,2010.
[12]李海强.基于ARM+μC/OS-Ⅱ的智能变功率开水器控制器的研究与设计[D].南京:南京理工大学,2013.
[13]李杰.基于μC/OS-Ⅱ的磁电机焊锡机器人控制系统设计与研究[D].重庆:重庆大学,2013.