TIA Vorbelegung von UDT Arrays mit Kommentaren TIA V20

uge

Level-2
Beiträge
21
Reaktionspunkte
5
Zuviel Werbung?
-> Hier kostenlos registrieren
Servus,

wir nutzen aktuell noch das Bitmeldeverfahren an der Sinumerik (TIA V20) und würden gerne die Fehlermeldungen, welche wir in einer Excel pflegen auch in den Kommentaren des Melde-DBs eintragen. Ich würde hierzu unser Excelmakro erweitern, aber hab noch keine Lösung gefunden die Kommentare in der Quelle des UDTs vorbelegen zu können. Hat damit jemand von euch schon Erfahrungen gesammelt?

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hast du da ein Beispiel?

Aktuell sieht die Quelle so aus:

Code:
      res552 : Word;   // Reserviert
      UserA : Array[0..63] of Struct
         A70UUxx : Array[0..63] of Bool;   
      END_STRUCT;

Für jedes Array Element soll ein Kommentar hinzugefügt werden. Vorgehensweise wäre dann: Excel Fehlertexte pflegen, Makro starten und dieses erstellt dann ein UDT der mit den Fehlertexten als Kommentar vorbelegt ist, diesen in TIA exportieren und fertig.
 
Mann kann ja mal paar sinnlos kommentar händisch eintragen und dann die quelle exportieren.
Dann sieht mann zumindest den aufbau.

Ich persönlich würde ab dann mit claude arbeiten: neue quelle und excel hochladen und sagen: erstelle mir eine neue quelle und füge die kommentare für jedes arrayelement aus dem angehängten excel hinzu.
 
Hast du da ein Beispiel?

Aktuell sieht die Quelle so aus:

Code:
      res552 : Word;   // Reserviert
      UserA : Array[0..63] of Struct
         A70UUxx : Array[0..63] of Bool;
      END_STRUCT;

Für jedes Array Element soll ein Kommentar hinzugefügt werden. Vorgehensweise wäre dann: Excel Fehlertexte pflegen, Makro starten und dieses erstellt dann ein UDT der mit den Fehlertexten als Kommentar vorbelegt ist, diesen in TIA exportieren und fertig.

Siemens DB2 Fehlermeldungen für die ONE.
Ihr müsst ja nicht diesen Aufbau des Struct nehmen und könnt auch diskrete Bits machen.
Allerdings ist dieser Aufbau schon so seit ca. 1995 und jeder kennt sich damit aus ;) gerade A70UU[0..31] und A70UU[32..63].
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mann kann ja mal paar sinnlos kommentar händisch eintragen und dann die quelle exportieren.
Dann sieht mann zumindest den aufbau.

Ich persönlich würde ab dann mit claude arbeiten: neue quelle und excel hochladen und sagen: erstelle mir eine neue quelle und füge die kommentare für jedes arrayelement aus dem angehängten excel hinzu.
Genau sowas meine ich
 
Habe das mit V20 mal versucht, eben nochmal mit V21 - Beim Export eines UDT wird der Arraykommentar übergeben, mehr aber auch nicht. Die einzelnen Elemente sind nicht mehr kommentiert.
Anders sieht es mit Startwerten aus, diese werden übergeben.

Hier eine exportierte Quelle aus V21 in welcher in den Einzelelementen die Startwerte verändert sind, aber nur die ersten drei, im UDT im TIA-Portal sind die Kommentare vorhanden, in der Quelle nicht mehr.
Code:
TYPE "UDT_Name"
VERSION : 0.1
   STRUCT
      Arrayname : Array[0..10] of Bool := [TRUE, 2(FALSE), TRUE];   // Arraykommentar
   END_STRUCT;

END_TYPE

Daher wird es wohl nicht gehen die Kommentare durch die Quelle zu importieren, es sei denn Export und Import arbeiten verschieden (außer der Richtung).
 
