...ups.. Du warst das Eigentlich gehören ja die Befehle aneinander angepasst.
gespeicherte Achstellungen mit LUA auslesen?
Achte bitte darauf, dass Du mit deinem Thema bzw. mit deiner Frage im richtigen Bereich bist.
Die Bereiche sind: Einstellungen im Forum, EEP aktuell ab EEP7 , Splines, Rollmaterialien, Immobilien, Landschaftselemente, Signale und Schaltung, Anlagenvorstellungen, Schnappschüsse Konstrukteure, EEP Treffen , Laberecke, Online - Handbuch EEP Vielen Dank für die Unterstützung das Forum übersichtlich zu halten.
Die Bereiche sind: Einstellungen im Forum, EEP aktuell ab EEP7 , Splines, Rollmaterialien, Immobilien, Landschaftselemente, Signale und Schaltung, Anlagenvorstellungen, Schnappschüsse Konstrukteure, EEP Treffen , Laberecke, Online - Handbuch EEP Vielen Dank für die Unterstützung das Forum übersichtlich zu halten.
Bilder/Fotos aus dem Internet sind nur als Link gestattet. Eigene Fotos, also Fotos aus dem realen Leben, sind erstens mit Eigenes Bild als Quellenangabe zu kennzeichnen und zweitens nur als Dateianhang im Beitrag zulässig. Bilder ohne Quellenangaben und Bilder dessen Quelle das Internet wie z. B. Google ist, werden gelöscht.
-
-
Da frag ich mich schon, warum im Lua-Handbuch nicht beschrieben steht, dass für EEPRollingstockSetAxis und EEPRollingstockGetAxis unterschiedliche Einheiten für den Achsenwert gelten.
Ich vermute mal, dass ich durch Eure Forschung jetzt auch besser weiß, wo ich den Fehler suchen muss, wenn die beim Vorderwagen meiner Schwebebahn abgefragte Stellung einer mit der "_GravityX-Achse" gekoppelten Achse nicht bei der Übertragung zu einer Achse des Hinterwagens zu stimmigen Bewegungen führte.
Werde ich demnächst mal testen!
Gruß
ruetzi
-
@Goetz
Servus, auch mit Deinem Script (post#7) schaffe ich es nur mit <= oder >= abzufragen, ob der Haken seine Position erreicht hat. Das macht aber nur dann Sinn, wenn es keine Stellung mehr oberhalb/unterhalb gibt. Bei einer Stellung dazwischen hab ich keine Möglichkeit gefunden, festzustellen, ob die Position erreicht ist. Der Vergleich mit == funktioniert nie, da ich die Gleitkommazahl garnicht in der vollen Länge ermitteln kann. Selbst mit Bennys printToFile, das 12 Nachkommastellen ausgibt, bekomme ich nie Gleichheit. Im Anhang ist Dein Script mit meinen Ergänzungen in einer Beispielanlage. Wenn Du Zeit findest, bitte ich Dich da mal drüber zu schaun.
Code
Alles anzeigen-- Obenposition= >= 49.3 #16 -- Waggonposition = <= -1.69444 #15 -- Zwischenposition = == 20.3056 #14 -- Wert aus dem Ereignisfenster function istKranAngekommen(fahrzeug, achse) -- Kleinschreibung ist hier Absicht local ok, position = EEPRollingstockGetAxis(fahrzeug, achse) print ("GetAxis position ",position ) return position == 20.305555343628 -- aus Bennys printToFile end
Im AchsenstellungsDialog habe ich auf #14 #15 #16 Einstellungen abgespeichert. Bei der Obenposition und der Waggonposition funktioniert die Abfrage. Aber eine durchgeführte Zwischenstellung kann ich so nicht ermitteln. Vielleicht hast Du noch eine Idee?
-
..und jetzt muss ich erst mal wieder schaun wie ich den Anhang hochlade
-
Hallo paul5102
dies habe ich leider erst später hinzugefügt: (aber du hast es ja selbst herausgefunden)
Und noch ein Hinweis: es gibt Achsen, die nicht ganz die 100% erreichen! Also dementsprechend abfragen (99% oder 98%)
für die Zwischenstellung mußt du z.B. so oder ähnlich abfragen
if pos >= 20 and pos <= 21 then mittelstellung = true end
-
Man kann den ermittelten Wert bei der Umwandlung "glätten".
Ein doppeltes Divisionszeichen schneidet Nachkommastellen ab und formt so floats in int um.
3/2 == 1.5
3//2 == 1
Man muss dabei berücksichtigen, dass immer abgerundet wird. Also mit dem Offset zuerst eine etwas zu große Zahl erzeugen und dann glatt durch 1 teilen. So bekommt man eine Zahl, die sich für einen direkten Vergleich eignet.
Lua
Alles anzeigenPosition = 33 EEPRollingstockSetAxis(Wagen, Achse, Position) -- alt-neu Vergleich, bis Achse sich nicht mehr bewegt, danach ok, Ergebnis = EEPRollingstockGetAxis(Wagen, Achse) Offset = 51 -- die 51 ist etwas mehr als der ermittelte Offset von 50.6944 if (Ergebnis + Offset) // 1 == Position then print("Kran ist angekommen") end
Zur Zahlenausgabe ist folgendes noch nützliches Wissen:
Gibt man print() eine Zahl als Argument, dann entscheidet Lua selbst über die Genauigkeit der Darstellung. Wandelt man die Zahl zuvor mit tostring() um, dann erhält man mehr Nachkommastellen. Und mit string.format() kann man selbst festlegen, wieviele Nachkommastellen der String enthalten soll, der aus einer Zahl gebildet wird.
Zum Vergleich:
-
Genau das habe ich gesucht, und nicht gefunden! Danke Dir!
-
mit <= oder >= abzufragen, ob der Haken seine Position erreicht hat
Hallo,
wenn ich wissen will ob der Kran die Stellung erreicht hat vergleiche ich den alte Achswert mit dem neuen Wert. Wenn sich der Wert nicht mehr ändert ist die Bewegung abgeschlossen - ohne große Mathe.
MfG
-
der upload hat sich jetzt zwar erledigt, aber interessieren täts mich trotzdem, wie das geht. Selbst mit der Suchfunktion finde ich nix mit "upload" oder "Datei hochladen" etc
-
Klar, so geht das auch. Umständlich.. Da hat das Programm die Daten und mit LUA kommt man in diesem Fall nicht einfach ran. Nur über Umwege. Da kann dann der Spass auch bald vergehen.
-
der upload hat sich jetzt zwar erledigt, aber interessieren täts mich trotzdem, wie das geht.
Hallo Paul
die Antwort findest Du in der Forenhilfe Wie geht was im Forum. Schau mal hier:
DateiForumhilfe - Wie bekomme ich ein Bild in einen Beitrag ?
Was muss ich beachten, wenn ich ein Bild in einen eigenen Beitrag einfügen möchte.eep-fan1324. Mai 2018 um 14:58 Gruß Ingo
-
Ich schreibe mir für solche Sachen immer eine Timeline.
Völlig ohne Rückmeldung. Und ohne gespeicherte Gruppen.
Ich beobachte den Kran und gebe ihm dann die Zeit vor, die er warten soll, bis er die nächste Aktion ausführt.
Dazu gibt es nur EINE Funktion, die für alle Modelle nutzbar ist.
Die wird dann wie folgt aufgerufen:
z.B. Bewege_Achse(Kran1,Arm1,50,0,Arm2,30,... u.s.w. , END,0,0)
Das bewegt z.B. den Arm1 von Kran1 auf die Position 50 nach 0s. Also gleich beim Aufruf der Funktion.
Dann wird 30s gewartet und danach Arm2 auf Position 30 gefahren. u.s.w.
Die Positionen muß man ja sowieso erstmal manuell anfahren, um die Endwerte zu ermitteln.
Da kann man dann auch gleich die Zeit ermitteln, die die Bewegung braucht.
Gruß
Thomas
-
Danke Dir, ein Bild in den Beitrag hochladen, das weiss ich. Aber eine zip-Datei, das weiss ich nicht
-
Danke Dir! Auch das ist eine Möglichkeit.
-
ein Bild in den Beitrag hochladen, das weiss ich. Aber eine zip-Datei, das weiss ich nicht
Hallo Paul
das ist für normale Mitglieder nicht erlaubt. Die Beschränkungen werden Dir vor dem Hochladen unten angezeigt:
Gruß Ingo
-
Aber eine zip-Datei, das weiss ich nicht
Das können nur die Moderatoren oder wir Admins. Im Impressum steht die Email Adresse wo Du die Datei im Zweifel hin schicken kannst
-
-