<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to ControllerTools</title><link>https://sourceforge.net/p/mrw/wiki/ControllerTools/</link><description>Recent changes to ControllerTools</description><atom:link href="https://sourceforge.net/p/mrw/wiki/ControllerTools/feed" rel="self"/><language>en</language><lastBuildDate>Thu, 23 Jan 2014 11:11:02 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/mrw/wiki/ControllerTools/feed" rel="self" type="application/rss+xml"/><item><title>ControllerTools modified by Steffen A. Mork</title><link>https://sourceforge.net/p/mrw/wiki/ControllerTools/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -96,57 +96,20 @@

 Folgende Konfiguration wird vorgesehen: 

-**Unitnumber**
-**Typ**
-**Bemerkung**
-
-2020
-Weiche ohne Endabschaltung
-Weichenmodul 
-
-2021
-Weiche ohne Endabschaltung
-Weichenmodul 
-
-2019
-Weiche mit Endabschaltung
-Weichenmodul 
-
-2001
-Weiche mit Endabschaltung
-Weichenmodul 
-
-100
-Einfahrsignal
-Lichtsignalmodul 3 
-
-101
-Vorsignal
-Lichtsignalmodul 3 
-
-102
-Vorsignal
-Lichtsignalmodul 2 
-
-103
-Gleissperrsignal
-Lichtsignalmodul 2 
-
-201
-Gleisabschnitt
-Gleismodul 
-
-202
-Gleisabschnitt
-Gleismodul 
-
-203
-Gleisabschnitt
-Gleismodul 
-
-204
-Gleisabschnitt
-Gleismodul 
+Unitnumber|Typ|Bemerkung
+----------|---|---------
+2020|Weiche ohne Endabschaltung|Weichenmodul 
+2021|Weiche ohne Endabschaltung|Weichenmodul 
+2019|Weiche mit Endabschaltung|Weichenmodul 
+2001|Weiche mit Endabschaltung|Weichenmodul 
+100|Einfahrsignal|Lichtsignalmodul 3 
+101|Vorsignal|Lichtsignalmodul 3 
+102|Vorsignal|Lichtsignalmodul 2 
+103|Gleissperrsignal|Lichtsignalmodul 2 
+201|Gleisabschnitt|Gleismodul 
+202|Gleisabschnitt|Gleismodul 
+203|Gleisabschnitt|Gleismodul 
+204|Gleisabschnitt|Gleismodul 

 Aufruf: 

@@ -208,39 +171,19 @@
     1215148971 # ID=0000:0000 len=1 stat=00 # PING # 0xbb &gt;

-Zeitstempel
-ID &amp;lt;Standard-ID&amp;gt;:&amp;lt;Extended-ID&amp;gt;
-len=&amp;lt;Datenfeldlänge&amp;gt;
-stat=&amp;lt;Status&amp;gt;
-Kommando &amp;lt;ggf. weitere Datenbbytes&amp;gt;
-Prüfsumme der seriellen Übertragung
-Richtung 
+Zeitstempel|ID &amp;lt;Standard-ID&amp;gt;:&amp;lt;Extended-ID&amp;gt;|len=&amp;lt;Datenfeldlänge&amp;gt;|stat=&amp;lt;Status&amp;gt;|Kommando &amp;lt;ggf. weitere Datenbbytes&amp;gt;|Prüfsumme der seriellen Übertragung|Richtung 

 Bedeutung: 

