APP下载

基于模型搭建与仿真的辅助编程方法

2021-05-26徐彪吕涛陈宝导桂进

汽车实用技术 2021年9期
关键词:控制程序流程图嵌入式

徐彪,吕涛,陈宝导,桂进

(1.中国人民解放军32153部队,河北 张家口 076150;2.铜仁职业技术学院,贵州 铜仁 554300)

引言

当前机械、汽车行业的技术发展形势偏向于电子化与智能化,典型的模拟仿真技术、智能电子技术的应用成为机械、汽车开发设计的主要途径。典型的方式是结合计算机模拟仿真,包含多方方软件联合建模设计,借助模型平台最大化的实现从设计到应用的必要程序。浙江大学的王帅通过研究车用发动机内部的节温器,以电控阀的设计及其控制程序编译替代老式节温器,有效解决其物理偏差[1]。哈尔宾工程大学的张鹏等人通过设计开发电子硬件并借助测控程序形成电磁感应加热装置为汽车系统加热,如图1所示[2]。

本文基于MATLAB/Simulink中所形成的控制模型,以STM32单片机为核心,借助其开发板及第三方软件实现C语言程序编译的控制开发,为控制系统设计开发及其程序编译的衔接提供案例。

1 基于MATLAB软件的控制模型

本文所述的控制模型是以一种温度管理系统为例,该温度管理系统主要是通过检测目标系统的发动机、驾驶室及燃料温度的温度,并调节自带设备的工作状态以达到最佳状态。

图1 电磁感应加热器

1.1 系统的控制流程

本文所述控制案例通过流程图进行表达,以明确控制系统的相关思路。主要分为主体流程、保暖模式流程、预热模式流程三部分按照相关硬件传感装置采集数据进行条件判断,实现策略控制工作。如图2所示为控制系统主流程。

图2 控制系统主流程图

通过主流程图的判断分析,可选择保暖模式及预热模式进行控制流程循环,如图3所示为保暖模式流程图。

图3 保暖模式流程图

图4 为预热模式流程图,图中通过判断分析感应器的数据进行各种系统状态的切换。整体控制当中各系统状态依次由heateron、heater1、heater2-2等代表,主要对系统内部的各部件执行开关操作命令,此处不进行详述。

1.2 基于MATLAB软件建模

在上述内容的基础上基于MATLAB软件中自带的Simu -link/Stateflow功能模块搭建控制模型。其中以Simulink模块构建与其他物理联合仿真软件的控制及接口环境[3],以Stateflow模块建立逻辑门限值控制具体模型,案例的相关模型外部环境如图5所示。

图4 预热模式流程图

图5 模型外部环境

Stateflow模块是按照有限状态的原理及控制流程的逻辑决策方式对模型进行搭建的MATLAB模块。该模块充分利用常见的控制表达方式,如流程图、真值表等,按照一定的规则整合为模拟控制系统。该模块常应用于设计系统任务调度类、故障管理类的控制[3]。以上述模块建立逻辑门限值控制具体模型,如图6所示。

图6 控制模型

2 基于单片机及其软件的程序编译

利用上述数学软件形成的控制模型,借助所开发控制硬件官方的软件环境程序进行联合编译。其后将生成的主体程序导入常用程序编译软件修改完善和移植相关附属驱动程序,再下载至控制器开发板开展调试以获得目标程序。

2.1 STM32嵌入式单片机

STM32嵌入式单片机为意法半导体公司设计研发的32位微控制器。该型嵌入式控制器采用的是著名的ARM® Cortex®M处理器内核,其特点在于良好的信号处理性能,普遍应用于多种控制系统当中;高度集成的硬件内置多组模拟-数字、数字-模拟的信号转换;遵循行业规范开发的处理器具有较高的通用性,使开发过程更轻松。STM32嵌入式单片机以内核架构、外部配置为标准形成多个系列,诸多型号[4]。本文采用STM32F1嵌入式单片机,其软、硬件水平足以满足常见控制的需求,如图7所示。

图7 STM32系列单片机及开发板

2.2 单片机开发环境

针对上述的嵌入式单片机进行本文案例的开发,所需要的STM32-Cube软件是由意法半导体官方开发的,主要用于支持上述嵌入式单片机程序环境的设定以及时快速产生常用的程序语言、编译软件的工程文件。同时,其能够与MATLAB软件的开发库建立连接,使数字化的控制模型遵循仿真过程及原始设计思路转化为规范的程序。而在此过程中利用可视化图形的操作可简单、精准的配置控制模型所对应的相关代码,使最终生成的工程的控制逻辑具备科学性和可操作性,如图8所示。

图8 STM32-Cube软件界面

但是采用机器进行自动化编译的方式对于所生成的程序较人工编译具有不完善之处,如对控制系统设计思路的实现偏差、嵌入式软件资源的不充分使用、程序可读性较差等。介于上述问题,应当引入程序编译软件对前述问题开展完善。

本文程序编译软件选用MDK-ARM,其主要编写C语言的嵌入式程序,为嵌入式微控制器提供可靠、高效的开发条件。其包括了调试以及Keil C编译功能模块,可实现C/C++、汇编等常用编程语言的完善及编译。本文中通过将编译后的程序与前述所选择的STM32嵌入式单片机开发板通讯,实现了最终环节的调试,如图9所示。

图9 MDK-ARM软件界面

3 基于外部硬件的特性及驱动的完善

3.1 外部硬件电路

上述程序控制依靠硬件电路进行工作,本硬件电路根据前述的单片机为控制核心,借助各种信号传输转换将各驱动电路子模块进行连接,从而形成完整的输入输出控制回路。根据各模块的功能可将硬件电路划分为输入电路、控制电路、输出电路三部分,具体见图10。

图10 外部硬件控制电路

3.2 基于C语言的控制程序编译

本文基于C语言进行开发,根据控制系统设计的硬件特性以及开发软件,对搭建的控制模型进行程序的编译。其控制核心采用STM32F103RCT6单片机,在STM32-Cube中根据控制需求对应地将众多I/O口资源合理分配;在Simulink环境下仿真实现程序的初步编译;在MDK-ARM软件中将导入的工程文件进行完善修改,最后形成基于C语言的控制程序,思路如图11。

图11 软件联合编译思路

第一步,在STM32-Cube软件自带的数据库中设置本文所述的控制芯片型号以及分配相应的芯片I/O口资源,以初步实现其基本架构,即形成前述设计的模式,包括信号输入与、输出等功能。将相关设定及配置以文件的形式输出,为所生成程序在专用编译软件中的继续完善与修改提供基础。

第二步,进入MATLAB软件下加载第三方软件模块,即安装意法半导体官方的STM32-MAT /TARGET开发库。该库是其与Mathworks公司联合开发的官方文件,专门用于解决在MATLAB软件中的嵌入式程序开发,采用模块拖拽等图形化语言构建控制模型与程序转移的基本环境。然后在软件中的设置部分进行C语言选项的转译设置,并导入前述在STM32-Cube软件下生成的工程配置文件,通过开展计算机模拟仿真的方式即可完成控制程序主体部分的代码[5]。

值得注意的是,此环节的主体控制程序是完全依靠软件的仿真运行以及电脑的标准计算而得的代码。通过观察与解读,可发现该程序不具备有主观方面的阅读性,编译的互动效果并不友好,难以直接利用。为避免上述问题在后期程序修改完善中的消极影响,此处应当针对程序进行人工的修改以符合主观的理解及思路。

第三步,针对上述问题调取程序至MDK-ARM编译器中,对其开展进一步地调整以提高程序的阅读性;针对控制系统的外设部件,在前述形成的工程文件框架下移植固定的初始化以及驱动类程序[6],以实现主体控制思路在硬件上的最终实现。如图9所示,在MDK-ARM环境下编译的控制程序页面及程序的树形架构。在此基础上将最终程序烧录到嵌入式单片机控制电路中,接入相应硬件并经过实验调试即可完成控制的开发。

但是控制程序的开发过程中,受限于编程水平的限制存在代码编译的精度不高等问题,难以准确的保证与控制策略 运算思想一致;电路的硬件设备在选用当中受限于物理特性的极限难以完全保证程序目标功能的准确性。

4 总结

本文梳理控制系统从设计建模到程序编译的实现过程。基于MATLAB软件控制模型案例,借助控制模型仿真及STM32-Cube软件实现主体程序编译,以STM32嵌入式单片机为控制核心,结合外部电路硬件参数及驱动完善程序,最终实现C语言嵌入式的控制开发。本文通过上述手段为工程上控制系统开发提供了可行的参考。

猜你喜欢

控制程序流程图嵌入式
基于PLC的变电站备用电源自动投入装置控制程序的研究
搭建基于Qt的嵌入式开发平台
嵌入式软PLC在电镀生产流程控制系统中的应用
专利申请审批流程图
专利申请审批流程图
基于PLC数值处理模块的PID控制程序研究
宁海县村级权力清单36条
Altera加入嵌入式视觉联盟
纸机传动控制程序的复用性研究
倍福 CX8091嵌入式控制器