CN103941649A - 多轴运动卡控制***的控制方法 - Google Patents

多轴运动卡控制***的控制方法 Download PDF

Info

Publication number
CN103941649A
CN103941649A CN201410084251.2A CN201410084251A CN103941649A CN 103941649 A CN103941649 A CN 103941649A CN 201410084251 A CN201410084251 A CN 201410084251A CN 103941649 A CN103941649 A CN 103941649A
Authority
CN
China
Prior art keywords
instruction
module
interpolation
task
emergency
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201410084251.2A
Other languages
English (en)
Inventor
李松
高选全
黄水永
莫广锋
吴杰文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ADVANCED INTELLIGENT MACHINE Co Ltd
Original Assignee
ADVANCED INTELLIGENT MACHINE Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ADVANCED INTELLIGENT MACHINE Co Ltd filed Critical ADVANCED INTELLIGENT MACHINE Co Ltd
Priority to CN201410084251.2A priority Critical patent/CN103941649A/zh
Publication of CN103941649A publication Critical patent/CN103941649A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Programmable Controllers (AREA)

Abstract

本发明公开了一种多轴运动卡控制***的控制方法,涉及机械自动控制技术领域。包括以下步骤:(1)用户通过上位机向运动控制卡中的DSP发送指令;(2)DSP中的指令通信模块定时扫描FPGA中的FIFO和DPRAM缓冲区;(3)指令解析模块读取指令时,优先读取紧急指令环形队列中的指令,若有紧急指令需要执行则先读取紧急指令,若紧急指令缓存无指令,则读取普通指令环形队列;(4)从环形队列中取出指令后,对指令进行解析;(5)速度规划模块和插补模块根据运动类型和参数计算出各轴的速度值。所述方法提高了***运行效率以及数据处理的效率,并有效确保了***运行的高效性和数据的连续性。

Description

