안녕하세요 강사님. 현재 자동차 전장 부분 SW 직무로 일하고 있는 1년차 개발자입니다. 좋은 강의 덕분에 현업에서 많은 도움을 받고 있습니다. 현재 보드에 CAN bootloader를 구현하여 CAN 통신으로 펌웨어 업데이트를 하려고 하는데, CANoe CAPL 툴로 .hex파일을 통해 펌웨어 업데이트 되도록 구현할 수 있을까요?
안녕하세요. panel 에서 system variable 변화를 그래프로 표현하려고 하는데, 기존 질문들을 찾아보니 graphics 창을 사용해서 표현하라고 하는 답변을 봤습니다. 하지만 CAN 신호를 한 화면에서 모니터링하기 위한 GUI 를 panel 로 꾸미고 있어서 panel 에 그래프를 만들어야 하는 상황이라 질문 드립니다. graphics 가 아닌 panel 에서 제공하는 그래프 기능이 있을까요? 없다면 graphics 창을 패널에 삽입하는 방법이 있을까요? 확인 부탁 드립니다. 감사합니다.
안녕하십니까, 대학원생인데 연구실에서 CANoe, vTeststudio 라이센스와 Interface 장비가 있고 이것저것하고 싶어 강사님의 강의를 수강 중입니다. 특히 외부 툴을 통해 Interface 장비에서 메시지가 실제 CAN BUS로 나갔으면 하는데 CAPL에서 이러한 동작을 구현할 수 있나하여 질문드립니다. 당장에 생각나는 건 socket이 가장 간단해보이는데 이러한 방법이 있으면 개발, 연구에 많은 도움이 될 것 같습니다.
안녕하세요! 좋은 강의 덕분에 현업에서 CAPL 지옥에 갇혀 있습니다. 현재 제어기들 진단하는 테스트 케이스를 작성하고 있는데, CAPL로 임의의 Error frame을 만들어서 특정 CAN 채널로 보내, 응답 받는 제어기들의 상태를 보고 싶습니다. 그래서 CAPL 헬프에서 찾아보니 Error frame을 보내는 방법이 2가지가 있는 것 같습니다. void Error_function() // Error frame 생성 함수 { int i; for (i = 0; i < 250; i++) // 250번 반복 실행 { canOutputErrorFrame(CAN1.errorFrame, 6, 0); // 1번 채널에 6 dominant bits 에러 canOutputErrorFrame(CAN2.errorFrame, 6, 0); canOutputErrorFrame(CAN4.errorFrame, 6, 0); canOutputErrorFrame(CAN5.errorFrame, 6, 0); canOutputErrorFrame(CAN6.errorFrame, 6, 0); testWaitForTimeoutSilent(500); // 500ms 대기 후 다시 실행 } } // CAN1번에 있는 Message를 Bus off 시켜 Error frame 생성 canConfigureBusOff(6, PCAN_Nodes[p].MessageIDs[0], 1); 우선 1번 canOutputErrorFrame을 사용했을 때 CAN 상에서 Error frame이 증가하는 것은 확인했지만, REC/TEC 값의 변화는 보지 못했습니다. 2번 같은 경우는 특정 CAN 채널에 연결된 ECU를 Bus off를 시켜 Error frame으로 만드는 것 같은데, 이 경우 TEC 값이 증가하는 부분을 확인할 수 있습니다. 임의로 Error frame을 만들기 위해서 2가지 함수(기능)을 활용해 동작하는데, 해당 접근이 올바른 접근인지 궁금하고, 2개의 차이도 한번 여쭙고 싶습니다! 아직은 CAPL이 많이 미숙하지만 존버매니아님의 강의 계속 돌려 보겠습니다:)
안녕하세요 강의를 듣고 CAPL 을 실제로 사용해보다가 궁금한 점이 있어서 문의드립니다. 현재 CANalyzer 프로그램을 사용하고 있습니다. CANalyzer configuration 파일에 DBC 파일을 등록해놓고, CAPL 에서 DBC에 있는 메시지를 선언한뒤, 특정 베리어블 값이 변했을때 선언한 메시지의 특정 시그널 값을 바꾸고 송신하는 코드를 짜봤습니다. 실제 차량에서 해당 코드를 통해 메세지를 송신하면 바로 에러프레임이 뜨면서 해당 도메인 로깅이 중단되거나, 1회 송신은 되는데 실제 차량 동작은 안하고, 2회째 송신하면 에러프레임이 뜨면서 해당 도메인 로깅이 중단됩니다. 혹시 무슨 상황인지 유추가 가능하신지 문의드립니다.. 혹시 DBC를 Configuration 파일에 등록하고 CAPL에서 메시지를 선언해도 해당 메시지의 모든 시그널값을 선언한다던지, 스타트 비트 값이나 CRC 값을 계산한다던지의 추가적인 작업이 필요한건가요..? 제가 짰던 코드는 아래와 같습니다. variables { message 0x111 SWRC_FD; // 'SWRC_FD' 메시지 선언 } on sysvar e_var::e_var { // 시스템 변수 e_var가 변경될 때 호출되는 이벤트 핸들러 if (@sysvar::e_var::e_var == 1) { // e_var의 값이 1로 변경된 경우 SWRC_FD.Audio_CustomSw = 1; // 'Audio_CustomSw' 시그널 값을 1로 설정 output(SWRC_FD); // 메시지 전송 write("SWRC_FD message sent with Audio_CustomSw = 1"); } }
안녕하세요 현재 제어기 DID 관련하여 CAPL 작성하고 있는데 질문이 있습니다. UDS Protocol로 Read DTC ALL 을 한 후에 나오는 데이터가 현재 약 900byte가 나오는데 해당 데이터를 System variable에 저장해서 Panel을 통해 표출하고 싶습니다. Read 한 값의 data가 많다 보니 this.byte() 함수로 다 저장하기가 어려운데 어떻게 처리하는게 좋을까요? 감사합니다.
강의 잘 들었습니다. CANoe 다룬 지 얼마 안되어서 혼자 독학하려니 정보가 없어서 어려웠는데 정말로 많은 도움이 되었습니다. 하지만 실무에 적용하려고 하니 몇 가지 어려움이 있어서 질문 드립니다. 특정 조건들을 만족하면 특정 메시지가 Sleep이 됩니다. 그 메시지가 나오지 않을 경우 임의의 sysvar의 값인 sleepmessage = 1; 을 넣고 패널에 불빛으로 넣고 싶은데 방법이 있을까요? AliveCount, CRC가 변화 하지 않은 경우를 사용하면 될 것 같기도 한데 잘 모르겠습니다. 예를 들면 스마트키로 락을 했을 때에 제어기에서 나오는 메시지가 죽는 것을 확인 해야 하는데 trace나 graphic에서는 육안으로 확인 가능하지만 capl에서 그걸 어떻게 해야 할 지 모르겠습니다. 메시지가 죽는 것을 확인하고 다음 스텝으로 언락했을 때에 메시지가 살아나는 것을 확인하는 제공되는 기능같은 게 존재할까요?
안녕하세요. 존버매니아님 수업을 듣고 기초적인 CANetowrk 구성 및 제품간 연동을 해보았습니다. 너무도 감사드립니다. 다만, 현재 LIN 으로도 CAPL과 연계하여 제어하고 싶습니다. 현재, 통신 ldf 파일을 만들고 CAPL 코드를 구현하려고 하니 CAN으로 하는 경우와 조금 다른 듯합니다.(제가 잘몰라서... 뭔가 매칭이안되는듯한.) CAPL Code와 연동하여 LIN을 제어할 수 있는지 궁금합니다. LIN과 연계하여 CAPL 구성하는 강의도 만들어 주셨으면 꼭 수강하겠습니다. 감사합니다.
if((gIGN.BCM_Ign1InSta == 0) && (gIGN.BCM_Ign2InSta == 0)) { GotoMode_BusSleep(); cancelTimer(msTimer_IGN); output(gIGN); } else { gotomode_awake(); setTimerCyclic(msTimer_IGN, Period_200); // bcm_02_200ms 메시지 주기 타이머 시작 } 안녕하세요 수업 잘 듣고 있는 학생입니다. 제가 코드를 작성 중에 GotoMode_BusSleep(); 부분에서 unknwon function이라고 뜨는데 뭐가 잘못된건지 모르겠습니다. 예전에도 사용할 땐 잘 됐는데 지금은 갑자기 안됩니다.