Anda di halaman 1dari 12

Microcontroller Based SCADA

Monitoring Station
RF Transmitter 433MHZ

Industry
Motor Stopped
RF Transmitter 433MHZ

Motor Stopped Set Speed1 Set Speed2

Relay1
RF Receiver 433MHZ

Relay3 Relay4
RF Receiver 433MHZ

Set Speed3 Set Speed4

Relay2

Temperature Sensor

Set Temp2 Set Temp1

Fig.1. Block Diagram of Microcontroller Based Remote Monitoring & Control

Generally in a remote control system there is a one way traffic control is possible ie user can control device from remote end but with this composition user did not know exact status of device at remote end since there is no feedback from remote end to user end. Here data transmission occur from both side ie from user to remote location as well as from remote site to user location. Data transmission occur at a frequency of 433MHZ from both side. Further motor temperature is monitored continously at industry site and its condition is transmitted by RF to monitoring station

Industrial Site
12 V DC_1 + 12 V DC_1 + 12 V DC_1 +

+ 5V
d5

+ 5V
D6

RLY1 From Pin 15 Q1 R3

LED1 R4
R5 R6

RLY2 From Pin 16 Q2 R7

LED2 R8 From Pin 17

D7

Set Temp1

Set Temp2

D8

40 39 38 37 36 35 34 33 21 22

29 28 27

PIC16F877A
4 3 32 11 1 13 4mhz 12 31 2 R2 Lm35 3 5 4 2 2 8 RFRX1 7 6 1

+
+ 5V
22pf RST 22pf

LCD D3 10 D2 9 D1 8 D0 7 VLC VCC VSS VC 3 2 1 16

15 VA

D7 D6 D5 D4 14 13 12 11

C4 Pr1

12V Transformer +12 V DC D2


230V A.C.

+5 V DC 7805 2 3 C3
+

D1 C1

1 C2

D3

D4

R/W RS 5 4 En 6

+
1

RLY3

LED3 R10

Q3 R9

12 V DC_1

RLY4 From Pin 18 Q4 R11

LED4 R12

2 4 3 RFTX1 1

+ 5V
R9

Monitoring Side
+ 5V + 5V + 5V + 5V
12 K Set Speed1 Set Speed2 12 K Set Speed3 12 K Set Speed4

40 39 38 37 36 35 34 33

29 28 27

Ic3
4 3 32 11 1 13 X1 12 2 31 2 R2 5 RFRX2 4 7 6 1 8 3 RFTX3 1 4

+
+ 5V
C5 RST C6

LCD D3 10 D2 9 D1 8 D0 7 VLC VCC VSS VC 3 2 1 16

15 VA

D7 D6 D5 D4 14 13 12 11

C4 Pr1

12V Transformer +12 V DC D2


230V A.C.

+5 V DC Ic1 2 3 C3
+

D1 C1

1 C2

D3

D4

R/W RS 5 4 En 6

+
12 K

+ +

+ 5V
R9

Monitoring Side
Start

Initialize Ports and RF Modules

Read RF Modules

Display Status Of Industry

Set Motor Speed Via RF Link

Industrial Site
Start Initialize Ports and RF Modules

Read RF Module and Set Temperature

Raise Alarm

Is Temperatre Exceed Limit

Read RF Data and Send Motor Status Viz=a RF

Control Relay Based on RF Data Received

Monitoring Station

list P=16F877A #include <P16F877A.INC> __config _WDT_OFF & _XT_OSC & _CP_ON & _CPD_ON & _BODEN_OFF & _MCLRE_OFF & _PWRTE_ON #DEFINE CH1RB,0 #DEFINE CH2RB,1 #DEFINE CH3RB,2 #DEFINE CH4RB,3 #DEFINE RS,PORTD.F4 #DEFINE RW,PORTD.F5 #DEFINE OutCod,PSW #DEFINE En, PORTD.F6 #DEFINE CH5RB,4 #DEFINE CH6RB,5 #DEFINE CH7RB,6 #DEFINE CH8RB,7 #DEFINE IRRC,7 #DEFINE TOG_BIT TOGGLE,0 #DEFINE CH1_CMD0X01 #DEFINE CH2_CMD0X02 #DEFINE CH3_CMD0X03 #DEFINE CH4_CMD0X04 #DEFINE CH5_CMD0X05 #DEFINE Point, 0x54 #DEFINE CH6_CMD0X06 #DEFINE CH7_CMD0X07 #DEFINE CH8_CMD0X08 CNT1EQU20H CNT2EQU21H CNT3EQU22H CNT4EQU23H TOGGLEEQU24H CMDEQU25H ORG000 BCF RF BANKSEL TRISDB CLRW ; MOVWF TRISB BANKSEL PORTB CLRF PORTB GOTO Start Onems MOVLW D'249' MOVWF Timer1 Loop1 NOP DECFSZ Timer1 GOTO Loop1 RETURN Xms MOVWF TimerX LoopX CALL Onems DECFSZ TimerX GOTO LoopX RETURN PulseE

