GCKontrol与嵌入式系统:STM32实现电机控制案例
摘要:系统设计与仿真软件GCKontrol能够对控制系统进行建模、仿真与测试。软件基于模型自动生成的代码能够满足嵌入式系统要求。GCKontrol的模型属于“应用层软件”,能够与“底层软件”一起编译,下载到目标板。本文将给大家展示一个基于STM32 ARM Cortex芯片实现的电机控制案例。
一、本工程总体介绍
1.1 基于模型的设计
基于模型的设计为复杂系统的开发提供了一种数学性的、形象化的方法,其核心在于开发过程中,系统地使用了基于模型的设计思想,包括需求分析、系统架构建模、设计实现、仿真、自动代码生成以及验证和确认。基于模型的设计使开发者能够在项目的早期阶段就发现并改正产品开发的缺陷和设计问题,项目过程中还可以适应不断变化的客户需求,项目末期在通过软件在环(SiL)、模型在环(MiL)、硬件在环(HiL)仿真后,确保最终交付的系统可以满足客户需求。
1.2 从控制系统模型到嵌入式控制器代码
在嵌入式开发中,利用仿真软件的相关功能模块搭建仿真模型后,一个非常重要的步骤就是利用代码生成功能将搭建的系统转化为代码,并且和嵌入式平台的芯片软件工程融合,使我们开发的系统能够在单片机上运行,实现产品的功能要求。
在本案例中我们采用世冠科技开发的GCKontrol系统设计与仿真软件来对控制器策略进行建模并生成代码,将代码载入到STM32开发板,(类似于汽车控制中的ECU),对汽车节气门实物进行控制。
本方案实施步骤如下:
1.控制策略建模:基于GCKontrol对控制器策略进行建模;
2.被控对象建模:基于GCKontrol对被控对象节气门进行建模;
3.模型在环测试:基于GCKontrol对控制策略和被控对象进行模型在环测试;
4.控制策略优化:对控制器策略进行优化评估迭代,以得到期望的控制效果;
5.生成C代码:基于GCKontrol对控制器策略生成C代码或定点运算C代码;
6.代码部署至嵌入式系统:将C代码部署至STM32开发板;
7.快速原型验证:搭建完整的硬件系统(汽车踏板+STM32控制器+节气门实物)进行快速原型(RCP)验证。
本方案总体流程如下图所示:
二、硬件系统介绍
2.1硬件系统总体
在本案例中,基于四个关键模块来实现控制器策略对汽车节气门的控制:
1.滑线变阻器:用于模拟汽车踏板电压传感器信号;
2.STM32开发板:作为控制器来运行控制策略输出PWM波;
3.电机驱动板:对STM32输出的PWM波进行放大,输出电压;
4.汽车节气门:实物,接收到电机驱动板的电压,对节气门进行实时控制。
硬件系统的总体结构如下图所示:
2.2滑线变阻器
用滑线变阻器模拟油门踏板的输入模拟信号-电压信号,脚踩踏油门踏板的深度决定了节气门的开度,节气门的开度又会控制汽油的燃烧,从而提供不同级别的动力。本案例中用滑线变阻器输出电压来表示油门踏板的输出电压。
2.3 STM32开发板-控制器
STM32开发板型号为STM32-F103-ZET6,详细参数如下:
1.主流微控制器,大型生态系统。基于ARM内核,32位。
2.本案例中可选择的开发板有CAN、模拟、数字I/O。没有“电源”,只有逻辑([mA])。
3.本案例中电机驱动板是基于PWM波模式,输出1[A]电流。
2.4 电机驱动板
系统中电机驱动板及其连线如下图所示:
2.5 汽车节气门实物
本案例中使用的是EA211,1.6T节气门。
三、GCKontrol控制器模型
3.1 PWM波介绍
PWM控制电机的基本原理:PWM就是脉宽调制器,通过调制器给电机提供一个具有一定频率且脉冲宽度可调的脉冲电。脉冲宽度越大即占空比越大,提供给电机的平均电压就会越大,电机转速因而越高。反之,脉冲宽度越小,则占空比越小,提供给电机的平均电压就越小,电机转速进而越低。PWM不管是高电平还是低电平时,电机都是转动的,电机的转速取决于平均电压。
3.2 控制器模型介绍
首先设定节气门的控制策略。由于节气门较为简单,可直接采用传统的PID控制策略,因此主要的工作就是找出控制量和搭建PID控制模型。对于控制量,我们可以设定滑线变阻器的输入量与节气门传感器的输出信号之间的差值来做为PID的控制量。PID的输出量经过放大之后作为节气门内部电机的转矩输入,从而实现整个模型的建立。
1.输入/输出硬件处理(模拟输入、PWM输出)
1.1.输入踏板位置电压;
1.2.输入节气门位置电压;
1.3.输出PWM占空比设置和过电流保护;
2.故障诊断(模拟输入故障)
2.1.验证电压是否在预期范围内并进行合理性检查;
2.2.故障保护模式;
3.执行机构闭环位置控制
3.1.正常模式:带前馈的PI控制;
3.2.位置传感器故障时的备份模式:带抖动的前馈(备用:无反馈);
4.控制以10ms周期运行
依据以上需求,本案例GCKontrol的控制策略模型如下图所示:
该系统的总体控制策略如下图所示:
3.3 模型在环验证-被控对象模型
被控制对象模型需要考虑如下因素:
1.直流电机:电机电阻,Kt(力矩增益),Kemf(反电动势常量);
2.节气门行程限位;
3.摩擦力模型;
4.弹簧扭矩和预加载力矩。
模型在环的GCKontrol工程如下图所示,被控对象是节气门,节气门由电机驱动,图中右边的子系统是控制器模块,左边的子系统是节气门和电机模型。
其中,节气门和电机模型的系统结构如下图所示,输入为PWM波-电压,驱动节气门转动,输出为节气门传感器电压。
3.4模型在环测试
模型在环系统测试结果如下图所示,油门踏板信号为输入信号,节气门信号是系统的输出信号,实现了节气门信号对油门踏板信号的追踪。
四、GCKontrol生成控制器C代码
4.1 GCKontrol生成C代码介绍
GCKontrol支持代码生成,包括C/C++源代码、动态库等文件,自动生成的代码是跨平台、跨硬件的全独立代码,可部署至嵌入式系统,且模型和代码具有一对一关系,易调试和追踪。
将控制系统模型运行后,可得:
其中GCodeLink.c和GCodeLink.h是GCKontrol生成的C代码。
4.2 GCKontrol生成定点运算C代码
在GCKontrol的控制器模型做定点运算,需要在GCKontrol模型中的每个模块的信号属性页面进行定点运算配置,包括:数据类型、定标值、偏移等参数。
以增益、常量和加法三个模块为例来展示定点运算设置:
对增益模块FeedForward_DutyGain进行定点运算设置,在信号属性Tab页,输出数据类型选int16,选中定点计算CheckBox,在定标值里选为6,偏移设为3:
对常量模块FeedForward_StartPoint 15进行定点运算设置,在信号属性Tab页,输出数据类型选int32,选中定点计算CheckBox,在定标值里选为4,偏移设为-10:
对加法模块FeedFwd_duty进行定点运算设置,在信号属性Tab页,输出数据类型选int16,选中定点计算CheckBox,在定标值里选为3,偏移设为55:
本案例对控制器算法模型各模块进行定点运算设定后,运行GCKontrol工程,生成定点运算C代码,并将该C代码部署至嵌入式系统(STM32开发板)。
4.3 函数接口需求
在GCKontrol生成的C代码中,需要关键的接口函数:DoStep函数和CreateValue函数。
五、将代码载入STM32开发板
5.1 将GCKontrol生成的控制器C代码部署到STM32
启动STM32 CubeIDE如下图:
将GCodeLink.h和GCodeLink.c文件拷贝至工程下的User文件夹中,如下图所示:
5.2 STM32调用GCKontrol策略代码的接口函数
在STM32嵌入式操作系统中,代码结构如下:
1.初始化代码:无需修改,主要是设置硬件信息;
2.While循环:主控制回路;
3.读取模拟输入,传递给GCKontrol变量;
4.执行模型的DoStep()函数;
5.从GCK输出写入PWM;
6.等待10ms。
基本配置如下:
1.生成代码的变量与STM32工程变量对接;
2.变量列表位于Gcodelink中;
3.如果模型更改,列表将更改,需要更新索引。
5.3对代码进行编译并加载到STM32开发板中
基于STM32 Cube IDE对代码进行编译并加载到STM32开发板中,如下图所示:
5.4 基于STM32 Cube IDE对代码进行编译调试
调试器连接到单板,在单板执行中插入断点,调试器读取主板内存,读取或写入变量/参数。如下图所示:
下一步调试及增加断点调试,如下图:
5.5 硬件系统总体启动运行并达预期
经过以上各步骤,本案例实现了对汽车节气门实物的控制。
本案例的硬件系统如下图所示:
1.滑线变阻器-模拟踏板开度电压;
2.STM32开发板;
3.电机驱动板;
4.稳压电源-供电给电机驱动板;
5.汽车节气门。
六、总结
在本案例中我们采用GCKontrol系统设计与仿真软件来对控制器策略进行建模,仿真测试后生成C代码/定点计算C代码,并将生成的代码载入到嵌入式系统(系统采用STM32开发板,类似于汽车控制中的ECU),最终实现了对汽车节气门实物的控制。
文章来源:世冠科技
GCKontrol与嵌入式系统:STM32实现电机控制案例相关推荐
- 嵌入式系统开发设计——按键控制LED灯实现
一.实验目的 掌握STM32固件库的使用方法: 掌握基于库函数模板的开发方法: 掌握基于固件库进行GPIO端口编程的方法: 4.规范编程格式. 二.实验内容 1.查阅STM32-V5开发板按键.LED ...
- 嵌入式系统stm32 跑马灯实验
一.实验目的和实验要求 实验要求:短按实验板扩展板上的按键SW18,依次点亮核心板上D2-D4指示灯.长按按键2秒,实现四个灯循环点亮(跑马灯). 二.实验原理 如上图所示,四个 LED 正极通过电阻 ...
- 【嵌入式系统】基于触摸屏控制的多功能电子钟
基于触摸屏控制的多功能电子钟 仅供参考,别抓我,别抄我,球球了 开发板:STM32F407ZGT6 github代码和报告
- 10年老兵!从大学毕业生到嵌入式系统工程师的修炼之道……
点击上方"大鱼机器人",选择"置顶/星标公众号" 福利干货,第一时间送达! 一名从事10多年嵌入式行业的老兵,用多年来从事这个行业的经验及独特视角,为想从事嵌入 ...
- 嵌入式系统简介、应用及发展
1.1 嵌入式系统简介 1.1.1 何为嵌入式系统 嵌入式系统本身是一个相对模糊的定义.目前嵌入式系统已经渗透到我们生活中的每个角落,工业.服务业.消费电子--,而恰恰由于这种范围的扩大,使得&quo ...
- 嵌入式系统课程设计题目
简介:一些嵌入式系统课程设计题目,可以当做对你学习ARM的一个检测. 嵌入式系统课程设计-选题要求及课题 1.嵌入式系统课程设计时长两星期,要求学生分组进行课程设计,每组学生人数为2-3人(可在不超过 ...
- 基本概念学习(1003)---嵌入式系统
嵌入式系统(Embedded system),是一种"完全嵌入受控器件内部,为特定应用而设计的专用计算机系统",根据英国电气工程师协会( U.K. Institution of E ...
- 1.嵌入式系统的简介
1.嵌入式系统的简介 1.1 课程规划与学习方法 嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一,但同时也是最难以掌 握的学科之一,很多踌躇满志的同学最终没能成为一名合格的嵌入式工程师,很大 ...
- 嵌入式(十三):嵌入式系统概念
1.嵌入式系统概念:用于控制.监视或者辅助操作机器和设备的装置(不一定是电路,或者计算机),此为广义的嵌入式系统 2.嵌入式系统是以应用为中心,以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能. ...
最新文章
- 基于MM32F3273的MicroPython实验电路板 - 工作并不是正常
- (4) hibernate增删查改+批量操作+类似Mybatis动态sql
- python join() 函数的用法
- P4827-[国家集训队]Crash 的文明世界【树形dp,换根法,斯特林数】
- java applog_java - 通过Logback登录到App Engine request_log - SO中文参考 - www.soinside.com
- Spring Boot文档阅读笔记-构建SOAP的web Service Client
- mysql的主主复制模型
- 使用IDEA,利用SpringMVC框架建立HelloWorld项目
- 写了一个字符串的二维表: TSta
- 将Nginx添加到系统服务
- 4K标准---电视显示标准(ITU-R BT.2020)
- 英语打字练习软件-c语言编写
- 图片去底色功能怎么用?怎么把图片背景色变成透明的?
- 传新版支持光追的 MikuMikuDance 正由另一人研发——MikuMikuDance 2 Project
- cmos电路多余输入端能否悬空_【技术分享】CMOS集成电路中多余输入端为何不能悬空?...
- 尽挥洒最终版 思嫣_温州方言歌曲_温州话歌曲
- 抖音小视频、千图网图片等多平台的微航去水印微信小程序工具解析
- JAVA音程_桌面应用|与 Linux 一起学习:学习音乐
- ROS加强精通过程--禁止 未授权用户上网
- 手写springboot自动装配 autoConfiguration