2010년 3월 1일 월요일

NI USB-8476 Module


National Instrument LIN Module 사용법.

 

마침 프로그램 새롭게 개발하는게 있어서 관련 자료를 올림.

 

일단 "LIN" 이라는 것을 이해해야 하는데 이것이 안들어본 사람들은 엄청나게 헷갈리는 타입의 통신일 수도 있습니다.

 

LIN 의 프레임의 종류는 여러가지가 있습니다만, 실제로 쓰게 되는것은 한 3개 정도 됩니다.

 

1. Full Frame 방식

 - Header 와 Data 를 동시에 지정하여 날려주는 타입입니다. 쉽게 TCP 생각 하시면 됩니다.

   주거니 받거니...

2. Header Response 방식

 - Header 만 날려주면 (내부적으로) 자동으로 Data 들이 따라옵니다.

3. Error / Sleep

 - 뭐 굳이 설명안해도 LIN 은 WakeUp 과 Sleep 을 반복하게 설계되어있습니다.

   (결국 전력 소모를 줄이기 위해서 일정 시간 호출이 없으면 MICOM 이라던가 통신 수단들 자체가 저전력 모드로 가는것을 Sleep 이라고 부르는 것 같습니다. 그리고 WakeUp 역시 다른 수단이 필요없이 Packet 을 지속적으로 주게 되면 자동적으로 WakeUp 이 됩니다.)

 

뭐 일단 프레임 종류는 저렇게 됐습니다. 이제 중요한건 VisualBasic 에서 어떻게 다뤄야 봐야겠죠 ?

 

일단 소스 코드 나갑니다.

이 예제에서 사용된 api 들은 NI-CAN 라이브러리에 VB 예제들을 보면 기본적으로 들어있는

Module 파일들을 포함시켜 사용한 예제입니다.

 

Public LinTxRx As Long

 

Call ncOpenObject("LIN0", LinTxRx)

 

'// 속성 값 설정

Call ncSetAttribute(LinTxRx, NC_ATTR_BAUD_RATE, 4, BaudRate)
Call ncSetAttribute(LinTxRx, NC_ATTR_TERMINATION, 4, Term)
Call ncSetAttribute(LinTxRx, NC_ATTR_LIN_CHECKSUM_TYPE, 4, bCheckSum)
Call ncSetAttribute(LinTxRx, NC_ATTR_SELF_RECEPTION, 4, bSelfRec)
Call ncSetAttribute(LinTxRx, NC_ATTR_LOG_BUS_ERROR, 4, bBusErr)

'// 필자의 경우에는 bCheckSum 타입을 True 로 설정하지 않으면 Response Type 의 Data 가 따라붙지 않아서 고생하였음... bBusErr 항목도 영향을 미침..

'// 적용했었던 옵션 값

'// BaudRate - 19200

'// Term - 1

'// bCheckSum - 1

'// bSelfRec - 0

'// bBusErr - 0

'// -----------------

 

Call ncAction(LinTxRx, NC_OP_START, 0)

 

 

 

이 이후에는 포함된 API 예제들을 분석해보면 이제 LIN 통신이여 안녕~~

 

댓글 2개:

  1. @Rain - 2010/07/02 17:33
    어야 저거땜에 나 3일 고생했음 ㅋㅋㅋㅋㅋㅋㅋ

    답글삭제