gttoxiclt2
07.03.2008, 09:44
Hallo,
noch eine Frage:
Ich lerne immer mehr über einzelne Befehle und dessen Sinn. Allerdings komm ich meistens nicht allein drauf, sondern mit Hilfe des Forums hier O:)
Nun ne Frage. Mein Programm wird langsam aber stetig größer. Nun frage ich mich, ob ich gewisse Sachen besser anders schreiben sollte.
Wie im nachfolgenden Auszug ersichtlich.
Die Frage dazu erfolgt weiter unten
Do
If Pind.2 = 1 And Pind.7 = 0 Then 'Monitor hinten & Relais1 eingeschalten
Stepper_richtung = 0 'Schlitten fährt nach vorn
Stepper_enable = 1 'Motor einschalten
Config Timer0 = Timer , Prescale = 64
Timervorgabe = 89
End If
If Pind.6 = 1 And Pind.7 = 0 Then 'Monitor ist in Mitte & Relais1 eingeschalten
Waitms 650 'solange warten, bis an richtigem Schwenkpunkt angekommen
Stepper_enable = 0 'jetzt Motor ausschalten
End If
...
Ist der Schlitten an der richtigen Endlage (pind.2 = 1) und ein Relais wird eingeschalten, dann soll der Motor los drehen und den Schlitten solange bewegen, bis der nächste Endpunkt erreicht ist (pind.6 = 1).
Dann noch paar Sek. warten und dann abschalten.
Mir macht mein Programm etwas Sorge, da der Motor von einem If-then auf die Reise geschickt wird und von einem anderen wieder gestoppt.
Was passiert, wenn etwa pind.6 nicht auslöst, aufgrund Hardware Probleme? Dann fährt der Schlitten bis ins Nirvana, bzw. seinen sicheren Tod.
Ich möchte gerne, dass intern in einem einzelnen If-THEN, WHILE-WEND oder DO-LOOP geklärt wird, dass bei der Bedingung (d.2 high und d.7 low) der Schlitten losfährt und nur solange fährt, bis d.6 high wird. Mit meinem "Programm" hab ich ebenfalls Sorge, dass das Programm irgendwann den richtigen If then übersieht und den Motor nicht stoppt, da ja noch viel mehr solche ähnlichen Situationen dazu kommen.
Ebenfalls hab ich eine Frage zur Sicherheit. Ich hab gehört, dass man parallel zu einem Prozess intern einen Zähler aktivieren kann, der hochzählt, z.B. Sek.
Sowas wäre mir in oben genannten Programm gerade recht. Wenn ich mit Stoppuhr messe, wie lange der Schlitten im Idealfall braucht um von d.2 zu d.6 zu gelangen. Erreicht der Schlitten nicht in der angegebenen Zeit d.6, dann sollte das Programm stoppen, so wie es steht.
Wie würde dafür der korrekte Code aussehen?
Ich kann mir schwer vorstellen, wie mehrere Prozesse parallel laufen sollen, wo doch das Programm von oben nach unten abgearbeitet wird...?!
Vielen Dank für ne Hilfestellung!
noch eine Frage:
Ich lerne immer mehr über einzelne Befehle und dessen Sinn. Allerdings komm ich meistens nicht allein drauf, sondern mit Hilfe des Forums hier O:)
Nun ne Frage. Mein Programm wird langsam aber stetig größer. Nun frage ich mich, ob ich gewisse Sachen besser anders schreiben sollte.
Wie im nachfolgenden Auszug ersichtlich.
Die Frage dazu erfolgt weiter unten
Do
If Pind.2 = 1 And Pind.7 = 0 Then 'Monitor hinten & Relais1 eingeschalten
Stepper_richtung = 0 'Schlitten fährt nach vorn
Stepper_enable = 1 'Motor einschalten
Config Timer0 = Timer , Prescale = 64
Timervorgabe = 89
End If
If Pind.6 = 1 And Pind.7 = 0 Then 'Monitor ist in Mitte & Relais1 eingeschalten
Waitms 650 'solange warten, bis an richtigem Schwenkpunkt angekommen
Stepper_enable = 0 'jetzt Motor ausschalten
End If
...
Ist der Schlitten an der richtigen Endlage (pind.2 = 1) und ein Relais wird eingeschalten, dann soll der Motor los drehen und den Schlitten solange bewegen, bis der nächste Endpunkt erreicht ist (pind.6 = 1).
Dann noch paar Sek. warten und dann abschalten.
Mir macht mein Programm etwas Sorge, da der Motor von einem If-then auf die Reise geschickt wird und von einem anderen wieder gestoppt.
Was passiert, wenn etwa pind.6 nicht auslöst, aufgrund Hardware Probleme? Dann fährt der Schlitten bis ins Nirvana, bzw. seinen sicheren Tod.
Ich möchte gerne, dass intern in einem einzelnen If-THEN, WHILE-WEND oder DO-LOOP geklärt wird, dass bei der Bedingung (d.2 high und d.7 low) der Schlitten losfährt und nur solange fährt, bis d.6 high wird. Mit meinem "Programm" hab ich ebenfalls Sorge, dass das Programm irgendwann den richtigen If then übersieht und den Motor nicht stoppt, da ja noch viel mehr solche ähnlichen Situationen dazu kommen.
Ebenfalls hab ich eine Frage zur Sicherheit. Ich hab gehört, dass man parallel zu einem Prozess intern einen Zähler aktivieren kann, der hochzählt, z.B. Sek.
Sowas wäre mir in oben genannten Programm gerade recht. Wenn ich mit Stoppuhr messe, wie lange der Schlitten im Idealfall braucht um von d.2 zu d.6 zu gelangen. Erreicht der Schlitten nicht in der angegebenen Zeit d.6, dann sollte das Programm stoppen, so wie es steht.
Wie würde dafür der korrekte Code aussehen?
Ich kann mir schwer vorstellen, wie mehrere Prozesse parallel laufen sollen, wo doch das Programm von oben nach unten abgearbeitet wird...?!
Vielen Dank für ne Hilfestellung!