TIA F-Peripherie-DB in FC lesen & diesen FC in eine Bibliothek einbinden

Botimperator

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

ich habe mich mal wieder an eine Lösung für folgendes Thema gemacht:
https://www.sps-forum.de/threads/tia-safety-diagnoseinfos-von-der-hardware-aufbereiten.112111/

SPS: S7-1515F-2 PN
F-DI Baugruppe: 6ES7 136-6BA01-0CA0
TIA V18 mit Safety advanced

Der Plan war einen kleinen Baustein zu schreiben, der mir alle Zustandsinformationen zu dem F-Di Modul liest & in einen UDT packt, den ich dann am HMI in einem Bildbaustein visualisieren kann.
So weit, so undramatisch...(könnte man meinen)
Die FC-Schnittstelle habe ich folgendermaßen aufgebaut:
1700835680033.png
1700835726984.png
Grundlegend funktioniert das Ganze.
- an "iFPeripherieDb" verschalte ich den Peripherie-DB der Baugruppe
- An "iPerData" das Wort mit den F-Inputs + deren Wertstatus
- Da ich noch keine Möglichkeit gefunden habe die Kanal-Konfiguration aus dem Anwenderprogramm heraus zu lesen, muss ich die Konfig über die "iHwKanal_..." manuell setzen. Ist nicht schön, aber immer noch schöner als die aktuelle Lösung.
- Die Daten werden also übergeben, zusammengefasst, etwas aufbereitet & dann über den UDT "ioDisplay" ans HMI geschickt.

Also war klein Botimperator erstmal glücklich, wollte den Baustein als Abschluss seines Freitags in seine Bibliothek packen & sich mit einem Bier in der Hand seinem Fabrik-Projekt in Satisfacory zuwenden.
Dann kam einer dieser "ach f*ck dich"-Momente, die wir Siemens-Programmierer so lieben.
1700836604679.png

Anscheinend, soweit ich das verstehe, ist "F_PS_IN_1_0_0_0_0_0_0_2_1_0_1_23" zwar der Datentyp des F-Peripherie-DBs, allerdings kein richtiger Systemdatentyp.
=> kann also nicht in einem Bibliotheksbaustein verwendet werden.
Der Fehlertext an sich sagt aber eigentlich etwas anderes. Andererseits gehören die F-Peripherie-DBs zu den automatisch generierten Programmteilen.
Sicherheitshalber habe ich auch noch einige Schreibzugriffe auf Input-Werte im Programm angelegt, verwendet wird der also auf jeden Fall.

Hat jemand von euch eine Idee wie ich diese Fehlermeldung umgehen kann bzw. wie ich einen F-DB lesen kann ohne den Datentyp zu verwenden?
Würde ungern das ganze geraffel in dem DB einzeln auf die Schnittstelle packen....
1700837143859.png
 
Ist ganz witzig, du kannst beim Siemens Applikationsbeispiele runterladen. Gibt sogar eine Doku dazu.
Die machen das nicht so.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Welches Applikationsbeispiel meinst du?
Zum Thema "wie visualisieren ich den Status meiner F-Module auf dem HMI" wäre mit kein Beispiel bekannt.
Der Vortänzer in der TIA-Safety Schulung meine nur man kann sich aus den Peripherie-DBs was zur Anzeige basteln. Ein Lösungsbeispiel konnte der aber leider auch nicht aufbieten.

Hättest du mir nen Link dazu?
 
Ich hab jetzt nochmal eine Weile auf dem Problem rumgekaut....
Ein Siemens-Applikationsbeispiel habe ich nicht gefunden, also so gar nichts.
Nichtmal über Select Safety...https://perfdata.public.siemens.com/SelectSafetyBID.aspx?lang=de
Mich würde mal interessieren wie das andere machen die den Zustand der Safety-Hardware am HMI visualisieren.

Hab auch versucht mit DB_Any oder Variant den DB einzulesen, aber irgendwo muss ich immer den "F_PS_IN_1_0_0_0_0_0_0_2_1_0_1_23" Typ verwenden & ab da ist Feierabend mit dem typisieren des FCs.

Hat irgendjemand eine Idee wie ich einen beliebigen (optimierten) Datenbaustein einlesen kann, ohne dessen Typ angeben zu müssen?
 
Also soweit ich das verwende muss ich die alle Einzeln Anlegen da man nicht auf die Typen zu greifen kann, Da dieser FB ja auch im Bereich liegt der Automatisch erstellt wird. (Compiler-Bausteine) Ich verwende nur 2 von den Ausgangsbits. QBAD und ACK_REQ, da ja eh die Fehler am HMI-Aufschlagen schenke ich mir den Rest. (Wird generiert in den Systemmeldungen).
 
