同元国产化建模仿真与代码生成解决方案

1 基于模型设计的趋势

现代工业系统信息域软件规模和复杂度大幅提升。以汽车为例,软件规模十年间膨胀十倍,传统基于“软件工程+文档+代码”的开发过程越来越难以适应产品快速迭代的需要。

模型驱动技术能够实现控制算法以及被控物理对象的全数字化抽象。在架构层面增加可读性,通过仿真在功能层面验证设计的正确性,在实施阶段自动生成代码,部署到实际控制器和多种实时仿真平台进行实时闭环验证。因此基于模型的设计方法(Model Based Design,简称MBD)被广泛应用于航空航天机载控制器、汽车电子、工业控制、机器人等嵌入式产品领域。

MBD具有以下特点:

1.层次化建模天然实现了“高内聚低耦合”的优良特性;

2.图形化系统建模便于统一设计规范,团队分工并行开发且集成便利,使得整体开发速度加快;

3.生成代码与模型一致性强,有效避免人为编码引入的Bug;

4.设计本身就是可执行的规格书,通过仿真在早期即可验证设计的正确性。

代码生成是基于模型设计控制器软件的核心环节,因此,自动生成代码可以说是使用基于模型设计工具的软件工程师最关注的功能。

同元国产化建模仿真与代码生成解决方案_第1张图片

2 同元国产化建模仿真与代码生成解决方案

同元软控完全自主研发的多领域统一建模仿真软件MWORKS.Sysplorer及相关工具为大家提供了国产化建模仿真与代码生成解决方案。

同元国产化建模仿真与代码生成解决方案https://mp.weixin.qq.com/s/zFlVfVJRrFnVPgISSc3BwA

在同元国产化建模仿真与代码生成解决方案中,其代码生成流程包括模型建立、数据字典、代码生成与整合集成。如下图所示,首先利用MWORKS.Sysplorer进行模型设计,该设计过程涵盖了模型开闭环仿真与验证;其次使用数据字典对模型中的数据对象进行统一管理;接着使用代码生成工具进行嵌入式控制器代码的自动生成;最后将生成的代码集成到运行目标环境中。

同元国产化建模仿真与代码生成解决方案_第2张图片

图2-1 代码生成流程

2.1 模型建立

MWORKS.Sysplorer支持工业设计知识的模型化表达和模块化封装、系统的物理集成、系统状态方程的自动推导、控制策略嵌入式C代码的自动生成及参数分析与优化等功能。在同元国产化建模仿真与代码生成解决方案中,使用MWORKS.Sysplorer进行模型建立与设计。

 

2.2 数据字典

数据字典可以对模型中的数据对象进行统一管理,并规定这些数据对象在生成代码中的表现形式,使所建立的模型能够高效地转换为可读性高的嵌入式通用C代码,便于用户集成到自己的目标硬件上执行。

数据字典的应用提供三点便捷:

  • 自动数据绑定

  • 数据增删改查

  • 数据平坦化统一管理

此外,数据字典还能够自动完成模型中数据信息的分类。通常数据字典将模型中的数据信息分为参数、信号和常数:

  • 参数:一般情况下在仿真\运行过程中不变,可以根据需要标定的数据。(通常为需要手动设置的某些调试常量。)

  • 信号:模型中根级输入输出端口的变量,其值由系统计算得到。(通常只需要给定初始值和范围。)

  • 常数:指一些恒定不变的物理常量。(比如重力加速度、万有引力常数、圆周率等,通常生成常数或宏。)

同元国产化建模仿真与代码生成解决方案_第3张图片

图2-2 数据字典配置界面

在数据字典中,参数、信号、常数的表格结构类似,上图列表中各项目的含义如下:

  • Name:模型中参数的命名。

  • Alias:设置模型生成代码时对应参数的别名。

  • Description:对相应参数进行注释,包括功能描述等。

  • Initial Value\Value:设置该数据在模型中的初始值。

  • Dimensions:表示变量的维度,若变量为1维,通常情况下该栏为空。

  • Minimum:参数最小值。

  • Maximum:参数最大值。

  • Unit:参数单位。

  • data type:表示参数数据类型。有Int、Float、Bool三种类型以供选择,Auto为用户选择之前的默认值,用户根据需要手动选定类型。

  • storage type:表示存储类型。有Exported Global、Imported Extern、ImportedExternPointer三种类型以供选择,其中Exported Global表示生成内部定义的全局变量,Imported Extern表示导入外部定义的全局变量,ImportedExternPointer表示导入指向外部定义的全局变量的指针。

  • header file:将生成的变量指定到某个头文件中。

界面右侧的五个按键功能如下:

  • 新建字典:选定模型,并在选定模型基础上建立一个新的数据字典。

  • 导入字典:导入已完成的数据字典。

  • 批量绑定:自动提取端口信号和参数到选择面板,快速构建数据对象。

  • 新增:在数据字典中新增空行,用户可自定义配置。

  • 删除:删除选中行。

