TIA HMI und SPS Interaktion: Blockieren von Steueraktionen bei Schlüsselverwendung

Nethiros

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

ich arbeite gerade an einem Projekt, in dem ich mit einer HMI-Schnittstelle und einer SPS umgehen muss. Unser System verfügt über verschiedene Taster in der HMI, mit denen sowohl Navigationsaufgaben (Seitenumschaltungen) als auch Steueraktionen (z.B. Steuerspannung ein-/ausschalten) durchgeführt werden können.

Das System beinhaltet auch einen Transponderschlüssel, der in der Anlage eingesteckt werden kann. Sobald dieser Schlüssel eingesteckt ist (und ein Bit setzt), sollen keine Steueraktionen mehr über das HMI durchgeführt werden können. Die Navigation sollte allerdings nach wie vor möglich sein.

Die Herausforderung ist, dass die Programmierung der Steueraktionen in einem Funktionsbaustein (FB) stattfindet, den ich nicht verändern darf. Die Steuerspannung wird über die HMI-Schnittstelle zur SPS-Programmierung geschrieben.

Ich bin auf der Suche nach Ideen oder Lösungen, wie ich dieses Verhalten erreichen kann, ohne auf den Funktionsbaustein zuzugreifen. Gibt es eine Möglichkeit, die HMI-Schnittstelle so zu konfigurieren, dass alle Schreibbefehle an die SPS, die Steueraktionen auslösen, blockiert werden, wenn der Schlüssel eingesteckt ist?

Ich freue mich auf eure Gedanken und Vorschläge zu diesem Thema!

Beste Grüße,
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was hast du denn für ein HMI? Bei vielen Systemen lässt sich die Bedienbarkeit von Schaltflächen und EA-Feldern über ein Bit deaktivieren.
Erst einmal danke für die schnelle Antwort. Es ist ein IPC477E HMI Panel von Siemens. Wie heißt das Bit denn, und wo finde ich es?
 
Du musst das natürlich selber programmieren. Also von deinem Schlüsselschalter in der SPS eine Variable generieren worauf das HMI zugreifen kann, und dann diese Variable mit allen Bedienelementen verknüpfen. Je nach Anzahl ist das mit etwas Aufwand verbunden.
 
Hallo Thomas,

vielen Dank für die weitere Klarstellung. Ich habe das jetzt so verstanden, dass ich eine Variable in der SPS erstellen muss, die den Zustand des Schlüsselschalters repräsentiert. Diese Variable könnte ich dann in meinem HMI-System lesen und alle meine Taster damit verknüpfen.

Muss ich dann für jeden Taster eine UND-Verknüpfung mit dieser Schlüsselschalter-Variable erstellen, um zu überprüfen, ob der Taster betätigt werden kann oder nicht? Oder gibt es einen effizienteren Weg, dies zu tun, den ich übersehen habe?

Nochmals vielen Dank für deine Zeit und Hilfe!

Beste Grüße, Nethiros
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Muss ich dann für jeden Taster eine UND-Verknüpfung mit dieser Schlüsselschalter-Variable erstellen, um zu überprüfen, ob der Taster betätigt werden kann oder nicht? Oder gibt es einen effizienteren Weg, dies zu tun, den ich übersehen habe?
Nein, in der SPS nur eine Variable Schlüsselschalter_ein. Das kann auch direkt der Eingang sein, wo der Schalter draufgeht.

In der Visu bei Bei Bedienbarkeit diese Variable angeben.
1688977031073.png
 
Hallo Peter,

Danke für die weitere Erklärung. Es macht Sinn, die Bedienbarkeit der HMI-Taster direkt über die "Schlüsselschalter_ein" Variable in der Visualisierung zu steuern.

Allerdings mache ich mir Sorgen um den Arbeitsaufwand, den es bedeuten könnte, diese Änderungen auf allen unseren HMI-Panels und Tastern vorzunehmen (wir haben eine ganze Menge). Ich denke darüber nach, diesen Prozess möglicherweise mit TIA Openness zu automatisieren. Wie komplex wäre es, ein solches Skript zu schreiben, um diese Aufgabe zu automatisieren bzw. ist es möglich ein Skript zu schreiben, was diese Aufgabe übernimmt? Die Variablen sollten auf Grund eines Standards immer die selbe Benennung haben.

Vielen Dank für eure Hilfe!

Beste Grüße, Nethiros
 