BSF PORTD,E CALL Onems BCF PORTB,2 CALL Onems RETURN Send MOVWF OutCod ANDLW 0F0 MOVWF PORTB BTFSC Select,RS BSF PORTB,RS CALL PulseE CALL Onems SWAPF OutCod MOVF OutCod,W ANDLW 0F0 MOVWF PORTD BTFSC Select,RS BSF PORTD,RS CALL PulseE CALL Onems RETURN RETLW 'C' ; Pointer = 0 RETLW 'O' ; Pointer = 1 RETLW 'N' ; Pointer = 2 RETLW 'S' ; Pointer = 3 RETLW 'T' ; Pointer = 4 RETLW ':' ; Pointer = 5 RETLW '0' ; Pointer = 6 RETLW '1' ; Pointer = 7 RETLW '2' ; Pointer = 8 RETLW '3' ; Pointer = 9 RETLW '4' ; Pointer = 10 RETLW '5' ; Pointer = 11 RETLW '6' ; Pointer = 12 RETLW '7' ; Pointer = 13 RETLW '8' ; Pointer = 14 RETLW '9' ; Pointer = 15 RETLW 'V' ; Pointer = 0 RETLW 'A' ; Pointer = 1 RETLW 'R' ; Pointer = 2 RETLW 'I' ; Pointer = 3 RETLW 'A' ; Pointer = 4 RETLW 'B' ; Pointer = 5 RETLW 'L' ; Pointer = 6 RETLW 'E' ; Pointer = 7 RETLW ' ' ; Pointer = 8 RETLW '=' ; Pointer = 9 RETLW ' ' ; Pointer = 10 Init MOVLW B'100' CALL Xms MOVLW 0F0 MOVWF Select MOVLW 0x30 MOVWF PORTB CALL PulseE MOVLW D'5' CALL Xms CALL PulseE CALL Onems CALL PulseE BCF PORTB,4 CALL PulseE

MOVLW 0x28 CALL Send MOVLW 0x08 CALL Send MOVLW 0x01 CALL Send MOVLW 0x06 CALL Send MOVLW 0x80 CALL Send MOVLW 0x0C CALL Send RETURN OutMes CLRF Point BSF Select,RS Mess1 MOVF Point,W CALL Line1 CALL Send INCF Point MOVF Point,W SUBLW D'16' BTFSS STATUS,Z GOTO Mess1 MOVLW 0xC0 BCF Select,RS CALL Send CLRF Point Mess2 MOVF Point,W CALL Line2 BSF Select,RS CALL Send INCF Point MOVF Point,W SUBLW D'11' BTFSS STATUS,Z GOTO Mess2 RETURN OutVar CLRF Var MOVLW 0X30 ADDWF Var Next MOVF Var,W BSF Select,RS CALL Send MOVLW 0xCB BCF Select,RS CALL Send MOVLW D'250' CALL Xms INCF Var MOVF Var,W SUBLW 0x3A BTFSS STATUS,Z GOTO Next GOTO OutVar Start CALL Init CALL OutMes GOTO OutVar

