Step 7 Bitmaske anlegen

Zuviel Werbung?
-> Hier kostenlos registrieren
Mit GATHER und SCATTER kannst du ganz leicht zwischen einem WORD und einer 16-Bit-Struktur hin und her kopieren. Die Befehle sind praktisch für Statuswörter fürs HMI zusammenstellen oder Requests wieder aufzuteilen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mit GATHER und SCATTER kannst du ganz leicht zwischen einem WORD und einer 16-Bit-Struktur hin und her kopieren. Die Befehle sind praktisch für Statuswörter fürs HMI zusammenstellen oder Requests wieder aufzuteilen.
ja scheint nützlich zu sein, hab jetzt ein array mit 16 bits, kann im array aber selber keine eindeutigen namen vergeben, mal sehen ob ich das an anderer stelle machen kann damit man auf die tabelle gänzlich verzichten kann
 
ja scheint nützlich zu sein, hab jetzt ein array mit 16 bits, kann im array aber selber keine eindeutigen namen vergeben, mal sehen ob ich das an anderer stelle machen kann damit man auf die tabelle gänzlich verzichten kann
Probier's mit einer Struktur mit 16 Bools. So kannst du deine Namen vergeben - mit Kommentar.
[Edit] Es müssen aber exakt 16 Bools sein!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Probier's mit einer Struktur mit 16 Bools. So kannst du deine Namen vergeben - mit Kommentar.
[Edit] Es müssen aber exakt 16 Bools sein!
das läuft aufjedenfall, falls ich die bits manipulieren wollen würde, müsste ich die in eine funktion einspeisen als InOut über einen DB ode?
 
Nur wenn das WORD auch irgendwo geschrieben wird. Dann musst du das WORD mit SCATTER erst auf die Bits kopieren.

Wenn nur die Bits manipuliert werden und das WORD nirgends geschrieben wird, muss nur nach Schreiben des letzten Bits mit GATHER auf das Word kopiert werden.
 
Hinweis: Slice Zugriffe sollte man nicht auf Integer-Variablen anwenden. Bei IEC nicht erlaubt.
In SCL ist Slice auf Integer/Ganzzahlen nicht erlaubt. In FUP/KOP beugt sich Siemens den "schlampigen" Programmierern und lässt diesen Mist zu - wie lange noch?
Wenn ich in meinem TIA V15.1 Update 5 in einem SCL-Baustein die IEC-Prüfung aktiviere, dann werden Slice-Zugriffe auf INT/DINT/UDINT... als ungültige Syntax angemeckert.
Siehe auch folgende Diskussion:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... hab jetzt ein array mit 16 bits, kann im array aber selber keine eindeutigen namen vergeben, ...
Doch, kannst Du.

Dafür erstellst Du Dir (globale) Konstanten mit dem gewünschten eindeutigem Namen und weist denen jeweils einen Wert des ARRAY-Bereichs zu.

Z.B.:
Konstante
FEHLER_1 := 1


Und beim ARRAY verwendest Du dann diese Konstanten statt Zahlen, um auf die einzelnen Felder zuzugreifen

MyFehlerArray["FEHLER_1"] := ...


So hast Du "sprechende" Namen und
Schleifen u.ä. kannst Du trotzdem auf herkömmlichen Weg über das ARRAY rattern lassen.
😁


PS:
Im DB z.B siehst Du diese Konstante dann zwar nicht, dafür hast Du dort aber den Kommentar.
 
Zuletzt bearbeitet:
Doch, kannst Du.

Dafür erstellst Du Dir (globale) Konstanten mit dem gewünschten eindeutigem Namen und weist denen jeweils einen Wert des ARRAY-Bereichs zu.

Z.B.:
Konstante
FEHLER_1 := 1


Und beim ARRAY verwendest Du dann diese Konstanten statt Zahlen, um auf die einzelnen Felder zuzugreifen

MyFehlerArray["FEHLER_1"] := ...


So hast Du "sprechende" Namen und
Schleifen u.ä. kannst Du trotzdem auf herkömmlichen Weg über das ARRAY rattern lassen.
😁


PS:
Im DB z.B siehst Du diese Konstante dann zwar nicht, dafür hast Du dort aber den Kommentar.
ich hab mir einen datentypen erstellt da ich die ohnehin öfters verwenden werde und diesen als merker im datenbaustein aufgerufen. da konnte ich auch jedem eintrag einen namen geben und falls es in zukunft änderungen geben sollte lässt sich das leichter anpassen.

kannst du mir einen Tipp geben worauf ich achten sollte wenn ich meine bibliothek an andere weitergeben möchte? ich verzichte z.b vollständig auf merker, verwende für merker einen DB, sollte ich auch den funktionsumfang auf mehrere FBs aufteilen?
 
Zurück
Oben