主要内容

配置AUTOSAR排队Sender-Receiver沟通

AUTOSAR sender-receiver排队(因此)沟通,AUTOSAR软件组件读取和写入数据到其他组件或服务。AUTOSAR发送方所发送的数据软件组件添加到队列AUTOSAR提供的运行时环境(RTE)。新收到的数据不会覆盖现有的未读数据。后,接收器软件组件从队列中读取数据。

实现排队因此沟通,AUTOSAR软件组件定义:

  • AUTOSAR sender-receiver接口与数据元素。

  • AUTOSAR提供和需要发送和接收队列数据端口。

在仿真金宝app软件®,您可以:

  1. 创建AUTOSAR排队因此接口和端口使用AUTOSAR字典。

  2. 模型AUTOSAR提供,需要港口通过使用仿真软件根级外港和港口。金宝app

  3. 地图输出港,港口AUTOSAR提供和要求港口通过使用映射编辑器的代码。AUTOSAR数据访问模式QueuedExplicitSendQueuedExplicitReceive

使用一个队列发送和接收AUTOSAR建模数据,使用仿真软件金宝app发送收到块。如果你排队因此通信实现涉及国家或需要决策逻辑,使用Stateflow®图表。你可以处理错误时队列是空的呢,还是满的。您可以指定队列的大小。有关更多信息,请参见金宝app仿真软件信息概述

你可以模拟AUTOSAR排队sender-receiver(因此)之间的通信组件模型,例如,在一个composition-level模拟。数据发送方和接收方可以运行在不同的利率。多个数据发送方可以与单个数据通信接收机。

开始,你可以用排队因此导入组件接口和端口从ARXML文件到仿真软件,或使用仿真软件来创建接口和端口。金宝app

金宝app工作流建模AUTOSAR队列发送和接收

这个过程概述了通用工作流建模AUTOSAR排队发送方和接收方在仿真软件组件。金宝app

  1. 配置一个或多个模型作为AUTOSAR排队发送方组件,和一个模型作为AUTOSAR排队接收机组件。对于每一个组件模型,使用AUTOSAR字典和代码映射编辑器:

    1. 创建一个因此数据接口和数据元素。

    2. 创建一个发送方或接收方端口。

    3. 发送方或接收方的端口映射到仿真软件外港发送或接收的轮廓尺寸。金宝appAUTOSAR的数据访问模式QueuedExplicitSendQueuedExplicitReceive

    例如,请参见为排队通信配置AUTOSAR发送方和接收方组件

  2. 实现AUTOSAR排队发送方或接收方组件行为,使用仿真软件金宝app发送收到块。有关更多信息,请参见金宝app仿真软件信息概述

    如果你排队因此通信实现涉及国家或需要决策逻辑,使用Stateflow图表。

    有关更多信息,请参见实现AUTOSAR队列发送和接收消息

  3. 当你建立一个AUTOSAR排队发送方或接收方组件模型:

    • 生成C代码包含对AUTOSAR的调用Rte_Send_ <口> _ < DataElement >Rte_Receive_ <口> _ < DataElement >api。

      生成的代码处理消息的状态接电话。

      处理消息发送状态(如队列溢出)只能在Stateflow建模。生成的代码处理消息发送状态只有一个排队发送方组件实现Stateflow逻辑。

    • 为排队sender-receiver ARXML导出文件包含描述通信。生成的全路径名排队的港口包括端口类型和队列长度(基于模型的信息财产金宝appQueueCapacity)。在SwDataDefProps生成的排队端口数据元素,SwImplPolicy被设置为排队

  4. 在仿真软件模拟AUTOSAR排队sender-receiver沟通,创建一个包含组成,系统,或利用模型。金宝app包括发送方和接收方排队组件引用的模型。

  5. 提供队列发送方和接收方之间的逻辑组件,您可以插入一个仿真软件金宝app队列块或Stateflow逻辑。与一个队列块,可以模拟一个队列与特定的能力。如果你直接连接发送方和接收方组件,仿真软件插入一个默认队列容量1。金宝app

    直接连接组件的一个例子,看到一对一的组合模型中使用配置模拟AUTOSAR排队Sender-Receiver沟通

    对于插入的例子队列块或Stateflow发送方和接收方之间的逻辑组件,明白了模拟n对AUTOSAR排队Sender-Receiver沟通模拟事件驱动AUTOSAR排队Sender-Receiver沟通