BSFSTATUS,RP0 CALL0X3FF MOVWFOSCCAL BCFSTATUS,RP0 CALLDEBOUNCE BCFSTATUS,RP0 BCFINTCON,GIE BCFTOG_BIT MAIN:SLEEP BTFSSCH1 GOTODO_CH1 BTFSSCH2 GOTODO_CH2 BTFSSCH3 GOTODO_CH3 GOTOMAIN DO_CH1: CALLDEBOUNCE BTFSCCH1 GOTOMAIN MOVLWCH1_CMD MOVWFCMD CALLSEND_Data BTFSSCH1 GOTO$-1 CALLDEBOUNCE GOTOMAIN DO_CH2: CALLDEBOUNCE BTFSCCH2 GOTOMAIN MOVLWCH2_CMD MOVWFCMD CALLSEND_Data BTFSSCH2 GOTO$-1; CALLDEBOUNCE GOTOMAIN DO_CH3: CALLDEBOUNCE BTFSCCH3 GOTOMAIN MOVLWCH3_CMD MOVWFCMD CALLSEND_Data BTFSSCH3 GOTO$-1 CALLDEBOUNCE GOTO MAIN DO_CH4: CALLDEBOUNCE BTFSCCH4 GOTOMAIN MOVLWCH4_CMD; MOVWFCMD CALLSEND_Data BTFSSCH4

GOTO$-1 CALLDEBOUNCE GOTOMAIN DO_CH5: CALLDEBOUNCE BTFSCCH5 GOTOMAIN MOVLWCH5_CMD MOVWFCMD CALLSEND_Data BTFSSCH5 GOTO$-1; CALLDEBOUNCE GOTOMAIN DO_CH6: CALLDEBOUNCE BTFSCCH6 GOTOMAIN MOVLWCH6_CMD MOVWFCMD CALLSEND_Data BTFSSCH6 GOTO$-1 CALLDEBOUNCE GOTOMAIN DO_CH7: CALLDEBOUNCE BTFSCCH7 GOTOMAIN MOVLWCH7_CMD MOVWFCMD CALLSEND_Data BTFSSCH7 GOTO$-1 CALLDEBOUNCE GOTOMAIN DO_CH8: CALLDEBOUNCE BTFSCCH8 GOTOMAIN MOVLWCH8_CMD MOVWFCMD CALLSEND_Data BTFSSCH8 GOTO$-1 CALLDEBOUNCE GOTOMAIN LOGIC0: MOVLW.32 MOVWFCNT1 LOG0_1: BSFIR BCFIR NOP; GOTOLOG0_1; CALLDELAY_OFF RETURN

LOGIC1: CALLDELAY_OFF MOVLW.32 MOVWFCNT1; LOG1_1: BSFIRGOTO$+1 BCFIR NOP; DECFSZCNT1,F GOTOLOG1_1; RETURN; DELAY_OFF: MOVLW5 MOVWFCNT3 MOVLW.54 MOVWFCNT4 DECFSZCNT4,F GOTO$-1 DECFSZCNT3,F GOTO$-5 RETURN SEND_Data: CALLLOGIC1 CALLLOGIC1 BTFSSTOG_BIT GOTO$+3 CALLLOGIC1 GOTO$+2 CALLLOGIC1 CALLLOGIC0 CALLLOGIC1 CALLLOGIC1 BCFSTATUS,C RLFCMD,F RLFCMD,F MOVLW6 MOVWFCNT2 RLFCMD,F BTFSSSTATUS,C GOTO$+3 CALLLOGIC1 GOTO$+2 CALLLOGIC0 DECFSZCNT2,F GOTO$-7 RETLW0; DEBOUNCE: MOVLW.1 MOVWFCNT1 DEL_1: MOVLW.20 MOVWFCNT2 DEL_2: CLRFCNT3 DEL_3: DECFSZCNT3,F GOTODEL_3

DECFSZCNT2,F GOTODEL_2 DECFSZCNT1,F GOTODEL_1 RETLW0 END

