Download as pdf or txt
Download as pdf or txt
You are on page 1of 8

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC BÁCH KHOA


KHOA ĐIỆN-ĐIỆN TỬ
BỘ MÔN THIẾT BỊ ĐIỆN


BÁO CÁO BÀI TẬP LỚN


SCADA

Lớp A02
Nguyễn Hữu Hiếu
MSSV:1711292

TP.Hồ Chí Minh, ngày 02, tháng 05, năm 2019

1
BÁO CÁO BÀI TẬP LỚN SCADA
I.Demo Model and Control Tank System using UnityPro
-Set Address of PLC Quantum

-Khối Control

Timer0

Model

2
II. Demo Model and PID Control HeatExchanger using TIA Portal

III. Communication Kepware OPC with Quantum and S7-300 PLC

3
IV. Citect SCADA 8.0 for Tank System and HeatExchanger

4
-Report
FUNCTION
MyReport()
INT col1 = 1;
INT col2 = 3;
INT col3 = 5;
INT col4 = 7;
INT col5 = 9;
INT col6 = 11;
INT col7 = 13;
INT col8 = 15;
INT col9 = 2;
INT col10 = 4;
INT col11 = 6;
INT col12 = 8;
INT col13 = 10;
INT col14 = 12;
INT col15 = 14;
INT col16 = 16;
INT row = 3;
STRING pos1,pos2,pos3,pos4,pos5,pos6,pos7,pos8, pos9, pos10, pos11, pos12, pos13,
pos14, pos15, pos16,a,b,c,d,e,f,g,h,Time_Tank_1, Time_Tank_2, Time_Tank_3,
Time_Tank_4, Time_Tank_5, Time_HeatExchanger_Temp_SP, Time_HeatExchanger_Temp_PV,
Time_HeatExchanger_Power;
REAL Level_1, Level_2, Level_3, Level_4, Level_5, Temp_SP, Temp_PV, Power;
DDEWrite("Excel","Sheet1","R1C1","BAO CAO BAI_TAP_LON_SCADA");
DDEWrite("Excel","Sheet1","R2C1"," Tank_1_Level");
DDEWrite("Excel","Sheet1","R2C2"," Time_Tank_1");
DDEWrite("Excel","Sheet1","R2C3"," Tank_2_Level");
DDEWrite("Excel","Sheet1","R2C4"," Time_Tank_2");
DDEWrite("Excel","Sheet1","R2C5"," Tank_3_Level");
DDEWrite("Excel","Sheet1","R2C6"," Time_Tank_3");
DDEWrite("Excel","Sheet1","R2C7"," Tank_4_Level");
DDEWrite("Excel","Sheet1","R2C8"," Time_Tank_4");
DDEWrite("Excel","Sheet1","R2C9"," Tank_5_Level");
DDEWrite("Excel","Sheet1","R2C10"," Time_Tank_5");
DDEWrite("Excel","Sheet1","R2C11"," HeatExchanger_Temp_SP");
DDEWrite("Excel","Sheet1","R2C12"," Time_HeatExchanger_Temp_SP ");
DDEWrite("Excel","Sheet1","R2C13"," HeatExchanger_Temp_PV ");
DDEWrite("Excel","Sheet1","R2C14"," Time_HeatExchanger_Temp_PV ");
DDEWrite("Excel","Sheet1","R2C15"," HeatExchanger_Power ");
DDEWrite("Excel","Sheet1","R2C16"," Time_HeatExchanger_Power ");
WHILE 1 DO
pos1 = "R" + IntToStr (row) + "C" + IntToStr (col1);
pos2 = "R" + IntToStr (row) + "C" + IntToStr (col2);
pos3 = "R" + IntToStr (row) + "C" + IntToStr (col3);
5
pos4 = "R" + IntToStr (row) + "C" + IntToStr (col4);
pos5 = "R" + IntToStr (row) + "C" + IntToStr (col5);
pos6 = "R" + IntToStr (row) + "C" + IntToStr (col6);
pos7 = "R" + IntToStr (row) + "C" + IntToStr (col7);
pos8 = "R" + IntToStr (row) + "C" + IntToStr (col8);
pos9 = "R" + IntToStr (row) + "C" + IntToStr (col9);
pos10 = "R" + IntToStr (row) + "C" + IntToStr (col10);
pos11 = "R" + IntToStr (row) + "C" + IntToStr (col11);
pos12 = "R" + IntToStr (row) + "C" + IntToStr (col12);
pos13 = "R" + IntToStr (row) + "C" + IntToStr (col13);
pos14 = "R" + IntToStr (row) + "C" + IntToStr (col14);
pos15 = "R" + IntToStr (row) + "C" + IntToStr (col15);
pos16 = "R" + IntToStr (row) + "C" + IntToStr (col16);
Level_1 = DDEWrite("Excel", "Sheet1", "R3C1", Tank_1_Level);
Level_2 = DDEWrite("Excel", "Sheet1", "R3C3", Tank_2_Level);
Level_3 = DDEWrite("Excel", "Sheet1", "R3C5", Tank_3_Level);
Level_4 = DDEWrite("Excel", "Sheet1", "R3C7", Tank_4_Level);
Level_5 = DDEWrite("Excel", "Sheet1", "R3C9", Tank_5_Level);
Temp_SP = DDEWrite("Excel", "Sheet1", "R3C11", HeatExchanger_Temp_SP);
Temp_PV = DDEWrite("Excel", "Sheet1", "R3C13", HeatExchanger_Temp_PV);
Power = DDEWrite("Excel", "Sheet1", "R3C15", HeatExchanger_Power);
a = TimestampToStr(Tank_1_Level.field.vt, 5, 0);
b = TimestampToStr(Tank_2_Level.field.vt, 5, 0);
c = TimestampToStr(Tank_3_Level.field.vt, 5, 0);
d = TimestampToStr(Tank_4_Level.field.vt, 5, 0);
e = TimestampToStr(Tank_5_Level.field.vt, 5, 0);
f = TimestampToStr(HeatExchanger_Temp_SP.field.vt, 5, 0);
g = TimestampToStr(HeatExchanger_Temp_PV.field.vt, 5, 0);
h = TimestampToStr(HeatExchanger_Power.field.vt, 5, 0);
Time_Tank_1 = DDEWrite("Excel", "Sheet1", "R3C2", a);
Time_Tank_2 = DDEWrite("Excel", "Sheet1", "R3C4", b);
Time_Tank_3 = DDEWrite("Excel", "Sheet1", "R3C6", c);
Time_Tank_4 = DDEWrite("Excel", "Sheet1", "R3C8", d);
Time_Tank_5 = DDEWrite("Excel", "Sheet1", "R3C10", e);
Time_HeatExchanger_Temp_SP = DDEWrite("Excel", "Sheet1", "R3C12", f);
Time_HeatExchanger_Temp_PV = DDEWrite("Excel", "Sheet1", "R3C14", g);
Time_HeatExchanger_Power = DDEWrite("Excel", "Sheet1", "R3C16", h);
DDEWrite("Excel","Sheet1",pos1,Level_1);
DDEWrite("Excel","Sheet1",pos2,Level_2);
DDEWrite("Excel","Sheet1",pos3,Level_3);
DDEWrite("Excel","Sheet1",pos4,Level_4);
DDEWrite("Excel","Sheet1",pos5,Level_5);
DDEWrite("Excel","Sheet1",pos6,Temp_SP);
DDEWrite("Excel","Sheet1",pos7,Temp_PV);
DDEWrite("Excel","Sheet1",pos8,Power);
DDEWrite("Excel","Sheet1",pos9,Time_Tank_1);
DDEWrite("Excel","Sheet1",pos10,Time_Tank_2);
DDEWrite("Excel","Sheet1",pos11,Time_Tank_3);
DDEWrite("Excel","Sheet1",pos12,Time_Tank_4);
DDEWrite("Excel","Sheet1",pos13,Time_Tank_5);
DDEWrite("Excel","Sheet1",pos14,Time_HeatExchanger_Temp_SP);
DDEWrite("Excel","Sheet1",pos15,Time_HeatExchanger_Temp_PV);
DDEWrite("Excel","Sheet1",pos16,Time_HeatExchanger_Power);
row = row +1;
Sleep(1);
END
END

