[Classic AUTOSAR] UDP Network Management(NM) 3. 기능 사양 (2)Operational Modes
이번에는 AUTOSAR UdpNm 조정 알고리즘의 작동 모드를 설명합니다.
[SWS_UdpNm_00092] AUTOSAR UdpNm은 모듈 인터페이스에서 볼 수 있는 세 가지 작동 모드를 포함해야 합니다.
Network Mode
Prepare Bus-Sleep Mode
Bus-Sleep Mode
[SWS_UdpNm_00093] AUTOSAR UdpNm 작동 모드의 변경은 콜백 기능을 통해 상위 계층에 알려야 합니다.
Network Mode
[SWS_UdpNm_00094] 네트워크 모드는 세 가지 내부 상태로 구성됩니다.
Repeat Message State
Normal Operation State
Ready Sleep State
[SWS_UdpNm_00095] Network Mode가 Bus-Sleep Mode또는 Prepare Bus-Sleep Mode에서 기본적으로 입력되면 반복 메시지 상태로 들어갑니다.
[SWS_UdpNm_00096] Network Mode로 들어가면 NM-Timeout Timer가 시작됩니다.
[SWS_UdpNm_00097] Network Mode로 진입하면 UdpNm은 Nm_NetworkMode를 호출하여 상위 계층에 알려야 한다.
[SWS_UdpNm_00098] Network Mode에서 NM PDU(UdpNm_SoAdIfRxIndication 호출)를 성공적으로 수신하면 NM 타임아웃 타이머가 다시 시작됩니다.
[SWS_UdpNm_00099] Network Mode에서 NM PDU(E_OK와 함께 UdpNm_SoAdIfTxConfirmation 호출) 전송 시 NM-Timeout 타이머가 다시 시작되어야 합니다.
참고: SoAd 또는 TCP/IP 스택에서 전송 확인을 사용할 수 없으므로 각 네트워크 관리 PDU 전송 요청이 성공적인 네트워크 관리 PDU 전송을 가져온다고 가정합니다.
[SWS_UdpNm_00206] NM-Timeout Timer는 시작되거나 다시 시작될 때마다 재설정되어야 합니다.
1) Repeat Message State
[SWS_UdpNm_00100] Bus-Sleep Mode, Prepare-Bus-Sleep Mode, Normal Operation State 또는 Ready Sleep State에서 Repeat Message State가 입력되면 Passive 모드가 활성화되지 않는 한 NM 패킷의 전송이 (재) 시작됩니다.
[SWS_UdpNm_00101] 반복 메시지 상태에서 NM-Timeout 타이머가 만료되면 NM-Timeout 타이머를 다시 시작해야 합니다.
[SWS_UdpNm_00102] NM은 UdpNmRepeatMessageTime(구성 매개변수)에 의해 결정된 구성 가능한 시간 동안 반복 메시지 상태에 있어야 합니다. 그 시간 이후에는 반복 메시지 상태가 남습니다.
[SWS_UdpNm_00103] 반복 메시지 상태가 남아 있을 때 네트워크가 요청되면 정상 작동 상태로 들어갑니다(SWS_UdpNm_00104 참조).
[SWS_UdpNm_00106]반복 메시지 상태가 남아 있을 때 네트워크가 해제된 경우 준비 슬립 상태가 됩니다(SWS_UdpNm_00105 참조).
[SWS_UdpNm_00107] UdpNmNodeDetectionEnabled가 TRUE로 설정되면 UdpNm은 반복 메시지 상태를 떠날 때 반복 메시지 비트를 지웁니다.
[SWS_UdpNm_00137] UdpNm_RepeatMessageRequest 서비스가 Repeat Message State, Prepare Bus-Sleep Mode or Bus-Sleep Mode에서 호출되면 UdpNm 모듈은 서비스를 실행하지 않고 E_NOT_OK를 반환합니다.
2) Normal Operation State
정상 작동 상태는 네트워크 기능이 필요한 한 모든 노드가 NM 클러스터를 활성 상태로 유지할 수 있도록 합니다.
[SWS_UdpNm_00116] Ready Sleep State에서 Normal Operation State가 되면 Passive 모드가 활성화되거나 NM 메시지 전송 기능이 비활성화되지 않는 한 NM PDU의 전송이 시작됩니다.
[SWS_UdpNm_00117] NM-Timeout Timer가 정상 동작 상태에서 만료되면 NM-Timeout Timer를 다시 시작해야 합니다.
[SWS_UdpNm_00118] 네트워크가 해제되고 현재 상태가 Normal Operation State인 경우 Normal Operation State는 그대로 있고 Ready Sleep 상태는 진입한다(SWS_UdpNm_00105 참조).
[SWS_UdpNm_00119] UdpNmNodeDetectionEnabled가 TRUE로 설정되고 정상 작동 상태에서 반복 메시지 요청 비트가 수신되면 UdpNm은 반복 메시지 상태로 들어갑니다. (SRS_Nm_00153)
[SWS_UdpNm_00120] UdpNmNodeDetectionEnabled가 TRUE로 설정되고 정상 작동 상태에서 UdpNm_RepeatMessageRequest 함수가 호출되면 UdpNm은 반복 메시지 상태로 들어갑니다. (SRS_Nm_00153)
[SWS_UdpNm_00121] UdpNmNodeDetectionEnabled가 TRUE로 설정되고 정상 작동 상태에서 UdpNm_RepeatMessageRequest 함수가 호출되면 UdpNm은 반복 메시지 비트를 설정해야 합니다. (SRS_Nm_00153)
3) Ready Sleep State
Ready Sleep State는 다른 노드가 NM 클러스터를 활성화 상태로 유지하는 한 NM 클러스터의 모든 노드가 Prepare Bus-Sleep Mode로의 전환과 함께 대기하도록 합니다.
[SWS_UdpNm_00108] Repeat Message State 또는 Normal Operation State에서 Ready Sleep State로 진입하면 NM PDU의 전송을 중지한다.
참고: 수동 모드가 활성화된 경우 NM PDU가 전송되지 않으면 조치가 필요하지 않습니다.
[SWS_UdpNm_00109] NM-Timeout Timer가 Ready Sleep 상태에서 만료되면 Ready Sleep State는 남아 있고 Prepare Bus-Sleep Mode로 들어갑니다.
[SWS_UdpNm_00110] 네트워크가 요청되고 현재 상태가 Ready Sleep State이면 Ready Sleep State는 그대로 Normal Operation State로 진입한다(SWS_UdpNm_00104 참조).
[SWS_UdpNm_00111] UdpNmNodeDetectionEnabled가 TRUE로 설정되고 준비 슬립 상태에서 반복 메시지 요청 비트가 수신되면 UdpNm은 반복 메시지 상태로 들어갑니다. (SRS_Nm_00153)
[SWS_UdpNm_00112] UdpNmNodeDetectionEnabled가 TRUE로 설정되고 Ready Sleep 상태에서 UdpNm_RepeatMessageRequest 함수가 호출되면 UdpNm은 반복 메시지 상태로 들어갑니다.(SRS_Nm_00153)
[SWS_UdpNm_00113] UdpNmNodeDetectionEnabled가 TRUE로 설정되고 UdpNm_RepeatMessageRequest 함수가 Ready Sleep 상태에서 호출되면 UdpNm은 반복 메시지 비트를 설정해야 합니다. (SRS_Nm_00153)
Prepare Bus-Sleep Mode
Prepare Bus Sleep 상태의 목적은 Bus Sleep 상태가 되기 전에 모든 노드가 네트워크 활동을 중지할 시간을 갖도록 하는 것입니다. 버스 활동이 진정되고(즉, 모든 Tx 버퍼를 비우기 위해 대기 중인 메시지가 전송됨) 마지막으로 버스 대기 모드에서 버스 활동이 없습니다.
[SWS_UdpNm_00114] Prepare Bus-Sleep Mode로 진입하면 UdpNm은 Nm_PrepareBusSleepMode를 호출하여 상위 계층에 알려야 한다.
[SWS_UdpNm_00115] NM은 UdpNmWaitBusSleepTime(구성 매개변수)에 의해 결정된 구성 가능한 시간 동안 Prepare Bus-Sleep 모드를 유지해야 합니다. 그 시간 이후에는 Prepare Bus Sleep 모드가 종료되고 Bus Sleep 모드로 들어갑니다.
[SWS_UdpNm_00124] Prepare Bus-Sleep Mode에서 NM PDU를 성공적으로 수신하면 Prepare Bus-Sleep Mode가 남아 있고 Network Mode로 들어갑니다. 기본적으로 반복 메시지 상태가 입력됩니다(SWS_UdpNm_00095 참조).
[SWS_UdpNm_00123] 네트워크가 Prepare Bus-Sleep 모드에서 요청되면 Prepare Bus-Sleep 모드가 남아 있어야 하고 네트워크 모드로 들어갑니다. 기본적으로 반복 메시지 상태가 입력됩니다(SWS_UdpNm_00095 참조).
[SWS_UdpNm_00122] Prepare Bus-Sleep Mode에서 네트워크가 요청되고(SWS_UdpNm_00104 참조) UdpNm 모듈이 네트워크 모드로 진입하고 UdpNmImmediateRestartEnabled(구성 매개변수)가 TRUE인 경우 UdpNm 모듈은 네트워크 관리 PDU를 전송해야 합니다.
근거: 클러스터의 다른 노드는 여전히 Prepare Bus-Sleep 모드 준비에 있습니다. 위에서 설명한 예외적인 상황에서 버스 슬립 모드로의 전환은 피해야 하고 버스 통신은 가능한 한 빨리 복구되어야 합니다.
UdpNm의 네트워크 관리 PDU에 대한 전송 오프셋으로 인해 반복 메시지 상태에서 첫 번째 네트워크 관리 PDU의 전송이 크게 지연될 수 있습니다. 네트워크의 지연된 재시작을 피하기 위해 네트워크 관리 PDU의 전송을 즉시 요청할 수 있습니다.
참고: UdpNmImmediateRestartEnabled가 TRUE이고 웨이크업 라인이 사용되는 경우 모든 네트워크 노드가 버스 절전 모드 준비에서 네트워크 요청을 받으면 네트워크 관리 PDU 버스트가 발생합니다.
Bus-Sleep Mode
Bus-Sleep 상태의 목적은 메시지를 교환하지 않을 때 노드의 전력 소비를 줄이는 것입니다.
통신 컨트롤러가 슬립 모드로 전환되고 각각의 웨이크업 메커니즘이 활성화되고 최종적으로 버스 슬립 모드에서 전력 소비가 적절한 수준으로 감소됩니다.
UdpNmTimeoutTime + UdpNmWaitBusSleepTime(두 구성 매개변수)에 의해 결정된 구성 가능한 시간이 네트워크 관리 클러스터의 모든 노드에 대해 동일하게 구성되면 AUTOSAR NM 알고리즘의 사용으로 조정되는 네트워크 관리 클러스터의 모든 노드는 다음으로 전환을 수행합니다.
참고: 매개변수 UdpNmTimeoutTime 및 UdpNmWaitBusSleepTime은 NM 클러스터의 모든 네트워크 노드 내에서 동일한 값을 가져야 합니다.
특정 구현에 따라 Bus-Sleep 모드로의 전환은 거의 동시에 발생합니다. 이 전환에 대해 발생하는 시간 지터는 다음 요인에 따라 다릅니다.
내부 클록 정밀도(발진기의 드리프트), NM 작업 주기 시간(작업이 글로벌 시간과 동기화되지 않은 경우), Tx-queue에서 NM PDU 대기 시간(전송 요청 직후 전송 확인이 이루어진 경우).
최상의 경우 추정을 위해 UdpNmTimeoutTime + UdpNmWaitBusSleepTime(두 구성 매개변수 모두) 값에 의해 결정되는 구성 가능한 시간에 대해 오실레이터 드리프트만 고려해야 합니다.
[SWS_UdpNm_00126] 버스 슬립 모드에 들어가면 UdpNm은 Nm_BusSleepMode를 호출하여 상위 계층에 알려야 합니다. Bus-Sleep인 경우에는 그렇지 않습니다. 모드는 초기화 시 기본적으로 입력됩니다.
[SWS_UdpNm_00127] UdpNm 모듈이 버스 슬립 모드(UdpNm_SoAdIfRxIndication 호출)에서 네트워크 관리 PDU를 성공적으로 수신하면, UdpNm 모듈은 Nm_NetworkStartIndication 콜백 함수를 호출하여 상위 계층에 알려야 합니다.
근거: 네트워크와 모드 관리 간의 경쟁 조건 및 상태 불일치를 피하기 위해 UdpNm은 버스 절전 모드에서 네트워크 모드로의 전환을 자동으로 수행하지 않습니다. UdpNm은 깨우기 결정을 내려야 하는 상위 계층에게만 알려줍니다. Bus-Sleep 모드에서 NM 패킷 수신은 ECU 종료 또는 시작 프로세스의 현재 상태에 따라 처리되어야 합니다.
[SWS_UdpNm_00128] UdpNm_PassiveStartUp이 버스 슬립 모드 또는 버스 슬립 모드 준비에서 호출되면 UdpNm 모듈은 네트워크에 진입해야 합니다.
방법; 기본적으로 반복 메시지 상태가 입력됩니다(SWS_UdpNm_00095 및 SWS_UdpNm_00104 참조).
참고: 버스 통신이 명시적으로 요청되지 않는 한 준비 버스 휴면 모드 및 버스 휴면 모드에서는 네트워크가 해제된 것으로 가정합니다.
[SWS_UdpNm_00129]: 네트워크가 버스 절전 모드에서 요청되면 UdpNm 모듈은 네트워크 모드로 들어갑니다. 기본적으로 UdpNm 모듈은 반복 메시지 상태를 입력해야 합니다(SWS_UdpNm_00095 및 SWS_UdpNm_00104 참조).