CT1820 으로 여러곳의 온도를 제어하는 시스템을 꾸미고자할 때, 온도센서와 CT1820 을 연결하는 방법에서 문 제가 생깁니다. 온도센서를 직접 CT1820 과 연결할 수 없기 때문입니다.
이때에는 온도센서보다는 저가의 온도콘트롤러를 연결하는 것이 훨씬 효율적입니다. 통신기능을 갖춘 온도콘트 롤러와 CT1820 을 RS485 로 연결하여, 온도콘트롤러로부터 현재온도와 설정온도등의 정보를 불러와 화면에 표 시하고, 조정하도록 할 수 있습니다.
다음은 오토닉스 온도콘트롤러와 CT1820 을 연결하도록 한 소스 프로그램입니다. 모드버스 RTU 프로토콜을 사 용합니다.
#include "CT18XX" Dim I As Integer Dim TX1 As Integer, TY1 As Integer Dim Txb(80) As Byte Dim MBRdata(32) As Byte Dim Crcres As Integer Dim PV As Integer Dim SV As Integer Dim SV2 As Integer Dim PrtV As String * 6 Ramclear Set Rs232 3,19200,3 ' 위에 Inlcude 에서 이미 오픈해두었기에, 보레이트만 조정한다. On Pad Gosub GETTOUCH Font 2,0 Menuset 0,2,200,95,250,120 Menutitle 0,17,4,"UP" Menuset 1,2,255,95,305,120 Menutitle 1,11,4,"DOWN" ' ' 도씨 캐릭터정의 ' Defchr &HDB30,_ &H00,&H00,&H30,&H00,&H48,&H00,&H48,&H00,_ &H30,&HE0,&H01,&H10,&H02,&H00,&H02,&H00,_ &H02,&H00,&H02,&H00,&H02,&H00,&H01,&H10,_ &H00,&HE0,&H00,&H00,&H00,&H00,&H00,&H00 Ct18contrast 150 ' LCD CONTRAST SETTING Font 2,0 Locate 2,2 Print "현재온도" 119 Locate 25,2 Print "설정온도" Do ' 설정온도 MBreadReg 3,1,1003,1 Delay 50 If Blen(3,0) > 5 Then Geta 3,MBRdata,5 SV = MBRdata(3) *256 + MBRdata(4) SV2 = SV PrtV = Dp(SV/10,3,0) + "." + Dp(SV mod 10, 1,0) Locate 25,3 Print PrtV,Chr(&HDB30) Bclr 3,2 Endif ' 현재온도 MBreadReg 3,1,1000,1 Delay 50 If Blen(3,0) > 5 Then Geta 3,MBRdata,5 PV = MBRdata(3) *256 + MBRdata(4) PrtV = Dp(PV/10,3,0) + "." + Dp(PV mod 10, 1,0) Locate 2,3 Print PrtV,Chr(&HDB30) Bclr 3,2 Endif ' 가열측 조작량 MBreadReg 3,1,1004,1 Delay 50 If Blen(3,0) > 5 Then Geta 3,MBRdata,5 PV = MBRdata(3) *256 + MBRdata(4) Locate 2,6 Print "가열측 조작량" PrtV = Dp(PV/10,3,0) + "." + Dp(PV mod 10, 1,0) Locate 3,7 Print PrtV,"%" Bclr 3,2 Endif Delay 200 Loop GETTOUCH: TX1 = Sys(10) TY1 = Sys(11) ' UP KEY If Menucheck(0,TX1,TY1) = 1 Then Menureverse 0 Ct18beep 20 '키터치음 발생 SV2 = SV2 + 10 MBWriteSingleReg 3,1,0,SV2 Delay 50 Bclr 3,2 Menureverse 0 End If ' DOWN KEY If Menucheck(1,TX1,TY1) = 1 Then Menureverse 1 Ct18beep 20 '키터치음 발생 SV2 = SV2 - 10 MBWriteSingleReg 3,1,0,SV2 Delay 50 Bclr 3,2 Menureverse 1 End If Return End Sub MBreadReg(_MBch As Byte, _MBslave As Byte,_MBadr As Integer,_MBlen As Integer) Txb(0) = _MBslave Txb(1) = 4 Txb(2) = _MBadr.Byte1 Txb(3) = _MBadr.Byte0 Txb(4) = _MBlen.Byte1 Txb(5) = _MBlen.Byte0 Getcrc Crcres,Txb,6 Txb(6) = Crcres.Byte1 Txb(7) = Crcres.Byte0 Puta _MBch,Txb,8 End Sub Sub MBWriteSingleReg(_MBch As Byte, _MBslave As Byte,_MBadr As Integer,_MBdata As Integer) Txb(0) = _MBslave Txb(1) = 6 Txb(2) = _MBadr.Byte1 Txb(3) = _MBadr.Byte0 Txb(4) = _MBdata.Byte1 Txb(5) = _MBdata.Byte0 Getcrc Crcres,Txb,6 Txb(6) = Crcres.Byte1 Txb(7) = Crcres.Byte0 Puta _MBch,Txb,8 End Sub
소스를 보시면 온도 (섭씨)기호를 표시하기 위해 Defchr 을 사용해서 코드 &hdb30 에 할당한 것을 보실 수 있습 니다. 이 그림은 자료실에 있는 픽셀 스튜디오를 이용해서 그린것입니다.