为排队通信配置AUTOSAR发送方和接收方组件

这个示例配置AUTOSAR排队发送方和接收方在仿真软件组件。金宝app看到这些模型模拟连接,看到的配置模拟AUTOSAR排队Sender-Receiver沟通

openExample (“mAutosarSlSenderSWC1”)openExample (“mAutosarSlReceiverSWC”)

打开一个AUTOSAR模型,你想配置作为发送方或接收方排队组件。创建一个因此数据接口和一个排队发送方或接收方端口:

  1. 打开AUTOSAR字典。

  2. 选择因此接口。创建一个数据接口,因此单击添加按钮。指定名称和相关的数量因此数据元素。下面的例子使用一个数据元素在发送方和接收方的组件。

  3. 选择和扩大新的因此界面。选择DataElements和修改数据元素的属性。这个图显示了数据元素DE1发送方的组件。

  4. 扩大AtomicComponents节点并选择一个AUTOSAR组件。扩展组件。

  5. 选择SenderPortsReceiverPorts查看和使用它来添加您需要发送方或接收方的端口。对于每个因此端口,因此选择您创建的接口。发送方组件,这图中显示发送端口MsgOut,因此接口着干活

  6. 打开代码映射编辑器。选择港口外港选项卡并使用它来映射模型尺寸或外港AUTOSAR金宝app因此港口排队。每个尺寸或外港,选择一个AUTOSAR端口、数据元素、数据访问模式。AUTOSAR的数据访问模式QueuedExplicitSendQueuedExplicitReceive。在发送方组件,这图中显示仿真软件输出港金宝appMsgOut,这是映射到AUTOSAR发送端口MsgOut和数据元素DE1,数据访问模式QueuedExplicitSend

    当你地图AUTOSAR排队接收机端口的尺寸,您可以使用代码映射或AUTOSAR的字典视图端口修改其AUTOSAR通信规范(全路径名)属性QueueLength。选择尺寸代码映射和点击图标或打开AUTOSAR字典。有关更多信息,请参见配置AUTOSAR Sender-Receiver端口全路径名

当你建立一个AUTOSAR排队发送方或接收方组件模型:

  • 生成C代码包含对AUTOSAR的调用Rte_Send_ <口> _ < DataElement >Rte_Receive_ <口> _ < DataElement >api。生成的代码处理的状态消息发送和接收电话。

  • 为排队sender-receiver ARXML导出文件包含描述通信。生成的全路径名排队的港口包括端口类型和队列长度(基于模型的信息财产金宝appQueueCapacity)。在SwDataDefProps生成的排队端口数据元素,SwImplPolicy被设置为排队

实现消息传递行为的AUTOSAR排队发送方或接收方组件,使用仿真软件或Stateflow消息。金宝app看到实现AUTOSAR队列发送和接收消息实现AUTOSAR排队使用Stateflow消息发送和接收

实现AUTOSAR队列发送和接收消息

AUTOSAR建模排队发送方和接收方组件行为,这个示例使用:

  • 金宝app仿真软件实现消息传递消息块。

  • Stateflow图表来实现决策逻辑。

这个例子解释了这个例子的建筑模型mAutosarSlSenderSWC1.slxmAutosarSlReceiverSWC.slx。可以通过运行下面的代码访问这些模型在MATLAB®命令行。

openExample (“mAutosarSlSenderSWC1”)openExample (“mAutosarSlReceiverSWC”)

其他例子部署相同的发送方和接收方模型在一对一和n对消息传递配置。看到配置模拟AUTOSAR排队Sender-Receiver沟通模拟n对AUTOSAR排队Sender-Receiver沟通

这个图显示了AUTOSAR排队发送方的顶层组件mAutosarSlSenderSWC1。模型包含:

  • Stateflow图表将信号发生器

  • 仿真金宝app软件的信息发送块,包在一个子系统启用。

图表转向灯和信息的控制输出,连接到子系统启用。信息的控制信号变成正值时,子系统启用。在子系统内部,该消息发送块读取转向灯数据值,包含价值根外港发送一条消息MsgOut

这个图显示了逻辑的实现将信号发生器图表。图表有四个州ActivateLeft,DeactivateLeft,ActivateRight,DeactivateRight。每个国家都包含条目分配一个转向灯的行为数据值并设置信息控制价值真正的。(见与Stateflow图表通过发送消息(Stateflow))。周期时间驱动消息输出。

这个图显示了AUTOSAR的顶级排队接收机组件mAutosarSlReceiverSWC。模型包含:

  • 仿真金宝app软件的信息收到块。

  • Stateflow图表HMILogic

根尺寸。MsgIn提供了一个信息收到块,从消息中提取转向灯的数据价值。块然后输出接收到的消息和转向灯Stateflow图表数据值。

收到块参数仿真软件默认设置。金宝app例如,显示接收状态被选中时,使用内部队列清除,当队列为空值来源被设置为把最后一个值

这个图显示了逻辑的实现HMILogic图表。HMILogic包含状态HMIRequestProcessing,LeftTurnSignal,RightTurnSignal

  • HMIRequestProcessing接收到接收到的消息和转向灯数据输入,设置一个isNewData国旗,调用一个函数来处理转向灯数据,然后清空isNewData国旗。的processRequest功能测试的转向灯收到数据值可能设定的消息发送者—LeftTurnOn,RightTurnOn,LeftTurnOff,或RightTurnOff。根据接收到的值,函数增量或请求计数器变量的精神性,leftTurnReqsrightTurnReqs。周期时间驱动输入的消息。

  • LeftTurnSignalRightTurnSignal每个包含状态。他们从基于请求计数器的值leftTurnReqsrightTurnReqs和一个时间间隔。当请求计数器大于零,图表设置一个变量leftSignalOutrightSignalOut,1。时间间隔后,他们回到过渡状态和设置leftSignalOutrightSignalOut为0。

多个发送者排队组件的示例实现n对消息传递配置,见示例中使用的模型模拟n对AUTOSAR排队Sender-Receiver沟通

的样本实现事件驱动的消息排队,看到示例中使用的模型模拟事件驱动AUTOSAR排队Sender-Receiver沟通

配置模拟AUTOSAR排队Sender-Receiver沟通

在仿真软件来模拟AUTOSAR排队sender-receiver沟通®,创建一个包含组成,系统,或利用模型。金宝app包括发送方和接收方排队组件引用的模型。

这个例子显示了一个composition-level模型包含排队发送方和接收方组件模型,并实现了一对一的沟通。周期时间驱动消息传递。示例使用以下三个模型,可以打开通过运行下面的代码:

open_system (“mAutosarSlQueuedMsgs_1_1.slx”)%(高级模型)open_system (“mAutosarSlSenderSWC1.slx”)open_system (“mAutosarSlReceiverSWC.slx”)

autosar_qsr_11top_sl.png

模型mAutosarSlSenderSWC1mAutosarSlReceiverSWC是相同的发送方和接收方组件配置为排队通信配置AUTOSAR发送方和接收方组件和实现实现AUTOSAR队列发送和接收消息。Composition-level模型mAutosarSlQueuedMsgs_1_1包括参考模型和连接发送方组件端口MsgOut接收机组件端口MsgIn

顶部模型mAutosarSlQueuedMsgs_1_1仅供仿真。您可以生成AUTOSAR C代码和ARXML文件发送方和接收方组件模型,但不包含composition-level模型。

类似地,您可以运行software-in-the-loop (SIL)模拟发送方和接收方的组件模型,但不是composition-level模型。

模拟n对AUTOSAR排队Sender-Receiver沟通

这个例子显示了一个composition-level模型包含三个发送者和一个接收器组件模型,并实现了n对一交流。周期时间驱动消息传递。示例扩展了一对一的例子通过添加两个额外的发送方模型和提供发送方和接收方之间的流逻辑。

这个示例使用四个模型可以通过运行下面的代码行访问的MATLAB®命令行。

open_system (“mAutosarSlQueuedMsgs_N_1.slx”)open_system (“mAutosarSlSenderSWC1.slx”)open_system (“mAutosarSlSenderSWC2.slx”)open_system (“mAutosarSlSenderSWC3.slx”)open_system (“mAutosarSlReceiverSWC.slx”)

autosar_qsr_n1top_scale80_sl.png

Composition-level模型mAutosarSlQueuedMsgs_N_1包括三个发送器组件和一个接收器组件作为参考模型。它连接发送方组件MsgOut港口中间MsgJoin处理逻辑,进而连接到一个接收器组件MsgIn端口。

模型mAutosarSlSenderSWC1mAutosarSlReceiverSWC是相同的发送方和接收方组件配置为排队通信配置AUTOSAR发送方和接收方组件和实现实现AUTOSAR队列发送和接收消息。第二个和第三个发送方组件,mAutosarSlSenderSWC2mAutosarSlSenderSWC3,类似于mAutosarSlSenderSWC1,但是实现第二个类型的消息接收器的输入过程。

这个图显示了AUTOSAR排队发送方的顶层组件mAutosarSlSenderSWC2。它包含Stateflow®图表危险信号发生器左转,它提供了逻辑信号。图表消息行输出连接到仿真软件®根外港金宝appMsgOut。一个相应的危险信号发生器图表处理右转信号出现在发送方组件mAutosarSlSenderSWC3

autosar_qsr_sndr2_chart_sl.png

这个图显示了逻辑的实现危险信号发生器图表。图表有两个州HazardOffHazardOn。每个状态包含赋值输入操作消息数据和发送消息。(见与Stateflow图表通过发送消息(Stateflow))。周期时间驱动消息输出。

autosar_qsr_sndr2_logic_sl.png

发送方和接收方之间的组件,一个消息合并块和一个队列块提供消息合并和排队。

  • 消息合并3块合并消息行和输出消息队列。

  • 队列的块存储的三行队列的消息,根据到达的顺序。

  • 消息队列容量设置为16。

  • 队列已满和消息到达时,块设置为覆盖最古老的消息传入消息。

  • 消息排序策略设置为政策AUTOSAR支持,先进先出(FIFO)。金宝app

autosar_qsr_msgjoin_chart_sl.png

每个元素在下游时队列的头离开ReceiverSWC块是准备接受它。顶部模型mAutosarSlQueuedMsgs_N_1仅供仿真。您可以生成AUTOSAR C代码和ARXML文件发送方和接收方组件模型引用,但不包含composition-level模型。类似地,您可以运行software-in-the-loop (SIL)模拟发送方和接收方的组件模型,但不是composition-level模型。

模拟事件驱动AUTOSAR排队Sender-Receiver沟通

这个例子显示了一个composition-level模型的仿真软件®函数调用输入事件激活接收机组件处理队列的消息金宝app。实现的例子是通过使用Stateflow®消息。更多Stateflow®消息传递的例子,看看实现AUTOSAR排队使用Stateflow消息发送和接收

这个例子使用三种模式可以通过运行下面的代码行访问的MATLAB®命令行:

open_system (“mAutosarDREventMsgs”)open_system (“mAutosarMsgSender”)open_system (“mAutosarHMILogicEvent”)

autosar_qsr_dretop.png

Composition-level模型mAutosarDREEventMsgs包括发送方组件和一个接收方组件引用的模型。它连接发送消息的端口DashLight到中级数据接收触发逻辑,进而连接端口接收消息MsgIn和功能触发端口触发

这个图显示了AUTOSAR排队发送方的顶层组件mAutosarMsgSender,其中包含Stateflow®图表将信号发生器。图表消息行输出连接到仿真软件®根外港金宝appDashLight。(发送方组件与组件mAutosarSenderSWC1在Stateflow®一对一和n对一仿真例子实现AUTOSAR排队使用Stateflow消息发送和接收)。

autosar_qsr_sndr_dre_chart.png

这个图显示了逻辑的实现将信号发生器图表。图表有四个州ActivateLeft,DeactivateLeft,ActivateRight,DeactivateRight。每个状态包含赋值输入操作消息数据和发送一条消息。(见与Stateflow图表通过发送消息(Stateflow))。周期时间驱动消息输出。

autosar_qsr_sndr_dre_logic.png

这图显示了数据接收器Trigger图表坐落在发送方和接收方之间的组件。

autosar_qsr_drtrigger_chart.png

接收一条消息,排队使用接收器逻辑收到(M):

  • 如果存在一个有效的消息米,收到(M)返回true。

  • 如果一个有效的信息不存在,从其关联表删除一条消息队列,和收到(M)返回true。如果收到(M)从队列中删除一个消息,队列的长度下降。

  • 如果消息M是无效的,另一个消息不能从队列中删除,收到(M)返回false。

您可以将收到在一个过渡(例如,(接收(M))。或者,在一个状态,使用一个如果条件(例如,如果接收(M)))。有关更多信息,请参见与Stateflow图表通过发送消息(Stateflow)

autosar_qsr_drtrigger_logic.png