所有数据设置完毕后点击应用,代码生成工具将自动检测数据配置是否完备,若无错误点击“确定”即完成数据字典的建立。若存在错误可根据提示进行修改直至无误,下图为代码生成工具检测到某变量值未命名提示报错信息。

同元国产化建模仿真与代码生成解决方案_第4张图片

图2-3 代码生成工具检测到错误

2.3 代码生成

在保证模型正确,且已通过数据字典正确管理绑定数据后,使用代码生成工具对MWORKS.Sysplorer中建立的模型进行代码生成,具体操作如下图所示:

生成代码的文件组织方式有多种方案供选择,根据生成的文件数量和结构可以分为Modular型和Compact型。其中默认的是Compact型,设计人员可以根据模型生成代码后的集成习惯,选择代码生成文件组织形式。

同元国产化建模仿真与代码生成解决方案_第5张图片

同元国产化建模仿真与代码生成解决方案_第6张图片

图2-4 Modular型(上)和Compact型(下)

此外,MWORKS.Sysplorer代码生成工具还支持多种扩展功能:

数据类型替换

MWORKS.Sysplorer代码生成工具提供一套内置的数据类型别名。如果用户用自有的别名进行定义,可以开启数据类型替换,生成代码将采用用户别名。

同元国产化建模仿真与代码生成解决方案_第7张图片

同元国产化建模仿真与代码生成解决方案_第8张图片

图2-5 别名定义代码的数据类型替换功能开启与生成

标识符最大长度

代码生成工具中变量名最大长度默认为32字符。当模型mo文件结合内部命名规则命名使得标识符长度超过31字符时,代码在生成变量时模型命名将采取“前半部分字符+数字区分符+模型内部识别符号”规则构成新的模型名。例如名为modelletgonorth.mo的模型将被自动缩略为如下名称:

同元国产化建模仿真与代码生成解决方案_第9张图片

图2-6 识符过长时模型名缩略规则示例

标识符命名风格

代码生成工具中标识符命名风格支持下划线分割全大写、下划线分割全小写、小驼峰、大驼峰四种类型。标识符命名对象为未使用数据字典管理的内部变量、函数名等。

图2-7 下划线分割全大写

图2-8 下划线分割全小写

同元国产化建模仿真与代码生成解决方案_第10张图片

图2-9 小驼峰

同元国产化建模仿真与代码生成解决方案_第11张图片

图2-10 大驼峰

外部代码插入

代码生成配置窗口为用户提供插入自定义代码的功能。代码生成工具将代码文件分为include、macro、type、global_variable_declare、global_variable_define、function_declare、function_define七个段,每个段运行开始前和结束后、实例生成前和生成后用户可根据需要插入正确的代码。例如在function_declare函数声明段中的实例前、后加入自定义代码:

同元国产化建模仿真与代码生成解决方案_第12张图片

图2-11 在实例前后插入自定义代码

上述设置生成的代码为:

同元国产化建模仿真与代码生成解决方案_第13张图片

图2-12 生成代码效果

入口函数名自定义

在代码生成工具中用户可自定义入口函数名,若函数名为空则使用代码生成工具的默认名。

同元国产化建模仿真与代码生成解决方案_第14张图片

图2-13 用户自定义入口函数名

将设定的初始化函数名与Step函数名作用到生成代码中,如下图所示:

同元国产化建模仿真与代码生成解决方案_第15张图片

图2-14 生成代码的入口函数名

此外,用户可根据需要勾选“是否生成终止函数”生成终止函数,并在函数体中手写代码实现预期功能。例如,在实时仿真时间结束时用于数据管理与缓存清除。

代码保护

代码生成工具对生成代码进行代码保护,目前代码保护支持数据除零保护、数据溢出保护等。

同元国产化建模仿真与代码生成解决方案_第16张图片

图2-15 代码保护选项

代码保护效果如下图所示:

同元国产化建模仿真与代码生成解决方案_第17张图片

图2-16 数据除零保护

同元国产化建模仿真与代码生成解决方案_第18张图片

图2-17 数据溢出保护

2.4 一致性验证

代码生成工具能够实现快速制作控制器产品原型,并应用于通用嵌入式产品研发过程中,因此生成代码的运行结果与模型仿真结果的一致性验证变得极为重要。如下图所示,采用背靠背验证方案将MWORKS.Sysplorer中的模型仿真数据与MCU中的实物运行数据进行差分运算,得到运算结果趋近于零,说明生成代码的运行结果与模型仿真结果一致。

同元国产化建模仿真与代码生成解决方案_第19张图片

图2-18 MWORKS.Sysplorer模型仿真数据与MCU实物运行数据一致性验证

以PID控制建模仿真作为实例,进行一致性验证。下图为某工况下PID模块的应用:

同元国产化建模仿真与代码生成解决方案_第20张图片

同元国产化建模仿真与代码生成解决方案_第21张图片

图2-19 某工况下PID模块的应用

下图分别为某工况下PID模块的应用在MWORKS.Sysplorer中导出的仿真结果与生成代码在某嵌入式平台运行结果:

同元国产化建模仿真与代码生成解决方案_第22张图片

同元国产化建模仿真与代码生成解决方案_第23张图片

图2-20 MWORKS.Sysplorer导出仿真结果(上)和生成代码在某嵌入式平台运行结果(下)

示例结果显示,模型仿真数据与硬件平台中的实物运行数据结果一致。

2.5 支持多种操作系统

同元国产化建模仿真与代码生成解决方案支持多个实时硬件平台以及包括STM32、NXP、TI等多个半导体厂商的MCU平台,此外还支持多种操作系统,如Windows、VxWorks、Pharlap、Linux多种版本, 包括Redhat、CentOS等。

同元国产化建模仿真与代码生成解决方案_第24张图片

图2-21 支持的部分操作系统展示

同元国产化建模仿真与代码生成解决方案_第25张图片

3 案例介绍

本文使用树莓派小车执行智能避障功能作为同元国产化建模仿真与代码生成解决方案演示案例。

3.1 树莓派小车介绍

树莓派作为目前热门的开发板,受到广大电子爱好者的追捧。本案例选择某品牌的树莓派小车作为硬件载体,执行小车智能躲避障碍物的操作演示。

树莓派小车结构如下图所示,树莓派小车包含由两个直流电机带动的主动轮和一个钢珠作为从动轮。

同元国产化建模仿真与代码生成解决方案_第26张图片

图3-1 树莓派小车结构

在树莓派小车避障系统中,障碍检测模块作为传感器,判定前方是否有障碍物;树莓派作为控制器,接收障碍检测模块的信号,经过控制算法处理后对电机驱动模块发出指令;电机驱动模块作为执行器,根据指令实现小车转向避障。

同元国产化建模仿真与代码生成解决方案_第27张图片

图3-2 树莓派小车避障系统

其中,障碍检测模块设置在树莓派小车左右两边,由红外收发器和比较器组成。红外收发器中的红外发射管将检测方向遇到障碍物的信息发送至红外接收管,红外接收管作为半导体器件,将红外线光信号转变为电信号,随着红外光强度的增加电流也随之增大。由红外接收管输出的模拟信号,经过LM393比较器处理后输出为数字信号,同时绿色指示灯点亮。障碍检测模块通过读输出的逻辑电平,判定前方是否有障碍物。

同元国产化建模仿真与代码生成解决方案_第28张图片

图3-3 小车障碍检测模块

电机驱动模块由2个直流电机和6个驱动接口组成,其中驱动接口IN1和IN2连接小车左电机,IN3和IN4连接小车右电机及其他2个使能管脚。同时IN1、IN2、IN3和IN4可输出PWM脉冲来实现小车调速。

同元国产化建模仿真与代码生成解决方案_第29张图片

图3-4 电机驱动模块控制原理

3.2 流程概述

首先设置控制策略目标为:树莓派小车在前进途中遇到障碍物时,由树莓派接收障碍检测模块发出的障碍信号并做出避障决策,树莓派小车根据决策进行合理避障。根据嵌入式代码生成流程,对树莓派小车进行以下操作:

1.利用MWORKS.Sysplorer建立电机控制模型并设置前进、后退、转向三种状态。

2.建立状态机模型,其避障逻辑为:遇到障碍后,小车先后退再转向前进,从而达到避障目的。

3.使用数据字典对模型中的数据对象进行统一管理,并设定这些数据对象在生成代码中的表现形式。

4.使用代码生成工具对模型进行代码生成,将电机控制模型和状态机模型生成的代码相互集成。

5.将集成的代码烧写进树莓派小车中进行编译。

同元国产化建模仿真与代码生成解决方案_第30张图片

图3-5 基于MWORKS.Sysplorer建立电机控制模型

3.3 代码集成

按照上述流程进行代码生成,具体操作如下:

 

除了使用MWORKS.Sysplorer代码生成工具生成的代码外,用户也可以引入自定义代码。这是因为代码生成工具生成的是标准C代码,能够顺利地与其他标准C代码进行集成。

3.4 编译下载与执行

最后,将生成代码导入树莓派开发板,树莓派开发板根据提示修整代码进行gcc编译,完成编译后生成可执行文件。由树莓派小车在布置场地环境中执行小车智能躲避障碍物的功能操作,演示场景如下:

同元国产化建模仿真与代码生成解决方案_第31张图片

4 展望

如今控制器在家电领域的多样化需求及快速响应能力逐渐被重视,异地开发团队配合的默契度、对代码接口的一致性以及自动化部署等需求,都能在同元国产化建模仿真与代码生成解决方案中实现。此外,在低速车辆控制器、机器人控制等领域同元也在积极探索,实现合作与创新。同元致力于为客户提供多领域、多元化的同元国产化建模仿真与代码生成解决方案,持续提升国产化工业软件自主创新力,帮助实现装备制造业数字化转型升级。

你可能感兴趣的:(同元解决方案,modelica,算法,大数据,windows,制造)