Autosar PRport 在Simulink中的使用

文章目录

    • 前言
    • 模型及Autosar接口配置
      • Autosar接口
      • 模型接口
    • 生成代码分析
    • 总结

前言

在之前使用Simulink开发Autosar模型时,大部分使用的RTE接口都是Sender or Receiver接口。但如果是对于那些具有存储需求的接口来说,一个sender接口需要有另外一个receiver接口来对应,会导致接口数量增加。其实,在Autosar定义中有这种需求的对应处理,即定义为PR-ports(Provide Require Ports需求提供端口)。本文介绍Simulink中定义该类型的接口及使用。

模型及Autosar接口配置

Autosar接口

建立Interface
image
建立SenderReceiverPorts

image

模型接口

建立一个Input,mapping到刚刚建立好的Autosar RTE接口上
image
建立一个Output,同样mapping到刚刚建立的Autosar RTE接口上
image
此处我们只使用了一个PR-Port,实现了输入输出的两个接口

简单处理Runnable中的逻辑,将输入加1,传递给输出。(demo演示用)

生成代码分析

主函数调用了Read接口和Write接口(此处为Explicit类型),对应了一个RTE Port


/* Model step function for TID1 */
void RunnableTest_10ms(void)           /* Explicit Task: RunnableTest_10ms */
{uint8 rtb_TmpSignalConversionAtReceiv;/* RootInportFunctionCallGenerator generated from: '<Root>/RunnableTest_10ms' incorporates:*  SubSystem: '<Root>/RunnableTest_10ms_call'*//* SignalConversion generated from: '<S1>/ReceiverPort' incorporates:*  Inport: '<Root>/ReceiverPort'*/(void)Rte_Read_PRportTest_Val(&rtb_TmpSignalConversionAtReceiv);/* Outport: '<Root>/SenderPort' incorporates:*  Constant: '<S1>/Constant'*  Sum: '<S1>/Sum'*/(void)Rte_Write_PRportTest_Val((uint8)(rtb_TmpSignalConversionAtReceiv + 1U));/* End of Outputs for RootInportFunctionCallGenerator generated from: '<Root>/RunnableTest_10ms' */
}

Simulink生成的模板RTE(Rte_xx.h)文件定义如下:


/* Data access functions */
#define Rte_Read_PRportTest_Val        Rte_Read_RTERunnable_PRportTest_ValStd_ReturnType Rte_Read_PRportTest_Val(UInt8* u);#define Rte_Write_PRportTest_Val       Rte_Write_RTERunnable_PRportTest_ValStd_ReturnType Rte_Write_PRportTest_Val(UInt8 u);

此处Interface都对应的PRportTest

在Autosar工具中查看生成的Arxml文件:
image
image
之后通过Autosar工具将RTE接口map到相对应的PR-port即可。

总结

使用PR-port不会减少应用层的输入输出端口个数,只是减少了一个RTE Port。但看起来会更加直观一些。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

list列表可编辑状态

有时候list需要修改或选择属性,mfc自带的只能显示内容,基本上是不可以修改,为了实现这个功能需求,需要完成一下步骤转换. 第一步记录选择的单元格. 第二步创建一个编辑框CComboBox对象, 设置字体,窗口属性. 第三步获取选中单元格的位置信息. 第四步获取单元格内容信息. 第五步…

SpringMVC下半篇之整合ssm

4.ssm整合 4.1.创建表 CREATE TABLE account (id int(11) NOT NULL AUTO_INCREMENT,name varchar(20) DEFAULT NULL,money double DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8;4.2.创建工程 4.3.pom.xml <?xml version"1.0" encoding&…

Redis 消息队列和发布订阅

文章目录 基本模式生产者消费者原理&模型redis实现java实现 发布者订阅者原理&模型redis实现java实现 stream模式原理&模型工作原理redis实现Java实现 选型外传 基本模式 采用redis 三种方案&#xff1a; ● 生产者消费者&#xff1a;一个消息只能有一个消费者 ●…

2024.1.20 模拟赛总结

2024.1.20 模拟赛总结 总结时间安排考试结果考试总结 题解T1T2T3T4 总结 时间安排 8 : 00 ∼ 10 : 00 \qquad 8:00\sim 10:00 8:00∼10:00 开 T 1 T1 T1。第一眼看上去并没有明确的思路&#xff0c;简单想了想发现可以直接贪心走&#xff0c;不过好像有点小细节。推了推细节发…

图像分类 | 基于 Labelme 数据集和 VGG16 预训练模型实现迁移学习

Hi&#xff0c;大家好&#xff0c;我是源于花海。本文主要使用数据标注工具 Labelme 对自行车&#xff08;bike&#xff09;和摩托车&#xff08;motorcycle&#xff09;这两种训练样本进行标注&#xff0c;使用预训练模型 VGG16 作为卷积基&#xff0c;并在其之上添加了全连接…

AI绘画Stable Diffusion进阶使用

本文讲解&#xff0c;模型底模&#xff0c;VAE美化模型&#xff0c;Lora模型&#xff0c;hypernetwork。 文本Stable Diffusion 简称sd 欢迎关注 使用模型 C站&#xff1a;https://civitai.com/ huggingface&#xff1a;https://huggingface.co/models?pipeline_tagtext-to-…

细说JavaScript事件处理(JavaScript事件处理详解)

js语言的一个特色和就是它的动态性&#xff0c;即一时间驱动的方式对用户输入作出反应而不需要依赖服务器端程序。事件是指人机交互的结果&#xff0c;如鼠标移动、点击按钮、在表单中输入数据或载入新的Web洁面等。 一、什么是事件 1、事件类型 1.1、事件源 1.2、事件处理…

k8s-ingress一

Comfigmap&#xff1a;存储数据 Date&#xff1a; Key&#xff1a;value 挂载的方式&#xff0c;把配置信息传给容器 生产当中的yml文件很长&#xff1a; 有deployment 容器的探针 资源限制 Configmap 存储卷 Service Ingress K8s的对外服务&#xff0c;ingress Se…

YOLOv8算法改进【NO.99】引入最新发布Deformable Convolution v4 (DCNv4)

前 言 YOLO算法改进系列出到这&#xff0c;很多朋友问改进如何选择是最佳的&#xff0c;下面我就根据个人多年的写作发文章以及指导发文章的经验来看&#xff0c;按照优先顺序进行排序讲解YOLO算法改进方法的顺序选择。具体有需求的同学可以私信我沟通&#xff1a; 第一…

C++ mapset

目录 相关知识介绍&#xff1a; 一、set 1、set的介绍 2、set的使用 1. set的模板参数列表 2. set的构造 3. set的迭代器 4. set的容量 5. set修改操作 6. 举例演示 二、multiset 1、multiset的介绍 2、multiset的使用 三、map 1、map的介绍 2、map的使用 1.…

基于SpringBoot Vue家政服务预约平台系统

大家好✌&#xff01;我是Dwzun。很高兴你能来阅读我&#xff0c;我会陆续更新Java后端、前端、数据库、项目案例等相关知识点总结&#xff0c;还为大家分享优质的实战项目&#xff0c;本人在Java项目开发领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#x…

UE5 C++ Slate独立程序的打包方法

在源码版安装目录内找到已编译通过的xxx.exe&#xff0c;&#xff08;\Engine\Binaries\Win64\xxx.exe)&#xff0c;在需要的位置新建文件夹&#xff0c;拷贝源码版Engine内的Binaries、Content、Shaders文件夹到目标文件夹内&#xff0c;将xxx.exe放入对应位置&#xff0c;删除…