这个图显示了AUTOSAR的顶级排队接收机组件mAutosarHMILogicEvent,其中包含一个仿真软件®函数调用子系统金宝app。港口是一个函数调用和消息触发子系统接收端口DashLight,这对AUTOSAR配置数据访问模式QueuedExplicitReceive

autosar_qsr_rcvr_dre_fcss.png

函数调用子系统包含Stateflow®图表ProcessHMIRequests和一个触发器端口块。图表消息行输入连接到仿真软件®根尺寸金宝app味精。一个范围配置为显示的值InvalidPath变量。触发端口块被配置为一个函数调用触发和触发样品时间。函数调用的输入事件发送数据接收者触发图表在模型顶部激活图。

autosar_qsr_rcvr_dre_chart.png

这个图显示了逻辑的实现ProcessHMIRequests图表。ProcessHMIRequests包含状态HMIRequestProcessing,LeftTurnSignal,RightTurnSignal。(这个接收器图表类似于图表HMILogic在一对一和n对一仿真例子。)

  • HMIRequestProcessing从消息队列接收消息,调用一个函数来处理消息,然后丢弃消息。的processRequest功能测试的收到消息数据值可能设定的消息发送者—LeftTurnOn,RightTurnOn,LeftTurnOff,或RightTurnOff。根据接收到的值,函数增量或请求计数器变量的精神性,leftTurnReqsrightTurnReqs。函数调用输入事件驱动消息输入。如果图是错误的激活,InvalidPath变量设置为1。

  • LeftTurnSignalRightTurnSignal每个包含状态。他们从基于请求计数器的值leftTurnReqsrightTurnReqs。当请求计数器大于零,图表设置一个变量leftSignalOutrightSignalOut,1。然后他们回到过渡状态和设置leftSignalOut或rightSignalOut为0。

autosar_qsr_rcvr_dre_logic.png

顶部模型mAutosarDREventMsgs仅供仿真。您可以生成AUTOSAR C代码和ARXML文件发送方和接收方组件模型引用,但不包含composition-level模型。类似地,您可以运行software-in-the-loop (SIL)模拟发送方和接收方的组件模型,但不是composition-level模型。

实现AUTOSAR排队发送和接收使用Stateflow消息传递

实现AUTOSAR队列发送和接收消息使用Stateflow消息

实现AUTOSAR排队发送方或接收方组件行为,这个示例使用Stateflow消息。创建一个Stateflow图表,描述的一般程序有限状态机模型通过使用Stateflow图表(Stateflow)

  1. 添加一个图表AUTOSAR排队发送方或接收方组件模型。名字的图表。

  2. 打开表,添加消息相关。

  3. 为每个状态,添加条目操作。金宝app支持消息关键词包括:

    • 发送(M)——发送消息。

    • 收到(M)——接收消息。

    • isvalid(米)——检查消息M是否有效(破灭而不是丢弃)。

    • 丢弃(M)——明确丢弃消息m .隐式消息丢弃在国家退出消息接收操作完成之后。

  4. 添加状态转换线和指定转换条件或事件。

    • 当你想使用条件转变基于条件语句或改变一个模型块的输入值。金宝app有关更多信息,请参见操作模式之间的过渡(Stateflow)

    • 当你想要使用事件转变基于动态仿真模块或函数调用输入事件触发。金宝app有关更多信息,请参见通过广播事件同步模型组件(Stateflow)

  5. 定义数据存储状态变量。

  6. 图表消息行输入和输出连接到仿真软件根港口和外港。金宝app

有关更多信息,请参见消息(Stateflow)

上下文中的Stateflow图表,您可以修改消息属性,如数据类型和队列容量。(属性的列表,请参阅设置属性的信息(Stateflow))。您可以访问消息属性在属性检查器,一个消息属性对话框,或模型浏览器。查看或修改消息属性的属性检查器:

  1. 打开一个图表,使用消息。

  2. 建模选项卡,打开符号面板属性检查器

  3. 在符号视图中,选择一个消息。属性检查器显示窗格消息数据属性先进的属性。

    如果图是在接收机组件,属性检查器也显示消息队列属性。配置接收机组件使用外部AUTOSAR RTE消息队列,确保财产使用内部队列清除。

默认情况下,消息队列容量数据类型和值是继承了Stateflow消息模型的根端口连接。金宝app消息数据可以使用这些模型参数的数据类型:金宝appint类型,使用uint类型、浮点类型布尔,枚举,或公共汽车(结构体)。