Leider habe ich festgestellt, dass die vorgeschlagene Methode in meinem Fall leider doch nicht funktioniert. Die HMI in meinem Projekt wird mit einer Bildbaustein-Instanz gesteuert, bei der es keinen Reiter "Bedienbarkeit" gibt. Die Bildbaustein-Instanz hat lediglich die Einstellungen: Variablenanbindungen und Bewegungen.

Habt ihr eventuell eine Idee, wie ich das Problem lösen könnte?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vorschlag:
Anstatt die Bildbaustein direkt mit die FB Daten zu verbinden, ein Puffer DB einrichten. Die Daten in Puffer DB muss dieselbe Struktur wie die HMI Einstell-Daten haben.
Wenn die Schlüsselschalter EIN (HMI Eingabe gesperrt) in das SPS Programm von die Puffer DB nach die HMI Daten kopieren.
Wenn die Schlüsselschalter AUS (HMI Eingabe erlaubt) in das SPS Programm von die HMI Daten nach die Puffer DB kopieren.
 
Vorschlag:
Anstatt die Bildbaustein direkt mit die FB Daten zu verbinden, ein Puffer DB einrichten. Die Daten in Puffer DB muss dieselbe Struktur wie die HMI Einstell-Daten haben.
Wenn die Schlüsselschalter EIN (HMI Eingabe gesperrt) in das SPS Programm von die Puffer DB nach die HMI Daten kopieren.
Wenn die Schlüsselschalter AUS (HMI Eingabe erlaubt) in das SPS Programm von die HMI Daten nach die Puffer DB kopieren.
Vielen Dank für den hilfreichen Vorschlag, allerdings glaube ich, dass dies in meinem Fall schwierig umzusetzen sein könnte. In meinem Programm gibt es nicht nur einen Funktionsbaustein, der Daten an das HMI sendet, sondern sehr viele. Fast jede Komponente, die in die Anlage eingebaut werden kann, hat ihren eigenen Funktionsbaustein, und diese können sich durch externe Updates auch ändern. Daher wäre es eine enorme Herausforderung, von jedem einzelnen Funktionsbaustein eine Art Puffer zu erstellen.

Ich frage mich, ob es eine Möglichkeit gibt, die Verbindungen zwischen den Funktionsbausteinen und dem HMI zu unterbrechen oder zu blockieren, solange kein Schlüssel gesteckt ist? So dass im Wesentlichen die Funktionsbausteine ihre Daten nicht an das HMI senden können, wenn der Schlüsselschalter auf "Ein" geschaltet ist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin Harald,

ich programmiere nach VASS-Standard und mein Verständnis, wie die HMI mit der SPS kommuniziert, ist dabei wie folgt:
Jede wichtige Funktion hat einen eigenen Baustein (z.B. Steuerspannung einschalten hat einen eigenen Funktionsbaustein, inklusive Instanzdatenbaustein). In der Visualisierung befinden sich durch Sivarc generierte Bildbaustein-Instanzen, die aus unter anderem auch aus Schaltflächen zusammensetzen. Diese Bildbausteininstanzen haben eine Schnittstelle zu den Instanzdatenbausteinen (z.B. bei Steuerspannung der DB_Steuerspannung). Bei Betätigung können so die Daten zwischen HMI und SPS ausgetauscht werden. Das Problem ist, ich darf die Bibliotheken für z.B. FB_Steuerspannung nicht anrühren. Die Bausteine werden ab und zu geupdated und daher würden sämtliche manuelle Änderungen an den Bausteinen jedes mal überschrieben werden.

Liebe Grüße
Nethiros
 
Leider habe ich festgestellt, dass die vorgeschlagene Methode in meinem Fall leider doch nicht funktioniert. Die HMI in meinem Projekt wird mit einer Bildbaustein-Instanz gesteuert, bei der es keinen Reiter "Bedienbarkeit" gibt. Die Bildbaustein-Instanz hat lediglich die Einstellungen: Variablenanbindungen und Bewegungen.
Kannst du die Schnittstelle des Bildbausteins evtl. mit einem Parameter Bedienbarkeit erweitern?

Sonst könntest du die Benutzerverwaltung erweitern und bei Schlüsselschalter mit Steuerungsauftrag 23 (Benutzer anmelden) und 24 (Benutzer abmelden) arbeiten. Dann musst du den entsprechenden Schaltflächen natürlich die bei Eigenschaften - Security die entsprechende Berechtigung zuteilen.
 
