Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: ich schnall das mit dem Neuwert = TIMER + Wartezeit nicht so Kategorie: Programmierung Basic (von Achim - 27.08.2005 20:46)
 Als Antwort auf ich schnall das mit dem Neuwert = TIMER + Wartezeit nicht so von hecktor - 27.08.2005 19:39
Achim nutzt:  CC1-Station V1.1
>
> garnicht richtig angefangen und geht schon nicht  ,

Lässt es sich denn kompilieren, oder bekommst Du da bereits eine Fehlermeldung. Ich vermisse nämlich die Deklaration der Variable Schritt.

> was mach ich falsch?

so einiges in dem Programm macht nicht so recht Sinn.

> #loop
> wait schalter2
> if schalter2 = OFF THEN goto schritt1
>
> #schritt1

Das if ist aus zwei Gründen überflüssig.
1. Wegen der if-Bedingung. Du prüfst ab, ob schalter2 aus ist. Unmittelbar davor wartest Du aber, das Schalter 2 an geht. D. h. Er müsste nur einen Bruchteil einer Millisekunde an sein, damit das if zuschlagen kann.
2. Wegen der Aktion. Falls die if-Bedingung doch mal true wird: Du springst zu #schritt1. Das ist aber sowieso der nächste Befehl, auch wenn die if-Bedingung nicht true wird.

Jetzt zum Programmablauf: Du wartest mit obigem wait also, bis Schalter 2 an ist, dann geht es hier weiter

> ventled5 = OFF : Wartezeit  = 1500 ' x 20 msec  = 30 Sekunden'
> Goto TimerNeuwert

Sprung zu Label TimerNeuwert. Schauen wir mal, wie es da weitergeht.

> #TimerNeuwert                         hier weiss ich nicht so recht weiter, hilfe
>
> Neuwert = TIMER + Wartezeit
> 'Neuwert = 32767 + 32767 '= 65534 das sind – 2)Zulässig ist maximal: Wartezeit = 32767 'x 20 msec  = 10,92.. Minuten
>  
> #Schritt
> if (Schritt = 1) then goto Schritt1
> if (Schritt = 2) then goto Schritt2
> if (Schritt = 3) then goto Schritt3
> if (Schritt = 4) then goto Schritt4
> if (Schritt = 5) then goto Schritt5
> if (Schritt = 6) then goto Schritt6
> if (Schritt = 7) then goto Schritt7
> if (Schritt = 8) then goto Schritt8  
> #Schrittweiter '
> if (Schritt = 1) then goto Schritt2  
> if (Schritt = 2) then goto Schritt3
> if (Schritt = 3) then goto Schritt4
> if (Schritt = 4) then goto Schritt5
> if (Schritt = 5) then goto Schritt6
> if (Schritt = 6) then goto Schritt7
> if (Schritt = 7) then goto Schritt8
>    
> #Ende '

Da die Variable Schritt bisher nicht gesetzt wurde, trifft kein if zu und das Programm ist zu Ende. Das war wahrscheinlich nicht, was Du Dir vorgestellt hast. Hast Du das Programm selbst gebaut? Was hast Du Dir denn dabei gedacht? Oder ist das Manfreds Programm aufgemischt. Na dann soll der Dir mal erklären, wie sein Programm funktioniert.

Noch eine Anmerkung:

> #schritt2
> pumpled6 = OFF : wiled1 = ON : schrled3=ON : Wartezeit = 1500 ' x 20 msec  = 30 Sekunden'
> Goto TimerNeuwert
> if TIMER = > 0 then goto Schrittweiter

Das if und auch alle folgenden hinter einem goto sind überflüssig, weil es wegen des Gotos nie ausgeführt werden wird. Bevor das if erreicht wird, verzweigt der Programmfluss schon zu TimerNeuwert. Da vor dem if kein Label steht, kann auch nicht von anderer Stelle dorthin verzweigt werden.

Bye
 Achim


 Antwort schreiben

Bisherige Antworten: