Page 1 of 1

Mindestzykluszeit

Posted: 22 Feb 2018, 22:06
by Friedrich
Hallo zusammen,

mir wäre sehr geholfen, wenn ich eine Mindestzykluszeit einstellen könnte. Damit wären dann definierte Pulsbreiten möglich.
Habt ihr so was auf der Roadmap?

Grüße
Friedrich

Re: Mindestzykluszeit

Posted: 22 Feb 2018, 22:57
by volker
Wir haben auf dem Schirm, dass der User die Zykluszeit für die RS485 gesteuerten Module (DIo, Di, DO, AIO) festlegen kann.
Aber ich frage mich gerade, was Du als "definierte" Zykluszeit einstufst. Letztlich geht es doch um den maximalen Jitter, richtig? Der Jitter ist aktuell eigentlich ziemlich klein. Wenn er Dir immer noch zu groß ist, dann habe ich eine gute Nachricht: Wir haben festgestellt, dass der Jitter durch eine Maßnahme von Raspi entsteht: Die haben bei der Takfrequenz leider dafür gesorgt, dass nicht nur die CPU mit wechselnden Frequenzen getaktet wird (im Idle geht die CPU auf 600 MHz runter, um weniger Leistung zu verbraten und ab einer bestimmten Last wird sie dann erst auf 1.2 GHz getaktet). Mit der Umschaltung wird auch die SPI Clock und die UART Baudrate beeinflusst. Und dabei passiert es dann: Immer wenn die Taktfrequenz der CPU umgeschaltet wird bekommen wir auf der PiBridge einen etwas größeren Jitter.
Was ist daran die gute Nachricht? Wir haben im neuen Stretch Image (wird sehr bald veröffentlicht) in unserer Web-Status GUI eine Möglichkeit eingebaut, dass Du nicht nur die maximale CPU Taktfrequenz umstellen kannst (das geht heute auch schon), sondern dass Du auch dieses Umschalten im idle Zustand abschalten kannst. Das geht dann zwar auf Kosten der CPU Temperatur (1-2 °C höher) aber Du kannst ja auch statt 1.2 GHZ dann z.B. auf 1 GHz runter takten, um den Temperturbereich zu maximieren. Jedenfalls bekommen wir damit einen deutlich geringeren Jitter, der vielleicht den Erwartungen an eine "definierte" Zykluszeit näher kommt.
Nur noch zur Sicherheit:
Wenn es dir mehr darum ging, dass die Zykluszeit sich dynamisch anpasst: Das passiert eigentlich nur bei Änderung der Konfiguration des modularen Aufbaus Deines Systems. Wenn Du also das System einmal so belässt, wie es ist, dann ist auch die Zykluszeit konstant. Aber das wird wahrscheinlich nicht das sein, was Du brauchst. Dann muss ich Dich aber vertrösten. Ich bin mir nämlich nicht sicher, ob das Einstellen der Zykluszeit schon im neuen Stretch image eingebaut wurde. Kann sein dass die Kollegen das da noch nicht eingebaut haben.

Re: Mindestzykluszeit

Posted: 23 Feb 2018, 17:46
by Friedrich
Ja, das meine ich schon, dass ich die Zykluszeit für die Dio's usw. einstellen kann. Den Jitter meine ich gar nicht.
Ich möchte beispielsweise 20ms Zykluszeit einstellen. Dann kann ich genau 100ms lange Impulse ausgeben.
Oder ich kann, was ich eigentlich vor habe, eine serielle Kommunikation mit z.Z. 10Baud machen. Oder mit 5 Baud, oder.
Mit einer Zykluszeit von 13ms kann ich das nicht.
Außerdem kann ich bei 20ms Zykluszeit durch einfaches Zählen der Zyklen Timer bauen.
Gibt es schon einen Termin dafür?

Danke
Friedrich

Re: Mindestzykluszeit

Posted: 23 Feb 2018, 18:02
by volker
Das muss ich beim Entwicklerteam anfragen. Wegen der messe nächste Woche (embedded world) kann das aber ein wenig dauern...
Mal ganz generell:
Timing für serielle Signale als Kriterium für 0/1 zu nehmen ist nicht immer die beste Idee. Damit handelt man sich ziemlich viel Stress ein. Warum statt 2 Adern nicht 3 verwenden und eine der Leitungen als Clock? Dann hast Du keinen Stress mit Timings und kannst ganz entspannt sogar eine beliebige Programmiersprache wie Node.Red oder logi.CAD verwenden.
Wir haben gerade so etwas in Rahmen einer Kommunikation mit dem PitMode Betriebsartenwahlschalter von PILZ realisiert. Die 24 V Bussignal machen das ganze extrem robust und man kann damit gut und gerne lange strecken EMV verseuchter Landschaften durchqueren. Die Bitrate ist eh durch die Zykluszeit begrenzt auf ca. 50 bps. Und die Digitalkanäle schlagen ja mit geringen Kosten pro Kanal zu. Wenn man dann nicht gerade in einem Automotive-Umfeld arbeitet, wo jedes Gramm Gewichtseinsparung zählt, dann macht die 1 Ader mehr pro Kanal auch nicht so viel aus bei der Verkabelung. kann ja eh mit 0,25 qmm oder drunter gearbeitet werden.

Re: Mindestzykluszeit

Posted: 22 Oct 2020, 14:32
by Stefanostahl
Hallo zusammen,

ich weiß es ist schon ziemlich viel Zeit nach dem letzten Post zu diesem Thema vergangen, allerdings habe ich bei unserem Projekt ein ähnliches Problem.

Mal kurz zu unserem Projekt. Wir wollen mit Hilfe der AIO-Module die (skalierten) Eingänge für ein Smart-Meter simulieren. Hierbei soll der Strom als RMS-Wert und die Spannung als Sinussignal (50 Hz) ausgegeben werden. Da die PiBridge-Zyklen allerdings zu lang sind um ein sauberes Sinussignal zu simulieren, soll die Spannung als Rechtecksignal (-> Periodendauer: 20 ms) ausgegeben werden.
Das Problem, das sich daraus ergibt ist ähnlich zu dem was Friedrich beschrieben hatte. Wir wollen alle 10 ms einen neuen Wert vorgeben (Python-Skript), welcher über die AIO Module ausgegeben wird (eine gewisse Latenz ohne Singalverzerrung ist kein Problem). Entsprechend würden wir einen PiBridge-Zyklus benötigen, der die Ausgänge genau alle 10 ms aktualisiert.

Wir haben aktuell einen RevPi Connect + und 2 AIO Module miteinander verschaltet (PiBridge-Zyklus: 7 ms), welche wir in einem 10 ms Zyklus betreiben wollen. Daher wäre es interessant zu wissen, ob mittlerweile die Möglichkeit existiert, die Zykluszeiten der PiBridges selbst festzulegen (hier erhöhen).

Für alle Antworten (auch wenn es ein Nein ist) wäre ich sehr dankbar ;)

Viele Grüße
Stefan

Re: Mindestzykluszeit

Posted: 27 Oct 2020, 15:40
by dirk
Hi “Daher wäre es interessant zu wissen, ob mittlerweile die Möglichkeit existiert, die Zykluszeiten der PiBridges selbst festzulegen (hier erhöhen).”
Nein, die Zykluszeit der piBridge lässt sich nicht ändern. Dieser Zyklus wird wird ja von piControl vorgegeben und ist nur abhängig von der Anzahl und Art der angebundenen Module.

Re: Mindestzykluszeit

Posted: 03 Nov 2020, 14:50
by Stefanostahl
Hey Dirk,

erstmal vielen Dank für die schnelle Antwort (und Entschuldigung für die verspätete Rückmeldung).

Deiner Antwort entsprechend müsste man für eine Änderung der Zykluszeiten den Quellcode von PiControll modifizieren oder? Ich hab mich demzufolge mal auf die Suche nach den betreffenden Dateien gemacht, konnte sie jedoch bisher allerdings noch nicht hundertprozentig genau verorten. Daher wollte ich ich fragen, wo die entsprechenden Programmdateien (in welchen die Zykluszeit bestimmt wird/die zu übertragenden Daten festgelegt sind) zu finden sind (bzw. ob sie im schreibgeschützten Bereich liegen)?
Da ich die Quelldateien noch nicht habe, weiß ich nicht, ob mein Vorhaben möglich ist. Der Plan war die zu übertragenen Datenmengen zu reduzieren, indem wir die redundanten Werte (alle Eingänge) aus der Übertragung entfernen. Volker hatte angedeutet,dass so etwas möglich wäre (Beitrag 7): viewtopic.php?f=4&t=391&p=1486&hilit=pi ... ssen#p1486 (ist halt schon ewig her).

Sollten diese Fragen in irgendeiner Weise abwegig sein, bitte ich das zu entschuldigen (bin als Praktikant ganz neu in diesem Thema).

Viele Grüße
Stefan

Re: Mindestzykluszeit

Posted: 11 Nov 2020, 10:20
by dirk
Hallo Stefan, das System ist offen und gewollt ist ja auch Dinge modifizierbar und transparent zu machen für jeden. Allerdings sollte Dir klar sein, dass ist hier eine Grenze ist vom sicheren zum experimentellen Betrieb, bei der Du auf Dich gestellt bist. Im Git Hub Repository findest Du alle Sourcen zum kernel und picontrol Kernel Modul. Viel erfolg.