-
CAN 버스 시뮬레이션 (RBS: Remaining Bus Simulation)simulation 2024. 11. 25. 14:46
시작하기 전에
제어기 작동 검증 시험을 하는 경우를 가정한다. 제어기에 전원을 연결하고 이그니션 on에 해당하는 신호를 가했을 때, 입출력이 모두 정상이어서 제어기가 정상 작동할 수 있는 상태를 만들어야 한다. 입출력 중에 전기 신호를 직접 받거나 주는 경우, 제어기 내부 회로에 정상 상태에 맞는 전압/ 전류/ 저항/ 기타 값이 읽히도록 외부 회로를 구성하여 연결한다. 마찬가지로 CAN 버스도 정상 상태에 맞는 메시지들을 정해진 주기에 따라 지속적으로 공급해야 하고, 메시지 안의 신호들도 제어기가 정상 상태로 인식하도록 값을 설정해서 공급해야 한다. 이를 RBS (Remaining Bus Simulation 혹은 Rest Bus Simulation)라고 한다.
RBS는 크게 오픈-루프(open-loop)와 클로즈드-루프(closed-loop) 방식으로 분류할 수 있다.
클로즈드-루프 방식에서는 제어기와 제어기 외부를 대신하는 모델이 있다. 모델은 제어기의 출력을 감지하고, 출력에 따른 차량 거동의 변경을 계산하고 (제동 제어기의 경우, 제동에 따른 변경된 바퀴 속도 등을 계산한다.), 변경된 바퀴 속도에 해당하는 전기 신호를 만들어서 제어기의 입력 측에 가한다. 제어기는 새로운 입력 (변경된 바퀴 속도를) 기반으로 (제동) 제어에 필요한 연산을 수행하고, 연산 결과에 따라 액추에이터 제어 신호를 출력한다. 모델은 이 출력을 감지하고, 전체 시스템은 위에 설명한 단계를 반복한다. 이를 HiLS (Hardware in-the-Loop Simulation)이라고 한다.
반면에 오픈-루프는 제어기의 출력과 무관하게 미리 정한 입력을 제어기에 가한다.
TSMaster로 클로즈드-루프 RBS를 할 수 있다. 대부분 사용자들은 TSMaster를 오픈-루프 RBS에 사용한다. (시중에 클로즈드-루프 RBS 전용 툴들이 별도로 있다.) 이번 포스팅에서는 오픈-루프 RBS 방법을 설명한다.
개요
- 시뮬레이션 프로젝트 시작하기
- 시뮬레이션 설정
- Rolling Counter 설정
- 판넬로 시뮬레이션 GUI 만들기
시뮬레이션 프로젝트 시작하기
- TSMaster를 시작한다.
- 첫 화면에서 Create new project를 클릭한다.
- Simulation을 클릭한다.
- CAN RBS Simulation을 클릭한다.
- 새로운 프로젝트 폴더를 만든다.
- CAN Remaining Bus Simulation 창, CAN / CAN FD Trace 창, System Message 창이 열린 Workspace가 열린다.
- 꼭 위와 같이 하지 않아도 RBS 창을 열기만 하면 된다. RBS 창을 여는 버튼은 메인 메뉴/ Simulation/ Remaining Bus Simulation에 있다.
시뮬레이션 설정
- 하드웨어 설정을 한다. CAN 트레이스 받기 - 하드웨어 설정 :: hsl's tsmaster 사용기
- 하드웨어 설정을 하지 않아면 Virtual Device로 설정된다. 이 포스트를 따라하는데 문제 없다.
- RBS를 위한 dbc 파일을 열어야 한다.
- 메인 메뉴/ Analysis/ Database 버튼을 클릭한다.
- CAN Database 창이 열리면 load CAN database file 버튼을 클릭한다. 윈도의 파일 열기 창이 열린다. dbc 파일이 저장된 경로로 이동하여 dbc 파일을 선택한다.
- RBS 창에 시뮬레이션 할 수 있는 메시지들과 신호들이 표시된다.
- RBS 창 위 왼쪽 구석의 버튼을 클릭하여 시뮬레이션을 시작한다.
- CAN / CAN FD Trace 창에서 RBS 창에서 선택한 메시지들을 볼 수 있다.
- RBS 창에서 신호의 값을 변경하면 Trace 창에서 해당 신호의 값이 변경되는 것을 확인할 수 있다. (이 신호를 당연히 Graphic 창에서도 확인할 수 있다.)
Rolling Counter(RC) 설정
- 신호를 선택하여 RC로 설정할 수 있다. 선택한 신호의 Type에서 마우스 우클릭하여 팝업 메뉴에서 Set to Rolling Counter Singal (RC)를 선택한다.
- RC의 상한과 하한을 조정할 수 있다. 선택한 신호에서 마우스 우클릭으로 Edit RC Limits를 선택한다.
- 아래와 같이 Edit RC Arguments 창이 열린다. Limit Active에 체크하고, Lower Limit, Upper Limit를 입력한다. Lower Limit와 Upper Limit는 Hex 값이 아닌 물리량 값이다.
- 아래 그림과 같이 RC의 상한과 하한이 변경된다.
판넬로 시뮬레이션 GUI 만들기
- RBS 시뮬레인션을 할 때, 사용자가 신호 값을 자주 변경하는 경우 GUI를 만들면 편리하다. TSMaster의 Panel 기능을 이용하여 GUI를 만들 수 있다.
- 메인 메뉴/ Simulation/ Panel 버튼을 클기하여 판넬 창을 연다.
- Toolbox에서 Guage를 더블 클릭하여 캔버스에 게이지 위젯을 추가한다.
- VarType에서 CANSignal을 선택한다.
- VarLink에서 ... 버튼을 클릭한다. CAN 신호를 선택할 수 있는 데이터베이스 창이 열린다.
- 예제에서는 CYL_PRES를 선택한다.
- CYL_PRES 신호의 Maximum은 409.5이다. 게이지의 Maximum을 400으로 변경한다.
- 게이지는 View Only 위젯이다. 신호 값을 출력하지만 입력할 수 없다.
- 입력을 위해 ScrollBar를 추가한다. 툴박스에서 스크롤바를 더블 클릭한다.
- CYL_PRES를 높이고 낮추고 한다는 직관성을 위해 스크롤바를 270도 회전한다. 스크롤바를 이용하면 CYL_PRES를 표시할 수도 있고, 입력할 수도 있다. (스크롤바를 선택할 때는 'VarName(변수명)' 이라고 표시된 부분을 클릭하십시오.)
- 스크롤바의 Max 값도 400으로 변경한다.
- 게이지의 VarType과 VarLink를 설정한 것처럼 스크롤바도 설정한다.
- VarLink를 설정할 때 아래와 같은 경고가 뜰 수 있다. RBS를 "자동 실행"으로 설정하지 않은 경우다. 스크롤바로 "입력"을 받기 때문에 RBS가 자동 실행된다는 의미다. 예(Y)를 클릭한다.
- 게이지가 출력 전용 위젯이고 스크롤바가 입출력을 위한 위젯이라면 입력 전용을 위한 버튼 위젯이 있다. 버튼을 추가한다.
- VarType과 VarLink를 설정한다. CYL_PRES와 연결한다.
- ValuePushed에 버튼을 눌렀을 때 설정할 CYL_PRES 값을 입력한다. 나는 127을 입력했다.
- CYL_PRES의 Type을 RC로 설정하고 시뮬레이션을 하면 아래 비디오 같이 된다. TSMaster RBS & Panel - YouTube
- CYL_PRES의 Type을 Signal로 설정하고 시뮬레이션을 하면 아래 비이오와 같이 된다. 2024 11 25 14 50 18 TSMaster RBS Panel
결론
- TSMaster로 오픈-루프 RBS를 하는 방법을 설명하였다.
- 사용자 입력에 따라 신호 값을 변경할 수 있도록 판넬과 연결하는 방법을 설명하였다.
- RC 설정에 관하여 설명하였다.
- 이상 설명한 방법들을 이용하면 제어기가 정상 작동하도록 RBS를 구성할 수 있을 것으로 기대한다.
'simulation' 카테고리의 다른 글
Symbol Mapping 기능을 이용한 yaw_rate_ws 계산하기 (0) 2024.12.09 트레이스를 이용한 RBS(Remaining Bus Simulation) (0) 2024.12.06 판넬로 사용자 입력 받는 법 (0) 2024.11.03