基于Matlab的运动控制系统实验平台设计

2024-04-01 02:38徐建明支文龙周家豪
计算机测量与控制 2024年3期
关键词:调节器控制算法代码

徐建明,支文龙,周家豪

(浙江工业大学 信息工程学院,杭州 310023)

0 引言

运动控制系统课程是高校自动化专业一门很重要的专业课程,该课程是一门综合了多学科的综合性课程,具有很强的实践性和应用性[1]。因此实验操作对于该课程非常重要,通过在课程中结合实验对于学生学习直流与交流电机的调速系统理论知识有很大的帮助,与此同时在实验设计电机驱动控制系统过程中学生实践能力也能够得到提高。

在传统的运动控制系统实验教学中,一般常见的实验方式有:一种是在实验室中,对电机的基本参数进行测量,通过工程设计的方法设计出电流调节器和转速调节器,然后在实验台上进行接线,调参等操作来实现对电机的控制。另一种是在Matlab/Simulink中搭建控制模型,通过仿真的模式来对控制系统进行研究[2]。两种方式都有一定的局限性,前者侧重实际应用,因此在实验前需要经过繁琐的设计与计算;后者侧重仿真,结果会偏于理想化。

针对运动控制系统课程实验平台的不足,国内外对于运动控制系统课程实验平台设计的研究也有不少。文献[3]介绍了一种基于 TMS320F2812 DSK 的低成本电机控制测试台。文献[4]介绍了一种用于设计和实现嵌入式控制软件的实验平台。文献[5]将Matlab/Simulink和SimPowerSystems工具箱引入到了运动控制系统课程的实验教学中。文献[6]介绍了将Matlab/Simulink仿真与实际硬件设备控制相结合的实验平台。文献[7]从运动控制系统课程特点和实践环节各类实验的特点分析入手来建设实验平台。文献[8]介绍了一种新型的快速控制原型系统,该系统将控制类课程仿真与动手实践相结合,学生通过该系统可以专注于控制系统设计、仿真和实验控制验证,而不是单纯编程。文献[9]介绍了一种永磁同步电机控制系统的实验平台,该平台实现了仿真和硬件平台控制的结合。

基于模型设计(MBD,model based design)是一种系统工程方法,其基本思想是通过对系统进行建模、仿真和验证,实现对系统的整个周期设计、开发和测试的自动化管理[10]。MBD在工程实践中应用广泛,包括航空、汽车、医疗器械等领域[11-12]。MBD的重点是建模语言和工具的研究,在建模工具方面,Simulink是应用最广泛的基于模型设计的工具之一,dSPACE、NI LabVIEW、Rhapsody等软件也是MBD工程实践中使用最多的工具[13-14]。此外,研究者还致力于探索新的建模语言和工具,以提高MBD的建模效率和可靠性[15]。

除了上述的应用领域之外,MBD还可以用于嵌入式系统的开发[16-17]。嵌入式系统的开发和测试比一般的软件开发更加复杂和困难,MBD可以提高嵌入式系统的开发效率和质量,缩短开发周期,降低开发成本[18-19]。相对于传统的嵌入式设计开发模式,基于模型设计的开发模式以模型作为中心,从模型搭建到代码自动生成一体化实现了高度自动化的开发流程[20]。这种开发模式的优点在于用户只需在模型上根据需求设置寄存器的工作方式就可以自动生成用于工程应用的C代码。这不仅加快了开发过程,还免去了手写代码可能带来的程序漏洞。同时,这种模式提供了接口来连接算法模型,让嵌入式工程师更专注于算法设计,真正实现了高效开发[21]。

本文使用Matlab软件中的可视化仿真工具Simulink,用基于模型设计的方法来设计一个运动控制系统的实验平台,实验平台主要由PC端、驱动器和控制对象三部分构成。用户通过Matlab/Simulink对控制对象搭建仿真模型,并在Matlab/Simulink环境中对仿真模型进行仿真且对仿真结果进行分析,当得到理想的效果时再对其进行软件在环仿真与处理器在环仿真验证。最后在PC端环境中将模型控制算法自动生成C代码工程形式,使用Keil5编译环境对C代码工程编译后载入以STM32为主控的驱动器中进行实物验证。用户通过操作实验平台可实现从建模仿真到实物验证实验一体化。

1 平台功能与总体方案介绍

1.1 平台功能

