Autor
|
Thema: Sensor startet Stoppuhr und hält diese auch an (2351 mal gelesen)
|
KidCaddi Mitglied
Beiträge: 11 Registriert: 09.07.2011
|
erstellt am: 18. Aug. 2011 16:02 <-- editieren / zitieren --> Unities abgeben:
Hi Leute, habe Förderstrecke, wo zwei sensoren auf genau der gleichen höhe liegen. Sensor 1 misst Bug vom BE, Sensor zwei das Heck vom gleichen BE. Ich habe also eine Variablen A, die auf "1" gesetzt wird, solange BE vor dieser Lichtschranke ist. Problem: Ich möchte Variable B (typ: time) starten lassen (Stoppuhr), sobald A auf "1" ist. Die fortlaufende Zeit soll permanent mit einer vorgegebenen Zeitgrenze C vergleichen werden. Ist A auf "1" und die Zeit dafür von B übersteigt C, soll Variable D auf "1" gesetzt werden, ansonsten D auf "0". Kurz: Liegt mein BE zu lange (Zeit > Variable C)vor Sensor, leitet Variable D mit Signal "1" eine Reaktion ein, ansonsten nicht. PS: Ich würde gern auch im Netzwerk sehen dass die Stoppuhr läuft, wenn das BE vor Lichtschranke liegt. Steh da aufm Schlauch. Help, I need some help Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bon Simul Mitglied Simulant
Beiträge: 1250 Registriert: 08.08.2011 Plant Simulation 10.1, 11 ff Professional
|
erstellt am: 18. Aug. 2011 20:54 <-- editieren / zitieren --> Unities abgeben: Nur für KidCaddi
|
KidCaddi Mitglied
Beiträge: 11 Registriert: 09.07.2011
|
erstellt am: 19. Aug. 2011 10:11 <-- editieren / zitieren --> Unities abgeben:
Hi, danke für die Antwort, aber ich habe da Probleme mit der Syntax. Sieht die in etwa so aus (?): Methode1: if Variable A = 1 then Variable B :=Ereignisverwalter.Zeit waituntil -- Start der Stoppuhr? Variable B >= Variable C; -- Stopp der Stoppuhr? if Variable >= C then Variable D =1 else Variable D = 0 -- Wie starte und stoppe ich die Uhr für jedes BE aufs neue -- Sieht die Syntax in etwa so aus? Das Problem ist nicht die Methodik, sondern die Umsetzung(meine Syntaxfehler). Grüße kid Caddi
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
planty Mitglied Dipl.-Ing.
Beiträge: 139 Registriert: 18.09.2006
|
erstellt am: 19. Aug. 2011 10:52 <-- editieren / zitieren --> Unities abgeben: Nur für KidCaddi
Hi, Zu jedem 'If then' auch ein 'end' (zur besseren Lesbarkeit auch gerne ein leeres 'else /* nothing */ end'). Das steht natürlich auch in der Hilfe UND es gibt ein Code-Template. 'if' strg + leer, erzeugt Dir ein if statement. Code:
if «condition» then «then_branch» end;
P. ------------------ Two hours of trial and error can save ten minutes of manual reading! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KidCaddi Mitglied
Beiträge: 11 Registriert: 09.07.2011
|
erstellt am: 19. Aug. 2011 11:05 <-- editieren / zitieren --> Unities abgeben:
|
Samson53 Mitglied Nur noch selten simulierend
Beiträge: 119 Registriert: 18.02.2010 Plant Simulation 11 Office 2013
|
erstellt am: 19. Aug. 2011 11:08 <-- editieren / zitieren --> Unities abgeben: Nur für KidCaddi
Zitat: Original erstellt von KidCaddi: Hi Leute, habe Förderstrecke, wo zwei sensoren auf genau der gleichen höhe liegen. Sensor 1 misst Bug vom BE, Sensor zwei das Heck vom gleichen BE. Ich habe also eine Variablen A, die auf "1" gesetzt wird, solange BE vor dieser Lichtschranke ist.
Warum nicht einen Sensor (keine LS) mit Bug und Heck? Zitat:
Problem: Ich möchte Variable B (typ: time) starten lassen (Stoppuhr),
Halte in eine Globalen Variablen (Bugzeit) die Simtime vom Bug fest, und wenn das Heck passiert ist die Wartezeit, AktuelleSimtime - Länge(be) / Geschwindigkeit - Bugzeit. Du kannst auch vom Nachfolger die Bugzeit auswerten um diesen umzuleiten
------------------ Gruß Samson Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
planty Mitglied Dipl.-Ing.
Beiträge: 139 Registriert: 18.09.2006
|
erstellt am: 19. Aug. 2011 13:00 <-- editieren / zitieren --> Unities abgeben: Nur für KidCaddi
Hi, Du hast geschrieben:
Code:
ich habe da Probleme mit der Syntax. -- Sieht die Syntax in etwa so aus? Das Problem ist nicht die Methodik, sondern die Umsetzung(meine Syntaxfehler).
Wenn wir Dich auf Syntaxfehler hinweisen sollen, dann zeig uns Dein spezifisches Problem und klatsch nicht Codefragmente hin und erwarte dass wir uns lange damit auseinandersetzen um herauszufinden was Du wohl gemeint haben wirst. Mal angenommen das 'waituntil' ist Dein Problem. Die Zeile ist natürlich auch Mist, aber auch die Syntax von 'waituntil' steht ebenfalls in der Hilfe (und auch einige Male im Forum).
Code: waituntil <Bedingung> prio <integer Ausdruck>;
'waituntil' ist kein Operator, braucht also auch kein linksseitiges Argument. PS Liefert Beispielmodelle mit, in denen ziemlich alles irgendwo verwendet wird. Waituntil z.B. hier: Materialfluss -> Montagebaustein -> SimTalk Wächter Unhöflichkeit ist kein Problem, aber da ich offensichtlich etwas falsch verstanden habe, brauche zumindes ich wohl mehr/bessere Informationen. Ohne also Dein wirkliches Problem zu formulieren können wir Dir nicht helfen. Den Trollkommentar kannst Du Dir vielleicht das nächste mal sparen, Mein Vorschlag, poste die Methode so wie Du sie geschrieben hast. P. PS: hilft auch hier: http://www.vogella.de/blog/2010/03/09/asking-community-questions/ ------------------ Two hours of trial and error can save ten minutes of manual reading! [Diese Nachricht wurde von planty am 19. Aug. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bon Simul Mitglied Simulant
Beiträge: 1250 Registriert: 08.08.2011 Plant Simulation 10.1, 11 ff Professional
|
erstellt am: 19. Aug. 2011 21:44 <-- editieren / zitieren --> Unities abgeben: Nur für KidCaddi
Immer ruhig mit den jungen Pferden... Wenn die Stoppuhr Ihr einziges Problem ist, dann können Sie die Uhr die ganze Zeit laufen lassen, die Zeit wird nur hochgezählt, wenn ein BE sich über dem Sensor aufhält, sonst wird die Uhr permanent auf 0 gesetzt. Entwurf der Logik war schon okey. Bauplan: Generator --> ruft jede 10 Sek die Methode auf globale Variable stoppuhr (Datentyp:time)--> Ihr B Zitat: "Problem: Ich möchte Variable B (typ: time) starten lassen (Stoppuhr), sobald A auf "1" ist. Die fortlaufende Zeit soll permanent mit einer vorgegebenen Zeitgrenze C vergleichen werden. Ist A auf "1" und die Zeit dafür von B übersteigt C, soll Variable D auf "1" gesetzt werden, ansonsten D auf "0"."
Das lässt sich fast 1:1 umsetzen: Code:
is do --stoppuhr starten if A = 1 then stoppuhr:=stoppuhr+10;--Generatorintervall else stoppuhr:=0; -- Uhr ist angehalten end; -- mit Zeitgrenze vergleichen if stoppuhr > B then D:=1; else D:=0; end; end;
Die Zeit werden Sie nur "laufen" sehen, wenn Sie die Simulation in Echtzeit (mal x) ablaufen lassen, sonst "überspringt" Plant Simulation den Stau. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|