CAN-BUS

벨로스터N(Veloster N) CAN통신 디코딩 결과 공유

Mapsosa 2021. 7. 13. 20:16

Veloster N C-CAN Map

첫 번째로 캔 디코딩 한 걸 공개한 이후로 많은 시간이 흘렀습니다.

사실 대부분의 틀은 완성이 됐었는데

저번 포스트에서 발견한 OpenDBC라는 것 그게 범용 CAN Database이다 보니 벨로스터N의 특정한 data는 나오지 않는 게 흠이어서 LSD라던가 하는 것들을 찾아보려고 노력하느라 늦었습니다.

 

아래 부분은 2021.11.24일 수정 되었구요 수정 전 내용은 접은 글을 참고하세요.

더보기
출처 : Hyundai Tech (https://tech.hyundaimotorgroup.com/kr/essential-performance/high-performance-n/ )

특히 ESC에서 보내는 CAN ID 544 Lat Acc 및 Long Acc는 10.23m/s^2 까지만 표시 가능한데 여기다 중력가속도 9.8m/s^2을 나눠주면 1.04G 정도까지밖에 계산을 못합니다. 1.04G면 사실상 쓸모가 없는 수준이라 

Hyundai Tech 홈페이지에는 ECS에 G센서 3개에 휠 G센서가 2개 있다던데 이걸 찾으려고 무던히도 노력해 보았는데 도저히 못 찾겠네요. 혹시나 찾으시는 분은 알려주시면 감사하겠습니다.

 

여하튼 이제 너무 더워져서 차 안에서 삽질은 힘들 것 같고 이 정도에서 캔 통신 디코딩은 마치려고 합니다. 솔직히 G값은 그렇게 정확하지는 않더라도 GPS에서 산출돼서 나오고 LSD값이야 몰라도 서킷 타는 데는 지장 없지 않겠습니까?

 

그래서 마지막으로 캔 통신 디코딩한 결과를 공개합니다.

사실상 저번에 공개한 거랑 별 차이는 없고 OpenDBC를 참고하여 틀린 값들을 수정하고 OpenDBC에 있는 값들을 추가한 게 답니다.

 

https://docs.google.com/spreadsheets/d/1JZ5YBacOZu_qsFEeX6HxtncOuDJubsQzTT4mXR6SEls/edit?usp=sharing 

 

Copy of Veloster N CAN-BUS Decoding

C-CAN HEX,DEC,Simple Description,0th byte,1st byte,2nd byte 0~8bits,8~16bits,16~24bits 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 40,64 42,66 43,67 44,68 7F,127 80,128,AcPedal Pos,AcPedalPos eq/2.55,RPM LE eq/4 81,129,Intake Temp,intake temp eq *0.75-48 153,

docs.google.com

캔 통신 디코딩한 스프레드 시트는 위를 참고하시고요.

디코딩 파일은 위의 링크를 참조하세요.

구글 Spread sheet를 이용합니다. 사본 만들기로 복사해가셔서 확인하세요.

 

vehicle_2021_hyundai_veloster_n.rcz
0.00MB

위 파일은 레이스 크로노 용 자동차 프로파일입니다. CAN 디코딩 결과 대부분이 적용되어있고요.

제가 여러 가지 추가해서 테스트해보다가 바로 공개하는 거라 뭔지 모르겠는 값도 있을 거예요.

어차피 이대로 쓰시면 중복된 값도 많고 해서 OBDLink MX+의 블루투스 대역폭을 초과해서 반응속도가 느리고 연결 끊김이 자주 발생할 겁니다. 중복되는 값은 지우시고 필요 없는 값도 지우시고 사용하세요.

사실상 저번에 공개한 거랑 별 차이는 없고 OpenDBC를 참고하여 틀린 값들을 수정하고 OpenDBC에 있는 값들을 추가하고 몇몇 새로 찾은 값들을 추가한게 답니다.

출처 : Hyundai Tech (https://tech.hyundaimotorgroup.com/kr/essential-performance/high-performance-n/ )

Hyundai Tech 홈페이지에는 ECS에 G센서 3개에 휠 G센서가 2개 있다고 해서 그걸 찾으려고 노력하느라 시간이 많이 걸렸었는데 저는 중요한 값이라 상대적으로 전송 빈도가 높은(Hz가 높은) 값에 있다고 생각하고 전송 빈도가 높은 값만 모니터링했었는데 그래서 못 찾았던 것 같습니다. 바디 G센서 같은 경우에는 ABS 모듈로 생각되는 CAN ID 544번에서 송신되는 G값보다 빈도는 10~15Hz 정도로 느리지만 측정 가능 G값이 4G 정도로 1G 정도밖에 표현을 못하는 ABS모듈 G센서보다 훨씬 높습니다. 계산 방법은 Comma AI CAN Database에 나오는 계산방법과 동일하네요.

하지만 단위를 잘 확인하세요. 캔통신 상에 단위가 G 값으로 넘어오는데 레이스크로노에서는 m/s^2로 올라오는 것으로 생각해서 마지막에 9.80665를 나눠 버립니다. 위의 Equation에서 9.80665를 곱해줘야 마지막에 레이스크로노가 9.80665를 나눠도 올바른 값이 나옵니다.

 

여튼 느린 값에도 여러 쓸모 있는 값들이 있는 걸 알고 전송 빈도가 낮은 값들도 모니터링한 결과 클러스터에 나오는 변속 인디케이터 값도 찾았습니다. 근데 뭐 쓸모는 없을 거 같네요. 외장으로 변속 인디케이터 모듈을 만들 경우에 이 값 말고 RPM모니터링해서 rpm에 따라 불 들어오게 하는 게 훨씬 반응속도도 빠르고 정밀할 것 같거든요.

 

그것 말고도 G값 말고는 쓸모없는 값들 몇 개 추가해서 넣었습니다.

오일압력이 너무 알고 싶은데 오일압력 값을 못찾아서 너무 아쉽습니다. 오일압력값 CAN ID나 계산식 아시는 분은 알려주시면 감사하겠습니다.

https://docs.google.com/spreadsheets/d/1Ehkwj19du5tthYuKcw8eLEe7Ammoed_LgKwDgN_5aUU/edit?usp=sharing 

 

Veloster N CAN-BUS Decoding

C-CAN HEX,DEC,Simple Description,0th byte,1st byte,2nd byte 0~8bits,8~16bits,16~24bits 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 40,64 42,66 43,67 44,68 7F,127 80,128,AcPedal Pos,AcPedalPos eq/2.55,RPM LE eq/4 81,129,Intake Temp,intake temp eq *0.75-48 153,

docs.google.com

예전과 같이 디코딩 맵은 위의 스프레드 시트를 참고하시구요. 그냥 보시면 몇몇 값의 설명이 안보이니 다운로드하시거나 복사해가셔서 보세요.

vehicle_2021_hyundai_veloster_n.rcz
0.00MB

위 파일은 레이스 크로노 용 자동차 프로파일입니다. CAN 디코딩 결과 대부분이 적용되어있고요.

제가 여러 가지 추가해서 테스트해보다가 바로 공개하는 거라 뭔지 모르겠는 값도 있을 거예요.

어차피 이대로 쓰시면 중복된 값도 많고 해서 OBDLink MX+의 블루투스 대역폭을 초과해서 반응속도가 느리고 연결 끊김이 자주 발생할 겁니다. 중복되는 값은 지우시고 필요 없는 값도 지우시고 사용하세요.

 

★지금 이 프로파일 그대로 적용하고 서킷 나가시면 한 세션도 못 가서 장치 응답 없음이 뜰 겁니다. 최대한 중복된 값이나 필요 없는 값 지우셔서 대역폭 최적화해서 나가세요. 장치 응답 없음이 뜬다면 OBDLink MX+를 뺐다가 꽂아야 합니다. 세션 중에 뺐다가 꽂기 정말 힘듭니다.

 

 

적용방법은 첫 번째 디코딩 공개글CAN-BUS 카테고리에 있는 글 읽어보시고요.

혹시 다른 차종에 적용하시려고 하신다면 

CAN Database에 대해 설명한 글 읽어보시고 OpenDBC를 보시고 적용하시고 차종 만의 특별한 값들은 CAN-BUS 카테고리에 PART 4, 5, 6을 읽어보시면서 직접 찾으셔야 합니다.

OpenDBC에는 모든 차종이 나와있기 때문에 본인의 차종에는 나오지 않는 결과나 CAN ID가 있을 수 있음을 참고하세요.

 

이제 다음 프로젝트는

레이스 크로노의 포럼에서 발견한 글인데 레이스 크로노를 만든 AOL이 공개한 겁니다.

RaceChrono의 DIY CAN-BUS 어댑터는 BLE 밖에 지원 안 하는데 벌써부터 SPP보다 낮은 BLE 대역폭에 걱정이 되기는 하지만 자기가 개발한 프로토콜을 쓴다고 하니 만들어 보려 합니다.

원래는 이런 게 필요가 없었는데 CAN 통신에서 전송하는 데이터가 많아지면서 OBDLink 대역폭 초과로 OBDLink MX+의 블루투스가 뻗어버리는 현상이 나와서 DIY 프로토콜이면 좀 대역폭을 줄일 수 있지 않을까 해서 해보려 하는 겁니다.

 

젤 큰 문제가 제가 코딩을 잘하지 못하는 것인데 어떻게든 되겠죠.

여하튼 다음에는 저 CAN 통신 어댑터 만드는 콘텐츠로 찾아오겠습니다.

반응형