Hallo,
ich habe euch mal ein ganz einfaches Beispiel für den Maskenwechsel entworfen.
Bitte Bei Modbuskommunikation immer die Mappingtabellen beachten!
Die Kontrollstruktur, E4 Merkerwort 500-503->habe ich auf 4 Worte ausgelegt und in Galileo auf Holding Register 1500-1503 gemappt
Die Statusstruktur, E4 Merkerwort 28-32->habe ich auf 4 Worte ausgelegt und in Galileo auf Holding Register 1028-1032 gemappt
Es sollten im Galileo natürlich min 3 Masken angelegt sein. Wenn alles funktioniert sollte bei C01 >=10 auf Maske 2 und bei 20 auf Maske 3 umgeschaltet werden
Code für die E4:
//Blinker und Zähler für Simulation
T01 (
EN := I01,
RE := ,
ST := ,
I1 := T#500ms,
I2 := T#500ms,
Q1 => ,
QV => );
C01 (
EN := ,
C_ := T01Q1,
D_ := ,
SE := ,
RE := M01,
SH := 30,
SL := ,
SV := ,
OF => M01,
FB => ,
CY => ,
ZE => ,
QV => MB10);
//Abhängig vom Zählwert die Visu auf entspr Maske Schalten
CASE MB10 OF
10..18: MW501:= 2 ; //Steuerwort2 Wechsle auf Maske 2
M02:= true; //Maskenwechsel anfordern
20..28: MW501:= 3 ; //Steuerwort2 Wechsle auf Maske 3
M02:= true;
ELSE M02:= false ;
END_CASE;
//Merker 02 sollte immer wieder aus gehen, da Galileo die P-Flanke des Steuerbits auswertet
//Achtung: werden verschiedene Steuerbits genutzt müssen diese mit zB einem BusyBit verriegelt werden
//da MW500 immer nur einen Wert annnehmen kann
IF M460 = TRUE THEN //Rückmeldung Fkt wird ausgeführt
MW500 :=0; //Steuerbit wegnehmen
ELSIF M02 and not M460 THEN
MW500 :=2048 ; //Steuerwort1 Bit12 setzen
ELSE
MW500 :=0; //Steuerbit wegnehmen
END_IF;
Ich hoffe es hilft weiter
Gruß Thomas