Codegenerierung in der Praxis

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.

Klar, auch wir sehen die Zukunft das unsere Idee und Tool integriert wird in der IDE. Jetzt arbeiten wir eben mit PLCOpen XML import und es ist sehr einfach und am Ende hast PLC und HMI, wie du sagst in einem gemacht.

Ich komme noch aus einer Zeit da hat es noch keine Lade Transferiere gegeben - wir haben solche Funktionen auch noch manuell gemacht - später wurde es Standard und es gibt heute noch Anhänger von selbst programmieren.

Was ich sagen möchte - Dinge ändern sich
 
@SelmoTino

Schätze die Codegenerierung schließt so etwas wie Graph aus?
Können eure Schrittketten Alternative Verzweigungen, z. Bsp. Produktabhängig etc.?

Der Graph schaltet wenn das und das - Transition / Wie schalten wenn nix dagegen spricht, damit ist die Anzeige möglich

Ja, alternative Verzweigungen = synchrone Schrittketten :) Diese Frage kommt immer von AS Programmierer:wink:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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?
Wozu soll ich in der Schrittkette alle Bitmuster überwachen? Mir erschliesst sich hier nicht ganz der Sinn.
Die Schrittkette startet aus definierten Bedingungen heraus und führt dann die programmierten Aktionen aus.
Zum Ausführen bzw. beim Ausführen der Aktionen müssen die Verriegelungen erfüllt sein. Diese werden überwacht.
Zum einen durch die Kette selbst und zum anderen durch die Treiberbausteine.
Unabhängig von den Verriegelungen überwachen die Treiber den Verlust einer Endlage permanent.

Das komplette Überwachen aller Zustände habe ich auch schon Ende der 90er mal programmiert.
War mal ein Konzept für Kleinanlagen um Abläufe direkt am Panel (damals Textdisplay OP17) ohne Programmierung zu erstellen.
Jedem Schritt konnten bis zu 16 Aktoren zugeordnet werden, 32 Bits für die Verriegelung und 32 Bits fürs Weiterschalten.
Einfach ein paar Array mit Doppelworten.

Wie schafft ihr es das alle Programmierer die Strukturen und Nomenklatur der Variablen einhalten?
Gar nicht. Wir haben Grundregeln aber jeder von uns hat auch etwas seinen eigenen Stil

Wie schafft ihr es das jede abweichende Bit am HMI steht?
Die Diagnose erfolgt über Treiberbausteine und ProDiag.
Jedes abweichende Bit interessiert mich überhaupt nicht.
Mich interessieren nur Bits die aktuell Einfluß auf den Prozess haben.
Alles andere führt u.U. zu Fehlalarmen.
 
Der Graph schaltet wenn das und das - Transition / Wie schalten wenn nix dagegen spricht, damit ist die Anzeige möglich
Diese Frage kommt immer von AS Programmierer:wink:

Das erklärst du dem Idioten AS-Programmiere mal genauer. Graph schaltet wenn was dagegenspricht? Wenn ihr Schrittkettenabläufer erstellt, ist das dann was anderes als AS?

Ja, alternative Verzweigungen = synchrone Schrittketten

Nein, keine sychrone Schrittkette, alternative Schrittkette, war gemeint.
Parallelverzweigung und "gleichzeitige" Abarbeitung ist natürlich auch sinnvoll, sollte schon gehen.

Ich hätte schon mal gerne mehr als Worthülsen und allgemeines rumgelaber gehört. Bisher hast du nichts wirklich zufriedenstellend beantwortet.
Man hört nur das is cool, dies ist besonders cool. Easy, nur ein Klick. Es ist sehr einfach.
Danker Herr Alles Cool, ich weiß niun für meinen Teil bescheid.
 
