Postprozessor: Auf der SPS oder schon davor?! Szenario1 vs Szenario2

  • Hallo Forum-Gemeinde,


    ich richte eine erweiterte theoretische Aufgabenstellung an euch. Ich habe ein Problem und bin so langsam eine Lösung näher gekommen. Das Problem wurde hier schon einmal aufgefasst: http://www.roboterforum.de/rob…-krc1/msg53884/#msg53884.


    Ein Besitzer einer Roboter-Zelle und dazugehöriger weiterer Prozessparameter (zB eine Schweißanlage, Fräsanalge o.ä.) ist nicht in der Lage ein Roboterprogramm zu manipulieren, dahingehend dass er nicht weiß wie man zB einen Schweißstrom/Drahtvorschub o.ä. ändert. Er sieht letzten Endes nur am gefertigten Prozess, dass an einer Stelle eine Änderung von Prozessparametern (Technologiebefehle) geändert werden müssen. Da er nicht weiß wie das geht, gibt er beim Entwickler an. an welcher Stelle es hakt und der Entwickler schickt den aktualisierten Programmteil zurück.


    Es entstehen zwei Szenarien, die sich nun gegenüberstehen und wo ich eure Hilfe brauche. Ich muss mich für eins entscheiden und umsetzen und begründen können warum ich den Weg so gehe!


    Szenario 1:
    - Externe Firma mit eigener Entwicklungsumgebung (CAx), grober Ablauf des IR wird geplant, unspezifisches Roboterprogramm wird entwickelt
    - eine "Zellenkonfiguration" wird geladen (sie enthält Manufactor IR, RobotLanguage, Ein-/Ausgänge des IR usw)
    - externer Postprozessor übersetzt das Programm in die gewünschte Form, die der IR laut Zellkonfig erwartet
    - Programm kann so - OHNE Vorkonfiguration des IR/SPS etc. gestartet werden


    Szenario 2:
    - wie im Szenario eins entwickelt eine externe Firma ein Roboterprogramm (zunächst universell, dann mittels Prostprozessor in gewünschte Sprache des IR)
    - angesteuerte/überwachte Ausgänge/Eingänge werden durch Variablen angefahren
    - es existiert keine Zellkonfiguration, kein Postprozessor, der weiß welche Ausgänge wie anzusteuern sind
    - der Roboter muss vorkonfiguriert werden -> wird im Roboterprogramm ein Zugriff auf ein Ausgang vereinbart so muss das in einer Konfiguration stehen
    - im Prinzip übersetzt die Robotersteuerung den Befehl und weiß anhand der Deklarationen wie die Ein/Ausgänge anzusteuern sind



    Ich hoffe, dass was ich meine, wird hier klar. Im Prinzip entspricht das den zwei bekannten Wegen einem Roboter beizubringen welche Ein-/Ausgänge anzusteuern sind. Der Unterschied in den Szenarien besteht nun darin, wo ich mein Code übersetzen lasse.


    Im Szenario1 weiß der Entwickler genau Bescheid darüber, wie die Zelle aussieht, anhand einer Zellkonfigurationsdatei. Das Programm kann so wie es ist, dem Robter zugeführt werden. Im zweiten Szenario hat der Entwickler keine Ahnung über externe Prozessparameter. Er kennt zwar meinetwegen die Sprache (Sprachversion etc), aber nicht die externen Komponenten. Er verwendet "allgemeingültige" vereinbarte Variablen (o.ä.) wie zB. "Greifer öffnen" etc. Im zweiten Szenario wüsste der Roboter schon was sich dahinter verbirgt...


    Ich hoffe auf eine rege Diskussion :hilfe:


    Vielen Dank vorab für jede Idee Eurerseits :danke:


    Grüße :zwink:

  • ANZEIGE
  • Hallo,



    Es entstehen zwei Szenarien, die sich nun gegenüberstehen


    tut mir leid, schon da kann ich nicht folgen. Warum verwendet man nicht Konfigurationsdateien oder -datenbanken für die Prozessparameter. Oder soll man einen Schweißroboter zum Fräsen umkonfigurieren können ?


    Was den Rest angeht, als jemand der mit Codegeneratoren für nur zwei Roboterhersteller arbeitet, halte ich das alles für reichlich theoretisch und realitätsfremd.


    Grüße


    Urmel

  • *ggg*
    So wollt ich es net sagen, sonst schimpfen wieder alle, ich wär so grob....


    ...aber meine Lösung ist einfach einfacher.
    Einer der Werker dort (einer, der lesen und schreiben kann), kriegt eine kleine hausinterne Schulung verpasst, Zwölf Euro mehr im Monat und nen schönen Titel. Dann kriegt er noch einen Gutschein für fünfmal helfen und dann ist er selbst verantwotlich...


    Das nennt man Fortbild... Qualifikationsmaßnahme. Gut für Statistik, Geiles Firmenimage und den Geldbeutel des Kunden...

    Wolfram (Cat) Henkel

    never forget Asimov's Laws at the programming of robots...

    "Safety is an integral part of function. No safety, no production. I don't buy a car without brakes."


    Messages und Mails mit Anfragen wie "Wie geht das..." werden nicht beantwortet.

    Diese Fragen und die Antworten interessieren jeden hier im Forum.


    Messages and Mails with questions like "how to do..." will not be answered.

    These questions and the answers are interesting for everyone here in the forum.

  • Angenommen: Es gibt eine Zelle. 1 Roboter, 1 Schweißanlage. Dieses Setup ist mehrmals verkauft worden und bei mehreren Kunden im Einsatz. Der Kunde selber hat nun mehrere Programme mit denen er Roboter und Schweißanlage bedienen kann. Der Anwender bekommt das Programm, lädt es, und das Setup erledigt den Rest (die eigentliche Arbeit).


    Nun ist die Ausgangslage aber so, dass der Anwender eigentlich keine Ahnung hat wie ein Roboterprogramm aufgebaut ist. Er kann es starten und stoppen - kann Technologieparameter (falls diese nicht 100%ig stimmen) nicht ändern.


    Der externe Programmierer weiß ja letztlich nicht wie das in Realität funktioniert. Simulationsumgebung entsprechen nie 100%ig der Realität. Es kann also sein, dass der Drahtvorschieb an der Positiion XY geändert werden muss, weil die Schweißnaht nicht "gut" ist.


    Es gibt zwar nur 1 Roboterprogramm, dass die SPS "steuern" kann, aber es gibt 2 Wege um bis dahin zu kommen: 2 Szenarien.


    Szenario1: Entwickler hat komplette Entwicklungsumgebung (Konfigurationsdatei der Zelle, Welcher Roboter? Welche Sprache? Welche Ein/Ausgänge? Wie steuer ich die Schweißanlage? etc..). Mit diesem Wissen kann er an alle Kunden mit dem gleichen Hardware-Setup das Programm schicken. Vor Ort muss nichts konfiguriert werden.


    Szenario2: Der Entwickler weiß nicht wie er die Ausgänge ansteuert um zB den Drahtvorschub einer angeschlossen Schweißanlage zu manipulieren. Daher verwendet er eine vereinbarte Konvention: Variablendeklaration, diese ist auf jeder Maschine bekannt. Im Szenario2 werden also nur "allgemeingültige" Variablen verwendet, und die SPS kennt sie, weil diese vor Ort vereinbart wurden.


    Ist das ein wenig besser rübergekommen... ich weiß sonst nicht wie ich das klar machen soll :-|


    PS: Ich greife ein Problem auf, dass viele kleine Betriebe haben, die sich einen Programmierer oder eine Fortbildung nicht leisten können. Das Szenario an sich, die Tatsache dass vor Ort niemand da ist um etwas zu ändern - BITTE NICHT ANZWEIFELN... das ist nun mal so bei Aufgabenstellungen. Das bitte hinnehmen als Bedingung beim Suchen einer Lösung.

    Einmal editiert, zuletzt von stoeven ()


  • Ich hab mich doch extra bemüht, nicht grob zu sein. :angel:


    Und extra nichts dazu geschrieben, dass "eine externe Firma ein unspezifisches Roboterprogramm entwickelt". :mrgreen:


    Ich wollte damit sagen, dass das entwickelte Programm nicht speziell auf einen spezifischen Hersteller ausgerichtet ist. Sondern erst im Nachhinein mittels eines Prostprozessors zugänglich gemacht wird für einen speziellen IR.


  • Ich wollte damit sagen, dass das entwickelte Programm nicht speziell auf einen spezifischen Hersteller ausgerichtet ist. Sondern erst im Nachhinein mittels eines Prostprozessors zugänglich gemacht wird für einen speziellen IR.


    Genau diesen Teil halte ich für realitätsfremd, dazu sind die Robotersprachen zu unterschiedlich.


    Manche arbeiten mit Vorlauf, andere synchron.
    Manche haben Interrupts, manche machen alles mit Multitasking.
    Bei manchen ist die IO-Konfiguration irgendwie global, bei manchen Teil des Programms.


    Entweder kommt da so eine "kleinster gemeinsamer Nenner" Lösung raus, oder etwas in der Form "wir unterstützen Roboter aller Hersteller, solange es sich um Kuka Modell XYZ handelt".


    Wenn man die (Roboter)-Zielgruppe genauer definiert, kann man mit einem der beiden Ansätze arbeiten. Mit welchem hängt aber sicher wieder davon ab worum es sich handelt.


  • Ok, wir gehen davon aus, dass das entwickelte Roboterprogramm auf den IR in der Zelle passt. Das ändert eigentlich nichts an meiner Frage. Das Problem bezieht sich explizit nur auf die weiteren Prozessparameter (bzw Technologieparameter!), wie eben ein angeschlossenes Gerät (Schweißanlage, Kleber, Fräser, usw.). Da der externe Programmierer zwar den Roboter kennt, aber nicht die einzelnen angeschlossenen Ein/Ausgänge, kann er nicht sagen wie er das Gerät steuert


    Beispiel:
    --> er kennt bspw nicht die Bitreihenfolge von der Schweißanlage, um den Drahtvorschub zu ändern. Er verwendet den Befehl im Programm "Erhöhe Strom um 5V" (Strom und Drahtvorschub hängen immer zusammen).
    Im Szenario1 wird mittels der Zellkonfig das direkt in einen Befehl umgewandelt den die Schweißanlage versteht (richtiges Absenden einer legalen Bitreihenfolge). Im Szenario2 müsste das vor Ort geschehen. "Erhöhe Strom um 5V" ist dort bekannt und wurde in einer cfg entsprechend vereinbart und ist bekannt.

  • Schon klar, aber die beiden Ansätze widersprechen sich nicht wirklich, in unserer Software tauchen sie beide gemeinsam auf.


    Szenario 1 ist eher eine Art "Wurstmaschine", aus den Konfigurationsdaten und der Programmvorlage ensteht ein Bandwurmprogramm, dass nicht schön zu lesen ist und alles in kleinsten Schritten hintereinander enthält.


    2 ist dann entweder eine Art Interpreter, der eine Scriptsprache abarbeitet, oder ein Programm vom Typ 1, dass für bestimmte Funktionen auf Bibliotheken zurückgreift, die schon auf dem Zielsystem vorliegen.


  • 2 ist dann entweder eine Art Interpreter, der eine Scriptsprache abarbeitet, oder ein Programm vom Typ 1, dass für bestimmte Funktionen auf Bibliotheken zurückgreift, die schon auf dem Zielsystem vorliegen.


    Genau!


    Ich sehe die beiden Wege, ... gibt es noch andere?


    Welches Szenario macht nun mehr Sinn? Welches wäre wahrscheinlich (mit eurer Erfahrung) einfacher umzusetzen?



    Schon klar, aber die beiden Ansätze widersprechen sich nicht wirklich, in unserer Software tauchen sie beide gemeinsam auf.

    Höh?? SW? Wie? Was? ... :huh: Welche SW?

    Einmal editiert, zuletzt von stoeven ()

  • Ich weiß jetzt nicht genau was du mit Offline-Tool meinst, aber in der Entwicklungsumgebung des Roboterprogrammes gibt es auf jeden Fall einen Postprozessor der KUKA KRL unterstützt (einige wenige Versionen...) (via VBA-Script).


    Anpassung des Codes soll wohl auf jeden Fall Offline passieren. Naja, der Anwender an der Maschine versteht den Code ja wohl nicht - insofern kanns ka nur Offline vom Experten aus Externshausen passieren.


  • Eine 3D Robotersimulations- und Programmiersoftware.


    Und die bereits existierenden Roboteranwendungen wurden damit geschrieben ?


    Das kann schon gut sein, dass bereits existierende Anwendungen von dort entstammen. Ganz genau wissen tue ich es aber nicht. Inwiefern könnte das interessant sein?

  • Wenn man nicht alle Roboterprogramme neu schreiben will, braucht man ja irgendwo einen Anfang.


    Also z.B. die Vorlagen in der herstellerunabhängigen Sprache der Simulation. Dazu die Roboterprogramme, um zu sehen, was von Hand hinzugefügt wurde.


    Dann muss man sich den Postprozessor ansehen, wie man den für Variante 1 oder 2 einsetzen kann. Entweder bringt man ihn dazu Zellkonfigurationen einzuweben oder Bibliotheken oder Unterprogramme zu verwenden.


    Für Variante 1 muss man dann sehen, dass man Roboterprogramme generieren kann, die den vorhandenen nahe kommen.


    In der zweiten Variante muss man die Roboterprogramme auf den Zielsystemen entsprechend umbauen und sehen, dass das mit den generierten Programmen zusammenpasst.


    Wenn der Postprozessor das nicht hergibt, muss ein neuer her ...


    Einfacher hat man es sicher, wenn man nur mit neuen Systemen anfängt. Auf jeden Fall wird man dann Zugriff auf entsprechende Robotersysteme brauchen, um sein Produkt dann auch zu testen.


  • Wenn man nicht alle Roboterprogramme neu schreiben will, braucht man ja irgendwo einen Anfang.


    Wieso "neu schreiben"? :huh:



    Für Variante 1 muss man dann sehen, dass man Roboterprogramme generieren kann, die den vorhandenen nahe kommen.


    Wir gehen mal davon aus, dass es eine Simulationssoftware gibt, die lauffähigen KRL-Code produziert. Ob ein Postprozessor einen "universellen" AblaufCode in zB KRL-Code wandelt, ist relativ egal. Ich komme da nicht ran, da ich nicht die API hab und auch selbst wenn ich sie hätte nicht öffnen will.



    In der zweiten Variante muss man die Roboterprogramme auf den Zielsystemen entsprechend umbauen und sehen, dass das mit den generierten Programmen zusammenpasst.


    In jedem Fall muss ich "Mache dies und das" dem Roboter beibringen können. Wie das geht, ist erstmal für mich egal.



    Einfacher hat man es sicher, wenn man nur mit neuen Systemen anfängt. Auf jeden Fall wird man dann Zugriff auf entsprechende Robotersysteme brauchen, um sein Produkt dann auch zu testen.


    Das ist für mich wichtig... zu wissen: Was macht weniger Aufwand? Was lässt sich auf viele Fälle beziehen, wo Zellen einen gleichen Aufbau haben? Was kann ich jetzt für eine Lösung vorschlagen, so dass ich ein erstes Ergebnis ziemlich schnell vorführen könnte?


    Was für mich wichtig ist bei der Auswahl eines Szenarios: Wie schaffe ich es am Einfachsten, ein Roboterprogramm zu "updaten", nachdem erkannt wurde, dass dort ein Teil des Codes angepasst werden muss - unter der Voraussetzung das der Anwender DIES NICHT KANN!
    Es geht dabei ausschließlich um Technologiebefehle (externe zusätzliche Prozessparameter).

    Einmal editiert, zuletzt von stoeven ()


  • Wieso "neu schreiben"? :huh:


    Wie willst du ein Programm durch einen Postprozessor ändern, dem nach der Erzeugung mit der Simulationssoftware von Hand Änderungen hinzugefügt wurden ?



    Ah ja, ich glaube das zweite setzt das erste voraus.



    Was kann ich jetzt für eine Lösung vorschlagen,


    Die eine oder eine andere, mach ein Powerpoint und gut ist. Scheint eh nur BWLer Zeug zu sein.



    so dass ich ein erstes Ergebnis ziemlich schnell vorführen könnte?


    Glaub ich nicht.


    Beide Lösungen erfordern den Umbau des Postprozessors, oder einen zweiten nachgeschalteten.
    Bleiben nur die beiden Vorschläge mit den Konfigurationsdateien oder dem Werker, der Lesen und Schreiben kann.

    Einmal editiert, zuletzt von Urmel ()


  • Beide Lösungen erfordern den Umbau des Postprozessors, oder einen zweiten nachgeschalteten.


    Ja und Ja!!!!! Und jaaa endlich... es scheint angekommen. So wie ich das seh, muss ich entweder einen neuen nachgeschalteten Postprozessor schreiben (Szenario1), oder eine zweite Variante finden wo das Programm auf dem Setup vor Ort (Zelle) übersetzt wird (Szenario2).


    Und nix mit PowerPoint. Das ist bitterer Ernst! Ich MUSS eine Lösung finden, vorschlagen, umsetzen und testen bzw. vorzeigen.



    Bleiben nur die beiden Vorschläge mit den Konfigurationsdateien oder dem Werker, der Lesen und Schreiben kann.


    Stellt euch doch einfach mal vor, dass es in kleinen und mittelständischen Betrieben keine festangestellten Programmierer gibt. Was ist daran denn bitte so unklar, dass man das Szenario hier verniedlichen muss und meinte "Lernt Schreiben und Lesen" ....


    Ich MUSS dafür Sorge dafür tragen und mir einen Kopf machen darüber, dass es auch in Zukunft möglich ist (in verschiedenen kleinere Firmen), eine Veränderung am Roboterprogramm vornehmen zu können .


    Hast du denn eine andere, bessere, konkrete, einfachere Lösung als ich, Urmel? Von mir aus kannst du meine Szenarien-Beschreibung vergessen. Die Ausgangssituation und das Ziel sollte klar sein. Alles was dazwischen liegt, ist verhandelbar! Nur die beiden Szenarien sind mein Ansatz bzw. Ansätze das Problem zu lösen.


    Generell find ich es schade, dass sich nicht noch mehr Leute an der Diskussion beteiligen. Vll. liegts auch daran, dass hier schon so viel geschrieben wurde..... :(

    Einmal editiert, zuletzt von stoeven ()


  • Generell find ich es schade, dass sich nicht noch mehr Leute an der Diskussion beteiligen. Vll. liegts auch daran, dass hier schon so viel geschrieben wurde..... :(


    Hier geht es ja nicht um Kuka-Roboter an sich, in so einem Fall wird man hier kurzfristig nicht mehr Leute zusammenbekommen.



    muss ich entweder einen neuen nachgeschalteten Postprozessor schreiben (Szenario1), oder eine zweite Variante finden wo das Programm auf dem Setup vor Ort (Zelle) übersetzt wird (Szenario2).


    Ich sehe da keinen allzu großen Unterschied. Wahrscheinlich brauchen beide Varianten einen geänderten Präprozessor. Ob der nun z.B. im Falle von "Greifer auf" bei Typ 1 mehrere Zeilen, oder bei Typ 2 nur eine Zeile einfügt, ist ein marginaler Unterschied.
    Ob das Übersetzen am Laptop beim Roboter, oder am CAD-Arbeitsplatz geschieht, macht keinen so großen Unterschied. In der Test- und Entwicklungsphase macht das keinen Unterschied.



    Hast du denn eine andere, bessere, konkrete, einfachere Lösung als ich, Urmel?


    In aller Bescheidenheit, wir verkaufen seit 13 Jahren eine Lösung mit der Anwender ohne Robotererfahrung im Laborbereich einfach mit ein paar Mausklicks Roboteranwendungen zusammenklicken und starten können. Das ganze ist mittlerweile bei über 200 Robotern im Einsatz.


    Aber wir verwenden dazu halbwegs standardisierte Systeme mit Robotern von nur zwei Herstellern (und bewusst keine Kuka-Roboter).


    Aus deinem Thread über den KRC1 schliesse ich, es geht darum mit irgendwelchem alten Gebrauchtzeugs Geld zu sparen. Wenn eine alte Gurke kaputt ist, nimmt man die nächste. Da man denkt "Roboter sind eh alle gleich", denkt man sich jetzt: Sparen wir halt auch noch die Programmierer, kann alles automatisch gehen.


    Mein Rat: Halte dich erstmal an Szenario 1, das kann immer noch in Richtung 2 weiterentwickelt werden.

  • Mein Guter, ich habe keineswegs die Absicht gehabt, etwas zu verniedlichen.
    Was ich schrieb war auch nicht, daß jemand lesen und Schreiben lernen soll.


    Ich sage Dir aber aus meiner 15-jährigen Praxiserfahrung heraus, was in meinen Augen der einzig vernünftige Weg ist.
    Und das ist nicht ein hauptamtlicher Programmierer, sondern ein auf die spezifische Anlage geschulter Werker mit der Fähigkeit EXAKT DIESE Anlage einzustellen.
    Dazu weiß er, wo er Schweißparameter zu ändern hat und wie er den Robbi startet, einen Punkt nachteacht und er hat Kenntnisse im Handverfahren des Robbis.
    Das ist ein zwei- oder drei-Tage-On-The-Job Lehrgang.
    So machen das viele kleine Firmen, mit ein oder zwei Robotern. Der Werker mit dem Lehrgang ist stolz auf das Spezialwissen und die Firmen sparen dabei noch richtig Geld ein...


    Natürlich steht es Dir frei, ein Jahr Forschung in eine Fernwartung zu investieren.
    Ich gehe den einfachen Weg und behaupte, daß es in jedem Betrieb einen ausreichend gescheiten Menschen gibt, der das Anlagen-Einstellen gerne lernt.
    Der hat dann den GROSSEN Vorteil, dass er intelligent auf die Situationen reagieren kann, was keine Fernwartung jemals schafft.
    Ein Mensch wird immer intelligent und flexibel reagieren können. Software nie.


    So und das waren dazu meine letzten Worte. Dieses Thema ist für mich abschließend behandelt.


    Grüße

    Wolfram (Cat) Henkel

    never forget Asimov's Laws at the programming of robots...

    "Safety is an integral part of function. No safety, no production. I don't buy a car without brakes."


    Messages und Mails mit Anfragen wie "Wie geht das..." werden nicht beantwortet.

    Diese Fragen und die Antworten interessieren jeden hier im Forum.


    Messages and Mails with questions like "how to do..." will not be answered.

    These questions and the answers are interesting for everyone here in the forum.

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden