Virtual Console: Difference between revisions
(Created page with "de:Virtuelle_Konsole '''This article has to be translated! ''' [http://de.canopen-lift.org/wiki/Virtuelle_Konsole Link to the article in German] Category:Application ...") |
Rosa.Lorenzo (talk | contribs) No edit summary |
||
Line 1: | Line 1: | ||
[[de:Virtuelle_Konsole]] | [[de:Virtuelle_Konsole]] | ||
[[Datei:canopen-terminal.png|right]] | |||
== CANopen virtual terminal for CiA 417, Object 600Ah == | |||
<div style="border:1px solid #8080FF; background:#E0E0FF; font-size:100%; padding:5px; margin-top:5px;">Tip: The Object 600Ah for the virtual terminal will be defined as CiA 417 V 1.0.5. That means that there are some changes to the initial proposal with the object 1026h (CiA 301). </ Div> | |||
=== General === | |||
A CANopen device can be used or controlled using the Object 600Ah. The display and the keyboard are located in another CANopen appliance (Virtual Terminal) | |||
The mentioned Object should always be included in the drive unit. | |||
There are 2 remote control channels: | |||
* An input channel (stdin), and | |||
* an output channel (stdout) | |||
Object 600Ah Subindex 1 is stdin (Standard-input: Keyboard) | |||
Object 600Ah Subindex 2 is stdout (Standard-output: screen) | |||
If the signs Object 600Ah, subindex 2 are ready the device send output to the virtual termnial. The zero sign (0) means no sign available. The control sequences VT-52 can be used to control the cursors. | |||
Betätigt der Anwender eine Taste, so wird der Tastencode (1 .. 255) in das Objekt 600Ah, Subindex 1 geschrieben. Sondertasten werden dabei als Escape-Sequenzen (VT-52) gesendet. | |||
=== Ablauf des Datenaustausches via SDO === | |||
Das Ausgabegerät (virtuelles Terminal) pollt zyklisch das Objekt 600Ah, Subindex 2. Wird ein Zeichen ungleich NUL (0) gelesen, so wird dieses im Terminal (Display) ausgegeben. Für die Steuerung des Cursors werden VT-52 Steuersequenzen ausgewertet. | |||
Liegt kein Zeichen vor, kann die Pollzeit kürzer sein. | |||
Wird eine Taste betätigt, so wird der Tastencode in das Objekt 600Ah, Subindex 1 geschrieben. | |||
=== Ablauf des Datenaustausches via MPDO === | |||
Um die Kommunikation zu beschleunigen, besteht die Möglichkeit, die Ein- und Ausgabedaten per MPDO zu versenden. | |||
Display-Ausgaben (Gerät -> Virtuelles Terminal): | |||
COB-ID: 0x500 + Node-ID Gerät | |||
Länge: 8 Bytes | |||
Address: Node-ID Gerät (Source) | |||
Multiplexor: 600Ah, Subindex 2 | |||
Data: DWORD mit bis zu 4 Zeichen | |||
Tastatur-Eingaben (Virtuelles Terminal -> Gerät): | |||
COB-ID: 0x500 + Node-ID virtuelles Terminal | |||
Länge: 8 Bytes | |||
Address: 0x80 + Node-ID Gerät (Destination) | |||
Multiplexor: 600Ah, Subindex 1 | |||
Data: DWORD mit bis zu 4 Zeichen | |||
Zum Einschalten der Display-Ausgabe via MPDO schickt das virtuelle Terminal entweder ein beliebiges Zeichen ungleich NUL (0) oder Cntrl-A (01h). Mit Cntrl-A wird die Zeitüberwachung aktiviert, d. h. das virtuelle Terminal muss mindestens jede Sekunde einen Tasten-Code schicken (z. B. Cntrl-A). Bekommt in diesem Mode das Gerät innerhalb von 4 s kein Zeichen, wird die Display-Ausgabe via MPDO abgeschaltet. | |||
Zum Deaktivieren der Display-Ausgabe schickt das virtuelle Terminal Cntrl-D (04h) oder wenn die Zeitüberwachung (Cntrl-A) aktiv ist, beendet das Gerät automatisch die Ausgabe, wenn kein Zeichen mehr empfangen wurde. | |||
Damit es bei der Zeichenausgabe per MPDO nicht zu einer zu hohen Buslast kommt, sollten maximal zwei MPDO pro 10 ms ausgegeben werden (inhibit Timer 5 ms). | |||
== Zeichensatz == | |||
Für die Kodierung der Zeichen (Umlaute) wird der Zeichensatz ISO-8859-15 (siehe [[wpde:ISO_8859-15|ISO-8859-15]]) verwendet. | |||
== Tastaturcodes (Virtuelle Tasten) == | |||
Folgende ASCII-Codes können für eine Menü-Steuerung verwendet werden: | |||
{| border="1" cellspacing="0" cellpadding="3" | |||
! Dez. !! Hex !! Char !! Bedeutung | |||
|- | |||
| 24 || 0x18 || CAN || End Taste (Cntrl-X) | |||
|- | |||
| 45 || 0x2D || '-' || Minus Taste | |||
|- | |||
| 43 || 0x2B || '+' || Plus Taste | |||
|- | |||
| 13 || 0x0D || CR || Enter Taste | |||
|- | |||
| 27 65 || 0x1B 0x41 || ESC A || Pfeil Auf Taste | |||
|- | |||
| 27 66 || 0x1B 0x42 || ESC B || Pfeil Ab Taste | |||
|- | |||
| 27 67 || 0x1B 0x43 || ESC C || Pfeil Rechts Taste | |||
|- | |||
| 27 68 || 0x1B 0x44 || ESC D || Pfeil Links Taste | |||
|- | |||
| 27 80 || 0x1B 0x50 || ESC P || F1 Taste | |||
|- | |||
| 27 81 || 0x1B 0x51 || ESC Q || F2 Taste | |||
|- | |||
| 27 82 || 0x1B 0x52 || ESC R || F3 Taste | |||
|- | |||
| 27 83 || 0x1B 0x53 || ESC S || F4 Taste | |||
|} | |||
Das Gerät entscheidet selbstständig, wie die Tasten zu interpretieren sind. Dabei ist davon auszugehen, dass nicht alle virtuellen Terminals alle Tasten senden. | |||
== Mindestanforderung an VT52 Steuersequenzen == | |||
{| border="1" cellspacing="0" cellpadding="3" | |||
! Code !! Name !! Bedeutung | |||
|- | |||
| ESC A || Cursor up || Der Cursor wird eine Zeile nach oben bewegt. Ist er schon in der ersten Zeile, erfolgt keine Reaktion. | |||
|- | |||
| ESC B || Cursor down || Der Cursor wird eine Zeile nach unten bewegt. Ist er schon in der letzten Zeile, erfolgt keine Reaktion. | |||
|- | |||
| ESC C || Cursor right || Der Cursor wird um eine Spalte nach rechts bewegt. Ist er schon ganz rechts, erfolgt keine Reaktion. | |||
|- | |||
| ESC D || Cursor left || Der Cursor wird um eine Spalte nach links bewegt. Ist er schon ganz links, erfolgt keine Reaktion. | |||
|- | |||
| ESC E || Clear home || Der Bildschirm wird gelöscht, der Cursor geht nach links oben. | |||
|- | |||
| ESC H || Cursor home || Der Cursor geht nach links oben. | |||
|- | |||
| ESC I || Cursor up and insert || Der Cursor geht um eine Zeile nach oben. Ist er schon in der ersten Zeile, wird eine Leerzeile eingefügt. Die Folgezeilen rücken dann nach unten. | |||
|- | |||
| ESC J || Clear to end of frame || Der Bildschirm wird ab Cursor bis zum Ende gelöscht. | |||
|- | |||
| ESC K || Clear to end of line || Die Zeile wird ab Cursor gelöscht. | |||
|- | |||
| ESC L || Inser line || Leerzeile wird an aktueller Cursor-Zeile eingefügt. Der Rest des Bildschirms wir um eine Zeile nach unten geschoben. | |||
|- | |||
| ESC M || Delete line || Löscht die Zeile, in der sich der Cursor befindet. Die anderen Zeilen rücken auf. Die letzte Zeile wird leer. | |||
|- | |||
| ESC Yyx || Move Cursor || Bewegt den Cursor auf Zeile y und Spalte x. Auf die y- und x-Position muss immer 32 addiert werden. (x = 0 ... 19, y = 0 ... 3) | |||
|- | |||
| ESC e || Cursor on || Cursor einschalten | |||
|- | |||
| ESC f || Cursor off || Cursor ausschalten | |||
|- | |||
| ESC j || Store cursor || Die aktuelle Cursor-Position wird gespeichert. | |||
|- | |||
| ESC k || Restore cursor || Der Cursor wird auf die mit ESC j gespeicherte Position bewegt. | |||
|- | |||
| ESC l || Clear line || Die Cursor-Zeile wird gelöscht. Der Cursor geht dann auf den Zeilenanfang. | |||
|- | |||
| ESC o || Clear line to cursor || Die Cursor-Zeile wird vom Anfang bis zum Cursor gelöscht. | |||
|- | |||
|} | |||
[[Kategorie:Erweiterungen des Profils]] | |||
[[Kategorie:Empfehlungen]] | |||
[[Category:Application Notes]] | |||
[[Category:Application Notes]] | [[Category:Application Notes]] |
Revision as of 11:15, 12 September 2013
CANopen virtual terminal for CiA 417, Object 600Ah
General
A CANopen device can be used or controlled using the Object 600Ah. The display and the keyboard are located in another CANopen appliance (Virtual Terminal)
The mentioned Object should always be included in the drive unit.
There are 2 remote control channels:
- An input channel (stdin), and
- an output channel (stdout)
Object 600Ah Subindex 1 is stdin (Standard-input: Keyboard) Object 600Ah Subindex 2 is stdout (Standard-output: screen)
If the signs Object 600Ah, subindex 2 are ready the device send output to the virtual termnial. The zero sign (0) means no sign available. The control sequences VT-52 can be used to control the cursors.
Betätigt der Anwender eine Taste, so wird der Tastencode (1 .. 255) in das Objekt 600Ah, Subindex 1 geschrieben. Sondertasten werden dabei als Escape-Sequenzen (VT-52) gesendet.
Ablauf des Datenaustausches via SDO
Das Ausgabegerät (virtuelles Terminal) pollt zyklisch das Objekt 600Ah, Subindex 2. Wird ein Zeichen ungleich NUL (0) gelesen, so wird dieses im Terminal (Display) ausgegeben. Für die Steuerung des Cursors werden VT-52 Steuersequenzen ausgewertet.
Liegt kein Zeichen vor, kann die Pollzeit kürzer sein.
Wird eine Taste betätigt, so wird der Tastencode in das Objekt 600Ah, Subindex 1 geschrieben.
Ablauf des Datenaustausches via MPDO
Um die Kommunikation zu beschleunigen, besteht die Möglichkeit, die Ein- und Ausgabedaten per MPDO zu versenden.
Display-Ausgaben (Gerät -> Virtuelles Terminal):
COB-ID: 0x500 + Node-ID Gerät Länge: 8 Bytes Address: Node-ID Gerät (Source) Multiplexor: 600Ah, Subindex 2 Data: DWORD mit bis zu 4 Zeichen
Tastatur-Eingaben (Virtuelles Terminal -> Gerät):
COB-ID: 0x500 + Node-ID virtuelles Terminal Länge: 8 Bytes Address: 0x80 + Node-ID Gerät (Destination) Multiplexor: 600Ah, Subindex 1 Data: DWORD mit bis zu 4 Zeichen
Zum Einschalten der Display-Ausgabe via MPDO schickt das virtuelle Terminal entweder ein beliebiges Zeichen ungleich NUL (0) oder Cntrl-A (01h). Mit Cntrl-A wird die Zeitüberwachung aktiviert, d. h. das virtuelle Terminal muss mindestens jede Sekunde einen Tasten-Code schicken (z. B. Cntrl-A). Bekommt in diesem Mode das Gerät innerhalb von 4 s kein Zeichen, wird die Display-Ausgabe via MPDO abgeschaltet.
Zum Deaktivieren der Display-Ausgabe schickt das virtuelle Terminal Cntrl-D (04h) oder wenn die Zeitüberwachung (Cntrl-A) aktiv ist, beendet das Gerät automatisch die Ausgabe, wenn kein Zeichen mehr empfangen wurde.
Damit es bei der Zeichenausgabe per MPDO nicht zu einer zu hohen Buslast kommt, sollten maximal zwei MPDO pro 10 ms ausgegeben werden (inhibit Timer 5 ms).
Zeichensatz
Für die Kodierung der Zeichen (Umlaute) wird der Zeichensatz ISO-8859-15 (siehe ISO-8859-15) verwendet.
Tastaturcodes (Virtuelle Tasten)
Folgende ASCII-Codes können für eine Menü-Steuerung verwendet werden:
Dez. | Hex | Char | Bedeutung |
---|---|---|---|
24 | 0x18 | CAN | End Taste (Cntrl-X) |
45 | 0x2D | '-' | Minus Taste |
43 | 0x2B | '+' | Plus Taste |
13 | 0x0D | CR | Enter Taste |
27 65 | 0x1B 0x41 | ESC A | Pfeil Auf Taste |
27 66 | 0x1B 0x42 | ESC B | Pfeil Ab Taste |
27 67 | 0x1B 0x43 | ESC C | Pfeil Rechts Taste |
27 68 | 0x1B 0x44 | ESC D | Pfeil Links Taste |
27 80 | 0x1B 0x50 | ESC P | F1 Taste |
27 81 | 0x1B 0x51 | ESC Q | F2 Taste |
27 82 | 0x1B 0x52 | ESC R | F3 Taste |
27 83 | 0x1B 0x53 | ESC S | F4 Taste |
Das Gerät entscheidet selbstständig, wie die Tasten zu interpretieren sind. Dabei ist davon auszugehen, dass nicht alle virtuellen Terminals alle Tasten senden.
Mindestanforderung an VT52 Steuersequenzen
Code | Name | Bedeutung |
---|---|---|
ESC A | Cursor up | Der Cursor wird eine Zeile nach oben bewegt. Ist er schon in der ersten Zeile, erfolgt keine Reaktion. |
ESC B | Cursor down | Der Cursor wird eine Zeile nach unten bewegt. Ist er schon in der letzten Zeile, erfolgt keine Reaktion. |
ESC C | Cursor right | Der Cursor wird um eine Spalte nach rechts bewegt. Ist er schon ganz rechts, erfolgt keine Reaktion. |
ESC D | Cursor left | Der Cursor wird um eine Spalte nach links bewegt. Ist er schon ganz links, erfolgt keine Reaktion. |
ESC E | Clear home | Der Bildschirm wird gelöscht, der Cursor geht nach links oben. |
ESC H | Cursor home | Der Cursor geht nach links oben. |
ESC I | Cursor up and insert | Der Cursor geht um eine Zeile nach oben. Ist er schon in der ersten Zeile, wird eine Leerzeile eingefügt. Die Folgezeilen rücken dann nach unten. |
ESC J | Clear to end of frame | Der Bildschirm wird ab Cursor bis zum Ende gelöscht. |
ESC K | Clear to end of line | Die Zeile wird ab Cursor gelöscht. |
ESC L | Inser line | Leerzeile wird an aktueller Cursor-Zeile eingefügt. Der Rest des Bildschirms wir um eine Zeile nach unten geschoben. |
ESC M | Delete line | Löscht die Zeile, in der sich der Cursor befindet. Die anderen Zeilen rücken auf. Die letzte Zeile wird leer. |
ESC Yyx | Move Cursor | Bewegt den Cursor auf Zeile y und Spalte x. Auf die y- und x-Position muss immer 32 addiert werden. (x = 0 ... 19, y = 0 ... 3) |
ESC e | Cursor on | Cursor einschalten |
ESC f | Cursor off | Cursor ausschalten |
ESC j | Store cursor | Die aktuelle Cursor-Position wird gespeichert. |
ESC k | Restore cursor | Der Cursor wird auf die mit ESC j gespeicherte Position bewegt. |
ESC l | Clear line | Die Cursor-Zeile wird gelöscht. Der Cursor geht dann auf den Zeilenanfang. |
ESC o | Clear line to cursor | Die Cursor-Zeile wird vom Anfang bis zum Cursor gelöscht. |