| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 同元国产化建模仿真与代码生成解决方案 -> 正文阅读 |
|
[人工智能]同元国产化建模仿真与代码生成解决方案 |
1 基于模型设计的趋势现代工业系统信息域软件规模和复杂度大幅提升。以汽车为例,软件规模十年间膨胀十倍,传统基于“软件工程+文档+代码”的开发过程越来越难以适应产品快速迭代的需要。 模型驱动技术能够实现控制算法以及被控物理对象的全数字化抽象。在架构层面增加可读性,通过仿真在功能层面验证设计的正确性,在实施阶段自动生成代码,部署到实际控制器和多种实时仿真平台进行实时闭环验证。因此基于模型的设计方法(Model Based Design,简称MBD)被广泛应用于航空航天机载控制器、汽车电子、工业控制、机器人等嵌入式产品领域。 MBD具有以下特点: 1.层次化建模天然实现了“高内聚低耦合”的优良特性; 2.图形化系统建模便于统一设计规范,团队分工并行开发且集成便利,使得整体开发速度加快; 3.生成代码与模型一致性强,有效避免人为编码引入的Bug; 4.设计本身就是可执行的规格书,通过仿真在早期即可验证设计的正确性。 代码生成是基于模型设计控制器软件的核心环节,因此,自动生成代码可以说是使用基于模型设计工具的软件工程师最关注的功能。 2 同元国产化建模仿真与代码生成解决方案同元软控完全自主研发的多领域统一建模仿真软件MWORKS.Sysplorer及相关工具为大家提供了国产化建模仿真与代码生成解决方案。 同元国产化建模仿真与代码生成解决方案https://mp.weixin.qq.com/s/zFlVfVJRrFnVPgISSc3BwA 在同元国产化建模仿真与代码生成解决方案中,其代码生成流程包括模型建立、数据字典、代码生成与整合集成。如下图所示,首先利用MWORKS.Sysplorer进行模型设计,该设计过程涵盖了模型开闭环仿真与验证;其次使用数据字典对模型中的数据对象进行统一管理;接着使用代码生成工具进行嵌入式控制器代码的自动生成;最后将生成的代码集成到运行目标环境中。 图2-1?代码生成流程 2.1 模型建立MWORKS.Sysplorer支持工业设计知识的模型化表达和模块化封装、系统的物理集成、系统状态方程的自动推导、控制策略嵌入式C代码的自动生成及参数分析与优化等功能。在同元国产化建模仿真与代码生成解决方案中,使用MWORKS.Sysplorer进行模型建立与设计。 ? 2.2 数据字典数据字典可以对模型中的数据对象进行统一管理,并规定这些数据对象在生成代码中的表现形式,使所建立的模型能够高效地转换为可读性高的嵌入式通用C代码,便于用户集成到自己的目标硬件上执行。 数据字典的应用提供三点便捷:
此外,数据字典还能够自动完成模型中数据信息的分类。通常数据字典将模型中的数据信息分为参数、信号和常数:
图2-2?数据字典配置界面 在数据字典中,参数、信号、常数的表格结构类似,上图列表中各项目的含义如下:
界面右侧的五个按键功能如下:
所有数据设置完毕后点击应用,代码生成工具将自动检测数据配置是否完备,若无错误点击“确定”即完成数据字典的建立。若存在错误可根据提示进行修改直至无误,下图为代码生成工具检测到某变量值未命名提示报错信息。 图2-3 代码生成工具检测到错误 2.3 代码生成在保证模型正确,且已通过数据字典正确管理绑定数据后,使用代码生成工具对MWORKS.Sysplorer中建立的模型进行代码生成,具体操作如下图所示: 生成代码的文件组织方式有多种方案供选择,根据生成的文件数量和结构可以分为Modular型和Compact型。其中默认的是Compact型,设计人员可以根据模型生成代码后的集成习惯,选择代码生成文件组织形式。 图2-4?Modular型(上)和Compact型(下) 此外,MWORKS.Sysplorer代码生成工具还支持多种扩展功能:
MWORKS.Sysplorer代码生成工具提供一套内置的数据类型别名。如果用户用自有的别名进行定义,可以开启数据类型替换,生成代码将采用用户别名。 图2-5?别名定义代码的数据类型替换功能开启与生成
代码生成工具中变量名最大长度默认为32字符。当模型mo文件结合内部命名规则命名使得标识符长度超过31字符时,代码在生成变量时模型命名将采取“前半部分字符+数字区分符+模型内部识别符号”规则构成新的模型名。例如名为modelletgonorth.mo的模型将被自动缩略为如下名称: 图2-6?识符过长时模型名缩略规则示例
代码生成工具中标识符命名风格支持下划线分割全大写、下划线分割全小写、小驼峰、大驼峰四种类型。标识符命名对象为未使用数据字典管理的内部变量、函数名等。 图2-7 下划线分割全大写 图2-8?下划线分割全小写 图2-9?小驼峰 图2-10?大驼峰
代码生成配置窗口为用户提供插入自定义代码的功能。代码生成工具将代码文件分为include、macro、type、global_variable_declare、global_variable_define、function_declare、function_define七个段,每个段运行开始前和结束后、实例生成前和生成后用户可根据需要插入正确的代码。例如在function_declare函数声明段中的实例前、后加入自定义代码: 图2-11?在实例前后插入自定义代码 上述设置生成的代码为: 图2-12?生成代码效果
在代码生成工具中用户可自定义入口函数名,若函数名为空则使用代码生成工具的默认名。 图2-13?用户自定义入口函数名 将设定的初始化函数名与Step函数名作用到生成代码中,如下图所示: 图2-14?生成代码的入口函数名 此外,用户可根据需要勾选“是否生成终止函数”生成终止函数,并在函数体中手写代码实现预期功能。例如,在实时仿真时间结束时用于数据管理与缓存清除。
代码生成工具对生成代码进行代码保护,目前代码保护支持数据除零保护、数据溢出保护等。 图2-15?代码保护选项 代码保护效果如下图所示: 图2-16?数据除零保护 图2-17?数据溢出保护 2.4 一致性验证代码生成工具能够实现快速制作控制器产品原型,并应用于通用嵌入式产品研发过程中,因此生成代码的运行结果与模型仿真结果的一致性验证变得极为重要。如下图所示,采用背靠背验证方案将MWORKS.Sysplorer中的模型仿真数据与MCU中的实物运行数据进行差分运算,得到运算结果趋近于零,说明生成代码的运行结果与模型仿真结果一致。 图2-18?MWORKS.Sysplorer模型仿真数据与MCU实物运行数据一致性验证 以PID控制建模仿真作为实例,进行一致性验证。下图为某工况下PID模块的应用: 图2-19?某工况下PID模块的应用 下图分别为某工况下PID模块的应用在MWORKS.Sysplorer中导出的仿真结果与生成代码在某嵌入式平台运行结果: 图2-20?MWORKS.Sysplorer导出仿真结果(上)和生成代码在某嵌入式平台运行结果(下) 示例结果显示,模型仿真数据与硬件平台中的实物运行数据结果一致。 2.5 支持多种操作系统同元国产化建模仿真与代码生成解决方案支持多个实时硬件平台以及包括STM32、NXP、TI等多个半导体厂商的MCU平台,此外还支持多种操作系统,如Windows、VxWorks、Pharlap、Linux多种版本, 包括Redhat、CentOS等。 图2-21?支持的部分操作系统展示 3 案例介绍本文使用树莓派小车执行智能避障功能作为同元国产化建模仿真与代码生成解决方案演示案例。 3.1 树莓派小车介绍树莓派作为目前热门的开发板,受到广大电子爱好者的追捧。本案例选择某品牌的树莓派小车作为硬件载体,执行小车智能躲避障碍物的操作演示。 树莓派小车结构如下图所示,树莓派小车包含由两个直流电机带动的主动轮和一个钢珠作为从动轮。 图3-1?树莓派小车结构 在树莓派小车避障系统中,障碍检测模块作为传感器,判定前方是否有障碍物;树莓派作为控制器,接收障碍检测模块的信号,经过控制算法处理后对电机驱动模块发出指令;电机驱动模块作为执行器,根据指令实现小车转向避障。 图3-2?树莓派小车避障系统 其中,障碍检测模块设置在树莓派小车左右两边,由红外收发器和比较器组成。红外收发器中的红外发射管将检测方向遇到障碍物的信息发送至红外接收管,红外接收管作为半导体器件,将红外线光信号转变为电信号,随着红外光强度的增加电流也随之增大。由红外接收管输出的模拟信号,经过LM393比较器处理后输出为数字信号,同时绿色指示灯点亮。障碍检测模块通过读输出的逻辑电平,判定前方是否有障碍物。 图3-3?小车障碍检测模块 电机驱动模块由2个直流电机和6个驱动接口组成,其中驱动接口IN1和IN2连接小车左电机,IN3和IN4连接小车右电机及其他2个使能管脚。同时IN1、IN2、IN3和IN4可输出PWM脉冲来实现小车调速。 图3-4?电机驱动模块控制原理 3.2 流程概述首先设置控制策略目标为:树莓派小车在前进途中遇到障碍物时,由树莓派接收障碍检测模块发出的障碍信号并做出避障决策,树莓派小车根据决策进行合理避障。根据嵌入式代码生成流程,对树莓派小车进行以下操作: 1.利用MWORKS.Sysplorer建立电机控制模型并设置前进、后退、转向三种状态。 2.建立状态机模型,其避障逻辑为:遇到障碍后,小车先后退再转向前进,从而达到避障目的。 3.使用数据字典对模型中的数据对象进行统一管理,并设定这些数据对象在生成代码中的表现形式。 4.使用代码生成工具对模型进行代码生成,将电机控制模型和状态机模型生成的代码相互集成。 5.将集成的代码烧写进树莓派小车中进行编译。 图3-5?基于MWORKS.Sysplorer建立电机控制模型 3.3 代码集成按照上述流程进行代码生成,具体操作如下: ? 除了使用MWORKS.Sysplorer代码生成工具生成的代码外,用户也可以引入自定义代码。这是因为代码生成工具生成的是标准C代码,能够顺利地与其他标准C代码进行集成。 3.4 编译下载与执行最后,将生成代码导入树莓派开发板,树莓派开发板根据提示修整代码进行gcc编译,完成编译后生成可执行文件。由树莓派小车在布置场地环境中执行小车智能躲避障碍物的功能操作,演示场景如下: 4 展望如今控制器在家电领域的多样化需求及快速响应能力逐渐被重视,异地开发团队配合的默契度、对代码接口的一致性以及自动化部署等需求,都能在同元国产化建模仿真与代码生成解决方案中实现。此外,在低速车辆控制器、机器人控制等领域同元也在积极探索,实现合作与创新。同元致力于为客户提供多领域、多元化的同元国产化建模仿真与代码生成解决方案,持续提升国产化工业软件自主创新力,帮助实现装备制造业数字化转型升级。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 16:43:33- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |