Lang anliegender Eingang nur einmal Variable hochzählen

  • Hallo zusammen,


    ich möchte gerne bei einer Teilezuführung die Teile vom Roboter vorübergehend ohne großen Aufwand mitzählen lassen.
    Die Teile werden über einen Sensor abgelegt und bei Bedarf weiter gefördert. Oft bleibt der Sensor ca. 15 sec belegt.
    Ich habe dies so realisieren wollen:


    im SPS Programm:


    ;+++++++++++++++


    if $in[42]==true then
    stueck=stueck+1
    endif


    ;+++++++++++++++


    Die Variable "Stueck" hätte ich dann bei Bedarf ausgelesen.


    Nun mein Problem:


    Die Variable wird solange der Sensor geschaltet hat hochgezählt. Ich möchte aber immer nur zählen wenn das Signal aus war und neu anliegt.


    Wie kann ich dies machen?


    Vielen Dank für euere Hilfe.


    mfg Roba

  • Schritt für Schritt zum Roboterprofi!
  • Hallo Roba,



    Einfach mit einem Flag. Da speichert man den letzten Zustand von $in[42] und kann so erkennen, wenn der Eingang "true" wird.

    Code
    BOOL m_in42
    m_in42=FALSE
    
    
    if ($in[42] and (not m_in42)) then
     stueck=stueck+1
    endif
    m_in42=$in[42]


    Schöne Grüße,
    Tilman/Frankreich


    PS: Programm nicht ausprobiert, sollte aber klappen.


    [edit]Sehe ich gerade noch. Besser ist noch, m_in42 mit TRUE zu initialisieren. So wird nicht beim ersten Durchlauf gezählt.[/edit]
    [edit 25/02/2011]Dieser Kode könnte ein Problem haben :uglyhammer_2: und wird nicht zur Nachahmung empfohlen! Korrigierte Version weiter unten. [/edit]

    Einmal editiert, zuletzt von Tilman ()

  • Hi Roba,
    so könnte man das machen.


    ;+++++++++++++++


    if ($in[42]==true) AND (bFlagStueck==FALSE) then
    stueck=stueck+1
    bFlagStueck=TRUE
    endif


    if ($in[42]==FALSE) AND (bFlagStueck==TRUE) then
    bFlagStueck=FALSE
    endif


    ;+++++++++++++++


    Die Variable bFlagStueck von Typ Bool musst du irgendwo erzeugen. Zum Beispiel in der Config.dat oder in der Sub.sps.
    Gruß Paulaner

    Für seine Arbeit muß man Zustimmung suchen, aber niemals Beifall.<br />Zitat: Charles-Louis Baron de Montesquieu

  • Hallo Paulaner,


    Das macht genau dasselbe, wie meine Lösung. Nur komplizierter halt :P


    Tilman

  • Ich möchte mal kurz eine Frage in den Raum werfen und ich meine es wirklich nicht böse.
    Welcher Chef setzt jemanden an einen Roboter ohne Ihm die grundlegendsten Dinge der Programmierung(Logik)
    angedeihen zu lassen. So etwas finde ich persönlich grob fahrlässig.


    :nocheck:



    Ich wiederhole mich: NICHTS BÖSES GEGEN DEN THEMENSTARTER :blumen:

  • Zitat


    So etwas finde ich persönlich grob fahrlässig.


    Manchmal steht man sich auch nur einfach auf dem Schlauch. Stethi hatte zum Beispiel noch einen zweiten Fehler in seinem Programm... habe nichts gesagt... bin auch überzeugt davon, daß er weit aus kompetenter ist als ich.


    Also, soma, vielleicht doch etwas hart, Deine Kritik, oder?



  • Hallo Soma,


    wir haben bei uns im Werk 15 Kuka Roboter, einige haben wir bereits mit den Fertigungsanlagen bezogen und diese waren auch schon für unseren Anwendungsfall programmiert. Andere entgegen haben wir direkt bei Kuka bezogen und diese auch selbst integriert.


    Bis jetzt bin ich noch immer und zuletzt auch oft mit der Hilfe dieses Forums sehr gut zurecht gekommen. Da ich weder Programmier studiert oder gelernt habe, bin ich der Meinung, dass ich alles recht gut hin bekommen habe.


    Ich sehe dieses Forum als eine für mich sehr gute Einrichtung an, noch nie konnte mir nicht geholfen werden.
    Ich kann mir nicht vorstellen, dass der Initiator dieses Forums wünscht, dass sich nur die Besten Roboterprogrammieren untereinander unterhalten sollen.


    Falls Dich meine Anfrage nicht erfüllt, oder schlicht einfach zu nieder für Dich ist, so brauchst Du mir doch auch nicht zu helfen. Allerdings kannst Du dir solche Kommentare auch sparen.


    Ach ja und ich meine es auch nicht böse!


    Naja egal.


    Schlussendlich möchte ich mich bei allen denen bedanken, die mir immer weiterhelfen und auch bereits geholfen haben.


    Vielen Dank

  • Hallo Roba sofern Du meine Zeilen als zu barsch findest und Dich persönlich kritisiert fühlst, so Entschuldige bitte.
    Ich kann nicht ermessen wie gut oder schlecht Du deine Arbeit machst bzw mich darüber auslassen. In diese Richtung zielte meine Aussage/Frage nicht.
    Es kommt mir in letzter Zeit oft vor, dass Chefs ihre Angestellten an Anlagen und Maschinen lassen/schleifen und von Ihnen komplizierteste Dinge fordern ohne Ihnen auch nur ansatzweise Grundlagen durch Schulungen und Fortbildungen zu bieten. Diese Art und Weise stößt mir übel auf, weil zum einen viel Zeit vergeht um das volle Potential der Mitarbeiter zu erhalten und weil es, wie Ich finde, auch gefährlich sein kann.


    Ich fühlte mich durch dein Thema daran errinnert, deshalb mein (vielleicht vorschneller )Beitrag.


  • Hallo Roba sofern Du meine Zeilen als zu barsch findest und Dich persönlich kritisiert fühlst, so Entschuldige bitte.
    Ich kann nicht ermessen wie gut oder schlecht Du deine Arbeit machst bzw mich darüber auslassen. In diese Richtung zielte meine Aussage/Frage nicht.
    Es kommt mir in letzter Zeit oft vor, dass Chefs ihre Angestellten an Anlagen und Maschinen lassen/schleifen und von Ihnen komplizierteste Dinge fordern ohne Ihnen auch nur ansatzweise Grundlagen durch Schulungen und Fortbildungen zu bieten. Diese Art und Weise stößt mir übel auf, weil zum einen viel Zeit vergeht um das volle Potential der Mitarbeiter zu erhalten und weil es, wie Ich finde, auch gefährlich sein kann.


    Ich fühlte mich durch dein Thema daran errinnert, deshalb mein (vielleicht vorschneller )Beitrag.


    Hallo Soma,


    vielen Dank für Deine Antwort. Ich fühle mich nicht persönilich kritisiert, lassen wirs einfach gut sein. Schlussendlich wurde mir geholfen und das wars was ich erreichen wollte.


    mfg Roba

  • Das soll jetzt nicht oberschlau klingen, aber die von den
    drei oben genannten Zählversionen funktioniert nur
    die von Paulaner zuverlässig.
    Das Prolbem ist dass keiner (ausser KUKA) weiß zu welchem Zeitpunkt ein
    Eingang von TRUE/FALSE wechselt im Roboterprogramm.


    Eventuell könnte sogar folgende Zeile zu einen "wahren" Zustand führen
    wenn genau in der Abfrage sich der Zustand von $IN[42] ändert


    IF ($IN[42]==FALSE) AND ($IN[42]==TRUE) THEN
    ;unglaublich aber wahr
    ENDIF



    Stehti-Problem:
    Hier wird nur die Stückzahl hoch gezählt wenn genau in den
    Milli oder Microsekunden wo die Zeile ";xxx" steht ein Flankenwechsel
    von FALSE auf TRUE erfolgt. Sprich eher sehr sehr selten
    =================================================
    Flankenmerker=$IN[42]
    ;xxx
    IF $IN[42] AND NOT Flankenmerker Then
    Stueck=Stueck+1
    ENDIF
    =================================================


    Tilman-Problem:
    Wenn an der Stelle an der die Zeile ";xxx" ist ein Flankenwechsel
    von FALSE auf TRUE erfolgt wird der Stückzähler nicht hoch gezählt.
    Das ist vermutlich selten der Fall, aber halt auch möglich.
    =================================================
    if ($in[42] and (not m_in42)) then
    stueck=stueck+1
    endif
    ;xxx
    m_in42=$in[42]
    =================================================



    Nun bin ich mal auf die Kommentare gespannt....

    Kleinere Wunder werden sofort erledigt... größere nach der Mittagspause...


  • Hallo Twister,


    ich habe die Variante von Paulaner gewählt und diese hat bis jetzt keine Abweichung im Prozess ergeben. Die Mengen werden am Ende der Anlage noch mal gezählt. Zieht man den Ausschuss der Anlage ab, so ergeben sich keine Abweichungen.


    mfg Roba

  • Hallo Roba,


    gut.
    Und wenn du doch mal ein paar Teile mehr auf dem Zähler
    als auf dem Band hast, dann solltest vielleicht den $IN[42] noch
    entprellen.
    Es könnte sein dass je nach Sensor und Teil und Robotergeschwindigkeit
    der Ausgang den Sensors ein paar mal schnell wechselt bis er den
    endgültigen Zustand hat. Und jedes mal würde der Stückzähler hoch schalten.
    Fährst du z.b. langsam auf den Sensor und der Roboter "wackelt" sich auf
    der Position ein, so würdest du für jedes "flackern" des Sensors die
    Stückzahl erhöhen.


    Nur so als Tip und Hilfe falls es doch mal vor kommt.


    Gruß
    Twister

    Kleinere Wunder werden sofort erledigt... größere nach der Mittagspause...

  • Zitat


    Nun bin ich mal auf die Kommentare gespannt....


    Kommentar: sehr gut!!!


    Das Problem ist nicht Kuka, sondern daß ich nicht genügend nachgedacht habe. Und ich bin implizit davon ausgegangen, daß die Variabeln, wie bei einem Automaten, einmal pro Zyklus gelesen werden.


    Twister, hast Du dieses Phänomen bereits beim SUBMIT Interpreter beobachtet, oder ist es eine Vermutung von Dir?


    Mit freundlichen Grüßen,
    Tilman/Frankreich

  • Hm...


    Ganz einfach.


    So lange der Befehl:


    WAIT FOR $IN[42]==TRUE


    funktioniert gehe ich davon aus dass ein paralleler Prozess die
    Eingangsvariablen verändert.


    Hinzu kommt dass ich sehr intensiv und zeitkritisch mit SPS-sen
    kommuniziere und somit schon öfters vor solchen Datenkonsitenzproblemen
    gestanden bin.
    Eine Siemens S7-SPS hat solche Probleme nicht, da hier ja am Zyklusanfang
    ein Prozesseingangs-Abbild gezogen wird. Hier würde die obige Befehlszeile
    aber auch nicht funktionieren.


    Ebenso hat mich ein anderes Phänomen mit gleicher Ursache schon veräppelt:
    Ich wollte die Aktuelle Istposition $POS_ACT an einen Ausgang
    schreiben..
    z.b.


    IF (VARSTATE("$POS_ACT")==#INITIALIZED) THEN
    SIGNAL_ISTPOSITION = $POS_ACT.X ;xxx
    ENDIF


    Und hin und wieder hatte ich den Fehler dass es keine gültige $POS_ACT mehr gab
    weil ein Benutzer hin und wieder die Betriebsart wechselt und somit kein
    Koordinatensystem angewählt war. Also nur einen SUBMIT-Befehl später.
    Das hat mich schon ein paar graue Haare gekostet.
    Seither gehe ich auf Nummer sicher und schreib mir immer mein eigenes
    Prozesseingangsabbild bei solchen Sachen die mich veräppeln können.


    Das ganze tritt sehr selten auf, jedoch kann dies erklären wieso Anlagen
    welche ein halbes Jahr lang laufen dann doch plötzlich was machen was
    sie nicht sollen und keiner weiß warum und kein Fehler wird gefunden.


    Gruß
    Twister

    Kleinere Wunder werden sofort erledigt... größere nach der Mittagspause...

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