Industrial Site list P=16F877A #include <P16F877A.INC> __config _WDT_OFF & _XT_OSC & _CP_ON & _CPD_ON & _BODEN_OFF & _MCLRE_OFF & _PWRTE_ON #DEFINE OUT1_M0x01 #DEFINE OUT2_M0x02 #DEFINE OUT3_M0x04 #DEFINE OUT4_M0x08 #DEFINE OUT5_M0x10 #DEFINE OUT6_M0x20 #DEFINE OUT7_M0x40 #DEFINE Point, 0x54 #DEFINE OUT8_M0x80 #DEFINE OutCod,PSW #DEFINE TOG_BIT TOGGLE,0 #DEFINE ADDRS 0X0B #DEFINE CH1_CMD0X01 #DEFINE CH2_CMD0X02 #DEFINE CH3_CMD0X03 #DEFINE CH4_CMD0X04 #DEFINE CH5_CMD0X05 #DEFINE CH6_CMD0X06 #DEFINE CH7_CMD0X07 #DEFINE CH8_CMD0X08 #DEFINE RS,PORTD.F4 #DEFINE RW,PORTD.F5 #DEFINE En, PORTD.F6 CNT1EQU20H CNT2EQU21H CNT3EQU22H CNT4EQU23H TEMPEQU24H TOGGLEEQU25H ADDREQU26H CMDEQU27H ORG000 BSFSTATUS,RP0 BSFSTATUS,RP0 MOVLW0X01 BANKSEL TRISDB CLRW ; MOVWF TRISB BANKSEL PORTB CLRF PORTB GOTO Start Onems MOVLW D'249' MOVWF Timer1 Loop1 NOP

DECFSZ Timer1 GOTO Loop1 RETURN Xms MOVWF TimerX LoopX CALL Onems DECFSZ TimerX GOTO LoopX RETURN PulseE BSF PORTD,E CALL Onems BCF PORTB,2 CALL Onems RETURN Send MOVWF OutCod ANDLW 0F0 MOVWF PORTB BTFSC Select,RS BSF PORTB,RS CALL PulseE CALL Onems SWAPF OutCod MOVF OutCod,W ANDLW 0F0 MOVWF PORTD BTFSC Select,RS BSF PORTD,RS CALL PulseE CALL Onems RETURN RETLW 'C' ; Pointer = 0 RETLW 'O' ; Pointer = 1 RETLW 'N' ; Pointer = 2 RETLW 'S' ; Pointer = 3 RETLW 'T' ; Pointer = 4 RETLW ':' ; Pointer = 5 RETLW '0' ; Pointer = 6 RETLW '1' ; Pointer = 7 RETLW '2' ; Pointer = 8 RETLW '3' ; Pointer = 9 RETLW '4' ; Pointer = 10 RETLW '5' ; Pointer = 11 RETLW '6' ; Pointer = 12 RETLW '7' ; Pointer = 13 RETLW '8' ; Pointer = 14 RETLW '9' ; Pointer = 15 RETLW 'V' ; Pointer = 0 RETLW 'A' ; Pointer = 1 RETLW 'R' ; Pointer = 2 RETLW 'I' ; Pointer = 3 RETLW 'A' ; Pointer = 4 RETLW 'B' ; Pointer = 5 RETLW 'L' ; Pointer = 6 RETLW 'E' ; Pointer = 7 RETLW ' ' ; Pointer = 8 RETLW '=' ; Pointer = 9

RETLW ' ' ; Pointer = 10 Init MOVLW B'100' CALL Xms MOVLW 0F0 MOVWF Select MOVLW 0x30 MOVWF PORTB CALL PulseE MOVLW D'5' CALL Xms CALL PulseE CALL Onems CALL PulseE BCF PORTB,4 CALL PulseE MOVLW 0x28 CALL Send MOVLW 0x08 CALL Send MOVLW 0x01 CALL Send MOVLW 0x06 CALL Send MOVLW 0x80 CALL Send MOVLW 0x0C CALL Send RETURN OutMes CLRF Point BSF Select,RS Mess1 MOVF Point,W CALL Line1 CALL Send INCF Point MOVF Point,W SUBLW D'16' BTFSS STATUS,Z GOTO Mess1 MOVLW 0xC0 BCF Select,RS CALL Send CLRF Point Mess2 MOVF Point,W CALL Line2 BSF Select,RS CALL Send INCF Point MOVF Point,W SUBLW D'11' BTFSS STATUS,Z GOTO Mess2 RETURN OutVar CLRF Var MOVLW 0X30 ADDWF Var Next MOVF Var,W BSF Select,RS CALL Send MOVLW 0xCB BCF Select,RS CALL Send MOVLW D'250' CALL Xms INCF Var MOVF Var,W SUBLW 0x3A BTFSS STATUS,Z GOTO Next GOTO OutVar Start CALL Init CALL OutMes GOTO OutVar MOVWFOPTION_REG

