汽车电子笔记之:基于AUTOSAR的电机控制器架构设计

news2025/1/23 15:08:07

目录

1、概述

2、AUTOSAR设计

2.1、SWC设计

2.2、PORT设计

2.3、Runnable设计

2.4、电机控制器OS实现


1、概述

        电机控制器应用层的软件架构较为复杂,主要包括PMSM(Permanent-MagnetSynchronous Motor)的矢量控制算法。根据PMSM的控制算法,对算法中的软件功能进行分析,将其划分为若干个软件模块,即可得到电机控制器的软件架构,并按照上述方法创建软件架构所需使用的各个软件组件。几个主要的软件组件及其功能见下表。

         根据所设计的电机控制器的功能,完成各个软件组件之间通信端口的设计,将各个软件组件连接起来,即可得到软件架构,如下图所示。这里的软件架构只是一个框架,对控制器算法的功能模块进行了划分,对其软件组件之间的通信内容进行了定义,但是软件组件内部并没有具体的功能。电机控制器的软件架构通过DaVinci Developer工具进行设计配置;在进行设计时,首先需要明确每个软件模块的功能作用选择合适的软件组件类型;而由于软件组件之间需要进行通信,因此需要给软件组件添加合适的通信端口,明确是S/R 还是 C/S端口,或是其他类型的端口,以及通信使用的数据类型;而最后需要对每个软件组件进行相关的功能设计,创建软件的功能实现最小单元--Runnable,实现电机控制器的预期功能。

 设计步骤

2、AUTOSAR设计

2.1、SWC设计

        在DaVinci Developer中,提供了一个库(Library),库中包含各种应用组件类型、数据类型、通信端口和常量等设计软件架构所需的元素。在Application Component Types上右击,即可创建软件组件,如下图所示。

         软件组件主要有Composition(组合)和Atomic(原子)两种类型,这是AUTOSAR规范中规定的软件组件类型。Composition是一个逻辑上的集合,可以将某些以实现特定功能的联系较为紧密软件组件放入同一个Composition中,便于开发。Atomic类型的软件组件又可分为如下图所示的几种类型,其中,Application用于应用软件算法的执行,SensorActuator主要用于传感器和执行器相关功能的软件,这两种类型的软件组件足以应付大部分的使用场景。

2.2、PORT设计

         由于各个软件组件之间要进行数据的交互,因此需要对这些软件组件进行通信端口(Port)的设计。在之前所示的库中,右击Application Port Interfaces,可以新建 S/R 端口接口。以用于电流控制的软件组件MDCC的发送端口为例,在Interface中,可以新建多个数据元素(Data Element),如下图所示。需要注意每个数据元素都要有相应的数据类型。

         当为软件组件添加通信端口时,所添加的端口为 Port Prototype,是以 Port Interface 为模板创建的。在软件组件上右击,即可新建端口,如下图所示。点击新建发送端口(SenderPrototype),会弹出如下下图所示的对话框,列出了所有的Interface,在这里选择相应的Interface,即可完成端口和接口的关联。

2.3、Runnable设计

        为了实现软件组件具体的功能,需要向其中分配功能实现的最小单元——可运行实体,也即Runnable,Runnable需要被映射到操作系统的Task中。点击软件组件,在中间的运行实体列表处即可进行 Runnable 的配置,如下图所示。

         Runnable 由 RTE事件触发,其触发形式有多种,例如初始化触发、周期事件、数据收发相关事件和操作调用事件等,如下图所示。常用的为周期与初始化Runnable。

         软件组件MDCC用于电流闭环控制,其中的Runnable 为 DoCurCtr,该 Runnable 的功能为计算出控制电压,得到三相导通时间,需要每100 us(PWM周期)触发一次,因此选择周期性触发。下表中列出了电机控制器软件架构中部分软件组件所包含的一些运行实体名称及其对应功能。MDFM为故障管理相关模块,包含母线电压过压和欠压判断、电机超速、过温判断等Runnable。

