Seite 1
Benutzer-Handbuch IK 121 PC-Zählerkarte zum Anschluss von HEIDENHAIN- Messgeräten 9/2000...
Seite 2
m^"d m^"d m^"d ¢ aFOF¤hO"mV a4^aVFam§FaFG F4^ma4^F F4^Fa*¤mV=Fs¢s n Hardware s¢ Spezifikation des PC-Bus Messgerät-Eingänge IK 121 A Messgerät-Eingänge IK 121 V FVaF¢T ¢...
Seite 3
m^"d aFs¢sam _ m§Fm=¤mVFm Q¬ ...
Seite 11
F4^ma4^F F4^Fa*¤mV=Fs¢s !¤VaOO«Fa"¤OF§FF ss...
Seite 12
Hardware Spezifikation des PC-Bus Die IK 121 kann in alle IBM AT und 100% kompatiblen PCs eingesetzt werden. HEIDENHAIN garantiert nicht für die einwandfreie Funktion der IK 121 mit nicht 100% kompatiblen PCs. Die IK 121 entspricht der internationalen Norm IEEE P996, die den AT- und ISA-Bus spezifiziert (Industrie-Standard).
Seite 13
Innenschirm – 5 V (U Gehäuse Außenschirm Messgerät-Eingänge IK 121 V An die IK 121 V werden HEIDENHAIN-Längenmessgeräte oder -Winkelmessgeräte mit sinusförmigen Spannungssignalen A und B angeschlossen. Zusätzlich steht das Referenzmarken- Signal R zur Verfügung. Signalamplituden A, B (0°, 90°)
Seite 41
FVaF s^9 hzda¤=FO°="¬@_aVm"d|FF«¤VaOO} a ¤mcapm Ts...
Seite 42
FVaF sG^9OOF_FVaFO°="n¬@_aVm"d|4^Fa*«¤VaOO} a ¤mcapm T¢...
Seite 43
FVaF sG^9 hzda¤=FO°="n¬@_aVm"d|FF«¤VaOO} a ¤mcapm T...
Seite 44
FVaF s ^9ahF_FVaF|4^Fa*«¤VaOO} FazaFd a ¤mcapm s ^9FF«¤VaOOp^mF ¤mcapm TT...
Seite 45
FVaF s ^9pmpdd_FVaF¢|4^Fa*«¤VaOO} a ¤mcapm ≥ TQ...
Seite 46
FVaF s ^9"¤_FVaF|FF«¤VaOO} a ¤mcapm T...
Seite 47
FVaF s ^9Fmm¤mV_FVaF|FF«¤VaOO} a ¤mcapm s} T...
Seite 48
FVaF s ^9pmpdd_FVaF|4^Fa*«¤VaOO} a ¤mcapm TG...
Seite 49
FVaF s ^9"¤_FVaFT|FF«¤VaOO} a ¤mcapm Tn...
Seite 50
_ m§Fm=¤mVFm aFs¢sam _ m§Fm=¤mVFm 4^mFdd«¤FFm m«FaVF ma4^ INSTALL IK 121 The IK 121-Interface-card should not be in your PC! Continue (y/n)? Q¬...
Seite 55
aFs¢sam _ m§Fm=¤mVFm PROCEDURE write_g26(baseadr:word;axes,address:byte;datum:word); VAR adr_reg,adr_point,adr_gate : word; BEGIN (*Die letzten vier Bits der Karten-Adresse ausblenden*) baseadr:=baseadr and $0FF0; (*Adresse des Zähler-Bausteins B0 bis B4 bilden*) address:=address and $001F; (*Adress-Zeiger in Adress-Register laden*) (*Adresse des Adress-Registers bilden*) adr_reg:=baseadr or $0008; (*Inhalt des Adress-Registers R0 bis R2 bilden = Adresse des Zähler-Bausteins ohne B0 und B1*) adr_point:=address shr 2;...
Seite 56
aFs¢sam _ m§Fm=¤mVFm void write_g26 (unsigned int baseadr, unsigned char axis, unsigned int address, unsigned int datum) unsigned int adr_reg, adr_point, adr_gate; /*Die letzten vier Bit der Karten-Adresse ausblenden*/ baseadr = baseadr & 0x0FF0; /*Adresse des Zähler-Bausteins B0 bis B4 bilden*/ address = address &...
Seite 57
aFs¢sam _ m§Fm=¤mVFm ¤mcapm«¤hFFm=FFVaF ¤mcapm9 F"=¥V¢ ""hFF *"F"=9 "¨a9 "==F9 VF*ma9 FUNCTION read_g26(baseadr:word;axes,address:byte):word; VAR adr_reg,adr_point,adr_gate : word; BEGIN (*Die letzten vier Bits der Karten-Adresse ausblenden*) baseadr:=baseadr and $0FF0; (*Adresse des Zähler-Bausteins B0 bis B4 bilden*) address:=address and $001F; (*Adress-Zeiger in Adress-Register laden*) (*Adresse des Adress-Registers bilden*) adr_reg:=baseadr or $0008;...
Seite 58
aFs¢sam _ m§Fm=¤mVFm unsigned int read_g26 (unsigned int baseadr, unsigned char axis, unsigned int address) unsigned int adr_reg, adr_point, adr_gate; /*Die letzten vier Bit der Karten-Adresse ausblenden*/ baseadr = baseadr & 0x0FF0; /*Adresse des Zähler-Bausteins B0 bis B4 bilden*/ address = address &...
Seite 59
aFs¢sam _ m§Fm=¤mVFm PROCEDURE soft_l0(baseadr:word;axis:byte); BEGIN write_g26(baseadr,axis,14,$0001); END; PROCEDURE soft_l1(baseadr:word;axis:byte); BEGIN write_g26(baseadr,axis,14,$0002); END; void soft_l0 (unsigned int baseadr, unsigned char axis) write_g26 (baseadr, axis, 0x0e, 0x0001); void soft_l1 (unsigned int baseadr, unsigned char axis) write_g26 (baseadr, axis, 0x0e, 0x0002); ¤mcapm«¤h°OFm:p*=FF§FVFzFa4^F§¤=F...
Seite 60
aFs¢sam _ m§Fm=¤mVFm FUNCTION latched(baseadr:word;axis,reg:byte):boolean; BEGIN case reg of 0: latched:= (Read_g26(baseadr,axis,14) and $0001 ) = $0001; 1: latched:= (Read_g26(baseadr,axis,14) and $0002 ) = $0002; end; END; unsigned char latched (unsigned int baseadr, unsigned char axis, unsigned char reg) unsigned char result;...
Seite 61
aFs¢sam _ m§Fm=¤mVFm p«F=¤«¤h§aF=F^pdFm°OFm:p*=FF§F VFzFa4^F§¤=F p«F=¤9 zpdd¥d"4^ ""hFF *"F"=9 "¨a9 FV9 PROCEDURE poll_latch(baseadr:word;axis,reg:byte); BEGIN case reg of 0: begin repeat until latched(baseadr,axis,0); end; 1: begin repeat until latched(baseadr,axis,1); end; end; END; void poll_latch (unsigned int baseadr,unsigned char axis, unsigned char reg) switch (reg) case 0: while (latched (baseadr, axis, 0) == 0)
Seite 62
aFs¢sam _ m§Fm=¤mVFm ¤mcapm«¤hFFmFamF¢_ a_F§F ¤mcapm9 F"=¥4p¤m¥¦"d¤F¢ ""hFF *"F"=9 "¨a9 FV9 VF*ma9 "¨a FV 4phz dpmV FUNCTION read_count_value32(baseadr:word;axis,reg:byte):comp; TYPE vartype = (li,by); mapper = record case wert:vartype of li : (field0:longint); by : (field1:array[0..1] of word); end; buffer : mapper; BEGIN case reg of 0 : begin...
Seite 63
aFs¢sam _ m§Fm=¤mVFm long read_count_value32 (unsigned int baseadr, unsigned char axis, unsigned char reg) union mapper long field0; unsigned int field1[2]; }buffer; switch (reg) case 0: buffer.field1[0] = read_g26 (baseadr, axis, 0); buffer.field1[1] = read_g26 (baseadr, axis, 2); break; case 1: buffer.field1[0] = read_g26 (baseadr, axis, 6);...
Seite 64
aFs¢sam _ m§Fm=¤mVFm ¤mcapm«¤hFFmFamFTG_ a_F§F ¤mcapm9 F"=¥4p¤m¥¦"d¤FTG ""hFF *"F"=9 "¨a9 FV9 VF*ma9 "¨a FV 4phz =p¤*dF FUNCTION read_count_value48(baseadr:word;axis,reg:byte):comp; TYPE vartype = (li,by); mapper = record case wert:vartype of li : (field0:comp); by : (field1:array[0..3] of word); end; buffer : mapper; BEGIN case reg of 0 : begin...
Seite 67
FazaFdFam 9F§F_ *¤O°*F pO§"F s¢s¥¬ program sample32; {------------------------------------------------------- DR. JOHANNES HEIDENHAIN GmbH, Traunreut, Germany Einfaches Programm für die IK 121 zur Anzeige von zwei Achsen. Breite des abgerufenen Messwertes: 32 Bit. V 1.01 April 1995 -------------------------------------------------------} {$N+,E+} {$V+} {$R+} USES crt,ik121_0;...
Seite 68
UNTIL KEYPRESSED; END. program sample48; {------------------------------------------------------- DR. JOHANNES HEIDENHAIN GmbH, Traunreut, Germany Einfaches Programm für die IK 121 zur Anzeige von zwei Achsen. Breite des abgerufenen Messwertes: 48 Bit. V 1.01 April 1995 -------------------------------------------------------} {$N+,E+} {$V+} {$R+} USES crt,ik121_0;...
Seite 69
FazaFdFam 9F§F_ *¤O°*F pO§"F ¢ TG /*----------------------SAMPLE32.C---------------------- DR. JOHANNES HEIDENHAIN GmbH, Traunreut, Germany Einfaches Programm für die IK 121 zur Anzeige von zwei Achsen. Breite des abgerufenen Messwertes: 32 Bit. V 1.01 April 1995 Projekt-Dateien: IK121_0.C, SAMPLE32.C...
Seite 70
/*Cursor wieder einschalten*/ _setcursortype (_NORMALCURSOR); return (0); /*----------------------SAMPLE48.C---------------------- DR. JOHANNES HEIDENHAIN GmbH, Traunreut, Germany Einfaches Programm für die IK 121 zur Anzeige von zwei Achsen. Breite des abgerufenen Messwertes: 48 Bit. V 1.01 April 1995 Projekt-Dateien: IK121_0.C, SAMPLE48.C Include-Datei: IK121_0.H...
Seite 98
aFs¢sam _ m§Fm=¤mVFm Funktion Kurzreferenz nG...
Seite 99
Alle DLL-Funktionen liefern eine Boolsche Variable zurück: true (<> 0), falls die Funktion erfolgreich ausgeführt wurde, false (= 0), falls ein Fehler auftrat. IKFind Diese Funktion liefert die Portadressen der installierten IK 121. Unbenutzte Einträge werden auf 0 gesetzt. Prototyp: BOOL IKFind (ULONG* pBuffer[8]);...
Seite 100
aFs¢sam _ m§Fm=¤mVFm IKStop Diese Funktion stoppt den Zähler. Prototyp: BOOL IKStop (USHORT Axis); Axis: Nummer der Achse (0 bis 15) IKClear Diese Funktion löscht den Fehlerstatus. Prototyp: BOOL IKClear (USHORT Axis); Axis: Nummer der Achse (0 bis 15) IKLatch Diese Funktion speichert den Zählerwert.
Seite 101
aFs¢sam _ m§Fm=¤mVFm IKLatched Diese Funktion stellt fest, ob der Zählerwert gespeichert wurde. Anwendung: Bevor ein Zählerwert ausgelesen wird, muss abgefragt werden, ob der Zählerwert gespeichert ist. Prototyp: BOOL IKLatched (USHORT Axis, USHORT Latch, BOOL* pStatus); Axis: Nummer der Achse (0 bis 15) Latch: 0 = Abfrage für Register 0 1 = Abfrage für Register 1...
Seite 102
Diese Funktion bricht das Überfahren von abstandscodierten Referenzmarken ab. Prototyp: BOOL IKStopCodRef (USHORT Axis); Axis: Nummer der Achse (0 bis 15) IKStatus Diese Funktion liefert den Status der IK 121 zurück. Prototyp: BOOL IKStatus (USHORT Axis, ULONG* pStatus); Axis: Nummer der Achse (0 bis 15) pStatus: Zeiger auf ein Langwort (32 Bit) s¬¢...
Seite 103
aFs¢sam _ m§Fm=¤mVFm Funktion 1 = Zählerwert in Register 0 gespeichert 1 = Zählerwert in Register 1 gespeichert ohne Funktion 1 = Zähler gestoppt ohne Funktion 1 = Frequenzüberschreitung ohne Funktion 1 = REF-Funktion aktiv 1 = Zähler wird mit nächster Referenzmarke gestartet 1 = Zähler wird mit nächster Referenzmarke gestoppt 1 = Zähler wird mit nächster Referenzmarke auf Nullgesetzt...
Seite 104
aFs¢sam _ m§Fm=¤mVFm IKRead32 Diese Funktion liefert den 32-Bit-Zählerwert. Bevor der Zählerwert ausgelesen werden kann, muss er in Register 0 oder Register 1 gespeichert (IKLatch, IKLatchREF) und abgefragt werden, ob die Speicherung erfolgte (IKLatched, IKWaitLatch). Prototyp: BOOL IKRead32 (USHORT Axis, USHORT Latch, LONG* pData);...
Seite 105
aFs¢sam _ m§Fm=¤mVFm IKWritePhase Diese Funktion ändert die momentane Einstellung der Phasenkorrektur. Prototyp: BOOL IKWritePhase (USHORT Axis, BYTE Data); Axis: Nummer der Achse (0 bis 15) Data: Neuer Wert der Phasenkorrektur (0 bis 63) IKLoadPhase Diese Funktion liefert den nichtflüchtig gespeicherten Wert der Phasenkorrektur zurück.
Seite 106
IKStore Diese Funktion überträgt alle momentan eingestellten Korrekturwerte in einen nichtflüchtigen Speicher. Die Phasen- und Amplituden-Korrekturwerte aktiviert die IK 121 automatisch beim Einschalten des PCs. Die Offset- Korrekturwerte werden beim Initialisieren der IK 121 (Funktion: IKInit) aktiviert. Prototyp: BOOL IKStore (USHORT Axis);...
Seite 107
Diese Funktion liest aus dem EEPROM einen 8 Bit-Wert. Prototyp: BOOL IKRomRead (USHORT Card, BYTE Adr, BYTE*pData); Card: Nummer der IK 121 (0 bis 7) Adr: Adresse im EEPROM (0 bis 255) pData: Zeiger auf eine „Byte-Variable“ (8 Bit), in welcher der Wert abgelegt wird.
Seite 108
TRUE(<>0)=High IKDefine Diese Funktion legt die Portadressen der installierten IK 121 fest. Für jede IK 121 muss die Portadresse an der entsprechenden Position in pBuffer8 abgelegt werden Unbenutzte Einträge müssen auf 0 gesetzt werden. Nur für Win32s unter Windows 3.1/3.11, da dort keine Registry...
Seite 109
Diese Funktion legt fest, welches Einspeicher-Signal zur 2. Achse weitergeleitet wird. Prototyp: BOOL IKEnableSync (USHORT Card, USHORT Source); Card: Nummer der IK 121 (0 bis 7) Source: 0 = Keine Kaskadierung 1 = Kaskadierung externes Signal 2 = Kaskadierung Software-Abruf 3 = Kaskadierung Timer...
: 4,0 V bis 32 V : 0 V bis 1,0 V Messgerät-Ausgänge: sinusförmige Stromsignale (11 µA über zusätzliche Baugruppe für jede Achse IK 121 A Messgerät-Eingänge: X1: Achse 1, Sub-D-Anschluss 9-polig; Sinus-Signale: 7 µA bis 16 µA X2: Achse 2, Sub-D-Anschluss 9-polig;...
Potentiometer Offset über Register in den Zählerbausteinen Datenregister für Messwerte 48 Bit Port-Adressen über DIP-Schalter einstellbar; die IK 121 belegt 16 Adressen Interrupts IRQ5, IRQ9, IRQ10, IRQ11, IRQ12 oder IRQ15 Leistungsaufnahme ca. 1 W, ohne Messgeräte Software Treiber-Software und zur Unterstützung der...
am«az_4^"d*ad==F *¤O_FVFam=Fm!Æ^dF*"¤FamFm Prinzip-Schaltbild der Abruf-Wege in den Zählerbausteinen Das folgende Prinzip-Schaltbild zeigt: • die Wirkungsweise der Abruf-Signale auf die Daten-Register • die Funktion der einzelnen Bits des Freigabe-Registers für den Messwert-Abruf • die Achs-Kaskadierung mit den zugehörigen Bits des gleichnamigen Registers •...
Seite 115
am«az_4^"d*ad==F *¤O_FVFam=Fm!Æ^dF*"¤FamFm ssQ...
Seite 116
DR. JOHANNES HEIDENHAIN GmbH Dr.-Johannes-Heidenhain-Straße 5 83301 Traunreut, Germany { +49 (86 69) 31-0 | +49 (86 69) 50 61 e-mail: info@heidenhain.de Technical support | +49 (86 69) 31-10 00 e-mail: service@heidenhain.de Measuring systems { +49 (86 69) 31-31 04 e-mail: service.ms-support@heidenhain.de...