MobiFlight Community Support

Welcome to the forum for MobiFlight! Feel free to reach out to the community in case you have questions, issues or just want to share great ideas or details about your latest home cockpit project.

You like MobiFlight? Donate via PayPal and support the MobiFlight development. Thanks! 

05/03/2024 - This forum is read-only

The community support for MobiFlight has moved exclusively over to our Discord server. Register for free and enjoy more interactive functions like image and video upload, voice chat. More than 7,000 registered users around the world make it a great experience!

See you on our MobiFlight Community Discord server.

A HUGE Thank You to everyone who participated in the forum, especially obviously to Pizman and Stephan who did an outstanding job over so many years providing an incredible service to the MobiFlight community.

The forum is still providing a lot of good content, hence we keep this information accessible.

icon
Avatar
ZockZock
Posts: 4
Hallo zusammen,
ich habe folgendes vor: Es soll ein Stepper Motor mit einer Kombination von zwei offsets angesteuert werden. ( Pitch + Roll Werte)
Soweit ich jetzt mich durch das Forum gelesen habe, muss man wohl einen User Offset erstellen. Da setzt meine Frage an..

Wie geht das? Was braucht man dazu?

Vielen Dank im vorraus und Gruß,

Hans
2020-09-18 17:57
Avatar
StephanHo
Moderator
From: EDDG, Germany
Posts: 1867
Supporter
Hallo Hans,

das Prinzip deines Wunsches ist uns soweit klar...

aber

es fehlen entscheidende Hinweise, nämlich:

Betriebssystem (Win 7/10)
Simulator (FSX, P3D V?, X-Plane, FS2020)
Flugzeug (Standard, PMDG, JeeHell, Airbus)
MobiFlight (Version)
Mit diesem Wissen wären wir in der Lage, dich zu unterstützen. Danke
Grüße,
Stephan (Time: UTC+2)
2020-09-18 19:40
Avatar
ZockZock
Posts: 4
folgende Bedingungen sind bei mir gegeben:

Windows 10 pro
Flightsimulator 2020
Standard Cessna 172 Skyhawk G1000
Mobiflight 7.10.0

Gruß,

Hans
2020-09-18 19:44
Avatar
pizman82
Moderator
From: ETSI, Germany
Posts: 6010
Supporter
Hi

Ganz so einfach und klar ist es nicht :cry:

Mach es uns mal einfacher.... WAS soll die Gauge genau machen ?

Wenn die Gauge 2 Motoren hat ist das kein Hexenwerk.... Denn dann würden beide Motoren arbeiten wie wenn es den anderen nicht gibt. wie ich verstehe aus den kurzen Worten planst du aber eine Gauge mit EINEN Motor.

Soll dieser nun mit einer bestimmten Bedingung ( Stellung eines Wahlschalters) oder z.b. Anhand einer Sim Situation (wie Anzeige A am Boden und Anzeige B in der Luft) etwas bestimmtes tun ? Das wäre dann eine Precondition !

Oder brauchst du was Mathematisches.... Also das du aus den 2 Rohwerten eine Berechnung machst und das Ergebnis muss auf die Gauge angezeigt werden. Hier reden wir dann eher über Formeln und Placeholder.

***********
Somit: Genau erklären was du willst und wie das aussehen und funktionieren soll..... Weiterhin erklären welche Rohwerte du hast. Und dann bauen wir zusammen was.
By the way.... Immer dran denken das der FS2020 noch monate lang eine BETA sein wird ( Seitens Mobiflight ist alles fertig aber FSUIPC und MS hängen noch nach)
Also damit rechnen das dein Wunsch vielleicht noch gar nicht möglich ist!
[Last edited by pizman82, 2020-09-19 09:45]
Good Luck !
2020-09-18 22:24
Avatar
ZockZock
Posts: 4
Hallo,

ich plane einen Attitude Indicator, welcher sich beim Rollen um 360° drehen kann. Hier sind zwei Stepper im Einsatz. Einer treibt den Pitch indicator an, der andere, den Roll Indicator.
Ich möchte keinen Schleifring einsetzen um zu verhindern, dass sich das Kabel vom Pitch Indicator verdreht. An der Stelle gehe ich jetzt mal nicht weiter in die Tiefe, da dass, den Rahmen sprengen würde und für euch irrelevant ist.

Konkret benötige ich einen User Offset, welcher die Offsets 0x2F70 und 0x2F78 arithmetisch additiert und als Gleitkommazahl ausgibt.

Beispiel: UserOffset = 5 (0x2F70="2" + 0x2F78="3")

Der Stepper Motor zeigt dann bespielsweise um 5° auf dem Gauge an.

Gruß,

Hans
2020-09-19 08:10
Avatar
pizman82
Moderator
From: ETSI, Germany
Posts: 6010
Supporter
Hallo nochmal

Das was du anfragst ist seitens Mobiflight möglich und kein Problem umzusetzten.
Allerdings widerspricht sich dein Plan und ich muss gestehen ich kappiere nicht wozu du diesen Wert verwenden willst.

Du sagst " Hier sind zwei Stepper im Einsatz. Einer treibt den Pitch indicator an, der andere, den Roll Indicator."
Darunter sagst du, das DER Stepper ( Also einer der beiden wohl) das ergebnis aus Pitch+Roll ausgeben soll.

Dumm gesagt.... Wenn Pitch 3° sind und roll 5° dann würde dein Motor 8° ausgeben..... Wäre aber Pitch 5° und Roll 3° ( also genau anders rum) würde dein Motor aber die gleiche Ausgabe machen.

Somit denk nochmal über deine Logik nach und ob das so richtig sein kann !

*******************

Lösung:

Zuerst musst du wissen ob du die Werte einzelln noch für was anderes brauchst. Falls JA dann ist dein Ansatz richtig. Dann liest man in Config 1 Pitch.... In Config 2 Roll ..... und in Config 3 baut man sich eine Formel die die Werte A und B addiert und das ergebnis ausgibt.
Brauchst du die Rohwerte selber aber nicht woanders nochmal ist es eigentlich effektiver die Addition in einer der beiden Configs zu machen..... Das spart die unnötige 3. Config.
Also Config 1 liest Pitch.... Config 2 liest Roll und addiert den Wert von Config1 dazu und gibt das Ergebnis am Ende aus. NACHTEIL ist dann natürlich das wir im System nicht mehr den reinen Roll Wert für was anderes verwenden könnten da dieser in der Config weiterverarbeitet wurde.

Zu den Configs. HIER haben wir einen kleinen Hacken den du bedenken musst. Mobiflight ignoreirt Kommawerte wenn wir es nicht gezielt anders verlangen.
Angenommen Pitch wäre 12,34 und Roll wäre 5,98 ..... Eine Adition würe schlicht 12+5=17 ergeben. Denn wir addieren nicht die Rohwerte sondern die Ausgabewerte der Leseconfigs..... Und die sind bereits "gekürzt".
Um das zu verhindern verwendet man Multiplikation.
Also in dem Fall würden die beiden Leseconfigs ihren wert mit z.b. 100 Multiplizieren.. Dann wird aus 12,34 = 1234 und aus 5,98 = 598 Somit addiert 1832
Theoretisch könntest du das ergebnis wieder teilen durch 100 um eine Kommazahl zu erhalten. Das erbigt aber keinen Sinn denn auch dein Motor wird nur ganze zahlen erkennen.
Also würde er sich von 12,01 bis 12,99 keinen Millimeter drehen weil alles für ihn 12 ist. Aber von 1201 bis 1299 macht er 100 Steps !

Finales Beispiel:
Config 1 liest Pitch .... 2F70 8 Byte FLT . Im Transform sagst du $*100 ------ 1,234567 ° ergibt dann 123 ( Ohne Multiply wäre sie nur "1")
Config 2 liest Roll ..... 2F78 8 Byte FLT. Transform Ebenfalls $*100

Config 3 liest preselected Offset 0000 1 Byte INT ( Wir nutzen den Wert eh nicht.... Aber sie muss einen Offset haben damit es keinen error gibt)
In den "Config Refferences" wählst du Config 1 als symbol A und Config 2 als Symbol B
Im Transform sagst du schlicht a+b
Somit ist der Wert von Config 3 nicht mehr sein eigener gelesener ( von $ bzw 0000 ) sondern jetzt das ergebnis aus a+b oder anders gesagt aus Wert Config 1 + Wert Config 2


Der andere Weg mit 2 Configs.....
Hier würdest du in Config 2 weiterhin den Roll lesen aber bereits HIER einen Placeholder machen und Config 1 wieder als "A" verwenden.
Der Transform wäre dann $*100+a ( Also erst sich selbst multiplizieren und dann Config 1 drauf addieren.


***************
Hoffe das hilft dir. Sinn ergibt es für mich keinen aber die Formeln machen was du brauchst !
[Last edited by pizman82, 2020-09-19 11:01]
Good Luck !
2020-09-19 10:36
Avatar
ZockZock
Posts: 4
Vielen Dank für die ausführliche Antwort, welche auf den Punkt meine Eingangsfrage beantwortet.

Gruß,

Hans.
2020-09-19 12:36
icon