定义 Rhapsody 实现块 (RIMB) 状态图及其执行方式

您可以使用状态图来描述 Rhapsody 实现块 (RIMB) 的行为。

关于此任务

在“由运行时环境管理”方式下,到达 AUTOSAR 接收方端口的数据元素将变换为触发式操作。当数据元素到达时,运行时环境 (RTE) 将调用相应的活动操作,该操作将直接触发状态图过渡。运行时环境在 AUTOSAR 数据元素的级别执行排队。在此方式下,只有由于 AUTOSAR 数据元素到达而引发的触发式操作才能触发状态图过渡。

在“由 Rhapsody 管理”方式下,到达 AUTOSAR 接收方端口的数据元素将变换为 Rhapsody 事件。当数据元素到达时,将调用一项活动操作,该操作将使相应事件在 Rhapsody 实现块的事件队列中排队。该实现块的 doExecute 命令将运行,并且会将事件逐个分派到状态图中,从而模仿典型的 Rhapsody 机制。此方式涉及双重排队:由运行时环境排队以及由 Rhapsody 排队。

在“由运行时环境管理”方式下定义 Rhapsody 实现块 (RIMB) 的状态图

过程

  1. 对于数据到达时将会触发过渡的实现块接收方端口 p 上的每个属性 x,定义名为 evP_x 的触发式操作。
  2. x 的访问方式设置为显式阻塞显式非阻塞(即,非隐式)。访问方式将由常规 C 类型确定类型,而不是由 Rhapsody 事件确定类型。
  3. 创建一个使用触发式操作作为过渡触发器的状态图。
  4. 对于每个这样的 p.x,可以定义一个活动操作用作 p.x 的分派器。 实现活动操作是为了调用 receiveAndHandleData_p_x()。无论是在“由运行时环境管理”方式下还是在“由 Rhapsody 管理”方式下,此步骤都相同。区别在于,Rhapsody 为 receiveAndHandleData_p_x() 生成的代码有所不同。
  5. 将状态图的所有分派器都设置为受防护,以确保各个分派器之间互相排斥。

在“由 Rhapsody 管理”方式下定义 Rhapsody 实现块 (RIMB) 的状态图

过程

  1. 创建一个将 Rhapsody 事件用作过渡触发器的状态图。
  2. 使用这些事件来确定 Rhapsody 实现块接收方接口类型化端口上的属性的类型。如果接收方端口 p 上 AUTOSAR 数据元素 x 的到达应该触发事件 ev,请通过 ev 来确定 Rhapsody 实现块接收方接口类型化端口 p 上的 x 的类型。与上一组步骤中描述的触发式操作不同,ev 是状态图上的事件的名称,而不是通过组合 px 创建的名称。evp.x 绑定是通过使 x 的类型由 ev 确定实现的。
  3. 对于每个这样的 p.x,定义一个活动操作用作 p.x 的排队器。 实现活动操作是为了调用 receiveAndHandleEvent_p_x()。无论是在“由运行时环境管理”方式下还是在“由 Rhapsody 管理”方式下,此步骤都相同。区别在于,Rhapsody 为 receiveAndHandleEvent_p_x() 生成的代码有所不同。

反馈