6
-Equipment Editor
+Tank

+HeatExchanger

-Connect to PLCsim

V.Database of Project
STRING sSQL;
INT hSQL= -1;
FUNCTION
Insert()
STRING st1 = IntToStr(Tank_1_Level);
STRING st2 = IntToStr(Tank_2_Level);
STRING st3 = IntToStr(Tank_3_Level);
STRING st4 = IntToStr(Tank_4_Level);
STRING st5 = IntToStr(Tank_5_Level);
STRING st6 = IntToStr(HeatExchanger_Temp_SP);
STRING st7 = IntToStr(HeatExchanger_Temp_PV);

7
STRING st8 = IntToStr(HeatExchanger_Power);
STRING st9 = TimestampToStr(Tank_1_Level.field.vt,5,0);
STRING st10 = TimestampToStr(Tank_2_Level.field.vt,5,0);
STRING st11 = TimestampToStr(Tank_3_Level.field.vt,5,0);
STRING st12 = TimestampToStr(Tank_4_Level.field.vt,5,0);
STRING st13 = TimestampToStr(Tank_5_Level.field.vt,5,0);
STRING st14 = TimestampToStr(HeatExchanger_Temp_SP.field.vt,5,0);
STRING st15 = TimestampToStr(HeatExchanger_Temp_PV.field.vt,5,0);
STRING st16 = TimestampToStr(HeatExchanger_Power.field.vt,5,0);
INT Status = 0;
hSQL = SQLConnect("DSN=Databases_Server");
IF hSQL < 0 THEN
Message("Connect error",SQLErrMsg(),48);
ELSE
SQLSet(hSQL,"INSERT INTO table1 (Tank_1_Level, Tank_2_Level, Tank_3_Level,
Tank_4_Level,Tank_5_Level,Temp_SP, Temp_PV, Timest_Tank_1,Timest_Tank_2,
Timest_Tank_3, Timest_Tank_4, Timest_Tank_5, Temp_SP,Temp_PV,Power,Timest_Temp_SP,
Timest_Temp_PV, Timest_Power)VALUES(");
SQLAppend(hSQL,st1+","+st2+","+st3+","+st4+","+st5+","+st6+","+st7+","+st8+",'"+st9+"
','"+st10+"','"+st11+"', '"+st12+"', '"+st13+"', '"+st14+"', '"+st1+"',
'"+st16+"',)");
Status = SQLExec(hSQL,"");
IF Status<>0 THEN
Message("Status error",SQLErrMsg(),48);
END
END
SQLDisconnect(hSQL);
END
VI. Project in final term

You might also like