Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 22

Thema: Findet den Fehler:) IF THEN ELSE

  1. #1
    Registriert seit
    21.05.2015
    Beiträge
    11
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich habe ein kleines Programm geschrieben,habe allerdings einen Fehler gemacht, hoffe ihr könnt mir helfen.

    Programmablauf

    Ein Förderband transportiert Teile welche auf io bzw nio geprüft werden sollen.
    An Punkt A werden die Teile von einer Kamera erfasst,daraufhin wird ein io oder nio Signal ausgegeben.
    An Punkt B werden die io Teile per Druckluft vom Band geblasen.Zwischen Punkt A und B passt genau kein Teil mehr,das heisst wenn an Punkt B gepustet wird, wird gleichzeitig an Punkt A von der Kamera geprüft.Punkt A und B werden durch Sensoren b2 und b3 erkannt.

    Problemstellung

    Hab ein Programm in ST mit if-Anweisungen geschrieben.Funktioniert bis zu dem Punkt an dem TOF meinen letzten Merker m3 auflösen soll.Es werden derzeit leider io als auch nio Teile weggepustet weil m3 auch aktiviert wird wenn nio=0 ist,was aber nicht sein darf.Wenn ich aber den Timer aus dem Programm entferne funktioniert das Programm, nur das halt m3 nicht aufgelöst wird. Bitte um Fehlersuche und Berichtigung oder um einen anderen Weg um m3 aufzulösen.Hoffe Ihr helft mir....Bitte geht bei euren Antworten davon aus, dass ich höchsten Grundwissen habe.Vielen Dank im Vorraus

    s1=Start-Schalter
    motor=Bandmotor
    trigger=löst Kamera aus

    IF s1=1 THEN motor:=1;m1:=1;
    ELSE motor:=0;m1:=0;
    END_IF

    IF b2=1 THEN trigger:=1;
    ELSE trigger:=0;
    END_IF
    IF io=1 AND nio=0 THEN m2:=1;
    END_IF
    IF io=0 AND nio=1 THEN m2:=0;
    END_IF
    IF m2=1 THEN m3:=1;
    END_IF
    IF m3=1 THEN m2:=0;
    END_IF
    IF b3=1 AND m3=1 THEN v1:=1;
    ELSE v1:=0;
    END_IF
    TOFInst(IN := b3, PT:= T#50s);

    m3 :=TOFInst.Q;
    Zitieren Zitieren Findet den Fehler:) IF THEN ELSE  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.403 Danke für 2.002 Beiträge

    Standard

    Du mußt dir am Punkt Kamera dein Ergebnis merken bis das Teil am Punkt Pusten ankommt.
    Dann kannst du blasen.
    Dafür brauchst du erstmal keinen Timer (außer vielleicht für die Länge des Blasimpulses) sondern eher ein einfaches FIFO oder Schieberegister.

    Gruß
    Larry

  3. #3
    Registriert seit
    26.11.2012
    Ort
    Gummersbach
    Beiträge
    502
    Danke
    18
    Erhielt 71 Danke für 69 Beiträge

    Standard

    Hallo,

    ich gebe zu, in ST bin ich (noch) nicht so arg firm, aber ich sehe das Problem, das Du den Merker M2 hier

    Code:
    IF io=1 AND nio=0 THEN m2:=1;
    auf True setzt,
    aber später im Programm wieder False setzt
    Code:
    IF m3=1 THEN m2:=0;
    Die Eigenart einer SPS ist ja, das eben nicht so Zeilenweise abgearbeitet wird wie in anderen Programmiersprachen, somit wird immer das letzte VKE wirksam. Da M3 50 Sekunden lang True ist wird M2 erst wieder auf IO/NIO nach Ablauf dieser Zeit reagieren können. Probier mal, wenn Du die Zeit drastisch verkürzt und dann der SPS "zuschaust" was die einzelnen Variablen machen...

    Ich hoffe Dein Problem damit erschlagen zu haben.

    Gruß

    Christian
    Ganz kurz ganz hell
    ganz lange ganz dunkel....

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.403 Danke für 2.002 Beiträge

    Standard

    @Christian:
    Mit ST oder SCL verhält es sich grundsätzlich nicht anders als mit AWL oder KOP oder FUP.
    Da könntest du ja auch schreiben : "U E0.0 S M0.0" und viele Zeilen tiefer : "U E0.3 R M0.0"
    Der Merker wird auf jeden Fall so arbeiten, wie programmiert und selbst wenn E0.0 UND E0.3 beide True sind wird der M0.0 zwischen den Anweisungen auch True sein ...
    Somit wird das (aus meiner Sicht) auch nicht das Problem des Programm-Schnipsels lösen ... (die Kamera kann für das Teil "Jetzt" ein ganz anderes Ergebnis haben wie bei dem Teil "Vorher")

  5. #5
    Registriert seit
    17.09.2014
    Ort
    BW
    Beiträge
    217
    Danke
    18
    Erhielt 28 Danke für 26 Beiträge

    Standard

    Hallo.

    Also ich denke die Hauptfrage ist wohl was macht b3 den innerhalb der 50s.
    Es ist js ein TOF also Ausschalt Verzögerung, sprich der b3 muss mehr als 50s 0 sein bevor sich der Status von Q ändert.
    Also bleib m3 noch 50s auf 1 wenn b3 konstant auf 0 hat. Wenn zwischenzeitlich b3 wieder 1 führt fängt es von vorne an.
    Ich erkläre es deshalb, da ich auch schon erfahrene Anwender gesehen habe die sich mit TON/TOF schwer getan haben.
    Also müsste man erst mal raus finden was b3 während der 50s macht.

    Ansonsten springt mir grad kein Fehler ins Auge.

  6. #6
    spsbenutzer1 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    21.05.2015
    Beiträge
    11
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    @Christian
    Es stimmt, dass ich erst das nächste Teil auswerten kann wenn m3 wieder false ist,also nach Ablauf der Zeit welche schon auf 50ms gestellt war.Das oben 50s steht ist ein Fehler.Das komische an der Sache ist,dass wenn ich den Timer entferne, Teile als nio erkannt werden und auch nicht ausgeblasen werden.Dann bleibt halt nur m3 true weil der Timer entfernt wurde und m3 somit nicht zurückgesetzt wird.Bei hinzugefügtem Timer werden nio Teile auch abgeblasen.Ich kann auf den Timer verzichten dann muss aber m3 anders aufgelöst werden,weiss aber net wie

  7. #7
    spsbenutzer1 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    21.05.2015
    Beiträge
    11
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Das oben 50s ist ein Fehler von mir,es sind eigentlich 50ms.Es ist richtig das die Steuerung erst für das nächste Teil bereit ist wenn m3 wieder false ist.Das komische ist nur wenn m3 durch den Timer aufgelöst wird dann lösen Teile die nio geprüft trotzdem m2 und somit auch m3 aus,was ja aber nicht sein darf.wenn ich den Timer rausnehme da werden teile zwar korrekt erkannt aber man kann halt nur ein teil durchlaufen lassen weil m3 ja nicht aufgelöst wird.hat jemand ne andere Idde um am Ende m3 aufzulösen?

  8. #8
    spsbenutzer1 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    21.05.2015
    Beiträge
    11
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    könnte es damit zu tun haben,dass die Eingansvariable für TOF,welche bei mir ja b3 ist,bei einer TOF ja eigentlich false sein muss um den TOF korrekt auszulösen.in der Beschreibung steht Q also der Ausgang der TOF ,bei mir m3, wird false wenn der Eingang also IN,bei mir b3,false ist. Bei mir ist ja aber b3 true
    Geändert von spsbenutzer1 (03.06.2015 um 13:39 Uhr)

  9. #9
    Registriert seit
    17.09.2014
    Ort
    BW
    Beiträge
    217
    Danke
    18
    Erhielt 28 Danke für 26 Beiträge

    Standard

    Ok 50ms das ist mal ne andere Zahl.

    Aber grad seh ich etwas das seltsam ist.
    Du schreibst IF m2=1 then m3=1
    Und drunter IF m3=1 then m2=0
    Das ist schon seltsam.
    Und vor allem bekommst Du dann zusammen mit TOF eine doppelte Zuweisung von m=3.
    Das sollte nicht sein.

  10. #10
    Registriert seit
    17.09.2014
    Ort
    BW
    Beiträge
    217
    Danke
    18
    Erhielt 28 Danke für 26 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ja zu dem kann das auch ein Problem sein, den TOF.Q geht wie gesagt erst auf 0 wenn b3 schon 50ms 0 ist.

Ähnliche Themen

  1. Step 7 Finde den Fehler ?!?!?!?
    Von Hangasilly im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 19.08.2014, 07:24
  2. Wer kennt den Fehler?
    Von bonatus im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 06.06.2009, 10:45
  3. Fehler in den internen Datenstrukturen
    Von seeba im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 24.03.2007, 15:12
  4. Fehler in den internen Datenstrukturen...
    Von charlie im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 05.07.2006, 20:23
  5. Antworten: 0
    Letzter Beitrag: 04.10.2005, 20:53

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •