oscat.lib > oscat.lib fuer Step 7
dimm_i Fehler bei Netzausfall
dalbi:
--- Zitat von: gravieren am 27. Januar 2008, 11:43:26 ---Falls das so ist, musste nur der entsprechende Hinweis am Kopf der Funktion.
--- Ende Zitat ---
Meines wissen nach kann man das nur hier Einstellen (siehe Bild).
Das Problem ist nur das davon dann der ganze DB betroffen ist.
MfG
Daniel
[gelöscht durch Administrator]
dalbi:
Um beim Beispiel des dimm_i zu bleiben würde das hier bedeuten das die Dimmfunktion komplett bei 0 startet das heisst nach einem Neustart wär das Licht bei Mac erst mal dunkel. ;D
MfG
Daniel
MacDeath:
das wär nich so schön. Und... wenn man so wie ich das ganze jetzt in eine bzw. so wie bei mir mehrere verschachtelte multiinstanzen gepackt hat. ist alles betroffen!
bei mir gibt es ja keinen direkten instanz-DB zum dimm_i (hatte ich nicht erwähnt). dimm_i ist teil eines FB's für einen lichtsteuerungskreis, der ja auch einen db hat ...dieser ist wiederum in einem FB der alle lichtsteuerungskreise_FB's in sich hat...alles multiinstanz. nur der hauptfb für licht hat dann einen db in dem alle anderen db natürlich drinstecken.
Vorteil: speicherbedarf und ordung in sachen übersicht und struktur.
nachteil: ändere ich eine in/out/stat-variable in einem fb der verschachtelt is, muss ich den ganzen quark von unten nach obenneu generieren also die fb's bis zum eigentlichen db vom licht FB, der dann im OB 1 ist. wie auch Rolleden haupt fb etc.
das is ne frimelei ...aber es klappt und ich habe keine vielen db's pro hauptprogrammteil nur einen instanz an dem ich nich ran muss. und ein paar globale DB's für daten abfragen.... für HMI etc.
dalbi:
Habe noch eine Möglichkeit gefunden, der Baustein erkennt selbstständig ob ein Neustart war.
Beispiel:
--- Code: ---FUNCTION FC200 : BYTE
VAR_IN_OUT
Startup : BOOL;
END_VAR
VAR_TEMP
(* Strukte für SFC6 "RD_INFO" *)
TOP_SI: struct
EV_CLASS: byte;
EV_NUM: byte;
PRIORITY: byte;
NUM: byte;
TYP2_3: byte;
TYP1: byte;
ZI1: word;
ZI2_3: dword;
end_struct;
START_UP_SI: struct
EV_CLASS: byte;
EV_NUM: byte;
PRIORITY: byte;
NUM: byte;
TYP2_3: byte;
TYP1: byte;
ZI1: word;
ZI2_3: dword;
end_struct;
ERR : INT;
END_VAR
BEGIN
(*****************************************************************************
Startinformation des aktuellen OBs auslesen mit der SFC 6 "RD_SINFO"
*****************************************************************************)
ERR := RD_SINFO (TOP_SI := TOP_SI, START_UP_SI := START_UP_SI);
(*****************************************************************************
Anlauf merken TOP_SI.EV_NUM
OB1_SCAN_1 BYTE - B#16#01: Abschluss des Neustarts (Warmstarts)
- B#16#02: Abschluss des Wiederanlaufs
- B#16#03: Abschluss des freien Zyklus
- B#16#04: Abschluss des Kaltstarts
- B#16#05: Erster OB 1-Zyklus der neuen Master-CPU nach
Master-Reserve-Umschaltung und STOP des
bisherigen Masters
*****************************************************************************)
IF TOP_SI.EV_NUM = 1 OR TOP_SI.EV_NUM = 2 OR TOP_SI.EV_NUM = 4 THEN
Startup := TRUE;
END_IF;
FC200 := TOP_SI.EV_NUM;
END_FUNCTION
--- Ende Code ---
Müsste man dann allerdings in alle Funktionen einfügen die da betroffen sind. (arbeit)
MfG
Daniel
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln