FUNCTION "KOMM_KBR_PB1" : VOID
TITLE =Kommunikationsorganisation mit KBR auf PB1
VERSION : 0.0
VAR_INPUT
ErstPEW : INT ;
ErstPAW : INT ;
DBZ : INT ;
ErstDBDZ : INT ;
WTIME : TIMER ;
DBZV : INT ;
ErstDBDZV : INT ;
END_VAR
VAR_IN_OUT
SCHR : WORD ;
END_VAR
VAR_TEMP
SCHRT : WORD ;
Adr : DWORD ;
DBZT : INT ;
DBZVT : INT ;
END_VAR
BEGIN
NETWORK
TITLE =Takt Timer Sekundenimpuls
//
//
L #SCHR;
T #SCHRT;
U #WTIME; //prüfe ob Timer läuft
SPB w6;
L 0; //Lade null
==I ;
S L 0.0;
<>I ;
SPB w0;
w0: UN L 0.0; //Messwerttyp 1 - Spannung Phase-Null
SPB w1;
L #ErstPEW;
SLW 3;
T #Adr;
LAR1 ;
L PEB [AR1,P#0.0]; //Kennung überprüfen
L B#16#6;
<>I ;
SPB x1;
L PEB [AR1,P#1.0]; //Index überprüfen
L B#16#1;
<>I ;
SPB x1;
==I ;
SPB y1;
x1: L #ErstPAW; //schreibe Kennung=6 in erstes PAB
SLW 3;
T #Adr;
LAR1 ;
L B#16#6;
T PAB [AR1,P#0.0];
L #ErstPAW; //schreiben von Index=1 in zweites PAB
SLW 3;
T #Adr;
LAR1 ;
L B#16#1;
T PAB [AR1,P#1.0];
SPA w6; //zu Bausteinende
y1: L PEB [AR1,P#8.0]; //Umladen Messwert1
T LB 11;
L PEB [AR1,P#9.0];
T LB 10;
L PEB [AR1,P#10.0];
T LB 9;
L PEB [AR1,P#11.0];
T LB 8;
L PEB [AR1,P#12.0]; //Umladen Messwert2
T LB 15;
L PEB [AR1,P#13.0];
T LB 14;
L PEB [AR1,P#14.0];
T LB 13;
L PEB [AR1,P#15.0];
T LB 12;
L PEB [AR1,P#16.0]; //Umladen Messwert3
T LB 19;
L PEB [AR1,P#17.0];
T LB 18;
L PEB [AR1,P#18.0];
T LB 17;
L PEB [AR1,P#19.0];
T LB 16;
L #DBZ; //ZielDB öffnen
T #DBZT;
AUF DB [#DBZT];
L #ErstDBDZ; //Übergabe Momentane EinstiegsAdresse
SLW 3; //Schiebe Binär m drei Positionen nach links
LAR1 ;
L LD 8; //schreibe Werte in ZielDB
T DBD [AR1,P#0.0];
L LD 12;
T DBD [AR1,P#4.0];
L LD 16; //schreibe Werte in ZielDB]
T DBD [AR1,P#8.0];
U L 0.0;
R L 0.0;
S L 0.1;
L #ErstPAW;
SLW 3;
T #Adr;
LAR1 ;
L B#16#3;
T PAB [AR1,P#1.0]; //schreiben von Index=3 in Ausgang
SPA w6; //zu Bausteinende
w1: UN L 0.1; //Messewerttyp 2 - Wirkstrom
SPB w2;
L #ErstPEW;
SLW 3;
T #Adr;
LAR1 ;
L PEB [AR1,P#1.0]; //Index überprüfen
L B#16#3;
<>I ;
SPB x2;
==I ;
SPB y2;
x2: L #ErstPAW; //schreibe Kennung=6 in erstes PAB
SLW 3;
T #Adr;
LAR1 ;
L B#16#6;
T PAB [AR1,P#0.0];
L #ErstPAW; //schreiben von Index=3 in zweites PAB
SLW 3;
T #Adr;
LAR1 ;
L B#16#3;
T PAB [AR1,P#1.0];
SPA w6; //zu Bausteinende
y2: L PEB [AR1,P#8.0]; //Umladen Messwert1
T LB 23;
L PEB [AR1,P#9.0];
T LB 22;
L PEB [AR1,P#10.0];
T LB 21;
L PEB [AR1,P#11.0];
T LB 20;
L PEB [AR1,P#12.0]; //Umladen Messwert2
T LB 27;
L PEB [AR1,P#13.0];
T LB 26;
L PEB [AR1,P#14.0];
T LB 25;
L PEB [AR1,P#15.0];
T LB 24;
L PEB [AR1,P#16.0]; //Umladen Messwert3
T LB 31;
L PEB [AR1,P#17.0];
T LB 30;
L PEB [AR1,P#18.0];
T LB 29;
L PEB [AR1,P#19.0];
T LB 28;
L #DBZ; //ZielDB öffnen
T #DBZT;
AUF DB [#DBZT];
L #ErstDBDZ; //Übergabe Momentane EinstiegsAdresse
SLW 3; //Schiebe Binär m drei Positionen nach links
LAR1 ;
L LD 20; //schreibe Werte in ZielDB
T DBD [AR1,P#12.0];
L LD 24;
T DBD [AR1,P#16.0];
L LD 28;
T DBD [AR1,P#20.0];
U L 0.1;
R L 0.1;
S L 0.2;
L #ErstPAW;
SLW 3;
T #Adr;
LAR1 ;
L B#16#8;
T PAB [AR1,P#1.0]; //schreiben vonn Index=3
SPA w6;
w2: UN L 0.2; //Messwerttyp 3 cos phi
SPB w3;
L #ErstPEW;
SLW 3;
T #Adr;
LAR1 ;
L PEB [AR1,P#1.0]; //Index überprüfen
L B#16#8;
<>I ;
SPB x3;
==I ;
SPB y3;
x3: L #ErstPAW; //schreibe Kennung=6 in erstes PAB
SLW 3;
T #Adr;
LAR1 ;
L B#16#6;
T PAB [AR1,P#0.0];
L #ErstPAW; //schreiben von Index=8 in zweites PAB
SLW 3;
T #Adr;
LAR1 ;
L B#16#8;
T PAB [AR1,P#1.0];
SPA w6;
y3: L PEB [AR1,P#8.0]; //Umladen Messwert1
T LB 35;
L PEB [AR1,P#9.0];
T LB 34;
L PEB [AR1,P#10.0];
T LB 33;
L PEB [AR1,P#11.0];
T LB 32;
L PEB [AR1,P#12.0]; //Umladen Messwert2
T LB 39;
L PEB [AR1,P#13.0];
T LB 38;
L PEB [AR1,P#14.0];
T LB 37;
L PEB [AR1,P#15.0];
T LB 36;
L PEB [AR1,P#16.0]; //Umladen Messwert3
T LB 43;
L PEB [AR1,P#17.0];
T LB 42;
L PEB [AR1,P#18.0];
T LB 41;
L PEB [AR1,P#19.0];
T LB 40;
L #DBZ; //ZielDB öffnen
T #DBZT;
AUF DB [#DBZT];
L #ErstDBDZ; //Übergabe Momentane EinstiegsAdresse
SLW 3; //Schiebe Binär m drei Positionen nach links
LAR1 ;
L LD 32; //schreibe Werte in ZielDB
T DBD [AR1,P#24.0];
L LD 36;
T DBD [AR1,P#28.0];
L LD 40;
T DBD [AR1,P#32.0];
U L 0.2;
R L 0.2;
S L 0.3;
L #ErstPAW;
SLW 3;
T #Adr;
LAR1 ;
L B#16#6;
T PAB [AR1,P#1.0];
SPA w6; //zu Bausteinende
w3: UN L 0.3; //Messwerttyp 4 Wirkleistung
SPB w4;
L #ErstPEW;
SLW 3;
T #Adr;
LAR1 ;
L PEB [AR1,P#1.0]; //Index überprüfen
L B#16#6;
<>I ;
SPB x4;
==I ;
SPB y4;
x4: L #ErstPAW; //schreibe Kennung=6 in erstes PAB
SLW 3;
T #Adr;
LAR1 ;
L B#16#6;
T PAB [AR1,P#0.0];
L #ErstPAW; //schreiben von Index=6 in zweites PAB
SLW 3;
T #Adr;
LAR1 ;
L B#16#6;
T PAB [AR1,P#1.0];
SPA w6;
y4: L PEB [AR1,P#8.0]; //Umladen Messwert1
T LB 47;
L PEB [AR1,P#9.0];
T LB 46;
L PEB [AR1,P#10.0];
T LB 45;
L PEB [AR1,P#11.0];
T LB 44;
L PEB [AR1,P#12.0]; //Umladen Messwert2
T LB 51;
L PEB [AR1,P#13.0];
T LB 50;
L PEB [AR1,P#14.0];
T LB 49;
L PEB [AR1,P#15.0];
T LB 48;
L PEB [AR1,P#16.0]; //Umladen Messwert3
T LB 55;
L PEB [AR1,P#17.0];
T LB 54;
L PEB [AR1,P#18.0];
T LB 53;
L PEB [AR1,P#19.0];
T LB 52;
L #DBZ; //ZielDB öffnen
T #DBZT;
AUF DB [#DBZT];
L #ErstDBDZ; //Übergabe Momentane EinstiegsAdresse
SLW 3; //Schiebe Binr m drei Positionen nach links
LAR1 ;
L LD 44; //schreibe Werte in ZielDB
L 1.000000e+003;
/R ;
T DBD [AR1,P#36.0];
L LD 48;
L 1.000000e+003;
/R ;
T DBD [AR1,P#40.0];
L LD 52;
L 1.000000e+003;
/R ;
T DBD [AR1,P#44.0];
U L 0.3;
R L 0.3;
S L 0.4;
L #ErstPAW;
SLW 3;
T #Adr;
LAR1 ;
L B#16#7;
T PAB [AR1,P#1.0]; //schreiben von Index=6
SPA w6; //zu Bausteinende
w4: UN L 0.4; //Messwerttyp 5 Blindleistung
SPB w5;
L #ErstPEW;
SLW 3;
T #Adr;
LAR1 ;
L PEB [AR1,P#1.0]; //Index überprüfen
L B#16#7;
<>I ;
SPB x5;
==I ;
SPB y5;
x5: L #ErstPAW; //schreibe Kennung=6 in erstes PAB
SLW 3;
T #Adr;
LAR1 ;
L B#16#6;
T PAB [AR1,P#0.0];
L #ErstPAW; //schreiben von Index=7 in zweites PAB
SLW 3;
T #Adr;
LAR1 ;
L B#16#7;
T PAB [AR1,P#1.0];
SPA w6;
y5: L PEB [AR1,P#8.0]; //Umladen Messwert1
T LB 59;
L PEB [AR1,P#9.0];
T LB 58;
L PEB [AR1,P#10.0];
T LB 57;
L PEB [AR1,P#11.0];
T LB 56;
L PEB [AR1,P#12.0]; //Umladen Messwert2
T LB 63;
L PEB [AR1,P#13.0];
T LB 62;
L PEB [AR1,P#14.0];
T LB 61;
L PEB [AR1,P#15.0];
T LB 60;
L PEB [AR1,P#16.0]; //Umladen Messwert3
T LB 67;
L PEB [AR1,P#17.0];
T LB 66;
L PEB [AR1,P#18.0];
T LB 65;
L PEB [AR1,P#19.0];
T LB 64;
L #DBZ; //ZielDB öffnen
T #DBZT;
AUF DB [#DBZT];
L #ErstDBDZ; //Übergabe Momentane EinstiegsAdresse
SLW 3; //Schiebe Binr m drei Positionen nach links
LAR1 ;
L LD 56; //schreibe Werte in ZielDB
L 1.000000e+003;
/R ;
T DBD [AR1,P#48.0];
L LD 60;
L 1.000000e+003;
/R ;
T DBD [AR1,P#52.0];
L LD 64;
L 1.000000e+003;
/R ;
T DBD [AR1,P#56.0];
U L 0.4;
R L 0.4;
S L 0.5;
L #ErstPAW; //schreibe Kennung=1 in erstes PAB
SLW 3;
T #Adr;
LAR1 ;
L B#16#1;
T PAB [AR1,P#0.0];
L #ErstPAW; //schreibe Kennung=22 in erstes PAB
SLW 3;
T #Adr;
LAR1 ;
L B#16#50;
T PAB [AR1,P#1.0];
// L #ErstPAW //schreiben von Starttag = 01 in 20. PAB
// SLW 3
// T #Adr
// LAR1
// L B#16#1
// T PAB [AR1,P#20.0]
// L #ErstPAW //schreiben von Startmonat = 01 in 21. PAB
// SLW 3
// T #Adr
// LAR1
// L B#16#1
// T PAB [AR1,P#21.0]
// L #ErstPAW //schreiben von Endtag = 31 in 22. PAB
// SLW 3
// T #Adr
// LAR1
// L B#16#1F
// T PAB [AR1,P#22.0]
// L #ErstPAW //schreiben von Endmonat = 12 in 23. PAB
// SLW 3
// T #Adr
// LAR1
// L B#16#12
// T PAB [AR1,P#23.0]
// SPA w6 //zu Bausteinende
w5: UN L 0.5; //Messwerttyp 6 - Wirk- und Blindarbeit
SPB w6;
L #ErstPEW; //Kennung überprüfen
SLW 3;
T #Adr;
LAR1 ;
L PEB [AR1,P#0.0];
L B#16#1;
<>I ;
SPB x6;
L #ErstPEW; //Index überprüfen
SLW 3;
T #Adr;
LAR1 ;
L PEB [AR1,P#1.0];
L 50;
<>I ;
SPB x6;
==I ;
SPB y6;
x6: L #ErstPAW; //schreibe Kennung=1 in erstes PAB
SLW 3;
T #Adr;
LAR1 ;
L B#16#1;
T PAB [AR1,P#0.0];
L #ErstPAW; //schreiben von Index=22 in zweites PAB
SLW 3;
T #Adr;
LAR1 ;
L B#16#32;
T PAB [AR1,P#1.0];
// L #ErstPAW //schreiben von Starttag = 01 in 20. PAB
// SLW 3
// T #Adr
// LAR1
// L B#16#1
// T PAB [AR1,P#20.0]
// L #ErstPAW //schreiben von Startmonat = 01 in 21. PAB
// SLW 3
// T #Adr
// LAR1
// L B#16#4
//T PAB [AR1,P#21.0]
// L #ErstPAW //schreiben von Endtag = 31 in 22. PAB
// SLW 3
// T #Adr
//LAR1
// L B#16#1A
// T PAB [AR1,P#22.0]
// L #ErstPAW //schreiben von Endmonat = 12 in 23. PAB
//SLW 3
// T #Adr
// LAR1
// L B#16#4
//T PAB [AR1,P#23.0]
SPA w6;
y6: L PEB [AR1,P#20.0]; //Umladen Messwert1
T LB 71;
L PEB [AR1,P#21.0];
T LB 70;
L PEB [AR1,P#22.0];
T LB 69;
L PEB [AR1,P#23.0];
T LB 68;
L PEB [AR1,P#24.0]; //Umladen Messwert2
T LB 75;
L PEB [AR1,P#25.0];
T LB 74;
L PEB [AR1,P#26.0];
T LB 73;
L PEB [AR1,P#27.0];
T LB 72;
L #DBZV; //ZielDB öffnen
T #DBZVT;
AUF DB [#DBZVT];
L #ErstDBDZV; //Übergabe Momentane EinstiegsAdresse
SLW 3; //Schiebe Binr m drei Positionen nach links
LAR1 ;
L LD 68; //schreibe Werte in ZielDB
L 1.000000e+003;
/R ;
T DBD [AR1,P#0.0];
L LD 72;
L 1.000000e+003;
/R ;
T DBD [AR1,P#4.0];
U L 0.5;
R L 0.5;
S L 0.0;
L #ErstPAW; //schreibe Kennung=1 in erstes PAB
SLW 3;
T #Adr;
LAR1 ;
L B#16#6;
T PAB [AR1,P#0.0];
L #ErstPAW; //schreibe Kennung=1 in erstes PAB
SLW 3;
T #Adr;
LAR1 ;
L B#16#1;
T PAB [AR1,P#1.0];
SPB w6;
w6: NOP 0; //Aktualisierung Schieberegister und Wartetimer
L #SCHR;
L #SCHRT;
<>I ;
L S5T#1S; // Laufzeit fest eingestellt 30 Sekunden
SV #WTIME; // Takt - Timer Wartezeit lesen
L #SCHRT;
T #SCHR;
END_FUNCTION