多轴运动卡控制***的控制方法
技术领域
本发明涉及机械自动化技术领域,尤其涉及一种多轴运动卡控制***的控制方法。
背景技术
运动控制器是数控***的核心,对其运算性能、实时性及稳定性有很高的要求。典型的DSP+FPGA架构运动控制***结构包括上位机、PCI总线、运动控制卡、输入输出设备、驱动器、电机等。该结构中,运动控制卡通过PCI总线与上位机相连,上位机通过PCI驱动程序实现对运动控制卡的各种操作。上位机负责用户的输入输出,将用户输入指令通过PCI驱动发送给运动控制卡内部寄存器,然后,再由运动控制卡内部算法对用户输入的数据进行处理,并最终通过输出脉冲来实现对电机的控制。同时,电机、驱动器的状态信息会通过PCI驱动从运动控制卡反馈给上位机用户,并在上位机界面显示出来,从而实现对运动的监控。
数字信号处理器(DSP)擅长浮点运算,其基于流水线和哈佛结构的特点保证了运算的速度,但DSP是串行控制的,对于多轴联动的并行控制逻辑无能为力。FPGA具有优秀的并行化处理功能,***时钟高,但处理浮点数据能力不强。综合以上分析,硬件结构采用DSP+FPGA的方案,能够解决上述问题。其中数字信号处理器(DSP)主要负责速度规划、插补以及闭环控制等核心算法以及任务调度控制,FPGA并行控制各轴的逻辑和脉冲的发送等任务。
根据DSP功能需求分析,DSP***内要实现的功能比较多,需要合理的分配DSP的软硬件资源。在选择应用程序的结构时,主要是传统的主函数循环软件结构和基于多线程的软件结构。传统的主函数循环结构一方面不能保证多任务下的实时性的要求,另一方面是在算法开发过程中较难体现模块化的设计思想,在算法设计方面缺乏灵活性,使开发人员在开发过程中要兼顾算法及程序结构的问题,不利于软件的更新和升级。现在市场上很多产品都只是4轴或8轴的运动控制卡,控制轴数偏少,使用成本相应偏高;同时,很少运动控制卡带非运动控制功能,非运动控制功能和运动控制功能相互独立,集成度不高;运动控制卡底层框架实现方式多采用顺序执行和多任务执行方式,***调度合理性和运行高速性有待提高。
发明内容
本发明所要解决的技术问题是提供一种多轴运动卡控制***的控制方法,所述方法提高了***运行效率,以及数据处理的效率,并有效确保了***运行的高效性和数据的连续性。
为解决上述技术问题,本发明所采取的技术方案是:一种多轴运动卡控制***的控制方法,其特征在于包括以下步骤:
(1)用户通过上位机向运动控制卡中的DSP发送指令,发送的指令通过接口传输到FPGA中的FIFO或DPRAM缓存区,其中普通指令通过FIFO传输,紧急指令通过DPRAM通道传输;
(2)DSP中的指令通信模块定时扫描FPGA中的FIFO和DPRAM缓冲区,优先扫描DPRAM缓冲区,后扫描FIFO缓存区,并把各自扫描到的指令数据分别存放到紧急指令环形队列和普通指令环形队列中;
(3)指令解析模块读取指令时,优先读取紧急指令环形队列中的指令,若有紧急指令需要执行则先读取紧急指令,若紧急指令缓存无指令,则读取普通指令环形队列;
(4)从环形队列中取出指令后,对指令进行解析,若是运动指令,则传送给速度规划模块和插补模块处理,若是非运动指令,则根据指令信息进行参数设置或者参数获取或I/O操作;
(5)速度规划模块和插补模块根据运动类型和参数计算出各轴的速度值,并将该速度值传送给轴脉冲输出模块,轴脉冲输出模块通过脉冲发送模块输出脉冲命令给伺服驱动器,控制各轴运动。
优选的,在进行步骤(5)控制时,对于开环***,各轴速度直接由脉冲命令发送模块发送到FPGA的控制寄存器中;对于闭环***,各轴速度先经过闭环控制后再由脉冲命令发送模块发送到FPGA的控制寄存器中,FPGA根据每周期的速度控制伺服驱动器。
优选的,在进行步骤(5)的同时,DSP中的状态信息反馈模块定时将***的状态传送给FPGA中的DPRAM,然后PFGA将***的状态信息通过PCI桥或RS485接口发给上位机,实现实时监控功能。
优选的,在步骤(1)中发送的指令通过PCI桥或RS485接口传输到FPGA中的FIFO或DPRAM缓存中。
优选的,所述指令通信模块首先检测是否有PLC运动任务,如果有PLC运动任务,则通过判断紧急任务标志确定属于紧急指令或者普通指令,在获取和保存指令参数前,先判断指令存放环形队列剩余空间是否足够存放该指令,再决定读取指令和参数或者跳出线程循环等待下一次线程执行;如果没有PLC运动任务,则先读取FPGA中的DPRAM缓存区,若DPRAM有接收到新的指令,则根据判断紧急指令存放环形队列剩余空间是否足够存放该指令来决定下一步是读取紧急指令并保存或进入下一步操作,否则进入下一步操作;然后再读取FPGA中的FIFO缓存区,若FIFO有接收到新的指令,则根据判断普通指令存放环形队列剩余空间是否足够存放该指令来决定下一步是读取普通指令并保存或进入下一步操作,否则进入下一步操作;至此完成一次执行,等待下一次周期到来时,执行以上步骤,依次循环。
优选的,指令解析模块先读取由指令通信模块存放的紧急指令环形队列,若队列中存在指令,则对指令进行解析并立即执行相应操作,然后跳出该次循环,等待下一次执行周期到来,若无紧急指令需要执行,则紧接着读取普通指令环形队列缓存;若普通指令队列无指令则跳出此次循环,若有指令则判断是否为运动指令,若为非运动指令则直接解析并执行相应操作,若为运动指令则解析并初始化运动参数,并保存插补任务,至此完成一次控制,等待下一周期到来触发本指令解析模块。
优选的,插补模块先检测插补任务列表是否有插补任务等待执行,若无任务则直接跳出该次循环,否则解析插补轴号并进一步检测插补速度队列剩余空间是否足够,若空间不足则直接跳出该次循环,若空间足够则进行插补前的速度规划,然后进行插补并把插补结果保存到插补速度队列,至此完成一次执行,等待下一周期到来触发插补模块。
优选的,轴脉冲输出模块开始先检测相应轴的上次脉冲是否已经发生完毕,若未发生完毕则等待上次脉冲发生完毕并退出本次循环,否则读取插补速度队列,若有脉冲需要输出则输出脉冲,至此完成一次执行,等待下一周期到来触发本模块。
优选的,状态信息反馈模块先获取需要反馈的状态信息并保存在一个全局数组,然后写入FPGA的DPRAM通道反馈给上位机,至此完成一次执行,等待下一周期到来触发本模块。
优选的,所述运功控制卡中,PLC实时内核,所述PLC实时内核包括PLC结构解释任务和PLC内核任务,PLC结构解释任务用于实现PLC运动指令包转换为解释任务能识别的数据包,并将此数据包存到环形缓冲区中,以供解释任务去使用;PLC内核任用于实现PLC内核的调度运行,包括输入输出处理、定时器/计数器的实现、各种寄存器的处理、逻辑运算、运动指令的执行。
采用上述技术方案所产生的有益效果在于:(1)基于多任务多线程并行处理的调度机制,各线程调度合理,运行效率高,符合实时性的要求。(2)多线程之间数据交换采用环形队列方式,有效克服多线程资源共享和互斥访问冲突等问题,同时有效确保***运行高效性和数据的连续性。(3)上位机和下位机通信通道采用FIFO和DPRAM二种方式,实现不同功能指令(如紧急指令和普通指令等)的区分和并行处理,实现紧急指令优先处理的目的,提高数据处理的效率。(4)集成非运动指令实时内核,以往运动控制卡和非运动控制功能是相互独立的,本发明集成了非运动控制实时内核,实现了功能的模块化设计,提高了***的集成度。
附图说明
下面结合附图和具体实施方式对本发明作进一步详细的说明。
图1是本发明12轴运动控制卡***总体架构图;
图2是本发明12轴运动控制卡底层架构图;
图3是上位机指令读取线程流程图;
图4是解析指令线程流程图;
图5是插补线程流程图;
图6是轴脉冲输出线程流程图;
图7是状态信息反馈线程流程图;
图8是PLC线程执行流程图。
具体实施方式
基于背景技术所述,本发明提供了以下技术方案解决现有技术中存在的问题:
一种多轴运动卡控制***的控制方法,包括以下步骤:(1)用户通过上位机向运动控制卡中的DSP发送指令,发送的指令通过接口传输到FPGA中的FIFO或DPRAM缓存区,其中普通指令通过FIFO传输,紧急指令通过DPRAM通道传输;(2)DSP中的指令通信模块定时扫描FPGA中的FIFO和DPRAM缓冲区,优先扫描DPRAM缓冲区,后扫描FIFO缓存区,并把各自扫描到的指令数据分别存放到紧急指令环形队列和普通指令环形队列中;(3)指令解析模块读取指令时,优先读取紧急指令环形队列中的指令,若有紧急指令需要执行则先读取紧急指令,若紧急指令缓存无指令,则读取普通指令环形队列;(4)从环形队列中取出指令后,对指令进行解析,若是运动指令,则传送给速度规划模块和插补模块处理,若是非运动指令,则根据指令信息进行参数设置或者参数获取或I/O操作;(5)速度规划模块和插补模块根据运动类型和参数计算出各轴的速度值,并将该速度值传送给轴脉冲输出模块,轴脉冲输出模块通过脉冲发送模块输出脉冲命令给伺服驱动器,控制各轴运动。
以上是本申请的核心思想,下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。
下面通过具体实施例进行说明。
实施例
如图1所示,12轴运动控制卡控制***分为三部分:上位机、运动控制卡以及执行机构。用户通过上位机界面实现***参数设置以及状态信息监控等操作;FPGA内部实现用户指令缓存、状态信息缓存以及输出脉冲发送等功能,上位机与FPGA通讯方式有PCI总线和RS485串口2种方式;DSP内部包括指令通信模块、指令解析模块、速度规划模块、插补模块、位置控制模块、轴脉冲输出模块、状态信息反馈模块。本发明所论述的12轴运动控制卡底层框架DSP与FPGA通过EMIF(External Memory Interface,外部存储器接口)总线相连。附图2为12轴运动控制卡底层程序架构图,附图1和附图2的FPGA和DSP部分有如下一一对应关系:
表1附图1与附图2关系对照表
例如:附图1中FPGA的“下发指令缓冲区”对应附图2中FPGA的“DPRAM/FIFO”等。
***的总体框图如附图1所示,用户通过上位机向DSP发送指令,指令通过PCI桥或RS485串口传输到FPGA中的FIFO或DPRAM缓存,其中普通指令通过FIFO传输,而紧急指令通过DPRAM通道传输,从而根据指令的不同优先级采取不同的传输通道。DSP中的指令通讯模块定时扫描FPGA中的FIFO和DPRAM缓冲区,优先扫描DPRAM缓冲区,后扫描FIFO缓存区,并把各自扫描到的指令数据分别存放到紧急指令环形队列和普通指令环形队列中,从而实现紧急指令和普通指令的分区。指令解析模块读取指令时,优先读取紧急指令环形队列,若有紧急指令需要执行则先读取紧急指令,若紧急指令缓存无指令,此时再读取普通指令环形队列,从而确保紧急指令的优先执行。从环形队列中取出指令后,对指令进行解析,若是运动指令,则交给速度规划模块和插补模块处理,若是非运动指令,则根据指令进行参数设置或者参数获取或I/O操作。速度规划模块和插补模块根据运动类型和参数来计算出各轴的速度值,该模块是运动控制卡中最重要的模块之一,包括速度规划和直线、圆弧插补算法,点动算法和回零算法等等。对于开环***,各轴速度直接由脉冲命令发送模块发送到FPGA的控制寄存器中;对于闭环***,各轴速度先经过闭环控制后再由脉冲命令发送模块发送到FPGA的控制寄存器中,FPGA根据每周期的速度控制伺服驱动器。同时DSP中的状态信息反馈模块定时将***的状态通过FPGA中的DPRAM及PCI桥发给上位机,实现实时监控功能。
图2为12轴运动控制卡底层程序架构图,图中黑色实线箭头表示执行方向,虚线箭头表示数据流动附方向,即读取和保存方向,其它图中箭头标注含义同此,不再赘述。在DSP***中实现的功能包括指令传输、指令解析、周期性函数调度、运动算法等;DSP分别设置了上位机指令读取线程、指令解析线程、插补线程、轴输出线程、状态信息反馈线程和PLC线程,每个线程的优先级和周期设置如表2所示。
整个***的运行过程如下:上位机通过FPGA中的FIFO/DPRAM将指令传送到DSP中的指令缓冲区,DSP能周期性判别缓冲区内是否有控制指令。DSP接收到指令后,对指令进行解析,识别出运动指令ID、控制参数等信息。任务管理模块把指令信息转换为相应的运动任务,DSP/BIOS根据设定的任务优先级进行调度。对于创建的任务,主要是通过DSP/BIOS提供的API函数来调用相应的运动算法函数来实现的。另外,在任务管理函数周期性调用的过程中要负责把运动过程中的状态、编码器位置值等实时要求的返回值由DPRAM传送到上位机,方便用户做出决策。最后是在各算法函数计算出周期时间内的增量后,设置FPGA寄存器完成脉冲的发送。
表2线程优先级分配及周期设置表
本发明使用PRD函数对多个周期性执行的功能进行管理,把指令通讯、指令解析、速度规划插补、脉冲命令发送以及状态反馈这些功能分别设置为软件中断服务函数,每个软件中断由对应的PRD函数触发。轴脉冲输出线程主要是负责脉冲命令发送,需要严格按照插补周期执行,对实时性要求最高,因为这个线程能否按照设定的周期被正常调度关系到电机能否连续平稳地运动,若某个周期这个线程无法被正常调度,那么该周期将没有数据写入FPGA,导致该周期的速度突变为0,同时该线程不能被打断,因此具有最高的优先级;其次是插补线程,这个线程是脉冲命令发送线程数据的提供者,是脉冲命令发送线程能被正常调度的前提。其他模块由于有缓冲队列的存在,对优先级的要求不是很高。
附图3为上位机指令读取线程流程图,上位机指令来源分为2部分,其中一部分是上位机界面通过PCI总线或RS485串口直接发送到FPGA的FIFO/DPRAM缓冲区的指令数据,这部分数据由该线程读取,并根据指令紧急与否,分别把指令保存至紧急指令环形队列或普通指令环形队列;另外一部分指令来自PLC代码下发的指令,上位机编译好的PLC二进制代码由RS485串口发送并保存至DSP的flash,PLC线程则负责从flash读取上位机下发的PLC二进制代码,并对其进行解析、运动指令分类和数据打包等,对应运动指令则按指令的紧急情况分别保存相应运动参数至紧急指令环形队列或普通指令环形队列;而非运动指令则直接执行相应操作(如I/O操作、参数设置等)。
该线程执行流程描述如下:线程开始执行时,首先检测是否有PLC运动任务(附图2中,由PLC线程解析PLC二进制代码而获得的运动指令),如果有PLC运动任务,则通过判断紧急任务标志确定属于紧急指令或者普通指令,在获取和保存指令参数前,先判断指令存放环形队列剩余空间是否足够存放该指令,再决定读取指令和参数或者跳出线程循环等待下一次线程执行。如果没有PLC运动任务,则先读取FPGA中的DPRAM缓存区(上位机紧急指令缓存),若DPRAM有接收到新的指令,则根据判断紧急指令存放环形队列剩余空间是否足够存放该指令来决定下一步是读取紧急指令并保存或进入下一步操作,否则进入下一步操作;然后再读取FPGA中的FIFO缓存区(上位机普通指令缓存),若FIFO有接收到新的指令,则根据判断普通指令存放环形队列剩余空间是否足够存放该指令来决定下一步是读取普通指令并保存或进入下一步操作,否则进入下一步操作,至此完成线程的一次执行,等待该线程下一次周期到来时,线程执行以上步骤,依次循环。
图4为解析指令线程流程图,线程执行过程如下:先读取由上一个线程存放的紧急指令环形队列,若队列存在指令,则对指令进行解析并立即执行相应操作,然后跳出该次循环,等待下一次线程执行周期到来,若无紧急指令需要执行,则紧接着读取普通指令队列缓存;若普通指令队列无指令则跳出此次循环,若有指令则判断是否为运动指令,若为非运动指令则直接解析并执行相应操作,若为运动指令则解析并初始化运动参数,并保存插补任务,至此完成线程的一次执行,等待下一周期到来触发线程。
图5为插补线程执行流程图,线程执行描述如下:线程开始先检测插补任务列表是否有插补任务等待执行,若无任务则直接跳出该次循环,否则解析插补轴号并进一步检测插补速度队列剩余空间是否足够,若空间不足则直接跳出该次循环,若空间足够则进行插补前的速度规划,然后进行插补并把插补结果保存到插补速度队列,至此完成线程的一次执行,等待下一周期到来触发线程。
附图6为轴脉冲输出线程执行流程图,线程执行描述如下:线程开始先检测相应轴的上次脉冲是否已经发生完毕,若未发生完毕则等待上次脉冲发生完毕并退出本次循环,否则读取插补速度队列,若有脉冲需要输出则输出脉冲,至此完成线程的一次执行,等待下一周期到来触发线程。
图7为状态信息反馈线程执行流程图,线程执行描述如下:该线程先获取需要反馈的状态信息并保存在一个全局数组,然后写入FPGA的DPRAM通道反馈给用户,至此完成线程的一次执行,等待下一周期到来触发线程。
图8为PLC线程执行流程图,线程执行描述如下:该线程先判断PLC任务是否存在,如果存在PLC任务,则通过PLC代码实时执行内核运行PLC任务。PLC任务中包括MC模块和PLC逻辑模块。对于MC模块(即运动指令),则通过PLC运动模块结构解析算法得到运动参数执行运动任务。对于PLC逻辑模块(即非运动指令),则通过逻辑运算获取输入执行输出。
本发明采用基于多线程结构设计思想。多线程的结构使得指令接收、任务管理、运动算法、状态反馈能够在要求的时间界限内完成,保证了实时性。底层框架为带优先级的实时多任务操作***,且每个任务的执行时间片为固定的软中断,它的实时响应比一般的抢占式任务调度要好,定时精确,并使用一个公共堆栈,不用每个任务都独立分配堆栈空间。
多线程间数据交换采用环形队列实现。***中每个轴都有一组控制参数与之相对应,在轴进行某个具体的运动之前,这组参数将会被初始化,并在运动中保存轴的状态。若当前某个轴正在运动,DSP接收到该轴新的运动指令,那么该指令是不能够被执行的,因为一旦执行就会初始化轴的参数,可能会导致当前运动速度突变等意外。若简单地把这条指令抛掉,又可能违背用户的原意,用户可能是希望在执行完前一条运动指令之后,继续执行该指令。特别是进行某些固定的运动步骤时,指令的先后次序以及运动参数是一早就定好的,若只能在当前运动指令执行完毕后才能发送下一条运动指令,将严重影响效率。因此需要设计一个指令缓冲区来暂时保存未被执行的指令,缓冲区需要具有先入先出的特性,且要求内存可以重复使用,于是环形队列便成为首选。
上位机指令发送给DSP可有FIFO(First in First out,先入先出队列)和DPRAM(dual-port RAM,双端口寄存器)两种方式,实现数据的并行处理。由于环形队列是串行的,先入队列的指令未被执行,后面的指令将得不到执行,若此时用户想要执行某些紧急指令或操作,如停止某个运动中的轴,而之前已经发送到DSP中的一批指令还没来得及执行,那么停止指令将要等到之前发送的指令完全被解析后,才能得到解析,这显然是不合理的。于是设计了两个环形队列,紧急队列存放需要立刻执行的指令,普通队列存放其他指令,解析的时候先取紧急队列中的指令,当紧急队列为空时,再取普通队列中的指令,确保紧急指令马上得到响应。另外,在DSP中,每个轴设置一个标志位,表示对应轴是否正在运动。若当前指令为运动指令且对应轴正在运行,那么当前指令暂时不被解析。
***集成软PLC实时内核,包括PLC结构解释任务和PLC内核任务。前者主要实现PLC运动指令包转换为解释任务能识别的数据包,并将此数据包存到环形缓冲区中,以供解释任务去使用。后者主要实现PLC内核的调度运行,包括输入输出处理、定时器/计数器的实现、各种寄存器的处理、逻辑运算、运动指令的执行等。
通过以上控制方法实现了以下功能:带运动功能的PLC、S/梯形加减速、运动过程中位置可变、运动过程中速度可变、外部探针检测、摄像头光源触发输出、单轴定位控制、两轴直线插补、三轴直线插补、四轴直线插补、两轴圆弧插补、7种回零方式、模拟量输入输出、普通/高速输入输出口。
12轴通用运动控制卡硬件采用TI公司生产的6000系列的通用DSP(TMS320C6713)芯片。FPGA则采用ALTERA公司的可编程逻辑器件(FPGA)EP2C20,用于扩展DSP处理器的硬件外设,实现相关辅助性能。本发明研究基础上实现的高性能嵌入式运动控制卡,已应用于多个机械加工装备、半导体检测装备、贴片机等控制领域,具有良好的应用前景及社会效益。
另外,通过实验对***调度的实时性进行测试,当12个轴同时进行S形加减速控制的一维直线运动时,***开销最大,因此以这种情况作为测试条件。CCS提供了一系列的可视化工具对***的性能进行测试,“程序模块执行状态图”用以分析***各线程调度能否符合实时性的要求,“CPU负荷图”用以分析CPU的利用率。本***有五个周期执行函数,分别为指令通讯函数Comm_PRD,运动状态反馈函数FIFO_PRD,速度规划插补函数Interpo_PRD,脉冲命令发送函数InterpoOutPut_PRD,指令解析函数Interpreter_PRD,这些函数通过调用DSP/BIOS内核提供的API函数触发相应的软件中断。相应的软件中断的配置在SWI—Software Interrupt Manager(软件中断管理)项下,软件中断优先级由高到低依次为轴输出线程InterpoOutPut_swi、任务调度线程PRD_swi、速度规划插补线程Interpo_swi、上位机指令读取线程Comm_swi、指令解析线程Interpreter_swi、状态信息反馈线程FIFO_swi。通过实验表明各线程调度符合实时性的要求,CPU负荷峰值为65.91%。此实验表明,本发明设计的底层框架调度方法符合实时性的要求。
优点:基于多任务多线程并行处理的调度机制,各线程调度合理,运行效率高,符合实时性的要求。多线程之间数据交换采用环形队列方式,有效克服多线程资源共享和互斥访问冲突等问题,同时有效确保***运行高效性和数据的连续性。上位机和下位机通信通道采用FIFO和DPRAM二种方式,实现不同功能指令(如紧急指令和普通指令等)的区分和并行处理,实现紧急指令优先处理的目的,提高数据处理的效率。集成PLC实时内核。以往运动控制卡和PLC功能是相互独立的,本发明集成了软PLC实时内核,实现算法和功能的模块化设计和集成度。

