OpenDCC AniMat - Servoansteuerung

Vorbemerkung

    Die folgenden CVs sind als Block aufzufassen. Die tatsächliche Adresse ergibt sich, wenn man die Basisadresse des Blocks zur Teiladresse addiert. Deswegen sind die CV-Adressen hier mit einem '+' - Vorzeichen angegeben. Je nach integrierten SW-Modulen kann eine andere Basisadresse gelten, bitte daher bei PC-Programmen zur CV-Einstellung diese Möglichkeit vorsehen.

    AniMat kann ebenso wie OpenDecoder2 (und Varianten) Modellbauservos ansteuern. Für eine Einführung in die Technik dieser Ansteuerung bitte ich, die Erläuterung bei der Servosoftware dieser Dekoder nachzulesen. Dort finden sich auch Hinweise zum Anschluß und zur Anwendung.

    AniMat verwendet die gleiche Technik, auch die identische interne Software, nur wurde hier der Segmentmode auch für das zweite Servo freigeschaltet. Dadurch ergibt sich eine leicht geänderte CV-Liste. Aus Kompatibilitätsgründen sind aber alle CV-Definitionen erhalten geblieben, auch wenn sie nur nicht verwendet werden (wie z.B. Relaiskontrolle).

CV für den Servo-Block im AniMat

    Damit das Servo wie gewünscht funktioniert, muß der AniMat für die jeweilige Bewegungsaufgabe konfiguriert werden. Folgende Dinge müssen eingestellt werden:
    1. Die Endpositionen der Servos: diese hängen von der Einbausituation ab.
    2. Das gewünschte Laufverhalten: Hin- und Herlauf jeweils einzeln (wie eine Weiche) oder Dauerlauf (wie z.B. bei eine Wippe), d.h. Hin- und Herlauf werden immer wieder ausgeführt.
    3. Die gewünschte Verlaufskurve, sowohl für den Hinlauf als auch für den Herlauf. Hier kann ganz bequem aus einer Reihe vordefinierter Verläufe (z.B. Signal, Wippe, Schranke) gewählt werden bzw. es können bis zu vier eigene, frei definierbare Verläufe in den Decoder geladen werden.
    4. Die Zeitdauer der Umläufe.
    Diese Parameter und damit das gewünschte Verhalten des Decoders kann einfach durch CV (=Configuration Variablen) eingestellt werden.

    Es gibt für jeden Servo einen Satz an CV's und damit auch verschiedene [Base]-Adressen:
    CV-BlockBase-Adresse
    Servo 040
    Servo 172
    Benutzerdefinierte Kurven104

