0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 0011 0012
0013
0014
0015
0016
0017
0018
0019
0020 0021 0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
PROGRAM PLC_PRG
VAR
zbiornik: UINT; zbiornik_A: UINT; zbiornik_B: UINT;
licznik_napelnien AT %MB10: BYTE; zamkniecie_zaworu_AAT %QX0.0: BOOL; zamkniecie_zaworu_C AT %QX0.3: BOOL; zamkniecie_zaworu_B AT %QX0.1: BOOL; zamkniecie_zaworu_D AT %QX0.2: BOOL; otwarć i e_zaworu_A AT %QX0.3: BOOL; otwacie_zaworu_B AT %QX0.2: BOOL; otwarć i e_zaworu_C AT %QX0.O: BOOL; otwarć i e_zaworu_D AT %QX0.1: BOOL; Przetwornik_podcisnienia: BYTE; Wezel_sumujacy: BYTE;
Zadajnik: BYTE;
Zawór: BYTE;
Qm: BYTE; p: BYTE;
RegulatorPID: PID;
WartoscBiezaca: REAL;
WartoscZadana: REAL;
Współczynnik: REAL;
CzasJ: DWORD;
Czas_2: DWORD;
Offset: REAL;
Minimum: REAL;
Maksimum: REAL;
ZmiennaBooM: BOOL;
ZmiennaBool_2: BOOL; wynik: REAL;
Przekroczenie: BOOL;
Przepełnienie: BOOL;
END_VAR
0020 lf
0021 0022! 00231 0024 00251! 0026' 00271 00281 0029 0030!
0031
0032 (
IF zbiornik_A< 50
THEN zamkniecie_zaworu_D:= TRUE; ELSE zamkniecie_zaworu_D:=FALSE; ENDJF
IF zbiornik_B » 50
THEN zamkniecie_zaworu_C:= TRUE; ELSE zamkniecie_zaworu_C:=FALSE; ENDJF
0033
Przetwomik_podcisnienia:=1;
Wezel_sumujacy:= p- Przetwornik_podcisnienia; Qm:= 1*2;
0034 I!
IF Qm » 0.0008 THEN (*zadawane należenie kg/s*) p:= 67; Ccisnienie bezwzględne zadane, kPa*)
ELSE
p:=58; fzadane ciśnienie bezwzględne, kPa*) ENDJF
0039
0040 V
0041
0042 r 0043: 00441 0045! 0046! 0047 0048!
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060 0061
WartoscBiezaca:= 30, WartoscZadana:=2;’) Współczynniki .0; (*P*)*)
CCzasjI
(*Czas_2
Minimum
50; pm =100; (*D*)*) =0.0;
Maksimum:=100;
RegulatorPID(
ACTUAL:= WartoscBiezaca, SET_POINT:=WartoscZadana, KP:=Wspolczynnik,
TN:=Czas_1 ,
TV:= Czas_2,
Y_OFFSET;=Offset, Y_MIN:=Minimum, Y_MAX:=Maksimum, MANUAL:=ZmiennaBool_1 , RESET:=ZmiennaBool_2, Y=>wynik,
LI MITS_ACTIVE= > Prze kroczenie, OVERFLOW=>Przepelnienie);
Źródło: opracowanie własne.
89