Fast jede Komponente, die in die Anlage eingebaut werden kann, hat ihren eigenen Funktionsbaustein, und diese können sich durch externe Updates auch ändern. Daher wäre es eine enorme Herausforderung, von jedem einzelnen Funktionsbaustein eine Art Puffer zu erstellen.
Eigentlich nicht. Du hast irgendein DB mit die Strukturen von der Bildbaustein. Diese DB kopieren und als die genannte Puffer-DB verwenden.
Wenn es pro 'Objekt' ein DB ist, dann musst du diese DBs oder am mindestens die Eingabe Daten von der Bildbaustein kopieren. Es ist dann eine gewisse Fleissarbeit.

Die Bausteine werden ab und zu geupdated und daher würden sämtliche manuelle Änderungen an den Bausteinen jedes mal überschrieben werden.
Dann muss ich fragen, sind die Schnittstellen zwischen SPS und HMI nicht fest definiert ?
Wenn nicht, dann ist etwas schief gelaufen. Dann hat man genau das Problem das Updates schwierig zu hantieren sind.
Um diese Schnittstellen festzuhalten ist ein klare Fall für UDTs.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich lese jetzt.
Diese Bildbausteininstanzen haben eine Schnittstelle zu den Instanzdatenbausteinen (z.B. bei Steuerspannung der DB_Steuerspannung).
Kann das wirklich sein, dass die VASS Standard erlaubt direkt in Instanzdaten zu schreiben ?
Gibt es nicht in die FBs Eingangs oder Ausgangs Parameter für diese Schnittstelle ?
 
Wäre es möglich, im HMI eine Rezeptur mit allen Kommando-Variablen anzulegen?
Diese Rezeptur könntest du nämlich mit der Systemfunktion "SetzeRezepturvariablen" umschaltbar off- bzw. online setzen.

Auf eine ähnliche Art und Weise verhindere ich bei meinen HMIs, dass Stör- und Warnmeldungen getriggert werden, BEVOR ein bestimmtes Boot-Skript durchgelaufen ist.

EDIT:
Etwas ähnliches könntest du auch mit HmiPlc-Verbindungen betreiben: die betroffenen Kommandovariablen mit einer separaten Verbindung projektieren und diese dann off- bzw. online schalten (Auch dafür gibt es eine Systemfunktion).


Gruß, Fred
 
Etwas ähnliches könntest du auch mit HmiPlc-Verbindungen betreiben: die betroffenen Kommandovariablen mit einer separaten Verbindung projektieren und diese dann off- bzw. online schalten (Auch dafür gibt es eine Systemfunktion).
Dann bekommt man aber nervender Systemmeldungen wenn ein Bild versucht nicht erreichbare Variabeln zu erreichen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Dann bekommt man aber nervender Systemmeldungen wenn ein Bild versucht nicht erreichbare Variabeln zu erreichen.
Habe ich bis jetzt so nicht feststellen können.
Die Verbindung ist ja nicht fehlerhafterweise unterbrochen, sondern gewollt offline geschaltet.

Das gleiche kann man ja zur Projektierungszeit genauso einstellen:
1688987662364.png
 
@faust , das wusste ich nicht.
Was passiert wenn man ein Wert eintippt in ein in diese Weise deaktivierte Eingabefeld ?
Man bekommt keine Warnmeldung dass die Wert nicht übernommen wurde ?

Und wird es die Rauten, ein Null, oder den letzten bekannten Wert angezeigt ?
Irgendwie ist es nicht schön.
 
Habe ich bis jetzt so nicht feststellen können.
Die Verbindung ist ja nicht fehlerhafterweise unterbrochen, sondern gewollt offline geschaltet.

Das gleiche kann man ja zur Projektierungszeit genauso einstellen:
Anhang anzeigen 70032
Moin,
erst einmal nochmal danke für alle eure Antworten. Diesen Ansatz finde ich sehr interessant und ich werde diesen gleich einmal ausprobieren. Ich habe auch noch einmal etwas genauer die Projektstruktur angeschaut und kann sagen, dass weder Bildbausteinstanzen, noch UDTs geändert werden können, weil diese überschrieben werden könnten. Selbiges gilt für bereits existierende FBs. Ein weiterer Ansatz den ich hatte, war ein Programm zu schreiben, welches Flächen über die Bedienflächen legt, damit diese nicht bedient werden können, wenn kein Schlüssel gesteckt wurde. Aber ich probiere jetzt erst einmal die Lösung mit den Rezepturen.
 
Zurück
Oben