RIMB 상태 차트 및 실행 정의

상태 차트를 사용하여 Rhapsody® 구현 블록(RIMB)의 동작을 설명할 수 있습니다.

이 태스크 정보

런타임 환경 관리 모드에서 AUTOSAR 수신기에 수신되는 데이터 요소가 트리거된 오퍼레이션으로 변환됩니다. 데이터 요소가 수신되면 런타임 환경(RTE)에서 상태 차트에서 상태 전이를 직접 트리거하는 해당 활성 오퍼레이션을 호출합니다. AUTOSAR 데이터 요소의 레벨에서 런타임 환경에 따라 큐잉이 완료됩니다. 이 모드에서 AUTOSAR 데이터 요소의 수신으로부터 발생하는 트리거된 오퍼레이션만 상태 차트에서 상태 전이를 트리거할 수 있습니다.

Rhapsody 관리 모드에서는 AUTOSAR 수신기 포트에 수신되는 데이터 요소가 Rhapsody 이벤트로 변환됩니다. 데이터 요소가 수신되면 활성 오퍼레이션이 호출되어 Rhapsody 구현 블록의 이벤트 큐에 해당 이벤트를 넣습니다. 구현 블록의 doExecute 명령은 일반 Rhapsody 메커니즘을 모방하여 이벤트를 하나씩 실행하고 상태 차트에 디스패치합니다. 이 모드에서는 런타임 환경 및 Rhapsody에 의한 이중 큐잉이 수행됩니다.

RIMB의 상태 차트는 다음 두 가지 모드 중 하나로 실행됩니다.
  • RTE 관리 - 이 모드에서는 AUTOSAR 수신기 포트에 수신되는 데이터 요소가 트리거된 오퍼레이션으로 변환됩니다. 데이터 요소가 수신되면 RTE가 상태 차트에서 상태 전이를 직접 트리거하는 해당 활성 오퍼레이션을 호출합니다. RIMB는 활성 또는 실행 관리자가 아니며 RHP 이벤트 큐가 없습니다. AUTOSAR 데이터 요소의 레벨에서 RTE에 따라 큐잉이 완료됩니다. 이 모드에서는 AR 데이터 요소의 수신으로 인해 발생하는 트리거된 오퍼레이션만 상태 차트에서 상태 전이를 트리거할 수 있습니다. RicGEN 호출은 허용되지 않습니다.
  • RHP 관리 - 이 모드에서는 AUTOSAR 수신기 포트에 수신되는 데이터 요소가 RHP 이벤트로 변환됩니다. 데이터 요소가 수신되면 활성 오퍼레이션이 호출되어 RIMBO의 이벤트 큐에 해당 이벤트를 넣습니다. RIMB는 활성-주기적이어야 하고 실행 관리자여야 합니다. doExecute는 일반 RHP 메커니즘을 모방하여 주기적으로 실행되고 이벤트를 상태 차트에 하나씩 디스패치합니다. 여기서는 RHP 외에도 RTE에 의한 이중 큐잉이 수행됩니다.

런타임 환경 관리 모드에서 Rhapsody 구현 블록(RIMB)의 상태 차트 정의

프로시저

  1. RIMB를 “순차”로 정의하십시오.
  2. 구현 블록 수신기 포트 p에서 수신 시 상태 전이를 트리거하는 각 속성(x)에 대해 evP_x라는 트리거된 오퍼레이션을 정의하십시오.
  3. x의 액세스 모드를 명시 블로킹 또는 명시 비블로킹(암시적 아님)으로 설정하십시오. Rhapsody 이벤트가 아닌 일반 C 유형에서 액세스 모드를 입력합니다.
  4. 트리거된 오퍼레이션을 상태 전이 트리거로 사용하는 상태 차트를 작성하십시오.
  5. p.x에 대해 활성 오퍼레이션을 작성하여 p.x에 대한 디스패처로 제공하십시오. 활성 오퍼레이션의 구현은 receiveAndHandleData_p_x()를 호출하는 것입니다. 이 단계는 런타임 환경 관리 및 Rhapsody 관리 모드와 동일합니다. receiveAndHandleData_p_x()와 관련하여 Rhapsody에서 생성되는 코드는 다릅니다.
  6. 디스패처가 서로 상호 배제되도록 상태 차트의 모든 디스패처를 보호됨으로 설정하십시오.

Rhapsody 관리 모드에서 Rhapsody 구현 블록(RIMB)의 상태 차트 정의

프로시저

  1. RIMB를 “주기적” 실행 정책이 있는 “활성”으로 정의하십시오.
  2. Rhapsody 이벤트를 상태 전이 트리거로 사용하여 상태 차트를 작성하십시오.
  3. 해당 이벤트를 사용하여 Rhapsody 구현 블록 수신기 인터페이스 입력 포트에 대한 속성을 입력하십시오. 수신기 포트 p에 AUTOSAR 데이터 요소 x가 수신되면 ev 이벤트가 트리거되는 경우 ev에서 p를 입력하는 Rhapsody 구현 블록 수신기 인터페이스에 x를 입력하십시오. 이전 단계의 세트에 설명된 트리거된 오퍼레이션과 다르게 evpx를 결합하여 생성된 이름이 아닌 상태 차트의 이벤트 이름입니다. ev에 따라 x를 입력하면 evp.x로 바인딩됩니다.
  4. p.x에 대해 활성 오퍼레이션을 정의하여 p.x에 대한 큐어로 제공하십시오. 활성 오퍼레이션의 구현은 receiveAndHandleEvent_p_x()를 호출하는 것입니다. 이 단계는 런타임 환경 관리 및 Rhapsody 관리 모드와 동일합니다. receiveAndHandleEvent_p_x()와 관련하여 Rhapsody에서 생성되는 코드는 다릅니다.

피드백