Codegenerierung in der Praxis

Zuviel Werbung?
-> Hier kostenlos registrieren
Durch die Trennung der Logik von der Funktion ergibt sich ein neuer Blickwinkel.

Für eine Schrittkette gilt: Ablauflogik = Wann eine Achse von a nach b fährt - wenn ein Druck druckt - wenn was bewegt wird ....
Der Treiber organisiert die Umsetzung - Wie beim PC -- egal welcher Drucker die Logik sagt drucken = Treiber übersetzt für Funktion
Wir haben im letzten Projekt 4 Treiber verwendet (Generisch für DS402 SoftMotion Servo Achsen Position, FU ansteuerung generisch, SternDreisck anlauf und einen Drucker für Schrit RS232)
Diese Treiber verwenden wir nun weiter für die Zukunft. Die Treiber haben alle ERROR Meldung, Daten vom Kontroller usw. beim laden dieser Treiber werden automatisch die Datenpunkte definiert.

Wir haben einen Prototypen bei uns der hat 5 Zylinder und 4 Tasten: die Programmierung für den reine Schrittkette mit HMI fix fertig ca. 25min ;)

Auf SPS-Seite verwenden viele von uns "Treiber" mit einheitlichen Schnittstellen zum - sagen wir mal - Rest des SPS-Programmes.
Egal ob nun Schrittkette oder Regelung oder was auch immer.
Ihr habt nun ein PC-Programm erstellt um das zu automatisieren.
Sowas kann ganz klar viel Arbeit sparen.
Die ersten Ansätze dazu kenne ich schon aus S5-Zeiten.
Soweit - für mich persönlich - nix Aussergewöhliches.
Schwachpunkte der meisten Ansätze und Lösungen die mir bislang untergekommen sind, waren die Themen Anlagen-Erweiterung und nicht Standard-Treiber.
Welche Ansätze habt ihr dazu?
Darf die Bearbeitung des SPS-Programmes nur durch eure Software erfolgen?
Wie bindet ihr nicht Standard Hard- und Software in euere Software ein?
So mancher Hersteller verwendet geschützte Bausteine zur Kommunikation mit seiner Hardware.

Gruß
Blockmove
 
ja, das war für mich der Anstoß. Ich möchte nicht kopieren sonder von NUll den Code generieren.

Die Struktur ist damit immer gleich und die Variablen immer einheitlich benannt - Bedienkonzept ist fix.

Lieferant? Du selbst nutzt das Tool. Modell erstellen - klick und IEC code erhalten
 
Zuviel Werbung?
-> Hier kostenlos registrieren
j Du selbst nutzt das Tool. Modell erstellen - klick und IEC code erhalten

Das heißt, was nicht im Modell ist kann nicht in die SPS, weil jede Änderung am Modell auch nachträgliche externe Änderungen in der SPS überschreiben würde.
Dazu muß es ein Konzept geben, also Bereiche im Code, die vom Programmierer geändert werden können und von einem neuen Modell nicht überschrieben werden.
 
Unser Ansatz ist der Prozess ist im Ablauf (Logik und SYSTEM) da ist der Treiber nicht relevant.
Bei uns zeigt sich, wenn die Schrittkette beschreiben ist, ist der Prozessablauf programmiert.
Die Verknüpfung mit dem Treiber ( Position, Velo, Acc, und Execute) als Beispiel ist für jeden Treiber einer Achse gegeben.
Weitere Daten aus dem Treiber wie ERR - Betriebsdaten können müssen aber nicht vorhanden sein. Wenn nicht vorhanden durch fremd Treiber, dann einfach per Hand ausprogrammiren..


es braucht immer uns als Experten - aber wir haben ein Tool das eine Schrittkette fertig generiert ( wie früher ein Excel oder am A4 Block beschrieben) heute im Modeler beschreiben und ein Klick zur Umsetzung der Rest ist Experten wissen aber offen.

Wir liefern einen IEC Code der kann immer manuell gelesen bzw angepasst werden, wir strukturieren und generieren = IBN ist zusammen bringen von Hardware und Logik in Form von euren Funktionsbausteinen
 
