摘要:随着现代控制技术的发展, 控制算法越来越复杂, 控制算法的自动验证和代码自动生成已经成为趋势。传统的电机控制算法开发是系统仿真, 编写代码, 最后测试。采用传统手工编程的方式去编写复杂的控制算法, 对于初学者来说难度非常大。对于算法设计人员来说, 需要一种方法能够解决以上问题。
关键词:基于模型的设计; Embedded Coder; 磁场定向算法; 永磁同步电机; PIL;
目录
1电机控制系统开发流程…………………………………………………………1
2建模规范检查与测试…………………………………………………………2
3处理器在环测试…………………………………………………………3
4总结…………………………………………………………4
文内图表…………………………………………………………5
图1 PIL工作流程图…………………………………………………………6
图2 PIL仿真结果图…………………………………………………………7
图2 PIL仿真结果图…………………………………………………………8
参考文献…………………………………………………………9
Matlab提供的基于模型设计平台 (Model Based Design, MBD) , 可以实现从需求分析到代码验证的整个开发过程, 用户可以建立系统级模型的仿真验证, 优化系统参数, 自动生成高效的目标器件专用代码。利用Matlab提供的开发环境, 用户可以开发和验证控制算法, 成功的完成从算法的设计验证到自动生成代码过程。
1 电机控制系统开发流程
在开发中, 首先是通过文本需求建立可执行文档, 在这一部分中, 主要是建模, 通过建模可以避免传统文本的弊端, 通过可视化和可执行化的模型避免文本需求的歧义和冗余。建模之后, 为生成符合相关安全标准的代码, 需要对模型进行建模规范检查, 使用Simulink V&V工具集可自动完成这一流程。为验证算法的正确性, 模型检查通过后, Matlab提供的System Test (系统测试) 与Simulink Design Verifier (设计验证器) 工具可以完成对控制系统的测试。模型测试后, 使用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的周期, 则会导致整个系统无法工作。
对于处理器在环测试设置比较复杂, 所以为能够完成自动化的测试, 本文建立自动化的测试程序如下:
其中model为系统仿真的模型, 通过上述程序既可以自动进行PIL测试。用户运行profile (IDE_Obj, 'execution', report) 即可以生成代码实时运行的结果如图2所示。
图2 PIL仿真结果图
图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.