2.4、电机控制器OS实现

         在 DaVinci Configurator中,可以进行电机控制器基础软件部分的配置,包括 OS、通信等。由于本例 PMSM控制算法中的运行实体繁多,因篇幅所限,本节只简要阐述 OSApplication, Task的特性以及它们与各Runnable之间的相互关系。下图所示为与整个OS相关的通用属性,包括其可剪裁类、硬件所使用的CPU数量、调度类型是非抢占抑或全抢占、编译器类型,以及一些API函数。本例中,使用SC3的操作系统,且单片机的 CPU数量为 3(TC275)。

        在OS的钩子函数(Hook Routines)配置界面下图中,可以使能操作系统所需的一些Hook函数。其中,Startup Hook程序在操作系统的启动阶段被调用,也即在调用StartOS()之后和启动第一个任务之前;当操作系统中的函数返回的错误码不为 E_OK或者操作系统内部错误被检测时,Error Hook被调用;而Shutdown Hook在调用ShutdownOS()期间被调用。

         Protection Hook 在出现保护错误时被调用,如果将 SHUTDOWM 使能,则 ProtectionHook 会返回一个PRO_SHUTDOWN在OS Configuration配置界面,右击OS Applications,选择“Add”,可以添加OS Application,如下图所示。每个OS Application有各自的任务、中断、Alarm、计数器和调度表。由于该操作系统运行在三核的TC275上,因此需要通过Core Assignment来将该OSApplication与CPU关联。如果此OS Application是受信任的,则需要使能Trusted选项。

         在某个特定的OS Application下,右击Task,可以进行任务的创建。操作系统中任务的相关属性包括其调度方式(非抢占/全抢占)、优先级、任务类型(基本任务/扩展任务)、堆栈大小以及是否自启动等。以空闲任务Idle Task为例,具体内容如下图所示。

         如果任务的调度方式为全抢占式,那么,较低优先级的任务在运行状态下,若较高优先级的任务被激活,则调度程序将调度较高优先级的任务运行。任务堆栈大小的设置需要考虑该任务的复杂情况,确保不会溢出。空闲任务是AUTOSAR操作系统中规定的,每个OS Application都需要有一个空闲任务,该类型任务的优先级最低,且需要使能Task is Idle Task此时,OS Application和Task的基本框架已经搭建完毕,但是,Task中没有具体的任务代码。因此,需要将Runnable添加到相关的Task 中,如下图所示。

 至此,完成了电机控制器操作系统的实现,具体的任务分配如下列三图所示。

        至此 完成了电机控制器应用层软件架构配置和基础软件层的配置,接下来就是生成相应代码集成到编译器中。集成完代码后生成可执行文件,烧录到相应的硬件平台中,电机控制器的软件也就完成了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/942617.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux 多线程同步机制(上)

文章目录 前言一、线程同步二、互斥量 mutex三、死锁总结 前言 一、线程同步 在多线程环境下,多个线程可以并发地执行,访问共享资源(如内存变量、文件、网络连接 等)。 这可能导致 数据不一致性, 死锁, 竞争条件等 问题。 为了解…

【LeetCode-中等题】138. 复制带随机指针的链表

文章目录 题目解题核心思路:找random指针指向思路一:哈希思路二:迭代构造新链表 方法一:哈希递归方法二:纯哈希方法三:迭代 节点拆分 题目 解题核心思路:找random指针指向 这里的拷贝属于深拷…

Leetcode刷题:395. 至少有 K 个重复字符的最长子串、823. 带因子的二叉树

Leetcode刷题:395. 至少有 K 个重复字符的最长子串、823. 带因子的二叉树 1. 395. 至少有 K 个重复字符的最长子串算法思路参考代码和运行结果 2. 823. 带因子的二叉树算法思路参考代码和运行结果 1. 395. 至少有 K 个重复字符的最长子串 题目难度:中等 标签&#…

lenovo联想笔记本小新Air-15 2021款Intel版ITL版(82GM)原装出厂Win10系统

自带所有驱动、出厂主题壁纸LOGO、Office办公软件、联想电脑管家等预装程序 所需要工具:16G或以上的U盘 文件格式:ISO 文件大小:11.2GB 链接:https://pan.baidu.com/s/12NTMOt5eUjOIsbayXPyiww?pwdrs4v 提取码&#xf…

基于单片机的数字温度计设计

一、项目背景 数字温度计是一种用于测量和显示环境温度的设备。本文章介绍基于STC89C52主控芯片的数字温度计的设计过程和实现原理。该设计采用DS18B20温度传感器进行温度采集,使用LCD1602显示屏进行温度显示,通过按键设置温度的上限和下限阀值&#xf…

点云配准算法之NDT

1 前言 很久之前记录了一篇博客PCL点云配准_thequitesunshine007的博客-CSDN博客 ,记录的是基于点特征(FPFH特征描述子)匹配的SAC-ICP点云配准思想。 今天记录一下完全不一样的点云配准方法NDT。 2 介绍 2.1 多元正态分布 如果随机变量X满…

