Menu

ControllerModul

Dave Brondsema Steffen A. Mork

Die Steuer-Controller

die Steuerung besteht aus den CAN-Knoten und Steuermodulen, die über Flachbandkabel mit den CAN-Knoten verbunden werden. Es gibt drei 16-polige parallele Ports und einen 10-poligen seriellen Port. Ferner steht zur Programmierung noch ein 10-poliger SPI-Port zur Verfügung. Die CAN-Knoten haben Eigenintelligenz, während die angeschlossenen Module nur über Leistungselektronik verfügen. Über die parallelen und seriellen Ports wird noch die Spannungsversorgung von 12V, 5V und Masse geführt, um diese Module nicht extra verkabeln zu müssen. Die parallelen Ports haben acht IO-Leitungen, die je nach Modul sowohl als Eingang oder Ausgang verwendet werden. Für die parallelen Ports existieren derzeit drei Module:

  1. Weichenmodul
  2. Gleisabschnittsmodul mit Gleisbesetztmeldung
  3. Beleuchtungsmodul mit Soft-PWM

Der serielle Port dient als Anschlussmöglichkeit für serielle Schieberegister. Hierüber können Lichtsignale angeschlossen werden.

Die CAN-Knoten sind über CAN-Bus miteinander verbunden. Der CAN-Bus wird mit 125 KBit betrieben. Jeder CAN-Knoten erhält eine eindeutige ID zwischen 1 und 2000 inkl. Die ID 2047 spricht alle CAN-Knoten an (Broadcast), die ID 0 entspricht dem CAN-Gateway (s.u.) und die ID 2046 wird an unkonfigurierte Controller vergeben. Diese ID wird als Standard ID gemäß dem CAN-Standard V2.0a vergeben. Die angeschlossenen Geräte (Weichen, Signale, Gleisabschnitte) werden mit einer 16-bittigen Unitnumber versehen. Sie sind Bestandteil der Extended ID gemäß dem CAN-Standard V2.0b. Die übrigen zwei Bits der Extended ID werden nicht verwendet und sollten daher auf 0 bleiben.

Die Pin-Belegung erkennt man an folgender Grafik:

Anschlüsse CAN-Controller

Pinbelegung 16-pol. paralleler Anschluss

 (1)  5V -o o- Px0  (2)
 (3)  5V -o o- Px1  (4)
 (5) GND -o o- Px2  (6)
 (7) GND -o o- Px3  (8)
 (9) GND -o o- Px4 (10)
(11) 12V -o o- Px5 (12)
(13) 12V -o o- Px6 (14)
(15) 12V -o o- Px7 (16)

Pinbelegung 10-pol. serieller Anschluss

 (1)  GND -o o- GND  (2)
 (3)  Set -o o- 12V  (4)
 (5)  CLK -o o- 12V  (6)
 (7) Data -o o- 12V  (8)
 (9)   5V -o o-  5V (10)

Programmierung

Die Firmware ist in C programmiert. Um die CAN-Module bequem flashen zu können, hat jedes CAN-Modul eine SPI-Schnittstelle auf dem Board. Die CAN-Knoten haben einen Bootloader. Über diesen können die CAN-Knoten In-System eine neue Firmware erhalten. Das Flash-Protokoll ist ebenfalls CAN-basiert. Somit sollte eine Programmierung nur einmal initial bei der Inbetriebnahme des Controllers notwendig sein. Das CAN-Gateway erhält gesonderte Firmware.

CAN-Gateway

Die Kommunikation mit dem Steuerrechner übernimmt ein spezielles Controller-Modul: Das CAN-Gateway. Dieser ist einerseits mit dem CAN-Bus verbunden und andererseits über RS232 mit dem Steuerrechner. Das CAN-Gateway hat die festgelegte ID 0. Die RS232-Schnittstelle ist auf 115200 Baud programmiert mit den Eigenschaften 8N1 (8 Datenbits, kein Parity, 1 Stopbit). Am CAN-Gateway kann ein Lichtsensor angeschlossen werden. Über diesen werden die Helligkeitswerte über den CAN-Bus verteilt. Es bleibt den CAN-Knoten freigestellt, auf diese Meldungen zu reagieren.

Nachrichtenaustausch

Die Kommunikation ist bidirektional. Es können alle CAN-Knoten auf einmal (ID 2047, Broadcast) adressiert werden und jeder für sich einzeln. Die Antworten sind immer an ID 0 des CAN-Gateways adressiert. Diese Nachrichten werden an den Steuerrechner weitergeleitet. Bei Zustandsänderungen am CAN-Knoten können diese ohne Anfrage Nachrichten versenden. Zwischen den CAN-Knoten können Meldungen ausgetauscht werden, auch wenn davon bisher kein Gebrauch gemacht wird.

Takt

