안녕하세요. 아이언벨입니다.
[SENT] SENT(Single Edge Nibble Transmission)/SAE J2716 이란? #1 (https://ironbell.tistory.com/2) 에 이어
두 번째 SENT 통신 관련 블로그를 작성하겠습니다.
첫 번째 글에 언급한 단방향 통신에 대해 언급하고 넘어가겠습니다.
(다른분께 첫번째 글을 보여드렸는데 단방향 통신이 머냐고 물어보더라고요.)
단방향 통신 영어로는 Simplex transmission이라고 하며 일방적으로 A → B 만 데이터를 전송하는 통신입니다.
일상생활에서 대표적으로 사용되는 것은 TV, 라디오가 있습니다. 아! TV 리모컨도 단방향통 신이네요.
-추가
Half Duplex transmission(반이중 통신) : 양방향 통신이지만, 동시에 양방향을 다 사용할 수는 없습니다. 대표적으로 무전기가 있습니다. "이제 출발하겠다 오버~", "알겠다 오버~" 이러면서 A가 말하면 B가 듣고 다시 B가 말하면 A가 듣는 형태입니다. 그래서 항상 난 이제 할 말 다했다고 Over~라는 말이 붙게 되죠.
Full Duplex transmission(전이중 통신) : 양방향 통신이고 둘 다 보내고 받는 게 가능합니다. 지금 사용하시는 핸드폰이 대표적이죠. 너도 떠들고 나도 떠들고 다 가능하죠.
다시 본론으로 넘어와서 SENT통신 관련 이야기를 하겠습니다.
보통 차량에서 사용하는 Sensor들은 Analog data를 많이 사용합니다. 전압(Voltage), 전류(Current), 저항(Resist) 등으로 상태를 표시합니다. SENT보다 저렴하고 MCU조차 필요하지 않기 때문이죠.
그럼 왜 SENT를 사용할까? Digital 신호면서 저렴하기 때문입니다. 흔히 착각하시는 것 중에 PWM으로 하면 되지 않냐고 하시는데, PWM도 Analog Data로 분류됩니다. 0과 1로 구분되긴 하지만 그 데이터는 Frequency, Duty와 같은 시간 요소가 들어가서 Analog 신호로 구분합니다.
- 그럼 Digital 신호면 무엇이 장점인가?
보다 명확한(정확한) 정보 송신이 가능합니다. Sensor의 상태를 표시할 때 SENT의 경우 4bit의 Status Pulse가 있습니다.
이것을 활용하면 센서의 상태를 정확히 표현해줄 수 있습니다.
예를 들면
0x0 = Idle(유휴 상태)
0x1 = Run(동작상태)
0x2 = Stop(정지상태)
0x3 = Error Under Voltage
0x4 = Error Over Voltage
0x5 = Error Over Temperatue
0xF = Error MCU Fail
과 같이 상태 값을 전달할 수 있습니다.
- SENT Frame의 길이
SENT Frame의 길이를 따로 언급하는 이유는 SENT의 특이한 특징이기 때문입니다.
일반적으로 데이터량이 동일하면 Frame길이 역시 동일합니다. 0 or 1로 구분하기 때문이죠.
그런데 SENT는 DATA에 따라 Frame 길이가 다릅니다. 두 개의 Frame의 길이를 비교해보겠습니다.
1. 비교적 짧은 SENT Frame
Status = 0x0
Data 1~6 = 0x0
CRC = 0x5 (CRC 계산에 의한 결과입니다.)
→ 56tick(Sync Cal Pulse) + 12tick(Status) + 12tick(Data1) + 12tick(Data2) + 12tick(Data3) + 12tick(Data4) + 12tick(Data5) + 12tick(Data6) + 15tick(CRC)
= 155tick 입니다. Tick Time을 3us로 하면 465us 입니다.
2. 비교적 긴 SENT Frame
Status = 0xF
Data 1~6 = 0xF
CRC = 0xA (CRC 계산에 의한 결과입니다.)
→ 56tick(Sync Cal Pulse) + 27tick(Status) + 27tick(Data1) + 27tick(Data2) + 27tick(Data3) + 27tick(Data4) + 27tick(Data5) + 27tick(Data6) + 22tick(CRC)
= 267tick 입니다. Tick Time을 3us로 하면 801us 입니다.
> 결론 : Data의 따라 SENT Frame 길이는 변한다.
SENT Frame 길이 관련하여 제가 필드에서 SENT 관련 프로젝트를 진행하고 있을 때, Data의 업데이트 속도를 물어보는 고객이 계셨습니다. 그래서 500us ~ 800us 정도 된다고 전달드리니, 정확히 알려 달라고 하시더라고요. 개발자가 그것도 정확히 모르냐는 컴플레인이죠. 그래서 아직 기억에 남아있습니다. ㅠㅠ
- 지금까지 보여드릴 캡처 화면은 이해를 돕기 위해 1개의 Frame이 출력되었을 때를 보여드렸는데요.
실제 SENT 통신이 될 때 Frame은 아래 이미지와 같이 Delay 없이 붙어서 출력됩니다. (Pause Pulse가 없을 때)
- Tip
> 통신을 위한 와이어는 한 개지만 MCU 전원, Signal GND 등의 라인이 있습니다.
> 통신 Level은 5V입이며, 5V에서 0V로 떨어지는 Falling Edge를 트리거로 사용하여 시간을 계산합니다.
> Tx를 구현하는 것보다 Rx를 구현하는 것이 어렵습니다.
> 저는 지금까지 FPGA로 SENT통신을 구현했습니다. 이번 프로젝트에서는 SENT to RS-232C 모듈을 구매해서 사용하고 있습니다. (SENT to RS-232C 모듈을 사용하는 내용은 다음 블로그 글로 작성 예정입니다.)
> SPC는 SENT통신을 기본으로 하는 상위 통신 프로토콜입니다. SENT와는 다르게 Half Duplex transmission이며, Master에서 요청하면 Slave가 데이터를 전달하는 방식입니다. 요청이 오면 블로그 작성하겠습니다.
다른 SENT 관련 게시글에서 뻔히 보이는 정보는 간략하게 소개하고, 검색으로 찾을 수 없는 정보를 담는데 신경썼는데 제대로 전달이 될지는 모르겠습니다.
문의사항은 댓글 작성해 주시면 답변드리겠습니다..
다음 SENT 관련글은 MACH SYSTEMS의 SAE J2716(SENT) to RS-232 Gateway를 사용하여 SENT통신을 적용한 사례를 블로그 하겠습니다.
'SENT통신' 카테고리의 다른 글
[SPC통신] 1강. SPC Protocol 소개 (2) | 2023.02.15 |
---|---|
[SENT통신] 3강. SENT/SAE J2716 to RS-232 Module 사용하기 (1) | 2022.09.07 |
[SENT통신] 1강. SENT(Single Edge Nibble Transmission)/SAE J2716 개요 (2) | 2022.09.06 |
댓글