Claims (10)

1.一种多轴运动卡控制***的控制方法,其特征在于包括以下步骤:
(1)用户通过上位机向运动控制卡中的DSP发送指令,发送的指令通过接口传输到FPGA中的FIFO或DPRAM缓存区,其中普通指令通过FIFO传输,紧急指令通过DPRAM通道传输;
(2)DSP中的指令通信模块定时扫描FPGA中的FIFO和DPRAM缓冲区,优先扫描DPRAM缓冲区,后扫描FIFO缓存区,并把各自扫描到的指令数据分别存放到紧急指令环形队列和普通指令环形队列中;
(3)指令解析模块读取指令时,优先读取紧急指令环形队列中的指令,若有紧急指令需要执行则先读取紧急指令,若紧急指令缓存无指令,则读取普通指令环形队列;
(4)从环形队列中取出指令后,对指令进行解析,若是运动指令,则传送给速度规划模块和插补模块处理,若是非运动指令,则根据指令信息进行参数设置或者参数获取或I/O操作;
(5)速度规划模块和插补模块根据运动类型和参数计算出各轴的速度值,并将该速度值传送给轴脉冲输出模块,轴脉冲输出模块通过脉冲发送模块输出脉冲命令给伺服驱动器,控制各轴运动。
2.根据权利要求1所述的多轴运动卡控制***的控制方法,其特征在于:在进行步骤(5)控制时,对于开环***,各轴速度直接由脉冲命令发送模块发送到FPGA的控制寄存器中;对于闭环***,各轴速度先经过闭环控制后再由脉冲命令发送模块发送到FPGA的控制寄存器中,FPGA根据每周期的速度控制伺服驱动器。
3.根据权利要求1或2所述的多轴运动卡控制***的控制方法,其特征在于:在进行步骤(5)的同时,DSP中的状态信息反馈模块定时将***的状态传送给FPGA中的DPRAM,然后PFGA将***的状态信息通过PCI桥或RS485接口发给上位机,实现实时监控功能。
4.根据权利要求1或2所述的多轴运动卡控制***的控制方法,其特征在于:在步骤(1)中发送的指令通过PCI桥或RS485接口传输到FPGA中的FIFO或DPRAM缓存中。
5.根据权利要求1或2所述的多轴运动卡控制***的控制方法,其特征在于:所述指令通信模块首先检测是否有PLC运动任务,如果有PLC运动任务,则通过判断紧急任务标志确定属于紧急指令或者普通指令,在获取和保存指令参数前,先判断指令存放环形队列剩余空间是否足够存放该指令,再决定读取指令和参数或者跳出线程循环等待下一次线程执行;如果没有PLC运动任务,则先读取FPGA中的DPRAM缓存区,若DPRAM有接收到新的指令,则根据判断紧急指令存放环形队列剩余空间是否足够存放该指令来决定下一步是读取紧急指令并保存或进入下一步操作,否则进入下一步操作;然后再读取FPGA中的FIFO缓存区,若FIFO有接收到新的指令,则根据判断普通指令存放环形队列剩余空间是否足够存放该指令来决定下一步是读取普通指令并保存或进入下一步操作,否则进入下一步操作;至此完成一次执行,等待下一次周期到来时,执行以上步骤,依次循环。
6.根据权利要求1或2所述的多轴运动卡控制***的控制方法,其特征在于:指令解析模块先读取由指令通信模块存放的紧急指令环形队列,若队列中存在指令,则对指令进行解析并立即执行相应操作,然后跳出该次循环,等待下一次执行周期到来,若无紧急指令需要执行,则紧接着读取普通指令环形队列缓存;若普通指令队列无指令则跳出此次循环,若有指令则判断是否为运动指令,若为非运动指令则直接解析并执行相应操作,若为运动指令则解析并初始化运动参数,并保存插补任务,至此完成一次控制,等待下一周期到来触发本指令解析模块。
7.根据权利要求1或2所述的多轴运动卡控制***的控制方法,其特征在于:插补模块先检测插补任务列表是否有插补任务等待执行,若无任务则直接跳出该次循环,否则解析插补轴号并进一步检测插补速度队列剩余空间是否足够,若空间不足则直接跳出该次循环,若空间足够则进行插补前的速度规划,然后进行插补并把插补结果保存到插补速度队列,至此完成一次执行,等待下一周期到来触发插补模块。
8.根据权利要求1或2所述的多轴运动卡控制***的控制方法,其特征在于:轴脉冲输出模块开始先检测相应轴的上次脉冲是否已经发生完毕,若未发生完毕则等待上次脉冲发生完毕并退出本次循环,否则读取插补速度队列,若有脉冲需要输出则输出脉冲,至此完成一次执行,等待下一周期到来触发本模块。
9.根据权利要求3所述的多轴运动卡控制***的控制方法,其特征在于:状态信息反馈模块先获取需要反馈的状态信息并保存在一个全局数组,然后写入FPGA的DPRAM通道反馈给上位机,至此完成一次执行,等待下一周期到来触发本模块。
10.根据权利要求1或2所述的多轴运动卡控制***的控制方法,其特征在于:所述运功控制卡中集成了PLC实时内核,所述PLC实时内核包括PLC结构解释任务和PLC内核任务,PLC结构解释任务用于实现PLC运动指令包转换为解释任务能识别的数据包,并将此数据包存到环形缓冲区中,以供解释任务去使用;PLC内核任用于实现PLC内核的调度运行,包括输入输出处理、定时器/计数器的实现、各种寄存器的处理、逻辑运算、运动指令的执行。
CN201410084251.2A 2014-03-07 2014-03-07 多轴运动卡控制***的控制方法 Pending CN103941649A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410084251.2A CN103941649A (zh) 2014-03-07 2014-03-07 多轴运动卡控制***的控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410084251.2A CN103941649A (zh) 2014-03-07 2014-03-07 多轴运动卡控制***的控制方法

