|
|
Zähler für eine If- Anweisung |
|
theshadyanswer |

Forum-Anfänger
|
 |
Beiträge: 11
|
 |
|
 |
Anmeldedatum: 29.03.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.07.2012, 13:38
Titel: Zähler für eine If- Anweisung
|
 |
Hallo an alle,
ich habe eine Frage und hoffe, dass mir jemand helfen kann.
Im folgenden Script soll die If-Anweisung "Bremsen" nur einmal durchlaufen werden. Das habe ich versucht, indem ich in der Anweisung den Wert i um einen Wert erhöhe und in der Bedingung nur eine "0" zulasse. Doch leider geht das nicht, weil Variable i wieder "0" ist sobald man nicht mehr in der Anweisung steckt.
Würde mich super freuen, wenn jemand eine Idee hätte. wie man das realisieren kann.
Gruß
Andreas
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Deklaration aller Variablen
v_akt_1 = 0;
v_St_5 = 0;
v_reku_3 = 0;
v_St_6 = 0;
central = 0;
bremsen_cl=0;
i=0;
% Bremsen
elseif position_s > s_brems_schl && position_s <-65 && i<1
v_akt_1 = 1;
v_St_5 = 0;
v_reku_3 = 1;
v_St_6 = 1;
central = 1;
bremsen_cl=1;
i=i+1;
|
|
|
|
|
Goofy9020 |

Forum-Century
|
 |
Beiträge: 164
|
 |
|
 |
Anmeldedatum: 10.08.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 2009a, 2010b
|
 |
|
|
 |
|
Verfasst am: 19.07.2012, 13:44
Titel:
|
 |
scheint nur ein Codefragment zu sein, wie sieht der andere Code aus? Gibt es eine Schleife um diesen Code?
wenn du so einen Code postest, verwende bitte die CODE Umgebung danke
|
|
|
theshadyanswer |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 11
|
 |
|
 |
Anmeldedatum: 29.03.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.07.2012, 14:24
Titel:
|
 |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Deklaration aller Variablen
v_akt_1 = 0;
v_St_5 = 0;
v_reku_3 = 0;
v_St_6 = 0;
central = 0;
bremsen_cl=0;
i=0;
if control <= 0;
if position_s < s_brems_schl
%Fahren
elseif position_s > s_brems_schl && position_s <-65 && i<1
% Bremsen
v_akt_1 = 1;
v_St_5 = 0;
v_reku_3 = 1;
v_St_6 = 1;
central = 1;
bremsen_cl=1;
i=i+1;
end
end
|
|
|
Goofy9020 |

Forum-Century
|
 |
Beiträge: 164
|
 |
|
 |
Anmeldedatum: 10.08.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 2009a, 2010b
|
 |
|
|
 |
|
Verfasst am: 19.07.2012, 14:33
Titel:
|
 |
Nochmal zu meiner Frage, hast du eine Schleife um diese Anweisung herum?
Hier nochmals in Code Umgebung, bitte diese verwenden:
|
|
|
theshadyanswer |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 11
|
 |
|
 |
Anmeldedatum: 29.03.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.07.2012, 14:50
Titel:
|
 |
Achso jetzt habe ich verstanden. Wusste nicht, dass man das auch anders anzeigen lassen kann. Sorry dafür.
Es ist keine Schleife herum.
Gruß
Andy
|
|
|
Goofy9020 |

Forum-Century
|
 |
Beiträge: 164
|
 |
|
 |
Anmeldedatum: 10.08.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 2009a, 2010b
|
 |
|
|
 |
|
Verfasst am: 19.07.2012, 14:57
Titel:
|
 |
Ok dann verstehe ich das Ganze hier aber nicht.
wenn hier keine Schleife ist, dann rufst du das Ganze ja nur einmal auf so kommt er ja nie in den elseif Zweig rein oder ist dies eine Unterfunktion die so immer wieder aufgerufen wird?
Wenn es eine Unterfunktion sein sollte, dann ist es auch klar wenn du i immer auf 0 setzt, dass er nie in den elseif Zweig kommt.
|
|
|
theshadyanswer |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 11
|
 |
|
 |
Anmeldedatum: 29.03.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.07.2012, 15:15
Titel:
|
 |
Ja das ist ja die Frage.
Ich will, dass er die elseif Anweisung nur einmal durchläufft und nicht wieder wenn nach einer gewissen zeit
position_s > s_brems_schl && position_s <-65 && i<1
Er kommt immer wieder in die elseif Anweisung weil i=i+1 ja nur gilt solange die Anweisung durchläuft. Danach ist aber wieder i=0 und das spiel beginnt von vorne.
Ich brauche eigentlich nur eine If Anweisung die die einmal durchlaufen wird und danach eben nicht mehr auch wenn die Bedingungen Wahr sind.
Mein Programm ist nichts anderes als eine Ablaufsteuerung die in Abhängigkeit von einer Postion signale ausgibt. Nichts mit irgendwelchen Schleifen oder so. Das Programm soll von oben nach unten einmal durchlaufen.
Gruß
Andy
|
|
|
Goofy9020 |

Forum-Century
|
 |
Beiträge: 164
|
 |
|
 |
Anmeldedatum: 10.08.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 2009a, 2010b
|
 |
|
|
 |
|
Verfasst am: 19.07.2012, 15:32
Titel:
|
 |
Solange der Codeblock den du gepostet hast nur einmal durchlaufen wird, kommt er immer in den elseif Block rein und nicht in den anderen. Sobald du den Codeblock ein zweites mal durchläufst wird er wieder in den elseif Block gehen, da du ja i=0 wieder setzt am Anfang. Also die Initialisierung von i = 0 sollte eventuell an einer anderen Stelle erfolgen.
Dennoch denke ich, es fehlt noch ein wenig vom Code um das was du hier machst auch wirklich zu verstehen.
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 19.07.2012, 17:08
Titel:
|
 |
Hallo theshadyanswer,
Ich verstehe die Frage auch noch nicht. Ich nehme an, es ist eine grundsätzliche Frage, also empfehle ich erstmal alles überflüssige aus dem code wegzulassen, was zunächst nur verwirrt. Für konkrete Probleme ist so ein "Pseudo-Code" zwar im Allg. nicht hilfreich, aber hier schient es ja um eine generelle Annwendung von Schleifen und IF-Bedeingungen zu gehen.
Gruß, Jan
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|