지난 시간에 이어 잡담을 계속합시다. . .

2. 제어 클래스
is busOff
busOff는 버스 테스트에서 피할 수 없는 주제이며 CAN 버스의 중요한 기능이기도 합니다. 동일합니다. CAN 노드가 비정상일 때 특별한 방식으로 카운트하고 어느 정도 차단한 다음 이전 카운트가 천천히 감소하여 정상으로 돌아올 때까지 한 번 전체 CAN을 보장합니다. 네트워크의 정상적인 생산 통신, 따라서 CAN 테스트에서는 busOff가 필요하며, 오늘 우리는 이와 관련된 사용 방법을 소개하고 테스트의 이 부분을 구현하기 위한 몇 가지 아이디어를 제공할 것입니다.
다음은 노드가 버스 오프에 들어간 후 Rx 및 Tx 오류 수를 인쇄하고 시간과 채널을 함께 인쇄한 다음 채널을 재설정하는 방법입니다.
on busOff
{
int errRxCnt;
int errTxCnt;
int channel;
double timestamp; // [seconds]
timestamp = (double)timeNow() / (double)100000;
channel = this.can;
errRxCnt = this.errorCountRX;
errTxCnt = this.errorCountTX;
Write("Bus Off: time=%f channel=%d, errRxCnt=%d, errTxCnt=%d",
timestamp, channel, errRxCnt, errTxCnt);
resetCanEx(channel);
}
참고: 이 이벤트는 this.errorCountRX 및 this.errorCountTX의 카운터 중 하나가 변경될 때 호출됩니다.
on errorActive/on errorPassive/on warningLimit
마찬가지로 errorActive, errorPassive, warningLimit와 같은 키워드를 통해 CAN 버스 컨트롤러의 상태를 모니터링할 수도 있습니다. 오류 카운터(errorCountRX, errorCountTX)가 변경되면 이벤트가 트리거될 수 있습니다. 특정 요구에 따라 만듭니다. 응답 처리는 현재 장치의 소프트웨어 기능의 무결성을 확인하고 제품의 품질을 보장하는 데 사용됩니다.
on errorActive
{
write("CAN Controller is in errorPassive state")
write(" errorCountTX = %d", this.errorCountTX);
write(" errorCountRX = %d", this.errorCountRX);
};
on errorPassive
{
write("CAN Controller is in errorPassive state")
write(" errorCountTX = %d", this.errorCountTX);
write(" errorCountRX = %d", this.errorCountRX);
};
on warningLimit
{
write("CAN Controller is in errorPassive state")
write(" errorCountTX = %d", this.errorCountTX);
write(" errorCountRX = %d", this.errorCountRX);
};
3. 테스트 시스템 이벤트
테스트 시스템 이벤트는 측정 시작 전, 측정 시작 시, 측정 종료 시 호출할 수 있습니다. 예를 들어 preStart에서 여기를 초기화 변수로 사용하거나 쓰기 기능을 사용하여 쓰기 창에 시작 보고서를 출력하거나 타이머를 시작하거나 측정이 끝난 후 통계 정보를 출력할 수 있습니다.
1. 사전 시작
on-preStart: 주로 변수를 초기화하고, "쓰기" 창에 메시지를 표시하고, 파일에서 데이터를 읽는 데 사용됩니다. on-preStart 프로그램을 실행할 때 모든 기능을 이 이벤트 아래에 배치할 수 있는 것은 아닙니다. 예를 들어 출력 기능을 사용하여 버스에 메시지를 보내는 것은 허용되지 않습니다.
on preStart
{
write("Measurement started!");
msg_Count = 0;
}
시작할 때
on start
{
write("start Node A");
setTimer(cycTimer,20);
CallAllOnEnvVar(); // CANoe only
}
2, 사전 정지/정지 측정 시
on-preStop 핸들러는 측정 중지가 요청된 후에 호출됩니다. on-preStop 기능은 일반적으로 종료 Cao 그룹을 실행할 때 사용되며 실제 측정이 중지되기 전에 이러한 검색이 완료되어야 합니다.
on preStop
{
message ShutdownReq m;
output(m);
DeferStop(1000);
}
참고: 일부 작업(예: 환경 설정)이 StopMeasurement에서만 시작되면 아무 효과가 없습니다. 그러나 연결된 ECU에 종료 메시지를 보내고 승인 메시지를 기다리는 등 보다 복잡한 사전 정지 작업이 필요한 경우 on preStop 기능의 DeferStop 호출은 측정 정지를 더 지연시키는 데 도움이 될 수 있습니다.