Publications (1)

Publication Number Publication Date
CN103941649A true CN103941649A (zh) 2014-07-23

Family

ID=51189364

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410084251.2A Pending CN103941649A (zh) 2014-03-07 2014-03-07 多轴运动卡控制***的控制方法

Country Status (1)

Country Link
CN (1) CN103941649A (zh)

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104298174A (zh) * 2014-09-26 2015-01-21 成都乐创自动化技术股份有限公司 基于PCIe的轨迹侦测比较的运动控制卡、***及方法
CN104615087A (zh) * 2015-02-05 2015-05-13 珠海格力电器股份有限公司 总线型运动控制器
CN106625674A (zh) * 2016-12-29 2017-05-10 北京光年无限科技有限公司 一种用于机器人的指令处理方法及机器人
CN106959672A (zh) * 2017-04-28 2017-07-18 深圳市汇川控制技术有限公司 一种基于api的工业运动控制***及方法
CN109421041A (zh) * 2017-08-21 2019-03-05 深圳市优必选科技有限公司 机器人运动控制方法、机器人及具有存储功能的装置
CN109454641A (zh) * 2018-12-25 2019-03-12 哈工大机器人(合肥)国际创新研究院 一种运动控制器多任务分工及数据交互方法
CN109656479A (zh) * 2018-12-11 2019-04-19 湖南国科微电子股份有限公司 一种构建存储器命令序列的方法及装置
CN109683823A (zh) * 2018-12-20 2019-04-26 湖南国科微电子股份有限公司 一种管理存储器多并发请求的方法及装置
CN111752638A (zh) * 2020-06-23 2020-10-09 东莞市李群自动化技术有限公司 自动化控制平台及自动化平台控制方法
CN111775145A (zh) * 2020-06-01 2020-10-16 上海大学 一种串并联机器人的控制***
CN112015118A (zh) * 2020-08-31 2020-12-01 浙江水晶光电科技股份有限公司 自动化设备的运动控制方法、装置、控制器及存储介质
CN112236728A (zh) * 2018-06-22 2021-01-15 软件伺服***公司 运动控制程序、运动控制方法以及运动控制装置
CN112559052A (zh) * 2020-12-15 2021-03-26 类人思维(山东)智慧科技有限公司 一种指令集调用方法、装置、终端及存储介质
CN113032015A (zh) * 2019-12-24 2021-06-25 中国科学院沈阳自动化研究所 一种用于精密运动控制的通信方法
CN113515313A (zh) * 2020-11-09 2021-10-19 苏州如林自动化软件科技有限公司 运动控制卡配置方法、计算机设备、运动控制方法及***
CN113910216A (zh) * 2020-07-09 2022-01-11 北京配天技术有限公司 一种电机轴控制方法、***、机器人及存储介质
CN115314338A (zh) * 2022-07-27 2022-11-08 湖南航天机电设备与特种材料研究所 一种实时性运动控制方法及***
CN115586737A (zh) * 2022-11-18 2023-01-10 合肥安迅精密技术有限公司 基于软硬件协同处理的贴片机贴装控制方法及***
CN115951987A (zh) * 2023-03-09 2023-04-11 浪潮电子信息产业股份有限公司 一种存储***中多线程的任务执行方法、装置以及介质
CN117666451A (zh) * 2024-02-01 2024-03-08 合肥安迅精密技术有限公司 基于多进程的贴片机主控***、方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2056231A1 (en) * 2007-11-01 2009-05-06 Infineon Technologies AG Method and system for transferring information to a device
CN102073302A (zh) * 2009-11-25 2011-05-25 北京诺信泰伺服科技有限公司 全数字化分布式智能伺服驱动器

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2056231A1 (en) * 2007-11-01 2009-05-06 Infineon Technologies AG Method and system for transferring information to a device
CN102073302A (zh) * 2009-11-25 2011-05-25 北京诺信泰伺服科技有限公司 全数字化分布式智能伺服驱动器

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
李松等: "基于ARM+DSP+FPGA+MCU的高速嵌入式数控***研究", 《机床与液压》 *
邓爽: "基于PCI总线的6轴运动控制卡的研究和设计", 《万方数据库》 *
陈伟娜: "基于DSP的运动控制算法研究与实现", 《中国优秀硕士学位论文全文数据库工程科技Ⅰ辑》 *