Sowas haben wir nicht gemacht, alles was benötigt wurde, ging über einen nicht sicheren DB in das eigentlich Programm und wurde dort benutzt und anders rum. PtS/StP DBs gabs immer.
Was meinst du genau mit "PtS/StP DBs"?
Die Schnittstellen-DBs zwischen Safety- und Standardprogramm? Oder die Peripherie-DBs?

Also soweit ich das verwende muss ich die alle Einzeln Anlegen da man nicht auf die Typen zu greifen kann, Da dieser FB ja auch im Bereich liegt der Automatisch erstellt wird. (Compiler-Bausteine) Ich verwende nur 2 von den Ausgangsbits. QBAD und ACK_REQ, da ja eh die Fehler am HMI-Aufschlagen schenke ich mir den Rest. (Wird generiert in den Systemmeldungen).
Tja...dummerweise brauch ich alles als Bitmeldungen, also fällt das mit den Systemmeldungen aus.

Naja, ich werde schon irgendwas finden wie ich die verdammte Hardware am Panel visualiseren kann, ohne jedesmal alles per hand durch die gegend schaufeln zu müssen...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
PtS = eigener DB für Variablen die vom unsicheren Programm ins sichere Programm gehen (Program to Safety)
StP = eigener DB für Variablen die vom sicheren Programm ins unsichere gehen (Safety to Program)
 
Hallo zusammen,

ich habe mich mal wieder an eine Lösung für folgendes Thema gemacht:
https://www.sps-forum.de/threads/tia-safety-diagnoseinfos-von-der-hardware-aufbereiten.112111/

SPS: S7-1515F-2 PN
F-DI Baugruppe: 6ES7 136-6BA01-0CA0
TIA V18 mit Safety advanced

Der Plan war einen kleinen Baustein zu schreiben, der mir alle Zustandsinformationen zu dem F-Di Modul liest & in einen UDT packt, den ich dann am HMI in einem Bildbaustein visualisieren kann.
So weit, so undramatisch...(könnte man meinen)
Die FC-Schnittstelle habe ich folgendermaßen aufgebaut:
Anhang anzeigen 73251
Anhang anzeigen 73252
Grundlegend funktioniert das Ganze.
- an "iFPeripherieDb" verschalte ich den Peripherie-DB der Baugruppe
- An "iPerData" das Wort mit den F-Inputs + deren Wertstatus
- Da ich noch keine Möglichkeit gefunden habe die Kanal-Konfiguration aus dem Anwenderprogramm heraus zu lesen, muss ich die Konfig über die "iHwKanal_..." manuell setzen. Ist nicht schön, aber immer noch schöner als die aktuelle Lösung.
- Die Daten werden also übergeben, zusammengefasst, etwas aufbereitet & dann über den UDT "ioDisplay" ans HMI geschickt.

Also war klein Botimperator erstmal glücklich, wollte den Baustein als Abschluss seines Freitags in seine Bibliothek packen & sich mit einem Bier in der Hand seinem Fabrik-Projekt in Satisfacory zuwenden.
Dann kam einer dieser "ach f*ck dich"-Momente, die wir Siemens-Programmierer so lieben.
Anhang anzeigen 73253

Anscheinend, soweit ich das verstehe, ist "F_PS_IN_1_0_0_0_0_0_0_2_1_0_1_23" zwar der Datentyp des F-Peripherie-DBs, allerdings kein richtiger Systemdatentyp.
=> kann also nicht in einem Bibliotheksbaustein verwendet werden.
Der Fehlertext an sich sagt aber eigentlich etwas anderes. Andererseits gehören die F-Peripherie-DBs zu den automatisch generierten Programmteilen.
Sicherheitshalber habe ich auch noch einige Schreibzugriffe auf Input-Werte im Programm angelegt, verwendet wird der also auf jeden Fall.

Hat jemand von euch eine Idee wie ich diese Fehlermeldung umgehen kann bzw. wie ich einen F-DB lesen kann ohne den Datentyp zu verwenden?
Würde ungern das ganze geraffel in dem DB einzeln auf die Schnittstelle packen....
Anhang anzeigen 73254
Kannst du den Auswerte FC mal teilen? ggf. hätte ich neh Lösung zu deinem Problem...
 
Hier einmal die Bausteinquelle von meinem letzten Teststand.
Funktionieren tut er, er lässt sich nur nicht in eine Bibliothek typisieren.

Hab auch schon überlegt ob ich die F-Peripherie über einen DB_ANY lesen könnte.
Müsste theoretisch gehen, bin aber bisher noch nicht dazu gekommen das zu testen.
 

Anhänge

  • LAS_HwDiag_F-DI8x24VDCHF.zip
    2,8 KB · Aufrufe: 4
Zurück
Oben