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: Vergleich/Gleichsetzung von Variablen Kategorie: Programmierung Basic (von Butcher - 29.12.2005 18:12)
 Als Antwort auf Re: Vergleich/Gleichsetzung von Variablen von Butcher - 29.12.2005 17:49
Butcher nutzt:  CC1-Station V1.1
> > > so Dank deiner Hilfe hab ich jetzt den Toleranzbereich erhöht, (mein Poti soll entweder K1 oder K2 schalten) nur jetzt "spackt" meine Station genau in diesem Toleranzbereich ab (wechselndes Anschalten von K1 und K2, also genau das was es nicht soll, beide solln ja aus gehen)
> > > Irgendwie muss da meine Ablaufstruktur falsch sein, haste da ne Idee ob ich das besser mit Unterprogrammen oder was anderen machen kann?
> >
> > Du hast sehr viele überflüssige ifs drin, die die Sache unübersichtlich machen. Nehmen wir mal ein Beispiel:
> >
> > > sollz = winkelangabe*85
> > > sollx = sollz + 400
> > >
> > > if sollz > PotiWert*100 THEN K2 = off
> > > if sollx > PotiWert*100 THEN K2 = off
> >
> >
> > Wenn sollz mal größer als PotiWert*100 ist, dann ist sollx aber immer auch größer als PotiWert*100, weil sollx ja noch größer als sollz ist. Wenn das sollz-if also erfüllt ist und der THEN-Teil ausgeführt wird, wird immer auch das sollx-Then ausgeführt. (umgekehrt gilt das natürlich nicht: Bloss weil sollx größer als PotiWert*100 ist, muss sollz noch lange nicht größer sein).
> >
> > Da in beiden THEN-Teilen das gleiche geschieht, ist das sollz-if überflüssig. Daraus folgt, dass Du das "if sollz" ersatzlos streichen kannst, ohne dass sich Dein Programm irgendwie anders verhält.
> >
> > Wenn man jetzt mal alle derartig überflüssige ifs streicht (und ich mich nicht vertue) kommt folgendes dabei heraus:
> >
> >
> > solla = winkelangabe*85         'Berechnung der Toleranz
> > sollb = solla -200
> > sollc = solla -400
> >
> > sollz = winkelangabe*85
> > solly = sollz + 200
> > sollx = sollz + 400
> >
> > if sollx > PotiWert*100 THEN K2 = off
> > if sollx > PotiWert*100 then K1 = on
> >
> > if sollc < PotiWert*100 then K1 = off
> > if sollc < PotiWert*100 then K2 = on
> >
> >
> > So. Jetzt hast Du aber noch Statements drin wie:
> >
> >
> > if sollc = PotiWert*100 then K2 = off  'Annäherung von unten
> > if sollb = PotiWert*100 then K2 = off
> > if solla = PotiWert*100 then K2 = off
> > if sollc = PotiWert*100 then K1 = off  'Annäherung von unten
> > if sollb = PotiWert*100 then K1 = off
> > if solla = PotiWert*100 then K1 = off
> >
> >
> > Du hast leider nicht im Code drin, wie Du Deinen Poti-Wert ermittelst, der im EEPROM steht, aber ich vermute, Du liest einen Analog-Port ein? Wer garantiert Dir denn, dass der Wert je exakt gleich sollc oder sollb oder solla ist? Je nachdem, wie schnell Du am Poti drehst, wird ja nicht jeder Wert erfasst.
> >
> > Wenn die Relais im Grenzbereich aus sein sollen, würde ich das so formulieren:
> >
> >
> > if sollc >= PotiWert*100 AND sollx <= PotiWert*100 then K2 = off
> > if sollc >= PotiWert*100 AND sollx <= PotiWert*100 then K1 = off
> >
> >
> > Damit ergäbe sich dann folgendes Programm
> >
> >
> > print " Bitte geben Sie ihren gewünschten Winkel an "
> > input Winkelangabe
> >
> > solla = winkelangabe*85         'Berechnung der Toleranz
> > sollc = solla -400
> >
> > sollz = winkelangabe*85
> > sollx = sollz + 400
> >
> > #loop                           ' Schleife
> >
> > PotiWert = portx           'Wert des Analog-Ports in die Variable Potiwert
> >
> > if sollx > PotiWert*100 THEN K2 = off
> > if sollx > PotiWert*100 then K1 = on
> >
> > if sollc < PotiWert*100 then K1 = off
> > if sollc < PotiWert*100 then K2 = on
> >
> > if sollc >= PotiWert*100 AND sollx <= PotiWert*100 then K2 = off
> > if sollc >= PotiWert*100 AND sollx <= PotiWert*100 then K1 = off
> >
> > if winkelangabe*85 = PotiWert*100 then end
> >
> > goto loop
> >
> >
> > Irgendwie übersichtlicher, finde ich. Mit Unterprogrammen lassen sich noch die jeweils doppelten ifs vermeiden.
> >
> > HTH
> >
> > Bye
> >  Achim
>
> jua bestens Dank, das klingt logisch, werd es ausprobieren
> mfg Butcher

jo das Programm ist jetzt übersichtlicher aber das "Relais Klappern" bleibt leider noch
trotzdem besten Dank für deine Anregungen und Mühe

 Antwort schreiben

Bisherige Antworten:

Re: Vergleich/Gleichsetzung von Variablen (von Achim - 29.12.2005 18:58)
    Re: Vergleich/Gleichsetzung von Variablen (von Butcher - 30.12.2005 10:34)