Louie NRT Story

[CAN Analyzer] CAPL(Communication Access Programming Language) 사용법 본문

전기차충전기

[CAN Analyzer] CAPL(Communication Access Programming Language) 사용법

hyeok0724.kim@gmail.com 2023. 3. 23. 18:53
반응형

작성일: 23년 3월 23일

 

Contents

1. CAPL 프로그래밍 작성

2. Program Node 추가하기

3. 실행결과

 

 

1. CAPL 프로그래밍 작성

 - 메뉴의 "Tools" 선택하여 "CAPL Browser" 버튼을 클릭함

 - CAN 데이터 전송을 위한 예제코드

 - 작성후 저장함

includes 
{ 

}

//사용할 변수 선언하는 공간
variables {
  //변수 선언
  int cntTest_CH01 = 0;
  
  //보내는 데이터 변수 생성
  //앞에 0x101은 필자가 랜덤으로 적은 숫자임(안쓰면 컴파일 안됨, 용도는 잘 모르겠음)
  message 0x101 msgData;
  
  //타이머 생성함
  msTimer testTimer;
}

//타이머 동작에 따른 코드 작성
on timer testTimer
{
  //printf 역할을 함
  write("cntTest_CH01 %d", cntTest_CH01);
  
  //데이터 전송할 CAN 채널 설정함
  msgData.can = 1;
  
  //데이터의 개수
  msgData.dlc = 8;
  
  //보낼 CAN 데이터의 ID 설정
  msgData.id = 0x151;
  
  //보낼 데이터 
  msgData.byte(0) = cntTest_CH01;
  
  //데이터 전송함
  output(msgData);
  
  //타이머 다시 시작
  setTimer(testTimer, 1000);
}

on start
{ 
  write("start:");
  
  //타이머 다시 시작
  setTimer(testTimer, 1000);
}

//키보드 'a' 눌렀을때 이벤트
on key 'a' 
{ 
  write("press a button:");
} 

//키보드 's' 눌렀을때 이벤트
on key 's' 
{
  write("press s button:");
}

 - CAPL에서 지원하는 이벤트들을 알 수 있음

 

 

2. Program Node 추가하기

 - "Analysis & Stimulation" 탭에서 "Measurement Setup" 버튼을 클릭함

 - 화살표 네모박스 위에서 우클릭하여 "Insert Program Node" 클릭

 - "P" 네모박스가 생성되면 우클릭하여 "Edit"을 클릭함

 - 위에서 생성한 코드 파일을 선택함

 - CAPL Browser가 뜨면 상단의 "Compile" 버튼을 클릭함

 - 다시 돌아와서 상단의 "Start" 버튼을 누르면 실행되는 것을 알 수 있음

 

 

3. 실행결과

 - Trace를 통하여 데이터가 출력되는 것을 알 수 있음

 - Write 패널에서 cntTest_CH01 변수의 값이 증가하는 것을 알 수 있음

 - 키보드 이벤트에 의해 "a" 또는 "s"의 버튼이 눌렸다는 것을 알 수 있음

 

 

Referece:

https://suho413.tistory.com/entry/CAPL-%EC%82%AC%EC%9A%A9-%EB%B0%A9%EB%B2%95-%EB%B0%8F-%EC%98%88%EC%A0%9C

 

CAPL 사용 방법 및 예제

원본 링크(저자 본인): https://blog.naver.com/jsh_pa_/221310828796 Canoe 9.0.86 CAPL을 실행하는 방법은 두가지가 있다. 하나는 리본 메뉴에 CAPL Browser를 통해 CAPL을 생성하고 추후에 노드에 적용하는 방법 두번

suho413.tistory.com

https://cheonee.tistory.com/entry/CAPL-CAN-Channel-%EC%84%A4%EC%A0%95

 

CAPL CAN Channel 설정

CAPL Test Environments for Test Moudles 통해서 작성 시 CANoe 상에 CAN1, 2, 3 등 여러가지가 있는데 CAPL 코드에서 메시지를 원하는 CAN에 날려줘야 함 EX) your_mesage_name.CAN = 1;your_mesage_name.CAN = 2; 설정 뒤 output(you

cheonee.tistory.com

https://stackoverflow.com/questions/45369254/send-message-inject-a-message-with-capl

 

Send Message/ Inject a message with CAPL

I am new in CANoe, and also CAPL language. But I want to ask you: How can I send a message with CAPL on the network of ECU's. For example: I want to send an Hex number( it is a question for an ECU)...

stackoverflow.com

 

반응형
Comments