Herunterladen Inhalt Inhalt Diese Seite drucken

Werbung

Benutzer-Handbuch
IK 320
VMEbus-Zählerkarte
6/2004

Werbung

Inhaltsverzeichnis
loading

Inhaltszusammenfassung für HEIDENHAIN IK 320

  • Seite 1 Benutzer-Handbuch IK 320 VMEbus-Zählerkarte 6/2004...
  • Seite 2 ˜ ˜ Gültigkeit ˜ ˜ Dieses Handbuch gilt für die IK 320 ab Software-Version ˜ 246 118-08...
  • Seite 3: Inhaltsverzeichnis

    5.2 VME-Adressraum A24 (Address Modifier AM: $39)..............11 5.3 VME-Adressraum A16 (Address Modifier AM: $29)..............12 5.4 Kommunikation über Interrupt....................13 5.4.1 Von der IK 320 zum Master ..................13 5.4.2 Vom Master zur IK 320 ....................14 5.5 Beispiel für Schaltereinstellungen .....................14 6. Daten, Parameter und Datentransfer ..........................15 6.1 Daten ............................15...
  • Seite 4: Lieferumfang

    Lieferumfang VMEbus-Zählerkarte IK 320, Treiber-Software und Benutzer-Handbuch 1.1 Ausführungen IK 320 A VMEbus-Zählerkarte mit Messsystem-Eingängen für sinusförmige 286 939 01 Stromsignale (11 µA IK 320.1 Sonderausführung: VMEbus-Zählerkarte mit Messsystem-Eingängen für 286 839 11 sinusförmige Stromsignale (22 µA IK 320 V VMEbus-Zählerkarte mit Messsystem-Eingängen für sinusförmige...
  • Seite 5: Wichtige Hinweise

    Wichtige Hinweise Gefahr für interne Bauteile! Die Vorsichtsmaßnahmen bei der Handhabung elektrostatisch entladungsgefährdeter Bauelemente (ESD) nach DIN EN 100 015 beachten. Als Transport-Verpackung nur antistatisches Material verwenden. Beim Einbau ausreichende Erdung des Arbeitsplatzes und der Person sicherstellen. Einige Hinweise zu den verwendeten Begriffen: •...
  • Seite 6: Technische Beschreibung Der Ik 320

    Stromsignalen (IK 320 A) oder Spannungssignalen (IK 320 V) angeschlossen werden. Die Positionen der beiden Messsysteme werden mittels Software zum Rechner übertragen und weiterverarbeitet. Die IK 320 ist ideal für Anwendungen, bei denen eine hohe Auflösung der Messsystem-Signale erforderlich ist. Blockschaltbild: ˜...
  • Seite 7: Zugriffszeit Auf Messwerte

    4096fach. Der Interpolationswert (12 Bit) bildet zusammen mit dem Wert des Periodenzählers (32 Bit) den 44 Bit breiten Messwert. Die IK 320 speichert die Messwerte in 48 Bit breiten Daten-Registern, wobei die unteren 4 Bit nicht genutzt werden. Die Messwerte können entweder über externe Eingänge, per Software oder durch das Überfahren der Referenzmarken eingespeichert und anschließend über den VMEbus zum...
  • Seite 8: Hardware

    Fehlern auf der Karte blinkt sie mit etwa doppelter Frequenz. Diese Fehlermeldung kann nur durch Ausschalten des Systems oder durch einen RESET auf dem VMEbus gelöscht werden. 4.3 Messsystem-Eingänge IK 320 A An die IK 320 A können HEIDENHAIN-Längenmesssysteme oder -Winkelmesssysteme mit sinusförmigen Stromsignalen I und I angeschlossen werden.
  • Seite 9: Messsystem-Eingänge Ik 320.1 (Sonderausführung)

    Maximale Eingangsfrequenz 50 kHz Kabellänge max. 30 m Á 4.5 Messsystem-Eingänge IK 320 V An die IK 320 V können Sie HEIDENHAIN-Längenmesssysteme oder -Winkelmesssysteme mit sinusförmigen Spannungssignalen A und B anschließen. Signalamplituden: A, B (0°, 90°) 0,6 V bis 1,2 V...
  • Seite 10: Messsystem-Ausgänge

    Gehäuse Außenschirm 4.6 Messsystem-Ausgänge Die IK 320 gibt die Messsystem-Signale der Eingänge 1 (Anschluss X1) und 2 (Anschluss X3) zusätzlich an zwei 9polige Sub-D-Anschlüsse als sinusförmige Stromsignale (11 µA ) aus. Diese Ausgänge dürfen nur an Folge-Elektroniken angeschlossen werden, deren Eingangsverstärker mit ±...
  • Seite 11: Adressierung

    Adressierung 5.1 Schalter und Jumper Auf der IK 320 befinden sich zwei DIP-Schalter und drei Steckbrücken. Der DIP-Schalter SI legt die Adresse des VME-Adressraums A16 und der Schalter SII die des VME-Adressraums A24 fest. Die Steckbrücken J1 und J2 bestimmen die Interrupt-Request- und Interrupt-Acknowledge- Leitung.
  • Seite 12: Vme-Adressraum A16 (Address Modifier Am: $29)

    Adress space 24 5.3 VME-Adressraum A16 (Address Modifier AM: $29) Im Adressraum A16 stellt die IK 320 zwei Funktionen bereit: • Lokaler Interrupt auf der IK 320. • Einspeicher-Signal (Synchron-Einspeichern) und lokaler Interrupt. Ein Einspeicher-Signal kann gleichzeitig auf mehrere Karten wirken.
  • Seite 13: Kommunikation Über Interrupt

    5.4 Kommunikation über Interrupt 5.4.1 Von der IK 320 zum Master Die IK 320 generiert für Nachrichten an den Master einen Interupt auf dem VMEbus. Damit die IK 320 einen Interrupt an den Master ausgeben kann, muss der Master das IK-Interrupt-Status- Register gelöscht haben.
  • Seite 14: Vom Master Zur Ik 320

    5.4.2 Vom Master zur IK 320 Der Master schreibt die gewünschte Funktionsnummer in Parameter P81. Danach löst der Master durch Beschreiben der Interrupt-Adresse im Adressraum A16 auf der IK 320 einen Interrupt aus (ADO-Zyklus). Die IK 320 erkennt den Interrupt, verzweigt entsprechend der eingegebenen Funktionsnummer und führt die Funktion aus.
  • Seite 15: Daten, Parameter Und Datentransfer

    Der Zugriff auf den Datenbereich wird über Transfermerker koordiniert: Wenn der entsprechende Transfermerker = $00 ist, darf die IK 320 schreiben; ist er $01 ist, darf der Master lesen. Die Transfermerker werden in POST (Power On Self Test) gelöscht. Findet die IK 320 beim Schreiben einen gesetzten Merker vor, so wird eine Fehlermeldung an den Master ausgegeben und mit dem Schreiben so lange gewartet, bis der Merker vom Master gelöscht wird.
  • Seite 16 BA+$18: IK-Interrupt-Status Größe: Wort Wenn von der IK 320 an den Master ein Interrupt ausgegeben wird, steht im Interrupt-Status- Wort die Interrupt-Ursache. In der Interrupt-Service-Routine muss der Master das Statuswort lesen und anschließend löschen. Erst danach kann die IK 320 einen neuen Interrupt ausgeben.
  • Seite 17 $0000 nicht initialisierter Interrupt $01xx Positionswert X1 wurde geschrieben: Lower Byte Anforderungsquelle: xx = $01: –IK1, externer Einspeicherimpuls $03: Synchron-Einspeicher per VMEbus $04: –F1, externer Funktionseingang $05: –F2, externer Funktionseingang $06: Interrupt Master (Einspeichern per Software, Funktionsnr. 1) $02xx Positionswert X2 wurde geschrieben: Lower Byte Anforderungsquelle: xx = $02: –IK2, externer Einspeicherimpuls $03: Synchron-Einspeicher per VMEbus...
  • Seite 18 Funktion „Referenzpunktfahren“ aufrufen oder: die IK 320 zurücksetzen (RESET) Dieser Fehler tritt nur auf, wenn das Referenzpunktfahren bei abstandscodierten Referenzmarken nach dem Überfahren der 1. Referenzmarke abgebrochen bzw. neu gestartet wird. $03: Abbruch durch Anwender $09xx Referenzmarke Achse 2 wurde überfahren...
  • Seite 19 Dieser Zustand der IK 320 kann auftreten, wenn mit abstandscodierten REF-Marken Referenz gefahren wird und nach der 1.REF-Marke Referenzfahren abgebrochen wird. Fehlerbehebung durch das Überfahren einer weiteren REF-Marke bzw. ein RESET auf die IK 320. $20xx Korrekturwerte Achse 1 gelesen...
  • Seite 20 Hinweis: Sollte sich die Karte mit dem Interrupt-Status $FDxx oder $FExx melden, so liegt ein interner Fehler der Karte vor. Die IK 320 führt einen lokalen Software-RESET durch. Anschließend muss die Karte wieder neu initialisiert werden (Parameter, POST, REF fahren).
  • Seite 21 BA+$2E: Hardware-Version Größe: Wort Wird in POST gesetzt. BA+$30: Software-Version Größe: 12 Byte, String Wird in POST gesetzt. BA+$3C: System-Status 1 Größe: Byte Reserviert, wird nur intern benötigt. BA+$3D: System-Status 2 Größe: Byte Reserviert, wird nur intern benötigt. BA+$3E: aktueller Preset Achse 1 Größe: 3 Worte BA+$44: aktueller Preset Achse 2 Größe: 3 Worte...
  • Seite 22: Parameter

    Der Zugriff auf den Parameterbereich wird über Interrupt koordiniert: Im allgemeinen darf der Master immer auf den Parameterbereich schreiben. Die IK 320 liest den Bereich jedoch nur, wenn sie dazu aufgefordert wird. Von diesem Zeitpunkt bis zur Rückmeldung ist das Schreiben des Parameterbereichs für den Master verboten.
  • Seite 23 Á P01.1: Zählrichtung Achse 1 P01.2: Zählrichtung Achse 2 P01.3: Parameter ist ohne Bedeutung Adresse: BA+$102, BA+$103, BA+$104 Gültige Werte: 0, 1 Größe: Byte 0: normal, 1: invers Bei Einstellung invers wird der auszugebende Positionswert invertiert. P02.1: Achsdefinition Achse 1 P02.2: Achsdefinition Achse 2 P02.3: Achsdefinition verknüpfte Achsen 1 und 2 Adresse: BA+$106, BA+$107, BA+$108...
  • Seite 24 P08.1: Anzahl Stützwerte Achse 1 P08.2: Anzahl Stützwerte Achse 2 Adresse: BA+$126 (-$127), BA+$128 (-$129) Gültige Werte: 1 – 4096 Größe: Wort Wert = Anzahl der Korrekturstützpunkte P09.1: Breite Korrekturstützpunkt Achse 1 P09.2: Breite Korrekturstützpunkt Achse 2 Adresse: BA+$12A (-$12B) , BA+$12C (-$12D) Gültige Werte: alle Werte außer Null Größe: Wort Wert = Abstand der Korrekturstützpunkte in Signalperioden...
  • Seite 25 Es wird empfohlen, den Geschwindigkeitsbereich so zu wählen, dass die Eingangsfrequenz möglichst in der Mitte eines der drei Bereiche liegt. Beim Verlassen des Geschwindigkeitsbereichs während einer laufenden Korrekturwertaufnahme bricht die IK 320 die Korrekturwertaufnahme ab und gibt eine Fehlermeldung aus.
  • Seite 26 Preset verknüpfte Achsen 1 und 2 mit Wert aus P70.3 Aktive Flanken am –F1 bzw. –F2 Eingang der Buchse X41 erzeugen einen Interrupt auf der IK 320. Diese führt die in Parameter P80.1 (bzw P80.2) eingestellte Funktion aus. Nach Beendigung der Funktion oder im Fehlerfall wird eine Meldung an den Master zurückgegeben.
  • Seite 27: Funktionen

    Funktionen 7.1 Unterbrechbarkeit der Funktionen Die folgende Tabelle zeigt die unterbrechbaren und nicht unterbrechbaren Funktionen: Funktion bzw. Bedeutung Unterbrechbarkeit Funktionsnummer nur Hard-Latches externes, direktes gegenseitig unterbrechbar, sonst nur vom –Impuls1, –Impuls2, Einspeichern Master-Interrupt mit Funktionsnummer X41, Pin 4 und 5 $0A unterbrechbar.
  • Seite 28: Power On Self Test (Post)

    Hardware für die Korrekturwertaufnahme richtig initialisiert wird. Während POST abläuft wird die Kontrolle über das gemeinsame RAM an die IK 320 übergeben, und der Master darf erst wieder auf das gemeinsame RAM zugreifen, wenn sich die IK 320 durch einen Antwort-Interrupt an den Master zurückgemeldet hat.
  • Seite 29 Überfahren der zweiten Referenzmarke speichert die IK 320 den Positionswert und hält somit den Abstand zwischen den Referenzmarken in Inkrementen fest. Aus diesem Abstand berechnet die IK 320 die absolute Position bezogen auf die erste Referenzmarke auf dem Maßstab (Position „0“ auf der Zeichnung).
  • Seite 30: Korrekturwertaufnahme Zur Kompensation Von Abweichungen Der Messsystem-Signale

    $1B (Achse 1+2 starten ohne Referenzmarke) 7.4 Korrekturwertaufnahme zur Kompensation von Abweichungen der Messsystem-Signale Die IK 320 kann Abweichungen der Messsystem-Signale, die in einem Korrekturlauf ermittelt werden, kompensieren. Eine Karte kann nur jeweils für eine Achse die Korrekturwertaufnahme durchführen. Es ist aber möglich, mehrere Karten gleichzeitig für eine Korrekturwertaufnahme zu starten.
  • Seite 31: Korrekturwerte Lesen Und Schreiben

    Achtung: Die Beschleunigungen während der Korrekturwertaufnahme sollen möglichst gering oder konstant sein. Korrekturwert-Aufnahme abbrechen Die Korrekturwert-Aufnahme können Sie nur mit Funktionsnummer 0 und Master-Interrupt abbrechen. 7.5 Korrekturwerte lesen und schreiben Ein kompletter Satz Korrekturwerte beinhaltet immer eine Stützpunktzahl von P08x + 2. D.h. beim Lesen und Schreiben der Werte müssen immer die Stützpunkte von 0 bis P08x+1 gelesen oder geschrieben werden.
  • Seite 32: Korrekturwerte Lesen

    (BA+$90 für X1, BA+$92 für X2, 16-Bit-Werte). Diese CRC-Summe kann zusätzlich zu einem kompletten Korrekturwertsatz einer Achse als Kontrollgröße gespeichert werden, denn nach dem Korrekturwert Schreiben muss die IK 320 wieder die gleiche CRC-Summe ermitteln. Ebenso ist es ratsam, den zugehörigen Parametersatz festzuhalten.
  • Seite 33: Positionswert Abrufen

    Der Positionswert kann direkt oder indirekt eingespeichert werden. Hinweis: Beim direkten Einspeichern wird auf der IK 320 ein lokaler Interrupt erzeugt; beim indirekten Einspeichern wird das Einspeicher-Signal per Software über die lokale CPU der IK 320 erzeugt. Dadurch ergeben sich unterschiedliche Zeitpunkte für das Einspeichern der einzelnen Messwerte.
  • Seite 34: Externes, Direktes Einspeichern

    Signalpegel: Bezeichnung min. max. Einheit U eH U eL – 0,5 I eL Die Eingänge sind LOW-aktiv und werden durch interne Pull-Up Widerstände auf High-Pegel gehalten. Die Ansteuerung kann durch TTL-Standard, LS, ALS oder CMOS Bausteine erfolgen. Zeitdiagramm ˜ ˜ Signal Bez.
  • Seite 35: Externes, Indirektes Einspeichern Über Interrupt

    Achtung: Bei einer Achsverknüpfung (P21) ist der Einspeicherimpuls am Eingang –IMPULS1/KONTAKT1 für beide Achsen maßgebend. Ein Impuls an –IMPULS2/KONTAKT2 wird nicht ausgewertet. 8.1.3 Externes, indirektes Einspeichern über Interrupt Durch Kontaktschluss der Signale –F1 und –F2 gegen 0 V wird auf der Karte ein lokaler Interrupt erzeugt.
  • Seite 36: Indirektes Einspeichern Per Vmebus

    ˜ 8.1.7 Indirektes Einspeichern per VMEbus Durch einen ADO-Zugriff auf die Interrupt-Adresse des Adressraums A16 wird auf der IK 320 ein lokaler Interrupt generiert. Die CPU führt die in Parameter P81 eingestellte Funktion aus: Die Funktionen $01, $02, $03 generieren ein Einspeichersignal in den entsprechenden Achsen.
  • Seite 37: Positionswert Berechnen

    8.2 Positionswert berechnen Das folgende Ablaufdiagramm zeigt, wie die IK 320 den Messwert in Inkrementen bildet. X1 entspricht dem Messwert der 1. Achse und X2 dem Messwert der 2. Achse. Achse 1 Achse 2 ˜ ˜ := Interner Zählerwert + := Interner Zählerwert +...
  • Seite 38 Der REF-Wert ist der Codewert der ersten überfahrenen Referenzmarke bei abstandscodierten Referenzmarken; bei Messsystemen mit nur einer Referenzmarke ist REF-Wert = 0 Der Preset wird wie folgt berechnet: Preset = Gewünschter Anzeigewert (P70/P71) – interner Zählerwert – P72 – REF-Wert Es wird ein Wert berechnet, so dass der in den Parametern P70 bzw.
  • Seite 39: Programmierung

    9. Programmierung Die Programmierung einer IK 320 mit zwei Achsen wird in dieser Beschreibung mit einem „BORLAND C“-Beispiel gezeigt. Das Programm wurde auf einem Industrie-Rechner (von Firma ROTEC, D-76411 Rastatt) mit einer INTEL 486 CPU (DOS-Version 6.0), VMEbus-Interface und BORLAND C++-Compiler (Version 4.0) erstellt und getestet.
  • Seite 40: Die Header-Datei Sample.h

    NewInterruptRoutine installiert, die alle IK-Interrupts behandelt. Dann setzt diese Funktion über InitParams() die Parameter und führt den „Power On Self Test“ (POST) aus (VMEbus-Interrupt- Funktion $07). Der POST wurde erfolgreich abgeschlossen, falls die IK 320 den Status $0700 meldet. DisplayMessage() und DisplayError() Zeigen Meldungen und Fehler an, die die IK 320 über den Interrupt-Status meldet.
  • Seite 41: Das Programm-Beispiel Sample.c

    9.2 Das Programm-Beispiel SAMPLE.C /*----------------------------SAMPLE.C------------------------------- DR. JOHANNES HEIDENHAIN GmbH, Traunreut, Germany Sample for IK 320 V 1.00 September 1995 -------------------------------------------------------------------*/ #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <dos.h> #include "vmerotec.h"//Header file for ROTEC VME interface #include "ik320.h" #include "sample.h" /*--------------------------------------------------------------------...
  • Seite 42 printf("6: Compensation On/Off\n"); printf("0: End"); if (extucErrorCode) DisplayError(); if (extucMessage) DisplayMessage(); while (!(kbhit())); cCharacter=getch(); switch(cCharacter) case ’1’: TraverseOverReferenceMark(DIP_SWITCH_SI, DIP_SWITCH_SII, 1); break; case ’2’: TraverseOverReferenceMark(DIP_SWITCH_SI, DIP_SWITCH_SII, 2); break; case ’3’: DisplayPositionValue(DIP_SWITCH_SI, DIP_SWITCH_SII); break; case ’4’: clrscr(); fflush(stdin); printf("\nNumber of Compensation Points ");...
  • Seite 43: Die Header-Datei Ik320.H

    9.3 Die Header-Datei IK320.H /*----------------------IK320.H--------------------------------------- DR. JOHANNES HEIDENHAIN GmbH, Traunreut, Germany Header File for the Driver Unit IK320.C V 1.00 September 1995 ------------------------------------------------------------------*/ #define SUBDIVISION 4096 #define IK_BASE_ADDRESS 0xC00000L #define INTERPOLATION_BITS 12 /*The ROTEC VMEbus interface converts VME interrupts to DOS interrupt IRQ15.
  • Seite 44 #define PAR_05_1 0x0110 //Signal periods per rev. axis 1 #define PAR_05_2 0x0114 //Signal periods per rev. axis 2 #define PAR_05_3 0x0118 //Signal periods per rev. for axis comb. #define PAR_06_1 0x011C //Compensation on/off axis 1 #define PAR_06_2 0x011D //Compensation on/off axis 2 #define PAR_07_1 0x011E...
  • Seite 45: Die Funktionen In Ik320.C

    CompensationOnOff(unsigned char, unsigned char); void DisplayMessage(void); void DisplayError(void); 9.4 Die Funktionen in IK320.C /*----------------------------IK320.C--------------------------------- DR. JOHANNES HEIDENHAIN GmbH, Traunreut, Germany Driver Unit for IK 320 V 1.00 September 1995 ------------------------------------------------------------------*/ #include <stdlib.h> #include <conio.h>...
  • Seite 46 static unsigned char staucDIP_Switch_II = DIP_SWITCH_SII; static unsigned char staucAxis1WasRead, staucAxis2WasRead; static unsigned char staucAxisComWasRead; static unsigned char staucREF1Crossed, staucREF2Crossed; static unsigned char staucInterruptFinished; static double stadPositionValue1, stadPositionValue2; static double stadPositionValueCom; extern unsigned char extucErrorCode, extucMessage; /*-------------------------------------------------------------------- pOriginalInterruptVector Specifies a vector for the original interrupt. ------------------------------------------------------------------*/ void (interrupt far *pOriginalInterruptVector)();...
  • Seite 47 //Calculate address usAddress = CALCULATE_IK_ADDRESS(ucDIP_Switch_II); //Read status stawbStatus.ow.us = inport (usAddress + INTSTAT); }//End Read_IK_InterruptStatus /*-------------------------------------------------------------------- Evaluate_IK_InterruptStatus When the IK sends an interrupt to the master, the cause of the interrupt is shown in the interrupt status word. This function evaluates the interrupt status word.
  • Seite 48 break; case 0x05: if (stawbStatus.tb.uc0 & 0x01) extucErrorCode = 0x03; if (stawbStatus.tb.uc0 & 0x02) extucErrorCode = 0x04; break; case 0x06: if (stawbStatus.tb.uc0 == 1) outportb (usAddress + TM_X1, (char)0x00);//Reset TM_X1 else if (stawbStatus.tb.uc0 == 2) outportb (usAddress + TM_X2, (char)0x00);//Reset TM_X2 else outportb (usAddress + TM_COMB, (char)0x00);//Reset TM_COMB break;...
  • Seite 49 case 0x00: extucMessage = 0x04; break; case 0x01: extucErrorCode = 0x13; break; case 0x02: extucErrorCode = 0x14; break; case 0x03: extucErrorCode = 0x15; break; case 0x04: extucErrorCode = 0x16; break; case 0x05: extucErrorCode = 0x17; break; case 0x06: extucErrorCode = 0x18; break;...
  • Seite 50 extucErrorCode = 0x27; if (stawbStatus.tb.uc0 == 0x02) extucErrorCode = 0x28; if (stawbStatus.tb.uc0 == 0x03) extucErrorCode = 0x29; break; case 0x10: extucMessage = 0x08; break; case 0x11: extucMessage = 0x09; break; case 0xFD: switch (stawbStatus.tb.uc0) case 0x01: extucErrorCode = 0x30; break; case 0x02: extucErrorCode = 0x31;...
  • Seite 51 InitIk320 This function initializes the IK. ------------------------------------------------------------------*/ void InitIK320 (unsigned char ucDIP_Switch_I, unsigned char ucDIP_Switch_II) printf("\nInitialize IK 320 %02x\n",ucDIP_Switch_II); //Disable hardware interrupts _disable(); //Save old interrupt vector pOriginalInterruptVector = _dos_getvect(INT_NR); //Set new interrupt vector _dos_setvect(INT_NR,NewInterruptRoutine); //Set interrupt controller mask outp(INTC2A1,inp(INTC2A1) & INT_MASK);...
  • Seite 52 SetParam (ucDIP_Switch_II, PAR_05_3, 0x00000000,0);//Signal periods //axis combination SetParam (ucDIP_Switch_II, PAR_06_1, 0x00,0);//Compensation on/off 1 SetParam (ucDIP_Switch_II, PAR_06_2, 0x00,0);//Compensation on/off 2 SetParam (ucDIP_Switch_II, PAR_07_1, 0x00000000,0);//Comp. start 1 SetParam (ucDIP_Switch_II, PAR_07_2, 0x00000000,0);//Comp. start 2 SetParam (ucDIP_Switch_II, PAR_08_1, 0x0100,0);//Nr. of comp. pts. 1 SetParam (ucDIP_Switch_II, PAR_08_2, 0x0100,0);//Nr. of comp. pts. 2 SetParam (ucDIP_Switch_II, PAR_09_1, 0x0010,0);//Interv.
  • Seite 53 break; case PAR_02_3: outportb (usBaseAddress+usOffsetAddress, (char) lData); break; case PAR_03 outport (usBaseAddress+usOffsetAddress, (short) lData); break; case PAR_04_1: outport (usBaseAddress+usOffsetAddress, (short) lData); break; case PAR_04_2: outport (usBaseAddress+usOffsetAddress, (short) lData); break; case PAR_05_1: outport (usBaseAddress+usOffsetAddress, (short) (lData >> 16)); outport (usBaseAddress+usOffsetAddress+2, (short) (lData & 0xffff)); break;...
  • Seite 54 outport (usBaseAddress+usOffsetAddress+4, sData); break; case PAR_70_2: outport (usBaseAddress+usOffsetAddress, (short) (lData >> 16)); outport (usBaseAddress+usOffsetAddress+2, (short) (lData & 0xffff)); outport (usBaseAddress+usOffsetAddress+4, sData); break; case PAR_70_3: outport (usBaseAddress+usOffsetAddress, (short) (lData >> 16)); outport (usBaseAddress+usOffsetAddress+2, (short) (lData & 0xffff)); outport (usBaseAddress+usOffsetAddress+4, sData); break; case PAR_71_1: outport (usBaseAddress+usOffsetAddress, (short) (lData >>...
  • Seite 55 DisplayError(); break; if (extucMessage) DisplayMessage(); while (!(staucREF1Crossed)); break; case 2: printf("Cross over reference mark of axis 2\n"); staucREF2Crossed = 0; MasterInterrupt(ucDIP_Switch_I, ucDIP_Switch_II, 0x0009); if (extucErrorCode) DisplayError(); break; if (extucMessage) DisplayMessage(); while (!(staucREF2Crossed)); break; default: gotoxy (1,23); puts ("Error: Wrong axis number"); }//End TraverseOverReferenceMark /*-------------------------------------------------------------------- SynchroPosTrigger...
  • Seite 56 while (!(staucAxis1WasRead && staucAxis2WasRead)); printf("\r\t%10.4f\t%10.4f",stadPositionValue1,stadPositionValue2); staucAxis1WasRead = 0; staucAxis2WasRead = 0; while (!kbhit());getch(); }//End DisplayPositionValue /*-------------------------------------------------------------------- CompensationRun This function starts the compensation run ------------------------------------------------------------------*/ void CompensationRun(unsigned char ucDIP_Switch_I, unsigned char ucDIP_Switch_II, unsigned char ucAxis, unsigned char ucCompensationStart, unsigned short usNumberOfCompPoints, unsigned short usIntervalOfCompPoints, short sDirectionAndFrequency) switch(ucAxis)
  • Seite 57 staucAxis2WasRead =0; while (!kbhit());getch(); clrscr(); switch(ucAxis) //Compensation run axis 1 case 1: MasterInterrupt(ucDIP_Switch_I, ucDIP_Switch_II, 0x000b); printf ("\nRecord of compensation points for axis 1 started\n\n"); printf ("- Start axis\n"); break; //Compensation run axis 2 case 2: MasterInterrupt(ucDIP_Switch_I, ucDIP_Switch_II, 0x000c); printf ("\nRecord of compensation points for axis 2 started\n\n"); printf ("- Start axis\n");...
  • Seite 58 cAxis=getche(); fflush(stdin); printf("\n Compensation on = c / off = o "); if (extucErrorCode) DisplayError(); return; while (!kbhit()); cCharacter=getche(); switch(cAxis) //Switch compensation on/off axis 1 case ’1’: if (cCharacter==’c’) SetParam (ucDIP_Switch_II, PAR_06_1, 0x01,0); if (cCharacter==’o’) SetParam (ucDIP_Switch_II, PAR_06_1, 0x00,0); break; //Switch compensation on/off axis 2 case ’2’: if (cCharacter==’c’)
  • Seite 59 break; case 0x08: puts ("Preset set via master\n"); break; case 0x09: puts ("Preset set via external function\n"); break; default: puts ("Unknown message code"); extucMessage = 0; delay (3000); }//End DisplayMessage /*------------------------------------------------------------------- DisplayError This function displays the error messages of the IK interrupt status.
  • Seite 60 case 0x17: puts ("Error: axis 1 has wrong number of measuring\ interrupts\n"); break; case 0x18: puts ("Error: wrong calculation during compensation run\ of axis 1\n"); break; case 0x19: puts ("Error: axis 2 has no absolute reference\n"); break; case 0x20: puts ("Error: axis 2 has wrong speed\n"); break;...
  • Seite 61: Technische Daten Ik 320

    Eingangs-Frequenz: 50 kHz IK 320.1: X1, X3: Sub-D-Anschluss 9polig, Sinus-Signale 22 µA Messsystem-Ausgänge IK 320 V, IK 320 A: X2, X4: Sub-D-Anschluss 9polig, Sinus- Signale 11 µA (Bezugsspannung = 0 V; keine EXEn anschließbar) IK 320.1: X2, X4: Sub-D-Anschluss 9polig, Sinus-Signale 22 µA...
  • Seite 62 286 941-04 · 1 · 6/2004 · S · Printed in Germany · Änderungen vorbehalten...

Inhaltsverzeichnis