Meine Lösung
Must halt mal probieren ob Du damit klarkommst
mfg Lesoc
FUNCTION_BLOCK FB 1
TITLE =
VERSION : 0.1
VAR_INPUT
DBNr1 : BLOCK_DB ;
DBNr2 : BLOCK_DB ;
Laenge : INT ;
END_VAR
VAR_OUTPUT
Gleich : BOOL ;
Ungleich : BOOL ;
END_VAR
VAR_TEMP
db1Wert : BYTE ;
db2Wert : BYTE ;
X : INT ;
END_VAR
BEGIN
NETWORK
TITLE =Alte Werte Löschen
SET ;
R #Gleich;
R #Ungleich;
NETWORK
TITLE =
L #Laenge;
Next: T #X;
AUF #DBNr1;
L DBB [AR1,P#0.0];
T #db1Wert;
AUF #DBNr2;
L DBB [AR1,P#0.0];
T #db2Wert;
L #db1Wert;
L #db2Wert;
<>I ;
SPBB Feh;
L P#1.0;
+AR1 ;
L #X;
LOOP Next;
SET ;
S #Gleich;
BEA ;
Feh: S #Ungleich;
END_FUNCTION_BLOCK
DATA_BLOCK DB 1
TITLE =
VERSION : 0.0
FB 1
BEGIN
DBNr1 := DB 1;
DBNr2 := DB 1;
Laenge := 0;
Gleich := FALSE;
Ungleich := FALSE;
END_DATA_BLOCK
DATA_BLOCK DB 100
TITLE =
VERSION : 0.1
STRUCT
DB_VAR : ARRAY [0 .. 20 ] OF //vorläufige Platzhaltervariable
INT ;
END_STRUCT ;
BEGIN
DB_VAR[0] := 0;
DB_VAR[1] := 0;
DB_VAR[2] := 0;
DB_VAR[3] := 0;
DB_VAR[4] := 0;
DB_VAR[5] := 0;
DB_VAR[6] := 0;
DB_VAR[7] := 0;
DB_VAR[8] := 0;
DB_VAR[9] := 0;
DB_VAR[10] := 0;
DB_VAR[11] := 0;
DB_VAR[12] := 0;
DB_VAR[13] := 0;
DB_VAR[14] := 0;
DB_VAR[15] := 0;
DB_VAR[16] := 0;
DB_VAR[17] := 0;
DB_VAR[18] := 0;
DB_VAR[19] := 0;
DB_VAR[20] := 0;
END_DATA_BLOCK
DATA_BLOCK DB 101
TITLE =
VERSION : 0.1
STRUCT
DB_VAR : ARRAY [0 .. 20 ] OF //vorläufige Platzhaltervariable
INT ;
END_STRUCT ;
BEGIN
DB_VAR[0] := 0;
DB_VAR[1] := 0;
DB_VAR[2] := 0;
DB_VAR[3] := 0;
DB_VAR[4] := 0;
DB_VAR[5] := 0;
DB_VAR[6] := 0;
DB_VAR[7] := 0;
DB_VAR[8] := 0;
DB_VAR[9] := 0;
DB_VAR[10] := 0;
DB_VAR[11] := 0;
DB_VAR[12] := 0;
DB_VAR[13] := 0;
DB_VAR[14] := 0;
DB_VAR[15] := 0;
DB_VAR[16] := 0;
DB_VAR[17] := 0;
DB_VAR[18] := 0;
DB_VAR[19] := 0;
DB_VAR[20] := 0;
END_DATA_BLOCK
ORGANIZATION_BLOCK OB 1
TITLE = "Main Program Sweep (Cycle)"
VERSION : 0.1
VAR_TEMP
OB1_EV_CLASS : BYTE ; //Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1)
OB1_SCAN_1 : BYTE ; //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1)
OB1_PRIORITY : BYTE ; //Priority of OB Execution
OB1_OB_NUMBR : BYTE ; //1 (Organization block 1, OB1)
OB1_RESERVED_1 : BYTE ; //Reserved for system
OB1_RESERVED_2 : BYTE ; //Reserved for system
OB1_PREV_CYCLE : INT ; //Cycle time of previous OB1 scan (milliseconds)
OB1_MIN_CYCLE : INT ; //Minimum cycle time of OB1 (milliseconds)
OB1_MAX_CYCLE : INT ; //Maximum cycle time of OB1 (milliseconds)
OB1_DATE_TIME : DATE_AND_TIME ; //Date and time OB1 started
END_VAR
BEGIN
NETWORK
TITLE =
CALL FB 1 , DB 1 (
DBNr1 := DB 100,
DBNr2 := DB 101,
Laenge := 20,
Gleich := A 0.0,
Ungleich := A 0.1);
END_ORGANIZATION_BLOCK