lokale UDT in DB kopieren

Pico1184

Level-2
Beiträge
332
Reaktionspunkte
9
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe für den Datenaustausch mit einer Visualisierung eine UDT_Status (ein Wort) angelegt.

In einem DB_Status hat jede Anlagenkomponente diese UDT als Typ definiert.

Nun hatte ich gedacht in allen FCs / FBs meiner Anlagenkomponenten eine lokale Variable vom Typ der UDT anzulegen und diese je nach Status der Anlagenkomponente zu setzen und über einen FB_Copy_Status die lokalen Werte in den globalen DB_Status zu kopieren.

Dies funktioniert auch, allerdings sind auch bits im global db gesetzt welche nicht in der lokale struktur gesetzt sind....wie kann das zustande kommen????

im anhang sind screenshots zu finden!

Der Fehler äußert such dadurch, dass im Status DB teilweise die Reserve Bits gesetzt sind, obwohl diese in der lokalen struktur nie verwendet werden!

Hoffe mir kann jemand helfen!

Grüße Pico
 

Anhänge

  • DB_Status.pdf
    13,5 KB · Aufrufe: 19
  • FB_Antrieb_1_2.pdf
    23,1 KB · Aufrufe: 20
  • FC_Antrieb_2_3.pdf
    23,1 KB · Aufrufe: 17
  • UDT_Status.pdf
    15,5 KB · Aufrufe: 13
  • FB_Copy_Status.pdf
    16,8 KB · Aufrufe: 9
Hallo,

nix für ungut, aber wo hast du denn diese Strategie her???

Mein Typ:

Schreibe dein Stauswort in einen OUT-Parameter deiner Komponenten-FBs/FCs anstatt in die Lokaldaten.

An den OUT verschaltest du dann deinen VISU-DB beim Aufruf.

Ich halte nix von doppelter,dreifacher Datenhaltung.

Micha
 
Was heißt initialisiert? Muss ich jedem Wert erstmal "FALSE" zuweisen?

Die Variablen aus der UDT die du verwendest beschreibst du ja auf jeden Fall. Deine Reserve-Variablen werden von dir aber nicht beschrieben, und besitzen dementsprechend einen undefinierten Startwert. Wenn dich das mit den Werten der Reservevariablen stört, musst du diese eben auf einen definierten Wert setzen (true oder false je nach Wunsch). Wenn dich das nicht stört, dann lass es einfach so ;-)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ihr habt eigentlich recht, dass dies doppelte Datenhaltung ist (Thomas hatte letztes mal schon gemeint es würde ein IN_OUT Parameter reichen!

Ich hatte halt gedacht, dass es besser ist wenn ich einen zentralen Baustein habe der diesen Kopiervorgang übernimmt?!?!

Grüße Pico
 
wo liegt da deiner Meinung nach dér Vorteil?

Ich seh nur Nachteile:

- mehr Speicher
- mehr Zykluszeit
- mehr Aufwand bei Änderungen/Ergänzungen
 
So wie deine Bausteine die du jetzt hier angehängt hast aussehen, ergibt das mit der Temp-UDT auch keinen Sinn. Denn deine FCs und FBs sind doch eh so wie es aussieht speziell für einen Antrieb zugeschnitten, also nicht wiederverwendbar. Zumindest haben deine sogenannten Antriebs FC/FBs keine Schnittstelle.
Dann kannst du auch anstatt über die Temp-UDT zu gehen gleich in die UDT des Datenbausteines schreiben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
das war wohl viel zu kompliziert gedacht!

Ich kann ja das Bit auch direkt im DB setzen, son quatsch was ich da fabriziert hab?!?!?!

Dankeschön für eure schnelle Unterstützung!
 
Zurück
Oben