MOVLWB'00001000' MOVWFTRISIO CLRFIOCB BCFSTATUS,RP0 BCFINTCON,GIE MAIN: CALLDELAY3500 CALLGET_Data BTFSCSTATUS,C GOTOMAIN MOVFADDR,W XORLWADDRS BTFSSSTATUS,Z GOTOMAIN MOVFCMD,W ANDLW0X03 ADDWFPCL,F GOTOMAIN GOTODO_CH1 GOTODO_CH2 GOTODO_CH3 GOTODO_CH4 GOTODO_CH5 GOTODO_CH6 GOTODO_CH7 GOTODO_CH8 DO_CH1: MOVLWOUT1_M GOTOCHANGE DO_CH2:MOVLWOUT2_M GOTOCHANGE DO_CH3:MOVLWOUT3_M GOTOCHANGE DO_CH4:MOVLWOUT4_M GOTOCHANGE DO_CH5:MOVLWOUT5_M GOTOCHANGE DO_CH6:MOVLWOUT6_M GOTOCHANGE DO_CH7:MOVLWOUT7_M GOTOCHANGE DO_CH8:MOVLWOUT8_M GOTOCHANGE CHANGE: XORWFGPIO,F GOTOMAIN GET_Data: BTFSCIR GOTOGET_Data CLRFTMR0 NOP BCFINTCON,T0IF NOP BTFSCINTCON,T0IF GOTOERR1 BTFSSIR GOTO$-3

MOVFTMR0,W MOVLW0xC8 MOVWFTEMP MOVLW0XFF SUBWFTEMP,W BTFSCSTATUS,C GOTOERR1 MOVLW0XC8 SUBWFTEMP,W BTFSSSTATUS,C GOTOERR1 BTFSCIR GOTO$-1 CALLDELAY1252 BTFSSIR BCFTOGGLE,7 BTFSCIR BSFTOGGLE,7;BTFSSIR GOTO$+4 BTFSCIR GOTO$-1 GOTOREAD; BTFSSIR GOTO$-1 READ: MOVLW5 MOVWFTEMP CLRFADDR READ1: CALLDELAY1252 BTFSSIR BCFSTATUS,C BTFSCIR BSFSTATUS,C RLFADDR,F; BTFSSIR GOTO$+4 BTFSCIR GOTO$-1 GOTO$+3 BTFSSIR GOTO$-1 DECFSZTEMP,F GOTOREAD1 MOVLW6 MOVWFTEMP CLRFCMD CMD1: CALLDELAY1252 BTFSSIR BCFSTATUS,C BTFSCIR BSFSTATUS,C RLFCMD,F; BTFSSIR GOTO$+4 BTFSCIR

GOTO$-1 GOTO$+3 BTFSSIR GOTO$-1 DECFSZTEMP,F GOTOCMD1 MOVLW0X3F ANDWFCMD,F MOVLW0X1F ANDWFADDR,F BCFSTATUS,C RETURN ERR1:BSFSTATUS,C RETURN DEBOUNCE: MOVLW.1 MOVWFCNT1 DEL_1: MOVLW.20 MOVWFCNT2 DEL_2: CLRFCNT3 DEL_3: DECFSZCNT3,F GOTODEL_3 DECFSZCNT2,F GOTODEL_2 DECFSZCNT1,F GOTODEL_1 RETLW0 DELAY1252: MOVLW.1 MOVWFCNT1 REP_1: MOVLW.5 MOVWFCNT2 REP_2: MOVLW.81 MOVWFCNT3 REP_3: DECFSZCNT3,F GOTOREP_3 DECFSZCNT2,F GOTOREP_2 DECFSZCNT1,F GOTOREP_1 GOTO$+1 GOTO$+1 GOTO$+1 GOTO$+1 RETURN DELAY3500: MOVLW.1 MOVWFCNT1 MOVLW.23 MOVWFCNT2 MOVLW.50

MOVWFCNT3 DECFSZCNT3,F GOTO$-1 DECFSZCNT2,F GOTO$-5 DECFSZCNT1,F GOTO$-9 RETLW0 END FINISHED

Anda mungkin juga menyukai