====== AN32007 - UIF-5K와 큐블록 연결 ======
UIF-5K 는 큐블록 MSB 시리즈용 유저인터페이스로도 훌륭합니다.
다음은 큐블록 MSB의 입출력기능 (AD 포함)을 UIF-5K를 가지고 실험하는 프로그램입니다.
{{ :cublocapp:an32007:uif-5k.jpg?nolink |}}
UIF-5K 전면 스위치에 다음과 같은 기능을 할당해 놓았습니다.
F1 : Output State, F2 : Input State, F3 : 0~20mA State, F4 : 0~10V State, F5 : Home
결선은 다음과 같이 하였습니다.
{{ :cublocapp:an32007:msbuifdiagram.jpg?nolink |}}
===== 소스 프로그램 =====
{{ :cublocapp:an32007:msb_uif5k.zip |}}
#include "MSB6XX"
Dim RX_KEY As Integer
Dim i As Integer
Dim P_inout As Integer
Opencom 1, 115200, 3, 30, 20
Set Uif 2, 1
On Recv1 Gosub ABC
Ramclear
Cls
Delay 200 'CLCD 클리어 완료 지연시간
Print 27, 90, 1 '부저 ON
Csroff '커서 on/off
HOME_DISPLAY
Do
'### 입력 P8,9,10,11을 읽어 P32,33,34,35으로 출력 ###
For i=8 To 11O
P_inout = In(i)
If P_inout = 1 Then High(i+24)
Elseif P_inout = 0 Then Low(i+24)
Delay 10
Next
Display_main
Loop
'### UIF-5K이의 스위치가 눌렸을때 실행되는 인터럽트 함수 ###
ABC:
RX_KEY=Get(1,1)
Cls
Delay 100
Display_main
Return
'### 발생된 키번호의 DISPLAY PAGE 선택 ###
Sub Display_main ()
Select Case RX_KEY
Case 1
F1_OUTPUT
Case 2
F2_INPUT
Case 3
F3_AD_0_20mA
Case 4
F4_AD_0_10VDC
Case 5,0
HOME_DISPLAY
End Select
Delay 100
End Sub
'#### HOME F5키 발생시 DISPLAY ###
Sub HOME_DISPLAY ()
Locate 0,0
Print "==[MSB612 DISPLAY]=="
Locate 0,1
Print " F1:Output F2:Input ""
Locate 0,2
Print " F3:0-20mA F4:0-10V""
Locate 0,3
Print " F5:HOME "
End Sub
'#### OUTPUT STATE F1키 발생시 DISPLAY ###
Sub F1_OUTPUT ()
Dim on_off As Byte
Locate 0,0
Print "===[OUTPUT STATE]==="
Locate 0,1
Print " OUTPUT PORT"
Locate 0,2
Print " "
Locate 0,2
Print " =>"
For i=32 To 35
on_off = Outstat(i) '출력상태를 읽어옴
If on_off = 1 Then '출력상태의 포트를 표시함
Print Dec i
Print " "
Endif
Next
End Sub
'#### INPUT STATE F2키 발생시 DISPLAY ###
Sub F2_INPUT ()
Dim IN_ON As Byte
Locate 0,0
Print "===[INPUT STATE]==="
Locate 0,1
Print " INPUT PORT"
Locate 0,2
Print " "
Locate 0,2
For i=8 To 15
IN_ON = In(i) '입력상태를 읽어옴
If IN_ON = 1 Then '입력이 HIGH상태의 포트를 표시함
Print Dec i
Print " "
Endif
Next
End Sub
'#### 0~10VDC F3키 발생시 DISPLAY ###
Sub F3_AD_0_20mA ()
Dim AD_VAL As Integer
Cls
Delay 5
Locate 0,0
Print "===[0-20mA STATE]==="
Locate 0,2
AD_VAL = Adin(0) 'ADC 상태 값을 읽어옴
Print " AD0:", Dec AD_VAL '변수 AD_VAL값을 LCD에 표시함
Locate 11,2
AD_VAL = Adin(1)
Print "AD1:", Dec AD_VAL
Locate 0,3
AD_VAL = Adin(2)
Print " AD2:", Dec AD_VAL
Locate 11,3
AD_VAL = Adin(3)
Print "AD3:", Dec AD_VAL
End Sub
'#### 0~10VDC F4키 발생시 DISPLAY ###
Sub F4_AD_0_10VDC ()
Dim AD_VAL As Integer
Cls
Delay 5
Locate 0,0
Print "===[0-10VDC STATE]==="
Locate 0,2
AD_VAL = Adin(4)
Print " AD4:", Dec AD_VAL
Locate 11,2
AD_VAL = Adin(5)
Print "AD5:", Dec AD_VAL
Locate 0,3
AD_VAL = Adin(6)
Print " AD6:", Dec AD_VAL
Locate 11,3
AD_VAL = Adin(7)
Print "AD7:", Dec AD_VAL
End Sub
===== 실행 동영상 =====