Das heißt, was nicht im Modell ist kann nicht in die SPS, weil jede Änderung am Modell auch nachträgliche externe Änderungen in der SPS überschreiben würde.
Dazu muß es ein Konzept geben, also Bereiche im Code, die vom Programmierer geändert werden können und von einem neuen Modell nicht überschrieben werden.

Genau diese Aspekte würden mich auch interessieren.
Automatische Codegenerierung (egal ob nun ein simples Excel-Makro oder ein komplexes System wie Bosch Nexeed) darf nicht nur ein Grundgerüst erstellen, sondern muss auch mit Ergänzungen und Modifikationen im SPS-Programm umgehen können. Wenn ich die letzte Jahre zurück denke, dann waren vielleicht 2 Maschinen dabei, die Standardfunktionalität hatten.
Bei allen gab immer irgendwelche Spezialitäten oder auch Schweinereien :)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Unser Selmotino ist unser Generator - vielleicht Freund und Helfer für Programmierer. Professionell ist das Thema (patent - Produkt - akademisch)
Handelt es sich da um ein schon veröffentlichtes Patent?

Nein Sicherheitsrelevante SPS darf nicht generiert werden!! Ist wohl ein Test:D
Woher kommt die Annahme? Die DGUV arbeitet nach meiner Kenntnis sogar aktiv daran Sicherheitslogik zu generieren.
 
Handelt es sich da um ein schon veröffentlichtes Patent?


Woher kommt die Annahme? Die DGUV arbeitet nach meiner Kenntnis sogar aktiv daran Sicherheitslogik zu generieren.

Patent ist erteilt. Veröffentlichung liegt bei Patentamt in Österreich - international 2021 veröffentlichen (dauert eben in den Ämtern)

Ja, ich habe davon gehört. Aber bis dato darf diese nicht generiert werden und muss auch klare Regeln folgen. Unser Konzept in der nicht sicherheits relevanten Software ist aber ungefähr ähnlich:
wir sorgen dafür das jedes Bit immer überwacht ist in jedem zustand und in jedem Zustandübergang und wir machen jedes Bit sichtbar.
Jedes Bit muss im Durchlauf einer Sequence den Signalzustand wechseln.

Beispiel: 16 Zylinder = 32 Input --> SW sieht 2 hoch 32 = mehr als 4 Milliarden Möglichkeiten --< Frage welche Bitmuster ist richtig oder falsch?

Wir generieren eine exakte statemachine (schrittkette) die jedes Bit überwacht bzw den Bediener informiert was zu tun ist und im Fehlerfall (abweichung vom Bitmuster) jedes Bit klar zuordnet was fehlt

Du kannt manuell programmieren oder automatisch erstellen = spart zeit und Nerven = Fokus auf unser Kernkompetenz Gute Treiber entwickeln
 
Genau diese Aspekte würden mich auch interessieren.
Automatische Codegenerierung (egal ob nun ein simples Excel-Makro oder ein komplexes System wie Bosch Nexeed) darf nicht nur ein Grundgerüst erstellen, sondern muss auch mit Ergänzungen und Modifikationen im SPS-Programm umgehen können. Wenn ich die letzte Jahre zurück denke, dann waren vielleicht 2 Maschinen dabei, die Standardfunktionalität hatten.
Bei allen gab immer irgendwelche Spezialitäten oder auch Schweinereien :)

Bosch Nexeed ist ein Versuch im Level Oberhalb von PLC zu arbeiten, so eine schnelle Anaylse. Ist OK.
Wir setzen auf der PLC an. Dann sind die Daten in einer gleichen Struktur da und können von MES usw, zusammengefasst werden.

Im Feld muss es passen, das digitale ist die SW in der Maschine.


Ja es gibt immer Spezialitäten aber Einigkeit gibt es darüber das nur ein logischer Prozess programmierbar ist! :D
Wenn der Prozess definiert ist können die Treiber natürlich speziell werden, dass macht uns ja aus.

Spar dir Zeit bei Standardstrukturen und verwende diese speziell :)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Cool Frage - wir machen es so.

Wir liefern ein PRG in PLCOPEN XML --> import in PLC Änderungen an der Logik - Prozess im Modell einfach und schnell
Verknüpfung in deinem Programm unberührt!

