로봇/기타

[PEAK System] PCAN USB 이용

짱짱이_ 2023. 9. 17. 16:22
  • 사용 제품: 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

 

Error status 0x000x - PEAK-System Forum

This forum covers PCAN-Linux and Linux development issues concerning our products matei234 Posts: 2 Joined: Thu 21. Nov 2013, 01:38 Post by matei234 » Thu 21. Nov 2013, 01:40 I am getting the following out of 'cat /proc/pcan': *------------- PEAK-System C

forum.peak-system.com

https://forum.peak-system.com/viewtopic.php?f=59&t=1010&p=2580&hilit=0x000c#p2580

 

Error status 0x000x - PEAK-System Forum

This forum covers PCAN-Linux and Linux development issues concerning our products matei234 Posts: 2 Joined: Thu 21. Nov 2013, 01:38 Post by matei234 » Thu 21. Nov 2013, 01:40 I am getting the following out of 'cat /proc/pcan': *------------- PEAK-System C

forum.peak-system.com

 

  • 현상
    - 작동시키기 전에는 0x0000으로 정상 상태였는데 ROS에서 테스트를 하면 0x000c로 바뀌었다.
    - 매뉴얼에 있는 transmitest, receivetest에서는 0x0000 상태만 나타났다.

  • 해결 방법: 램프 제어 보드 저항을 확인한다

 

해결 후 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가 증가한다.