...
Mit deinem Programm ...
Zuviel der Ehre, steht ja fast so in der MicroWin-Hilfe
Noch mal zur Erklärung:
Du richtest den PTO mit einer Impulsfolge ein. Das war bei Dir die Festlegung der
Impuls-Zykluszeit und
ein Impuls.
Diese Impulsfolge wird mit jedem Aufruf von PLS gestartet.
Das war bei Dir einmal pro
Programm-Zyklus. Der
Programm-Zyklus hat aber eine bestimmte Dauer.
Da er ja am Anfang und Ende auch noch die Prozessabbilder machen muss, kamst Du nicht unter eine
Programm-Zykluszeit von 500µs.
Programm-Zykluszeit=500µs * 1 Impuls machten bei Dir max. 5U/s.
Auch wenn Du die
Impuls-Zykluszeit auf 250µs festgelegt hast, wurde ja PLS trotzdem nur einmal pro
Programm-Zyklus aufgerufen. Du hattest zwar einen Impuls der nur 125µs dauerte aber eben nur alle 500µs den nächsten Impuls, also 2 je ms und nicht 4.
Wenn Du jetzt den Impulszähler auf 2 festlegst, dann gibt PLS 2 Impulse pro PLS-Aufruf/Programm-Zyklus aus. Das heißt, wenn die Impuls-Zykluszeit 250µs beträgt und PLS alle 500µs aufgerufen wird, dann hast Du auch wirklich alle 250µs einen neuen Impuls, also die gewünschten 4 je ms.
Bis jetzt hattest Du aber nur 3 Befehle in Deinem Programm. Wenn das Programm umfangreicher wird, erhöht sich natürlich auch die Zykluszeit.
Dann werden die 2 Impulse mit der Impuls-Zykluszeit von 250µs vlt. nur noch alle 5ms erzeugt. Also die ersten 0,5ms 2 Impulse, dann 4,5ms warten auf den nächsten Aufruf. Das entspräche einer effektiven Impuls-Zykluszeit von 2,5ms.
Deshalb benutzt man den Interrupt. Wenn der PTO die 2 Impuls-Zyklen ausgegeben hat, gibt's eine Rückmeldung, die den Interrupt 19 startet. Das Hauptprogramm wird unterbrochen, der PTO wird im Interrupt neu gestartet und das Hauptprogramm wird wieder an der Stelle fortgesetzt, wo unterbrochen wurde. So startest Du trotz längerem Hauptprogramm trotzdem alle 500µs 2 neue Impulse ('n paar µs Bearbeitungszeit für den Interupt kommen allerdings noch hinzu).
Diese Unterbrechung ist rein theoretisch nach jedem AWL-Befehl möglich.
Die Ausführungsdauer dieser Befehle schwankt allerdings stark zwischen einfachen Verknüpfungen mit 0,22µs und komplizierten Rechenoperation mit bis zu 1000µs oder sogar darüber. Dort sind also die Grenzen in der Impuls-Zykluszeit.
Deshalb ist es von Vorteil den PTO auch im Interrupt mit mehr als nur einem Impuls zu laden. Somit hat man trotz geringer Impuls-Zykluszeit mehr Zeit bis zum nächsten PLS-Aufruf und der damit verbundenen Unterbrechung des Hauptprogrammes. Denn je häufiger das Hauptprogramm unterbrochen wird, um so größer ist natürlich auch dessen Zykluszeit. Außerdem werden so eventuelle Wartezeiten des Interrupts auf die Beendigung eines Befehls minimiert.
Der Nachteil ist natürlich, das dann in obigen Programm mit jedem PLS-Aufruf auch immer 4 Impulse ausgegeben werden. Wenn Du also wieder langsamer wirst, solltest Du nicht nur die Impuls-Zykluszeit erhöhen, sondern auch die Anzahl der ausgegebenen Impulse wieder verringern, um den Motor wieder genauer steuern zu können.
PS: Ich hoffe, ich konnte es einigermaßen verständlich rüberbringen, bin ja kein Lehrer.