두 개의 CAN 포트가 시스템에서 동일한 CAN ID를 가질 수 있습니까?

두 개의 CAN 포트가 시스템에서 동일한 CAN ID를 가질 수 있습니까?

두 개의 CAN 포트가 있는 장치가 동일한 CAN-id를 갖는 경우 문제가 발생합니까?

어떤 이유로 네트워크는 분리되어 있지만 두 네트워크의 "마스터"는 동일해야 합니다.

편집: 네트워크 토폴로지 아래.

 ("master")   CAN-BUS 0     +----------+
+----------+       |------->| CAN-ID 2 |
|          |<------|        +----------+
| CAN-ID 1 |
|          |<------|        +----------+
+----------+       |------->| CAN-ID 3 |
              CAN-BUS 1     +----------+

지금 내가 아는 한, CAN-id는 소프트웨어에 설정되어 있습니다. 내가 놀면 ifconfigCAN-id를 설정할 수 없습니다. 대신 다음을 통해 CAN 트래픽을 생성하려는 경우 이 값을 설정합니다 cangen.

CANID=1
ip link set can0 type can bitrate 125000
ip link set up can0
cangen can0 -I $CANID -L 8 -v

답변1

예, 그럴 것입니다.

CAN의 아키텍처는 이더넷의 아키텍처와 거의 동일합니다. CAN ID의 역할은 이더넷의 MAC 주소와 거의 동일합니다. 따라서 두 네트워크 세그먼트가 별도로 유지되는 한 서로 다른 두 장치에서 동일한 ID를 가질 수 있습니다. 이러한 세그먼트가 하나의 네트워크에 다시 연결되면 충돌이 발생하고 두 장치 모두 제대로 통신할 수 없습니다.

CAN은 p2p 프로토콜에 더 가깝게 설계되었고 실제로 호스트 간에 마스터-슬레이브 관계가 없기 때문에 "두 네트워크의 동일한 마스터"가 무엇을 의미하는지 잘 모르겠습니다.

세그먼트에 합류한 후 "마스터"의 메시지 우선순위를 유지하려면 ID에 간격을 두고 "마스터"와 두 마스터보다 높은 "슬레이브"의 ID에 더 작은 값을 할당하면 됩니다. 장치.

편집하다: 저는 이런 멀티포트 CAN 장치를 사용해 본 적이 없습니다. 그러나 순전히 이론적인 관점에서 볼 때 장치 자체가 해당 포트에서 동일한 ID를 사용할 수 있도록 허용하는 한 작동할 수 있습니다. ID가 버스 내에서 고유한 한 마스터는 통신할 수 있습니다.

"CAN 게이트웨이"라는 "특별한 경우" 장치가 있습니다. 두 개의 CAN 버스를 하나로 결합합니다. 그러나 게이트웨이는 일반적으로 "마스터"라고 불리지 않으므로 이를 염두에 두고 있는지 잘 모르겠습니다.

게이트웨이를 통해 버스에 연결되면 버스는 하나만 있고 두 세그먼트의 모든 장치는 서로 통신할 수 있습니다. 게이트웨이는 단지 신호 중계기일 뿐입니다. 그런데 버스가 물리적으로 충분히 긴 경우 신호 강도를 보장하기 위해 의도적으로 중간에 게이트웨이를 배치할 수 있습니다.
CAN-CAN 게이트웨이는 게이트웨이 장치와 함께 배포되는(또는 생산 회사에서 다운로드되는) 전용 소프트웨어로 구성됩니다. 따라서 도구를 실행하면 해당 포트의 ID 질문에 자동으로 응답됩니다. :)

제가 사용하는 또 다른 다중 포트 장치는 CAN 이더넷 게이트웨이입니다. 하지만 이 경우 장치에는 단 하나의 CAN 포트만 있으며 일반 ID(및 이더넷 측의 일반 MAC 주소)가 있는 일반 CAN 장치처럼 작동합니다.

관련 정보