实验平台主要由PC端、驱动器和控制对象三部分构成,如图1所示。用户在PC端使用Matlab/Simulink软件平台可进行对被控对象的建模仿真操作。当仿真结果达到理想效果时,在PC端使用Matlab/Simulink软件和STM32CubeMX软件将模型生成C代码工程,最后使用Keil5编译环境对生成的C代码工程编译并载入到驱动器中执行实物测试的功能。

图1 实验平台

1.2 PC端环境配置

实验平台的PC端主要为用户提供构建控制对象模型、STM32微处理器配置以及代码自动生成的环境。在设计实验平台时需要对PC端的环境进行配置,主要是安装Matlab、STM32CubeMX和Keil5这3个软件。其中Matlab/Simulink是实验平台PC端运行环境的核心,实验平台的模型搭建与代码自动生成都在Matlab/Simulink中运行。

实验平台中驱动器使用的微处理器是ST公司的STM32G474VET6,由于Simulink的模型库管理器中没有STM32相关的模型功能块,因此需要在Matlab/Simulink中安装ST公司开发的STM32-MAT/TARGET embedded target工具箱。STM32-MAT/TARGET是Simulink中包含STM32功能模块的硬件库,在安装该硬件库后Simulink的模型库管理器中会添加STM32对应功能模块的模型,如ADC library、GPIO library、MCU CONFIG library、TIMERS library等等。其中MCU CONFIG模块是STM32微处理器模块,该模块是Matlab/Simulink与STM32CubeMX之间的“桥梁”,在Simulink中设置更新STM32CubeMX的路径后通过MCU CONFIG模块可以启动STM32CubeMX软件。

2 平台硬件设计

图2为系统平台驱动器的硬件设计总体框图,总体分为两个部分:以STM32微处理器为主控的控制电路部分和驱动电路部分。其中,控制电路的微处理器为 STM32,其主要对整个驱动控制系统进行任务分配和控制。控制模块主要负责处理传感器模块采集回来的数据并对其进行计算处理,如编码器电路采集的电机转子位置信息和转速信息以及电流采集电路采集的电流信息。驱动模块主要通过接收控制模块传输的信号来改变驱动电路的状态实现对电机的控制,并将电机的运行数据反馈给控制模块。电源模块主要将输入电源电压通过升压或降压转换为电路中各个模块所需的电压,对电路中各个模块进行供电。

图2 系统平台驱动器硬件框架图

3 基于模型设计的开发流程

实验平台利用Matlab软件平台的Simulink结合ST公司开发的针对STM32微处理器的Simulink库STM32-MAT target工具箱实现从建立运动控制系统的仿真模型到自动生成可读写和可移植的C代码工程文件,并在STM32微处理器上实际运行。整个设计的流程大致分为5个步骤:

1)建立仿真模型进行模型在环仿真(MIL,model in the loop),建模仿真是一种模拟、分析和预测实际系统运行的一种方法,其与实验有一定的区别。对于一些复杂的控制系统,相对成本较高,通过建立仿真模型可以预测系统可能出现的问题和风险,提前采取措施以减少事故和损失。因此建模仿真可以提高系统的效率、减少风险和成本,优化方案选择,从而为系统的研究和决策提供有力支持。

2)软件在环仿真(SIL,software in the loop),软件在环仿真是一种系统级仿真技术,它通过在计算机上运行虚拟系统来评估和验证嵌入式软件的性能和功能。

3)处理器在环仿真(PIL,processorin theloop),处理器在环仿真是一种广泛应用于嵌入式系统开发中的仿真技术。在PIL仿真中,嵌入式处理器和相关外设被实际连接到仿真环境中,并与运行在主机计算机上的软件模拟器进行交互。

4)模型设置生成代码的优化,Matlab/Simulink平台在基于模型设计中提供了两方面的优化方式:一种是通过改变模块之间信号线的存储类型从而改变代码生成时的变量类型方式;另一种是在搭建控制算法模型时利用结构化的思想将整个模型分解成一个个子系统,并将代码生成在自定义的文件的自定义函数中,以便于移植和调用[22]。以SVPWM算法为例,SVPWM算法模型设置生成代码的优化配置与其生成的代码如图3(a)所示,优化后的生成代码以函数形式单独生成在自定义的文件中,函数名为自定义的名称(如图3(b)所示)。

图3 模型生成代码的优化配置

5)配置微处理器模型的参数结合控制算法的模型利用MATLAB/Simulink自动生成代码,将其应用到实验平台进行测试。

4 基于模型设计的运动控制系统实验的案例

以永磁同步电机的转速、电流双闭环控制系统为例,使用基于模型设计的方法,按照模型在环仿真、软件在环仿真、处理器在环仿真最后到实验平台进行实物测试的顺序来详细介绍实验平台如何实现从仿真到实物测试并通过实验结果来验证实验平台的可行性。

4.1 调节器设计

在工程设计中,转速、电流双闭环控制系统的设计原则是先设计内环再设计外环,一般先设计电流环,将其作为内环,确定电流调节器的设计方案后,把电流环等效成外环的一个环节,再设计外环即转速环[23]。

对于电流环来说,它是控制系统的内环,主要负责控制电机的电流,因此电流环的好坏直接决定系统的稳定与否。在电流瞬变的过程中,反电动势可以暂时被认为是基本不变的,这是因为电流变化的时间尺度远远快于电机转速的变化时间尺度。因此,在瞬态过程中,可以忽略反电动势的作用,将电机视为一个纯电阻负载进行分析,简化控制系统的建模和控制器的设计。如图4(a)所示为忽略反电动势影响的电流环动态结构图。

图4 电流环结构图

在电机控制过程中,通常需要进行数字信号处理和模拟信号转换。如图4(b)所示,图中A表示数字量电压转换为模拟量电压的比值系数,通过换算可将数字量电压转换成对应的模拟电压输出给电机。B表示模拟量电流转换为数字量电流的比值系数,通过换算可将电机采样的模拟电流信号转换成对应的数字量用于控制器内部的计算。根据对应关系通过公式(1)可得出A和B的值。

(1)

在公式(1)中,Vbus为母线电压,kop为对应电流传感器上的电流与电压的比值。在设计电流环时,将其按照典型一型系统来设计,所以采用PI调节器作为电流环的调节器。

在设计速度环时,将电流环作为其整个环节中的一个一阶惯性环节来代替,速度环的动态结构图如图5所示。

图5 速度环动态结构图

为了消除转速静差并提高控制系统响应速度和稳定性,需要在负载扰动作用点前添加一个积分环节,并将其纳入转速调节器中。这将使系统能够快速消除静差,以提高系统响应速度和稳定性。由于转速环开环传递函数中已经包含一个积分环节在扰动作用点后面,因此需要设计成典型Ⅱ型系统[23],因此转速调节器(ASR)也采用PI调节器。

电流调节器和速度调节器具体设计方法参考文献[23]中第四章的电流调节器与转速调节器的设计部分。在设计调节器时需要注意的是:因为电流环作为内环,其输出值直接影响电机的电流,因此速度环的输出值通常作为电流环的参考值。在速度环输出的参考值经过电流环控制后,得到电机的实际电流值,为了保证电机的安全运行,需要对速度调节器的输出值进行限幅。在系统启动时,由于电机的转速为零,内环控制器的输出为最大值,如果没有饱和限幅的约束,将会导致输出电压超过电机额定电压,从而产生过大的电流,这可能会损坏电机或其他部件。因此,引入饱和限幅可以避免这种情况的发生,通过限制输出电压和电流来控制电机的加速度,减少启动过程中的超调量和启动电流的波动。虽然饱和限幅可能会降低系统的响应速度和启动效率,但是它可以有效地保护电机和系统组件,提高系统的可靠性和稳定性。

4.2 模型在环仿真

对控制对象建立模型是实验流程的第一步,也是很重要的一个步骤。在建立模型时通过对被控对象参数进行分析,利用Simulink中的物理建模工具箱(Simscape、Simmechanics、Simdriveline等)构建控制对象模型,根据控制对象选择合适的逆变器建立满足需求的系统控制模型[24-25]。由于本次实验案例中的控制对象是永磁同步电机,因此在构建控制算法模型中使用了电压空间矢量脉宽调制算法(SVPWM,space vector pulse width modulation)。如图6所示为永磁同步电机的矢量控制框图,其中控制对象模型只在仿真的阶段中使用,在代码生成时只对控制算法模型进行生成C代码的操作。

图6 矢量控制框图

根据矢量控制框图,在Matlab/Simulink中建立仿真模型如图7所示,搭建Clark坐标变换模块、Park坐标变换模块及其逆变换模块、ACR调节器与ASR调节器模块以及SVPWM控制算法模块等构成控制算法模型(如图7(a)所示)。在控制算法模型中SpeedRef作为设定值为转速调节器提供转速目标参考值;速度给定值与电机提供的三相电流值、转子速度和位置为控制算法模型的输入;输出作为STM32的 CCR寄存器的设定值,通过改变CCR寄存器的值可以改变PWM输出的脉宽从而控制电机的转速。将控制算法模型封装成新的模块,命名为Speed and current double closed-loop control(如图7(b)所示),在后续的SIL仿真和PIL仿真中通过直接调用该模块进行实验测试。

