TIA Bit/Word Verknüpfungen MIT optimierten Datenbausteinen

shutdown_TIA12

Level-1
Beiträge
145
Reaktionspunkte
24
Zuviel Werbung?
-> Hier kostenlos registrieren
1. CPU 1511
2. TIA PORTAL V12 SP1

Tach Leute,

zerbreche mir gerade den Kopf, wie ich folgendes MIT optimierten Bausteinen (DB, FC) realisieren kann:
Gehen wir davon aus, dass ich 16 Fehlermeldungen in meiner Steuerung bekommen kann. Die Bits sollen einzeln im DB abgelegt werden. Gibt ja jetzt viele Möglichkeiten... Einzeln, als Word, Array oder als PLC_Datentyp im Datenbaustein (welche ist die sinnvollste?). Diese 16 Bits bzw. das Word, will ich mit einem anderen Datenbaustein (bzw. im gleichen Datenbaustein, halt anderer Bereich) und/oder...-verknüpfen. Wenn möglich in FUP oder AWL. Was ich jedoch vermeiden will, ist alle Bits einzeln zu verknüpfen.
Und um die Sache spannender zu machen: Ich übergebe an einen FC (auch optimierter Baustein) über IN-OUT die zwei Bereiche des DBs, die ich Wordweise/Bitweise verknüpfen will und speichere das Ergebnis in letzteres.

Hat jemand eine gute Idee oder einen Ansatz?
 
Einfach die Fehlermeldung als Word/DWORD im DB bzw. FB/FC deklarieren. Auf die einzelnen Bits kannst Du dann ggf. mit dem Slice-Verfahren (ich hoffe, ich irre mich da jetzt nicht mit der Bezeichnung) zugreifen.
Z.B.:
Code:
[FONT=courier new]VAR
  boolFehler1: Bool;
  boolFehler2: Bool;
  Stoerung: Word;
END_VAR


// Fehlerzuweisung
Stoerung.x0:= boolFehler1;
Stoerung.x1:= boolFehler2;
...

// Fehlerbearbeitung
IF Word_To_Int(Stoerung) > 0 THEN
  ...; 
END_IF;

// Fehlerlöschen
Stoerung:= 0;[/FONT]
Geht natürlich auch in FUP/KOP.
Müsste auch direkt mit INT/DINT funktionieren. Einfach mal testen.
 
Zuletzt bearbeitet:
Ja, danke erstmal für die Hilfe. Habe auch mit der Slice-Funktion geliebtäugelt, jedoch habe ich bei den einzelnen Bits keinen symbolischen Namen (was S. als Vorteil verkauft) und Kommentare der Einzelnen Bits sind auch nicht gegeben. Ich stelle mir nur vor, falls ein zukünftiger Servicemensch (im Programm!) schauen will, welche Störung gerade auftritt... also wenn Stoerung.x3 true ist, woher weiß er sofort, dass z.B. Druck zu niedrig ist... Wird nicht über Quellcode oder DB ersichtlich... Einzig allein könnte man eine Beobachtungstabelle die Einzelnen-Bits mit Kommentaren versehen (sofern das geht; muss ich noch testen).

Aber über Nacht kamen mir grandiose Ideen... will sie jedoch mal nächste Woche testen und schauen wie schnell und platzsparend die sind... ich werde berichten...

Falls noch jemand weitere Ansätze hat, immer her damit :)
 
... jedoch habe ich bei den einzelnen Bits keinen symbolischen Namen (was S. als Vorteil verkauft) und Kommentare der Einzelnen Bits sind auch nicht gegeben. Ich stelle mir nur vor, falls ein zukünftiger Servicemensch (im Programm!) schauen will, welche Störung gerade auftritt... also wenn Stoerung.x3 true ist, woher weiß er sofort, dass z.B. Druck zu niedrig ist... Wird nicht über Quellcode oder DB ersichtlich...

Das hast du bei S7-classic aber auch nicht in der Form.

Falls noch jemand weitere Ansätze hat, immer her damit :smile:

Gleich hinter dem Link von user Hucki kommt auch noch eine Beschreibung zum AT-Operator, das
wäre meines Erachtens eine weitere Lösung, da du ja ne S7-1511 verwenden willst.

Wie programmieren Sie in STEP 7 (TIA Portal) die Überlagerung von Variablen mit dem Schlüsselwort "AT"?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi all

vergesst das mit AT und all dem anderen "ich pack 16 Bit in ein Wort" 300/400 er Quatsch.

Lies mal http://www.sps-forum.de/simatic/67413-db-bereichsabfrage.html#post466269
und http://www.sps-forum.de/simatic/67616-awl-kop-oder-fup-2.html#post467913
und http://www.sps-forum.de/simatic/510...ff-nicht-eindeutige-adresse-3.html#post441956

Am schnellsten wird von der 1500 das ausgeführt was du nicht machen willst.
Was ich jedoch vermeiden will, ist alle Bits einzeln zu verknüpfen.
Glaub mir, das ist schnell. schneller als alles andere. Auch wenn du dir einen Wolf klickst.

Wenn du deine 16 bits in einen UDT packst, dann kannst du die als INOUT also per Referenz übergeben. Das kostet auch keine Zeit :D

'n schönen Tach auch
HB
 
Zurück
Oben