Archiv verlassen und diese Seite im Standarddesign anzeigen : Unverständlichkeit bei IF AND ODER programmierung
Hi,
bin ganz neu auf dem Gebiet
und muss aber eine kleine Logik machen,
nächste erweiterung wäre dann die Verknüpfung von Frequenz.
Sie sollte gemessen werden und < >= mit einer Zahl verglichen werden.
Hoffe das krieg ich noch hin...
Noch aber sollte ein fach Auswertung der Schaltzustände gemacht werden:
Ports:
1 oder
2 oder
7 oder
5
oder
Ports:
3 und 8
oder
Ports:
3 und 8 und 4
Wenn diese Kombination gegeben ist, soll die LED leuchten.
Ansonnsten soll sie aus sein.
Einfache IF Verknüpfung funzt, aber in dieser Kombination
funktionier das garnicht wie gewollt. LED bleibt leuchten wenn ODER Fall eintritt und geht aus wenn die Taster aus der UND Kombination gedrückt werden.
Kann mir da wer helfen? Danke.
(3 und 8 und 4) kannst du schmeissen, wenn er bei (3 und 8) eh schon leuchtet
(3 und 8 und 4) kannst du schmeissen, wenn er bei (3 und 8) eh schon leuchtet
jup, das ist dann optimierung :)
aber die led geht nicht aus, wenn die oder taster losgelassen werden.
es funktioniert wenn nur eine oder verknüpfung da ist. aber wenn man die "und" verknüpfungen hinzufügt, ist die funktion durcheinander.
komme noch nicht dahinter....
..komme noch nicht dahinter....
Überleg mal, unter welchen Umständen du zurZeile LED1 = OFF hinkommst
Ich würde da mal ein ELSE einfügen
IF (reverse = ON) OR (low = ON) OR (tcase6x6 = ON) OR (axle123 = ON) THEN
LED1 = ON
PAUSE 10
ELSE
IF (high = ON) AND (nu10km = ON) THEN
LED1 = ON
PAUSE 10
ELSE
IF (high = ON) AND (nu10km = ON) AND (tcase6x4) THEN
LED1 = ON
PAUSE 10
ELSE
LED1 = OFF
END IF
END IF
END IF
also nach dem altem code leuchtet led dauernd, wenn man:
Taster an den Ports:
1 oder
2 oder
7 oder
5
betätigt.
Und geht erst aus, wenn Taster an den Ports:
3, 4 oder 8 betätigt wird.
MfG
@PicNick, danke, werd ich mal ausprobieren.
PS: soll eine Steuerung werden, die die Leistung vom Motor drosselt, in abhängigkeit von Geschwindigkeit und Verteilgetriebestellung.
grmr, led geht net von selbst aus, wenn taster losgelassen werden...
Geh', dann zeig' doch mal deine komplette (aktuelle) IF-erei her.
Von so einem Silizium-Dödi darf man sich nicht quälen lassen.
so schauts grad aus.
aber nix von tastfunktion, wie davor schon beschrieben.
oder taster machen es an, und taster machen es aus...
Habe so gemacht:
und es scheint zu funktionieren.
ist nur etwas mehr zu schreiben...
eigentlich ist so nicht richtig, da die led dann theoretisch flackert, was man auch merkt, wenn man pausenzeiten einfügt.
problem gelöst, alles verschachtelt
mfg
Hallo mal wieder.
Hab mal wieder Problem:
Habe das Programm nun laufen, aber das komische:
Normal werden Schalteingänge als ON erkannt, wenn sie nach Masse gezogen werden.
Habe über 4011 die Signale extra dafür invertiert. Nun waren die Ausgänge aber nun invertiert. Ich musste also Low als OFF programmieren, damit der ausgang ON ist.
Das entzieht sich meinem Verständnis..
ZB: Define Schalter1 Port[1], (nun wird er nach masse als aktiv gezogen=
If .... = OFF dann Ausgang = ON
nur so geht das, ansonnsten funzt es alles verkehrtrum....
WARUM?
Hallo mal wieder.
Hab mal wieder Problem:
Habe das Programm nun laufen, aber das komische:
Normal werden Schalteingänge als ON erkannt, wenn sie nach Masse gezogen werden.
Habe über 4011 die Signale extra dafür invertiert. Nun waren die Ausgänge aber nun invertiert. Ich musste also Low als OFF programmieren, damit der ausgang ON ist.
Das entzieht sich meinem Verständnis..
ZB: Define Schalter1 Port[1], (nun wird er nach masse als aktiv gezogen=
If .... = OFF dann Ausgang = ON
nur so geht das, ansonnsten funzt es alles verkehrtrum....
WARUM?
hoi,
ob die led leuchtet bei 0 oder 1 hängt von der verschaltung der hardware ab. musst sie halt andersrum anschließen, wenn es dich so stört.
mfg jeffrey
nein, es heisst ja dass die ausgänge dann high activ sind,
also wenn eingang auf 0 gezogen wird ist es als "on" gemeint und damit kann ich gleichzeitig einen ausgang als "on" programmieren.
Also im buch steht das genau umgekehrt, die leds waren mir da eine hilfe, da ich nicht verstand, warum die schaltung umgekehrt funktioniert hatte.
habe extra einen 4011 vor die eingänge angeschlossen, da es nach programm die eingänge low-activ sind.
######
mfg
DEFINE reverse AS PORT[8] 'Rückwärtsgang
DEFINE high AS PORT[2] 'Verteilgetriebe Modus HIGH
DEFINE low AS PORT[3] 'Verteilgetriebe Modus LOW
DEFINE tcase6x6 AS PORT[4] 'Verteilgetriebe Modus 6x6
DEFINE axle_lock AS PORT[5] 'Achsensperre aktiv
DEFINE Torque_red AS PORT[9] 'Ausgang für Drehmom.-Reduzierung
DEFINE LED_Torque AS PORT[10] 'Ausgang für LED Kontrolle Torquered.
DEFINE LED_Speed AS PORT[11] 'Geschwindigkeitskontrolle
DEFINE LED_High AS PORT[12] 'LED bei Modus High aktiv
DEFINE LED_Low AS PORT[13] 'LED bei Modus LOW aktiv
DEFINE LED_6x6 AS PORT[14] 'LED bei Modus 6x6 aktiv
DEFINE LED_Axle AS PORT[15] 'LED bei Modus Achsensperre
DEFINE LED_Power AS PORT[16] 'LED Blinkt bei Versorgung
DEFINE Speed AS WORD
DEFINE LastLEDToggle AS WORD 'Zeitpunkt, an dem die LED zuletzt umgeschaltet wurde
CONFIG.INIT
CONFIG.PUT 00001000b
CONFIG.OFF
LED_Torque = OFF
LED_Speed = OFF
LED_High = OFF
LED_Low = OFF
LED_6x6 = OFF
LED_Axle = OFF
LED_Power = OFF
Torque_red = OFF
Speed = 0 'Frequenzmessung 42Hz ca. 15km/h
LastLEDToggle = Timer
DO
Speed = FREQ
IF (Timer - LastLEDToggle) > 50 THEN
LastLEDToggle = Timer
TOG LED_Power
END IF
IF (reverse = OFF) OR (low = OFF) OR (tcase6x6 = OFF) OR (axle_lock = OFF) THEN
Torque_red = ON
LED_Torque = ON
ELSE
IF (high = OFF) AND (Speed <= 42) THEN
Torque_red = ON
LED_Torque = ON
ELSE
Torque_red = OFF
LED_Torque = OFF
END IF
END IF
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.