Servlet与Web容器的初探

Servlet 是用Java编写的服务端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。 Servlet也需要帮助。请求到来时,必须有人实例化Servlet,或者至少要建立一个新的线程处理这个请…

js 正则表达式 验证 :页面中一个输入框,可输入1个或多个vid/pid,使用英文逗号隔开...

就是意思一个输入框里面&#xff0c;按VID/PID格式输入,VID和PID最大长度是4,最多50组 1、页面代码 <el-form ref"ruleForm" :model"tempSet" :rules"rules" label-position"right"> <!-- 最多 50组&#xff0c;每组9个字符…

RT_Thread内核机制学习(三)进程间通信

队列 队列里有多个消息块&#xff0c;每个消息块大小一致。 写&#xff1a; 有空间&#xff0c;成功。无空间&#xff1a;返回Err&#xff1b;等待一段时间。 队列里面会有两个链表&#xff1a;发送链表和接收链表 struct rt_messagequeue {struct rt_ipc_object parent; …

ChatGPT Prompting开发实战(二)

一、基于LangChain源码react来解析prompt engineering 在LangChain源码中一个特别重要的部分就是react&#xff0c;它的基本概念是&#xff0c;LLM在推理时会产生很多中间步骤而不是直接产生结果&#xff0c;这些中间步骤可以被用来与外界进行交互&#xff0c;然后产生new con…

C#,数值计算——双指数DE (double exponential)结构的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// Structure for implementing the DE (double exponential) rule. /// </summary> public class DErule : Quadrature { private double a { get; set; …

基于SpringBoot的员工(人事)管理系统

基于SpringBoot的员工&#xff08;人事&#xff09;管理系统 一、系统介绍二、功能展示三.其他系统实现五.获取源码 一、系统介绍 项目名称&#xff1a;基于SPringBoot的员工管理系统 项目架构&#xff1a;B/S架构 开发语言&#xff1a;Java语言 前端技术&#xff1a;BootS…

【Spring Cloud系列】- 分布式系统中实现幂等性的几种方式

【Spring Cloud系列】- 分布式系统中实现幂等性的几种方式 文章目录 【Spring Cloud系列】- 分布式系统中实现幂等性的几种方式一、概述二、什么是幂等性三、幂等性需关注几个重点四、幂等性有什么用五、常见用来保证幂等的手段5.1 MVCC方案5.2 去重表5.3 去重表5.4 select in…

5G 数字乡村数字农业农村大数据中心项目农业大数据建设方案PPT

导读&#xff1a;原文《5G 数字乡村数字农业农村大数据中心项目农业大数据建设方案PPT》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。以下是部分内容&#xff0c; 喜…

市级数字政府电子政务大数据中心项目建设和运营方案WORD

导读&#xff1a;原文《市级数字政府电子政务大数据中心项目建设和运营方案WORD》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。以下是部分内容&#xff0c; 目 录 …

5、监测数据采集物联网应用开发步骤(5.1)

监测数据采集物联网应用开发步骤(4) Sqlite3数据库读写操作开发、异常信息统一处理类开发 本章节需要调用sqlite3及mysql-connector 安装sqlite3 Pip3 install sqlite3 安装mysql-connector pip3 install mysql-connector 验证是否安装成功&#xff0c;python中运行下列…

Unity网格编程笔记[十]一些网格基础操作的封装(Mesh合并,UV映射,正反面反转,顶点合并,法线求切线计算等)

这里的代码是在 Unity网格编程笔记[五]网格切割 中整合出来的。 这里的mesh可以直接接入到使用mesh的unity组件 一些基础的属性还是要参考 Unity网格编程笔记[零]网格编程基础知识点 Mesh合并 网格的合并&#xff0c;其实底层也没那么复杂。对于三角面&#xff0c;只是顺序…

LiveGBS伴侣

【1】LiveGBS 简介 LiveGBS是一套支持国标(GB28181)流媒体服务软件。 国标无插件;提供用户管理及Web可视化页面管理&#xff1b; 提供设备状态管理&#xff0c;可实时查看设备是否掉线等信息&#xff1b; 实时流媒体处理&#xff0c;PS&#xff08;TS&#xff09;转ES&…

python的安装(推荐)

torch安装与卸载推荐链接1推荐链接2 推荐链接3 安装pytorch步骤推荐链接 python关键字&#xff1a;

19.CSS雨云动画特效

效果 源码 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Cloud & Rain Animation</title><link rel="stylesheet" href="style.css"> </head> <bo…