- 사용 제품: IPEH-002021
- 사용 환경: Ubuntu 20.04 LTS, ROS1 Noetic
- 문제 상황: PCAN USB와 연결된 제품이 전원 연결은 확인되지만 ROS를 통한 동작이 아무것도 일어나지 않았다.
1. 제품 오동작을 확인하기 위해 시스템 부팅 메시지를 확인하고 커널에서 출력되는 메시지를 볼 수 있는 명령을 통해 PCAN 장치 상태를 확인했다.
sudo modprobe pcan
sudo dmesg | grep pcan
PCAN USB를 이용하기 위해 modprobe 명령을 이용해 리눅스에서 커널 모듈을 로드해야 한다.
USB에 이상있으면 pcan-usb can1: controller internal Rx queue overflow 이 나타난다. PC 부팅 후 일정 시간이 지나고 나타났다.
- 해결 방법 : PCAN USB를 변경한다.
2. PCAN 장치 및 드라이버 상태를 확인한다.
cat /proc/pcan
status는 peak system에서 제공하는 pcan.h를 참고하라고 매뉴얼에 명시돼있다. errors는 발생한 에러 수이다.
0x000c는 헤더에 없는 에러였는데 peak system forum에서 확인 결과, 배선 문제(저항)로 추정되었다.
https://forum.peak-system.com/viewtopic.php?f=59&t=1010&p=2577&hilit=pcan+usb+status+0x000c#p2577
https://forum.peak-system.com/viewtopic.php?f=59&t=1010&p=2580&hilit=0x000c#p2580
- 현상
- 작동시키기 전에는 0x0000으로 정상 상태였는데 ROS에서 테스트를 하면 0x000c로 바뀌었다.
- 매뉴얼에 있는 transmitest, receivetest에서는 0x0000 상태만 나타났다. - 해결 방법: 램프 제어 보드 저항을 확인한다
3. pcan.h 활용
LINUX_CAN_Statistics 함수와 TPDIAG를 이용해 Error를 확인한다.
문제 해결 전후로 보아, Error flag가 12가 나오면 배선 문제로 추정된다.
4. 테스트 방법 (transmitest, receivetest 이용)
transmitest [테스트 파일경로] -f=[장치] -b=[CAN ID] -n=[보내는 횟수]
receivetest -f=[장치]
transmitest를 실행한 후 receivetest를 해주어야 한다.
- 현상: last errer, last CAN status는 정상이었지만 count of errors가 증가한다.