Open Source Lok-Software für WLANcroc - Diskussion

Benutzeravatar
michaelb
Senior
Beiträge: 121
Registriert: Di 15. Jan 2013, 20:24
Wohnort: Österreich
Kontaktdaten:

Open Source Lok-Software für WLANcroc - Diskussion

Beitrag von michaelb » Mo 18. Aug 2014, 00:24

Ideen, Wünsche, Anforderungen

Hallo Leute!

Es soll also eine neue, offene Softwarelösung für die Lok her. Ich trage einmal den bisherigen Stand der Dinge zusammen:


Erreichter Funktionsstand der ursprünglichen WLANcroc Software
(wie ihn die Projektteilnehmer testen konnten, vorhanden war zweifellos mehr)
  • Steuerung der Lok über NetIO
  • Start/Stop, Geschwindigkeitsänderung und Richtungsumkehr, Notstop
  • Schalten der 8 Schaltfunktionen
  • Geschwindigkeitsrampen (abrupte Geschwindigkeitsänderungen werden von der Lok selbstständig ausgeglichen, Charakteristik einstellbar)
  • Rückmeldung von Geschwindigkeit (und Spannungswerte ?)

Bisher vorgebrachte Anforderungen an die neue Software

Soll als Open Source veröffentlicht werden (samt Protokoll, Hardwaredoku usw.)
und idealerweise auch gemeinsam entwickelt werden (GitHub oä.)

Erster Meilenstein sollte das Erreichen der (für uns ersichtlichen) Funktionalität der Ursprungs-Software sein

Es soll in weiterer Folge die komplette WLANcroc-Originalhardware ("Küsters-Module") unterstützt werden.

Einige Teilnehmer sind auch einer baldigen Raspi-Unterstützung (Linux-Module) nicht abgeneigt (dafür wäre dann andere Software nötig)
Johannes hat geschrieben:Als Lastenheft der ersten Ausbaustufe würde ich nachstehende Funktionalitäten sehen:
  • 1. Motoransteuerung vorwärts / rückwärts, mit und ohne Drehzahlmessung der Motorwelle
  • 2. Stirnlampen vorne / hinten und Rücklichter, jeweils mit Fahrtrichtung wechselnd und einzeln an-/ abschaltbar
  • 3. I2C-Bus Ansteuerung für weitere Beleuchtungseffekte
  • 4. Servoansteuerung für 2 oder mehr Servos (Entkupplung, Panto etc.)
  • 5. ein einfacher Sound (d.h. Pfiffe etc. auch ohne Motor- und/oder Fahrgeräusche) sowie ggf. rudimentäre Ansteuerung eines Rauchgenerators.
Johannes würde auch den Einbau einer DCC-Funktionalität begrüßen (Hardware).

Motoransteuerung: 16bit Timer für PWM bzw. die Unterstützung höherer PWM-Frequenzen (bzw. größere Auswahl) wurde von einigen Teilnehmern als sinnvoll erachtet.

Die Lok-Software sollte soweit möglich auch auf den beliebten Arduino-Clone-Boards mit Atmega 328 lauffähig sein (ggf. mit eingeschränkter Funktionalität).

Heizer fordert Gegen-EMK-Regelung (Geschwindigkeitsregelung) (Hardware-Beschaltung, Spannung muss gemessen werden),
Regel-Algorithmus (Adler Nbg ?), Timer-Bedarf?

Für UART, I2C gibt es fertige, vielfach erprobte Bibliotheken von Peter Fleury (AVR-Software).


TODO:
  • vollständiges "Lastenheft"
  • Protokoll /Befehlssatz ist zu definieren
  • Definition der Hardware / Beschaltung, für alle nachvollziehbare Anleitungen

Ich bitte, weitere Ideen, Wünsche, Anforderungen usw. zu ergänzen..

Schöne Grüße,
Michael
Zuletzt geändert von michaelb am Mo 18. Aug 2014, 13:10, insgesamt 1-mal geändert.

Benutzeravatar
ateshci
Senior
Beiträge: 193
Registriert: Mi 16. Jan 2013, 15:12
Wohnort: Friedberg(Hessen)
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Open Source Lok-Software für WLANcroc - Diskussion

Beitrag von ateshci » Mo 18. Aug 2014, 09:36

@Michaelb
Für die Motorregelung sollte, ebenfalls mittlerweile als AN veröffentlicht, eine Gegen-EMK-Ausführung mit wahlweise 100 Hz und ~16kHz entsprechend dem aktuellen Stand bei DCC, vorgesehen werden.
Gruß vom Heizer

Benutzeravatar
Adler Nbg
Senior
Beiträge: 136
Registriert: Di 15. Jan 2013, 22:53
Wohnort: Nuernberg
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Open Source Lok-Software für WLANcroc - Diskussion

