|
6 Anhang6.1 Schaltpläne
6.2 LayoutsBuskoppler: Bestückungsplan, Bestückungsseite, Lötseite I/O-Applikation: Bestückungsplan, Bestückungsseite, Lötseite RS232-Applikation: Bestückungsplan, Bestückungsseite, Lötseite
6.3 BauteillisteDie meisten Bauteile sind von Reichelt beziehbar. Der CAN-Controller stammt von elpro (oder Simons).
6.3.1 Der Buskoppler
6.3.2 Die I/O-Applikation
6.3.3 Die RS232-Applikation
6.4 DatenblätterKomponenten:
6.5 EEProm-Tabellen; SRAM-TabellenEEPROM-Belegung im I/O-Knoten-µController
EEPROM-Belegung im RS232-Knoten-µController
Knotentypen (Adresse FFhex)
SRAM-Belegung im RS232-Knoten-µController
6.6 CAN-Controller Registerinitialisierungswerte
6.7 Pinbelegung der Verbindungsstecker X1 und X2 zwischen Buskoppler und ApplikationshardwareBelegung von X1:
Belegung von X2:
6.8 Belegung des ISP-Steckers des verwendeten Programmiergerätes von EquinoxLink zu Equinox
6.9 Befehlsübersicht: PC <-> RS232-Applikation
|
< | s | id-Byte 0 | id-Byte 1 | (Daten)Byte 0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 | > |
Antwort:
< | * | > |
Beschreibung:
id-Byte0 und id-Byte1 kennzeichnen den Identifier (inkl. RTR-Bit und den DLC) der zu versendenden Nachricht/Telegramm. Datenbyte0-8 stellen die Nutzdatenbytes dar, die über den CAN-Bus übermittelt werden sollen. Mit diesem Befehl wird also ein Paket übermittelt, das aus ID-Bytes und genau 8 Nutzdatenbyte besteht.
Sollen weniger Nutzdatenbyte übermittelt werden, muß der DLC (in id-Byte1) entsprechend gesetzt werden. Das Format der Übertragung von genau 8 Datenbyte zum Knoten wird dadurch nicht geändert, lediglich der Knoten schickt dann weniger Datenbyte auf den CAN-Bus.
Als Bestättigung folgt auf diesen Befehl ein Quittungstelegramm „<*>“. (Nur gültig für Softwareversion vor 232S1.10)
lokale MO-ID-Tabelle umprogrammieren
Funktion:
Die MO-ID-Tabelle im lokalen RS232-Knoten soll verändert werden.
Dem RS-232 Knoten wird mitgeteilt, welcher MO-ID Eintrag verändert werden soll. Dieser Befehl wird auch dazu benutzt, um die implementierte Telegrammüberwachung für ein bestimmtes MO einzuleiten (MO0-MO12). Dazu wird die zu überwachende/protokollierende ID in einen dafür vorgesehenen MO-ID Bereich geschrieben. (Beispiel 2 und 3)
Die Adresse des MessageObjekts-Byte0 des CAN-Controllers wird zuerst übermittelt, danach dann das dort abzulegende IdentifierByte0. Das ganze wiederholt sich für MessageObjekt-Byte1 und IdentifierByte1 (beinhaltet RTR-Bit und DLC).
Die Antwort des Knotens erfolgt in einem getrennten Datenpaket, das vom Atmel initiiert wird. (siehe Knoten -> PC, Befehl <a ...>)
Format:
Befehl:
< | a | adr-id-Byte0 | id-Byte0 | adr-id-Byte1 | id-Byte1 | x | x | x | x | x | x | > |
Antwort:
< | * | > |
Beschreibung:
Das adr-id-Byte0 spiegelt die Adresse im CAN-Controller wieder. Die folgende Tabelle zeigt die Adresse für alle MessageObjects (MO0-MO15)
MO0 |
MO1 |
MO2 |
MO3 |
MO4 |
MO5 |
MO6 |
MO7 |
MO8 |
MO9 |
MO10 |
MO11 |
MO12 |
MO13 |
MO |
MO15 |
|
Byte0 |
40h |
42h |
44h |
46h |
48h |
4Ah |
4Ch |
4Eh |
50h |
52h |
54h |
56h |
58h |
5Ah |
5Ch |
5Eh |
Byte1 |
41h |
43h |
45h |
47h |
49h |
4Bh |
4Dh |
4Fh |
51h |
53h |
55h |
57h |
59h |
5Bh |
5Dh |
5Fh |
Hierbei dürfen MO13, MO14 und MO15 nicht für diese Funktion verwendet werden, sie sind für den reibungslosen Ablauf der Knotensteuerung verantwortlich. (Je nach Knotenhardware noch weitere, siehe jeweilige Hardwarebeschreibung)
Als Bestättigung folgt auf diesen Befehl ein Quittungstelegramm „<*>“. (Nur gültig für Softwareversion vor 232S1.10)
Beispiele:
In MO4 soll ID 217 eingetragen werden:
< |
a |
48h |
1Bh |
49h |
22h |
x |
x |
x |
x |
x |
x |
> |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
MO4 im RS232 Knoten soll ID 217 abhören (setzt Telegrammüberwachung für MO4 voraus):
< |
a |
48h |
1Bh |
49h |
22h |
x |
x |
x |
x |
x |
x |
> |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
MO4 soll nichts mehr abhören (= ID 0 abhören)
< |
a |
48h |
00h |
49h |
00h |
x |
x |
x |
x |
x |
x |
> |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
Funktion:
Die Register des lokalen CAN-Controllers am RS232-Knoten sollen byteweise ausgelesen werden
Nachdem die gewünschte CAN-RegisterAdresse übermittelt wurde und das Register vom Atmel ausgelesen wurde, sendet dieser den Inhalt des Registers in einem separaten Befehl an den PC (siehe Atmel->PC, Befehl <r ...>)
Format:
Befehl:
< | r | CAN-RegisterAdresse | x | x | x | x | x | x | x | x | x | > |
Antwort:
< | r | CAN-RegisterAdresse | Daten | > |
Beschreibung:
CAN-RegisterAdresse ist die Adresse im CAN-Controller, von deren ein Byte gelesen werden soll. Die genauen Adressen lassen sich im Datenblatt des CAN-Controllers nachschlagen.
Beispiel:
Das ReceiverReadyRegister1 soll ausgelesen werden (RRR1: 04h):
< |
r |
04h |
x |
x |
x |
x |
x |
x |
x |
x |
x |
> |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
Antwort:
< |
r |
04h |
F0h |
> |
1 |
2 |
3 |
4 |
5 |
Funktion:
Die Register des lokalen CAN-Controllers am RS232-Knoten sollen byteweise beschrieben werden
Format:
Befehl:
< | w | CAN-RegisterAdresse | Datenbyte | x | x | x | x | x | x | x | x | > |
Antwort:
< | w | CAN-RegisterAdresse | Datenbyte | x | x | x | x | x | x | x | x | > |
(Echo als Bestätigung)
Beschreibung:
CAN-RegisterAdresse ist die Adresse im CAN-Controller, auf die ein Byte geschrieben werden soll. Die genauen Adressen lassen sich im Datenblatt des CAN-Controllers nachschlagen.
Datenbyte enthält das zu schreibende Byte.
Beispiel:
Das Output-Control Register soll beschrieben werden (OC: 02h):
< |
w |
02h |
18h |
x |
x |
x |
x |
x |
x |
x |
x |
> |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
Funktion:
Die Exemplarnummer des RS232-Knoten wird ausgelesen. Dieser Befehl stellt die einzige Möglichkeit dar, die Exemplarnummer dieses Knotens an den PC zu übermitteln.
Format:
Befehl:
< | n | > |
Antwort:
< | n | ser_byte1 | ser_byte2 | ser_byte3 | > |
Beschreibung:
ser_byte1 bis ser_byte3 symbolisieren die Exemplarnummer, die im EEProm an Speicherstelle 1 bis Speicherstelle 3 abgelegt ist.
Aufgrund der implementierten "Telegrammüberwachung" in der RS232-Software wird bei einem durch den Akzeptanzfilter angenommenen Telegramm, das auf MO1 bis MO12 eintreffen kann, folgende Empfangsreaktion ausgelöst.
Funktion:
Es stehen Telegramme zur Übermittlung an den angebundenen Rechner bereit, die einem gefordertem Identifier entsprechen.
Um eine Zuordnung zu ermöglichen welches Telegramm eingetroffen ist, werden auch die beiden id-Bytes an den PC übermittelt.
Format:
< | a | id-Byte0 | id-Byte1 | (Daten)Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 | > |
Beschreibung:
id-Byte0/id-Byte1 beinhalten den Identifier des übermittelten/zu übermittelnden Telegramms.
Datenbyte0-7 enthalten die Nutzdaten.
Beispiel:
MO4 im RS232 Knoten sollte ID 217 abhören, jetzt wird folgendes Paket vom Knoten zum PC übermittelt:
< |
a |
1Bh |
22h |
ABh |
CDh |
FFh |
FFh |
FFh |
FFh |
FFh |
FFh |
> |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
|
Verweise:
PC -> Knoten, Befehl <a ...>
(Knotenfernkontrolle)
Funktion:
Es soll das EEPROM eines anderen Knoten ausgelesen werden.
Format:
Anfrage:
"1" | Antwort-id-Byte0 | Antwort-id-Byte1 | EE-Adr.-high | EE-Adr.-low |
Antwort:
"1" | KnotenadresseByte0 | KnotenadresseByte1 | EE-Adr.-high | EE-Adr.-low | Daten |
Beschreibung:
Antwort-id-Byte0/1 enthalten den Identifier des Knotens/MOs auf den das gelesene EEPROM-Byte geschickt werden soll. Dies ist typischerweise MO13 der sendenden RS232-Applikation.
EE-Adr.-high/low enthalten die EEPROM-Adresse des auszulesenden Zeichens
Beispiel:
Knoten2 (als RS232-Knoten -> MO13, ID=245) möchte wissen was im EEPROM an Adresse 0003h des Knoten Nr. 1 steht. Dazu sendet er ein Telegramm an die Knotenadresse des Knoten 1 (ID=101 =0CA8h, DLC=8,RTR=0) und verpackt darin seine eigene Adresse, auf der er die Antwort erwartet (ID=245 =1EA8h, DLC=8,RTR=0).
id-Byte high |
id-Byte low |
Befehl |
Antwort |
Antwort |
EE-Adr.-high |
EE-Adr.-low |
0Ch |
A8h |
„1“ |
1Eh |
A8h |
00h |
03h |
ID high |
ID low |
1 |
2 |
3 |
4 |
5 |
Antwort des angesprochenen Knoten:
id-Byte high Empfänger |
id-Byte low Empfänger |
|
eigene Knotenadr. Byte0 |
eigene Knotenadr. Byte1 |
EE-Adr.-high |
EE-Adr.-low |
ausgelesene Daten |
1Eh |
A8h |
„1“ |
0Ch |
A8h |
00h |
03h |
nn |
ID high |
ID low |
1 |
2 |
3 |
4 |
5 |
6 |
Die Übermittlung des „Eigene-Knotenadresse-Byte0/1“ dient dazu den antwortenden Knoten zu identifizieren.
Da die eigene Knotenadresse in MO15 gespeichert ist, reicht es MO15 auszulesen und im Telegramm an Stelle 2/3 einzutragen.
Funktion:
Es soll das EEPROM eines anderen Knoten beschrieben werden. Dabei ist der Sender dafür verantwortlich, daß im zu beschreibenden Knoten keine wichtigen Daten überschrieben werden.
Format:
Anfrage:
"2" | Antwort-id-Byte0 | Antwort-id-Byte1 | EE-Adr.-high | EE-Adr.-low | Daten |
Antwort:
"2" | KnotenadresseByte0 | KnotenadresseByte1 | EE-Adr.-high | EE-Adr.-low | Daten |
Beschreibung:
Antwort-id-Byte0/1 enthalten den Identifier des Knotens/MOs auf den das gelesene EEPROM-Byte geschickt werden soll. Dies ist typischerweise MO13 der sendenden RS232-Applikation.
EE-Adr.-high/low enthalten die EEPROM-Adresse des auszulesenden Zeichens
Der zu beschreibende Knoten quittiert seinerseits die Abarbeitung des Befehls, indem er das Telegramm an den Absender zurückschickt. Dabei muß er natürlich die Absende- und Zieladresse anpassen.
Beispiel:
Knoten2 (als RS232-Knoten -> MO13, ID=245) möchte das EEPROM an Adresse 0002h des Knoten Nr. 0 mit 1Ah beschreiben. Dazu sendet er ein Telegramm mit dem zu schreibenden Byte an die Knotenadresse des Knoten 0 (ID=100 =0C88h, DLC=8,RTR=0) und verpackt darin seine eigene Adresse, auf der er die Antwort erwartet (ID=245 =1EA8h, DLC=8,RTR=0).
id-Byte high Empfänger |
id-Byte low Empfänger |
Befehl |
AntwortID-Byte0 |
AntwortID-Byte1 |
EE-Adr.-high |
EE-Adr.-low |
zu schreibende Daten |
0Ch |
88h |
„2“ |
1Eh |
A8h |
00h |
02h |
1Ah |
ID high |
ID low |
1 |
2 |
3 |
4 |
5 |
6 |
Antwort des angesprochenen Knoten:
id-Byte high |
id-Byte low |
Befehl |
eigene Knotenadr. Byte0 |
eigene Knotenadr. Byte1 |
EE-Adr.-high |
EE-Adr.-low |
geschriebene Daten |
1Eh |
A8h |
„2“ |
0Ch |
88h |
00h |
02h |
1Ah |
ID high |
ID low |
1 |
2 |
3 |
4 |
5 |
6 |
Die Übermittlung des „Eigene-Knotenadresse-Byte0/1“ dient dazu den antwortenden Knoten zu identifizieren.
Da die eigene Knotenadresse in MO15 gespeichert ist, reicht es MO15 auszulesen und im Telegramm an Stelle 2/3 einzutragen.
FernCANRegister lesen: (bis Softwareversion 2.x; Kompatibilität bis v3.x)
Funktion:
Es soll ein Register des CAN-Controllers eines anderen Knoten ausgelesen werden.
Format:
Anfrage:
"3" | Antwort-id-Byte0 | Antwort-id-Byte1 | CANRegisterAdresse |
Antwort:
"3" | KnotenadresseByte0 | KnotenadresseByte1 | CANRegisterAdresse | Daten |
Beschreibung:
Antwort-id-Byte0/1 enthalten den Identifier des Knotens/MOs auf den das gelesene CANRegister-Byte geschickt werden soll. Dies ist typischerweise MO13 der sendenden RS232-Applikation.
CANRegisterAdresse enthält die Hardwareadresse des auszulesenden CANRegisters.
Der auszulesende Knoten quittiert seinerseits die Abarbeitung des Befehls, indem er das Telegramm inkl. dem ausgelesenen Byte an den Absender zurückschickt. Dabei muß er natürlich die Absende- und Zieladresse anpassen.
Beispiel:
Knoten2 (als RS232-Knoten -> MO13, ID=245) möchte das CANRegister P0PR an Adresse 29h des Knoten Nr. 0 auslesen. Dazu sendet er ein Telegramm mit dem zu lesenden Byte an die Knotenadresse des Knoten 0 (ID=100 =0C88h, DLC=8,RTR=0) und verpackt darin seine eigene Adresse, auf der er die Antwort erwartet (ID=245 =1EA8h, DLC=8,RTR=0).
id-Byte high Empfänger |
id-Byte low Empfänger |
Befehl |
AntwortID-Byte0 |
AntwortID-Byte1 |
CANRegisterAdresse |
0Ch |
88h |
„3“ |
1Eh |
A8h |
29h |
ID high |
ID low |
1 |
2 |
3 |
4 |
Antwort des angesprochenen Knoten:
id-Byte high |
id-Byte low |
Befehl |
eigene Knotenadr. Byte0 |
eigene Knotenadr. Byte1 |
CANRegisterAdresse |
Daten |
1Eh |
A8h |
„3“ |
0Ch |
88h |
29h |
AAh |
ID high |
ID low |
1 |
2 |
3 |
4 |
5 |
Die Übermittlung des „Eigene-Knotenadresse-Byte0/1“ dient dazu den antwortenden Knoten zu identifizieren.
Da die eigene Knotenadresse in MO15 gespeichert ist, reicht es MO15 auszulesen und im Telegramm an Stelle 2/3 einzutragen.
FernCANRegister schreiben: (bis Softwareversion 2.x)
Funktion:
Es soll ein Register des CAN-Controllers eines anderen Knoten beschrieben werden.
Format:
Anfrage:
"4" | Antwort-id-Byte0 | Antwort-id-Byte1 | CANRegisterAdresse | Daten |
Antwort:
"4" | KnotenadresseByte0 | KnotenadresseByte1 | CANRegisterAdresse | Daten |
Beschreibung:
Antwort-id-Byte0/1 enthalten den Identifier des Knotens/MOs auf den die Antwort des ausführenden Knotens geschickt werden soll. Dies ist typischerweise MO13 der sendenden RS232-Applikation.
CANRegisterAdresse enthält die Hardwareadresse des zu beschreibenden CANRegisters.
Der auszulesende Knoten quittiert seinerseits die Abarbeitung des Befehls, indem er das Telegramm an den Absender zurückschickt. Dabei muß er natürlich die Absende- und Zieladresse anpassen.
Beispiel:
Knoten2 (als RS232-Knoten -> MO13, ID=245) möchte das CANRegister P1LR an Adresse 2Eh des Knoten Nr. 0 auslesen. Dazu sendet er ein Telegramm mit dem zu schreibenden Byte an die Knotenadresse des Knoten 0 (ID=100 =0C88h, DLC=8,RTR=0) und verpackt darin seine eigene Adresse, auf der er die Antwort erwartet (ID=245 =1EA8h, DLC=8,RTR=0).
id-Byte high Empfänger |
id-Byte low Empfänger |
Befehl |
AntwortID-Byte0 |
AntwortID-Byte1 |
CANRegisterAdresse |
Daten |
0Ch |
88h |
„4“ |
1Eh |
A8h |
2Eh |
AAh |
ID high |
ID low |
1 |
2 |
3 |
4 |
5 |
Antwort des angesprochenen Knoten:
id-Byte high |
id-Byte low |
Befehl |
eigene Knotenadr. Byte0 |
Eigene Knotenadr. Byte1 |
CANRegisterAdresse |
Daten |
1Eh |
A8h |
„4“ |
0Ch |
88h |
2Eh |
AAh |
ID high |
ID low |
1 |
2 |
3 |
4 |
5 |
Die Übermittlung des „Eigene-Knotenadresse-Byte0/1“ dient dazu den antwortenden Knoten zu identifizieren.
Da die eigene Knotenadresse in MO15 gespeichert ist, reicht es MO15 auszulesen und im Telegramm an Stelle 2/3 einzutragen.
FernAtmelRegister lesen: (nur SoftwareVersion 1.0)
Funktion:
Es soll ein Register des Atmel-µControllers eines anderen Knoten ausgelesen werden.
Format:
Anfrage:
"5" | Antwort-id-Byte0 | Antwort-id-Byte1 | AtmelRegisterAdresse |
Antwort:
"5" | KnotenadresseByte0 | KnotenadresseByte1 | AtmelRegisterAdresse | Daten |
Beschreibung:
Antwort-id-Byte0/1 enthalten den Identifier des Knotens/MOs auf den das gelesene AtmelRegister-Byte geschickt werden soll. Dies ist typischerweise MO13 der sendenden RS232-Applikation.
AtmelRegisterAdresse enthält die absolute Hardwareadresse (20h-5Fh) des auszulesenden AtmelRegisters.
Der auszulesende Knoten quittiert seinerseits die Abarbeitung des Befehls, indem er das Telegramm inkl. dem ausgelesenen Byte an den Absender zurückschickt. Dabei muß er natürlich die Absende- und Zieladresse anpassen.
Beispiel:
Knoten2 (als RS232-Knoten -> MO13, ID=245) möchte das AtmelRegister DDRA an Adresse 3Ah des Knoten Nr. 0 auslesen. Dazu sendet er ein Telegramm mit dem zu lesenden Byte an die Knotenadresse des Knoten 0 (ID=100 =0C88h, DLC=8,RTR=0) und verpackt darin seine eigene Adresse, auf der er die Antwort erwartet (ID=245 =1EA8h, DLC=8,RTR=0).
id-Byte high Empfänger |
id-Byte low Empfänger |
Befehl |
AntwortID-Byte0 |
AntwortID-Byte1 |
AtmelRegisterAdresse |
0Ch |
88h |
„5“ |
1Eh |
A8h |
3Ah |
ID high |
ID low |
1 |
2 |
3 |
4 |
Antwort des angesprochenen Knoten:
id-Byte high |
id-Byte low |
Befehl |
eigene Knotenadr. Byte0 |
eigene Knotenadr. Byte1 |
AtmelRegisterAdresse |
Daten |
1Eh |
A8h |
„5“ |
0Ch |
88h |
3Ah |
BBh |
ID high |
ID low |
1 |
2 |
3 |
4 |
5 |
Die Übermittlung des „Eigene-Knotenadresse-Byte0/1“ dient dazu den antwortenden Knoten zu identifizieren.
Da die eigene Knotenadresse in MO15 gespeichert ist, reicht es MO15 auszulesen und im Telegramm an Stelle 2/3 einzutragen.
FernAtmelRegister schreiben: (nur SoftwareVersion 1.0)
Funktion:
Es soll ein Register des Atmel-µControllers eines anderen Knoten beschrieben werden.
Format:
Anfrage:
"6" | Antwort-id-Byte0 | Antwort-id-Byte1 | AtmelRegisterAdresse | Daten |
Antwort:
"6" | KnotenadresseByte0 | KnotenadresseByte1 | AtmelRegisterAdresse | Daten |
Beschreibung:
Antwort-id-Byte0/1 enthalten den Identifier des Knotens/MOs auf den die Antwort des ausführenden Knotens geschickt werden soll. Dies ist typischerweise MO13 der sendenden RS232-Applikation.
AtmelRegisterAdresse enthält die absolute Hardwareadresse (20h-5Fh) des zu beschreibenden AtmelRegisters.
Der auszulesende Knoten quittiert seinerseits die Abarbeitung des Befehls, indem er das Telegramm an den Absender zurückschickt. Dabei muß er natürlich die Absende- und Zieladresse anpassen.
Beispiel:
Knoten2 (als RS232-Knoten -> MO13, ID=245) möchte das AtmelRegister DDRA an Adresse 3Ah des Knoten Nr. 0 auslesen. Dazu sendet er ein Telegramm mit dem zu schreibenden Byte an die Knotenadresse des Knoten 0 (ID=100 =0C88h, DLC=8,RTR=0) und verpackt darin seine eigene Adresse, auf der er die Antwort erwartet (ID=245 =1EA8h, DLC=8,RTR=0).
id-Byte high Empfänger |
id-Byte low Empfänger |
Befehl |
AntwortID-Byte0 |
AntwortID-Byte1 |
CANRegisterAdresse |
Daten |
0Ch |
88h |
„6“ |
1Eh |
A8h |
3Ah |
AAh |
ID high |
ID low |
1 |
2 |
3 |
4 |
5 |
Antwort des angesprochenen Knoten:
id-Byte high |
id-Byte low |
Befehl |
eigene Knotenadr. Byte0 |
Eigene Knotenadr. Byte1 |
CANRegisterAdresse |
Daten |
1Eh |
A8h |
„6“ |
0Ch |
88h |
3Ah |
AAh |
ID high |
ID low |
1 |
2 |
3 |
4 |
5 |
Die Übermittlung des „Eigene-Knotenadresse-Byte0/1“ dient dazu den antwortenden Knoten zu identifizieren.
Da die eigene Knotenadresse in MO15 gespeichert ist, reicht es MO15 auszulesen und im Telegramm an Stelle 2/3 einzutragen
KnotenInfo lesen: (ab Softwareversion 1.10)
Funktion:
Hardware/Software spezifische Daten sollen aus dem Knoten gelesen werden
Diese Daten werden bei der Programmierung als Konstanten in den Quellcode aufgenommen.
Format:
Anfrage:
"7" | Antwort-id-Byte0 | Antwort-id-Byte1 | InfoIndex |
Antwort:
"7" | KnotenadresseByte0 | KnotenadresseByte1 | InfoIndex | Datenbyte0 | Datenbyte1 | Datenbyte2 | Datenbyte3 |
Beschreibung:
Antwort-id-Byte0/1 enthalten den Identifier des Knotens/MOs auf den das gelesene CANRegister-Byte geschickt werden soll. Dies ist typischerweise MO13 der sendenden RS232-Applikation.
InfoIndex enthält den Index der auszulesenden InfoKonstante. Diese Konstanten werden bei der Programmierung des Knotens im Programmcode hinterlegt und können somit zur Laufzeit nicht verändert werden. Die 4 übermittelten Datenbytes sind ASCII-kodiert für Zeichenketten und binär codiert für Werte. Sie repräsentieren Hardware/Software-abhängige Konstanten/Größen.
Der auszulesende Knoten quittiert seinerseits die Abarbeitung des Befehls, indem er das Telegramm inkl. den ausgelesenen Bytes an den Absender zurückschickt. Dabei muß er natürlich die Absende- und Zieladresse anpassen.
KnotenInfo (Index):
Index |
Beschreibung/Bezeichnung |
Länge |
0 |
SoftwareTyp, (z.B. „RelS“) |
4 Bytes (ASCII) |
1 | SoftwareVersionskennung, (z.B. „1.10“) | 4 Bytes (ASCII) |
2 |
externe EEPromGröße (max. 65536 Bytes) |
2 Bytes (Integer) |
3 | Uptime abfragen (Zeit seit Systemstart bzw. letztem Reset) | 4 Bytes (Format) |
4 | Knotentemperatur abfragen (LM75) (nur v2.xx) | 2 Bytes (Format) |
Formate für KnotenInfoLesenBefehle
Uptime abfragen
Byte 0: Minuten seit Systemstart bzw. letztem Reset
Byte 1: Stunden
Byte 2: Tage (Highbyte)
Byte 3: Tage (Lowbyte)
EmpfangsObjektLesen: (ab Softwareversion 3.x)
Funktion:
Belegung der EmpfangsObjekte auslesen (=empfangbare CAN-IDs).
Format:
Anfrage:
"8" | Antwort-id-Byte0 | Antwort-id-Byte1 | EmpfMO-Nr. (typisch 0-15) |
Antwort:
"8" | KnotenadresseByte0 | KnotenadresseByte1 | EmpfMO-Nr. | CanId Highbyte | CanId Lowbyte |
Anmerkung: Wird der Übergabeparameter EmpfMO-Nr. mit 0xFF übergeben, so liefert die Antwort die Anzahl der zur Verfügung stehenden EmpfangsMessageObjekte (im Lowbyte).
EmpfangsObjektSchreiben: (ab Softwareversion 3.x)
Funktion:
EmpfangsObjekte mit CanIds belegen/beschreiben.
Format:
Anfrage:
"9" | Antwort-id-Byte0 | Antwort-id-Byte1 | EmpfMO-Nr. (typisch 0-15) | CanId Highbyte | CanId Lowbyte |
Antwort:
"9" | Antwort-id-Byte0 | Antwort-id-Byte1 | EmpfMO-Nr. (typisch 0-15) | CanId Highbyte | CanId Lowbyte | Fehlernummer |
Fehlernummer:
0: kein Fehler
1: EmpfMO-Nr. zu groß (Knoten hat weniger EmpfMOs wie der übergebene
Parameter)
2: (reserviert)
Telegrammformat für extEEPromSchreiben:
CAN-ID | Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 |
KNr, MO12 | Antwort IDB0 |
Antwort IDB1 |
AdrHigh | AdrLow | Daten0 | Daten1 | Daten2 | Daten3 |
260 (KNr3, MO12) | 0x1E | 0xA8 | 0x00 | 0x08 | 0xA1 | 0xA2 | 0xA3 | 0xA4 |
die Antwort des Zeitschaltknotens darauf sieht so aus:
CAN-ID | Byte0 | Byte1 | Byte2 | Byte3 | Byte4 |
AntwortID | Absende IDB0 |
Absende IDB1 |
AdrHigh | AdrLow | Fehlernummer |
0x1E, 0xA8 -> ID:245 | 0x20 | 0x88 | 0x00 | 0x08 | 0x00 (kein Fehler) |
Wobei Byte0/1 (AbsendeIDB0/1) nicht die Knotenadresse, sondern das gewählte MO bedeuten
Telegrammformat für extEEPromLesen:
CAN-ID | Byte0 | Byte1 | Byte2 | Byte3 |
KNr, MO11 | Antwort IDB0 |
Antwort IDB1 |
AdrHigh | AdrLow |
259 (KNr3, MO11) | 0x1E | 0xA8 | 0x00 | 0x08 |
die Antwort des Zeitschaltknotens darauf sieht so aus:
CAN-ID | Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 |
AntwortID | Absende IDB0 |
Absende IDB1 |
AdrHigh | AdrLow | Daten0 | Daten1 | Daten2 | Daten3 |
0x1E, 0xA8 -> ID:245 | 0x20 | 0x68 | 0x00 | 0x08 | z.B 0xA1 | z.B. 0xA2 | z.B. 0xA3 | z.B. 0xA4 |
Wobei Byte0/1 (AbsendeIDB0/1) nicht die Knotenadresse, sondern das gewählte MO bedeuten
Telegrammformat für extEEPromLöschen:
CAN-ID | Byte0 | Byte1 | Byte2 | Byte3 |
KNr, MO10 | Antwort IDB0 |
Antwort IDB1 |
0xAA (zur Sicherheit) | 0xAA (zur Sicherheit) |
258 (KNr3, MO10) | 0x1E | 0xA8 | 0xAA | 0xAA |
Antwort des Knotens:
CAN-ID | Byte0 | Byte1 | Byte2 |
AntwortID | AbsendeIDB0 | AbsendeIDB1 | 0x00 (Bestätigung) |
0x1E, 0xA8 -> ID:245 | 0x20 | 0x48 | 0x00 |
Byte2 enthält immer 0x00 und bestätigt damit den Eingang des Löschen-Befehls. Das extEEProm wird erst im Anschluß gelöscht, um Timeouts zu vermeiden.
Telegrammformat für KnotenRücksetzen:
CAN-ID | Byte0 | Byte1 |
KNr, MO8 | 0xAA (zur Sicherheit) | 0xAA (zur Sicherheit) |
256 (KNr3, MO8) | 0xAA | 0xAA |
(Uhrzeit bleibt erhalten, nur die "erstenTelegramme" werden neu besetzt, "kurzTelegramme" werden nicht zurückgesetzt)
Der Knoten gibt keine Antwort auf das KnotenRücksetzen-Kommando.
Datenformat für die "kurzTelegramme":
CAN-ID | Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 |
KNr, MO9 | Sekunden High |
Sekunden Low |
IDB0 | IDB1 | Daten0 | Daten1 | Daten2 | Daten3 |
257 (KNr3, MO9) | 0x07 | 0x08 | 0x20 | 0x28 | 0x02 | 0x00 | 0x00 | 0x00 |
(Relais3 an Knoten 50 (IDB0/1: 0x20, 0x28) soll in 30min (=1800s =0x0708s) umschalten (D0=0x02)
Ein Antworttelegramm des ZSUr-Knotens wird nicht verschickt.
Aufbau/Zusammensetzung/Lage der Telegramme im extEEProm:
Byte0: Jahr
Byte1: WTag/Monat (Wochentag<<4 | Monat) (Wochentag: 1-7 (7:Sonntag))
Byte2: Tag
Byte3: Stunde
Byte4: Minute
Byte5: Sekunde
Byte6: IDB0 (HighByte)
Byte7: IDB1 (LowByte)
Byte8: DatenByte0
Byte9: DatenByte1
Byte10: DatenByte2
Byte11: DatenByte3
Byte12: DatenByte4
Byte13: DatenByte5
Byte14: DatenByte6
Byte15: DatenByte7
Byte 16: Byte0 des 2.Telegrammes...
0x0000-0x00FF | kurzTelegramme | max. 16 Stück | 256 Bytes |
0x0100-0x0EFF | taeglicheTelegramme | max. 224 Stück | 3584 Bytes |
0x0F00-0x19FF | woechentlicheTelegramme | max. 176 Stück | 2816 Bytes |
0x1A00-0x1FFF | EinmalTelegramme | max. 96 Stück | 1536 Bytes |
Datenformat für LM75-Kommandos
TemperaturSenden (Anfrage):
Beispiel: PC (RS232-Applikation, KNr.3) möchte wissen welche Temperatur an Sensor 1 (ParamterByte0 = 1) herrscht. Dazu schickt er folgendes Telegramm an Sensor (besser: SensorAnsammlung, bzw. "SensorBus") mit der CAN-ID 841 (der an Knoten 40 angeschlossen ist und auf MO1 reagiert)
CAN-ID | Byte0 | Byte1 | Byte2 | Byte3 |
KNr, MOn | BefehlsByte |
Antwort IDB0 |
Antwort IDB1 |
ParameterByte0 |
841 (KNr40, MO1) | 0x00 (=TempSenden) | 0x1E | 0xA8 | 0x01 |
Antwort des befragten Sensors (bzw. "SensorBusses", da ja
mehrere Sensoren angeschlossen sein können, die über die SlaveNr
unterschieden werden):
CAN-ID | Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 |
AntwortID | Befehlsbyte (Echo) |
Absende IDB0 |
Absende IDB1 |
ParameterByte0 (Echo) |
Temperatur HighByte |
Temperatur LowByte |
0x1E, 0xA8 -> ID:245 | 0x00 | 0x69 | 0x28 | 0x01 | z.B 0x00 | z.B. 0x39 |
AbsendeIDB0/1: Hier wird die SensorID verschickt, nicht die KnotenID
(oder Knotenbasisadresse)!
TemperaturHigh/LowByte liegt als Zweierkomplement vor (wie vom LM75
geliefert) und muß noch von der anfragenden Routine evtl. umgerechnet
werden. (Hier 0x0039 bedeutet: 19.5°C, siehe Datenblatt).
Steht im BefehlsByte der Wert 0x00 (für TemperaturSenden), dann gilt enthält das Parameterbyte die SlaveNr. des anzusprechenden Sensors (0-7).