Ich komme noch aus einer Zeit da hat es noch keine Lade Transferiere gegeben - wir haben solche Funktionen auch noch manuell gemacht - später wurde es Standard und es gibt heute noch Anhänger von selbst programmieren.
:confused: War das jetzt zur Zeit der Zuse 1 oder bei S3?
Ich komme aus der S5-Zeit. Da gab es schon Lade und Transferiere. L MW0 T MW2 z.B. oder U M0.0 = M0.1.
Bei WordStar gab es schon die Vorgänger von Copy und Paste, die auch heute noch funktionieren, nämlich ^C und ^V (wobei mit ^ die CTRL- bzw. Strg-Taste gemeint ist).
Teile von S5-Bausteinen konnte man allerdings nicht in den Editor des PGs laden oder von dort irgendwohin transferieren. Nur komplette Projekte, sowie komplette Bausteine oder Gruppierungen davon (z.B. alle DBs oder alle PBs u.s.w.) von einem Projekt in ein anderes. Ins AG und aus dem AG, in EPROMs und aus EPROMs konnten nur die "abgespeckten" MC5-BestandTeile der Bausteine geladen bzw. transferiert werden.
QuellCode im Sinne eines Menschen-lesbaren Textes bzw. mit aus ASCII-Zeichen gebastelten Kästchen oder Symbolen (FUP/KOP) gab es in DateiForm nur, wenn man eine DruckAusgabe in eine Datei umgeleitet hat.
Ob es überhaupt irgendwann möglich wurde bzw. seit wann man evtl. per Paste und Copy Teile von Bausteinen innerhalb eines S5-Editors oder von einem S5-Editor in einen "normalen" Editor oder umgekehrt "transferieren" konnte, weiss ich gar nicht mehr. An Einsparung von TippArbeit, ggfs durch Kopieren und Anpassen von Vorlagen, oder an vor- und aufbereiten in Excel war nicht zu denken.
Aber handgemachte Lade- und Transfer-Funktionen? Aus was gemacht? Laden und Transferieren eines Wortes durch Laden und Transferieren 16 einzelner Bits? Allenfalls die integrierte PLC der 810er NC hätte Anlass zu ähnlich umständlichen Aktionen gegeben, hatte aber nicht den für solche Exzesse nötigen ProgrammSpeicherPlatz.

Ja, es gibt tatsächlich heute noch Anhänger von selbst programmieren. Denn das Suchen von vorgefertigten Funktionen, die auch noch für den gewünschten Zweck passen und trotzdem nicht hoffnungslos überdimensioniert sind, ist oft viel zeitraubender, als das SelbstProgrammieren.

Wozu soll ich in der Schrittkette alle Bitmuster überwachen? Mir erschliesst sich hier nicht ganz der Sinn.
...
Jedes abweichende Bit interessiert mich überhaupt nicht.
Mich interessieren nur Bits die aktuell Einfluß auf den Prozess haben.
Alles andere führt u.U. zu Fehlalarmen.
Das ist was für alle Skeptiker, die sich einerseits vor kippenden Bits in SpeicherMedien (HW!) fürchten und andererseits vor bislang unbemerkten DoppelBelegungen (z.B. Überschneidungen von belegten Bereichen) in der SW.
Das sind dann FehlAlarme nur in dem Sinne, dass sie mit der eigentlichen Funktion nix zu tun haben, aber die gemeldeten - weil zufällig nebenbei gefundenen - Fehler sollten durchaus nicht ignoriert werden.
Man muss sich schliesslich dagegen absichern, dass die Funktion des generierten Codes durch den AmateurCode drumherum zerschossen wird.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das erklärst du dem Idioten AS-Programmiere mal genauer. Graph schaltet wenn was dagegenspricht? Wenn ihr Schrittkettenabläufer erstellt, ist das dann was anderes als AS?

Jemand mit Informatik-Hintergrund wird bei der automatischen Codegenerierung vermutlich nicht etwas wie eine handgeschriebene Schrittkette erzeugen, sondern etwas was auch aus dem Compilerbau bekannt ist, mit Parsertabellen die einige Parser wie z.B. yacc erzeugen. Im Parser sind dann nur noch ein oder mehrere Arrays mit den Zuständen und Transitionen, der Code für den eigentlichen Automaten ist dann immer gleich.
 
Jemand mit Informatik-Hintergrund wird bei der automatischen Codegenerierung vermutlich nicht etwas wie eine handgeschriebene Schrittkette erzeugen, sondern etwas was auch aus dem Compilerbau bekannt ist, mit Parsertabellen die einige Parser wie z.B. yacc erzeugen. Im Parser sind dann nur noch ein oder mehrere Arrays mit den Zuständen und Transitionen, der Code für den eigentlichen Automaten ist dann immer gleich.
Die Befürchtung habe ich auch. In die Richtung gehen auch einige Forschungsarbeiten die ich kenne. So wie ich mir das dann vorstelle, fehlt mir aber die menschliche Nachvollziebarkeit und entsprechend auch die Möglichkeit dies selber zu Programmieren. Wenn die Transitionen ALLE bits betrachten, kann das ja schnell unübersichtlich werden.
 
Und wenn es kracht (was schon mal ab uns an passiert sein soll), begibt man sich in der Modelldefinition auf die Suche. Bin ich dann doch mal gespannt auf erste "Selbst"-Tests, wenn es denn mal irgendwann möglich ist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Prinzip ist aber schon sehr alt. Das ist auch im Drachenbuch beschrieben, und dessen Erstausgabe ist von 1977.
Was erzeugt denn Siemens Graph für einen Code, hat sich das schon einmal jemand angesehen? Ich kann mir nicht vorstellen, dass dort die gesamte Schrittkette wie in AWL/FUP etc. auscodiert generiert wird.
 
