Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
ich hab ein LV-Programm geschrieben, mit dem ich eine Linearachse an 5 verschiedene Positionen fahren lasse. An der jeweiligen position angekommen aktiviere ich einen Laser-Sensor und lasse mir die gemessene Spannung in einem Diagramm anzeigen. Ich gebe dafür die binäre Soll-Position an den Achscontroller, setzte ein Startbit und setze es danach wieder zurück. Dann lese ich die binäre Ist-Position vom Controller ein und vergleiche, ob sie mit der Soll-Position übereinstimmt. Wenn nicht, warte ich bis die Sollposition erreicht ist. Wenn ja, aktiviere ich den Sensor und lese den Spannungswert ein. Das ganze mache ich 5 mal. Ich nutze ein "internes Bit", damit die Achsen nicht bei jedem Schleifendurchlauf angesteuert werden sondern nur wenn die Achse auch wieder bereit ist.
Nun mein Problem:
Das ganze funktioniert nur, wenn ich die Verzögerungszeit in der ich den Startimpuls setze min. 300ms lang ist. Und ich muss ebenfalls eine Wartezeit von min. 300ms beim Ausschalten des Startbits einbauen. Mache ich die Zeiten geringer fährt die Achse nur zur ersten Position. Danach wird das "interne Bit" zurückgesetzt und das Programm springt nicht mehr in den Case um die nächste Position zum Controller zu senden. Kann mir das Phänomen nicht erklären. Für die digitalen Ausgänge nutze ich ein NI-USB6501. Für die digitalen und analogen Eingänge ein NI-USB6009.