Ich glaube meine Frage war bescheuert, das gebe ich zu. Ich hätte auch die Doku von Siemens lesen können.
Aber anscheinend reden wir alle gerade aneinander vorbei.
Also noch ein letztes Mal alle Infos die ich habe und was ich eigentlich wollte, nur damit Leute mich nicht als Troll bezeichnen.
Also, ich möchte eine Demo für eine potentiell sehr komplexe Visu bauen. Diese Demo soll auf einer Plattform laufen, die scripte kann damit ich keine große Logik in der Plc brauche nur um ein paar Buttons umzubenen und so weiter.
Die richtige Visu ganz am Ende, wenn jemand mein Konzept für eine Runtime umgesetzt hat soll dann auf einer Runtime laufen.
Wenn ich zum testen keine PC runtime brauche, dann kann ich das Konzept auch für eine Runtime demonstrieren. Mittlerweile habe ich auch verstanden, dass ich für eine Runtime und bessere Panels eine Professional Lizenz brauche.
Ich könnte zwar für die Demo die scripte Fakten, würde das aber nicht gern tun, da ich davon ausgehe, dass nicht ich der Mensch bin, der die echte Visu Implementiert und die Person sich 1:1 an mein Muster halten wird. Also würde die Person die Logik dann auch auf einer CPU implementieren.
Getestet habe ich schon die Version, die dynamischen Teile der Demo als HTML Seite auf der CPU abzulegen und als HTML frame in der Visu anzuzeigen ist leider nicht was ich wollte. Da wäre es einfacher die gesamte Visu als HTML Seite umzusetzen. Außerdem scheint es für mich wenig wartbar zu sein. Ich hab sogar angefangen mit Vue-js Komponenten zu bauen und mittels einer anderen Bibliothek die das S7 Protokoll spricht ein paar Infos aus der CPU zu lesen machen es nur mäßig erträglich.
Ich weigere mich kategorisch geklaute Software zu benutzen und werde deshalb auch für meine Demo ausschließlich gekaufte Lizenzen verwenden. Ich werde wenn möglich gebrauchte Lizenzen anschaffen und an den Hausbesitzer weiterverkaufen, wenn das Konzept umgesetzt wird.
Ich will mein Konzept hier noch in Grundzügen aufschreiben, damit es hier auch mal vermerkt wird. Der große Teil sind mehr Grundregeln für ein strukturiertes Projekt und ein paar design Regeln. Dabei kann ich auch direkt vermerken für welche Teile ich scripte benutzen würde.
Ich wäre euch wirklich dankbar wenn wenn ihr mir sagt bei welchen Teilen ich zu sehr in meine PC-Welt abdrifte, oder was vielleicht WinCC schon ab Werk kann. Außerdem wäre es cool, wenn ihr mir sagen würdet welche Teile Schwachsinn sind.
1.) Gestaltung
1.1)
An der linken Seite befindet sich eine Navigation, mit der man auf die Seiten der unterschiedlichen Gewerke kommt diese ist auf jeder Seite sichtbar und kann nicht ausgeblendet werden.
1.2.)
An der rechten, unteren Ecke liegt das Infocenter. Da gibt es einen Button für Hilfe zu dieser Seite und hinweisen wo was zu finden ist. Auch dieses ist immer zu sehen
1.3.)
In der rechten, oberen Ecke liegen die Meldungen.
1.3.1)
Es gibt für jedes Gewerk ein Symbol und die Wichtigkeit wird über die Farbe angezeigt.
- Kritische Fehler sind rot
- Einfache Fehler sind orange
- Warnungen sind Gelb
- Wartungshinweise sind grün
- einfache Benachrichtigungen sind weiß/grau
Die Symbole sind noch nicht festgelegt, werden aber wahrscheinlich aus dem Iconset von Material design, oder Font awesome gewählt, da sie einfach zu lesen und weit verbreitet sind.
1.3.2)
Die wichtigste Benachrichtigung ist immer in der rechten, oberen Ecke und alle anderen in absteigender Wichtigkeit untereinander angeordnet. (hier würde ein Script zur Anwendung kommen um die Symbole automatisch anzuordnen.)
1.3.3)
Ein click auf ein Symbol öffnet eine Seite mit den Meldungen für den Typ und die Meldegruppe.
1.4)
Die Medeseite hat nur wenn eine Meldung ausgewählt ist, die quittiert werden muss einen Button zum quittieren. Ebenso existiert bei Meldungen die automatisch behandelt werden können einen Button um diese automatisch zu Behandeln. Die Logik zur eigentlichen Behandlung lebt auf der CPU.
1.5)
Sollte eine, oder mehrere CPUs unerwartet in den Stop Zustand gehen, dann wird ein Panel oder Fenster über die aktuelle Seite angezeigt und alle anderen Elemente blockiert.
Auf diesem Fenster wird der Fehler menschenlesbar angezeigt und es gibt einen Button zum erneuten starten der CPUs.
Wenn die CPU nicht neu gestartet werden soll, dann soll auch klar sein, dass das Panel nicht benutzbar ist.
(Aich hier wäre glaub ich ein Script sinnvoll.)
1.6)
Wenn es mehr als nur einen Ein/Aus Befehl für ein Element gibt, dann öffnet ein click auf dieses Element ein Fenster, in dem alle Einstellungen vorgenommen werden können. Beispielsweise ein Rgb-Streifen. Es gibt dann einen Button "Wohnzimmer Fernseher" click man darauf, so öffnet sich ein Fenster in dem man Farbe und Helligkeit einstellen kann.
1.7)
Wenn es in Zukunft mehrere Instanzen einer Anordnung von Bedienelementen geben kann, dann wird entweder ein Fenster, oder eine andere Gruppierung dafür angelegt.
1.8)
Listen von Elementen werden auf Seiten verteilt angezeigt.
(hier würde auch ein Script zum Einsatz kommen)
2.) Funktion
2.1.)
Alle Informationen, die in dem Hmi angezeigt werden können sind in Datenbausteinen zu organisieren, die nicht im Programm verwendet werden. Das soll zumindest für den Übergang dazu führen, dass man das Sps-Programm ändern kann, ohne das hmi anpassen zu müssen. Dieser Grundsatz kann später revidiert werden, wenn das Programm eine geeignete Struktur hat und die Informationen hauptsächlich nur in den Bausteinen liegen und keine großen umbauten an den bestehenden Teilen des Programms zu erwarten sind.
2.2)
Globale funktionen müssen anpassbar sein. So müssen einzelne Aktoren von globalen Befehlen ausgenommen werden können. Beispielsweise Rollos. Ist eine Terrassentúr offen, so wird ein sperrbit für die globale "Rollos zu" Funktion gesetzt. Ebenso für Licht mit Bewegungsmeldern. Wenn eine Bewegung erkannt wird, dann bleibt das Licht an.
Das ermöglicht es ebenfalls zum Beispiel einzelne Räume einfach aus der automatik zu entfernen indem man das Sperrbit immer auf 1 schaltet.
2.3)
Jeder Block mit Bedienelementen sollte einen eigenen Baustein in der sps haben. Das ist zwar eigentlich eine Programmierdoptrin, passt aber ganz gut. Damit ist gemeint, dass wenn man die Oberfläche für einen Rgbw Streifen baut, man die Logik für einen rgbw Streifen ein Mal baut und dann immer nur verwendet.
2.3.1)
Für jede Variante der selben Art von Aktor ist ein einheitliches Interface zu wählen.
Zum Beispiel habe ich ein paar LED-Streifen, die mit analogen Ausgängen der SPS gesteuert werden. Dazu gibt es noch 3-4 LED Birnen mit WLAN. Egal ob ich jetzt eine WLAN Birne, oder einen Streifen habe, muss das für das hmi gleich aussehen.
2.4)
Ansteuerung und Kontrolle haben separate Datenbausteine.
Beispielsweise hat jede Rgbw Lampe einen Datenbaustein, wo die Daten drin stehen die zum steuern benötigt werden. Im Falle der Streifen an Analoausgängen halt die Ausgänge. Im Falle einer WLAN Birne username, passwort, ip addresse.
2.6)
Es gibt nur genau eine Quelle der Wahrheit.
Ein Konzept aus der Software Technik namens Single source of truth.
Alle Informationen werden synchron gehalten. Zum Beispiel wird ide Zeit über einen ntp Server, oder einen bereichszeiger synchronisiert. Bedeutet auch, dass alle anderen globalen Infos und Zustände über bereichszeiger synchronisiert werden. Zumindest sofern es möglich ist eigene Werte in den globalen Bereichszeiger zu legen.
3.) Programmiervorschriften
Das sind jetzt mehr Reeeln für den Umbau des Programms und Neubauten im Programm. Der Teil ist nur der Vollständigkeit halber hier.
3.1)
Es gibt 4 "Ebenen" des Programms.
- Hardware Abstraktion.
Diese Ebene übernimmt alle notwendigen Abstraktionen um der nächsten Ebene ein einheitliches Datenmodell zu geben.
- Daten
Diese Ebene hält die Wahrheit über den gesamten Zustand der "Welt" und übernimmt funktionell nur die Umwandlung von Einheiten in ein geeignetes Format.
- Steuerung
Diese Ebene enthält alle Funktion. Sie greift nur auf die Informationen der Datenebene zu und arbeitet auf diesen. Niemals steuert sie selbst Hardware.
- Kontrolle
Diese Ebene bildet alle Nutzerwünsche/-befehle auf die Datenebene ab. Diese Ebene ist quasi komplett das Hmi und eventuell noch ein kleines bisschen Logik.
Das wars. Ich weiß, dass ich da wahrscheinlich einiges wiederholt habe, das eh klar sein sollte aber ich hab es als harte Anforderung an mich und deswegen auch aufgeschrieben.
Ich traue mir mittlerweile fast alles zu, außer das Scripten, aber das hab ich mir noch nie angesehen.
Jetzt bleibt mir allein die Entscheidung, welches WinCC das beste ist. Hier muss ich sagen, dass ich mich nicht auskenne, deswegen verzeiht mir bitte wenn ich hier Sachen missverstanden habe. Außerdem schreib ich jetzt nur mal meine naive Vermutung.
WinCC Flexible
Vorteile:
- Alt
- Der Hausbesitzer ist den Umgang damit gewöhnt.
Nachteile:
- Anscheinend weniger benutzerfreundlich
WinCC Professional
Vorteile:
- Aktuell
- Benutzrrfreundlich
- Kann alle Panels projektieren
Nachteile:
- man braucht für jedes Gerät eine Runtime
WinCC Unified
Vorteile:
- Besonders flexibel, weil es auf HTML basiert
- Man braucht für jede Visu nur eine einzige Runtime
Nachteile:
- Noch ganz neu
- nicht jede Hardware wird unterstützt.
Stimmen Sie Annahmen so und welche der Lizenzen würdet ihr empfehlen, jetzt wo ihr hoffentlich alle wichtigen Details kennt.