Protocollen

Het protocol beschrijft hoe het digitale signaal op de rails exact gevormd moet zijn om de commando's van snelheid, rijrichting en verdere te schakelen functies goed uitgevoerd te krijgen.

Motorola-I

Dit is het protocol waarmee Märklin als eerste op de markt kwam in 1985. Er kunnen maximaal 81 treinen aangestuurd worden, elk met 14 snelheidsstappen, rijrichting en één schakelbare functie die in de locomotief twee rijrichtings-afhankelijke uitgangen heeft. Handig voor automatisch omschakelen van front- en achterlichten. Die uitgangen mogen ook onderling verbonden worden voor bijv.  Telexkoppelingen die dan onafhankelijk van de rijrichting werken.

Het signaal is opgebouwd als volgt:

Basis is een serie van 18 korte pulsen, om de 0,22 ms en 0,013 ms breed (duty cycle 6%, in totaal bijna 4ms lang.

De korte puls staat voor bitwaarde = 0. Een verlengde puls tot aan 0,22 ms voor de volgende staat voor bitwaarde = 1

De eerste 8 pulsen  bevatten het adres in trinaire vorm, dat wil zeggen dat steeds 2 bits samen 3 geldige toestanden kunnen aannemen nl. 00,  10 of 11. (01 is ongeldig, daar zal geen enkele decoder op reageren). De vier bit-paren met 3 geldige combinaties leiden dus tot 3 tot de 4e macht = 81 unieke combinaties.

Bits 9 en 10 zijn er voor de functie schakeling, beide 0 (= uit) of beide 1 (= aan)

De laatste 8 bits (11 t/m 18) zijn altijd paarsgewijs hoog of laag, vormen daarmee eigenlijk een 4-bits getal hetgeen leidt tot 16 unieke combinaties (0 t/m 15) voor de snelheid:

0 = stop
1 = rijrichting omkeren

2 t/m 15 zijn de 14 oplopende rijsnelheid stappen.

Elk 18 bits commando wordt na een pauze van 1,35ms herhaald en een decoder zal het commando alleen uitvoeren als beide commando's identiek zijn. Storingen door slecht contact tussen rijdende trein en de rails zullen daardoor niet leiden tot foutieve reacties.

Motorola-II

Met Motorola-II en daarbij behorende decoders en motor-ombouw naar gelijkstroom (met permanente magneet) zette Märklin een volgende belangrijke stap om het rijgedrag van modeltreinen aanzienlijk te verbeteren. Met twee potmetertjes op de decoders konden de maximaal haalbare snelheid en de optrek- en afrem vertraging worden ingesteld. Met zgn. EMK terugkoppeling wordt de rijsnelheid constant gehouden zowel bergop als -af en onafhankelijk van lengte en gewicht van wat achter de locomotief hangt (ook wel aangeduid met de term "cruise control"). Een andere verbetering is dat in alle commando's de rijrichting zit inbegrepen. In het oude protocol stond dat niet vast zodat bijv. na enige tijd spanningsverlies op de baan een trein in de verkeerde richting kon vertrekken.

In Motorola-II zijn adres en functie protocol identiek aan dat van Motorola-I. De uitbreiding zit 'm in de 8 data-bits. Door deze niet meer paarsgewijs "0" of "1" te maken maar alle 8 apart "0" of "1" te mogen zetten kunnen er in principe 256 verschillende commando's gegeven worden. Binnen het Märklin systeem werd dit zo uitgewerkt dat compatibiliteit met het oude systeem verzekerd was en dat met het nieuwe systeem naast de oude functie (nu voortaan F0 (nul) genoemd) nog 4 additionele functies geschakeld kunnen worden (nu verder f1 t/m f4 genoemd)

Wat nu de geldige commando's zijn is ooit eens uitgebreid beschreven en op internet gepubliceerd (de link naar die publicatie werkt niet meer). Die uitgebreide beschrijving heb ik destijds samengevat en plaats die nu hieronder.

We beginnen met het weergeven van elk databit met een letter als volgt:

Hierin wordt de rijsnelheid bepaald door de waarde ABCD, verzonden vanaf LSB (least significant bit) dus als DCBA.

 

Hieronder de relatie tussen waarde ABCD en Motorola snelheidsstap.

De waarde ABCD=1 heeft geen effect in Motorola-II. In het oudere Mototrola-I wordt hiermee de rijrichting omgekeerd.

De waarde EFGH bepaalt rijrichting en aan/uit functies f1 t/m f4.

In onderstaande tabel is vastgelegd wat EFGH (rij voor rij) precies doet bij iedere snelheidsstap (kolom voor kolom).

Hoe dit te lezen:

Voor bijv. snelheid 8 ( Märklin stap 7) dus ABCD=8  kan het volgende gecombineerd worden:

EFGH=2  Rijrichting wordt op vooruit geschakeld en met EFGH=5 op achteruit.

Met de waardes waar f1, f2, f3 of f4 staat wordt de betreffende functie aangezet

Daar waar x1, x2, x3 of x4 staat wordt die functie uitgeschakeld.

Voor de rode getallen geldt dat ABCD=EFGH en dat zijn dus de snelheidscommando's voor Motorola -I

Het ziet er wat minder rechtlijnig uit dan je zou verwachten maar dat is nodig gebleken om compatibiliteit tussen Motorola-I en II te bereiken. Het maakt het programmeren wel wat lastiger. Bijvoorbeeld, als je f1 wil inschakelen dan wordt EFGH=11 meegestuurd behalve voor snelheid ABCD=11, dan moet je EFGH=10 meesturen om f1 aan te zetten. En wil je f1 weer uitschakelen dan wordt het EFGH=3 behalve voor ABCD=3, dan wordt het EFGH=5.

Met dit inzicht in de protocollen kan de software ontwikkeld worden op Commodore 64 om er een "centrale" mee te maken.

Maar ook op bijv. een PIC-microcontroler van Microchip kan dit heel goed. Op basis van een Microchip 16F887 heb ik voor een bevriende relatie een centrale gebouwd en geprogrammeerd met 16 rijsnelheid schuif potmeters en via de software instelbaar volgens Motorola-II of DCC protocol.

DCC