본문 바로가기
임베디드SW/Peripheral for 임베디드

LIN통신 프로토콜 - Master Slave 통신, Schedule 테이블

by 바이너리 임베디드 2022. 8. 3.

LIN 통신 프로토콜

임베디드 SW를 개발하면서 LIN 통신 모듈을 개발해야 하는 상황이라면 이번 글이 많은 도움이 될 것이라 생각합니다.

이번 포스팅은 LIN 통신 프로토콜에 대해서 알아보려고 합니다.

그런데 이전에 작성된 LIN 통신의 개요에 대해서 먼저 읽고 오시면 이글이 잘 이해가 될 것입니다.

아랫글을 꼭 읽어 보고 오시기 바랍니다.

 

 

2022.07.31 - [임베디드SW/Peripheral for 임베디드] - LIN 통신 개요 (역사, 사용되는 곳, 콘셉트, 장점)

 

LIN 통신 개요 (역사, 사용되는 곳, 콘셉트, 장점)

1. LIN 통신의 역사 1998년에 OEM과 Supplier가 Consortium을 설립하여 LIN 통신 스펙을 만들었다고 합니다. OEM에는 BMW, Volvo, Audi, VW, Daimler-Chrysler가 있었고, Semiconductor 서플라이어에는 Motorola가..

cookbook.tistory.com

 

그럼 LIN 통신 프로토콜에 대해서 정리하는 시간을 가져 보겠습니다.

Master Slave 통신 방식

LIN 통신은 Master Slave 통신 방식을 사용하는데요. 

정확히는 하나의 Master와 여러 개의 Slave로 연결돼서 통신하는 방식입니다.

Master Slave 통신 방식이 어떤 방식인지 아시나요? 

이름으로 유추해서 한번 생각해 보시면 좋을 것 같습니다.

음... Master는 주인이라는 뜻이고 Slave는 하인이라는 뜻입니다. 

생각해보니 마음에 들지 않는 이름이군요. 다른 이름은 없는지 생각해 봐야겠네요. 

하여튼 주인은 하인에게 음식을 가지고 오라고 명령을 내립니다.

그럼 하인은 주인이 시키는 대로 음식을 가져다 드리겠지요.

또 주인이 하인에게 몸 상태가 어떤지 물어봅니다. 

그럼 하인은 바로 자기 몸 상태에 대해서 대답합니다.

바로 이런 주인과 하인의 관계가 Master Slave 통신 방식입니다.

주인은 명령을 내리고 상태를 물어본다는 것이고 하인은 행동하거나 응답하는 것이 중요합니다.

그럼 LIN 통신으로 돌아가 보죠.

Master 노드가 Slave 노드에 '모터를 돌려라.'라는 명령을 내리면 Slave는 그것에 맞게 모터를 돌려야만 하고 Master 노드가 Slave 노드에 '현재 모터의 속도가 얼마냐?'라고 물어보면 Slave는 현재 속도는 50 rpm입니다.라고 대답해야 하는 것입니다.

즉 Master가 명령도 내리고 상태도 물어보고 Slave는 종속적으로 응답 및 행동만 하는 방식이 되는 것이죠.

최대한 쉽게 설명해보려고 했는데 이해가 되나요?

LIN 통신 네트워크

이번에는 그림을 보면서 조금 더 깊이 들어가 보도록 하겠습니다.

임베디드 세계에서 그림이나 Block Diagram은 매우 중요합니다.

긴 글과 추상적인 개념을 설명하기에 그림만 한 것이 없기 때문이죠.

그래서 그림이나 Block Diagram을 그리는 사람은 매우 신중하게 표현합니다.

자신이 글로 표현하기 힘든 부분을 시각적으로 표현하려고 애쓰고 애쓴 것이기 때문입니다.

이번에 보실 그림도 자주 본 그림이네 하고 그냥 쓱 보고 지나가면 놓치고 갈 부분들이 꽤 있습니다.

한번 찬찬히 하나씩 씹어 먹어 볼까요? 

집중해봅시다~

LIN통신 프로토콜 - Master Slave 통신, Schedule 테이블
LIN통신 프로토콜 - Master Slave 통신, Schedule 테이블

 

우선 LIN Master가 하나 보입니다. 그리고 LIN Slave가 3개 있네요.

이 네트워크망에 Master가 하나 더 있을 수 있을 까요?

하나의 세계에서 명령하는 사람이 여러 명이면 혼란한 세계가 됩니다.

그래서 하나의 네트워크에는 하나의 Master만이 존재하죠.

그럼 Master 박스 안을 살펴보겠습니다.

