사용자 도구

사이트 도구

English

cublocapp:an61004:index

AN61004 - HMI와 큐블록 연결해서 온도센서 값 읽어오기

ComfileHMI 에서 MSB630TA-DC 에 연결된 온도센서(NTC 서미스터)를 읽어와 HMI 에 표시하는 샘플 프로젝트입니다.

프로젝트 파일 과 큐블록 소스 다운로드

큐블록 MSB 소스 프로그램

'=================================================
'
'		MSB rs485 CH3 으로 ML-NTC2 온도변환모듈 연결후 HMI에 온도값 표시  
'
'=================================================
 
' 큐블록 제품에 rs485포트가 있는 제품은 ML-NTC2 바로연결 가능하며, rs232만 있다면 컨버터 사용하여 연결해야함. 
 
#include "msb6xx"
                               ' ======= HMI 통신을 위한 채널 오픈
Opencom 1,115200,3,100,100     ' 채널1을 115200,8,none,1stopbit로  오픈
Set Modbus 1,1,100             ' 모드버스 RTU 시작, 슬레이브 어드레스는 1,  수신응답은 100 (약 10mS)
Usepin 8,In                    ' 레더에서 사용될 입출력 포트설정 
Usepin 9,In 
Usepin 10,In 
Usepin 11,In 
Usepin 12,In 
Usepin 13,In 
Usepin 14,In 
Usepin 15,In 
Usepin 16,In 
Usepin 17,In 
Usepin 18,In 
Usepin 19,In 
Usepin 20,In 
Usepin 21,In 
Usepin 22,In 
Usepin 23,In 
Usepin 20,In
Usepin 32,Out
Usepin 33,Out
Usepin 34,Out
Usepin 35,Out
Usepin 36,Out
Usepin 37,Out
Usepin 38,Out
Usepin 39,Out
Usepin 40,Out
Usepin 41,Out
Usepin 42,Out
Usepin 43,Out
Usepin 44,Out
Usepin 45,Out
Set Ladder On                    ' 레더시작 
 
Dim K As Byte							' 변수 선언
Dim txb(10) As Byte
Dim c As Integer 
Dim  data(10) As Byte
Dim  data1 As Long
 
On Recv3 Gosub RCV_RTN   '  ch3 수신 인터럽트, 데이터가 들어오면 RCV_RTN
Ramclear
 
Do                       
 	MLNTC_TX 1,0,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
		'==수신값 디버그창에서 확인 ==
		'Debug Dec data(0),Cr   'slave address   수신된패킷내용은 온도모듈 설명서 참조
		'Debug Dec data(1),Cr   'function
		'Debug Dec data(2),Cr   'byte count 
		'Debug Dec data(3),Cr   'data(high)
		'Debug Dec data(4),Cr   'data(low)
		'Debug Hex data(5),Cr	'data(high)
		'Debug Hex data(6),Cr   'data(low)
		'Debug Hex data(7),Cr   'crc
		'Debug Hex data(8),Cr   'crc   
		'==============================
		data1.BYTE3 =data(3)   '온도값만 변수에 저장
		data1.BYTE2 =data(4)	
		data1.BYTE1 =data(5)
		data1.BYTE0 =data(6)
		_d(0)=data1.Word0 	  'CH0 온도값 D0 저장 
		_d(1)=data1.Word1 	  'CH1 온도값 D1 저장 
		'Debug Dec data1.Word1,Cr 
	Endif
	If K=9 Then    '9바이트 수신시 수신버퍼 clear
		K=0
		Bclr 3,0
	Endif	
Return
 
  Sub MLNTC_TX( _slavead As Byte,_startad As Byte, _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

한단계 뒤로

cublocapp/an61004/index.txt · 마지막으로 수정됨: 2017/10/19 23:19 저자 Comfile Technology