模拟伺服电机进行驱动器代码仿真的系统及方法与流程

文档序号:32992310发布日期:2023-01-17 23:41阅读:197来源:国知局
模拟伺服电机进行驱动器代码仿真的系统及方法与流程

1.本发明涉及算法仿真技术领域,具体地涉及一种模拟伺服电机进行驱动器代码仿真的系统及方法。


背景技术:

2.伺服驱动器是现代运动控制的重要组成部分,被广泛应用于工业机器人以及数控加工中心等自动化设备中。随着工业技术的发展与进步,工业控制系统对伺服驱动器的控制精度要求日益提高,这意味着需要更加复杂的控制算法支持。
3.传统的电机仿真算法设计一般采用可视化仿真工具simulink进行实现。一方面,simulink基于可视化图元进行算法模型的搭建,这带来了非常大的局限性,最为明显的就是无法很好的设计数据结构、进行内存管理等。因为,这些特性往往是编程语言层面所提供的,simulink图示化模型搭建方式处于较高的应用层,并不支持底层编程语言的这种特性。而在实际的算法设计中,数据结构的设计以及内存管理是十分重要的部分,关乎整个算法的执行效率与空间占用。由于其基于图元进行算法的搭建,导致实现复杂算法的过程比较繁琐。另一方面,simulink工程只能在matlab中使用,其算法设计基于独有的编程语言,而主流嵌入式设备多使用c语言进行编程,要想将验证后的算法转换成嵌入式中的c代码,需要设计者按照实现思路再次编写代码,这导致从算法的仿真到实际应用需要重新进行代码的编写工作,无疑会增加工作量与时间成本。
4.因此,在伺服驱动器电机控制算法的设计与验证工作中,有方式所搭建的仿真算法无法直接拿到嵌入式中进行使用,需要人为翻译优化,也就是说需要设计两套基于不同平台不同语言的算法,加大了工作量与时间成本。


技术实现要素:

5.本发明的目的是为了克服现有技术存在的问题,本发明提出了一种模拟伺服电机进行驱动器代码仿真的系统及方法,解决了驱动器控制算法从仿真到实际使用需要重新进行代码编写的问题,使仿真代码能够以最小改动实装到驱动器中运行,从而降低工作量与时间成本。
6.为了实现上述目的,本发明第一方面提供了一种模拟伺服电机进行驱动器代码仿真的系统,包括可视化系统、嵌入式算法系统和算法仿真系统;所述可视化系统;应用qt c++编程桌面应用,实现设定仿真算法参数和仿真所用的嵌入式算法模块,用于展示仿真结果;所述嵌入式算法系统:应用c代码编程,用于存储嵌入式算法模块数据;所述算法仿真系统:应用c++代码编程,实现通过与可视化系统和嵌入式算法系统信息交互进行仿真算法的解算和仿真流程控制,包括虚拟电机模块和求解器模块。
7.优选地,所述嵌入式算法模块包括曲线规划模块、位置环模块、速度环模块、电流环模块、弱磁模块和svpwm模块。
8.优选地,所述算法仿真系统与可视化系统的信息交互具体为:算法仿真系统读取可视化系统设定的算法参数和仿真所用的嵌入式算法模块,以及算法仿真系统将仿真计算结果反馈至可视化系统进行显示。
9.优选地,所述算法仿真系统与嵌入式算法系统的信息交互具体为:在仿真初始化阶段算法仿真系统从嵌入式算法系统中复制所述仿真所用的嵌入式算法模块数据,并建立各个所述仿真所用的嵌入式算法模块数据之间的依赖关系。
10.优选地,所述求解器模块:用于根据所述依赖关系对所述仿真所用的嵌入式算法模块进行解算,解算结果作为所述虚拟电机模块的输入数据;所述虚拟电机模块:用于模拟真实电机驱动场景,由所述算法仿真系统进行仿真计算。
11.优选地,所述虚拟电机模块公式如下:其中,ud表示直轴电压;uq表示交轴电压;id表示直轴电流;r表示定子电阻;iq表示交轴电流;ld表示直轴电感;lq表示交轴电感;ωe表示电机电角速度;ωm表示电机机械角速度;pn表示电机极对数;b表示阻尼系数;te表示电磁转矩;t
l
表示负载转矩;ψf表示永磁体磁链;j表示转动惯量;t表示时间。
12.优选地,所述仿真流程包括以下步骤:s1、根据可视化系统的设定生成计算任务,在初始化过程中从嵌入式算法系统中复制仿真所用的嵌入式算法模块,形成临时副本用于计算任务;s2、在各个仿真所用的嵌入式算法模块之间建立依赖关系,按照依赖关系执行解算;s3、将解算出的结果输入到所述虚拟电机模块进行仿真运算,得到电机的相关物理参数;s4、将所有的仿真数据反馈至可视化系统显示;s5、增加仿真步长进行迭代运算,判断是否到达设定的仿真结束时间,到达后则结束仿真过程,否则返回步骤s2继续进行迭代运算。
13.本发明第二方面提供了一种模拟伺服电机进行驱动器代码仿真的方法,包括以下步骤:可视化系统设定仿真算法参数和仿真所用的嵌入式算法模块;算法仿真系统根据可视化系统的设定生成计算任务,在初始化过程中从嵌入式算法系统中复制仿真所用的嵌入式算法模块,形成临时副本用于计算任务;算法仿真系统在各个仿真所用的嵌入式算法模块之间建立依赖关系,按照依赖关系执行解算,将解算出的结果输入到所述虚拟电机模块进行仿真运算,得到电机的相关物
理参数;算法仿真系统增加仿真步长进行迭代运算,判断是否到达设定的仿真结束时间,到达后则结束仿真过程,否则返回上一步骤继续进行迭代运算。
14.优选地,还包括统计所有的仿真数据,将数据写入对应的内存中并反馈至可视化系统显示。
15.优选地,所述迭代运算的方法包括较高效率与较高误差的定步长欧拉法,中等效率和中等误差的定步长四阶龙格库塔法,较低效率和较低误差的变步长五阶龙格库塔法。
16.通过上述技术方案,本发明在电机的数学模型基础上,对其进行代码实现,搭建电机的仿真对象,整套系统框架基于c++开发,由于c++对c语言的良好兼容性,两者可以实现混合编程,嵌入式算法系统部分可以以近似伺服驱动器实装代码的方式进行编写,实现了仿真后的代码可以以较小的改动移植到伺服驱动器的嵌入式芯片中,从而增加了代码的重复利用率,降低了二次编写的成本,并提高了工作效率。
附图说明
17.图1为本发明模拟伺服电机进行驱动器代码仿真的系统示意图;图2为本发明模拟伺服电机进行驱动器代码仿真的方法流程图;图3为本发明实施例仿真过程中电机电流工作点变化曲线;图4为本发明实施例曲线规划模块所计算的规划速度曲线;图5为本发明实施例最终电机模型所响应的速度曲线;图中,1、可视化系统;2、嵌入式算法系统;3、算法仿真系统。
具体实施方式
18.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
19.本发明第一方面提供了一种模拟伺服电机进行驱动器代码仿真的系统,如图1所示,包括可视化系统1、嵌入式算法系统2和算法仿真系统3;所述可视化系统1;应用qt c++编程桌面应用,实现设定仿真算法参数和仿真所用的嵌入式算法模块,用于展示仿真结果;所述嵌入式算法系统2:应用c代码编程,用于存储嵌入式算法模块数据;所述算法仿真系统3:应用c++代码编程,实现通过与可视化系统1和嵌入式算法系统2信息交互进行仿真算法的解算和仿真流程控制,包括虚拟电机模块和求解器模块。
20.所述可视化系统1优选为可视化ui,可视化ui包括功能界面模块,数据图表模块和系统设置模块:功能界面模块用于显示包括各个计算模块,包括计算设置模块,绘图设置模块,曲线规划模块,位置环模块,速度环模块,电流环模块,弱磁模块,svpwm模块,mtpa模块和pmsm模块;其中,电流环模块包括直轴电流环和交轴电流环;计算设置模块用于设置求解器模块中求解器类型及其参数,包括初始步长、容忍误差等。
21.数据图表模块用于根据仿真结果绘制图表并显示;系统设置模块用于通过可视化ui进行的一些非核心算法参数的设置及软件层面的设置,包括参数文件的加载与保存,仿真进程的开始与停止等。
22.电机仿真算法运行在伺服驱动器中,其为嵌入式平台,不具备复杂人机交互以及数据可视化的功能。因此,算法仿真通常在计算机中执行,通过其强大的可视化交互和运算能力,模拟出实际的算法运行环境,展现出算法计算流程以及相关数据,从而验证设计是否达到预期。
23.可视化ui的一个作用是进行仿真数据的展示。由于算法仿真系统基于c++实现,所以在可视化ui的设计方面采用了qt c++编程实现,qt是一款基于c++的应用程序开发框架,这使得嵌入式算法的相关数据可以方便的与可视化ui界面进行交互。
24.可视化ui的另一个作用是便捷的对算法参数和仿真流程等进行控制。针对嵌入式算法系统2中的不同嵌入式算法模块以及虚拟电机模块,分别设计了各自的控制界面,将界面操作与模块数据进行绑定,使得开发者能够快速方便的对算法模块进行调参或者修改算法流程。优选地,可视化ui除了可以采用qt实现外,还可以采用其他框架实现,如mfc。
25.所述嵌入式算法系统2包含嵌入式算法模块及其数据。目前主流的伺服电机驱动算法基本都采用磁场定向控制算法,一般的,其主要包含以下六个部分:曲线规划模块、位置环模块、速度环模块、电流环模块、弱磁模块、svpwm(空间矢量脉宽调制)模块。通过将上述这些模块内置在嵌入式算法系统2框架中,算法设计者只需对这些模块进行调整,即可以进行算法的仿真验证工作。
26.所述算法仿真系统3主要包含虚拟电机模块和求解器模块,主要实现两个功能:算法模块求解与仿真流程控制。
27.所述虚拟电机模块:用于模拟真实电机驱动场景,由所述算法仿真系统3进行仿真计算。
28.电机仿真算法最终是对电机的输入,即三相电进行控制,在缺少物理电机的前提下,要想验证算法的可行性与性能,需要构建一个电机的模型,最大程度的复原物理电机的响应,因此本发明基于电机的数学模型,结合微分方程数值求解等知识,使用c++代码建立了虚拟电机模块,以此来完成算法的仿真工作。
29.以三相永磁同步电机的数学模型为例,电机的电压方程:电机的电磁转矩方程:电机的机械运动方程:其中各个物理量的含义如下:ud表示直轴电压;uq表示交轴电压;id表示直轴电流;r表示定子电阻;iq表示交轴电流;ld表示直轴电感;lq表示交轴电感;ωe表示电机电角速度;ωm表示电机机械角速度;pn表示电机极对数;b表示阻尼系数;te表示电磁转矩;t
l
表示
负载转矩;ψf表示永磁体磁链;j表示转动惯量;t表示时间。
30.电机输入为三相电u
abc
,通过park变换和clark变换转换到d-q坐标系上成为u
dq
,结合上述的电机数学模型,理论上可以计算出给定电压下电机的转矩、转速、电流等参数数据。由于电机数学模型为微分方程组,所以使用计算机仿真需要将方程离散化处理,采用小步长多次计算的方式进行微分方程组的数值求解。首先,将微分项移到方程左侧,非微分项都移到方程右侧,上述方程组简得到所述虚拟电机的模型:对虚拟电机模块公式进行输入输出划分,转换成代码形式后,函数的输入输出即为对应公式的输入输出,函数的执行内容即为按照上述公式所进行的运算。至此,完成电机模型的运算函数建立。
31.所述求解器模块:用于根据所述依赖关系对所述仿真所用的嵌入式算法模块进行解算,解算结果作为所述虚拟电机模块的输入数据。
32.本发明设计的包含虚拟电机模块的整套算法仿真系统3框架基于c++开发,由于c++对c语言的良好兼容性,两者可以实现混合编程,实现在将伺服驱动器foc(磁场定向控制)仿真算法加入到算法仿真系统框架中进行仿真时,嵌入式中算法实现一般基于c语言,算法的仿真运行框架实现基于c++语言。所以电机仿真算法的部分可以以近似伺服驱动器实装代码的方式进行编写,这意味着通过本方法仿真后的代码可以以较小的改动移植到伺服驱动器的嵌入式芯片中,从而增加了代码的重复利用率,降低了二次编写的成本,并提高了工作效率。
33.此外,simulink基于可视化图元进行算法模型的搭建,这带来了非常大的局限性,最为明显的就是无法很好的设计数据结构、进行内存管理等。因为,这些特性往往是编程语言层面所提供的,simulink图示化模型搭建方式处于较高的应用层,并不支持底层编程语言的这种特性。而在实际的算法设计中,数据结构的设计以及内存管理是十分重要的部分,关乎整个算法的执行效率与空间占用。本发明提供了使用c或c++进行算法实现与仿真的框架,基于底层语言的特性,能够做到对算法实现细节的高度掌控。
34.下面给出c++与c语言混合编程示例:这里以曲线规划模块为例,假设该模块的头文件为“curveplan.h”,实现文件为“curveplan.c”。算法仿真系统3框架对该模块的调用,只需要将“curveplan.h”中的内容用extern "c" { }包括即可。添加extern
ꢀ“
c”之后,等于告诉c++编译器,对于所有使用了链接规范进行修饰的声明或定义,应该按照c语言的方式来处理。
35.进一步优选地,所述仿真流程包括以下步骤:s1、首先,使用者通过可视化ui设置好仿真所用的嵌入式算法模块与仿真参数。开始仿真后,根据可视化ui的设定生成计算任务,在初始化过程中从嵌入式算法系统2中复制
仿真所用的嵌入式算法模块,形成临时副本用于计算任务;使用副本为了保证计算过程中的参数变化不会污染原始嵌入式算法模块中的参数;s2、算法仿真系统3在各个仿真所用的嵌入式算法模块之间建立依赖关系,使依赖其他模块参数的模块能够正常运行,算法仿真系统3按照依赖关系执行解算,如依次计算出从曲线规划到svpwm的所有模块输出;s3、将解算出的结果(如给定电压)输入到所述虚拟电机模块进行进行电机模型的仿真运算,得到电机的相关物理参数,相关物理参数包括电压、电流、电机电角速度等;s4、统计步骤s1-步骤s3中所有的仿真数据,将数据写入对应的内存中并反馈至可视化ui界面显示;执行该步骤前需要在可视化ui界面设定需要统计及显示的数据;s5、增加仿真步长进行迭代运算,判断是否到达设定的仿真结束时间,到达后则结束仿真过程,否则返回步骤s2继续进行迭代运算。
36.整个仿真过程是在步长的基础上进行逐步迭代的,每个迭代过程求解器都会对各个算法模块进行解算,以获取当前迭代时刻的算法模块输出。不同的求解方法在计算效率和准确度上存在不同。本发明设计了三种迭代求解方法,分别为较高效率与较高误差的定步长欧拉法,中等效率和中等误差的定步长四阶龙格库塔法,较低效率和较低误差的变步长五阶龙格库塔法。使用者可以根据算法特点与要求选择合适的解算方法。优选地,迭代求解方法可以有多种,如bogacki-shampine、adams、heun等。
37.由于电机矢量控制算法包含多个嵌入式算法模块,各个嵌入式算法模块之间存在相互依赖关系与先后执行顺序。为了避免影响各模块内部的原始数据,计算任务在初始化的时候会进行嵌入式算法模块及其数据复制,形成仿真所用的嵌入式算法模块的副本,接着建立仿真所用的嵌入式算法模块之间的依赖关系,最后按照仿真所用的嵌入式算法模块的执行顺序依次进行解算。
38.如图3所示,图3为仿真过程中电机电流工作点变化曲线,横轴为直轴电流id,单位安培(a),竖轴为交轴电流iq,单位安培(a),算法仿真系统3读取可视化ui设定的算法参数和仿真所用的嵌入式算法模块,进行相应的仿真运算后,将仿真计算结果反馈至可视化ui,由数据图表模块用于根据仿真结果绘制图表进行显示,根据显示的曲线图可以分析在电压、电流、转速、转矩限制下的电流变化情况。数据图表模块展示了曲线规划模块所计算的规划速度(如图4所示)以及最终电机模型所响应的速度(图5所示)。可以通过对比规划曲线与实际响应曲线,分析电机仿真算法的效果。例如,如果响应曲线与规划曲线完全吻合,证明算法控制效果良好;如果电机响应发散,证明算法存在缺陷,无法使电机达到预期运行效果。
39.本发明的系统在交流永磁同步电机的数学模型基础上,对电机模型进行代码实现,搭建电机的仿真对象。利用c++语言进行算法仿真系统3框架的搭建。基于qt软件设计了一套可视化ui界面,用以设置系统参数,展示仿真数据。基于本发明模拟伺服电机进行驱动器代码仿真的系统,算法设计者能够在不依赖物理电机的条件下进行伺服驱动器控制算法的验证与仿真。同时,由于本发明所实现的整套算法仿真系统3框架基于c++语言,而c++作为c语言的超集,使用正确的交互操作即可保证从源码层面兼容c语言,所以所验证的算法具备良好的移植性,只需少量改动即可写入伺服驱动器进行物理驱动测试。
40.本发明第二方面提供了一种模拟伺服电机进行驱动器代码仿真的方法,该方法的
实现基于上述模拟伺服电机进行驱动器代码仿真的系统,如图2所示,包括包括以下步骤:可视化系统1设定仿真算法参数和仿真所用的嵌入式算法模块;算法仿真系统3根据可视化系统1的设定生成计算任务,在初始化过程中从嵌入式算法系统2中复制仿真所用的嵌入式算法模块,形成临时副本用于计算任务;算法仿真系统3在各个仿真所用的嵌入式算法模块之间建立依赖关系,按照依赖关系执行解算,将解算出的结果输入到所述虚拟电机模块进行仿真运算,得到电机的相关物理参数;统计所有的仿真数据,将数据写入对应的内存中并反馈至可视化系统1显示;算法仿真系统3增加仿真步长进行迭代运算,判断是否到达设定的仿真结束时间,到达后则结束仿真过程,否则返回上一步骤继续进行迭代运算;所述迭代运算的方法包括较高效率与较高误差的定步长欧拉法,中等效率和中等误差的定步长四阶龙格库塔法,较低效率和较低误差的变步长五阶龙格库塔法。
41.综上所述,通过本发明方案摒弃传统第三方仿真软件,直接使用c++与c混合编程,实现电机仿真算法仿真的目的,这种做法简化了算法仿真到实装的二次编程过程,提升了工作效率。用户搭建仿真模型时需要使用c或c++语言,而嵌入式编程一般也采用c或c++语言,这意味着相较于simulink的图元模型搭建方式,本发明仿真算法具有更好的移植性,经过少量改动即可运用到实际驱动器中。利用交流永磁同步电机的数学模型,结合微分方程求解方法,构建出实际物理电机的仿真模型。提供了多种迭代求解方法,使使用者能够根据需求控制算法仿真的效率与准确度。提供了可视化ui,可以方便的修改算法模块数据及虚拟电机模块数据,展示仿真结果,便于对算法的设计指标进行评估分析。
42.以上结合附图详细描述了本发明的优选实施方式,但是,本发明并不限于此。在本发明的技术构思范围内,可以对本发明的技术方案进行多种简单变型包括各个具体技术特征以任何合适的方式进行组合。为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。但这些简单变型和组合同样应当视为本发明所公开的内容,均属于本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1