如果你使用进口汽车或枚举数据类型Stateflow图表、模拟所需定义类型。自动生成typedef,选择模型的配置选项金宝app生成typedef进口总线和枚举类型。否则,使用仿真软件配置参数金宝app模拟目标>自定义代码>头文件包含头文件的定义。

排队发送方和接收方的示例实现组件在原先的配置中,看到示例中使用的组件模型为排队通信配置AUTOSAR发送方和接收方组件配置模拟AUTOSAR排队Sender-Receiver沟通。模型mAutosarSenderSWC1.slxmAutosarReceiverSWC.slx可以通过运行下面的代码行访问在MATLAB命令行。

openExample (“mAutosarSenderSWC1.slx”)openExample (“mAutosarReceiverSWC.slx”)

这个图显示了AUTOSAR排队发送方的顶层组件mAutosarSenderSWC1,其中包含Stateflow图表将信号发生器。图表消息行输出连接到仿真软件根外港金宝appMsgOut

这个图显示了逻辑的实现将信号发生器图表。图表有四个州ActivateLeft,DeactivateLeft,ActivateRight,DeactivateRight。每个状态包含赋值输入操作消息数据和发送一条消息。(见与Stateflow图表通过发送消息(Stateflow))。周期时间驱动消息输出。

这个图显示了AUTOSAR的顶级排队接收机组件mAutosarReceiverSWC,其中包含Stateflow图表HMILogic。图表消息行输入连接到仿真软件根尺寸金宝appMsgIn

接收一条消息,排队使用接收器逻辑收到(M):

  • 如果存在一个有效的消息米,收到(M)返回true。

  • 如果一个有效的信息不存在,从其关联表删除一条消息队列,和收到(M)返回true。如果收到(M)从队列中删除一个消息,队列的长度下降。

  • 如果消息M是无效的,另一个消息不能从队列中删除,收到(M)返回false。

您可以将收到在一个过渡(例如,(接收(M))。或者,在一个状态,使用一个如果条件(例如,如果接收(M)))。有关更多信息,请参见与Stateflow图表通过发送消息(Stateflow)

这个图显示了逻辑的实现HMILogic图表。HMILogic包含状态HMIRequestProcessing,LeftTurnSignal,RightTurnSignal

  • HMIRequestProcessing从消息队列接收消息,调用一个函数来处理消息,然后丢弃消息。的processRequest功能测试的收到消息数据值可能设定的消息发送者—LeftTurnOn,RightTurnOn,LeftTurnOff,或RightTurnOff。根据接收到的值,函数增量或请求计数器变量的精神性,leftTurnReqsrightTurnReqs。周期时间驱动输入的消息。

  • LeftTurnSignalRightTurnSignal每个包含状态。他们从基于请求计数器的值leftTurnReqsrightTurnReqs和一个时间间隔。当请求计数器大于零,图表设置一个变量leftSignalOutrightSignalOut,1。时间间隔后,他们回到过渡状态和设置leftSignalOutrightSignalOut为0。

排队发送方和接收方的示例实现组件在一个n对一配置,见示例中使用的模型模拟n对AUTOSAR排队Sender-Receiver沟通

的样本实现事件驱动的消息排队,看到示例中使用的模型模拟事件驱动AUTOSAR排队Sender-Receiver沟通

配置模拟AUTOSAR排队Sender-Receiver沟通

在仿真软件模拟AUTOSAR排队sender-receiver沟通,创建一个包含组成,系统,或利用模型。金宝app包括发送方和接收方排队组件引用的模型。

这个例子显示了一个composition-level模型包含排队发送方和接收方组件模型,并实现了一对一的沟通。周期时间驱动消息传递。示例使用了三种模型,可以通过运行下面的代码行访问在MATLAB命令行。

openExample (“mAutosarQueuedMsgs_1_1.slx”)openExample (“mAutosarSenderSWC1.slx”)openExample (“mAutosarReceiverSWC.slx”)

模型mAutosarSenderSWC1mAutosarReceiverSWC是相同的发送方和接收方组件配置为排队通信配置AUTOSAR发送方和接收方组件和实现实现AUTOSAR队列发送和接收消息。Composition-level模型mAutosarQueuedMsgs_1_1包括参考模型和连接发送方组件端口MsgOut接收机组件端口MsgIn

