实时运动控制算法仿真调试方法技术

技术编号:2853641 阅读:231 留言:0更新日期:2012-04-11 18:40
一种实时运动控制算法仿真调试方法,包括主机、从机和控制对象,其特征在于:该方法把从机DSP上运行的运动控制代码完整不变地转移到主机上运行,并采用数值仿真的方法来准确模拟控制对象的真实响应;    首先,把从机DSP上定义的用于与主机进行数据交换的内存区间转移定义到主机的内存映射中,并将相应的主机对DSP内存区间读写的函数修改为新的函数,新的函数对新定义的主机内存映射进行操作;    其次,将运动控制代码中通过输出接口更新驱动电机电流信号的函数修改为根据代码计算的输出量用数值积分方法来计算控制对象的响应,并存储在相应的内存单元中;    同时,把代码中通过输入接口读取系统当前位置的函数修改为新的函数,新的函数从存储控制对象响应的数值计算结果的内存单元中读取系统当前位置;    最后,在主机中循环检测从机状态,等待从机完成运动命令的函数中加入对从机DSP代码ISR的调用,以达到运动控制算法的反复运行。

【技术实现步骤摘要】

本专利技术涉及一种计算机对运动部件的控制方法,特别是一种对运动控制算法进行高效、实时仿真调试的方法。
技术介绍
现代的高速精密机电设备(如半导体生产设备和数控机床等)中普遍采用主-从式计算机控制的模式,即由主机处理用户输入和协调各方向动作而由从机完成组成各动作的基本运动。从机一般由数字信号处理器(DSP)和外围输入输出接口组成并通过总线或网络与主机通讯。随着离散时间控制(数字控制)在硬件和软件两方面的充分发展,目前的运动控制都采用在DSP上运行控制算法的数字方式实现。从机的DSP上以中断服务例程(ISR)的形式运行着运动控制算法,每个时钟中断发生时,算法依次通过输入接口(编码器接口等)读取系统当前位置,经过计算后通过输出接口(数模转换器D/A等)更新驱动电机的电流信号而改变系统的输入,同时接受主机的运动命令并将执行结果和自身状态反馈给主机。随着时钟中断的不断发生,运动控制算法持续运行,算法在时钟的精确触发下按准确时间间隔循环往复运行是数字运动控制算法有效性的根本保证。由于从机是以嵌入式的方式包含在设备当中,不象主机那样具有完备的操作系统和输入/输出设备,无法方便高效地监测从机上运行程序的实时状态。另外,现代运动运动控制算法呈现出代码庞大、参数众多、关系繁杂的显著趋势,如何进行高效的调试以确保最短时间内获得运行正确的代码是一个极大的挑战。一种既能准确反映运动控制代码实时运行状况又可以方便高效地对代码进行各种常规调试的方法成为必需。现有的仿真调试工具都无法全面满足前面提出的实时运动控制算法代码调试的需要。Matlab和Simulink等软件可以方便地建立控制对象的动态模型并与所用控制算法相连,进行仿真分析,但因为系统模型中的控制算法与DSP上运行的算法代码没有直接联系,结果并不反映实时运动控制代码执行的真实结果;而且这类仿真工具也无法有效体现运动控制代码中状态监测和逻辑流控制的部分。针对DSP的仿真调试环境,虽然可以对DSP上的代码进行单步运行等操作,但因为高速实时运行(每秒数千次)条件下执行元件(电机和运动部件)的真实响应无法随代码的运行定格在某一时刻而不具备真实运行条件下的调试能力;同时也缺乏必要的与DSP运行相协调的和主机间的数据交换机制。目前出现的硬件在回路(Hardware InLoop)仿真通过将模拟控制对象(执行元件)实时响应的可编程硬件仿真器接入控制回路的方法,一定程度上实现了控制算法脱离真实控制对象的实时仿真调试,但仍存在着硬件仿真器成本高昂、编程和设置复杂的问题,也无法达到完全自由灵活的代码实时单步、断点调试。主机代码的开发环境具有完善的调试机制,但无法和DSP的实时代码协调。
技术实现思路
本专利技术的目的是提供一种,针对实时运动控制算法调试的特殊需要,解决完整不变的从机DSP运动控制代码和主机程序在同一计算机处理器上以真实的实时状态运行的问题;还解决目前代码调试工具并不能实现实时运动控制代码执行真实结果的问题,并解决控制算法与真实控制对象的实时仿真调试无法和DSP的实时代码协调的问题;同时解决利用现有的主机代码开发环境,对两部分程序进行简便、准确、有效的单步、断点等调试的问题。本专利技术的技术方案该方法把从机DSP上运行的运动控制代码完整不变地转移到主机上运行并采用数值仿真的方法来准确模拟控制对象的真实响应;首先,把从机DSP上定义的用于与主机进行数据交换的内存区间转移定义到主机的内存映射中,并将相应的主机对DSP内存区间读写的函数修改为新的函数,新的函数对新定义的主机内存映射进行操作;其次,将运动控制代码中通过输出接口更新驱动电机电流信号的函数修改为根据代码计算的输出量用数值积分方法来计算控制对象的响应,并存储在相应的内存单元中;同时,把代码中通过输入接口读取系统当前位置的函数修改为新的函数,新的函数从存储控制对象响应的数值计算结果的内存单元中读取系统当前位置;最后,在主机中循环检测从机状态,等待从机完成运动命令的函数中加入对从机DSP代码ISR的调用,以达到运动控制算法的反复运行。本专利技术通过以上措施实现了完整不变的从机DSP运动控制代码和主机程序在同一计算机处理器上以真实的实时状态运行,可以利用现有的主机代码开发环境对两部分程序进行方便有效的单步、断点等调试。该方法适用于各种独立运行于嵌入式处理器的运动控制算法的仿真调试。附图说明图1是一个典型运动控制系统的硬件组成及代码运行关系示意图;图2是针对图1中系统的运动控制算法实时仿真调试方法示意图。图3是本专利技术被应用在一个半导体生产设备工作台的示意图。图4是对图3的设备在X方向典型的18毫秒内完成2.54mm的运动的仿真结果示意图。具体实施例方式如图1所示,一个典型的运动控制系统由主机、从机和控制对象组成。主机CPU中运行的主程序调用DSP内存写函数DSPWrite()向从机DSP的数据交换内存写入运动命令,之后运行运动完成检测函数MotionDone()来检测从机是否完成所写入的运动命令。MotionDone()调用函数DSP内存读函数DSPRead()自从机DSP的数据交换内存中读出从机状态,判断运动命令是否完成,MotionDone()循环运行直至运动完成为止。从机DSP中的中断服务例程ISR首先调用编码器读函数ReadEnc()通过编码器接口读取控制对象运动部件的当前位置,其后经过运动控制算法的计算得出新的电流控制输出量,然后运行D/A写函数WriteDA()通过D/A将这一电流信号传递给控制对象的电机。ISR运行的过程中通过DSP的数据交换内存接受主机CPU的运动命令并将包含命令执行结果的自身状态反馈给主机CPU。ISR在时钟中断的精确触发下,每隔一个中断周期TItr运行一次,一直循环持续下去。控制对象的电机以从机DSP规定的电流驱动运动部件到达当前位置。图2给出了针对图1中系统的运动控制算法实时仿真调试方案。在原来主机CPU中运行的主程序基础之上,把从机DSP上运行的ISR代码转移到主机CPU上运行,同时将DSP中的数据交换内存也转移定义到主机的内存映射中。将主程序中的函数DSPWrite()和DSPRead()分别修改为对定义在主机上的数据交换内存进行写入和读出。在主程序的函数MotionDone()中加入对ISR()的调用,以使ISR()随函数MotionDone()反复循环运行直至运动完成为止。将ISR()中的函数WriteDA()修改为调用运动仿真函数MotionSim()。函数MotionSim()根据运动控制算法计算的电流控制输出量用四阶龙格-库塔法(Runge-Kutta)计算控制对象的响应并存储在位置内存中。把ISR()中的函数ReadEnc()修改为从位置内存中读取系统当前位置。ISR()中ReadEnc()与WriteDA()之间的代码是运动控制算法的主体,在从DSP到主机的转移中保持完整不变。仿真调试方案中内存定义和函数的少量修改可以通过条件编译命令实现,达到同一源文件用于DSP可执行文件编译和运动控制算法实时仿真调试。方案中位置内存里储存的控制对象位置及其导出量(速度、加速度等)可以与各种数据可视化手段相结合,形成完整、直观、高效的,完全脱离从机和控制对象的运动控制算法虚拟实时仿真调试环境。方案本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种实时运动控制算法仿真调试方法,包括主机、从机和控制对象,其特征在于该方法把从机DSP上运行的运动控制代码完整不变地转移到主机上运行,并采用数值仿真的方法来准确模拟控制对象的真实响应;首先,把从机DSP上定义的用于与主机进行数据交换的内存区间转移定义到主机的内存映射中,并将相应的主机对DSP内存区间读写的函数修改为新的函数,新的函数对新定义的主机内存映射进行操作;其次,将运动控制代码中通过输出接口更新驱动电机电流信号的函数修改为根据代码计算的输出量用数值积分方法来计算控制对象的响应,并存储在相应的内存单元中;同时,把代码中通过输入接口读取系统当前位置的函数修改为新的函数,新的函数从存储控制对象响应的数值计算结果的内存单元中读取系统当前位置;最后,在主机中循环检测从机状态,等待从机完成运动命令的函数中加入对从机DSP代码ISR的调用,以达到运动控制算法的反复运行。2.一种实时运动控制算法仿真调试方法,包括主机、从机和控制对象,其特征在于主机CPU中运行的主程序调用DSP内存写函数DSPWrite(),向从机DSP的数据交换内存写入运动命令,之后,运行运动完成检测函数MotionDone(),来检测从机是否完成所写入的运动命令;MotionDone()调用函数DSP内存读函数DSPRead()自从机DSP的数据交换内存中读出从机状态,判断运动命令是否完成,MotionDone()循环运行直至运动完成为止;从机DSP中的中断服务例程ISR首先调用编码器读函数ReadEnc()通过编码器接口读取控制对象运动部件的当前位置,其后经过运动控制算法的计算得出新的电流控制输出量,然后运行D/A写函数WriteDA()通过D/A将这一电流信号传递给控制对象的电机;ISR运行的过程中通过DSP的数据交换内存接受主机CPU的运动命令并将包含命令执行结果的自身状态反馈给主机CPU;ISR在时钟中断的精确触发下,每隔一个中断周期TItr运行一次,一直循环持续下去;控制对象的电机以从机DSP规定的电流驱动运动部件到达当前位置。3.一种实时运动控制算法仿真调试方法,包括主机、从机和控制对象,其特征在于在主机CPU中运行的主程序基础之上,把从机DSP上运行的ISR代码转移到主机CPU上运行,同时将DSP中的数据交换内存也转移定义到主机的内存映射中;将主程序中的函数DSPWrite()和DSPRead()分别修改为对定义在主机上的数据交换内存进行写入和读出;在主程序的函数MotionDone()中加入对ISR()的调用,以使ISR()随函数MotionDone()反复循环运行直至运动完成为止;将ISR()中的函数WriteDA()修改为调用运动仿真函数MotionSim();函数MotionSim()根据运动控制算法计算的电流控制输出量用四阶龙格—库塔法计算控制对象的响应并存储在位置内存中;把ISR()中的函数ReadEnc()修改为从位置内存中读取系统当前位置;ISR()中ReadEnc()与WriteDA()之间的代码是运动控制算法的主体,在从D...

【专利技术属性】
技术研发人员:何田
申请(专利权)人:中国电子科技集团公司第四十五研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1