Verwaltung, IndexGroup/-Offset Adresse
Um zu ermitteln, welche Instanzen einer Klasse vorhanden sind, kann über einen READ&WRITE Zugriff die Objektadresse des ersten Elements (IndexOffset = 0x0) abgefragt werden.
Zurückgegeben wird der IndexGroup und der IndexOffset. Wird als Adresse (0, 0) zurückgegeben, so existiert keine Instanz dieser Klasse.
Ist eine Instanz vorhanden, so können durch Inkrementieren des IndexOffsets alle weiteren vorhandenen Elemente der Instanz ermittelt werden.
Beispiel
Abfrage von Objekten
Abfrage der Objektadresse des 1.Kanals
IndexGroup =0x123900 zusammengesetzt aus
<CNC-Basis> | + <Class = HLD> | + <Attribut=Adresse> |
0x20300 | + 0x3000 | + 0x600 |
Input : Channel = 1, Axis = 0
Output :IndexGroup = 0x123301, IndexOffset = 0x0
Abfrage der Objektadresse des 2.Kanals
<CNC-Basis> | + <Class = HLD> | + <Attribut=Adresse> |
0x20300 | + 0x3000 | + 0x600 |
Input : Channel = 2, Axis = 0
Output :IndexGroup = 0x123302, IndexOffset = 0x0
Abfrage der 1.Achse der Plattform
<CNC-Basis> | + <Class = HLD> | + <Attribut=Adresse> |
0x120300 | + 0x3000 | + 0x600 |
Input : Channel = 0, Axis = 1
Output :IndexGroup = 0x123300, IndexOffset = 0x1000
Abfrage der 2. Decoderachse im 1. Kanal
<CNC-Basis> | + <Class = HLD> | + <Attribut=Adresse> |
0x120300 | + 0x2000 | + 0x600 |
Input : Channel = 1, Axis = 2
Output :IndexGroup = 0x122301, IndexOffset = 0x20000
Anzahl der Elemente einer Klasse
Die Anzahl der vorhandenen Elementtypen einer Instanz kann über den Werteinhalt des ersten Elements (IndexOffset = 0) abgefragt werden.
Zusätzlich beschreibt der Name dieses Elements die Instanz selbst.
Lageregler
Der Lageregler ist nicht kanalspezifisch, d.h. es gilt immer Kanal = 0. Die Achsen gehen von 1 bis zur Anzahl der konfigurierten Achsen.
Interpolator, Decoder, Bahnvorbereitung
Die Kanalnummer ist im Bereich [ 1; Anzahl konfigurierter Kanäle ] anzugeben.
Die Achsen sind kanalspezifisch und müssen im Bereich [0; <BAHN_BAVO_AXMAX>] liegen.
Channel, HLI-Treiber
Die Kanalnummer ist im Bereich [ 1; <Anzahl konfigurierter Kanäle> ] anzugeben.
Werden Achsen referenziert, so müssen diese im Bereich [ 1; <Anzahl der konfigurierten Achsen>] liegen.
Spindel
Für Spindeln wird als „Channel“-Eintrag der Spindelindex angegeben. Der Spindelindex geht von 0 bis zur Anzahl der konfigurierten Spindelachsen - 1.
Abfrage der Attribute der Elemente
Am Beispiel des Elements feedhold.enable im 1. Kanal wird die Abfrage veranschaulicht. Der IndexOffset des Elements ist 0x01. Es wird die Zusammensetzung der IndexGroup gezeigt; der IndexOffset des Elements ist unverändert.
Attribut Dateninhalt:
<CNC-Basis> | + <Class = HLD> | + <Attribut=Adresse> | <Kanal> |
0x120300 | + 0x3000 | + 0x0 | + 1 |
Input : IndexGroup = 0x123301, IndexOffset = 0x01
Output : 0/1 (abhängig vom Datentyp des Elements)
Attribut Name:
<CNC-Basis> | + <Class = HLD> | + <Attribut=Adresse> | <Kanal> |
0x120300 | + 0x3000 | + 0x100 | + 1 |
Input : IndexGroup = 0x123401, IndexOffset = 0x01
Output : feedhold.enable
Attribut Typ:
<CNC-Basis> | + <Class = HLD> | + <Attribut=Adresse> | <Kanal> |
0x20300 | + 0x3000 | + 0x200 | + 1 |
Input : IndexGroup = 0x123501, IndexOffset = 0x01
Output : BOOLEAN
Attribut Länge in Byte:
<CNC-Basis> | + <Class = HLD> | + <Attribut=Adresse> | <Kanal> |
0x120300 | + 0x3000 | + 0x300 | + 1 |
Input : IndexGroup = 0x123601, IndexOffset = 0x01
Output : 1
Attribut Einheit:
<CNC-Basis> | + <Class = HLD> | + <Attribut=Adresse> | <Kanal> |
0x120300 | + 0x3000 | + 0x400 | + 1 |
Input : IndexGroup = 0x123701, IndexOffset = 0x01
Output : -
Attribut Schreibschutz:
<CNC-Basis> | + <Class = HLD> | + <Attribut=Adresse> | <Kanal> |
0x120300 | + 0x3000 | + 0x500 | + 1 |
Input : IndexGroup = 0x123801, IndexOffset = 0x01
Output : 0