顶部模型mAutosarQueuedMsgs_1_1仅供仿真。您可以生成AUTOSAR C代码和ARXML文件发送方和接收方组件模型,但不包含composition-level模型。

类似地,您可以运行software-in-the-loop (SIL)模拟发送方和接收方的组件模型,但不是composition-level模型。

模拟n对AUTOSAR排队Sender-Receiver沟通

这个例子显示了一个composition-level模型包含两个发送方和接收方组件模型,并实现了n对一交流。周期时间驱动消息传递。示例扩展了一对一的例子通过添加第二个模型发送方和提供发送方和接收方之间的流逻辑。

这个示例使用四个模型,可以通过运行下面的代码行访问在MATLAB命令行。

openExample (mAutosarQueuedMsgs_N_1.slx) %名模openExample (mAutosarSenderSWC1.slx) openExample (mAutosarSenderSWC2.slx) openExample (“mAutosarReceiverSWC.slx”)

Composition-level模型mAutosarQueuedMsgs_N_1包括两个发送器组件和一个接收器组件作为参考模型。它连接发送方组件MsgOut港口中间MsgJoin处理逻辑,进而连接到一个接收器组件MsgIn端口。

模型mAutosarSenderSWC1mAutosarReceiverSWC是相同的发送方和接收方组件配置为排队通信配置AUTOSAR发送方和接收方组件和实现实现AUTOSAR队列发送和接收消息。第二次发送方组件,mAutosarSenderSWC2,类似于mAutosarSenderSWC1,但实现第二个类型的消息接收器的输入过程。

这个图显示了AUTOSAR排队发送方的顶层组件mAutosarSenderSWC2,其中包含Stateflow图表危险信号发生器。图表消息行输出连接到仿真软件根外港金宝appMsgOut

这个图显示了逻辑的实现危险信号发生器图表。图表有两个州HazardOffHazardOn。每个状态包含赋值输入操作消息数据和发送消息。(见与Stateflow图表通过发送消息(Stateflow))。周期时间驱动消息输出。

这图显示了MsgJoin图表坐落在发送方和接收方之间的组件。

这个图显示了逻辑的实现MsgJoin图表。图表收到消息从发送方组件和输出排队,一次一个,接收机组件。消息从第一个发送方组件,mAutosarSenderSWC1.slx,先处理。收到的每条消息,图表将收到消息数据复制到出站消息,发送数据,丢弃接收到的消息。(见与Stateflow图表通过发送消息(Stateflow))。

顶部模型mAutosarQueuedMsgs_N_1仅供仿真。您可以生成AUTOSAR C代码和ARXML文件发送方和接收方组件模型引用,但不包含composition-level模型。

类似地,您可以运行software-in-the-loop (SIL)模拟发送方和接收方的组件模型,但不是composition-level模型。

决定当一个队列溢出

检查信息是否丢失,因为它被送到了一个队列已满,使用Stateflow溢出接线员:

溢出(message_name)
使用溢出操作符,设置一个模型autosar.tlc目标模拟和代码生成和验证尺寸或外港消息队列连接到外部。在每个时间步,该操作符的值设置图表添加一个消息时,或删除一个消息,一个队列。它是无效的使用溢出运营商在同一时间发送或检索消息之前检查步溢出本地消息队列的状态。

默认情况下,当消息队列溢出,仿真停止一个错误。为了防止并允许一个运行时错误溢出运营商动态反应下降的消息,设置的值队列溢出诊断财产警告没有一个。有关更多信息,请参见队列溢出诊断(Stateflow)

检查输入消息溢出。检查溢流状态的输入消息队列,首先从队列中删除消息。您可以:

  • 保护与信息和过渡溢出操作符。

  • 守卫一个过渡的消息并调用溢出目的地国家的运营商进入行动。

  • 保护一个国家行动的消息并调用溢出操作员在操作。

  • 在行动,使用收到运营商紧随其后的是溢出操作符。

调用溢出运营商在检索一个输入消息之前相同的时间步的结果在一个运行时错误。

检查输出消息溢出。检查输出消息队列的溢流状态,首先添加一个消息队列。您可以:

  • 使用发送运营商紧随其后的是溢出操作符。

  • 使用向前运营商紧随其后的是溢出操作符。

调用溢出运营商发送或转发一个输出消息之前在同一时间步的结果在一个运行时错误。

另请参阅

相关的话题