In Zukunft liefern wir gesamte Anlagenstruktur als XML und aufrufe - selbes Prinzip PRG tauschen ohne Beeinflussung von manuellen Programmierungen - Cool oder. wir machen uns ja nicht mehr Arbeit
 
Ich möchte gerade von Experten die Meinung haben, dafür besten Dank. Wir starten mit dem Tool und haben es selbst im Einsatz.
Ziel ist es Schrittketten in From von PRG Bausteinen zu generieren - die dann einfach eingesetzt werden -- wie ein Schaltwerk
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich möchte gerade von Experten die Meinung haben, dafür besten Dank. Wir starten mit dem Tool und haben es selbst im Einsatz.
Ziel ist es Schrittketten in From von PRG Bausteinen zu generieren - die dann einfach eingesetzt werden -- wie ein Schaltwerk

Ja, mich interessiert es zumindest. Vielleicht erstellt ihr einmal ausführliche Videos, so dass man sich dass in Ruhe Abends mal anschauen kann.
 
Ich schätze, Michael, der Lieferant kann sich eigentlich nicht auf eine halbwegs präzise Angabe festlegen, da er die SonderWünsche Deiner Kunden nicht kennt und deren ErfinderGeist regelmässig unterschätzen wird. ;)

Neben der Vielfalt der KundenWünsche wäre sicherlich auch die Vielfalt der Steuerungs- und CPU-Typen, der ProgrammierSprachen, der (oft zu häufigen) updates etc., der auf- und abtauchenden Notwendigkeit von Workarounds ein Faktor, der nicht spurlos am ProgrammGenerator vorüber gehen kann.
Der generierte Code sollte deshalb schon "menschenlesbar" sein, da sich jederzeit ein Grund für "Handarbeit" ergeben kann, auch wenn der generierte Code schon fünf Jahre fehlerfrei funktioniert hat.

Grundsätzlich ist das Modell des Prozesses unabhängig von der Hardware = es wird erst beim Generieren entschieden welche PLC es wird.

Der Code ist immer lesbar und verständlich als IEC Code.

Cool ist es, dass wir nun so den Prozess bzw. die SW ohne hardwarebezug modellieren und sichern können.
Wer kennt es nicht S5 Programme wurden umgearbeitet auf S7 - oder für ein und das selbe mechanische System werden verschieden PLCs eingesetzt, weil der Kunde es fordert, alles extra zu programmieren. Das könnte sich in Zukunft ändern. Ich Wünsche es mir, weil es Zeit und Nerven spart :cool:
 
Ja, mich interessiert es zumindest. Vielleicht erstellt ihr einmal ausführliche Videos, so dass man sich dass in Ruhe Abends mal anschauen kann.

Ja, wir arbeiten im Moment genau an dem. DEMO geführt und erklärt - Workplace zum selber Probieren

Ich lade euch gerne ein zu helfen - Fragen und wir versuchen antworten zu geben :)

Das Thema ist aber spannend uns wenn es uns das Leben leichter macht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der Einsatz von externen Codegeneratoren ist für mich eher uninteressant. Schon der Gedanke zusätzliche Tools mit Im-/Exportfunktionen zu verwenden ist mir ein Graus. Dazu kommt, dass ich in der Regel die SPS und HMI Bestandteile als Einheit betrachte. Fällt mir schwer den Vorteil zu erkennen, den die Generierung von Schrittketten bietet, wenn man es mit den grafischen Tools aus der SPS IDE vergleicht.

Eine integrierte Codegenerierung in der IDE von TIA/TwinCAT/Codesys/usw. hingegen finde ich schon interessanter, wenn mach nicht zwingend erforderlich. Eine Art Makro das ein Formular abarbeitet um die Anzahl von Stationen, Achsen, Subsystemen in SPS und Visu vorzukonfigurieren. Derzeit löse ich dies allerdings mit einigen Konstanten, die mir die Größe von Arrays bestimmen und damit bin ich auch schon sehr zufrieden.
 
@SelmoTino

Schätze die Codegenerierung schließt so etwas wie Graph aus?
Können eure Schrittketten Alternative Verzweigungen, z. Bsp. Produktabhängig etc.?
 