주황색인 Master Task 박스 1개와 에메랄드 녹색의 Slave Task 1박스 한 개와 Data 1, 2박스 2개가 있습니다.

그리고 주황색인 여러 개의 Schedule 박스가 Master와 하나의 선으로 연결되어 표현되어있습니다.

색깔도 의미가 있어 보이고 Schedule 박스가 여러 개인 것도 Master와 연결되어 있는 것도 다 각각의 의미를 내포하고 있다고 보시면 됩니다. 

그리는 사람이 그냥 그리지는 않기 때문이죠.

Master Task는 주황색으로 된 부분들과 관계가 있습니다. 

Master Task는 LIN 버스상에 전송되는 LIN Frame(Header + Response)에 Header를 구성해서 전송하는 역할을 합니다.

Master 노드 안에 Slave Task 1은 LIN 버스 상에 전송되는 LIN Frame에 Response를 구성해서 전송하는 역할을 합니다.

그래서 잘 생각해보면 Master가 보내는 Frame의 형태는 2가지가 있습니다.

Header만 보내는 경우가 있고, 아니면 Header와 Response를 같이 구성해서 전송하는 경우입니다.

매우 중요한 부분입니다. 형태가 2가지입니다~!

그럼 Master가 Response 없이 Header만 보냈을 때는 Response를 누가 채울까요???

바로 Slave 노드들이 Response 부분을 채워서 보내게 됩니다.

지금 설명한 부분은 매우 중요하니 잘 기억해 두세요.
그러니까 LIN Frame의 Response 부분은 Master 노드와 Slave 노드가 둘 다 채울 수 있는 것이군요.

 

그럼 Master 노드는 Header만 보낼 때에는 Slave 들의 상태를 물어볼 때 주로 쓰게 됩니다.

Slave가 Response에 자신의 상태를 전송하는 것입니다.

그리고 Master 노드가 Header와 Response를 같이 보낼 때에는 명령을 할 때 주로 쓰게 됩니다.

Master 노드가 Response에 명령하고자 하는 데이터를 전송해서 보내는 것이지요.

LIN Schedule 테이블

그럼 Schedule은 뭐할 때 쓰는 것일까요?

Master 노드가 Slave들에게 LIN Frame을 전송하기 위해서 LIN Frame 주기에 대해서 미리 지정한 테이블이라고 생각하면 됩니다.

어느 타이밍에 LIN Frame을 구성할지에 대한 부분입니다.

Master 노드가 아무 생각 없이 3개의 Slave 노드들에게 마구잡이로 Response를 전송하라고 요청하면 너도나도 Response를 보내게 되어 충돌이 발생하게 됩니다. 

그래서 LIN 통신은 프레임 전송 충돌을 방지하기 위해서 3개의 Slave 노드들의 전송 타이밍을 Schedule 테이블로 만드는 것입니다.

테이블을 미리 만들어서 통신을 하다 보니 충돌에 대해 보장된다는 장점이 있습니다.

 

그러면 왜 여러 개의 Schedule 테이블이 있는 것일까요?

Slave 노들은 각각의 시스템 즉 제품이기 때문에 다른 회사의 제품일 수도 있습니다.

그래서 각각의 Slave에 맞는 Schedule 테이블이 필요합니다.

그래서 3개의 Slave가 있기 때문에 각각의 노드마다의 테이블을 만든 것입니다.

각각의 Slave 노드마다 가진 테이블 이름이 NCF 파일이라고 합니다. 주로 Slave에서 사용하게 됩니다.

그리고 Slave 3개의 파일을 모두 합친 파일을 LDF 파일이라고 합니다. 주로 Master에서 사용하게 됩니다.

 

아래는 스케쥴 테이블을 나타낸 그림입니다. 천천히 살펴보시면 이해가 되실 것입니다.

 

 

이야기가 생각보다 많이 길어져서 끊고 가야 할 것 같습니다.

그럼 다음번에 이어서 더 설명하겠습니다.
이다음 이야기가 궁금하신 분들은 즐겨찾기 부탁드립니다 :)

LIN통신 프로토콜 - Master Slave 통신, Schedule 테이블

 

마치며..

그리고 임베디드 SW를 처음 시작하여 공부하고 있는 분이라면 아래 카페에 오셔서 같이 공유의 장을 만들어 가면 좋을 것 같습니다.

 

https://cafe.naver.com/binaryembedded

 

임베디드 유니버스 : 네이버 카페

임베디드 유니버스 : 임베디드의 세계로 초대합니다.

cafe.naver.com

 

 

 

 

 

 

댓글