-Zeitstempel
-Zeit der Sekunden seit dem 01.01.1970 
-
-Standard-ID
-Die 11-bittige CAN-Standard-ID, entspricht der Controller-ID 
-
-Extended-ID
-Der 16-bittige Anteil der CAN-Extended-ID, entspricht der Unitnumber 
-
-Datenfeldlänge
-Mindestens 1, da das Kommandobyte Pflicht ist. 
-
-Status
-0x00 bei Standard Data Frames, 0x40 bei Extended Data Frames 
-
-Kommando
-Das eigentliche Kommando. Dazu kommen ggf. ergänzende Datenbytes. 
-
-Prüfsumme
-Die Prüfsumme für die Übertragung über RS232 
-
-Richtung
-`&gt;` steht für Senden, `&lt;` steht für Empfangen 
+Zeitstempel|Zeit der Sekunden seit dem 01.01.1970 
+-----------|-------------------------------------
+Standard-ID|Die 11-bittige CAN-Standard-ID, entspricht der Controller-ID 
+Extended-ID|Der 16-bittige Anteil der CAN-Extended-ID, entspricht der Unitnumber 
+Datenfeldlänge|Mindestens 1, da das Kommandobyte Pflicht ist. 
+Status|0x00 bei Standard Data Frames, 0x40 bei Extended Data Frames 
+Kommando|Das eigentliche Kommando. Dazu kommen ggf. ergänzende Datenbytes. 
+Prüfsumme|Die Prüfsumme für die Übertragung über RS232 
+Richtung|`&gt;` steht für Senden, `&lt;` steht für Empfangen 

 Eingehende Antworten haben folgendes Format: 

@@ -248,51 +191,20 @@
     1215718181 # ID=07ff:0007 len=6 stat=51 # PING         MSG_OK               0007:0000 # 0x00  6633 &lt;

-Zeitstempel
-ID=&amp;lt;Std-ID&amp;gt;:&amp;lt;Ext-ID&amp;gt;
-len=&amp;lt;Datenfeldlänge&amp;gt;
-stat=&amp;lt;Status&amp;gt;
-Kommando
-Antwort-Code
-&amp;lt;ggf. weitere Datenbbytes&amp;gt;
-Prüfsumme der seriellen Übertragung
-lfd. Frame-Nummer
-Richtung 
+Zeitstempel|ID=&amp;lt;Std-ID&amp;gt;:&amp;lt;Ext-ID&amp;gt;|len=&amp;lt;Datenfeldlänge&amp;gt;|stat=&amp;lt;Status&amp;gt;|Kommando|Antwort-Code|&amp;lt;ggf. weitere Datenbbytes&amp;gt;|Prüfsumme der seriellen Übertragung|lfd. Frame-Nummer|Richtung 

 Bedeutung: 