Ich möchte gerade von Experten die Meinung haben, dafür besten Dank. Wir starten mit dem Tool und haben es selbst im Einsatz.
Ziel ist es Schrittketten in From von PRG Bausteinen zu generieren - die dann einfach eingesetzt werden -- wie ein Schaltwerk

Wenn ich meine Arbeitsweise betrachte, dann ist das Programmieren der Schrittketten beinahe der geringste Aufwand.
Nimmt man Tools wie Graph und ProDiag dann spart man ungeheuer Zeit. Diagnose im HMI ist bei der Kombination quasi ein Abfallprodukt und erfordert nahezu keinen Aufwand.

Für das Erstellen der Handfunktionen inklusive der Verriegelungen geht deutlich mehr Zeit drauf.
Und das obwohl wir auch Treiber-Bausteine verwenden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn ich meine Arbeitsweise betrachte, dann ist das Programmieren der Schrittketten beinahe der geringste Aufwand.
Nimmt man Tools wie Graph und ProDiag dann spart man ungeheuer Zeit. Diagnose im HMI ist bei der Kombination quasi ein Abfallprodukt und erfordert nahezu keinen Aufwand.

Für das Erstellen der Handfunktionen inklusive der Verriegelungen geht deutlich mehr Zeit drauf.
Und das obwohl wir auch Treiber-Bausteine verwenden.

Verriegelungen werden bei uns mit modelliert und stehen dem User als Meldung zur Verfügung, wenn er etwas ausführen möchte was nicht erlaubt ist.
Ich würde gerne deine Einschätzung für eine einfach Schtittkette Zeit?
 
Verriegelungen werden bei uns mit modelliert und stehen dem User als Meldung zur Verfügung, wenn er etwas ausführen möchte was nicht erlaubt ist.
Ich würde gerne deine Einschätzung für eine einfach Schtittkette Zeit?

Da wir, so wie du auch, Treiberbausteine mit entsprechenden Strukturen verwenden, ist eine einfache Graphkette auch in kurzer Zeit (20 - 30min) erstellt.
Für Betriebsarten haben wir auch fertige Templates. Grösster Zeitaufwand steckt im Beschalten der Treiberbausteine mit den ganzen E/As und dem Erstellen der Verriegelungen.
HMI ist auch ein Zeitfresser, da aus den CAD-Modellen erst passende PNGs erstellt werden müssen. Für den Rest haben wir auch Bildbausteine.

Programmiert man klassische Schrittketten und ohne Treiberbausteine, dann kann eure Lösung ganz massiv Zeit und Aufwand sparen.
 
Da wir, so wie du auch, Treiberbausteine mit entsprechenden Strukturen verwenden, ist eine einfache Graphkette auch in kurzer Zeit (20 - 30min) erstellt.
Für Betriebsarten haben wir auch fertige Templates. Grösster Zeitaufwand steckt im Beschalten der Treiberbausteine mit den ganzen E/As und dem Erstellen der Verriegelungen.
HMI ist auch ein Zeitfresser, da aus den CAD-Modellen erst passende PNGs erstellt werden müssen. Für den Rest haben wir auch Bildbausteine.

Programmiert man klassische Schrittketten und ohne Treiberbausteine, dann kann eure Lösung ganz massiv Zeit und Aufwand sparen.

danke für die Einschätzung. Es fehlt aber ein entscheidender Faktor. Graphketten beruhen auf State und Transition - schalte weiter wenn das und das usw.
Wie schaffst du es mit dem Graph (Petrinetz) alles möglichen Bitmuster abzubilden ?
Wie schaffst du es mit dem Graph das System ständig zu überwachen und jedes Bit in der Schrittkette zu überwachen?
Wir haben eben genau das in unserem Tool geschafft. Jedes Bit ist immer überwacht und nur die Zustände (damit meine ich jede Kombination von Bitmuster ) die wir definierten sind erlaubt.
Damit erzeugen wir eine Qualität die Schrittketten 100% definiert.

Wie schafft ihr es das alle Programmierer die Strukturen und Nomenklatur der Variablen einhalten?
Wie schafft ihr es das jede abweichende Bit am HMI steht?

Entschuldige die vielen Fragen, aber ich möchte offen diskutieren und auch die Dinge ansprechen die faktisch da sind.
 
Zurück
Oben