Beitrag von Adler Nbg » Mo 18. Aug 2014, 17:06

Hallo Zusammen,

Back EMF bzw. Gegen-EMK von einem Bürstenmotor (brushed dc motor) zu messen, ist technisch mit dem Atmega Chips machbar.
Es gibt dazu 2 unterschiedliche Ansätze, wobei einer von den Hardwareanforderungen relativ einfach und damit auch kostengünstig ist.
Einen Algorithmus dazu habe ich schon mal gesehen, aber nicht getestet:
Man braucht einen (16 Bit-)Timer, der zeitlich abgestimmt zu dem PWM-Signal am Motor-Pin Spannungsmessungen an einem Analog-Pin vornimmt.
Das dürfte auch in einem wählbaren Frequenzbereich möglich sein.
Der zweite Schritt ist dann, den Gegen-EMK Algorithmus mit dem (PID-)Regelalgorithmus (und wählbare PID-Alternativwerte für
steile, flache Rampe, volle, teileweise Anpassung an Laständerung, ...) in Einklang zu bringen.
Ich schaue mir eine mögliche Anpassung an unser Projekt mal an. ;)

Viele Grüße
Michael

Benutzeravatar
michaelb
Senior
Beiträge: 121
Registriert: Di 15. Jan 2013, 20:24
Wohnort: Österreich
Kontaktdaten:

Re: Open Source Lok-Software für WLANcroc - Diskussion

Beitrag von michaelb » Di 19. Aug 2014, 23:46

Hallo Leute!

Die Motor-Regelung sollte die Geschwindigkeits-Information aus der "Back EMF" oder über den Hall-Sensor an der Motor-Welle beziehen können.

Ich nehme an, dass man die Motor-Regelung auch deaktivieren können soll. Die Lok-Software muss aber dann trotzdem dafür sorgen, dass es keine sprunghaften Geschwindigkeitsänderungen gibt (und die Charakteristik sollte ebenfalls einstellbar sein). Meiner Meinung nach sollte das Aufgabe der Lok-Software sein, nicht der Steuerungs-Software.

Gehe ich recht in der Annahme, dass man dann die Regelung trotzdem weiter laufen lässt und statt des gemessenen Geschwindigkeits-Wertes dann einfach die "alte" Geschwindigkeitsvorgabe verwendet, oder so ähnlich zumindest..?

Wenn jemand sein Wissen über Regelungstechnik ergänzen oder aufpolieren will, gibt es zB. beim Roboternetzwerk einen netten kleinen Regelungstechnik-Artikel.


Schöne Grüße,
Michael

Benutzeravatar
gatzi
User
Beiträge: 97
Registriert: Di 15. Jan 2013, 21:00
Wohnort: Bremen
Kontaktdaten:

Re: Open Source Lok-Software für WLANcroc - Diskussion

Beitrag von gatzi » Mi 20. Aug 2014, 01:12

Hallo zusammen,

das wirft die Frage auf, wie "intelligent" man die Lok-Software machen will, bzw. wie die Aufgabenverteilung zwischen Lok- und Steuerungssoftware sein soll.

Wichtig wäre für mich, dass die Lok lediglich von außen Befehle zur Ausführung bekommt, die Entscheidungen aber, wie diese dann ausgeführt werden, in der Lok getroffen wird. Ansonsten müssten bei der Übergabe der Lok an einen anderen Bediener der gesamte Parametersatz ebenfalls weitergeleitet werden.

Mir fallen spontan zwei Beispiele ein:
[*]Überfährt die Lok einen RFID, fragt sie bei der "Zentrale"/am Bediengerät nach, was dieser bedeutet. Die Rückmeldung ergibt z.B. bei einer Langsamfahrstrecke eine erlaubte Höchstgeschwindigkeit. Diese einzuhalten, also ggf. auf die erlaubte Geschwindigkeit abzubremsen, wäre dann Aufgabe der Lok bzw. ihrer Software. Das würde dann auch einer möglichen Automatisierung entgegenkommen.
[*] Je nach Streckenzustand und/oder Belastung durch einen angehängten Zug muss die Lok-Software nachregeln können, insbesondere wenn der Kontakt zum Bediengerät (vorübergehend) verloren geht. Dann müsste z.B. ein US-Zug mit vielen Wagen sanft abgebremst werden oder entsprechend geregelt weiterfahren können.

Bei DCC wird ja darauf geachtet werden, dass auf analogen Strecken die Lok gleichermaßen gut läuft. Dazu muss aber die entsprechende Regelungstechnik in der Lok vorhanden sein.
Ist so ein Fall ebenfalls für die WLAN-Lok denkbar?

