CAN

[CAN] CAPL 기본 문법 (CANalyzer, CANOE) | CAN 통신 | CAN 통신 강의 | CAPL 프로그래밍 | CAN 교육 정

언에듀걸 2023. 9. 11. 21:29
반응형

 
업무상 CAN통신을 다루고 있어 CANalyzer를 사용하고 있다.
CAPL로 작성된 시뮬레이터를 수정할 일이 있어 CAPL 언어에 대한 이해가 필요한 상황이라 찾아본 교육 정보들을 소개해보려고 한다.
또한 내가 검색으로 터득한 CAPL 기본 문법에 대해 다뤄보았다. 
 
CAN은 전문적인 영역이라 혼자 터득하기 꽤 어려웠다.. 정보들도 찾기 어렵고
그래서 교육이나 강의를 검색해보았고 두가지 루트를 찾을 수 있었다.
 
1. 벡터 아카데미 교육(고렴이)
2. 인프런 강의(저렴이)
 
 
1. 벡터 아카데미 교육(고렴이)
CAPL 언어는 CANalyzer 개발사 Vector사에서 유료 교육을 받을 수 있는데 찾아 본 결과 상당히 비싼 편이다..
아래에 보면 저렴한 인프런 강의도 찾았으니 끝까지 글을 읽어보길 바란다.
 
Vector 교육은 Vector Academy 사이트에서 찾아볼 수 있는데
https://academy.vector.com/kr/ko/

나는 CAPL 교육에 대해 관심이 있어 CAPL을 필터 걸어 교육내용을 찾아보았다
CANoe/CANalyzer for LIN 강의 과정이 궁금하여 가격을 찾아보니...
 
2일 동안 09:30~17:30 까지 교육에 90만원..
회사 교육비로는 쉽지 않을 것 같아서
저렴하고 기본 개념 위주의 인프런 강의를 찾아보게 되었다.
 
2. 인프런 강의(저렴이)
https://www.inflearn.com/ 

인프런 - 라이프타임 커리어 플랫폼

프로그래밍, 인공지능, 데이터, 마케팅, 디자인, 엑셀 실무 등 입문부터 실전까지 업계 최고 선배들에게 배울 수 있는 곳. 우리는 성장 기회의 평등을 추구합니다.

www.inflearn.com

 

CAN을 키워드로 인프런에 검색해 본 결과 꽤 여러 강의가 있었다.
 
CAN 통신 - 자동차 신입이 알아야 할 모든 것
강의를 눌러보니 강의에 대한 설명이 꽤 자세하게 나와있어 원하는 강의를 선택하기 좋아 보였다.
 
강의는 정가 55,000원에 23강으로 구성되어 있고 총 3시간 37분의 수업이었다.

강의 커리큘럼이 자세하게 나와있어 나에게 필요한 강의를 선택하면 될 것 같다.
미리보기도 가능하니 들어보겠다.
 
나는 CAN 통신 - 자동차 신입이 알아야 할 모든 것
실무자가 알려주는 CANoe - CAPL과 Panel 기본 사용법
 
이 두 강의에 관심이 있어 앞으로 수강해 볼 예정이다.
수료증도 받을 수 있기 때문에 회사에서 증빙도 가능하다.
 
수강을 한다면 후기를 블로그에 올리도록 하겠다.
 
인프런 실제 강의 후기를 찾아보니 실무 관련 지식임에도 불구하고 대학생뿐 아니라 실제 연구원, 현직자들의 수요가 있었다.
 
나도 업무를 수행하면서 CAN 통신 커넥터, 저항 관련한 지식이 필요한 참이어서 얼른 강의를 듣고 싶었다.

 

이만 CAN 교육|강의 정보에 대한 포스팅은 마치고 실제 CAPL 프로그래밍 시 무조건 쓰이는 기본 문법에 대해 정리하겠다.
이건 미래의 나를 위한 업로드이다..
 

  • on start()  : 시뮬레이션 시작 시 start 함수 내부의 코드가 실행됨
반응형
on start()
{
	write("on  start");
}

 

  • on pre-start() : start() 이벤트 전에 실행됨, 딜레이 설정이나 변수 초기화 시 사용
on pre-start()
{
	write("start() 시작 전에 발생");
}

 

  • on stop() : CANalyzer, CANoe 프로그램에서 stop 버튼 클릭 시 발생
on stop()
{
	write("stop 버튼 클릭 시 발생");
}

 

  • on key 'key name'() : 'key-name'에 지정된 키를 누르면 key 이벤트가 발생
on key 'a'
{
	write("a 버튼 클릭 시 발생");
} 
// 'a', ' '(spacebar), 0x20(spacebar), F1(F1 key), ctrlF12(Ctrl-F12), Page up 등

 

  • on envvar "Env-var name"() : Env-var가 변경되면 이벤트가 호출됨
    • 사용자와 상호작용하는 환경변수라는 객체가 존재하는데, 시뮬레이션과 연결된 데이터베이스 파일('.dbc' 파일)에서 만들고 정의해야 함
on envvar env_abc
{
	write("Value of env_abc is %d", getvalue(this));
}

 

  • on message message name() : message name에 지정된 CAN 메시지가 수신될 때 발생.
    • message name은 variables{} 내부에 선언하며, 그 위치에서 사용하거나 16진수 주소를 제공
on message 0x100
{
	int data = 0;
	data = 0x100.byte(0);
	write("Data on 0x100 first byte, %d", data);
}
variables
{
	message 0x100 messagename;
}

on message messagename()
{
	write("Data in first byte, %d", messagename.byte(0));
}

 

  • on timer() : settimer() 호출로 트리거되는 변수, canceltimer() 호출로 중지 가능.
    • 타이머는 병렬이나 순차적으로 수행이 가능하며 자동화 작업에 유용
variables
{
	timer t1;
	mstimer t2;
	int t1delay = 1;
	int t2delay = 1000;
}

on start()
{
	settimer(t1, t1delay);//1 sec
	settimer(t2, t2delay);//1 sec
}

on timer t1
{
	write("1초 경과");
	settimer(t1, t1delay);
}

on timer t2
{
	write("1000ms 경과");
	settimer(t2, t2delay);
}

on key 'a'
{
	canceltimer(t1);
	canceltimer(t2);
}

반응형