wie wärs mit einfachem copy-paste? also im excel kopieren und im DB pasten.
oder wäre das ein zusätzliche (wenn auch einfacher) workstream, welcher nicht gewünscht ist?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn man schon mit Excel Symbole, Meldungen usw. generiert, warum dann nicht in ein Struct of Bool? Dann generiert man nicht nur den Kommentar, sondern auch ein Symbol dazu. Symbole und Kommentar kann man im TIA ganz einfach spaltenweise in den Meldungseditor einfügen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Symbol ist aussagekräftig genug: DB_Meldungen.Anlagenort[5] // Störung: BMK - Text - Fehlerursache
Man sieht also wo genau die Meldung liegt. Den Kommentar dann in TIA an der Variable anzeigen einstellen und die Übersicht ist da.

Warum Arrays?
1200er:
Nicht-optimierter DB, darin ein Array 1..256 of bool, das nächste 257..512, ... und die meldenummer im hmi sind exakt mit diesem index übereinstimmend. zusätzlich im DB an den einzelnen Elementen noch die Störmeldung wie sie im HMI auch ist. Somit ist jede Meldung im gesamten System mit Index übereinstimmend. Aufruf im HMI wie gewohnt über absolute Adresse und Word.

1500er mit Comfort oder MTP:
Es wird Program_Alarm genutzt. Dafür habe ich einen Baustein erstellt welcher durch ein Array gehen kann, sich anschaut welche Meldung gekommen oder gegangen ist und per Flanke wird Program_Alarm am EN aufgerufen. Dabei wird dann der Kommentar als Meldetext genutzt, diesen vorher einmal in eine Textliste mit identischem Index kopieren, die Erstellung am HMI fällt dann ja weg.
Also, für 1500er keine großen Änderungen, nur den einen Baustein einfügen, Rest ist zwischen 1200/1500 gleich.

Für mich auf diese Weise die schnellste Möglichkeit die Meldungen anzuzeigen ohne den Stil zu ändern.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du musst nie etwas suchen? Verwendest du denn nicht die Störungsmeldungen im Programm zum Verriegeln irgend welcher Dinge? Angenommen, du benötigst die Meldung eines Motorschutzschalters der Pumpe P1, welche zur Anlage 1 gehört. Dann suchst du doch jedes Mal in deinem Array 1..256 nach dem entsprechenden Bit. Hätte das Bit den Namen "ST1.ANL1_P1_MSS", findet man es es doch ganz einfach bei der Eingabe der ersten paar Zeichen. Der dazugehörige digitale Eingang bekommt sinnvollerweise den selben Schlüssel "ANL1_P1_MSS".
 
Du musst nie etwas suchen?
Nein, niemals, und da wir alle Progamme an den Kunden offen ausgeben und die Instandhalter bisher immer positive Rückmeldungen gegeben haben, denke ich, das es nicht wirklich schwer ist, zu finden, wonach man sucht.

Verwendest du denn nicht die Störungsmeldungen im Programm zum Verriegeln irgend welcher Dinge? Angenommen, du benötigst die Meldung eines Motorschutzschalters der Pumpe P1, welche zur Anlage 1 gehört. Dann suchst du doch jedes Mal in deinem Array 1..256 nach dem entsprechenden Bit. Hätte das Bit den Namen "ST1.ANL1_P1_MSS", findet man es es doch ganz einfach bei der Eingabe der ersten paar Zeichen. Der dazugehörige digitale Eingang bekommt sinnvollerweise den selben Schlüssel "ANL1_P1_MSS".

Was möchte ich mit der einen Meldung das der MSS ausgelöst hat anstellen?
Eine Pumpe hat auch einen PTC oder so. Den schreibst Du nun auch überall mit dran?
Die Pumpe ist nur ein kleines Beispiel, es könnte auch ein analoger Klappenantrieb mit Rückmeldung sein. Der hat mehr als 10 Meldungen.
Die will ich nicht alle einzeln irgendwo dranschreiben, also gibt es Sammelvariablen:
DB_Anlagenteil.Zuluft.Frischluftklappe.Sammelstoerung

