OSCAT Forum

oscat.lib => oscat.lib fuer Step 7 => Thema gestartet von: MacDeath am 26. Januar 2008, 15:29:20

Titel: dimm_i Fehler bei Netzausfall
Beitrag von: MacDeath am 26. Januar 2008, 15:29:20
Hallo liebes Oscat Team. Ich habe euren dimm_i Baustein in einer 315 2PN/DP im Einsatz. Super Baustein.
Jetzt ist mir allerdings aufgefallen,dass er am BYTE out nach einem Netzausfall den Wert einfriert. wenn ich dann von AUS (also Q=0 und dann gedrückt halten) hochdimme setzt er denn Byte out auf 1. von da an, tut sich nichts mehr am Byte out. Nur ein MRES hilft mir hier uas der patsche. :-(
Is da was mit den Einstelleungen meiner CPU nich in Ordnung ( softwaremässig kann die nur einen Warmstart - auch hier tritt das Phänomen auf) oder wurde ein Netzausfall bzw. CPU Stop beim dimm_i nicht berücksichtigt?

Gruß
Mac
Titel: Re: dimm_i Fehler bei Netzausfall
Beitrag von: dalbi am 26. Januar 2008, 15:37:45
Hallo Mac,

alle Bausteine die die Zeitfunktion T_PLC_MS nutzen, muss bei Neustart der CPU die Zeitfunktion initialisiert werden.

OB100
//stime initialize
//on cpu startup stime must be initialized
//! systemtime starts with 0ms !
      CLR   
      =     "IDB stime".init

      CALL  "stime" , "IDB stime"
       tx:=

MfG
Daniel
Titel: Re: dimm_i Fehler bei Netzausfall
Beitrag von: MacDeath am 26. Januar 2008, 15:55:06
heiß ich lade den OB100 rein und fertig? oder muss ich den dimm_i im ob100 aufrufen?
Titel: Re: dimm_i Fehler bei Netzausfall
Beitrag von: dalbi am 26. Januar 2008, 15:56:48
Nein, rein nur obigen Code im OB100 einfügen, dann sollte es funktionieren.

MfG
Daniel
Titel: Re: dimm_i Fehler bei Netzausfall
Beitrag von: MacDeath am 26. Januar 2008, 16:02:15
da steht schon was bei mir drin..der war auch geladen....
wenn ich das einfüge was du mir gegeben hast macht ers rot
das hattest du mir sogar noch gemacht aber der fehler tritt ja trotzdem auf

[gelöscht durch Administrator]
Titel: Re: dimm_i Fehler bei Netzausfall
Beitrag von: dalbi am 26. Januar 2008, 16:04:38
wie heisst der Instanz-DB zu stime FB64?

MfG
Daniel
Titel: Re: dimm_i Fehler bei Netzausfall
Beitrag von: MacDeath am 26. Januar 2008, 16:06:05
db64
Titel: Re: dimm_i Fehler bei Netzausfall
Beitrag von: dalbi am 26. Januar 2008, 16:07:09
ist nur ohne Symbol?

MfG
Daniel
Titel: Re: dimm_i Fehler bei Netzausfall
Beitrag von: MacDeath am 26. Januar 2008, 16:09:14
mhhh.... mist ich muss jetzt schnell weg..termin....ja eigentlich ist es das selbe ode nich? funktioniert aber nicht.
ich meld mich nacher noch mal danke erst mal.
Titel: Re: dimm_i Fehler bei Netzausfall
Beitrag von: dalbi am 26. Januar 2008, 16:35:51
oh ha tatsächlich, da ist ein Fehler drin.

MfG
Daniel
Titel: Re: dimm_i Fehler bei Netzausfall
Beitrag von: dalbi am 26. Januar 2008, 17:12:12
Hallo Mac,

also in denn OB100 müsste noch folgendes

//dimm_i initialize
      L     0
      T     "IDB dimm_i".last_step

jetzt klappt es dann auch beim Neustart.

MfG
Daniel
Titel: Re: dimm_i Fehler bei Netzausfall
Beitrag von: hugo am 26. Januar 2008, 18:31:02
hallo dalbi,
ist das ein fehler der nur step7 betrifft oder betrifft es auch andere portierungen?
Titel: Re: dimm_i Fehler bei Netzausfall
Beitrag von: MacDeath am 26. Januar 2008, 18:45:01
Hallo Hugo, hallo daniel.
Sorry musste eben ganzdringend weg.
Jetzt bin ich wieder da, seh den neun Eintrag, und habe ihn sofort probiert.  BOMBE!
0 in den .laststep des dimm_i DB's vom OB100 zu transferieren war dir Lösung! er hält den Wert und man kann nach Netz wiederherstellung und von STOP nach RUN sofort weiter dimmen, also zu deutsch: Nach Stromausfall geht mein Licht auch wieder in der selben Helligkeit sofort wieder an und ich kann sofort wieder dimmen.
Besten Dank Daniel ;D
Ein Hoch auf euch Jungs Ihr seit spitze.
Titel: Re: dimm_i Fehler bei Netzausfall
Beitrag von: dalbi am 26. Januar 2008, 20:02:39
hallo dalbi,
ist das ein fehler der nur step7 betrifft oder betrifft es auch andere portierungen?

Scheinbar betrifft das nur die Siemens portierung da hier bei einem Funktionsbaustein-Aufruf ein zugehöriger Instanz-Datenbaustein mit angegeben werden muss, dieser speichert dann alle Werte. Bei einem Netzausfall sind dann diese natürlich wieder so da.
Ich hoffe mal nicht das davon noch mehr Funktionen betroffen sind.


MfG
Daniel
Titel: Re: dimm_i Fehler bei Netzausfall
Beitrag von: gravieren am 27. Januar 2008, 11:43:26
Hi

Zitat
Scheinbar betrifft das nur die Siemens portierung da hier bei einem Funktionsbaustein-Aufruf ein zugehöriger Instanz-Datenbaustein mit angegeben werden muss, dieser speichert dann alle Werte. Bei einem Netzausfall sind dann diese natürlich wieder so da.
Ich hoffe mal nicht das davon noch mehr Funktionen betroffen sind.
Wie hast du die Remanenz eingestellt.

Wenn der Datenbaustein   NICHT als Remanent angegeben wird, sollte das passen  ? !


Falls das so ist, musste nur der entsprechende Hinweis am Kopf der Funktion.
Titel: Re: dimm_i Fehler bei Netzausfall
Beitrag von: dalbi am 27. Januar 2008, 15:20:54
Falls das so ist, musste nur der entsprechende Hinweis am Kopf der Funktion.

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]
Titel: Re: dimm_i Fehler bei Netzausfall
Beitrag von: dalbi am 27. Januar 2008, 15:27:08
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
Titel: Re: dimm_i Fehler bei Netzausfall
Beitrag von: MacDeath am 27. Januar 2008, 17:02:53
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.

 
Titel: Re: dimm_i Fehler bei Netzausfall
Beitrag von: dalbi am 27. Januar 2008, 22:01:36
Habe noch eine Möglichkeit gefunden, der Baustein erkennt selbstständig ob ein Neustart war.

Beispiel:
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

Müsste man dann allerdings in alle Funktionen einfügen die da betroffen sind. (arbeit)

MfG
Daniel