基于模型设计在机电系统开发中的应用

时间:2022-07-27 05:20:26

基于模型设计在机电系统开发中的应用

摘 要 随着现代控制技术的发展,控制算法越来越复杂,控制算法的自动验证和代码自动生成已经成为趋势。传统的电机控制算法开发是系统仿真,编写代码,最后测试。采用传统手工编程的方式去编写复杂的控制算法,对于初学者来说难度非常大。对于算法设计人员来说,需要一种方法能够解决以上问题。

关键词 基于模型的设计;Embedded Coder;磁场定向算法;永磁同步电机;PIL

中图分类号:TP309 文献标识码:A 文章编号:1671-7597(2014)05-0053-01

Matlab提供的基于模型设计平台(Model Based Design,MBD),可以实现从需求分析到代码验证的整个开发过程,用户可以建立系统级模型的仿真验证,优化系统参数,自动生成高效的目标器件专用代码。利用Matlab提供的开发环境,用户可以开发和验证控制算法,成功的完成从算法的设计验证到自动生成代码过程。

1 电机控制系统开发流程

在开发中,首先是通过文本需求建立可执行文档,在这一部分中,主要是建模,通过建模可以避免传统文本的弊端,通过可视化和可执行化的模型避免文本需求的歧义和冗余。建模之后,为生成符合相关安全标准的代码,需要对模型进行建模规范检查,使用Simulink V&V工具集可自动完成这一流程。为验证算法的正确性,模型检查通过后,Matlab提供的System Test(系统测试)与Simulink DesignVerifier(设计验证器)工具可以完成对控制系统的测试。模型测试后,使用Embedded coder工具生成嵌入式代码,通过编译连接生成目标代码,下载到处理器中做代码的等效性测试,如处理器在环测试(PIL)等。通过这完整的流程,从文本需求到系统测试提供了一个统一的平台,方便开发人员交流,极大的提高了开发的效率。

2 建模规范检查与测试

模型出来并且可以编译之后,首先要做建模标准检查,这个过程使用工具Simulink Verification&Validation工具集提供的model advisor自动化的完成。Model Advisor可以理解模型的静态检查,用来验证模型是否正确的搭建出来。这是建模检查的第一步,对建立的模型进Model Advisor检查,这在设计初期非常重要,用户通过检查,能够找出模型中与建模标准或者安全标准不相符合的部分,对模型中隐含的问题给予警告,并且指导用户修改,是代码生成前重要的工作。Model Advisor提供了常见的建模标准和安全标准供用户选择,同时通过API接口,用户可以建立自己公司的建模标准。

3 处理器在环测试

图1 PIL工作流程图

处理器在环测试是在Simulink中搭建被控对象的模型,而将控制器算法代码下载到目标处理器中去执行,通过串口或者网络接口通信,对处理器和Simulink进行实时数据交换,这种硬件在环实时仿真技术可以反映控制器的实际工作情况,得到算法的执行时间,便于及早的发现错误。其工作原理如图1所示。

PIL环节是基于模型设计中非常重要的环节,因为系统控制系统模型的仿真只能验证算法的正确性,但是由于算法对处理器性能要求很高,算法的执行时间直接关系到整个控制系统是否稳定。在电机控制系统中,如果FOC算法的执行算法的时间大于PWM的周期,则会导致整个系统无法工作。

对于处理器在环测试设置比较复杂,所以为能够完成自动化的测试,本文建立自动化的测试程序如下:

set_param('model','ProdHWDeviceType','TexasInstruments->C2000','TemplateMakefile', 'ec_target.tmf', 'GenCodeOnly', 'off',...

'SimulationMode','processor-in-the-loop (pil)')

set_param('model','CodeExecutionProfiling', 'on',...'CodeExecutionProfileVariable','executionProfile',...

'CodeProfilingSaveOptions','AllData');

save_system('sensorless_foc.slx')

if exist('slprj','dir'), rmdir('slprj','s'); end

sim('model')

其中model为系统仿真的模型,通过上述程序既可以自动进行PIL测试。用户运行profile(IDE_Obj,’execution’,report)即可以生成代码实时运行的结果如图2所示。

图2 PIL仿真结果图

4 总结

基于模型的设计优势在于算法的早期验证,使得开发者可以将主要精力放在算法开发上,代码则由Matlab自动生成,很好的提高工作效率。在实际的开发中,将算法生成为函数进行调用,一般底层驱动和控制流程使用汇编语言或者C手工编写。如果通过Matlab对底层驱动建模则十分复杂,得不偿失,控制流程开发也没有C语言灵活。

参考文献

[1]刘杰.基于模型的设计及其嵌入式实现[M].北京:北京航空航天大学出版社,2010.

[2]The MathWorks,Inc.Embedded coder6 Geting Started Guide,April 2011.

[3]The MathWorks,Inc.Embedded coder 6 User’s Guide,April 2011.

[4]The MathWorks,Inc.Stateflow 7 Geting Started Guide,April 2011.

作者简介

王海滨(1988-),安徽蚌埠人,安徽理工大学在读硕士研究生,研究方向:电力电子与电力拖动。

上一篇:一种新型双级Boost升压拓扑结构 下一篇:近距离下层煤工作面合面开采技术研究