Beiträge von CHLINDE

    Guten Morgen!


    Ich selber komme aus der Hochsprachenprogrammierung (C++). In unserem Unternehmen gab es auch Bestrebungen, das Microsoftsystem umzusetzen, bis wir dann vor einem halben Jahr gemeinsam entschieden haben, dass das System unpraktisch ist, vor allem im Hinblick auf die Programmierung im Team. Das sogenannte "Mausdrüberhalten" ist auf Dauer schlichtweg lästig, weil der Programmierer die Hände im Normalfall auf der Tastatur hat und nicht an der Maus.

    Außerdem ist es mir lieber, den Variablentyp auf einen Blick zu sehen, als dafür extra den Mauszeiger zu suchen, ihn auf die Variable zu halten, zu warten, bis die IDE sich bequemt (wir nutzen den Embarcadero C++ Builder 10.2.3 :-()

    Natürlich ist es jedem selbst (im Rahmen der Unternehmensphilosophie) überlassen, welche Notation er einsetzt. Bei uns heißt es inzwischen glücklicherweise wieder bActive, dValue usw. Wenn man es rein auf boolsche Variablen begrenzen würde, könnte ich auch mit den zusätzlichen Buchstaben von "Is" und "Has" leben, ist ja im Endeffekt nichts anderes, als "b" wie bool. Anders ist es da bei double, float, string und anderen Variablen. Da ist man zwangsläufig an den Hint beim Mouseover angewiesen.


    Wie dem auch sei, beides hat Vor- und Nachteile.


    Gruß


    Christian


    Hast du mal probiert den analogen PATH-Trigger zu verwenden.


    Ich werde das mal probieren!


    Leider ist es tatsächlich so, dass man das Problem nicht reproduzieren kann. Es geht 10x gut und beim 11. Mal fahre ich die Position wieder an und plötzlich fährt der hydraulische Spanner schon zu, obwohl der Roboter noch voll in der Fahrbewegung ist. Dabei zerreißt es mir meistens den Prüfling und manchmal auch die Vorrichtung.

    Guten Tag!


    Also ich habe die ungarische Notation im Studium gelernt und nutze sie täglich. Sie wird insbesondere dann sinnvoll, wenn Kollegen mit einem fremden Programm arbeiten sollen. Da ist es durchaus hilfreich, anhand der Notation gleich zu wissen, worum es sich bei der Variable handelt.


    Allerdings verbietet auch die microsoftsche Programmierrichtlinie die Verwendung der ungarischen Notation...nicht alles, was vom Softwareriesen festgelegt wird, ist sinnvoll :evil1:

    Hallo,


    kennt jemand die Situation, dass ein Triggersignal im T1 zu früh ausgelöst wird?


    Folgender Programmcode:


    Code
    TRIGGER WHEN DISTANCE = 1 DELAY = 0 DO I_Position=2
    SPTP Typ55490222_InputS_PP CONT Vel=100 % PDAT1 Tool[1]:B-Side Base[1]:Anlage;
    TRIGGER WHEN DISTANCE = 1 DELAY = 0 DO I_Position=1
    TRIGGER WHEN DISTANCE = 1 DELAY = 0 DO ClampBSide_A100=TRUE
    SLIN Typ55490222_InputS_WP Vel=0.1 m/s CPDAT1 Tool[1]:B-Side Base[1]:Anlage;


    Ich fahre die Positionen im T1 ab. Bei Erreichen des Punktes "Typ55490222_InputS_PP" wird in manchen Fällen, also auch nicht reproduzierbar, das Signal "ClampBSide_A100" schon true gesetzt, obwohl das erst bei Erreichen des Punktes "Typ55490222_InputS_WP" erfolgen soll. Dadurch donnert der hydraulische Spanner zu und die Vorrichtung ist verbogen :twisted:
    Im AutExt-Betrieb scheinen diese Probleme nicht zu bestehen.
    Kennt jemand dieses Phänomen?


    Gruß


    CHLINDE

    Guten Morgen,


    bei uns ist eine Diskussion über die Umsetzung einer Übergabe eines Teils von einem Roboter zum anderen entbrannt.


    Folgende Situation:


    Wir fahren mit einem Roboter an eine Übergabeposition. Wenn unser Roboter an Position ist, kommt ein Roboter einer Fremdfirma und legt einen Prüfling in eine Vorrichtung an unserem Roboter ein. Wir spannen das Teil hydraulisch ein und der Roboter der Fremdfirma fährt weg.


    Die Philosophiefrage besteht darin, dass zwei unterschiedliche Meinungen des SPS- und des Roboterprogrammierers gibt.


    Der SPS-Programmierer sagt, die Schrittkette für das Spannen muss der Roboter übernehmen; der Roboter soll somit der Master sein. Hier der momentan geplante Ablauf:


    1. Unser Roboter fährt zur Übergabeposition
    2. Signal an SPS: Roboter an Übergabeposition
    3. SPS leitet das Signal weiter an Beladeroboter der Fremdfirma "Starte Beladen"
    4. Beladeroboter legt Teil in Vorrichtung an unserem Robi ein
    5. Beladeroboter sendet Signal an unsere SPS "Beladeroboter hat Teil eingelegt"
    6. SPS leitet Signal weiter an unseren Roboter "Teil an Position"
    7. Unser Roboter sendet Signal an SPS "Spanner schließen"
    8. Wenn Teil gespannt ist, sendet die SPS ein Signal an unseren Roboter "Teil ist gespannt"
    9. Unser Roboter sagt dem Beladeroboter über die SPS "Fahre jetzt weg"
    10. Der Beladeroboter gibt, wenn er weggefahren ist das Signal "Bin weg" an die SPS
    11. Die SPS leitet das Signal weiter an unseren Roboter, der dann auch wegfährt


    Tritt beim Spannen ein Fehler auf, soll unser Roboter den Spanner wieder öffnen dem Beladeroboter sagen, dass ein Fehler aufgetreten ist und ihn wegschicken und anschließend auf ein neues Teil warten, was vom Beladeroboter eingelegt wird. Da ich aber die Schritte für das Spannen dann schon durchlaufen habe, müsste ich dann aber wieder an die Stelle im Programm springen, wo ich auf das Signal vom Beladeroboter warte "Beladeroboter hat Teil eingelegt". Da ich aus der OOP komme, widerstrebt mir der Befehl "GOTO" ;)


    Meiner Meinung nach sollte die SPS der Master sein, da sie den Mittelpunkt zwischen Beladeroboter und meinem Roboter darstellt. Folgender Ablauf wäre dann möglich:


    1. Unser Roboter fährt an die Übergabestation und sagt der SPS "Ich bin da"
    2. SPS gibt Signal an Beladeroboter "Kannst beladen"
    3. Beladeroboter sagt SPS "Ich habe beladen"
    4. SPS schließt den hydraulischen Spanner
    5. SPS sagt dem Beladeroboter "Kannst wegfahren"
    6. Beladeroboter sagt der SPS "Ich bin weg"
    7. SPS sagt unserem Roboter "Kannst wegfahren"


    Wenn ein Fehler beim Spannen auftritt, öffnet die SPS den hydraulischen Spanner wieder und sagt dem Beladeroboter "da stimmt was nicht". Dieser fährt dann mit dem Teil zu einer NOK-Box und holt ein neues Teil.


    Wie ist eure Meinung dazu?


    Vielen Dank!

    Hallo!


    Ich habe die ehrenvolle Aufgabe, einen Handbetrieb über das smartPAD zu realisieren. En détail bedeutet das, ich möchte Aktoren über eine angeschlossene SPS steuern. Die teilweise erwartete Rückmeldung von Initiatoren möchte ich auf der gleichen Oberfläche anzeigen.
    Alle Aktionen sollen nur bei betätigtem Zustimmtaster am PAD ausgeführt werden.
    Gibt es eine Möglichkeit, diese Aufgabe mit Hilfe von Bordmitteln zu erfüllen, oder kann man ein zusätzliches Tool kaufen, um damit eine Art Handbetriebsoberfläche zu erstellen?


    Vielen Dank im voraus


    Christian Lindenblatt

    Guten Morgen!


    Ich möchte die Variable $SR_OV_RED zu Beginn eines KRL-Unterprogramms setzen. Damit möchte ich in dem Unterprogramm im Handbetrieb eine max. Geschwindigkeit von 100% zulassen, im Automatikbetrieb hingegen nur 10%.
    Dafür habe ich die Zeile
    $SR_OV_RED = 10
    eingefügt.
    Sporadisch erhalte ich in dieser Zeile aber die Meldung "Unzulässige Wertzuweisung". Führe ich das Unterprogramm erneut aus, steht dann "Overridereduzierung für sichere Roboter aktiv" und die reduzierte Geschwindigkeit ist wird auch gefahren.
    Woran könnte das liegen?
    Vielen Dank

    Der Inbetriebnahmemodus ist bei mir nicht mehr aktiv.
    Bei mir sind jetzt wieder alle Betriebsarten verfügbar. Was habe ich gemacht? Ich habe den Roboter dann erst mal stehen gelassen, und hab mich seinem im gleichen Nest (und Netz) befindlichen Kumpel gewitmet.
    Nachdem ich dann einige Zeit mit dem Roboter gearbeitet habe, bin ich dann wieder ans Problemkind gegangen und siehe da, plötzlich standen die Betriebsarten wieder zur Auswahl.
    Jetzt ist mir aber eigentlich nichts bekannt, was ausgehend von einem anderen Roboter die Betriebsarten blockiert...
    Ich muss es wohl scheinbar unter "Ungelöste Fälle" ablegen. Das ist unbefriedigend.

    Hallo!
    Ich versuche nachdem ich über WorkVisual eine Änderung übertragen habe, über den Betriebsarten-Wahlschalter auf die Betriebsart Automatik Extern zu schalten.
    Lege ich den Schalter herum, erscheint auch wie gewohnt das Menü auf dem Display. In diesem Menü ist aber neuerdings nur noch T1 aufgelistet. Die anderen Betriebsarten fehlen.
    Die Änderung, die ich über WorkVisual durchgeführt habe, habe ich erstmal rückgängig gemacht. Trotzdem erscheint immer nur T1.
    Das Problem hatte ich sporadisch schon öfter, konnte es aber durch einen Neustart des Roboters immer beheben.
    Das funktioniert nicht mehr. Eine Störmeldung habe ich aber auch nicht.
    Woran liegt es, dass die Betriebsarten nicht mehr angezeigt werden?


    Vielen Dank

    Guten Morgen!
    Gibt es eine Möglichkeit, Unterprogramme, die in einem Hauptprogramm aufgerufen werden zu überschleifen?
    Beispiel:
    hauptprog.src:

    Code
    IF (IN[10] == TRUE)
        Unterprog1()
    ENDIF
    
    
    IF (IN[20] == TRUE)
        Unterprog2()
    ENDIF


    In den Unterprogrammen befinden sich einige Fahrbefehle. Jetzt werden im Hauptprogramm einzelne Eingänge abgefragt und abhängig von deren Status wird das Unterprogramm aufgerufen oder auch nicht.


    Der Roboter stoppt immer, nachdem er ein Unterprogramm abgearbeitet hat und ins Hauptprogramm zurück springt.
    Dieses Stoppen möchte ich gerne verhindern.


    Eine Variante wäre sicherlich, die Überprüfung der Eingänge und den entsprechenden Aufruf des nächsten Unterprogramms bereits im letzten Unterprogramm zu machen. Das wäre aber bei vielen Unterprogrammen sehr aufwendig.


    Ich meine mich zu erinnern, dass es eine Möglichkeit gab, an das Ende der Unterprogramme einen Befehl zu hängen, der das Überschleifen aktiviert, aber ich kann mich nicht mehr daran erinnern, wie der lautete.


    Vielen Dank!

    Hallo!


    Kann mir jemand aus dem Stehgreif sagen, ob ein durch den Befehl "HALT" angehaltenes Programm erst durch eine Flanke fortgesetzt wird, oder auch durch statisch 1.
    Ich möchte ein Unterprogramm mit Zustimmtaster+Start durchlaufen, bei HALT soll das Programm stoppen und erst beim erneuten Drücken der Starttaste weiterlaufen.
    Leider habe ich im Moment keinen Robi zur Verfügung, wo ich es direkt testen könnte.


    Vielen Dank


    CHLINDE