Die CAN-Knoten haben einen ATmega32 Mikrocontroller. Der CAN-Controller ist ein MCP2515. Der MCP2515 wird mit 16 MHz betrieben. Der Takt der ATmega's der CAN-Knoten wird über den externen Takt des MCP2515 (CLKOUT) mit Taktteiler 1 versorgt. Daraus resultiert ein Takt von 16 MHz. Der ATmega des CAN-Gateways hat einen eigenen Quarz mit 14,7456 MHz, um ein ganzzahliges Vielfaches der 115200 Baud der RS232-Schnittstelle zu erhalten. Der CAN-Controller des CAN-Gateways hat einen eigenen Quarz von 16 MHz.

Stromversorgung

Die CAN-Module werden mit 12V Gleichspannung versorgt. Auf den Boards ist ein Spannungsregler vorhanden, der eine Versorgungsspannung von 5V bereitstellt. Diese Spannungen und Masse werden über die Port-Anschlüsse und den seriellen Anschluss an die Steuermodule gereicht, um dort weiteren Anschluss- und Schaltungsaufwand zu vermeiden.

RS232

Über die RS232-Schnittstelle werden im Prinzip CAN-Frames übertragen. Das Datenformat lautet wie folgt:

Name Datentyp Bedeutung
length uint8_t Zahl der Datenbytes (0-8)
status uint8_t Status, näherer Erläuterung s.u.
sid uint16_t Standard ID (= Controller ID) 11 Bits verwendet, Rest 0
eid uint16_t Extended ID (= Unitnumber)
data[8] uint8_t Die Datenbytes
checksum uint8_t Die Prüfsumme: Die Summe aller versendeten Bytes inkl. der Prüfsumme muss 0 ergeben.

Um eine stabile Kommunikation mit dem CAN-Gateway zu erreichen, müssen folgende Bedingungen erfüllt sein:

  1. Das erste Byte (Länge) muss zwischen 1 und 8 liegen.
  2. Die Gesamtzahl der Bytes pro CAN-Frame berechnet sich wie folgt: 7 + length. Diese Länge darf nicht überschritten werden
  3. Die Prüfsumme muss stimmen, die Position des Prüfbytes ergibt sich aus Punkt 2.

Der CAN-Standard lässt Frames ohne Datenbytes zu, allerdings hat dieses spezielle Kommunikationsprotokoll für jedes Frame mindestens ein Byte für ein Steuerkommando bzw. die Antworten haben mindestens vier Bytes.

Schaltung

Das Entwicklungswerkzeug der Schaltungen ist Eagle 4. Die Durchgangsprüfungen ermöglichen die Überprüfung einer korrekte Verdrahtung, bevor die Schaltung mit den Controllern versehen wird.

Fuses und Locks

Die ATmegas haben sog. Fuses, mit denen man diese Mikrocontroller in bestimmte Betriebszustände bringen kann. Die Belegung sieht wie folgt aus:

Fuse CAN-Gateway CAN-Knoten (ohne JTAG) CAN-Knoten (mit JTAG)
EESAVE 0 1 1
BOOTSZ0 1 1 1
BOOTSZ1 1 1 1
BOOTRESET 0 1 1
JTAGEN 1 0 1
OCDEN 1 0 1
SPIEN 1 1 1
BODEN 1 1 1
BODLEVEL 1 1 1
CKOPT 1 1 1
SUT0 0 1 1
SUT1 1 0 0
CKSEL0 1 1 1
CKSEL1 0 1 1
CKSEL2 0 1 1
CKSEL3 0 1 1

Damit ergiebt sich folgende Hexadezimal-Werte für die Fuses:

CAN-Microcontroller Fuse (Hex.)
CAN-Gateway 0x091e
CAN-Knoten (ohne JTAG) 0xc020
CAN-Knoten (mit JTAG) 0x0020

Die Werte wurden mit dem Fuse Calculator berechnet.

Ansteuerung

Es werden vier unterschiedliche Ansteuerungsszenarien gebraucht:

  1. Weichen und Formsignale (Magnetantriebe)
  2. Lichtsignale
  3. Abschaltbare Gleisabschnitte, samt Gleisbesetztmeldung
  4. Haus- und Straßenbeleuchtung

Magnetantriebe

Die Magnetantriebe für Weichen und Formsignale werden üblicherweise mit 14-16V AC geschaltet. Da aber Gleichstrom verwendet wird, wurde ein Spannungspegel von 18V gewählt. Dieser muss in die Weichenmodule separat eingespeist werden. Bei der Schaltung fließt ein relativ hoher Strom. Da aber die Schaltung nur kurzzeitig aktiv ist (max. 500ms), fällt hier kein Dauerstrom an. Wenn ein Controller mehrere Magnetartikel schalten muss, wird der Schaltvorgang nacheinander durchgeführt.

Moderne Fleischmann-Weichen haben eine Endabschaltung. Darüber wird die Weichenlage abgefragt. Das wird bei Fleischmann dafür ausgenutzt, Blocksignale anzuschließen, die je nach Schaltzustand das richtige Signalbild abgeben. Da alte Fleischmann-Weichen keine Endabschaltung haben, würden im oberen Szenario beide Lichter permanent leuchten. Das Ansteuern von Signalbildern soll nicht über Weichen geschehen.

Lichtsignale

Lichtsignale werden üblicherweise an 14-16V AC angeschlossen. Eine Beschaltung per 12V DC ist natürlich möglich und vereinfacht somit die Ansteuerung erheblich. Die Signalbilder sind zum Teil unterschiedlich komplex und brauchen 2-5 IO-Pins.

Signaltyp Signalbilder IO-Pins bei direkter Ansteuerung
Vorsignal Vr0/Vr1 2
Vorsignal Vr0/Vr1/Vr2 4
Blocksignal Hp0/Hp1 2
Einfahrsignal Hp0/Hp1 2
Einfahrsignal Hp0/Hp1/Hp2 3
Ausfahrsignal Hp00/Hp0 Sh1/Hp1/Hp2 5
Gleissperrsignal Sh0/Sh1 2

Auf der neuen Anlage sind alleine 13 Ausfahrsignale verbaut. Hier wird klar, dass eine große Zahl an IO-Pins gebraucht wird. Ein idealer Fall für die Ansteuerung über serielle Portbausteine (74HC595N). Der Vorteil hier: Es muss keine Rückantwort ausgewertet werden, bzw. ein Impuls erzeugt werden wie bei den Magnetartikeln. Einfach nur Bitmuster aufschalten - fertig. Wenn mal ein Bit verloren geht, wird zwar ein falsches Lampenmuster angezeigt, die Funktionsfähigkeit wird dadurch nicht beeinträgtigt, da Lichtsignale auf einer Modellbahn nur Kosmetik sind. Anders sieht es bei Weichen aus. Hier kann ein zu langer Dauerstrom die Spulen zerstören. Daher ist es sinnvoll, diese direkt über die Portpins anzusteuern. Bei einem Notaus, wird einfach das Bitmuster 0x0 aufgeschaltet und es ist Ruhe! Das Gleiche gilt übrigens für die Steuerung der Gleisabschnitte. Hier kann man durch Aufschalten von 0x0 die Anlage notfallmäßig abschalten.

Gleisabschnitte

Um Lokomotiven zum Stillstand zu zwingen, werden Gleisabschnitte stromlos geschaltet. Hier kommen Relais zum Einsatz, da hier unterschiedliche Spannungen geschaltet werden müssen. Diese sind entweder

  1. 0-12V DC mit jeweils umgekehrter Polung für vorwärts und rückwärts (klassisch)
  2. 20V Spannung mit aufmodulierten Steuersignalen (DCC). Ein Decoder in der Lok wertet die Steuersignale aus und steuert entsprechend den Motor. (Decoder)

Derzeit sind alle meine Loks klassisch ohne Decoder.

Eine weitere Möglichkeit der Gleisabschnitte besteht darin, eine Gleisbesetztanzeige zu benutzen. Durch den Innenwiderstand der Lok wird ein Stromkreis geschlossen. Dieser Strom lässt sich messen. Die Messung erfolgt durch Spannungsabfall über zwei Dioden. Dieser Spannungsabfall treibt einen Optokoppler, der das Besetztsignal als TTL-Pegel an den CAN-Knoten melden kann.

Haus- und Straßenbeleuchtung

Ein weiteres Anwendungsgebiet ist die Haus- und Straßenbeleuchtung. Diese können sowohl über das Lichtsignalmodul, als auch über ein eigenes Beleuchtungsmodul an einem parallelen Port angeschlossen werden. Während am Lichtsignalmodul nur an einem Pin die Lampe an- und ausgeschaltet werden kann, kann über das Beleuchtungsmodul ein Zündprofil angesteuert werden. Technisch ist das über Soft-PWM realisiert. Dadurch kann z.B. das Einschalten einer Neonröhre realistisch nachgeahmt werden. Zu diesem Zweck kann jeder Anschluss am Beleuchtungsmodul frei aus verschiedenen Lichtprofilen konfiguriert werden.


Related

Wiki: AnlageZwei
Wiki: DurchgangsPruefung
Wiki: FleischmannBahn
Wiki: FormSignal
Wiki: GleisBesetztMeldung
Wiki: GrobArchitektur
Wiki: Home
Wiki: KommunikationsProtokoll
Wiki: LichtProfile
Wiki: MrwMotivation
Wiki: SignalBild
Wiki: SteffenMork

MongoDB Logo MongoDB