CV für das normale Servo-Verhalten

  • CV [Base] + 1: Minimalwert Servo (*=64)
    Wert für Endanschlag unten, Wertebereich 0...255.
    Dies ist eigentlich das High Byte eines Integerwertes, das zugehörige Low Byte ist in CV [Base] + 0 und braucht normalerweise nicht verändert zu werden.
  • CV [Base] + 3: Maximalwert Servo (*=192)
    Wert für Endanschlag oben, Wertebereich 0...255.
    Dies ist eigentlich das High Byte eines Integerwertes, das zugehörige Low Byte ist in CV [Base] + 2 und braucht normalerweise nicht verändert zu werden.
  • CV [Base] + 4: Kontrollwort Servo (*=0)
    Hiermit wird festgelegt, wie der Servo prinzipiell auf Steuerbefehle reagiert.
      CV [Base] + 4: Kontrollwort
      Bit: Bedeutung
      0 Umlaufverhalten:
      *0 Taste grün aktiviert Umlauf A
      Taste rot aktiviert Umlauf B
       1 rot: Servo bleibt nach dem nächsten Umlauf Richtung B stehen.
      grün: Servo läuft permanent A - B - A ...
      1 Schaltverhalten der Ausgänge:
       0  Keine Kopplung der Ausgänge mit Servobewegung.
      *1  Bei Erreichen der Endposition wird der jeweile Ausgang eingeschaltet (z.B. für eine Herzstückpolarisierung).
      2 Manuelle Bedienung (nur Hardware Version 3):
       0  keine Taster am Decoder angeschlossen, die Anschlüsse können für die Rückmeldung verwendet werden.
      *1  Steuerung vor Ort per Taster möglich.
      3 Rückmeldekontakt (nur Hardware Version 3):
      *0  keine Rückmeldekontakte angeschlossen
       1 Externe Rückmeldekontakte für eine echte Rückmeldung angeschlossen.
      Hinweis: nicht möglich zusammen mit manueller Bedienung.
      4 Manuelle Justage:
       0  keine zusätzlichen Decoderkommandos für Justage
      *1 zusätzliche Decoderkommandos für Justage der Servos. Schrittweite gemäß CV579
      5 Servoansteuerung auch in Ruhe:
       0  Wenn aktuell keine Bewegung stattfindet, werden auch die Servoansteuersignale abgeschaltet. Das Servo hält die Lage mit der eigenen Rastung.
      *1  Die Servoansteuersignale werden kontinuierlich ausgegeben. Das Servo *regelt* weiterhin die Position (hat mehr Kraft), kann allerdings manchmal leicht knurren. Wenn die Endlage federbelastet ist, ergibt sich ein höherer Stromverbrauch.
      6 Init-Sequenz (mit dieser Option kann (abhängig vom angeschlossenem Servo) eventuell das Einschaltruckeln minimiert werden, s.u.), (ab Version V0.11)
      *0  Zu Beginn ist die Pulskette ausgeschaltet und wird synchron eingeschaltet.
       1  Zu Beginn ist das Pulssignal dauerd ein und wird synchron auf Pulsbetrieb umgeschaltet.
      7 Erweiterter Einstellbereich.
      Manche Servos halten sich nicht an den definierten Bereich von 1ms bis 2ms Pulsbreite, sondern haben einen etwas breiteren Bereich.
      *0  Die Servoansteuerung erfolgt von 1ms bis 2ms
       1  Die Servoansteuerung erfolgt von 0.5ms bis 2.5ms
    Wenn ein Servo auf Dauerbetrieb konfiguriert ist, dann wird es jeweils mit der grünen Taste eingeschaltet und mit der roten Taste ausgeschaltet; Die Zahl der durchzuführenden Umläufe wird mit der folgenden CV eingestellt.
    Bei Betätigen von "rot" wird der gerade aktuelle Umlauf noch fertig abgefahren, damit beim nächsten Einschalten die Startlage mit der abgespeicherten Startlage übereinstimmt. Man sollte einen solchen Betrieb immer kontrolliert beenden, nie einfach abschalten, weil sonst bei nächsten Start ein heftiger Ruck erfolgt.
  • CV [Base] + ??: Wiederholungen Servo (*=0)
    Sollte CV [Base] + 4, Bit 0 auf 1 stehen (permanenter Lauf), so bestimmt diese CV die Zahl der Wiederholungen.
      CV [Base] + ??: Wiederholung
      0 Servo läuft nach Aktivierung in Dauerbetrieb
      1..255 Bei einer Aktivierung werden die angegebene Zahl an kompletten A-B Umläufen ausgeführt.
  • CV [Base] + ??: Bewegung und Zeit-Ortskurve "A" (*=5)
    Hier wird die Verlaufskurve ausgewählt - dies erfolgt mit der Kennzahl der gewünschten Zeit-Ortskurve. Diese Einstellung gilt für den Umlauf "A" (d.h. der Umlauf für Taste grün).

    Bit 7(MSB) legt die Durchlaufrichtung der Kurve fest: rückwärts wird durch ein gesetztes Bit 7 (=MSB) angezeigt.

    Die Kurven in der Tabelle werden zeitlich mit dem Werten der Zeitstreckung gedehnt, in der Tabelle sind die Zeiten für Dehnung=1 angegeben.

    Die Kurven in der Tabelle werden bei der Ausgabe auf die dann jeweils gültigen Minmial- und Maximalwerte (Also CV [Base] + ?? und CV[Base] + ??) skaliert. Es gilt folgender Bezug:
      Ausgabewert = Tabellenwert * (Max-Min) / 255.
      Ein Ausgabewert 0 entspricht 1ms Pulsdauer, ein Wert von 255 entspricht 2ms Pulsdauer.
      CV [Base] + ??: Zeit-Ortskurven
      0 keine Kurve
      reserviert für Justage.
      1 benutzerspezifische Kurve 1
      diese Kurve kann mit weiteren CVs im Decoder abgelegt werden.
      2 benutzerspezifische Kurve 2
      diese Kurve kann mit weiteren CVs im Decoder abgelegt werden.
      3 benutzerspezifische Kurve 3
      diese Kurve kann mit weiteren CVs im Decoder abgelegt werden.
      4 benutzerspezifische Kurve 4
      diese Kurve kann mit weiteren CVs im Decoder abgelegt werden.
      5 einfacher Umlauf
      Diese Kurve ist ein einfacher linearer Umlauf von Min nach Max.
         
      6 einfacher Umlauf
      Diese Kurve ist ein einfacher linearer Umlauf von Max nach Min.
      7 weicher Umlauf
      Diese Kurve ist ein einfacher linearer Umlauf mit einer kleinen Beschleunigungsphase am Anfang und Bremsphase am Ende. (cosinus)
         
      8 weicher Umlauf
      Diese Kurve ist ein einfacher linearer Umlauf mit einer kleinen Beschleunigungsphase am Anfang und Bremsphase am Ende.
      9 sinusförmiger Umlauf, Richtung A
      Der Umlauf folgt einer Sinuskurve im Bereich 0° bis +180°. Dieser Umlauf ist zusammen mit dem Umlauf 10 für Pendelbewegungen geeignet.
         
      10 sinusförmiger Umlauf, Richtung B
      Der Umlauf folgt einer Sinuskurve im Bereich 180° bis 360°. Dieser Umlauf ist zusammen mit dem obigen Umlauf für Pendelbewegungen geeignet.
      11 parabelförmiger Umlauf, Richtung A
      Dieser Verlauf ist zusammen mit Umlauf 12 z.B. für eine Wippe geeignet.
         
      12 parabelförmiger Umlauf, Richtung B
      13 Formsignal - HP0
      Dieser Verlauf entspricht dem Schliessen eines Formsignals oder einer Schranke mit Nachwippen.
         
      14 Formsignal - HP1
      Dieser Verlauf entspricht dem Öffnen eines Formsignals mit Nachwippen
         
      15 Formsignal - HP1 - Pause
      Dieser Verlauf entspricht dem Öffnen eines Formsignals mit Umgreifen des Stellwerkers
         
    Es gibt zwei Umläufe (A und B), diese müssen natürlich in Ihrem Verlauf aneinander anschließen können, damit das Servo nicht "springt". Also muß der Umlauf für B dort beginnen, wo A aufhört und umgekehrt. Bei den vordefinierten Umläufen ist das selbstverständlich der Fall. Selbstverständlich kann für den Umlauf B die gleiche Kurve wie für A gewählt werden, diese Kurve sollte aber dann rückwärts durchlaufen werden.
  • CV [Base] + ??: Zeitstreckung Servo 1, Umlauf "A" (*=1)
    Die geladene Kurve wird um diesen Faktor zeitlich gestreckt.
  • CV [Base] + ??: Bewegung und Zeit-Ortskurve "B" (*=6)
  • CV [Base] + ??: Zeitstreckung Servo 1, Umlauf "B" (*=1)

