O
oliver2306
Guest
-> Hier kostenlos registrieren
Hallo zusammen.
Ich habe ein Proplem mit untenstehendem Code. Eigentlich dreht sich mein Problem nur um das letzte Netzwerk "Status Meldungen". Ich greife dort auf das gesamte Lokalbyte 1 zu, dessen Bits ich zuvor setze und tranferiere dessen Zustand in einen Datenbaustein. Wenn ich nun zuvor den Lokaldaten-Reset weglasse, habe ich immer falsche Werte die sich unbestimmt ändern. Dann habe ich das ganze mit Merkern getestet anstatt die Lokalbits zu verwenden und es funktioniert einwandfrei. Doch ich verwende diese Lokalbits und auch den Byte zugriff nur ein einziges mal pro Baustein. Die Lösung auf dieses Problem war dann die durchführung des Loakldaten-Resets wobei ich nicht weis warum ich dieses machen muß. Lokaldaten sind doch nur für den Zeitraum verfügbar in dem der Baustein bearbeitet wird. Ich hoffe mal das mir iener von euch da weiterhelfen kann. Schon mal danke im vorraus.
Ich habe ein Proplem mit untenstehendem Code. Eigentlich dreht sich mein Problem nur um das letzte Netzwerk "Status Meldungen". Ich greife dort auf das gesamte Lokalbyte 1 zu, dessen Bits ich zuvor setze und tranferiere dessen Zustand in einen Datenbaustein. Wenn ich nun zuvor den Lokaldaten-Reset weglasse, habe ich immer falsche Werte die sich unbestimmt ändern. Dann habe ich das ganze mit Merkern getestet anstatt die Lokalbits zu verwenden und es funktioniert einwandfrei. Doch ich verwende diese Lokalbits und auch den Byte zugriff nur ein einziges mal pro Baustein. Die Lösung auf dieses Problem war dann die durchführung des Loakldaten-Resets wobei ich nicht weis warum ich dieses machen muß. Lokaldaten sind doch nur für den Zeitraum verfügbar in dem der Baustein bearbeitet wird. Ich hoffe mal das mir iener von euch da weiterhelfen kann. Schon mal danke im vorraus.
Code:
FUNCTION FC 81 : VOID
TITLE =Ein-/Ausschalten Pumpe 1
//Dieser Baustein erfüllt folgende Funktionen:
//1.Setzen des Lebensbit und Transferien des Resets
//2.Bilden der Ein- und Ausschaltbedingungen
//3.Pumpe 1 Ein- und Ausschalten
//4.Statusmeldungen für die Pumpe 1 bilden und Transferieren
AUTHOR :
VERSION : 0.1
VAR_TEMP
l_P1_EIN : BOOL ; //Pumpe 1 Einschalten
l_P1_AUS : BOOL ; //Pumpe 1 Ausschalten
l_Reserve0_1 : BOOL ; //Reserve
l_Reserve0_2 : BOOL ; //Reserve
l_Reserve0_3 : BOOL ; //Reserve
l_Reserve0_4 : BOOL ; //Reserve
l_Reserve0_5 : BOOL ; //Reserve
l_Reserve0_6 : BOOL ; //Reserve
l_P1_Status_Lauft : BOOL ; //Status Pumpe 1 läuft
l_P1_Status_Lauft_NOT : BOOL ; //Status Pumpe 1 läuft im Notbetrieb
l_P1_Status_Stoer : BOOL ; //Status Pumpe 1 Störung
l_P1_Status_Sperr : BOOL ; //Status Pumpe 1 Gesperrt
l_Reserve1_1 : BOOL ; //Reserve
l_Reserve1_2 : BOOL ; //Reserve
l_Reserve1_3 : BOOL ; //Reserve
l_Reserve1_4 : BOOL ; //Reserve
END_VAR
BEGIN
NETWORK
TITLE =SPS Lebensüberwachung
//Hier wird ein Watchdog Simuliert. Sobal der Simocode ein Low-Signal erkennt
//(Stop oder Ausfall CPU) Schaltet er die Pumpe Aus.
SET ;
= DB81.DBX 30.7;
NETWORK
TITLE =Reset
//Quittierung von Störungen am Simocode.
//Dies geschieht duch Bedinung am MP370 oder Automatisch bei einem Neuanlauf der
//CPU nach Netz-Wiederkehr.
O DB30.DBX 10.0;
O DB30.DBX 80.2;
O M 100.0;
= DB81.DBX 30.6;
NETWORK
TITLE =Störmeldung
//Eine Stoerung liegt vor wenn der Simocode eine Sammelstörung meldet oder das
//"Ready" Signal fehlt.
U( ;
O DB81.DBX 0.6;
ON DB81.DBX 1.1;
) ;
S M 81.3;
U DB81.DBX 30.6;
R M 81.3;
NOP 0;
NETWORK
TITLE =Einschaltbedingung Pumpe 1
//Die Einschaltbedingung ist erfüllt wenn für die Pumpe der
//ungesperrte Handbetrieb aktiv ist und über das MP370 eingeschaltet wird, oder
//der Automatikbetrieb aktiv ist und das Einschaltniveau erreicht wurde.
//In beiden fällen darf das NOT-AUS Relais nicht betätigt sein.
U( ;
U M 1.0;
UN M 1.2;
U( ;
U DB30.DBX 0.3;
FP M 81.0;
) ;
O ;
U M 1.1;
U M 20.1;
) ;
U E 2.6;
= #l_P1_EIN;
NETWORK
TITLE =Auschaltbedingung Pumpe 1
//Die Ausschaltbedingung ist erfüllt wenn für die Pumpe der
//ungesperrte Handbetrieb aktiv ist und über das MP370 ausgeschaltet wird, oder
//der Automatikbetrieb aktiv ist und das Ausschaltniveau erreicht wurde.
//Die Ausschalbedingung ist ebenfalls erfüllt wenn die Pumpe schon gesperrt ist
//oder das NOT-AUS Relais angesprochen hat.
U M 1.0;
UN M 1.2;
U( ;
U DB30.DBX 0.4;
FP M 81.1;
) ;
O ;
U M 1.1;
UN M 20.1;
O M 1.2;
ON E 2.6;
= #l_P1_AUS;
NETWORK
TITLE =Pumpe einschalten
//Die Pumpe wird eingeschaltet wenn die Einschaltbedingung erfüllt ist oder der
//Schwimmerschalter_Max angesprochen hat.
//Der Befehl "EIN" wird rückgesetzt wenn die Ausschaltbedingung erfüllt ist und
//der Schwimmerschalter_Max nicht angesprochen hat,
//die Notsteuerung aktiv wird oder das NOT-AUS Relais betätigt wird oder eine
//Störung der Pumpe vorliegt.
//Ist der Einschaltbefehl und der Handbetrieb aktiv wird der Status der Pumpe
//"Hand EIN" auf dem MP370 dargestellt.
U( ;
U( ;
O #l_P1_EIN;
O E 2.4;
) ;
S DB81.DBX 30.2;
U( ;
U #l_P1_AUS;
UN E 2.4;
ON E 2.6;
O M 1.3;
O M 81.3;
) ;
R DB81.DBX 30.2;
U DB81.DBX 30.2;
) ;
U M 1.0;
= DB31.DBX 1.0;
NETWORK
TITLE =Pumpe ausschalten
//Die Pumpe wird Ausgeschaltet wenn die Ausschaltbedingung erfüllt ist, das
//NOT-AUS Relais betätigt wird, vom Notbetrieb zurückgeschaltet wird (nur wenn
//vorher Handbetrieb aktiv war) oder eine Störung der Pumpe vorliegt.
//Der Befehl "AUS" wird rückgesetzt wenn die Einschaltbedingung erfüllt ist.
//Ist der Ausschaltbefehl und der Handbetrieb aktiv wird der Status der Pumpe
//"Hand AUS" auf dem MP370 dargestellt.
U( ;
U #l_P1_EIN;
R DB81.DBX 30.1;
U( ;
O #l_P1_AUS;
ON E 2.6;
O( ;
U M 1.3;
FN M 81.2;
) ;
O M 81.3;
) ;
S DB81.DBX 30.1;
U DB81.DBX 30.1;
) ;
U M 1.0;
= DB31.DBX 1.1;
NETWORK
TITLE =Status-Meldungen
//Die Statusmeldungen werden gebildet und ins Lokal Byte 1 geschrieben.
//Je nach Priorität wird z.B. die Meldung "Pumpe Gesperrt" durch die Meldung
//"Pumpe läuft im Notbetrieb" überschrieben. Höchste Priorität hat hier die
//Störmeldung.
//Anschließend wird das Lokalbyte in den "Senden" Datenbaustein geschrieben.
//Statusmeldungen Lokaldaten-Reset
L 0;
T LB 1;
//Status-Meldungen bilden
U DB81.DBX 30.2;
U DB81.DBX 1.3;
= #l_P1_Status_Lauft;
U M 1.2;
= #l_P1_Status_Sperr;
U M 1.3;
U DB81.DBX 1.3;
R #l_P1_Status_Sperr;
R DB81.DBX 30.2;
= #l_P1_Status_Lauft_NOT;
U M 81.3;
R #l_P1_Status_Lauft_NOT;
R #l_P1_Status_Sperr;
= #l_P1_Status_Stoer;
//Status Meldungen Transferieren
L LB 1;
T DB31.DBB 3;
END_FUNCTION