Removing White Spots ... + Abschluß
Ausgangspunkt: TelMe schert sich einen Dreck um die Aussendungen des Masters, liest sie nicht. Es wartet, bis der Master aufhört zu "blubbern", dann sendet es, und zwar bereits nach einer Zeichenlänge Blubberpause (100us).
Frage: Welchen Impact kann das darstellen
a) für Kanaldaten, die der Master auf einem anderen EXbus Port sendet (->FBL)?
b) für die Koexistenz mit anderen Sensoren auf anderen EXbus Ports?
Thesen (Theorie):
1) EXbus ist KEIN Bus! Ergo gibt es keinen Grund, ein anderes Device auf einem anderen EXbus Port die Aussendungen von TelMe hören zu lassen. Von daher kann TelMe's Undisziplin diese nicht stören.
2) Dass TelMe sendet (auf seinem EXbus Port), wenn es nicht aufgefordert ist, - dass die Möglichkeit besteht, dass TelMe in die Aussendungen des Masters hineinquatscht (s.o.), kann es das Timing des Masters evtl. stören, sodass es doch eine Rückwirkung zeigt auf einem anderen EXbus Port? Theorie: Keine, kann man nur testen, denn man kennt die Firmware des Empfängers nicht.
Abdeckung: Da der Master ein Empfänger zu sein hat, da die Sourcen von dessen Firmware nicht z.V. stehen, konnte so ein Päuschen zwischen zwei Bytes eines Kanaldatenpakets leider nicht simuliert werden. Die durchaus berechtigte Hoffnung ist, dass es keine Rückwirkung haben würde auf andere EXbus Ports. Allerdings würde es zeitweise Asynchronität auf dem Port, an dem TelMe hängt, bewirken, wodurch dessen Daten zeitweilig nicht gelesen werden können (ca. 100ms Millisekunden +/-).
Anhang 1: Zwei S32 an einem REX6. Man sieht, dass der Sensor nur mit jeder zweiten Aussendung des Masters aufgefordert ist, zu senden.
Anhang 2: Man sieht einen minimalen Versatz der Aussendungen des Masters auf den beiden Ports. Das ist der Sequentialität in der Ausführung in der Firmware geschuldet. (Die eine fehlende Byte-Beschriftung ist keine Lücke, ich hatte den Viewer nur nicht genügend zoomen lassen.)
Anhang 3: Auf einem Port ein S32 (habe sonst keinen anderen EXbus Sensor), auf dem anderen TelMe JETI. Man sieht, TelMe sendet auch, wenn nicht aufgefordert.
Anhang 4: Hat das eine Wirkung auf das Timing des Master? Sprich, sind Aussendungen eines Sensors evtl. am Timing des Masters beteiligt, könnte unaufgefordertes Senden einen Impact darstellen? Sichtbar: Nein. Die beiden Kanaldatenpakete auf beiden Ports, oben S32, unten TelMe, sind identisch. Uff!
Anhang 5: Hat mit TelMe gar nichts zu tun (getestet, daher hängt hier nur noch ein S32 dran): Interessant, dass die Aussendungen des Masters (REX6) nicht in zeitlich konstanten Abständen erfolgen. Ein FBL, wie z.B. das Beast, was aus Knüppelwegänderungen pro Zeit die sog. "Knüppelbeschleunigung" berechnet und in seine Regelkreise einfließen lässt, - wird das weniger gut finden.
Der Sender sendet seine Kanaldaten, der Rx empfängt es, er ballert es dann auf seinen EXbus Ports raus. Könnte natürlich sein, dass mein Sender, eine Profibox, die ich mit PPM Daten aus einem Microcontroller füttere, das verursacht. Allerdings eher unwahrscheinlich.
(Dass ein Anwender vermeldete, dass TelMe auf einem Port einen EXbus Sensor auf einem anderen Port störte: Konnte ich nicht nachvollziehen, - allerdings war es hier ein REX6, der Anwender hat eine Central Box.)
Also zum Thema "Problem"? ==> UFF!
Nö, im Fall des Falles nur für die Telemetriedaten von TelMe selbst.
(Es ist schon ein dickes Ei, nicht auf den Master zu hören, aber genau dieser Master (die eher weniger gute Tatsache, dass EXbus auch kein Bus ist), verhindert Schlimmeres.)
Wir lernen etwas dabei in Bezug auf den "EXbus". Er ist auch virtuell im Empfänger kein "Bus". Er ist ein separiertes Protokoll (immer dasselbe, natürlich) auf jedem Port des Empfängers, der als EXbus deklariert ist. Den Begriff "Bus" kann man lediglich dahingehend gelten lassen, das so eine 2-Punkt-Verbindung nun bidirektional sein kann, Kanaldaten in die eine Richtung, Sensordaten in die Gegenrichtung. Es ist sogar so, dass das Senden der Kanaldaten die Voraussetzung für die Gegenrichtung (Sensor->Rx) ist, der Synchronisationspunkt (den TelMe so schofel behandelt). Dieses Verfahren ist eine von zwei Alternativen auf 1-Wire, auf jeden Fall synchronisieren die Aussendungen des Masters. -- Es ist auch so, dass die beiden Baudrates, 125/250kBd, für die das am Rx EXbus Port angeschlossene Gerät adaptiv reagieren muss, pro Port gewählt werden. Ein Bus mit zwei unterschiedlichen Geschwindigkeiten gleichzeitig, das wäre dann eh kein Bus. (TelMe unterstützt die adaptiv zu wählende Baudrate von 250kBd nicht, nur fixe 125kBd. Das könnte evtl. später Probleme bereiten, wenn ein EXbus Master 250kBd vorschreibt, indem er sie spricht. Bis dato scheinen alle JETI Master selbst nur 125kBd zu verwenden.)-------------------
Zu Letzterem: Bzgl. eigener Daten, deren Update Rate und auch Darstellung, tut TelMe genügend andere weniger nützliche Sachen:
1) Die Definitionen für die EX Displays (Name, Unit (beides Strings), Binärtyp des Displays) müssen alle "Jubeljahre" einmal alle gesendet worden sein (eine Definition pro Paket versendet), dazu auch der Equipment Name (wie "JIVEpro..."). Das wird eigentlich jeweils nur einmal benötigt, nämlich, wenn das Terminal (Sender, Profibox) den Sensor zum ersten Mal lernt. Danach ist das eigentlich egal, aber das kann ein Sensor (TelMe) natürlich nicht riechen.
In der Praxis hat sich "alles einmal gesendet innerhalb 10 Sekunden" als hinreichend erwiesen, - selbst mehr Zeit dafür wäre noch ok. 10 Sekunden sind viel, was man in 10 Sekunden an Nutzdaten senden kann!
TelMe hat diese Regel nicht. Man sendet die Definitionen gleichberechtigt mit Nutzdaten. Da es wesentlich mehr Definitionen gibt als Nutzdatenpakete (binär), nämlich genau zwei, stiehlt dieses unüberlegte Verfahren massiv Update Rate der Nutzdaten.
2) Kommt noch etwas hinzu, fast schon Peanuts, weil "nur" ein weiteres Paket, was keine Nutzdaten enthält: Man bedient auch die Textbox, obwohl man keine produktive Anwendung dafür hat (Status, Setup), da steht nur statisch irgendwas mit "Kontronik" drin.
Die Wirkung sieht man in Anhang 6ff: Unnützerweise verwendet JETI ein Timeout, was, gemessen am Timing der Protokolle, a) Text in EX, b) EX in EXbus, c), wenn ein Expander E4 EX verwendet wird, nicht erst seit EXbus eigentlich zu knapp bemessen ist: ca. 100ms, in den alten JETIboxen (Mini und "Presskohle") hat man sogar ein "Vor-Timeout" von nur 80ms.
Man sieht, zumindest meine Profibox (habe leider keinen JETI Sender als Terminal) fällt stochastisch immer wieder in Timeout ("-------").
3) Was man noch sieht, zumindest in den Displays der Profibox zeitigt es Wirkung: Die Strings der Display-Namen sind zu lang. Sie rutschen dadurch über ihr Limit und in den nächsten String für den Namen der "Unit". Sieht unschön aus. (Wie ist das auf Euren Sendern?)
-------------
Da sich TelMe (die Firmware im ESC) eh wenig an das Protokoll hält, da es ein Gespräch unter 4 Augen ist, weil die Data Update Rate durch o.g. so in Mitleidenschaft gezogen ist, - verstößt S32 nun (seit 1.38) absichtlich selbst gegen das Protokoll, indem er "TelMe" mit der doppelten Frequenz zum Senden veranlasst. Das passt noch in's Timing der Line, es funktioniert, und ein Impact auf die übrige Firmware des ESC ist auszuschließen. Wäre er es, dann hätte man richtig was falsch gemacht, was ich nicht glaube.
Heißt, im Gespräch mit S32 hat TelMe die doppelte Rate im Update der Nutzdaten. Das ist auch nötig.