Cited By (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104298174A (zh) * 2014-09-26 2015-01-21 成都乐创自动化技术股份有限公司 基于PCIe的轨迹侦测比较的运动控制卡、***及方法
CN104298174B (zh) * 2014-09-26 2017-02-01 成都乐创自动化技术股份有限公司 基于PCIe的轨迹侦测比较的方法
CN104615087A (zh) * 2015-02-05 2015-05-13 珠海格力电器股份有限公司 总线型运动控制器
CN106625674B (zh) * 2016-12-29 2019-09-27 北京光年无限科技有限公司 一种用于机器人的指令处理方法及机器人
CN106625674A (zh) * 2016-12-29 2017-05-10 北京光年无限科技有限公司 一种用于机器人的指令处理方法及机器人
CN106959672A (zh) * 2017-04-28 2017-07-18 深圳市汇川控制技术有限公司 一种基于api的工业运动控制***及方法
CN109421041A (zh) * 2017-08-21 2019-03-05 深圳市优必选科技有限公司 机器人运动控制方法、机器人及具有存储功能的装置
CN109421041B (zh) * 2017-08-21 2021-05-11 深圳市优必选科技有限公司 机器人运动控制方法、机器人及具有存储功能的装置
CN112236728B (zh) * 2018-06-22 2024-05-03 软件伺服***公司 运动控制程序、运动控制方法以及运动控制装置
CN112236728A (zh) * 2018-06-22 2021-01-15 软件伺服***公司 运动控制程序、运动控制方法以及运动控制装置
CN109656479A (zh) * 2018-12-11 2019-04-19 湖南国科微电子股份有限公司 一种构建存储器命令序列的方法及装置
CN109656479B (zh) * 2018-12-11 2022-03-25 湖南国科微电子股份有限公司 一种构建存储器命令序列的方法及装置
CN109683823A (zh) * 2018-12-20 2019-04-26 湖南国科微电子股份有限公司 一种管理存储器多并发请求的方法及装置
CN109454641A (zh) * 2018-12-25 2019-03-12 哈工大机器人(合肥)国际创新研究院 一种运动控制器多任务分工及数据交互方法
CN113032015A (zh) * 2019-12-24 2021-06-25 中国科学院沈阳自动化研究所 一种用于精密运动控制的通信方法
CN113032015B (zh) * 2019-12-24 2022-02-18 中国科学院沈阳自动化研究所 一种用于精密运动控制的通信方法
CN111775145A (zh) * 2020-06-01 2020-10-16 上海大学 一种串并联机器人的控制***
CN111752638A (zh) * 2020-06-23 2020-10-09 东莞市李群自动化技术有限公司 自动化控制平台及自动化平台控制方法
CN113910216A (zh) * 2020-07-09 2022-01-11 北京配天技术有限公司 一种电机轴控制方法、***、机器人及存储介质
CN113910216B (zh) * 2020-07-09 2023-01-24 北京配天技术有限公司 一种电机轴控制方法、***、机器人及存储介质
CN112015118A (zh) * 2020-08-31 2020-12-01 浙江水晶光电科技股份有限公司 自动化设备的运动控制方法、装置、控制器及存储介质
CN113515313A (zh) * 2020-11-09 2021-10-19 苏州如林自动化软件科技有限公司 运动控制卡配置方法、计算机设备、运动控制方法及***
CN113515313B (zh) * 2020-11-09 2024-04-19 苏州如林自动化软件科技有限公司 运动控制卡配置方法、计算机设备、运动控制方法及***
CN112559052B (zh) * 2020-12-15 2022-11-25 类人思维(山东)智慧科技有限公司 一种指令集调用方法、装置、终端及存储介质
CN112559052A (zh) * 2020-12-15 2021-03-26 类人思维(山东)智慧科技有限公司 一种指令集调用方法、装置、终端及存储介质
CN115314338B (zh) * 2022-07-27 2024-03-12 湖南航天机电设备与特种材料研究所 一种实时性运动控制方法及***
CN115314338A (zh) * 2022-07-27 2022-11-08 湖南航天机电设备与特种材料研究所 一种实时性运动控制方法及***
CN115586737A (zh) * 2022-11-18 2023-01-10 合肥安迅精密技术有限公司 基于软硬件协同处理的贴片机贴装控制方法及***
CN115586737B (zh) * 2022-11-18 2023-04-07 合肥安迅精密技术有限公司 基于软硬件协同处理的贴片机贴装控制方法及***
CN115951987A (zh) * 2023-03-09 2023-04-11 浪潮电子信息产业股份有限公司 一种存储***中多线程的任务执行方法、装置以及介质
CN117666451A (zh) * 2024-02-01 2024-03-08 合肥安迅精密技术有限公司 基于多进程的贴片机主控***、方法
CN117666451B (zh) * 2024-02-01 2024-05-10 合肥安迅精密技术有限公司 基于多进程的贴片机主控***、方法

Similar Documents

Publication Publication Date Title
CN103941649A (zh) 多轴运动卡控制***的控制方法
US11789895B2 (en) On-chip heterogeneous AI processor with distributed tasks queues allowing for parallel task execution
US11782870B2 (en) Configurable heterogeneous AI processor with distributed task queues allowing parallel task execution
EP3092567B1 (en) System and method for isolating i/o execution via compiler and os support
KR101258502B1 (ko) 멀티코어 아키텍처 내의 리소스 관리
CN101464811B (zh) 多任务监控管理***
US20070168082A1 (en) Task-based robot control system for multi-tasking
CN105683939A (zh) 用于在诸如fpga的动态可重新配置硬件装置以及诸如cpu的指令集处理器上同时执行进程的计算平台、可重新配置硬件装置和方法、以及相关的计算机可读介质
CN102541642B (zh) 一种增强实时性能的任务管理方法
CN102779075A (zh) 一种在多处理器核***中进行调度的方法、装置及***
CN103365729A (zh) 一种基于任务类型的动态MapReduce 调度方法及***
KR20090005078A (ko) 스마트카드 임베디드 조작 시스템 및 작업처리 방법
CN103559045A (zh) 一种硬件实时操作***
CN103077140B (zh) 一种机器人运动控制卡与上位机的通信方法及通信装置
CN102323895A (zh) 一种基于机顶盒嵌入式操作***实时调度方法
CN103926928A (zh) 一种模块动态调度的机器人控制器
CN105373425A (zh) 一种嵌入式Linux***性能优化的方法及装置
CN112659119A (zh) 机械臂的控制方法、装置、电子设备及存储介质
CN103116526B (zh) 高性能异构并行计算机的最大功耗控制方法
CN201489345U (zh) 双处理器运动控制卡
CN102955555A (zh) 一种多线程处理方法和装置
CN101349975B (zh) 一种在嵌入式操作***上实现中断底半部机制的方法及装置
CN102929714A (zh) 基于uC/OS-II的硬件任务管理器
CN102163163A (zh) 无线传感器网络传感器小节点操作***及其实现方法
Dong et al. A general analysis framework for soft real-time tasks

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
AD01 Patent right deemed abandoned
AD01 Patent right deemed abandoned

Effective date of abandoning: 20171208