Mir fällt da nur ein, dass aus irgendwelchen Gründen die WLAN-Steuerung aussetzt und die Lok dann in eine Art analogen Modus zurückfällt, also nur auf die Schienenspannung reagiert, damit so dennoch Fahrbetrieb möglich ist.
Wie realistisch ist das?

Viele Grüße
Holger
Meine Gartenbahn-Website >>>
Mein Gartenbahn- und Modellbau-Blog >>>
Schmalspur 1:22,5 im Garten, Regelspur 1:160 im Haus

Benutzeravatar
Pirat-Kapitan
Senior
Beiträge: 153
Registriert: So 28. Okt 2012, 14:09
Wohnort: Rösrath (bei Köln)
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Open Source Lok-Software für WLANcroc - Diskussion

Beitrag von Pirat-Kapitan » Mi 20. Aug 2014, 10:25

Hi,
Holger hat die "Fail save option" angesprochen, u.a. für den Fall, dass die Kommunikation abbricht.
M.E. sind zwei Alternative denkbar:
1. die Lok fährt mit der bisherigen Geschwindigkeit weiter bis sie da nächste Kommando bekommt
2. die Lok bremst mit der Regelverzögerung auf Stopp ab.

Zu 2. sehe ich eigentlich nur in Tunnelstrecken Probleme, zu 1. sehe ich das Problem, dass die Lok im Extremfall sich gar nicht mehr anhalten läßt.
Ich würde daher eine Kombination 1 + 2 vorschlagen, so dass die Lok eine einstellbare Zeit weiterfährt (Alternative 1) und danach gemäß Alternative 2 zum Stehen kommt. Die Zeit, für die Alternative 1 zum Tragen kommt, sollte in der Lok hinterlegt / hinterlegbar sein.

Ich würde überhaupt möglichst viele (wenn nicht alle) Einstellungen in der Lok vornehmen / speichern. Dann bin ich bei der Auswahl der Steuerungssoftware flexibler und brauche diese nur zum Übertragen meines "Willens" an die Lok. Die details der Ausführung kenn dann die Lok schon und kann sich danach richten (ja ich weiß, ich bin vom Militär ;) ).

Lastregelung:
die gegen-EMK-Messung wie bei DCC würde ich persönlich begrüßen, auch wenn sie nicht so genau ist wie die Messung der Motorwellenumdrehungen. Aber für das Messen der Motorwellenumdrehungen muss ich einen Messgeber einbauen, der bei Gegen-EMK nicht erforderlich ist.So würde ich die gegen-EMK für den "Normalbetrieb" vorziehen und nur dann, wenn ich mehreer Motoren / Loks zusammen fahren lassen will / muss auf die Motorwellendrehzahl-gestützte Regelung zurückgreifen.

Schöne Grüße
Johannes
Lenz DCC mit Manhart-Funky, Roco WLM und Rocrail auf RasPi.
Micky Maus Technologie (40MHz R/C) für Echtdampf.

Benutzeravatar
Adler Nbg
Senior
Beiträge: 136
Registriert: Di 15. Jan 2013, 22:53
Wohnort: Nuernberg
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Open Source Lok-Software für WLANcroc - Diskussion

Beitrag von Adler Nbg » Mi 20. Aug 2014, 19:11

Hallo Zusammen,

bei Regelungstechnik bewege ich mich noch ganz am Anfang. ;)
Aber Versuch macht kluch.

Die Hall-Sensoren bedürfen einer genauen Ausrichtung beim Einbau in die Motorgehäuse,
sie liefern stabile Signale, welche am Digital Pin des MCs mit Interrupt-Routine verarbeitet werden können.
Analog Pin ginge auch, Software habe ich hierzu nicht getestet.

Back-Emf kann an Analog und Digital-Pin gemessen werden.
Für den Digital-Pin wird aber eine kleine Schaltung mit Komparator bspw. LM393 benötigt, Materialkosten ca. 1,36 Euro zzgl. Lochstreifenplatine und Versandkosten
bei bspw. reichelt de.
Hier die Fritzing Skizze der noch nicht getesteten Schaltung.
Vorteil Digital-Pin: im Prinzip kann der gleiche Softwarealgorithmus wie beim TLE-Sensor am Digital-Pin angewendet werden.
Allerdings muß dabei die Schaltung für unsere gewünschten Motor-PWM-Frequenzbereiche saubere Signale liefern (Das wäre zu testen).

