Tigerente1974
Level-3
- Beiträge
- 1.826
- Reaktionspunkte
- 293
-> Hier kostenlos registrieren
Hallo Forum,
ich habe zum ersten Mal mit der AT-Sicht herumprobiert.
Hintergrund: Ich habe die Bits für Störmeldungen in einem DB. Für den symbolischen Zugriff mit aussagekräftigem Kommentar wollte ich das auf jeden Fall mit BOOL-Variablen haben.
Zur besseren Übersicht habe ich die Bits zu einem "Wort" zusammengefasst. Dazu habe ich ein Struct angelegt, in dem 16 BOOL-Variablen deklariert sind.
Z.B.:
DBX0.0: "DB_Störungen".Foerderer12_W1.Sicherung
DBX0.1: "DB_Störungen".Foerderer12_W1.Laufzeitfehler
etc.
Für mein Sammelfehlerbit möchte ich natürlich das Wort abfragen. Das geht mit einem absoluten Zugriff.
Ich möchte aber symbolisch zugreifen. Das geht aber nicht wegen des STRUCT.
Also habe ich mir einen Baustein geschrieben, der als Eingang ein STRUCT mit 16 BOOL-Variablen hat und eine AT-Sicht als WORD darauf gelegt.
So kann ich das als WORD vergleichen und über einen Ausgang an der Schnittstelle ausgeben. ob ein Bit aus der Struktur an ist.
Das habe ich in der Simulation getestet und es scheint zu funktionieren.
Nun zu meiner Frage:
Für eine AT-Sicht wird ja ein FB benötigt. Bei dessen Aufruf muss also auch ein Instanz-DB deklariert werden.
Bei entsprechend vielen Störmeldewörtern käme eine ganz Reihe von IDB zusammen.
Deswegen habe ich getestet was passiert, wenn ich den FB mit der AT-Sicht immer mit der gleichen Instanz aufrufe.
In der Simulation hat die Auswertung mehrerer, verschiedener Störmeldewörter so funktioniert.
Andererseits sollte man das ja eben nicht machen, dass man einen FB mehrfach mit der gleichen Instanz aufruft.
Allerdings habe ich ja keine Variablen im "Static"-Bereich angelegt, sondern nur am Eingang und am Ausgang.
Ist der Code so unsauber?
Wenn ja, wie kann ich das sauber lösen ohne für jedes Störmeldewort einen IDB zu deklarieren?
Gruß
Chris
ich habe zum ersten Mal mit der AT-Sicht herumprobiert.
Hintergrund: Ich habe die Bits für Störmeldungen in einem DB. Für den symbolischen Zugriff mit aussagekräftigem Kommentar wollte ich das auf jeden Fall mit BOOL-Variablen haben.
Zur besseren Übersicht habe ich die Bits zu einem "Wort" zusammengefasst. Dazu habe ich ein Struct angelegt, in dem 16 BOOL-Variablen deklariert sind.
Z.B.:
DBX0.0: "DB_Störungen".Foerderer12_W1.Sicherung
DBX0.1: "DB_Störungen".Foerderer12_W1.Laufzeitfehler
etc.
Für mein Sammelfehlerbit möchte ich natürlich das Wort abfragen. Das geht mit einem absoluten Zugriff.
Ich möchte aber symbolisch zugreifen. Das geht aber nicht wegen des STRUCT.
Also habe ich mir einen Baustein geschrieben, der als Eingang ein STRUCT mit 16 BOOL-Variablen hat und eine AT-Sicht als WORD darauf gelegt.
So kann ich das als WORD vergleichen und über einen Ausgang an der Schnittstelle ausgeben. ob ein Bit aus der Struktur an ist.
Das habe ich in der Simulation getestet und es scheint zu funktionieren.
Nun zu meiner Frage:
Für eine AT-Sicht wird ja ein FB benötigt. Bei dessen Aufruf muss also auch ein Instanz-DB deklariert werden.
Bei entsprechend vielen Störmeldewörtern käme eine ganz Reihe von IDB zusammen.
Deswegen habe ich getestet was passiert, wenn ich den FB mit der AT-Sicht immer mit der gleichen Instanz aufrufe.
In der Simulation hat die Auswertung mehrerer, verschiedener Störmeldewörter so funktioniert.
Andererseits sollte man das ja eben nicht machen, dass man einen FB mehrfach mit der gleichen Instanz aufruft.
Allerdings habe ich ja keine Variablen im "Static"-Bereich angelegt, sondern nur am Eingang und am Ausgang.
Ist der Code so unsauber?
Wenn ja, wie kann ich das sauber lösen ohne für jedes Störmeldewort einen IDB zu deklarieren?
Gruß
Chris