图7 MIL仿真

4.3 软件在环仿真

软件在环仿真具体的实现是通过建立软件在环仿真模型,在SIL仿真中,硬件系统被替换为虚拟的模拟器或仿真器,而系统的软件部分运行在这个仿真环境中。这种仿真技术可以在早期阶段验证系统的软件部分的正确性和性能,从而降低系统集成的风险和成本。如图8(a)所示,将图7中的控制算法部分模型添加到待测模型Model中,在Simulink环境下将待测模型设置为SIL模式。在仿真运行时,SIL模型会调用外部实验平台中的编译器环境,将模型生成C代码形式(如图8(b)所示)在编译器中运行并将结果输送到Simulink仿真环境中。在设计软件在环仿真时,将SIL模型与原模型并联在一起仿真,在输入相同的给定信号时,比较两个模型的输出结果来判断模型生成代码的功能与其是否等效。

图8 SIL仿真

通过图9可以看出SIL仿真输出转速曲线基本贴合给定转速曲线,且输出转速与MIL模式的输出转速差值基本稳定在5 rpm左右,最大不超过16 rpm。SIL仿真测试结果表明通过SIL仿真可以验证生成的控制算法代码在Simulink环境中与模型功能基本一致且能够稳定的运行。

图9 SIL仿真输出转速

4.4 处理器在环仿真

在PIL仿真中,嵌入式处理器和相关外设被实际连接到仿真环境中,并与运行在主机计算机上的软件模拟器进行交互。这种仿真技术利用Simulink使模型与硬件平台协同工作,控制算法的模型在Simulink中以Normal仿真模式和PIL仿真模式两种不同的模式运行,Normal仿真模式以模型在环仿真形式在Simulink平台中运行,PIL仿真模式需要将PIL模型先生成嵌入式C代码的形式,然后将其编译为目标文件载入到硬件平台中去,硬件平台与PC端通过串口通信方式建立连接,建立Simulink与硬件平台中上微处理器之间的通信通路。在仿真运行过程中Simulink的信号源模块将当前信号通过串口传递给硬件平台的微处理器,经过微处理器计算之后再将信号通过串口回传到Simulink模型中,然后Simulink的信号源模块再传入下一个采样点信号,重复上述操作。将PIL仿真结果与MIL模式仿真的结果进行比较,通过测试在给定相同的输入参数两种仿真模式下的输出值并做对比看其差值是否在合理范围内来验证系统的性能和功能[25]。

在对图8(a)中模型进行SIL仿真验证后,将其控制算法模块部分改成PIL模式,并在Simulink平台中通过Code generation 下的STM32 options中更新STM32CubeMX的路径。在仿真运行之前,Simulink平台会根据路径启动STM32CubeMX并配置硬件平台微处理器串口通讯的对应参数。利用STM32CubeMX将其生成C工程文件并利用Keil5编译环境对工程文件编译并载入到微处理器中验证其能否在微处理器中正常运行,最后确定硬件平台与PC端串口通讯正常之后在Simulink平台中运行模型仿真,并通过在Simulink中通过调用Scope模块获取PIL仿真的结果与MIL仿真的结果。

从图10可以直观的看出在相同的给定转速下,PIL仿真输出的转速与MIL模式仿真输出的转速轨迹基本吻合,且两者的误差稳定在8 rpm以内。PIL仿真测试结果表明通过PIL仿真可以验证生成的控制算法代码在Simulink环境中与模型功能基本一致且能够稳定的运行,进一步验证了控制算法模型及其生成的C代码工程的可行性。

图10 PIL仿真

4.5 实验平台实物测试

模型经过PIL仿真测试验证后,利用实验平台的真实环境对控制算法的可行性进行验证,将实验平台中的驱动器和永磁同步电机替代仿真模型中模拟的控制对象部分。为了达到和仿真类似的效果,仿真中的电流反馈环节与转速反馈环节将由硬件平台中的传感器以及采样电路代替。在生成C代码工程前,需要配置STM32微处理器的相关参数以及搭建STM32微处理器外设程序的相关模型。

