사용자 도구

사이트 도구

English

ml-ntc2:index

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
ml-ntc2:index [2018/02/09 17:14]
Comfile Technology [큐블록 연결 예제]
ml-ntc2:index [2021/05/17 16:08] (현재)
Comfile Technology [ML-NTC2의 사양]
줄 1: 줄 1:
 +======ML-NTC2 2채널 써미스터 온도변환 모듈 ======
 +
 +ML-NTC2 모듈은 NTC 써미스터 온도센서를 측정할 수 있는 2채널 소형 온도변환모듈 입니다. ​
 +
 +{{ :​ml-ntc2:​ml_ntc2_a.jpg?​nolink |}}
 +
 +-40도 ~ 99도까지 측정할 수 있는 실용적인 저가형 온도변환 모듈입니다. 통신 방식은 RS485이며 MODBUS RTU 프로토콜을 이용하여 측정된 온도값을 읽어올 수 있습니다. 최대 15개까지 동일 선로에 연결할 수 있습니다. ​
 +
 +주로 큐블록/​모아콘 또는 MCU와 연결하여 사용합니다. 여러분은 온도변환 테이블과 변환공식등은 신경쓰실 필요없이 직접 온도값을 읽어와서 사용하실 수 있습니다. 센서이상유무 (오픈과 쇼트등)도 체크합니다.
 +
 +
 +=====ML-NTC2의 사양 =====
 +
 +  * 전원입력 : 5VDC
 +  * 센서 TYPE : NTC 10K옴(3970)
 +  * 측정범위 : -40℃ ~ 99℃
 +  * 사용습도 : 35 ~ 85%RH
 +  * 정밀도 : ± 1%
 +  * 크기 : 42mm X 26mm
 +  * 통신방식 : RS485 **//​(57600보레이트,​ 8비트, 1스톱비트)고정,​ NONE패리티//​** ​ / 변경불가
 +  * 프로토콜 : MODBUS-RTU
 +
 +
 +=====각부의 기능 =====
 +
 +{{ :​ml-ntc2:​1-4각부의_설명.png | }}
 +
 +^ID 설정 스위치 \\ (슬레이브 어드레스) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
 +^  1  |    |  on  |    |  on  |    |  on  |    |  on  |    |  on  |    |  on  |    |  on  |    |  on  |   
 +^  2  |    |    |  on  |  on  |    |    |  on  |  on  |    |    |  on  |  on  |    |    |  on  |  on  |   
 +^  3  |    |    |    |    |  on  |  on  |  on  |  on  |    |    |    |    |  on  |  on  |  on  |  on  |   
 +^  4  |    |    |    |    |    |    |    |    |  on  |  on  |  on  |  on  |  on  |  on  |  on  |  on  |   
 +
 +  * 1~15까지 사용가능,​ 0번은 사용할 수 없음
 +  * 공백은 OFF를 의미함
 +
 +=====측정온도 데이터처리 =====
 +
 +ML-NTC2 센서로부터 -40℃ ~ 99℃ 의 값을 2 Byte의 data값으로 반환하고 예외 상황이 발생하면 해당 에러코드를 반환합니다.
 +
 +==== 양수 데이터처리 ====
 +
 +기본적으로 곱하기 100한 온도값을 반환합니다. 2054(0x0806) 을 반환한다면 20.54℃ 를 뜻하는 것입니다.
 +
 +==== 음수 데이터처리 ====
 +-40℃ ~ 0℃의 음수의 온도 값은 data값의 최상위 비트가 1이 됩니다.
 +**즉, -20.54℃는 34822(0x8806) 값을 반환합니다.**
 +음수의 온도 값을 처리하기 위해서는 최상위 비트를 비교하여 32768(0x8000)값을 빼주면 됩니다.
 +
 +==== 에러 데이터 ====
 +  * 온도센서 Open일 때 : 22222
 +  * 온도센서 Short일 때 : 22229
 +  * 측정온도 120도 이상일 때 : 22223
 +  * 측정온도 -40도 이하일 때 : 22224
 +
 +=====통신 패킷 =====
 +ML-NTC2의 슬레이브 어드레스(Slave address)는 DIP스위치로 설정하며,​
 +센서 체널0, 1의 시작어드레스(Start address)는 500(0x01F4),​ 501(0x01F5) 이며, Function은 0x03(Word read)를 사용하여야 합니다.
 +아래는 ML-NTC2의 온도 값을 읽기 위한 통신패킷 설명 및 예제 입니다. ​
 +
 +**//​☞기존 시작어드레스(Start address) 각 체널별로 0, 1주소값이 500, 501로 변경되었습니다. 기존 사용자는 유의하시기 바랍니다.//​**
 +
 +====Request====
 +{{:​ml-ntc2:​1-2_페킷_req_.png|}}
 +  * Slave address(ID) : 읽어올 모듈의 ID스위치 값 사용합니다.
 +  * Function : 1워드를 읽을 수 있는 0x03(Word Read)을 사용합니다.
 +  * Start address : 체널0은 0x01F4(500),​ 체널1은 0x01F5(501)를 사용합니다.
 +  * Length : 읽어올 체널수 1, 또는 2 사용합니다.
 +  * CRC: Slave address부터 Length(low)까지의 CRC16의 값.
 +
 +==== Response====
 +{{:​ml-ntc2:​1-3_페킷_rep_.png|}}
 +  * Slave address(ID) : 읽어온 모듈의 ID스위치(Slave address) 값
 +  * Function : 0x03고정(Word Read)
 +  * Byte count : DATA의 BYTE 개수
 +  * data : 측정된 온도의 값 (0x0806 = 2054 => 20.54℃)
 +  * CRC : Slave address부터 Data(Low)까지의 CRC16의 값.
 +
 +=====컴파일 제품군과의 결선 =====
 +  * MSB 제품군 결선
 +{{ :​ml-ntc2:​msb제품군_결선:​1-5_msb_.png | }}
 +  * CUSB 제품군 결선
 +{{ :​ml-ntc2:​cusb제품군_결선:​1-6_cusb_.png | }}
 +  * MOACON 결선
 +{{ :​ml-ntc2:​moacon_견선:​1-7_moacon_.png | }}
 +
 +
 +=====제품구성=====
 +
 +  * ML-NTC2 제품 (보드)
 +  * NTC 서미스터 2개
 +  * 5선 케이블 1개
 +
 +{{ :​ml-ntc2:​ml_ntc2_full_a.jpg?​nolink&​400 |}}
 +
 +MSB시리즈중 RS485포트가 있는 모델에는 바로 연결가능합니다.
 +
 +{{ :​ml-ntc2:​dsc04031.jpg?​nolink&​400 |}}
 +
 +기본적으로 포함되어 있는 NTC서미스터를 케이블형 NTC서미스터(추가 구매) 로 바꾸면, 원격지에 있는 온도를 측정할 수 있습니다.
 +
 +{{:​ml-ntc2:​ntc2.png?​nolink|}}
 +
 +추가 구매한 케이블형 NTC서미스터 끝부분에 있는 모렉스 콘넥터 (본래 MSB시리즈에 결합할 수 있는 형태로 만든 제품이기 때문에 모렉스형으로 되어 있음)를 제거하신뒤 터미널 블록에 연결하시면 됩니다. 극성은 따로 없습니다.
 +
 +{{ :​ml-ntc2:​ntccalbe.png?​nolink |}}
 +
 +
 +=====큐블록 연결 예제=====
 +
 +큐블록 MSB 에서 RS485 채널3에 연결된 온도센서(NTC 서미스터)를 읽어와 DEBUG창에 표시하는 샘플 프로젝트입니다. ​
 +
 +
 +
 +{{ :​ml-ntc2:​msb_ntc2_.zip |Cubloc 소스 다운로드}}
 +
 +{{ :​ml-ntc2:​msb_ntc2.jpg?​700 |}}
 +
 +
 +<​html>​
 +<​center><​iframe width="​600"​ height="​338"​ src="​https://​www.youtube.com/​embed/​Oon6LPdRO3I?​ecver=1"​ frameborder="​0"​ allowfullscreen></​iframe></​center>​
 +</​html>​
 +
 +===== 소스코드 =====
 +
 +<code xbasic>
 +
 +'​=================================================
 +'
 +' MSB rs485 CH3 으로 ML-NTC2 온도변환모듈 연결후 HMI에 온도값 표시  ​
 +'
 +'​=================================================
 +
 +' 큐블록 제품에 rs485포트가 있는 제품은 ML-NTC2 바로연결 가능하며,​ rs232만 있다면 컨버터 사용하여 연결해야함. ​
 +
 +#include "​MSB6XX"​
 +                            ​
 +Dim K As Byte
 +Dim txb(10) As Byte
 +Dim c As Integer ​
 +Dim data(10) As Byte
 +Dim data1 As Long
 +Dim Ch0 As String
 +Dim Ch1 As String
 +On Recv3 Gosub RCV_RTN ​  ' ​ ch3 수신 인터럽트,​ 데이터가 들어오면 RCV_RTN
 +Ramclear
 +
 +Do                       
 +   ​MLNTC_TX 1,​500,​2 ​       ' ​  ​*슬레이브어드레스 (ID설정), ​
 +                         ' ​  ​*시작어드레스(Start address)채널0은 0,  채널1은 1
 +                         ' ​  ​*읽어올 채널수 1, 또는 2 
 +   Delay 100             ' ​  100ms 주기
 +Loop
 + 
 +RCV_RTN: '​수신 데이터 값 
 +   If Blen(3,0) > 0 Then '​버퍼에 데이터 수신시  ​
 +      data(K)=Get(3,​1) ​  '​수신된 패킷중 9바이트 data()배열 변수에 저장 ​
 +      Incr K
 +      data1.BYTE3 =data(3) ​  '​온도값만 변수에 저장
 +      data1.BYTE2 =data(4)
 +      data1.BYTE1 =data(5)
 +      data1.BYTE0 =data(6)
 +
 +      Ch0=Dp(data1.Word1)
 +      Ch1=Dp(data1.Word0)
 + 
 +      Debug "​CH0:",​ Left(Ch0,​2),"​.",​Right(Ch0,​2) ,Cr
 +      Debug "​CH1:",​ Left(Ch1,​2),"​.",​Right(Ch1,​2) ,Cr
 +   Endif
 +   If K=9 Then    '​9바이트 수신시 수신버퍼 clear
 +      K=0
 +      Bclr 3,0
 +   ​Endif
 +Return
 +
 +Sub MLNTC_TX( _slavead As Byte,​_startad As Integer, _lench As Integer ) '​송신 데이터 전송 값 
 +    txb(0)= _slavead
 +    txb(1)= 3
 +    txb(2)=_startad.Byte1
 +    txb(3)=_startad.Byte0
 +    txb(4)=_lench.Byte1
 +    txb(5)=_lench.Byte0
 +    Getcrc c,txb,6 ' ┐
 +    txb(6)=c.Byte1 ' │ 자동 계산하여 넣은 CRC값 ​
 +    txb(7)=c.Byte0 ' ┘
 +    Puta 3,​txb,​8 ​  '​ 배열에 저장됐던 데이터값 송신 ​
 +End Sub  ​
 +</​code>​
 +
 +[[:​index|Comfile Technology'​s Document Library]]
 +
 +
 +
 +