Nach einigen Schwierigkeiten mit der alten Software und den Zulieferern haben wir uns entschieden, von Grund auf neu zu starten. Gleichzeitig gibt es Vorgaben der Geschäftsleitung, dass die Umsetzung zügig erfolgen muss, da die Software dringend benötigt wird.
Software von Grund auf neu gestalten: Man braucht eine verlässliche Bibliothek mit "minimierten" Funktionen. Die "Kunst" dabei ist, die Funktionen so zu zerteilen, dass sie "fast" allgemein anwendbar sind und keine Spezialfunktionen für eine Maschine. Auch ellenlange FC's/FB's mit riesigen Schnittstellen sind Kontroproduktiv.
Eine ganz wichtige Sache was immer mehr vergessen wird, ist eine einfache Diagnose an der Maschine. Sprich die Statusanzeige, so dass sie schnell verständlich ist. SCL ist zwar eine gute Sache, bei Logikverknüpfungen aber eine Katstrophe für den Service.
Auch wenn viele dagegen sind, aus welchen Gründen auch immer, KOP ist und bleibt die beste Form für gute Diagnose. Netzwerke, die nicht auf einen normalen Bildschirm eines Laptop passen sind untauglich.
D.h. wenn man Standards einführt, dann solche grundlegenden und wichtigen Dinge definieren. Das hat dann noch nichts mit der Umsetzung zu tun. Dazu gehören z.B. Namenskonvetionen: z.B. Motor Palettenlager; Ventil Palettenlager ist meist nicht die beste Variante. Wird aber intuitiv meist so gemacht:
Palettenlager: Motor
Palettenlager: Ventil
ist meist besser, da man so besser nach Funktionsbaugruppen sortieren kann.
Das ist alles viel wichtiger als fertige Programmteile als Standard vorgeben! Standardfunktionen müssen wachsen und immer wieder angepasst werden.
Bei Standardfunktionen ist eines der wichtigsten Dinge: allgemeine TriState-Funktion einführen, Ventilbaustein/e, Schalterbausteine (Hand/Auto/Servie oder Hand/Auto/VorOrt. Einen MultiSwitch: dieser kann über Softwareschalter (INT) oder über digitale Schalter EIN/AUS geschaltet werden und hat einen Impulsschaltereingang. Multiplexerfunktionen haben sich bei mir über die Zeit als extenziell wichtig herausgestellt. Am effektigsten sind 4-fach Multiplexer (z.B. für Werteumschaltung wie verschiedene Geschwindikeiten). Der Atkive Kanal wird als Meldung aus dem Bausteine ausgegeben. Damit kann man dann leicht Visu-Anzeigen mit Sollwerpfaden relaisieren.
HMI Anzeigen standardisieren:
für mich hat sich als extrem effektiv herausgestellt, fertige LED-Anzeigen zu haben, die man von der SPS aus mit Farbe ansteuert.
Die 8-fach LED's mit den einstellbaren Farben grau, gelb, rot, grün sind bei mir am effektivsten.
Farbanzeigen für Ventile und Motore fest vordefinieren und standard Ansteuerbausteine dazu erstellen.
Eine gute aber durchaus schwierige Sache ist: Übersetzungen standardisieren. Das geht mit TIA aber so nicht automatisch.
Das bekommt man nur hin, wenn bereits der Projektierer eine leicht einsehbare List hat, welche Texte bereits in welche Sprachen übersetzt sind.
Statt dann Motor Transportband zu verwenden ist es evtl. besser den schon übersetzten Text "Atrieb Transportband" zu verwenden.
Wenn man da eine gute Bibliothek hat, dann spart das imense Arbeit und Kosten.
Hier gleich einen verantwortlichen für die Textbibliothek festlegen.
Wie kommt man auf sowas?
Ich hab das in der Praxis genau so über lange Jahre entwickelt. Der Impact, wenn das mal steht ist imens. Dauert aber viele Jahre.
Wichtig: 1 Person muss die Hoheit über die Library haben. Nur diese darf da Änderungen reinstellen - sonst bricht Chaos aus. Alle anderen, bringen Vorschläge bzw. Änderungen ein. (Das kann man dann auch z.B. über Github realisieren. Wichtig ab und zu mal ein Treffen/Workshop.
Ein Überblick welche Funktionen effektiv gebraucht werden kann man in meiner Library nachsehen. Das ist alles aus dem Bedarf raus entwickelt und optimiert. Ist aber alles noch für S7-Classic. Eine TIA Version gibt es davon noch nicht ofiziell.
An einer betriebseigenen auf eure Anforderungen spezalisierte Library wird wohl kein Weg vorbei gehen.
Damit würde ich Anfangen: da kann man sich mit Bausteinen von externen Libraries bedienen (Oscat, Maagic7) und das Beste aus der alten Software zusammensuchen.
Dann muss man das aktiv und effektiv pflegen. Wenn man Kapazität hat, einen abstellen, der Testcode schreibt, einen anderen, für Templates (z.B. Transportband ...). Dieses Template kopiert man dann für sein "Transportband_Einlauf" und ändert mit suchen/ersetzen die E/A's und individuellen Signale. Ich achte darauf, dass bei den Templates ein Eingang oder Ausgang immer nur 1x verwendet wird.
(Die E/A kann man auch als Übergabe and den FB verwenden. Für den Service/Status ist es erfahrungsgemäß einfacher, wenn diese Signale direkt im Baustein stehen - für die Programmierung ist das aber mehr Aufwand)
Softwarearchitektur:
FB, FC konventionen: Grundsätzlich einer Funktionseinheit wie Transportband, Pumpe ... immer einen FB zuweisen. FC sind nachteilig, da keine lokalen statischen variablen. Das erschwert das kopieren der Funktion. FC's nur für Standardfunktionen bzw. Hilfsfunktionen.
Wenn es sich um Produktionslinien handelt, seine Namen so vergeben, dass im TIA-Portal der Anfang der Linie nach oben sortiert wird und dann die FB's so hintereinader kommen wie die Maschine aufgebaut ist. Das erleichtert ungemein das Zurechtfinden in fremden Code! Instanz-DB unbedingt identisch benennen wie der zugehörige FB.
Das sind alles so Konvetionen, die man festlegen kann, ohne Inovationen zu behindern!