通过Matlab/Simulink界面在Model Configuration Parameters中将Code Gengration的系统目标文件(System target file)更改为stm32.tlc。然后设置更新STM32 Options中的两个路径STM32CubeMX installation path和Installed Full Path。STM32CubeMX的路径更新后,在Simulink中添加MCU config功能块,通过MCU config功能块中的Start STM32CubeMX configuration tool选项便可启动STM32CubeMX软件对微处理器参数进行设置修改。确认微处理器参数后,在Simulink界面点击Build Model进行C代码生成操作,Matlab/Simulink会结合STM32CubeMX软件自动生成STM32工程文件。将生成的STM32工程文件放在Keil5环境中编译并载入驱动器的微处理器中,最后通过实验平台进行实物测试。

本次实验使用矢量控制(如图6所示)的方法来搭建永磁同步电机转速、电流双闭环控制系统模型。控制系统模型中的微处理器芯片选择的是意法半导体的STM32G-474VET6,代码自动生成的模型整体结构如图11(a)所示,在设计搭建模型时从生成程序代码运行逻辑的角度考虑,将本次实验的执行程序放在ADC的EOC(End Of Conversion)事件和Timers的Break事件两个中断中去执行。其中定时器的break中断放在TIM1的BRK中断中,为了防止实验平台在进行实物测试实验时电路中出现过流损坏电路的事件发生;将控制算法部分模型放在ADC的EOC中断中,以确保在执行控制算法程序时ADC已采集到反馈的电流并更新结束。

图11 STM32控制模型图

在对定时器的参数进行配置时,除了配置输出PWM控制电机的参数外,还需要额外配置一个通道(该通道不需要设置输出)作为ADC的外部触发源用来触发ADC的采样。此外将TIM3设置为编码器模式(Encoder Mode + index),其中TIM3的通道1和通道2作为增量式编码器A相与B相的采集接口;ADC1的通道1和通道5分别作为电机B相电流和C相电流采集接口;TIM1的通道1、通道2和通道3与其互补通道作为PWM输出接口(如图11(b)所示)。

在Matlab/Simulink中模型自动生成代码的过程时,模型生成的代码通常会使用结构体来表示模型中的各个模块及其信号连接关系。这些结构体在程序运行时会被实例化为具体的变量,并通过变量名来调用结构体成员。在对模型进行代码优化时,将部分复杂的仿真模型设置为可重复使用的功能(Reusable function)。

相对于非可重复使用的功能(Noreusable function),对于一些复杂的仿真模型来说Reusable function模式的性能会更好。在代码可读性方面,Nonreusable function模式的程序可能会包含多个单独的函数,相比之下,Reusable function模式的程序会更易于理解。对于电机控制来说,处理器的运行时间是非常关键的,因此需要尽可能地优化代码,在对参数类型进行设置时,根据模型之间的信号关系可考虑将参数类型设为定点数的形式以减少计算时间和提高控制性能。

在模型中根据需求对代码的优化操作设置后进行仿真的最后一步操作:生成代码。使用Keil5编译环境对生成的C代码工程文件进行编译并载入STM32微处理器。在电机运行时通过串口将电机实时速度传送到PC端,如图12(b)所示,对比图7(c)仿真中速度曲线可以看出,在平台实物测试中电机的实时输出转速曲线与仿真基本一致,验证了实验平台的可行性。

图12 实验平台实物测试

5 结束语

本文针对传统运动控制系统课程实验平台的不足,设计了一个基于Matlab的运动控制系统的实验平台。首先给出了实验平台的总体设计方案并介绍了实验平台的功能及其硬件结构;然后介绍了实验平台应用基于模型的设计方法实现代码自动生成,并对基于模型设计的开发流程进行了详细的阐述;最后通过案例永磁同步电机转速、电流双闭环控制系统在实验平台经过模型在环仿真、软件在环仿真、处理器在环仿真最后到实验平台进行实物测试的流程来验证实验平台的优点及其可行性和有效性。

猜你喜欢
调节器控制算法代码
创世代码
创世代码
创世代码
创世代码
基于ARM+FPGA的模块化同步控制算法研究
一种优化的基于ARM Cortex-M3电池组均衡控制算法应用
基于Superbuck拓扑的高效蓄电池充电调节器研究
一种新颖的单PI调节器消除双向有源桥无功功率的方法
基于抗积分饱和速度调节器的TSMC-PMSM矢量控制
一种非圆旋转工件支撑装置控制算法