CV für den Multipositionsbetrieb

    Der Dekoder kann neben der normalen Servoansteuerung auch einen Multipositionsbetrieb, wo jedes Servo bis zu 8 Zielen anfahren kann.
  • CV [Base] + ??: Kontrollwort Steuerung (*=0)
    Hiermit wird festgelegt, welche Umlauftyp der Decoder verwendet und ob eine manuelle Justage und Bedienung erlaubt ist.
      CV 576: Kontrollwort
      0 0: linearer Umlauf (konstante Geschwindigkeit)
      1: sanfter Umlauf (mit Anfahrbeschleunigung und weichem Bremsen)
      1 0: Justage der Zielpositionen nur über CV
      1: Justage der Zielpositionen über CV und über zusätzliche Weichenbefehle (manuelle Justage)
      2 0: Ansteuerung nur per DCC Schaltbefehle
      1: Bedienung und Zielwahl über externe Taster
  • CV 577 (65): Geschwindigkeit / Zeitliche Dehnung (*=5)
    Skalierungswert für die Bewegung. Ein größerer Wert macht die Bewegung langsamer.
  • CV 578 (66): Letzte Position (read only)
    Nur zur Kontrolle: an dieser Stelle steht das Servo aktuell, darf nur gelesen werden.
  • CV 579 (67): Justierschrittweite
    Mit dieser Variablen wird die Justierschrittweite festgelegt, die bei jeden Justierschritt verfahren wird. (muß normalerweise nicht verändert werden)
    Es gibt folgende Zuordnung:
      1: Der Decoder benötigt 4096 Justierschritte für einen vollen Umlauf.
      255: Der Decoder benötigt 16 Justierschritte für einen vollen Umlauf.
  • CV 581 (69): Zielwert Abgang A (*=10)
    Wertebereich 0...255.
    Dies ist eigentlich das High Byte eines Integerwertes, das zugehörige Low Byte ist in CV 580 und braucht normalerweise nicht verändert zu werden.
  • CV 583 (71): Zielwert Abgang B (*=50)
    Wertebereich 0...255.
    Dies ist eigentlich das High Byte eines Integerwertes, das zugehörige Low Byte ist in CV 582 und braucht normalerweise nicht verändert zu werden.
  • CV 585 (73): Zielwert Abgang C (*=100)
    Wertebereich 0...255.
    Dies ist eigentlich das High Byte eines Integerwertes, das zugehörige Low Byte ist in CV 584 und braucht normalerweise nicht verändert zu werden.
  • CV 587 (75): Zielwert Abgang D (*=150)
    Wertebereich 0...255.
    Dies ist eigentlich das High Byte eines Integerwertes, das zugehörige Low Byte ist in CV 586 und braucht normalerweise nicht verändert zu werden.
  • CV 589 (77): Zielwert Abgang E (*=200)
    Wertebereich 0...255.
    Dies ist eigentlich das High Byte eines Integerwertes, das zugehörige Low Byte ist in CV 588 und braucht normalerweise nicht verändert zu werden.
  • CV 591 (79): Zielwert Abgang F (*=64)
    Wertebereich 0...255.
    Dies ist eigentlich das High Byte eines Integerwertes, das zugehörige Low Byte ist in CV 590 und braucht normalerweise nicht verändert zu werden.
  • CV 593 (81): Zielwert Abgang G (*=64)
    Wertebereich 0...255.
    Dies ist eigentlich das High Byte eines Integerwertes, das zugehörige Low Byte ist in CV 592 und braucht normalerweise nicht verändert zu werden.
  • CV 595 (83): Zielwert Abgang H (*=64)
    Wertebereich 0...255.
    Dies ist eigentlich das High Byte eines Integerwertes, das zugehörige Low Byte ist in CV 594 und braucht normalerweise nicht verändert zu werden.
  • Parameter für ladbare Kurven:
  • CV 104 - CV 151: Kurve 1
    Die Kurven werden jeweils als Folge von Paaren aus Zeit- und Ortsangaben abgelegt
    • Die Zeitangaben sind in Einheiten von 20ms anzugeben, 100 entspricht dann 2sec. Sollte eine Laufzeit verlängert werden, so kann mit CV559/561 bzw. CV571/573 die Kurve zeitlich gestreckt werden.
    • Die Ortsangaben sind von 0 bis 255 skaliert und werden dann bei der Ausgabe mit den Min- und Max-Werten des Servos skaliert. Damit bleibt unabhängig vom Weg des Servos die Charakteristik des Umlaufes erhalten.
    • Es dürfen maximal 24 Kurvenpunkte (inkl. Endpunkt) definiert werden, der Endpunkt einer Kurve wird mit Zeit=0 gekennzeichnet.
    • Beispiel: Obige Kurve Nr. 5 "Linearer Umlauf A" würde folgendermassen kodiert sein:
      CV 1040 CV 10525 Startpunkt bei (0;25)
      CV 1062 CV 107128 Zwischenpunkt bei (2;128)
      CV 1084 CV 109230 letzter Punkt bei (4;230)
      CV 1100 CV 1110 (0;0) = Kurvenende
  • CV 152 - CV 199: Kurve 2
  • CV 200 - CV 147: Kurve 3
  • CV 248 - CV 295: Kurve 4

Decoderbefehle

    Nach der Konfiguration des Servodecoders kann er wie jeder andere Decoder auch einfach über die Stellbefehle angesprochen werden. Im folgenden sei für CV555/CV567, Bit 0 der Inhalt 0 angenommen, also getrennte Umläufe für rot und grün.
      Taste Wirkung (bei OpenDecoder 2)
      1 Servo 1 läuft Richtung B um.
      2 Servo 1 läuft Richtung A um.
      3 Servo 2 läuft Richtung B um.
      4 Servo 2 läuft Richtung A um.
      5 Ausgang 5 permanent ein, Ausgang 6 aus.
      6 Ausgang 6 permanent ein, Ausgang 5 aus.
      7 Ausgang 7 permanent ein, Ausgang 8 aus.
      8 Ausgang 8 permanent ein, Ausgang 7 aus.
    Die Ausgänge 1, 2, 3 und 4 können zur Ansteuerung von Relais verwenden, z.B. um nach erfolgtem Umlauf die Polarisation des Herzstückes einer Weiche durchzuführen. Hierbei sollten immer zwei Relais verwendet werden, damit nicht zufällig beim Schalten eines Relais die entsprechende Zunge noch am falschen Gleis anliegt.