und wenn man es wirklich genauer wissen will:
FC_Anlagenteil_Zuluft_Meldungen - SCL hat links eine, per Hand, alphabetisch sortierte, Baumstruktur (wenn man das suchen nennen mag, dann bittesehr).


ST1.ANL1_P1_MSS nutzt Du vermutlich weil Du es irgendwann so gelernt hast. Für Dich und viele andere ergibt das Sinn, ist ja auch gut so. Kann ich lesen, mag ich aber nicht lesen, nutze ich auch nicht. Es ist nicht mehr zeitgemäß. Zeit beim programmieren spare ich auch nicht; Autovervollständigung.
Aktuelle Steuerungen, egal ob die hierzulande verbreiteten Beckhoff (Codesys) oder Siemens, lassen sich symbolisch programmieren. Also sprechende Namen nutzen, das hilft dann auch anderen Programmierern ein fremdes Programm leichter zu verstehen.
 
Erstmal danke für die Anregungen.
Habe das mit V20 mal versucht, eben nochmal mit V21 - Beim Export eines UDT wird der Arraykommentar übergeben, mehr aber auch nicht. Die einzelnen Elemente sind nicht mehr kommentiert.
Anders sieht es mit Startwerten aus, diese werden übergeben.

Hier eine exportierte Quelle aus V21 in welcher in den Einzelelementen die Startwerte verändert sind, aber nur die ersten drei, im UDT im TIA-Portal sind die Kommentare vorhanden, in der Quelle nicht mehr.
Code:
TYPE "UDT_Name"
VERSION : 0.1
   STRUCT
      Arrayname : Array[0..10] of Bool := [TRUE, 2(FALSE), TRUE];   // Arraykommentar
   END_STRUCT;

END_TYPE

Daher wird es wohl nicht gehen die Kommentare durch die Quelle zu importieren, es sei denn Export und Import arbeiten verschieden (außer der Richtung).
Auf diesem Stand bin ich in der Zwischenzeit auch, es wird leider immer nur der Kommentar des Arrays und nicht der einzelnen Indexe importiert/exportiert.


wie wärs mit einfachem copy-paste? also im excel kopieren und im DB pasten.
oder wäre das ein zusätzliche (wenn auch einfacher) workstream, welcher nicht gewünscht ist?
Wird wohl oder übel dieser Workflow werden, die Sache mit der Quelle wäre halt elegant gewesen ;)

Da hast du natürlich recht. Aber wozu Indizes an dieser Stelle? Und wer arbeitet freiwillig mit Störungen namens "xyz[32]", ohne aussagefähiges Symbol und ohne Kommentar?
Da hast du völlig recht, aber wie @Boxy schon erwähnt hat ist dieses System bei der Sinumerik schon seit Jahren so, deshalb gibt es die Excel die dann parallel geöffnet ist und die Fehlermeldungen inkl. Bit anzeigt.
Die Indexe der Arrays nutzen wir, um die richtige Stopp-Reaktion zu starten und können deshalb nicht darauf verzichten.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du könntest noch den Weg gehen und eine Application schreiben. Diese übernimmt Import und Export. Damit kannst Du dann einen UDT so formatieren wie Du magst und die Application kann das UDT erstellen, anschließend die Kommentare aus der eigenen Quelle einfügen.
 
Du könntest noch den Weg gehen und eine Application schreiben. Diese übernimmt Import und Export. Damit kannst Du dann einen UDT so formatieren wie Du magst und die Application kann das UDT erstellen, anschließend die Kommentare aus der eigenen Quelle einfügen.
Hast du da den Weg über die Openess-Schnittstelle im Kopf oder wie muss ich mir das vorstellen?
 
Ja, dann im TIA-Portal einbinden und es ist in jedem Projekt verfügbar. Ich glaub Siemens nennt es Add-Ins. Wird in C# geschrieben und dann als .addin übergeben.
Habe davon ein paar für mich geschrieben, erleichtert so einiges.
 
Zurück
Oben