Die Befürchtung habe ich auch. In die Richtung gehen auch einige Forschungsarbeiten die ich kenne. So wie ich mir das dann vorstelle, fehlt mir aber die menschliche Nachvollziebarkeit und entsprechend auch die Möglichkeit dies selber zu Programmieren. Wenn die Transitionen ALLE bits betrachten, kann das ja schnell unübersichtlich werden.

Ich frag mich nur was daran patentwürdig ist.
Was selmotiono hier bisher preisgegeben hat, ist doch eigentlich nichts grundlegend Neues.
Schrittabhängige Überwachung des gesamten Prozessabbildes kenne ich noch aus S5-Zeiten.
Damals noch auf einem eigenen Rechner.
Die Forschungsansätze von Siemens, Fraunhofer usw. gehen teilweise in die selbe Richtung.
Bei der virtuellen Inbetriebnahme am 3D-CAD-Modell werden die Aktoren verfahren, die Sensoren erfasst und Zustände so geteached.
Daraus werden dann Statemachines erzeugt.

Sind östereichische Patente eigentlich kostenlos einsehbar?
 
Zuletzt bearbeitet:
Ich frag mich nur was daran patentwürdig ist.
Was selmotiono hier bisher preisgegeben hat, ist doch eigentlich nichts grundlegend Neues.
Schrittabhängige Überwachung des gesamten Prozessabbildes kenne ich noch aus S5-Zeiten.
Damals noch auf einem eigenen Rechner.
Die Forschungsansätze von Siemens, Fraunhofer usw. gehen teilweise in die selbe Richtung.
Bei der virtuellen Inbetriebnahme am 3D-CAD-Modell werden die Aktoren verfahren, die Sensoren erfasst und Zustände so geteached.
Daraus werden dann Statemachines erzeugt.

Sind östereichische Patente eigentlich kostenlos einsehbar?

Laut Patentamt noch nicht erteilt und nicht veröffentlicht:
http://see-ip.patentamt.at/NPatentSuche/Details/93fefb4d-4df3-453e-8dcd-c98aff28818b

In Deutschland dauert es 18 Monate von Einreichung bis zur Veröffentlichung.

Die Disskussion geht meiner Meinung nach nur in die falsche Richtung. Ich bin ja eigentlich ein Freund von sinnvoller Codegenerierung zu Vereinfachung des Engineerings. Allerdings nicht auf Kosten der Vorteile von SPS Programmierung.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Laut Patentamt noch nicht erteilt und nicht veröffentlicht:
http://see-ip.patentamt.at/NPatentSuche/Details/93fefb4d-4df3-453e-8dcd-c98aff28818b

In Deutschland dauert es 18 Monate von Einreichung bis zur Veröffentlichung.

Die Disskussion geht meiner Meinung nach nur in die falsche Richtung. Ich bin ja eigentlich ein Freund von sinnvoller Codegenerierung zu Vereinfachung des Engineerings. Allerdings nicht auf Kosten der Vorteile von SPS Programmierung.

Das hat mit vor 20 Jahren (wirklich) schon einmal jemand gezeigt, der hat das damals mit Delphi programmiert. Das "Modell" damals waren praktisch die Bezeichnungen der E/A. Aber er hat dann wohl auch irgendwann damit aufgehört, viel Arbeit, dafür zu geringer nutzen damals. Denn das Problem ist immer, wer kauft das Korsett...
Patentwürdig finde ich persönlich daran auch nichts, aber schaut euch manche Apple-Patente an. (Abgerundete Ecken am Smartphone). :ROFLMAO:
 
Ich bin ja eigentlich ein Freund von sinnvoller Codegenerierung zu Vereinfachung des Engineerings. Allerdings nicht auf Kosten der Vorteile von SPS Programmierung.

Ich bin da mittlerweile etwas zwiegespalten. Einer der Hauptvorteile der SPS ist das Online-Beobachten (Status).
Aber gerade durch die immer besseren Möglichkeiten zur Diagnose und Fehlererkennung benötigt man das im Störungsfall immer seltener.
Schönes Beispiel ist hier Siemens ProDiag.
Ich habs bei einer der letzten Anlagen verglichen. Ich hab vor einigen eine ähnliche Anlage mit Classic und Bitmeldungen gemacht. Ca. 250 Störmeldungen.
Die ähnliche Anlage nun mit TIA und ProDiag. Es gibt nun über 600 Störmeldungen. Ein Großteil automatisch erzeugt.
Bin mal gespannt, wo die Reise hin geht.
 
Laut Patentamt noch nicht erteilt und nicht veröffentlicht:
http://see-ip.patentamt.at/NPatentSuche/Details/93fefb4d-4df3-453e-8dcd-c98aff28818b

In Deutschland dauert es 18 Monate von Einreichung bis zur Veröffentlichung.

Die Disskussion geht meiner Meinung nach nur in die falsche Richtung. Ich bin ja eigentlich ein Freund von sinnvoller Codegenerierung zu Vereinfachung des Engineerings. Allerdings nicht auf Kosten der Vorteile von SPS Programmierung.

Patentprozess dauert 18 Monate. Die Veröffentlichung bestimmt das Amt. Im SPS Forum geht es ja nicht um Patentprozess oder:).

Das Verfahren ist ganz einfach neu und ist eben nicht einfach vergleichbar mit altbekannten. Wir haben uns aber bemüht auf der Website das Thema zu beschreiben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich bin da mittlerweile etwas zwiegespalten. Einer der Hauptvorteile der SPS ist das Online-Beobachten (Status).
Aber gerade durch die immer besseren Möglichkeiten zur Diagnose und Fehlererkennung benötigt man das im Störungsfall immer seltener.
Schönes Beispiel ist hier Siemens ProDiag.
Ich habs bei einer der letzten Anlagen verglichen. Ich hab vor einigen eine ähnliche Anlage mit Classic und Bitmeldungen gemacht. Ca. 250 Störmeldungen.
Die ähnliche Anlage nun mit TIA und ProDiag. Es gibt nun über 600 Störmeldungen. Ein Großteil automatisch erzeugt.
Bin mal gespannt, wo die Reise hin geht.

ProDiag schein ein Tool zu sein, dass ohne Bezug auf die Logik einzelne Signale überwacht. (Bei uns sind das CMZ und werden ständig und schritt unabhängig überwacht).

Der Vorteil der SPS Programmierung ist in allen Fällen nicht in Frage gestellt. Wir reden von Tools für die leichter erstellen von CODE.
 
Das erklärst du dem Idioten AS-Programmiere mal genauer. Graph schaltet wenn was dagegenspricht? Wenn ihr Schrittkettenabläufer erstellt, ist das dann was anderes als AS

AS passiert auf Petri Netze oder auf Zustandsautomaten. Da dient die Transition der Weiterschaltung = wenn das und das ... dann weiterschalten
Damit ist mit jedem Signal das am Automaten angeschlossen ist eine Potenz mehr 2 hoch Anzahl der Signale

Das löst du bitte nun so in der AS das immer jedes Signal (Bitmuster ) richtig ist. In jedem Zustand und bei jedem Übergang.

Wir wollen nur aufzeigen, dass es eine einfach Möglichkeit gibt, muss ja nicht so machen - wenn du dich nicht damit beschäftigen willst. Es gibt eben immer einen Fortschritt.:p
 
ProDiag schein ein Tool zu sein, dass ohne Bezug auf die Logik einzelne Signale überwacht. (Bei uns sind das CMZ und werden ständig und schritt unabhängig überwacht).

Der Vorteil der SPS Programmierung ist in allen Fällen nicht in Frage gestellt. Wir reden von Tools für die leichter erstellen von CODE.

Wie definiert ihr den welche Signale überwacht werden sollen?
Und was soll überwacht werden?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nein, keine sychrone Schrittkette, alternative Schrittkette, war gemeint.
Parallelverzweigung und "gleichzeitige" Abarbeitung ist natürlich auch sinnvoll, sollte schon gehen.

Wir halten uns an Timer - Ablauf - Schleife - Entscheidung (deine Frage ist dann mit Entscheidung zu beantworten)

alternativ ist eine Entscheidung
 
Wie definiert ihr den welche Signale überwacht werden sollen?
Und was soll überwacht werden?

Jedes Bit ist überwacht - Jede Schrittkette verarbeitet Bits und es gibt schrittbezogene und schrittunabhängige Überwachung.
Überwacht wird der richtige Zustand = 0 oder 1

Beispiel: wenn eine Lichtschranke im ersten Schritt belegt werden soll und dann belegt bleibt bis Schritt 5 dann wird das exakt überwacht (1 wird 1 - bis 5 auf 1 dann bis ende 0 )
Jedes Bit wird auf Belegt und nicht Belegt definiert ! So ist zu jedem Zeitpunkt das Signal überwacht und bei Abweichung sofort klar was fehlt.
 
Die Befürchtung habe ich auch. In die Richtung gehen auch einige Forschungsarbeiten die ich kenne. So wie ich mir das dann vorstelle, fehlt mir aber die menschliche Nachvollziebarkeit und entsprechend auch die Möglichkeit dies selber zu Programmieren. Wenn die Transitionen ALLE bits betrachten, kann das ja schnell unübersichtlich werden.

Am Punkt schnell unübersichtlich und fast unmöglich. Ist aber nicht Grund genug eine Lösung zu suchen. Das zeichnet den PLC Programmierer aus. Offen und lösungsorientiert.
 
Zurück
Oben