本发明涉及数控技术与自动化控制技术领域,尤其指一种多轴联动嵌入式数控系统及其开发方法。
背景技术:
在经济全球化和信息技术革命的影响下,国际制造业正在发生深刻变化,制造业的规模和水平已成为衡量一个国家综合实力的重要标志。数控( numerical control,NC) 机床,特别是高档数控机床是国际装备制造业竞争的热点领域,加强数控系统技术领域的基础研究和共性关键问题的攻关,已成为装备制造业发展的当务之急。
目前,数控系统主要分为PC型数控系统和嵌入式数控系统,两者相比,PC型数控系统具有大量冗余软硬件,实时性低,且功耗高稳定性较低,而嵌入式数控系统的数据处理能力和模块控制能力相对较强,然而,传统的嵌入式数控系统也存在一些缺陷,例如:处理器的性能不足以支持复杂算法的执行,芯片之间的物理通信方案有丢失数据的隐患,平台可重构性不足以实现设备之间的互换,通信接口的传输速率有限,人机交互不够智能化等等。上述问题不仅是硬件处理器的原因,与所设计的数控系统结构、通信方案、控制算法等也有很大的关系,基于以上原因,传统的嵌入式数控系统的开发过程通常较复杂、周期较长。
技术实现要素:
本发明所要解决的技术问题是提供一种多轴联动嵌入式数控系统及其开发方法,前述多轴联动嵌入式数控系统的开发方法可有效降低系统的设计难度,大大缩短开发周期,有利于用户集中精力解决具体的应用问题。
为了解决上述技术问题,本发明采用如下技术方案:一种多轴联动嵌入式数控系统的开发方法,包括以下步骤:
第一步,构建硬件平台,使用多核处理器作为数控系统的运算单元,并使用FPGA作为数控系统的控制核心;
第二步,设计硬件电路,需要设计的电路包括给整个数控系统供电的电源模块、基于FPGA扩展的外围电路模块以及多核处理器的RAM、ROM、GPMC接口电路;
第三步,ARM-linux嵌入式实时操作系统移植,先搭建多核处理器的Linux开发环境,再进行U-Boot编译与镜像文件制作、内核编译与镜像文件制作、文件系统编译与镜像文件制作,最后固化Linux系统至Flash中并制作Linux SD系统启动卡;
第四步,多核处理器的RTOS开发;
第五步,多核处理器的各内核之间建立通信;
第六步,多核处理器与FPGA通过GPMC接口总线建立通信;
第七步,外围电路模块的固件程序开发;
第八步,将多核处理器的固件程序、应用程序以及FPGA的固件程序固化至系统。
进一步地,所述第二步中的外围电路模块包括电机控制输出模块、电机状态反馈模块、编码器反馈模块、通用输入输出模块和AD/DA模块,所述第七步中外围电路模块的固件程序开发包括对电机控制输出模块、电机状态反馈模块、编码器反馈模块、通用输入输出模块和AD/DA模块的固件程序开发,所述电机控制输出模块用于多轴脉冲同步插补输出,所述电机状态反馈模块用于反馈电机的状态,所述编码器反馈模块用于反馈电机当前的绝对坐标,所述通用输入输出模块为数控机床各类通用信号输入口和输出口,所述AD/DA模块为数控机床各类模拟量信号输入口与控制信号输出口。
更进一步地,所述第一步中的多核处理器采用内部集成两个ARM核与两个DSP核的异构多核处理器AM5728,所述第一步中的FPGA采用英特尔Cyclone10系列的FPGA芯片。
更进一步地,所述第四步中,选择异构多核处理器AM5728的DSP核进行RTOS开发:在Windows CCS环境下使用TI的RTOS开发包实现环境搭建,仿真器配置和仿真步骤,程序编译和运行。
更进一步地,所述第五步中,异构多核处理器AM5728的ARM核与DSP核之间建立高速通信:先对Syslink工具包进行配置、编译、安装,再使用SysLink工具包对应用程序进行编译,编译完成后,对应目录生成可执行文件。
更进一步地,所述第六步中,异构多核处理器AM5728与FPGA建立通信:将GPMC接口配置为异步模式并设置NOR FLASH、非地址数据线复用的模式,异构多核处理器AM5728通过在Linux下调用GPMC驱动函数驱动GPMC接口,从而实现与FPGA高速数据通信。
再进一步地,基于上面所述的多轴联动嵌入式数控系统的开发方法,得到本发明所涉的多轴联动嵌入式数控系统,该数控系统包括:多核处理器、FPGA、电源模块以及基于FPGA扩展的外围电路模块,所述电源模块分别与多核处理器、FPGA、外围电路模块连接,所述多核处理器还与FPGA连接;
所述多核处理器用于规划数控机床各轴的运动轨迹并进行相应的运动控制算法处理和插补运算;
所述FPGA用于根据多核处理器传送的各轴脉冲值与方向值进行各轴同步插补以及实时读取外围电路模块的反馈数据并将其传送至多核处理器;
所述外围电路模块用于实现多轴联动,完成复杂曲面的加工,并实时检测各轴的运行状态;
所述电源模块用于给整个数控系统供电。
再进一步地,所述外围电路模块包括电机控制输出模块、电机状态反馈模块、编码器反馈模块、通用输入输出模块以及AD/DA模块;
所述电机控制输出模块用于多轴脉冲同步插补输出;
所述电机状态反馈模块用于反馈电机的状态;
所述编码器反馈模块用于反馈电机当前的绝对坐标;
所述通用输入输出模块为数控机床各类通用信号输入口和输出口;
所述AD/DA模块为数控机床各类模拟量信号输入口与控制信号输出口。
优选地,所述多核处理器包括内部集成两个ARM核与两个DSP核的异构多核处理器AM5728以及分别与异构多核处理器AM5728连接的RAM存储器、ROM存储器和内存数据校验模块,所述FPGA采用英特尔Cyclone10系列的FPGA芯片,所述异构多核处理器AM5728中的一个ARM核用于解析数控G代码指令,另外一个ARM核用于多线程任务调度与高速通信,所述异构多核处理器AM5728中的一个DSP核用于负责区域运动控制运算,另外一个DSP核用于将插补数据传送至FPGA处理器。
本发明主要结合了现有电子产品快速发展并成熟的芯片技术,以高性能的异构多核处理器AM5728和扩展性强的FPGA作为硬件平台,设计硬件电路,对DSP内核进行RTOS开发,并对外围电路模块进行固件程序开发,从而研发出一款开放式的嵌入式数控系统平台,具体的,该异构多核处理器AM5728能很好的执行复杂的算法,利用FPGA进行简单的扩展能实现对多种外围电路的控制,异构多核处理器AM5728的内核与内核之间建立高速通信,异构多核处理器AM5728与FPGA则通过GPMC接口总线建立高速通信,各芯片之间的物理通信高速、顺畅,数据传输的安全性高。上述开发方案有效的降低了设计难度,大大缩短了开发周期,使用户可以集中精力解决具体的应用问题,且上述开发方案研发出来的数控系统控制能力强,运算速度快,通过简单的设计即能使数控机床完成高精度的多轴联动,完成复杂曲面的加工。
附图说明
图1为本发明中的多轴联动嵌入式数控系统的开发方法的工作流程图;
图2为本发明中的多轴联动嵌入式数控系统的结构框图;
图3为本发明中的多轴联动嵌入式数控系统的多核处理器的结构示意图;
图4为本发明中的多轴联动嵌入式数控系统的多核处理器GPMC接口配置图;
图5为本发明中的多轴联动嵌入式数控系统的工作流程图。
具体实施方式
为了便于本领域技术人员的理解,下面结合实施例与附图对本发明作进一步的说明,实施方式提及的内容并非对本发明的限定。
图1示出了一种多轴联动嵌入式数控系统的开发方法的工作流程图,具体的,该开发方法包括以下步骤:
S101、基于多核处理器和FPGA构建硬件平台
采用异构多核处理器AM5728作为数控系统的运算单元,并采用英特尔Cyclone10系列FPGA芯片作为数控系统的控制核心,其中,异构多核处理器AM5728内部有两个ARM Cortex-A15 RISC CPU内核和两个 TI C66x VLIW 浮点 DSP内核,开发人员能够将多线程控制与运动控制算法分离开来,从而降低系统软件的复杂性,而英特尔Cyclone10系列的FPGA芯片具有高宽带、低静态功耗、低成本的优点。
S102、设计硬件电路
电路设计主要针对给整个系统供电的电源模块以及基于FPGA扩展的外围电路模块进行硬件电路设计,除此之外,在多核处理器中,异构多核处理器AM5728分别与RAM存储器、ROM存储器、FPGA连接,具体地,RAM存储器采用工业级低功耗DDR3,存储大小为:1GByte/2GByte(4*256MByte/4*512MByte),ROM存储器采用工业级eMMC,存储大小为4GMByte/8GByte,因此还需对异构多核处理器AM5728的RAM、ROM、GPMC接口电路进行硬件电路设计,外围电路模块包括伺服电机控制输出模块、伺服电机状态反馈模块、编码器反馈模块、通用输入输出模块、AD/DA模块。
S103、ARM-linux嵌入式实时操作系统移植
先搭建异构多核处理器AM5728的Linux开发环境,再进行U-Boot编译与镜像文件制作、内核编译与镜像文件制作、文件系统编译与镜像文件制作,最后固化Linux系统(U-Boot、内核、文件系统)到Flash,并制作Linux SD系统启动卡。特别需要提出说明的是,在嵌入式实时操作系统的移植过程中,各个步骤必须严格按照芯片官方提供的软件开发工具包(SDK:Software Development Kit)及芯片手册进行开发。
S104、DSP核内部基于CCS的RTOS开发
在Windows CCS环境下使用TI的RTOS开发包做开发,其中包含环境搭建,仿真器配置和仿真步骤,程序编译和运行。此处需要注意的是在CCS环境下通过仿真器连接DSP核时,必须先连接ARM核再连接DSP核,否则无法仿真DSP核。
S105、ARM核与DSP核之间的高速通信
异构多核处理器AM5728的ARM核与DSP核之间的核间通信是SysLink工具包下面的组件,因此,先对Syslink工具包先进行配置、编译、安装,再使用SysLink工具包对应用程序进行编译,编译完成后,对应目录生成可执行文件,具体的,app_host为Cortex-A15端的执行文件,dra7-dsp1-fw.xe66为DSP核1的固件,dra7-dsp2-fw.xe66为DSP核2的固件,更具体的,系统要建立两种核间通信,如下所述:
第一种核间通信:ARM核1与DSP核1创建一个传递数据的消息,ARM核1发送消息到DSP核1,DSP核1反馈消息到ARM核1,具体的操作指令例如:
cd/sys/bus/platform/drivers/omap-rproc/
rm /lib/firmware/dra7-dsp1-fw.xe66
ln -s server_dsp1.xe66 /lib/firmware/dra7-dsp1-fw.xe66
echo 40800000.dsp >unbind
echo 40800000.dsp >bind
app_host DSP1
第二种核间通信:ARM核2与DSP核2创建一个传递数据的消息,ARM核2发送消息到DSP核2,DSP核2反馈消息到ARM核2,具体的操作指令例如:
cd/sys/bus/platform/drivers/omap-rproc/
rm /lib/firmware/dra7-dsp2-fw.xe66
ln -s server_dsp2.xe66 /lib/firmware/dra7-dsp2-fw.xe66
echo 41000000.dsp >unbind
echo 41000000.dsp >bind
app_host DSP2
S106、异构多核处理器AM5728与FPGA通过GPMC接口总线通信
GPMC是TI的芯片用来与外部存储设备例如NOR FLASH、NAND FLASH、SRAM等等通信的一个接口,异构多核处理器AM5728通过在Linux下调用GPMC驱动函数驱动GPMC接口,实现与FPGA高速数据通信,具体的,把GPMC接口配置为异步模式并设置NOR FLASH、非地址数据线复用的模式与FPGA通信,更具体的,按照图4所示对GPMC接口进行配置,图中A[27:1]为地址线,D[15:0]为数据线,CS[5:0]为选通引脚,ALE为地址锁存引脚,RE为读使能引脚,WE为写使能引脚,CLE为命令锁存引脚、WAIT为等待引脚、CLK为时钟引脚,通过代码实现GPMC的内存分配,例如:
/*****************************************************/
constint MMU_BASE = 0x08010000;
volatile int *mmu_sysconfig = (int *) (MMU_BASE + 0x10);
volatile int *mmu_sysstatus = (int *) (MMU_BASE + 0x14);
// execute software reset
*mmu_sysconfig = 0x00000002;
// wait for reset
while ((*mmu_sysstatus& 0x00000001) != 0)
//以下将0x1000000地址虚拟到0x11000000,则基地址为0x11000000
mmuWriteStaticTlb(entry,0x11000000,0x01000000);
/*****************************************************/
Linux内核源码中有gpmc.h与gpmc.c文件,里面的函数对GPMC的支持很全面,要使用这些函数,需要先调用omap_init_gpmc()与omap_init_elm()初始化GPMC device,否则无法调用insmod加载驱动模块。GPMC驱动设计的关键是要正确配置相关的寄存器,否则得不到想要的运行结果。对于NOR类型的器件,只需配置GPMC_CONFIG1~ GPMC_CONFIG7这几个寄存器即可。
Linux中gpmc驱动源代码在 /arch/arm/mach-omap2/gpmc.c,配置与GPMC相关的7个特殊寄存器如下:
/*****************************************************/
GPMC_CONFIG1_1 = 0x00001010;
GPMC_CONFIG2_1 = 0x00101080;
GPMC_CONFIG3_1 = 0x00020201;
GPMC_CONFIG4_1 = 0x0f031003;
GPMC_CONFIG5_1 = 0x000f1111;
GPMC_CONFIG6_1 = 0x0f030080;
GPMC_CONFIG7_1 = 0x00000F42;
gpmc_write_reg(GPMC_IRQENABLE,0);
gpmc_write_reg(GPMC_TIMEOUT_CONTROL,0);
gpmc_write_reg(GPMC_CONFIG,0);//注意:此处一定要配置
//1 LIMITEDADDRESS 0-1 Limited Address device support
gpmc_cs_write_reg(GPMC_CS,GPMC_CS_CONFIG1,gpmc_nor[0]);
gpmc_cs_write_reg(GPMC_CS,GPMC_CS_CONFIG2,gpmc_nor[1]);
gpmc_cs_write_reg(GPMC_CS,GPMC_CS_CONFIG3,gpmc_nor[2]);
gpmc_cs_write_reg(GPMC_CS,GPMC_CS_CONFIG4,gpmc_nor[3]);
gpmc_cs_write_reg(GPMC_CS,GPMC_CS_CONFIG5,gpmc_nor[4]);
gpmc_cs_write_reg(GPMC_CS,GPMC_CS_CONFIG6,gpmc_nor[5]);
//重点注意gpmc_write_reg(GPMC_CONFIG,0);否则地址会有偏移
/*****************************************************/
配置完成后,修改config文件(先复制/arch/arm/configs/ti5728_evm_defconfig到上级arm文件夹),将gpmc文件装载入内核,例如:
/*****************************************************/
CONFIG_GPMC_FPGA=y //编译到内核
CONFIG_GPMC_FPGA=m //生成modules,gpmc.ko文件可用insmod加载,方便调试
/*****************************************************/
编译内核后加载gpmc驱动模块:insmodfpga.ko。
S107、外围电路模块的固件程序开发
外围电路模块包括电机控制输出模块、电机状态反馈模块、编码器反馈模块、通用输入输出模块和AD/DA模块,需要对这些模块全部进行固件程序开发,电机控制输出模块用于多轴脉冲同步插补输出;电机状态反馈模块用于反馈电机的状态,如定位运行,定位完成,报警与警告等;编码器反馈模块用于反馈电机当前的绝对坐标;通用输入输出模块为数控机床各类通用信号输入口和输出口,如加润滑清洗液等;AD/DA模块为数控机床各类模拟量信号输入口与控制信号输出口,如温度检测,液位检测等。
S108、将DSP与FPGA固件程序、ARM应用程序固化至系统,完成整个数控系统的开发。
基于上述的多轴联动嵌入式数控系统的开发方法,得到本发明所涉的多轴联动嵌入式数控系统,如图2所示,该数控系统包括:多核处理器、FPGA、电源模块以及基于FPGA扩展的外围电路模块,电源模块分别与多核处理器、FPGA、外围电路模块连接,多核处理器还与FPGA连接;多核处理器用于规划数控机床各轴的运动轨迹并进行相应的运动控制算法处理和插补运算;FPGA用于根据多核处理器传送的各轴脉冲值与方向值进行各轴同步插补以及实时读取外围电路模块的反馈数据并将其传送至多核处理器;外围电路模块用于实现多轴联动,完成复杂曲面的加工,并实时检测各轴的运行状态;电源模块用于给整个数控系统供电。
再进一步地,外围电路模块包括电机控制输出模块、电机状态反馈模块、编码器反馈模块、通用输入输出模块以及AD/DA模块;电机控制输出模块用于多轴脉冲同步插补输出;电机状态反馈模块用于反馈电机的状态;编码器反馈模块用于反馈电机当前的绝对坐标;通用输入输出模块为数控机床各类通用信号输入口和输出口;AD/DA模块为数控机床各类模拟量信号输入口与控制信号输出口。
优选地,如图2和图3所示,多核处理器包括内部集成两个ARM核与两个DSP核的异构多核处理器AM5728以及分别与异构多核处理器AM5728连接的RAM存储器、ROM存储器和内存数据校验模块,FPGA采用英特尔Cyclone10系列的FPGA芯片,异构多核处理器AM5728中的一个ARM核用于解析数控G代码指令,另外一个ARM核用于多线程任务调度与高速通信,异构多核处理器AM5728中的一个DSP核用于负责区域运动控制运算,另外一个DSP核用于将插补数据传送至FPGA处理器。
更优选地,RAM存储器包括4片DDR3,该4片DDR3分为两组,每两片DDR3为一组,一片DDR3的存储大小为256M或512M,因此RAM存储器的存储大小为1GByte或 2GByte,ROM存储器采用存储大小为4GMByte或8GByte的eMMC,内存数据校验模块采用DDR3 ECC。
参照图5,上述实施方式提供的多轴联动嵌入式数控系统的工作流程如下:
S201、数控机床上电,电脑开机,进而数控系统上电,异构多核处理器AM5728中的ARM核1与ARM核2初始化,同时唤醒DSP核1与DSP核2,FPGA也初始化。
S202、异构多核处理器AM5728的ARM核1先解析数控G代码指令, ARM核2再刷新显示器界面与高速通信,最后ARM核1写共享内存,发送中断至DSP核1。
S203、异构多核处理器AM5728的DSP核1接收中断,读取共享内存,接收数控运动代码数据,进行负责区域运动控制运算,DSP核2实现FPGA通信与插补输出,将插补数据传送至FPGA。
S204、异构多核处理器AM5728的DSP核2通过GPMC接口与FPGA数据交互,FPGA进行各轴同步插补,实现多轴联动。
S205、异构多核处理器AM5728的DSP核2发送中断至ARM核2,ARM核2读取共享内存,再将伺服电机状态反馈值、编码器反馈值保存并在界面显示。
上述实施例为本发明较佳的实现方案,除此之外,本发明还可以其它方式实现,在不脱离本技术方案构思的前提下任何显而易见的替换均在本发明的保护范围之内。
为了让本领域普通技术人员更方便地理解本发明相对于现有技术的改进之处,本发明的一些附图和描述已经被简化,并且为了清楚起见,本申请文件还省略了一些其它元素,本领域普通技术人员应该意识到这些省略的元素也可构成本发明的内容。