인프런 커뮤니티 질문&답변

NINI님의 프로필 이미지
NINI

작성한 질문수

CAN 통신 - 자동차 신입이 알아야 할 모든 것

통신속도 : BaudRate

Baud Rate와 물리적 와이어 길이 관계

해결된 질문

작성

·

419

1

Baud Rate 와 물리적 와이어 길이 관계를 설명해 주시는 부분이 잘 이해가 안갑니다.

1Mbps 는 최대 40m

500kbps는 최대 100m

125kbps는 최대 500m

속도가 빠를 수록 다른 제어기가 ACK를 미리 보내지 않기 위해(?) 길이가 짧아야 한다는 부분이 잘 와닿지가 않네요...

조금 더 쉬운 설명 부탁드려도 될까요?

답변 2

1

존버매니아님의 프로필 이미지
존버매니아
지식공유자

제가 위에 글을 너무 길게 썼는데 짧게 써볼게요.

송신측 제어기는 메세지를 쏜 후, ack 비트값이 0이 되는지 여부를 확인합니다.

수신측 제어기는 메세지를 수신받은 후, 수신을 성공적으로 했으면 ack bit를 0으로 바뀝니다. 일종의 답장 같은거죠.

 

한편, 송신측은 메세지를 보낸 후 ack 비트값이 0이 되는지 여부를 평생 기다리는게 아니라 1bit time 까지만 기다립니다.

1bit time은 통신속도가 빠르면 빠를 수록 짧아집니다. 즉 ack 를 기다리면서 확인하는 시간이 짧아진다는거죠.

 

근데, 송신자와 수신자가 물리적으로 엄청 멀리 떨어져 있다면. 수신자가 ack를 0으로 쓴다고해도 이 0이라는 신호가 송신측 전선에 도달할때까지는 물리적으로 시간이 소요돼요.

근데 송신자는 ack신호를 1bit time 동안만. 확인할거니까. 만약 선이 엄청 길다면 수신자가 ack에 0을 썼는데. 이 신호가 아직 송신측에 도달하지도 않았는데 1 bit time이 지났으니까 ack가 0이 아니라고 판단하고 넘어가버립니다.

 

그니까. 속도가 빠르면 빠를 수록. 수신측의 ack신호가 송신자한테 빨리 도달해야됩니다.

(속도가 빠르다 = 1 bit time이 짧다= 송신자가 ack 기다리는 시간이 짧다)

Ack신호가 빨리 도달하려면 둘사이 전선이 짧아야죠 !

그러니까 속도가 빠르면 선이 짧아져야된다는 겁니다.

 

NINI님의 프로필 이미지
NINI
질문자

늦은 시간에도 명쾌한 답변 정말 감사합니다^^ 편안한 밤 보내시기 바랍니다!

0

존버매니아님의 프로필 이미지
존버매니아
지식공유자

일단 Ack 비트의 역할과 동작을 잘 이해하셔야 합니다. Ack 비트는 메세지 수신측의 답장? 같은 개념인데요.

메세지 수신자는 메세지를 받으면 해당 메세지에 문제가 없는지 체크를 하고 문제가 없다면 ack bit 를 dominant(0)으로 write합니다.

문제가 있다고 판단하면 dominant로 쓰지 않습니다. 그러면 ack 비트는 recessive 상태를 유지하게 됩니다.

한편, 송신측은 메세지를 보낸 후 ack 비트값이 0으로 바뀌는지 확인합니다. 만약 0으로 바꼈다면 누군가가 메세지를 수신했고, 문제 없다고 판단했다는 의미죠.(앞에 수신측 동작 설명참고)

그러므로 이 경우 본인이 보낸 메세지가 문제없이 잘 송신됐구나하고 판단합니다.

근데 만약 ack 비트가 계속 1이라면 내 메세지를 아무도 받지 않았거나 뭔가 문제가 있구나 하고 이것을 에러상황으로 인식하게 됩니다.

근데 송신측이 한도 끝도 없이 계속 ack 값이 0으로 바뀔때까지 기다리면서 확인하는게 아니고 ack 비트는 1비트이기 때문에. 1비트에 해당 되는 시간동안만 확인하는 겁니다.

근데 1 bit 시간은 bps에 의해 결정되죠?

예를 들어 통신속도가 1bps면 1bit 시간은 1초입니다.

통신속도가 1000 bps면 0.001초 입니다.

 

근데 여기서 고려해야되는게.

수신측 제어기가 dominant 값을 write하는게 결국은 can high, can low 전선에 전압값을 컨트롤 하는거잖아요? 근데 통신선이 예를들어 엄청 길어서 서울~부산만큼 500km 떨어져있다고 가정해봅시다.

그러면 수신측에서 메세지에 문제 없다고 판단해서 dominant 값을 write했을때.

전선에 전압레벨이 500km 짜리 전선에 모두 동시에 딱! 바뀌는게 아니라 수신측 근처 전선부터 2.5v 로 바뀔거고 이게 전선으로 퍼지고 퍼져서 저기 끝에 500km 떨어진 송신측 전선도 2.5v 로 바뀌게 되는데 그럴려면 어쨋든 물리적으로 시간이 걸린단 얘기입니다.

 

근데 위에서 얘기했듯이 송신측이 ack를 확인하고 기다리는 시간은 1bit time 이에요. 근데 선이 너무 너무 길면 수신측의 ack가 송신측 근처 전선에 아직 도달하기전에 송신측은 ack 값이 안바뀌네? 하고 이걸 에러로 판단해버립니다. 근데 만약 통신속도가 엄청나게 느려서 1bit time이 엄청 길다고 생각해보죠.

그러면 물리적으로 전선을 타고 ack가 도달할때까지 충분히 확인할 수 있게되죠..

 

 

 

 

NINI님의 프로필 이미지
NINI

작성한 질문수

질문하기