Für den Analog-Pin sind "nur" ein paar Widerstände und ggf. ne Diode gegen Spannungsspitzen notwendig. (Das ist auch noch zu testen).
Hier ist die Software recht trickreich.
Es gibt Lösungsansätze, bei denen mit der "Halbierung der H-Brücke" gearbeitet wird (Abschaltung einer Hälfte einer H-Brücke,
während die andere Hälfte Spannung liefert). Dieser Ansatz kostet dann aber Pro Motor 2 PWM-Signale vom MC... :evil:
An dem Ansatz ohne Halbierung, also nur ein PWM-Signal vom MC pro Motor, tüftel ich gerade.
Die Herausforderung ist hierbei, dass das Timing von PMW-Signal mit dem Timing des Signals am Analog Pin sauber koordiniert ein Filtern möglich macht,
mit dem dann RPMs gemessen werden können. Der Atmega 328p hat leider nur einen 16 Bit Timer, der dann einstellbare MotorFrequenz, Back-Emf oder Hall-Sensor
und mgl. 2 Motoren abarbeiten darf. ;)

Grundsätzlich bin ich auch dafür, möglichst viel Logik in dem Lok MC zu etablieren, gerade um bspw. bei Kommunikationsabbrüchen rechtzeitig die Lok abzustoppen.

Viele Grüße
Michael
Zuletzt geändert von Adler Nbg am Mi 20. Aug 2014, 21:54, insgesamt 1-mal geändert.

Benutzeravatar
ateshci
Senior
Beiträge: 193
Registriert: Mi 16. Jan 2013, 15:12
Wohnort: Friedberg(Hessen)
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Open Source Lok-Software für WLANcroc - Diskussion

Beitrag von ateshci » Mi 20. Aug 2014, 20:55

Es nur so, dass der Motor leer drehen muss und man seine Generatorspannung misst. Üblicherweise sind dazu die unteren MOSFETs der Brücke je nach Fahrtrichtung durchgeschaltet und die oberen getakteten werden für die Dauer der Messung gesperrt. Über ein Widerstandsnetzwerk wird von beiden Seiten die Spannung abgegriffen und kann so an einem A/D-Pin gemessen werden. Das Problem ist, dass bei hoher Taktfrequenz und einem Eisenankermotor die Pulspause nicht ausreicht, um die Gegen-EMK zu messen. Da muss eine Abtastung mit relativ langer Zeit zwischen den Abtastungen her, die einerseits schnell genug ausregelt und andrerseits den erreichbaren Tastgrad durch die Mindestlänge der Tastpause von ca. 2..4msec nicht zu sehr einschränkt. Ich erhalte bei 50msec Messintervall und 2msec Messzeit einen Tastgrad von höchstens 96%.
Gruß vom Heizer

Benutzeravatar
ateshci
Senior
Beiträge: 193
Registriert: Mi 16. Jan 2013, 15:12
Wohnort: Friedberg(Hessen)
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Open Source Lok-Software für WLANcroc - Diskussion

Beitrag von ateshci » Mi 20. Aug 2014, 21:58

Noch als Ergänzung: Jeder Motor erzeugt wegen seiner Ankerinduktivität im Augenblick des Abschaltens einen der angelegten Spannung entgegengesetzten ( vereinfacht gesagt also einen negativen ) Spannungsimpuls, dessen Höhe u. a. vom Ankerstrom und dessen Abklingzeit von der Ankerinduktivität abhängt. Die im so erzeugten Magnetfeld gespeicherte Energie muss erst abgebaut werden, bevor man die erzeugte Gegen-EMK messen kann.
Gruß vom Heizer

Benutzeravatar
Adler Nbg
Senior
Beiträge: 136
Registriert: Di 15. Jan 2013, 22:53
Wohnort: Nuernberg
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Open Source Lok-Software für WLANcroc - Diskussion

Beitrag von Adler Nbg » Mi 20. Aug 2014, 22:13

Hallo Heizer,

Ja, darin liegen die Herausforderungen.
Verfügbares Zeitintervall für eine valide Messung, von dessen Länge der erste Teil abgeschnitten werden muß, um den von Dir beschriebenen Effekt auszufiltern.

Naja, dann kommt hinzu, dass mit diesem Ansatz nicht permanent jede Umdrehung gemessen wird.
Das schränkt dann wiederum mgl. Makrosteuerungen basierend auf Motorumdrehungen ein (bspw. Fahre 3000 Umdrehungen mit durchschnittlicher Motorumdrehung x, bremse dann über 1000 Umdrehungen mit gewählter Rampe auf durchschnittliche Motorumdrehung y herunter, mache dann...).

Zur oben genannten Forderung der Deaktivierung von Motorregelung (PID für Rampen, Lastregelung, usw.): Das ist wichtig und sinnvoll in der Lok zu etablieren, gerade beim Notstop.
Ansonsten sollte bei allen anderen Verzögerungs-, Beschleunigungsmanövern und Wiedereinschalten der PID-Regelung diese abrupte Wechsel eher "glätten".

Viele Grüße

Michael

Antworten
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Zurück zu „Alles rund um die Software“