-> Hier kostenlos registrieren
Guten Morgen zusammen
Ich wurde mit dem Projekt betraut eine WinCC Visualisierung für unsere schon vorhandene Steuerung zu erstellen.
Über das WinCC Panel würde ich mir gerne diverse Daten anzeigen lassen; vorab aber mal kurz etwas zum Anlagenaufbau:
Die Anlage besteht aus Elementen ("4Stellige Zahl, z.b. 8101, 8102 etc.). Diese sind jeweils mit einem Antrieb und einer Stopp-Lichtschranke versehen.
In der SPS selbst hat jedes Element ein Bit in der Datenbank, welches anzeigt ob das Element aktuell "theoretisch" belegt ist oder nicht
(Wenn z.b. die Palette auf das nächste Element vorrückt, wird die Belegung auf dem "alten" Element erst entfernt, wenn die Palette das neue Element erreicht hat.)
Außerdem verfügt jedes Element über einen - ehemals Pointer - nun ein Index, welcher angibt wo der Datensatz für die aktuelle Palette im Datenbank-Array gespeichert ist - sprich dieser Int
wird auch immer mit der Palette "durch die Anlage geschoben".
Außerdem sind die einzelnen Elemente in Pult-Bereiche unterteilt, womit der Automatikbetrieb für diese Elemente angehalten wird,
und über ein noch altes Bedienterminal können die Antriebe dann auch per Tippbetrieb gesteuert werden.
Nun würde ich gerne diese Daten auf Nachfrage im HMI ausgeben nach dem Motto:
Element-Nr im E/A Feld eingeben -> SPS bekommt ein Änderungsbit gesetzt -> Wertet aus ob das Element existiert -> Wenn es existiert dann sollen Daten ausgegeben werden wie Belegung vorhanden, Lichtschranke belegt, Antrieb wird angesteuert, Pultbereich ist in "Hand" oder in Automatik, sowie Diverse Sachen aus dem Datensatz in der Datenbank (ZielHalle etc.).
Nun könnte man sich einen FC Bauen, welcher einen Int - die Element ID - als Eingangsparameter hat, diesen Int in einer Case verwenden und "Hardcoded" dann die gewünschten Daten aus der
Datenbank auslesen und per Ausgangsparameter zurückgeben. Finde ich aber nicht schön sowas "Hardcoded" zu machen.
Die zweite Lösung wäre einen DB anzulegen in Form eines Array Of Struct, wo in der Struct jeweils die Element-ID stehen, sowie die Offsets für Belegungs-Bit und Pointer im Datenbank-DB, um dann aus diesem DB die zugehörigen Daten auszulesen - wäre eleganter da man DB-Einträge entspannter ändern kann (falls die Anlage erweitert wird o.ä.).
Ich muss aber sagen ich habe die Steuerung erst vor kurzem von einer S5 umgebaut, und aktuell läuft die Anlage komplett über symbolischen Zugriff (sofern möglich), daher würde ich jetzt ungerne wieder mit der indirekten Addressierung anfangen.
Also ist diese Möglichkeit für mich auch eher ungeeignet...
Nun zur Frage: Habt ihr eine Idee wie man so etwas elegant & symbolisch lösen kann?
Oder ist es möglich dass man im HMI-DB sozusagen einen Verweis auf eine andere Variable in einem anderen DB erstellt?
Erwähnenswert: Ich nutze eine 417-4 CPU in Verbindung mit Step7 Professional V15.1, die gesamte Software ist in SCL geschrieben (und das würde ich gerne beibehalten).
Danke im Vorraus!
Ich wurde mit dem Projekt betraut eine WinCC Visualisierung für unsere schon vorhandene Steuerung zu erstellen.
Über das WinCC Panel würde ich mir gerne diverse Daten anzeigen lassen; vorab aber mal kurz etwas zum Anlagenaufbau:
Die Anlage besteht aus Elementen ("4Stellige Zahl, z.b. 8101, 8102 etc.). Diese sind jeweils mit einem Antrieb und einer Stopp-Lichtschranke versehen.
In der SPS selbst hat jedes Element ein Bit in der Datenbank, welches anzeigt ob das Element aktuell "theoretisch" belegt ist oder nicht
(Wenn z.b. die Palette auf das nächste Element vorrückt, wird die Belegung auf dem "alten" Element erst entfernt, wenn die Palette das neue Element erreicht hat.)
Außerdem verfügt jedes Element über einen - ehemals Pointer - nun ein Index, welcher angibt wo der Datensatz für die aktuelle Palette im Datenbank-Array gespeichert ist - sprich dieser Int
wird auch immer mit der Palette "durch die Anlage geschoben".
Außerdem sind die einzelnen Elemente in Pult-Bereiche unterteilt, womit der Automatikbetrieb für diese Elemente angehalten wird,
und über ein noch altes Bedienterminal können die Antriebe dann auch per Tippbetrieb gesteuert werden.
Nun würde ich gerne diese Daten auf Nachfrage im HMI ausgeben nach dem Motto:
Element-Nr im E/A Feld eingeben -> SPS bekommt ein Änderungsbit gesetzt -> Wertet aus ob das Element existiert -> Wenn es existiert dann sollen Daten ausgegeben werden wie Belegung vorhanden, Lichtschranke belegt, Antrieb wird angesteuert, Pultbereich ist in "Hand" oder in Automatik, sowie Diverse Sachen aus dem Datensatz in der Datenbank (ZielHalle etc.).
Nun könnte man sich einen FC Bauen, welcher einen Int - die Element ID - als Eingangsparameter hat, diesen Int in einer Case verwenden und "Hardcoded" dann die gewünschten Daten aus der
Datenbank auslesen und per Ausgangsparameter zurückgeben. Finde ich aber nicht schön sowas "Hardcoded" zu machen.
Die zweite Lösung wäre einen DB anzulegen in Form eines Array Of Struct, wo in der Struct jeweils die Element-ID stehen, sowie die Offsets für Belegungs-Bit und Pointer im Datenbank-DB, um dann aus diesem DB die zugehörigen Daten auszulesen - wäre eleganter da man DB-Einträge entspannter ändern kann (falls die Anlage erweitert wird o.ä.).
Ich muss aber sagen ich habe die Steuerung erst vor kurzem von einer S5 umgebaut, und aktuell läuft die Anlage komplett über symbolischen Zugriff (sofern möglich), daher würde ich jetzt ungerne wieder mit der indirekten Addressierung anfangen.
Also ist diese Möglichkeit für mich auch eher ungeeignet...
Nun zur Frage: Habt ihr eine Idee wie man so etwas elegant & symbolisch lösen kann?
Oder ist es möglich dass man im HMI-DB sozusagen einen Verweis auf eine andere Variable in einem anderen DB erstellt?
Erwähnenswert: Ich nutze eine 417-4 CPU in Verbindung mit Step7 Professional V15.1, die gesamte Software ist in SCL geschrieben (und das würde ich gerne beibehalten).
Danke im Vorraus!
Zuletzt bearbeitet: