Wartezeit auf digitalen Eingang begrenzen und Programm fortsetzen .. möglich ?

  • Moin,


    für mein aktuelles BetaTest-Projekt mit einer Kameraprüfung brauch ich wohl früher oder später eine Möglichkeit auf ein Signal eben irgendwann nicht mehr zu warten.

    Die Kamera liefert mir nur einen Zustand zurück, nämlich nur TRUE wenn NIO mit anschließender Ausschleusung auf das NIO-Band. Ich muss aber eine gewisse Zeit mit dem Robbi warten, Signalkette.

    Angeblich braucht die Cam ca. 80 - 120 ms je nach Lichtverhältnis um ein scharfes Bild zu machen, zu verarbeiten und zu entscheiden ob NIO oder nicht. Wenn das Teil IO ist, kommt nix.

    Leider kenn ich mich mit solchen Bilderfassungssystem nicht aus und kann auch aktuell auf keine informative Quelle zurück greifen.


    Folgende Ansätze schwirren in meinem Hirn herum;

    1. Die Cam muss mir eben auf ein zweites Signal liefern, was mir lieb wäre. Tut sie aber aktuell nicht. (Der Zuständige kennt seine Technik auch noch nicht so gut :lol: )

    2. WHILE-Schleife mit Zähler und Aussprung; wenn sich der Zustand des Eingang's nicht nach X Durchläufen ändert, Annahme, dass das Teil IO ist. Unsafe .. :denk: aber relativ einfach.

    3. euren Vorschlag, eure Idee :zwink:


    Mir geht es einfach nur darum, dass der Robbi nicht in irgendwelchen Warteschleifen oder WAIT FOR $IN's hängt. Denn es kommt eben nix :mrgreen:

    Ich kann auch ziemlich auf auf dem Schlauch stehen ohne das ich es merke. :waffen100:


    Danke

    Mein Name ist Hase. Ich weiß von nix.

  • Schritt für Schritt zum Roboterprofi!
  • Guten Morgen elchi.

    Du kannst dein Problem mit nem $Timerflag lösen.

    Nach der Art "WAIT FOR $IN[X] OR $Timerflag[x]"


    Bsp:

    $Timer[8]=-10000 ;timer in ms

    $Timerstop[8]=false


    WAIT FOR $IN[X] OR $Timerflag[8]


    Bsp Ende


    Die Kommandos sind jetzt frei aus em Kopf raus und bin mir ned sicher ob die so zu 100% passen.


    Wenn der Timer 8 von - 10000 auf 0 läuft wird der Timerflag 8 high und deine WAIT FOR Bediengung wäre erfüllt. Danach kannst dann auswerten wie du es brauchst.

    So reagiert er entweder auf $IN oder nach 10 Sekunden auf den Timerflag


    Grüße

  • $TIMER_STOP[8]

    $TIMER_FLAG[8]

    Gruß Roland


    Wie poste ich falsch?

    Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Ich bin wie ich bin. Die Einen kennen mich, die Anderen können mich.

    Konrad Adenauer

  • Das mit dem Timer ist genau richtig, aber das Konzept ist mehr als bescheiden.

    Nur im NIO-Fall ein Signal schicken ist Krampf, wenn schon nur ein Signal, dann doch das IO-Signal, sonst kann man die Prüfung gleich sein lassen.

    Jm2C

  • Nb. es geht auch ohne $TIMER... WAIT FOR nutzt auch Funktion TIMER_LIMIT()


    WAIT FOR $IN[x] OR TIMER_LIMIT(1.5) ; warte auf Eingang bis <Wert> Sekunden

  • Nur im NIO-Fall ein Signal schicken ist Krampf, wenn schon nur ein Signal, dann doch das IO-Signal, sonst kann man die Prüfung gleich sein lassen.

    ... tja, das erklär mal dem "Auftraggeber" ... ich verstehe schon, was er will, einfach weiter machen, so lange die Bilder IO sind. Vielleicht bekomme ich den Spieß ja noch gedreht. Aber aktuell im Testaufbau kommt nur NIO-Signal, wenn eben eines der 3 Bilder, die er schlußendlich pro Teil mal machen soll, schei*e ist, soll ausgeschleust werden.


    Ich werde nach Möglichkeit alle Lösungsvorschläge mal durch spielen. Das WAIT_FOR mit TIMER_LIMIT von panic_mode liest sich gut, so lange es auf KSS 8.3 auch funktioniert. Das NIO-Signal soll, wenn, wohl innerhalb von 0.25 Sec kommen. Ich wäre dann bei 0.75 Sec plus Zeit für's Umorientieren um 120°.

    Ich habe für die gesamte Prozedur geschätzte 5 Sekunden bei IO-Befund, alles darüber wird den Prozess ausbremsen. Bei NIO-Befund, bei dem der Robbi dann noch um 270° in A1 drehen muss, habe ich ja das erklärende Ergebnis für Taktzeiterhöhung auf dem NIO-Band liegen :zwink: ... Es wird alles gut :jawohl:


    Und ich find's gerade richtig interessant, was doch alles so geht :grinser043:

    Mein Name ist Hase. Ich weiß von nix.

    Einmal editiert, zuletzt von elchi2018 () aus folgendem Grund: Nachtrag

  • So, das mal aus den mir verfügbaren Fähigkeiten und euren Infos heraus zusammen gefummelte Modul im Ausschnitt ...



    da ich ohne Wissen der SPS aus dem normalen Ablauf heraus, das camtest() durchlaufe und dann in ein Modul springe, was aktuell nicht in den Ablauf passt, kann ich aktuell nur hoffen, dass es funktioniert. Jedes Modul fragt den aktuellen Greifer ab und hat eine feste Homepos, die aus jeder anderen Homepos crashfrei erreichbar ist. Der letzte Punkt ist die originale Homepos, von der aus die Prüfung beginnt ... ich find's logisch :liebe029:

    Mein Name ist Hase. Ich weiß von nix.

    3 Mal editiert, zuletzt von elchi2018 () aus folgendem Grund: Screenshot entfernt, Code eingefügt

  • Programmcode bitte nicht als Screenshot (leider eine verbreitete Unart) , sondern als richtigen Text, dafür gibt es das Code Tag. Wenn man da einen Vorschlag hat wie es besser geht, dann muss man den Code abtippen. Das ist mir, und wahrscheinlich den meisten anderen auch zu öde.

    Also hier keine weiteren Vorschläge von mir. =O

  • Das ist mir, und wahrscheinlich den meisten anderen auch zu öde.

    Also hier keine weiteren Vorschläge von mir.

    Bereinigt und ersetzt .. und sry, mir war in dem Moment nach ne'm Screenshot .. an das Code_Tag habe ich nicht gedacht. Bei mittlerweile 18 unterschiedlichen Roboter inkl. deren Programmierern, inkl. deren Denkweisen, einem firmeninternen "Programmierer" der mehr Fragen in seine Module kommentiert, als Hinweise zum Ablauf, kann man das Code-Tag im Forum schon mal vergessen. Asche auf mein Haubt ... Ich gelobe Besserung ...

    Mein Name ist Hase. Ich weiß von nix.

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