Chräshe
Level-2
- Beiträge
- 873
- Reaktionspunkte
- 274
-> Hier kostenlos registrieren
Hallo allerseits,
hab mal wieder ein paar Unstimmigkeiten mit meiner S7.
Aktuell streikt ein getesteter Baustein, der bereits funktionierte wie er sollte. An dem Baustein selbst wurde nichts verändert, an dem Programm drum herum notwendiger Weise schon.
Der FB wird je einmal in verschiedenen anderen FB’s als Multiinstanz aufgerufen. Der zyklische Aufruf scheint gesichert – zumindest sieht es im Status so aus.
Hier mal die AWL-Quelle:
Da in dem Baustein nicht viel Spektakuläres passiert, sollte es doch nicht notwendig sein das
Adressregister zu sichern?
Die „Baustein-Konsistenz-Prüfung“ ergab einige Abweichungen, worauf ich „Alles neu übersetzen“ lies.
Bereits in anderen Projekten hatte ich solche Erscheinungen. Aus Zeitgründen bin ich bisher immer hingegangen und hab die „Problemfälle“ wieder in FB’s mit konventionellen DB’s umgewandelt. Längerfristig ist das aber keine befriedigende Lösung!
Kennte jemand diese Erscheinungen oder ähnlich geartete Fälle?
Muss das Adressregister doch gesichert werden?
Fällt jemand etwas am Baustein auf?
Was würdet ihr prüfen?
Gruß
Chräshe
------
Hardware:
IM151-8 PN/DP CPU / TP 277 6"
Softwarestand:
STEP 7 - 2010 Professional V5.5 V5.5.0.0_25.6.0.1 V5.5.0.0
SIMATIC WinCC flexible 2008 SP2 K1.3.2.0_1.58.0.1 K1.3.2.0
hab mal wieder ein paar Unstimmigkeiten mit meiner S7.
Aktuell streikt ein getesteter Baustein, der bereits funktionierte wie er sollte. An dem Baustein selbst wurde nichts verändert, an dem Programm drum herum notwendiger Weise schon.
Der FB wird je einmal in verschiedenen anderen FB’s als Multiinstanz aufgerufen. Der zyklische Aufruf scheint gesichert – zumindest sieht es im Status so aus.
Hier mal die AWL-Quelle:
Code:
FUNCTION_BLOCK "A_Stufung_02"
TITLE =
//Stufenweise Zuordnung:
//Für den Eingangswert "rIN" können mehrere Stufen in der "Stufung" angegeben
//werden. Bei erreichen wird die nächste Stufe weiter geschalten und deren
//"Ausgabe" in "rOUT" ausgegeben.
//
//Eine Hysterese ist nicht erforderlich, weil die Stufen ihren Zustand speichern.
//Sind sie einmal aktiviert, können sie nur mit "Reset" zurückgenommen werden.
AUTHOR : Chräshe
VERSION : 0.1
VAR_INPUT
Start : BOOL ;
Reset : BOOL ;
rIN : REAL ;
END_VAR
VAR_OUTPUT
rOUT : REAL ;
END_VAR
VAR_IN_OUT
Para : STRUCT
Stufung : ARRAY [0 .. 11 ] OF REAL ;
Ausgabe : ARRAY [0 .. 11 ] OF REAL ;
END_STRUCT ;
END_VAR
VAR
Stufe : ARRAY [0 .. 11 ] OF BOOL ;
END_VAR
BEGIN
NETWORK
TITLE =
//
//
U #Reset;
R #Stufe[0];
R #Stufe[1];
R #Stufe[2];
R #Stufe[3];
R #Stufe[4];
R #Stufe[5];
R #Stufe[6];
R #Stufe[7];
R #Stufe[8];
R #Stufe[9];
R #Stufe[10];
R #Stufe[11];
NETWORK
TITLE =
U #Start;
U( ;
L #rIN;
L #Para.Stufung[0];
>=R ;
) ;
S #Stufe[0];
// -----------------------------------------
U #Stufe[0];
U( ;
L #rIN;
L #Para.Stufung[1];
>=R ;
) ;
S #Stufe[1];
// -----------------------------------------
U #Stufe[1];
U( ;
L #rIN;
L #Para.Stufung[2];
>=R ;
) ;
S #Stufe[2];
// -----------------------------------------
U #Stufe[2];
U( ;
L #rIN;
L #Para.Stufung[3];
>=R ;
) ;
S #Stufe[3];
// -----------------------------------------
U #Stufe[3];
U( ;
L #rIN;
L #Para.Stufung[4];
>=R ;
) ;
S #Stufe[4];
// -----------------------------------------
U #Stufe[4];
U( ;
L #rIN;
L #Para.Stufung[5];
>=R ;
) ;
S #Stufe[5];
// -----------------------------------------
U #Stufe[5];
U( ;
L #rIN;
L #Para.Stufung[6];
>=R ;
) ;
S #Stufe[6];
// -----------------------------------------
U #Stufe[6];
U( ;
L #rIN;
L #Para.Stufung[7];
>=R ;
) ;
S #Stufe[7];
// -----------------------------------------
U #Stufe[7];
U( ;
L #rIN;
L #Para.Stufung[8];
>=R ;
) ;
S #Stufe[8];
// -----------------------------------------
U #Stufe[8];
U( ;
L #rIN;
L #Para.Stufung[9];
>=R ;
) ;
S #Stufe[9];
// -----------------------------------------
U #Stufe[9];
U( ;
L #rIN;
L #Para.Stufung[10];
>=R ;
) ;
S #Stufe[10];
// -----------------------------------------
U #Stufe[10];
U( ;
L #rIN;
L #Para.Stufung[11];
>=R ;
) ;
S #Stufe[11];
NETWORK
TITLE =
//
//
U #Stufe[11];
L #Para.Ausgabe[11];
SPB END;
U #Stufe[10];
L #Para.Ausgabe[10];
SPB END;
U #Stufe[9];
L #Para.Ausgabe[9];
SPB END;
U #Stufe[8];
L #Para.Ausgabe[8];
SPB END;
U #Stufe[7];
L #Para.Ausgabe[7];
SPB END;
U #Stufe[6];
L #Para.Ausgabe[6];
SPB END;
U #Stufe[5];
L #Para.Ausgabe[5];
SPB END;
U #Stufe[4];
L #Para.Ausgabe[4];
SPB END;
U #Stufe[3];
L #Para.Ausgabe[3];
SPB END;
U #Stufe[2];
L #Para.Ausgabe[2];
SPB END;
U #Stufe[1];
L #Para.Ausgabe[1];
SPB END;
U #Stufe[0];
L #Para.Ausgabe[0];
SPB END;
L 0.000000e+000;
END: NOP 0;
T #rOUT;
END_FUNCTION_BLOCK
Da in dem Baustein nicht viel Spektakuläres passiert, sollte es doch nicht notwendig sein das
Adressregister zu sichern?
Die „Baustein-Konsistenz-Prüfung“ ergab einige Abweichungen, worauf ich „Alles neu übersetzen“ lies.
Bereits in anderen Projekten hatte ich solche Erscheinungen. Aus Zeitgründen bin ich bisher immer hingegangen und hab die „Problemfälle“ wieder in FB’s mit konventionellen DB’s umgewandelt. Längerfristig ist das aber keine befriedigende Lösung!
Kennte jemand diese Erscheinungen oder ähnlich geartete Fälle?
Muss das Adressregister doch gesichert werden?
Fällt jemand etwas am Baustein auf?
Was würdet ihr prüfen?
Gruß
Chräshe
------
Hardware:
IM151-8 PN/DP CPU / TP 277 6"
Softwarestand:
STEP 7 - 2010 Professional V5.5 V5.5.0.0_25.6.0.1 V5.5.0.0
SIMATIC WinCC flexible 2008 SP2 K1.3.2.0_1.58.0.1 K1.3.2.0