티스토리 뷰

안녕하세요. 구스입니다. 


오늘은 LabVIEW와 NI XNET을 이용한 린통신에 대해서 알아볼까 합ㄴ디ㅏ. 


LIN통신은 다른 통신과는 달리 NI XNET 함수를 사용할 때 Data를 무조건 넣어야 합니다. Data가 비어 있는 상태로 데이터를 전송하게 되면 LabVIEW 코드 상에서 에러를 발생시키며 데이터 전송이 되지 않습니다. 


LIN통신은 CAN통신과 달리 스케줄링을 사용합니다. LIN 통신에서 Header만을 보내기 위해서는 이 스케줄링을 사용하면 됩니다. 


먼저 LIN통신에서 사용하는 Database를 한번 살펴봅시다. 

 



LIN 데이터베이스에는 Schedules 부분이 있습니다.


Schedules 부분의 의미는 LIN_CONTROL, LIN_STATE라는 메시지가 10ms 마다 메시지를 주고 받는다는 의미가 됩니다. Schedule 부분은 Master가 관장을 합니다.


Data를 실어 보내기 위해서는 아래와 같이 Output Frame List에 출력할 IO를 선택을 하고 전송을 하면 됩니다. 


 


린통신에서 Header만 Master가 Slave에 보내기 위해서는 어떻게 해야할까요?


Output Frame List에는 적지않고, Input Frame List에 Schedules에 포함된 클러스터를 선택하게 되면 통신 시작 시 Master는 Input Frame List와 Schedules에 동시에 들어가 있는 클러스터는 Data 없이 Slave로 전송을 합니다.


Slave는 이 메시지를 받고 추가적인 내용을 넣어서 Master에게 재 전송을 하면 Master는 Input Frame 부분에서 Slave가 전달하고자는 메시지를 전달 받을 수 있습니다. 


아래와 같이 설정을 하게 되면 While문의 타이밍에 맞게끔 Master는 ID_DATA, LIN_CONTROL, LIN_STATE 메시지를 전송하게 되지만, ID_DATA는 사용자가 넣고 자는 데이터가 포함이 되어 전송이 되고 나머지 메시지인 LIN_CONTROL, LIN_STATE는 헤더만 Slave로 전송이 되게 됩니다.

 



이 글에서는 LabVIEW LIN통신 상에서 Data(Payload) 없이 메시지를 보내는 방법에 대해서 알아보았습니다. 

그럼 이만 줄이겠습니다.


이 글이 도움이 되셨으면 아래의 하트를 눌러주세요.



댓글