-Zeitstempel
-Zeit der Sekunden seit dem 01.01.1970 
-
-Standard-ID
-Die 11-bittige CAN-Standard-ID, entspricht der Gateway-ID 0x7ff 
-
-Extended-ID
-Der 16-bittige Anteil der CAN-Extended-ID, der sendenden Controller-ID 
-
-Datenfeldlänge
-Mindestens 6, da das Kommandobyte, der Antwortcode, die Absende-ID (Controller-ID und Unitnumber) Pflicht ist. 
-
-Status
-0x00 bei Standard Data Frames, 0x20 bei Extended Data Frames, 0x40 steht für Empfang in Buffer 0, 0x80 in Buffer 1, die ersten drei Bits zeigen die Filterregel an, auf die das Frame passte 
-
-Kommando
-Das eigentliche Kommando 
-
-Antwort-Code
-Der Antwort-Code 
-
-&amp;lt;Standard-ID&amp;gt;
-Die Controller-ID des Absenders. 
-
-&amp;lt;Extended-ID&amp;gt;
-Die Unitnumber des Absenders 
-
-weitere Datenbytes
-Es ist noch Platz für zwei zusätzliche Bytes. 
-
-Prüfsumme
-Die Prüfsumme für die Übertragung über RS232 
-
-Richtung
-`&gt;` steht für Senden, `&lt;` steht für Empfangen 
+Zeitstempel|Zeit der Sekunden seit dem 01.01.1970 
+-----------|-------------------------------------
+Standard-ID|Die 11-bittige CAN-Standard-ID, entspricht der Gateway-ID 0x7ff 
+Extended-ID|Der 16-bittige Anteil der CAN-Extended-ID, der sendenden Controller-ID 
+Datenfeldlänge|Mindestens 6, da das Kommandobyte, der Antwortcode, die Absende-ID (Controller-ID und Unitnumber) Pflicht ist. 
+Status|0x00 bei Standard Data Frames, 0x20 bei Extended Data Frames, 0x40 steht für Empfang in Buffer 0, 0x80 in Buffer 1, die ersten drei Bits zeigen die Filterregel an, auf die das Frame passte 
+Kommando|Das eigentliche Kommando 
+Antwort-Code|Der Antwort-Code 
+&amp;lt;Standard-ID&amp;gt;|Die Controller-ID des Absenders. 
+&amp;lt;Extended-ID&amp;gt;|Die Unitnumber des Absenders 
+weitere Datenbytes|Es ist noch Platz für zwei zusätzliche Bytes. 
+Prüfsumme|Die Prüfsumme für die Übertragung über RS232 
+Richtung|`&gt;` steht für Senden, `&lt;` steht für Empfangen 
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Steffen A. Mork</dc:creator><pubDate>Thu, 23 Jan 2014 11:11:02 -0000</pubDate><guid>https://sourceforge.net538447d562e456bd76afbfc4fc482791ce944b54</guid></item><item><title>ControllerTools modified by Dave Brondsema</title><link>https://sourceforge.net/p/mrw/wiki/ControllerTools/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="controller-tools"&gt;Controller-Tools&lt;/h1&gt;
&lt;p&gt;Die Controller-Tools sind kleine Linux-Programme, mit denen die Controller getestet werden können. Alle Programme sprechen das serielle Device direkt an. Meistens ist das &lt;code&gt;/dev/ttyS0&lt;/code&gt;, kann aber auch im Falle eines USB2SER-Dongles &lt;code&gt;/dev/ttyUSB0&lt;/code&gt; heißen. Alle Tools geben die Meldungen im Klartext aus, soweit die Meldungen dem &lt;a class="" href="/p/mrw/wiki/KommunikationsProtokoll/"&gt;Kommunikationsprotokoll&lt;/a&gt; entsprechen. &lt;/p&gt;
&lt;h2 id="canprog"&gt;canprog&lt;/h2&gt;
&lt;p&gt;Mit diesem Tool werden alle Controller mit neuer Firmware geflasht. Das Flashen geschieht über den CAN-Bootlader der CAN-Knoten. Das CAN-Gateway kann auf diesem Wege nicht geflasht werden. Die Firmware muss im üblichen Hex-Format vorliegen. &lt;/p&gt;
&lt;p&gt;Aufruf: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nx"&gt;.&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;canprog&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;device&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;hexfile&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;em&gt;canprog&lt;/em&gt; greift nur schreibend auf das serielle Device zu. &lt;/p&gt;
&lt;h2 id="receive"&gt;receive&lt;/h2&gt;
&lt;p&gt;Das Tool &lt;em&gt;receive&lt;/em&gt; ist fast das wichtigste Tool. Es gibt alle über RS232 empfangenen Nachrichten im Klartext aus. Bei Verwendung der Tools &lt;em&gt;canprog&lt;/em&gt;, &lt;em&gt;ping&lt;/em&gt;, &lt;em&gt;reset&lt;/em&gt; und &lt;em&gt;setid&lt;/em&gt; macht es Sinn das Tool &lt;em&gt;receive&lt;/em&gt; in einer weiteren Konsole mitlaufen zu lassen. &lt;/p&gt;
&lt;p&gt;Aufruf: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nx"&gt;.&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;receive&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;device&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;em&gt;receive&lt;/em&gt; greift nur lesend auf das serielle Device zu. &lt;/p&gt;
&lt;h2 id="ping"&gt;ping&lt;/h2&gt;
&lt;p&gt;Mit dem &lt;em&gt;ping&lt;/em&gt;-Tool wird jede Sekunde eine &lt;code&gt;PING&lt;/code&gt;-Message via Broadcast versendet. Alle CAN-Knoten müssen demnach mit einem &lt;code&gt;PING&lt;/code&gt;/&lt;code&gt;MSG_OK&lt;/code&gt; antworten. &lt;/p&gt;
&lt;p&gt;Aufruf: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nx"&gt;.&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;ping&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;device&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;em&gt;ping&lt;/em&gt; greift nur schreibend auf das serielle Device zu. &lt;/p&gt;
&lt;h2 id="reset"&gt;reset&lt;/h2&gt;
&lt;p&gt;Mit dem &lt;em&gt;reset&lt;/em&gt;-Tool wird via Broadcast ein Reset aller CAN-Knoten veranlasst. &lt;/p&gt;
&lt;p&gt;Aufruf: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nx"&gt;.&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="nb"&gt;reset&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;device&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;em&gt;reset&lt;/em&gt; greift nur schreibend auf das serielle Device zu. &lt;/p&gt;
&lt;h2 id="qrybuf"&gt;qrybuf&lt;/h2&gt;
&lt;p&gt;Mit dem &lt;em&gt;qrybuf&lt;/em&gt;-Tool fragt alle CAN-Knoten nach den Füllständen ihrer CAN-Buffer ab. &lt;/p&gt;
&lt;p&gt;Aufruf: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nx"&gt;.&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;qrybuf&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;device&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;em&gt;qrybuf&lt;/em&gt; greift nur schreibend auf das serielle Device zu. &lt;/p&gt;
&lt;h2 id="qryerr"&gt;qryerr&lt;/h2&gt;
&lt;p&gt;Mit dem &lt;em&gt;qryerr&lt;/em&gt;-Tool fragt alle CAN-Knoten nach den CAN-Fehlerzählern ab. Es erfolgen pro CAN-Knoten drei Antwortmeldungen. &lt;/p&gt;
&lt;p&gt;Aufruf: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nx"&gt;.&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;qryerr&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;device&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;em&gt;qryerr&lt;/em&gt; greift nur schreibend auf das serielle Device zu. &lt;/p&gt;
&lt;h2 id="setid"&gt;setid&lt;/h2&gt;
&lt;p&gt;Mit dem &lt;em&gt;setid&lt;/em&gt;-Tool wird die Controller-ID umprogrammiert. Dabei muss beim zu programmierenden Controller der ID-Taster gedrückt gehalten werden. Alle Controller, deren ID-Taster nicht gedrückt werden, antworten mit einem &lt;code&gt;SET_ID&lt;/code&gt;/&lt;code&gt;MSG_ID_CHANGE_DISABLED&lt;/code&gt;. Wenn der ID-Taster gedrückt wird, die neue ID aber der alten ID ist, bleibt die gespeicherte Konfiguration erhalten und der Controller antwortet mit &lt;code&gt;SET_ID&lt;/code&gt;/&lt;code&gt;MSG_ID_NOT_CHANGED&lt;/code&gt;. Wird die ID geändert, wird eine vorhandene Konfiguration gelöscht und der Controller antwortet mit &lt;code&gt;SET_ID&lt;/code&gt;/&lt;code&gt;MSG_OK&lt;/code&gt;. Danach wird ein Reset durchgeführt. &lt;/p&gt;
&lt;p&gt;Aufruf: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nx"&gt;.&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;setid&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;device&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;em&gt;setid&lt;/em&gt; greift nur schreibend auf das serielle Device zu. &lt;/p&gt;
&lt;h2 id="gwsim"&gt;gwsim&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;gwsim&lt;/em&gt; ist ein Tool, mit dem die &lt;a class="" href="../BedienungsAnleitung"&gt;Stellwerks-Software&lt;/a&gt; getestet werden kann. Dazu müssen zwei Rechner mit einem Nullmodem-Kabel verbunden werden. Auf dem einem Rechner läuft die &lt;a class="" href="../BedienungsAnleitung"&gt;Stellwerks-Software&lt;/a&gt;, auf dem anderen läuft &lt;em&gt;gwsim&lt;/em&gt;. &lt;em&gt;gwsim&lt;/em&gt; nimmt alle CAN-Frames entgegen und antwortet mit einem &lt;code&gt;MSG_OK&lt;/code&gt;. Dadurch sollte die &lt;a class="" href="../BedienungsAnleitung"&gt;Stellwerks-Software&lt;/a&gt; in einem fehlerfreiem Modus funktionieren. Die eingehenden und ausgehenden CAN-Frames werden auf der Konsole mitgeloggt. &lt;/p&gt;
&lt;p&gt;Aufruf: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nx"&gt;.&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;gwsim&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;device&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;em&gt;gwsim&lt;/em&gt; greift lesend und schreibend auf das serielle Device zu. &lt;/p&gt;
&lt;h2 id="config"&gt;config&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;config&lt;/em&gt; programmiert eine Testkonfiguration in den Controller mit der ID 2040. Dazu gehören zwei neue Weichen, zwei alte Weichen, vier Gleisabschnitte und ein Einfahrsignal kombiniert mit einem Vorsignal, ein Vorsignal und ein Gleissperrsignal verteilt an zwei Lichtsignalmodule. &lt;/p&gt;
&lt;p&gt;Folgende Konfiguration wird vorgesehen: &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Unitnumber&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Typ&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Bemerkung&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;2020&lt;br /&gt;
Weiche ohne Endabschaltung&lt;br /&gt;
Weichenmodul &lt;/p&gt;
&lt;p&gt;2021&lt;br /&gt;
Weiche ohne Endabschaltung&lt;br /&gt;
Weichenmodul &lt;/p&gt;
&lt;p&gt;2019&lt;br /&gt;
Weiche mit Endabschaltung&lt;br /&gt;
Weichenmodul &lt;/p&gt;
&lt;p&gt;2001&lt;br /&gt;
Weiche mit Endabschaltung&lt;br /&gt;
Weichenmodul &lt;/p&gt;
&lt;p&gt;100&lt;br /&gt;
Einfahrsignal&lt;br /&gt;
Lichtsignalmodul 3 &lt;/p&gt;
&lt;p&gt;101&lt;br /&gt;
Vorsignal&lt;br /&gt;
Lichtsignalmodul 3 &lt;/p&gt;
&lt;p&gt;102&lt;br /&gt;
Vorsignal&lt;br /&gt;
Lichtsignalmodul 2 &lt;/p&gt;
&lt;p&gt;103&lt;br /&gt;
Gleissperrsignal&lt;br /&gt;
Lichtsignalmodul 2 &lt;/p&gt;
&lt;p&gt;201&lt;br /&gt;
Gleisabschnitt&lt;br /&gt;
Gleismodul &lt;/p&gt;
&lt;p&gt;202&lt;br /&gt;
Gleisabschnitt&lt;br /&gt;
Gleismodul &lt;/p&gt;
&lt;p&gt;203&lt;br /&gt;
Gleisabschnitt&lt;br /&gt;
Gleismodul &lt;/p&gt;
&lt;p&gt;204&lt;br /&gt;
Gleisabschnitt&lt;br /&gt;
Gleismodul &lt;/p&gt;
&lt;p&gt;Aufruf: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nx"&gt;.&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;config&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;device&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="switch"&gt;switch&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;switch&lt;/em&gt; testet die vier Weichen des Controllers mit der ID 2040. Diese werden zweimal jeweil nach links und nach rechts geschaltet. &lt;/p&gt;
&lt;p&gt;Aufruf: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nx"&gt;.&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;switch&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;device&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="signal"&gt;signal&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;signal&lt;/em&gt; testet ein Einfahrsignal mit kombinierten Vorsignal am Controller mit der ID 2040. Alle Kombinationen werden rotierend und fortlaufend durchprobiert. Dazu gehört auch ein Testmuster (alle LEDs an) und alle LEDs aus. &lt;/p&gt;
&lt;p&gt;Aufruf: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nx"&gt;.&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="nb"&gt;signal&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;device&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="rail"&gt;rail&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;rail&lt;/em&gt; testet das Gleismodul am Controller mit der ID 2040. Alle vier angeschlossenen Gleisabschnitte werden zyklisch ein- und wieder ausgeschaltet. Dabei wird intern ein Zähler hochgezählt. Die ersten vier Bits repräsentieren jeweils einen Gleisabschnitt. So wird der erste Gleisabschnitt mit jedem Zyklus ein- und wieder ausgemacht, der zweite Abschnitt erst mit jedem zweiten, der dritte Abschnitt mit jedem vierten Zyklus, usw. Ein Zyklus dauert zwei Sekunden. &lt;/p&gt;
&lt;p&gt;Aufruf: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nx"&gt;.&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;rail&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;device&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="occupation"&gt;occupation&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;occupation&lt;/em&gt; fragt alle zwei Sekunden die Gleisbesetztanzeige eines Gleismoduls am Controller mit der ID 2040 ab. &lt;/p&gt;
&lt;p&gt;Aufruf: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nx"&gt;.&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;occupation&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;device&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="send"&gt;send&lt;/h2&gt;
&lt;p&gt;Mit dem &lt;em&gt;send&lt;/em&gt;-Tool können beliebige CAN-Frames gesendet werden. Es wird eine Ziel-ID übergeben, danach kommen beliebig viele Datenbytes. Die Datenbytes dürfen dezimal und hexadezimal angegeben werden. Hexadezimale Datenbytes müssen ein &lt;em&gt;0x&lt;/em&gt; vor dem Datenbyte haben. &lt;/p&gt;
&lt;p&gt;Aufruf: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nx"&gt;.&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="nb"&gt;send&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;device&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nb"&gt;bytes&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;em&gt;send&lt;/em&gt; greift nur schreibend auf das serielle Device zu. &lt;/p&gt;
&lt;h2 id="logging-ausgaben"&gt;Logging-Ausgaben&lt;/h2&gt;
&lt;p&gt;Ausgehende Kommandos haben in etwa folgendes Ausgabe Format: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="mi"&gt;1215148970&lt;/span&gt; &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="n"&gt;ID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mo"&gt;0000&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mo"&gt;0000&lt;/span&gt; &lt;span class="n"&gt;len&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="n"&gt;stat&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mo"&gt;00&lt;/span&gt; &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="n"&gt;PING&lt;/span&gt; &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="mh"&gt;0xbb&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="mi"&gt;1215148971&lt;/span&gt; &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="n"&gt;ID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mo"&gt;0000&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mo"&gt;0000&lt;/span&gt; &lt;span class="n"&gt;len&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="n"&gt;stat&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mo"&gt;00&lt;/span&gt; &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="n"&gt;PING&lt;/span&gt; &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="mh"&gt;0xbb&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Zeitstempel&lt;br /&gt;
ID &amp;lt;Standard-ID&amp;gt;:&amp;lt;Extended-ID&amp;gt;&lt;br /&gt;
len=&amp;lt;Datenfeldlänge&amp;gt;&lt;br /&gt;
stat=&amp;lt;Status&amp;gt;&lt;br /&gt;
Kommando &amp;lt;ggf. weitere Datenbbytes&amp;gt;&lt;br /&gt;
Prüfsumme der seriellen Übertragung&lt;br /&gt;
Richtung &lt;/p&gt;
&lt;p&gt;Bedeutung: &lt;/p&gt;
&lt;p&gt;Zeitstempel&lt;br /&gt;
Zeit der Sekunden seit dem 01.01.1970 &lt;/p&gt;
&lt;p&gt;Standard-ID&lt;br /&gt;
Die 11-bittige CAN-Standard-ID, entspricht der Controller-ID &lt;/p&gt;
&lt;p&gt;Extended-ID&lt;br /&gt;
Der 16-bittige Anteil der CAN-Extended-ID, entspricht der Unitnumber &lt;/p&gt;
&lt;p&gt;Datenfeldlänge&lt;br /&gt;
Mindestens 1, da das Kommandobyte Pflicht ist. &lt;/p&gt;
&lt;p&gt;Status&lt;br /&gt;
0x00 bei Standard Data Frames, 0x40 bei Extended Data Frames &lt;/p&gt;
&lt;p&gt;Kommando&lt;br /&gt;
Das eigentliche Kommando. Dazu kommen ggf. ergänzende Datenbytes. &lt;/p&gt;
&lt;p&gt;Prüfsumme&lt;br /&gt;
Die Prüfsumme für die Übertragung über RS232 &lt;/p&gt;
&lt;p&gt;Richtung&lt;br /&gt;
&lt;code&gt;&amp;gt;&lt;/code&gt; steht für Senden, &lt;code&gt;&amp;lt;&lt;/code&gt; steht für Empfangen &lt;/p&gt;
&lt;p&gt;Eingehende Antworten haben folgendes Format: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="mi"&gt;1215718180&lt;/span&gt; &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="n"&gt;ID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;07ff&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mo"&gt;0007&lt;/span&gt; &lt;span class="n"&gt;len&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt; &lt;span class="n"&gt;stat&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;51&lt;/span&gt; &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="n"&gt;PING&lt;/span&gt;         &lt;span class="n"&gt;MSG_OK&lt;/span&gt;               &lt;span class="mo"&gt;0007&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mo"&gt;0000&lt;/span&gt; &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="mh"&gt;0x00&lt;/span&gt;  &lt;span class="mi"&gt;6632&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;
&lt;span class="mi"&gt;1215718181&lt;/span&gt; &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="n"&gt;ID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;07ff&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mo"&gt;0007&lt;/span&gt; &lt;span class="n"&gt;len&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt; &lt;span class="n"&gt;stat&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;51&lt;/span&gt; &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="n"&gt;PING&lt;/span&gt;         &lt;span class="n"&gt;MSG_OK&lt;/span&gt;               &lt;span class="mo"&gt;0007&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mo"&gt;0000&lt;/span&gt; &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="mh"&gt;0x00&lt;/span&gt;  &lt;span class="mi"&gt;6633&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Zeitstempel&lt;br /&gt;
ID=&amp;lt;Std-ID&amp;gt;:&amp;lt;Ext-ID&amp;gt;&lt;br /&gt;
len=&amp;lt;Datenfeldlänge&amp;gt;&lt;br /&gt;
stat=&amp;lt;Status&amp;gt;&lt;br /&gt;
Kommando&lt;br /&gt;
Antwort-Code&lt;br /&gt;
&amp;lt;ggf. weitere Datenbbytes&amp;gt;&lt;br /&gt;
Prüfsumme der seriellen Übertragung&lt;br /&gt;
lfd. Frame-Nummer&lt;br /&gt;
Richtung &lt;/p&gt;
&lt;p&gt;Bedeutung: &lt;/p&gt;
&lt;p&gt;Zeitstempel&lt;br /&gt;
Zeit der Sekunden seit dem 01.01.1970 &lt;/p&gt;
&lt;p&gt;Standard-ID&lt;br /&gt;
Die 11-bittige CAN-Standard-ID, entspricht der Gateway-ID 0x7ff &lt;/p&gt;
&lt;p&gt;Extended-ID&lt;br /&gt;
Der 16-bittige Anteil der CAN-Extended-ID, der sendenden Controller-ID &lt;/p&gt;
&lt;p&gt;Datenfeldlänge&lt;br /&gt;
Mindestens 6, da das Kommandobyte, der Antwortcode, die Absende-ID (Controller-ID und Unitnumber) Pflicht ist. &lt;/p&gt;
&lt;p&gt;Status&lt;br /&gt;
0x00 bei Standard Data Frames, 0x20 bei Extended Data Frames, 0x40 steht für Empfang in Buffer 0, 0x80 in Buffer 1, die ersten drei Bits zeigen die Filterregel an, auf die das Frame passte &lt;/p&gt;
&lt;p&gt;Kommando&lt;br /&gt;
Das eigentliche Kommando &lt;/p&gt;
&lt;p&gt;Antwort-Code&lt;br /&gt;
Der Antwort-Code &lt;/p&gt;
&lt;p&gt;&amp;lt;Standard-ID&amp;gt;&lt;br /&gt;
Die Controller-ID des Absenders. &lt;/p&gt;
&lt;p&gt;&amp;lt;Extended-ID&amp;gt;&lt;br /&gt;
Die Unitnumber des Absenders &lt;/p&gt;
&lt;p&gt;weitere Datenbytes&lt;br /&gt;
Es ist noch Platz für zwei zusätzliche Bytes. &lt;/p&gt;
&lt;p&gt;Prüfsumme&lt;br /&gt;
Die Prüfsumme für die Übertragung über RS232 &lt;/p&gt;
&lt;p&gt;Richtung&lt;br /&gt;
&lt;code&gt;&amp;gt;&lt;/code&gt; steht für Senden, &lt;code&gt;&amp;lt;&lt;/code&gt; steht für Empfangen &lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Dave Brondsema</dc:creator><pubDate>Wed, 22 Jan 2014 17:00:07 -0000</pubDate><guid>https://sourceforge.net005f947a01d40271b04871ddb50df9e7fb6d4abd</guid></item></channel></rss>