Alphabetische Übersicht der Befehle

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

%nr | Beginn eines Hauptprogramms (DIN66025/G-Code)
%Lnr | Beginn eines Unterprogramms (DIN66025/G-Code)
%In% | Formatierung einer I-Variablen als Zeichenkette
%Pn% | Formatierung einer P-Variablen als Zeichenkette
%Rn% | Formatierung einer R-Variablen als Zeichenkette
%Sn% | Formatierung einer Str-Variablen als Zeichenkette
{ | (Mehrzeiligen) Kommentar beginnen (PAL)
} | (Mehrzeiligen) Kommentar schließen (PAL)
( | Kommentar beginnen (DIN66025/G-Code)
) | (Mehrzeiligen) Kommentar schließen (DIN66025/G-Code)
; | Beginn eines einzeiligen Kommentars
$ | Operator zur Kennzeichnung einer Zahl als Hexadezimalwert
& | Operator für bitweise UND-Verknüpfung
| | Operator für bitweise ODER-Verknüpfung
^ | Operator für bitweise Exklusiv-ODER-Verknüpfung
~ | Operator für bitweise Negation
+ | Operator für die Addition
+= | Operator für die Additionszuweisung
- | Operator für die Subtraktion
-= | Operator für die Subtraktionszuweisung
* | Operator für die Multiplikation
*= | Operator für die Multiplikationszuweisung
\ | ESC (Escape-Zeichen) für Überlesen des Zeilenendes
/Anweisung | Kennzeichnung eines Befehlssatzes als Ausblendsatz
/ | Operator für die Division
/= | Operator für die Divisionszuweisung
< | Operator für Vergleich "Kleiner als"
<< | Operator für bitweise Verschieben nach links
<= | Operator für Vergleich "Kleiner als oder gleich"
> | Operator für Vergleich "Größer als"
>> | Operator für bitweise Verschieben nach rechts
>= | Operator für Vergleich "Größer als oder gleich"
== | Operator für Vergleich "Ist gleich"
!= | Operator für Vergleich "Ist ungleich"
? | Entscheidungsoperator, Zweiwegeentscheidung
# | Operator "Bewegung ohne Warten auf Ende"
#define | Festlegung eines Textersatzes im Quellprogramm
#include | Einbinden einer Datei mit Programmcode

<Application> | Anwendungssteuerung: Zugriff auf diverse Variablen und Parameter der Anwendung
<Break> | Anwendungssteuerung: Anhalten der Programmbearbeitung
<Counter> | Anwendungssteuerung: Zugriff auf einen Zähler der Anwendung
<OutputType> | Anwendungssteuerung: Ändern der Eigenschaften eines digitalen Ausgangs
<PathMode> | Anwendungssteuerung: Festlegen des Bahnmodus der Motion Control
<ProgAbort> | Anwendungssteuerung: Bedingter bzw. unbedingter Abbruch der Programmbearbeitung
<ProgHalt> | Anwendungssteuerung: Anhalten der Programmbearbeitung
<SupervisionInput> | Anwendungssteuerung: Rekonfigurieren eines (digitalen) Überwachungseingangs
<Trace> | Anwendungssteuerung: Wechsel des Programmbearbeitungsmodus

0 | 0x | Operator zur Kennzeichnung einer Zahl als Hexadezimalwert

A | A, A1, A2 | Adressbuchstaben der Achse A
 | Abort | Beenden des Hauptprogramms nach Bedienerquittung
 | AbortScript | Beenden eines momentan laufenden Scripts
 | ABORTRETRYIGNORE | MessageBox: Anzeige der Schaltflächen "Abbrechen", "Wiederholen" und "Ignorieren"
 | Acce | Einstellen des Beschleunigungsverhaltens einer Achse
 | Acce.Axn | Abfragen der aktuell eingestellten Achsbeschleunigung einer Handlingachse
 | ACOS | Trigonometrische Funktion ARCUSCOSINUS
 | Activate VPO | Aktivieren der Betriebsart VPO einer Handlingachse
 | AND | Operator für logische UND-Verknüpfung
 | ASIN | Trigonometrische Funktion ARCUSSINUS
 | ATAN | Trigonometrische Funktion ARCUSTANGENS
 | ATAN2 | Trigonometrische Funktion ARCUSTANGENS mit zwei Argumenten x,y
 | AtoF | Konvertierung einer ASCII-Zeichenkette in einen Gleitkommawert
 | AtoL | Konvertierung einer ASCII-Zeichenkette in einen ganzzahligen Wert
 | Axn | Achsbezeichner für Handlingachse n
 | AxAbort | Abbruch der Bewegung der Handlingachse Axn
 | AxnInMotion | Prüfen ob momentan eine Bewegung einer Handlingachse aktiv ist
 | AxOverride | Ändern des Geschwindigkeits-Overrides einer Handlingachse
 | AxReset | Reset einer Handlingachse
 | AxStart | Weiterführen der angehaltenen Bewegung einer Handlingachse
 | AxStart VPO | Starten der Betriebsart VPO für eine Handlingachse
 | AxStop | Anhalten einer Bewegung einer Handlingachse
 | AxStop VPO | Beenden der Betriebsart VPO für eine Handlingachse
 | AxnPA | Handlingachse n im Positionsmodus an Absolut-Zielposition fahren
 | AxnPI | Handlingachse n im Positionsmodus an relative Zielposition fahren
ñ | AxnV | Handlingachse n im Geschwindigkeitsmodus starten

B | B, B1, B2 | Adressbuchstaben der Achse B
 | Break | Abbruch einer Schleife oder Verzweigung

C | C, C1, C2 | Adressbuchstaben der Achse C
 | Case | Mehrfachverzweigung: Beginn eines Fall-Anweisungsblocks
 | CcwHlxAbs | Helixinterpolation im Gegen-Uhrzeigersinn, Verwendung von Absolut-Zielkoordinaten
 | CcwHlxRel | Helixinterpolation im Gegen-Uhrzeigersinn, Verwendung von relativen Zielkoordinaten
 | Change | Logischer Tausch von zwei Achsen der Anlage
 | ChangePosition | Manipulation der Istposition einer/mehrerer Achse(n)
 | CircleAbs | Kreisinterpolation mit Verwendung von Absolut-Zielkoordinaten
 | CircleRel | Kreisinterpolation mit Verwendung von relativen Zielkoordinaten
 | CloseCom | Schließen einer geöffneten seriellen Schnittstelle
 | CloseEth | Beenden der Ethernet-Verbindung zum IP-Host
 | Continue | Nächste Iteration einer Schleife ausführen
 | Coolant | Kühlmittelfluß ein-/ausschalten
 | Coolant2 | Kühlmittelfluß der Kühlmittelpumpe 2 ein-/ausschalten
 | CopyFile | Kopieren einer Datei
 | COS | Operator für die trigonometrische Funktion COSINUS
 | Counter | Programmatischer Zugriff auf einen Zähler der Anwendung
 | Cube | Kinematikumschaltung: Festlegung der interpolierenden Achsen des kartesischen Koordinatensystems
 | CwHlxAbs | Helixinterpolation im Uhrzeigersinn, Verwendung von Absolut-Zielkoordinaten
 | CwHlxRel | Helixinterpolation im Uhrzeigersinn, Verwendung von relativen Zielkoordinaten
ñ | Cyl | Kinematikumschaltung: Bearbeitung auf einer Zylindermantelfläche

D | Dectivate VPO | Deaktivieren der Betriebsart VPO einer Handlingachse
 | Default | Mehrfachverzweigung: Beginn des Anweisungsblocks "Alle anderen Fälle"
 | Delay | Ausführen einer Wartezeit im NC-Programm
 | DeleteFile | Löschen einer Datei
 | Display | Ausgabe eines Hinweistextes in ein Display
 | DistRegulator | Abstandsregelung in einer CAN-Endstufe parametrieren bzw. ein-/ausschalten
 | Do | Wiederholschleife Do...EndDo: Beginn des Anweisungsblocks
 | Drill | Ausführen eines Bohrzyklus an der Position XYZ
 | DrillB | Ausführen des Bohrzyklus "Spanbrechen" an der Position XYZ
 | DrillD | Ausführen des Bohrzyklus "Ausräumen" an der Position XYZ
 | DrillT | Ausführen des Bohrzyklus "Einfaches Bohren mit Verweilzeit" an der Position XYZ
ñ | DrillDef | Definition von Parametern für einen Bohrzyklus

E | Else | Bedingte Verzweigung: Alternativer Anweisungsblock
 | EndCase | Mehrfachverzweigung: Ende eines Fall-Anweisungsblocks
 | EndDo | Wiederholschleife Do...EndDo: Ende des Anweisungsblocks
 | EndFor | Zählschleife For...EndFor: Ende des Anweisungsblocks
 | EndIf | Bedingte Verzweigung: Ende eines Anweisungsblocks
 | EndSwitch | Mehrfachverzweigung: Ende der Anweisungsblöcke
 | EndWhile | Wiederholschleife While...EndWhile: Ende eines Anweisungsblocks
 | EnterString | Eingabe einer Zeichenkette
 | Ep.b | Zugriff auf einen Eingang
 | ERROR | MessageBox: Anzeige des Symbols "Fehler"
 | ErrorDetection | Ein- / Ausschalten der Fehlererkennung des Interpreters
 | EventReturn | Rückkehr aus einer Eventhandler-Routine
 | Execute | Aufruf einer externen NCP-, CNC- oder ISO-Bearbeitungsdatei
ñ | EXP | Berechnen der Exponentialfunktion

F | F | Angabe des Vorschubs für Verfahrbewegungen
 | FABS | Funktion zur Ermittlung des Betrags einer Zahl
 | FastAbs | Eilbewegung an eine Absolut-Zielposition
 | FastFrame | Lineare Eilbewegung an eine durch eine Frame-Variable angegebene Zielposition
 | FastRel | Eilbewegung an eine relative Zielposition
 | FastRVel | Angabe der Eilgeschwindigkeit für Drehachsen
 | FastVel | Angabe der Eilgeschwindigkeit für Linearachsen
 | FAx | Angabe der Geschwindigkeit für eine Handlingachse
 | FeedPerSec | Umschalten der Einheit der Geschwindigkeit auf mm/s
 | FileDialog | Dateiauswahl mit dem "Dialog Datei öffnen"
 | FileExists | Prüfen der Existenz einer Datei
 | FLOOR | Funktion für das Ermitteln des ganzzahligen Anteils einer Zahl
ñ | For | Zählschleife: Beginn des Anweisungsblocks

G | G00 | Einstellen des Punktsteuerungsverhaltens (Bewegung mit Eilgeschwindigkeit)
 | G00 G90 | Linearbewegung an Absolut-Zielposition mit Eilgeschwindigkeit
 | G00 G91 | Linearbewegung an relative Zielposition mit Eilgeschwindigkeit
 | G01 | Einstellen der Geraden-Interpolation (Bewegung mit Normalgeschwindigkeit)
 | G01 G90 | Linearbewegung an Absolut-Zielposition mit Normalgeschwindigkeit
 | G01 G91 | Linearbewegung an relative Zielposition mit Normalgeschwindigkeit
 | G02 | Kreisinterpolation im Uhrzeigersinn
 | G02 G90 | Kreisinterpolation im Uhrzeigersinn mit Angabe von Absolut-Endpunktkoordinaten
 | G02 G91 | Kreisinterpolation im Uhrzeigersinn mit Angabe von relativen Endpunktkoordinaten
 | G03 | Kreisinterpolation im Gegen-Uhrzeigersinn
 | G03 G90 | Kreisinterpolation im Gegen-Uhrzeigersinn mit Angabe von Absolut-Endpunktkoordinaten
 | G03 G91 | Kreisinterpolation im Gegen-Uhrzeigersinn mit Angabe von relativen Endpunktkoordinaten
 | G04 | Angabe einer Wartezeit
 | G10 | Lineare Eilbewegung an eine durch eine Frame-Variable angegebene Zielposition
 | G11 | Lineare Bewegung an eine durch eine Frame-Variable angegebene Zielposition
 | G12 | Helixinterpolation im Uhrzeigersinn
 | G13 | Helixinterpolation im Gegen-Uhrzeigersinn
 | G17 | Setzen der Kreisinterpolationsebene XY
 | G18 | Setzen der Kreisinterpolationsebene XZ
 | G19 | Setzen der Kreisinterpolationsebene YZ
 | G20 | Einstellen der Wegeeinheit Inch (Zoll) für translatorische Achsen
 | G21 | Einstellen der Wegeeinheit Millimeter für translatorische Achsen
 | G28 | Maschinennullpunkt über Zwischenposition anfahren
 | G53 | Löschen einer Nullpunktverschiebung / eines Werkstücknullpunktes
 | G54 | Aktivieren von Werkstücknullpunkt-Register 1
 | G55 | Aktivieren von Werkstücknullpunkt-Register 2
 | G56 | Aktivieren der aktuellen Position als neuen Werkstück-Nullpunkt
 | G60 | Bahnfahrt ausschalten
 | G64 | Bahnfahrt einschalten
 | G70 | Festlegen der Einheit "Inch" ("Zoll") für die Koordinatenübergabe
 | G71 | Festlegen der Einheit "Millimeter" für die Koordinatenübergabe
 | G74 | Ausführen einer Referenzfahrt für eine oder mehrere Achsen
 | G75 | Aufruf des Dialogs "Geometriedatei" zur Bearbeitung von Framepositionen
 | G76 | Teach-Dialog für Festlegung des Werkstücknullpunkts aktivieren
 | G77 | Teach-Dialog für manuelles Verfahren der Achsen aktivieren
 | G80 | Definition von Parametern für einen Bohrzyklus
 | G81 | Ausführen des Bohrzyklus "Einfaches Bohren" an der Position XYZ
 | G82 | Ausführen des Bohrzyklus "Einfaches Bohren mit Wartezeit"
 | G83 | Ausführen des Bohrzyklus "Ausräumen" an der Position XYZ
 | G86 | Ausführen des Bohrzyklus "Spanbrechen" an der Position XYZ
 | G90 | Einstellen von absoluten Maßangaben
 | G91 | Einstellen von relativen (inkrementellen) Maßangaben
 | G92 | Beschreiben von Werkstücknullpunkt-Register 1
 | G93 | Beschreiben von Werkstücknullpunkt-Register 2
 | G93.0 | Inverse Time Feed Mode ausschalten
 | G93.1 | Inverse Time Feed Mode einschalten
 | G94 | Festlegen der Einheit der Vorschubgeschwindigkeit auf Wegeinheit/min
 | G98 | Aufruf des Dialogs zur Bearbeitung von R-Variablen
 | G99 | Ausgabe eines Textes in der Statuszeile des Programms
 | G150 | Geschwindigkeitsproportionale Ausgabe einer Analogspannung ausschalten
 | G151 | Geschwindigkeitsproportionale Ausgabe einer Analogspannung einschalten
 | G152 | Geschwindigkeitsproportionale Ausgabe eines PWM-Signals ausschalten
 | G153 | Geschwindigkeitsproportionale Ausgabe eines PWM-Signals einschalten
 | G168 | XYZ-Rotation ON
 | G169 | XYZ-Rotation OFF
 | G174 | Referenzfahrtzyklus der Anwendung ausführen
 | G181 | Warten auf Signal an einem digitalen Eingang
 | G182 | Warten auf Bitmuster an einem digitalen Eingangsport
 | G195 | Abfrage der aktuellen Beschleunigungs- und Ruckwerte von allen Achsen
 | G196 | Setzt neue Beschleunigungs- und Ruckwerte für alle Achsen
 | G197 | Achsumschaltung
 | G198.1 | Koordinaten der negativen Software-Endschalter abfragen
 | G198.2 | Koordinaten der positiven Software-Endschalter abfragen
 | G199.1 | Neue Koordinaten für die negativen Software-Endschalter setzen
 | G199.2 | Neue Koordinaten für die positiven Software-Endschalter setzen
 | GetAcce | Abfrage des aktuellen Beschleunigungswertes einer oder mehrerer Achsen
 | GetAnalog | Abfragen des Wertes eines Analogeingangs
 | GetApplicationParameter | Abfrage von internen Parametern der Anwendung
 | GetAxisParam | Abfrage von Achsparametern
 | GetBit | Abfragen des Wertes eines Eingangs/Ausgangs
 | GetCurrentPos | Abfrage der aktuellen Positionen einer Motion Control
 | GetDate | Abfrage des aktuellen Datums
 | GetDestinationPos | Abfrage der Zielpositionen einer Segmentbewegung
 | GetFileType | Feststellen des Typs einer Datei
 | GetGear | Abfragen des Umrechnungsfaktors für eine Achse
 | GetLanguage | Abfrage der eingestellten Sprache
 | GetLastErrorCode | Abfrage des Fehlercodes des zuletzt aufgetretenen Fehlers
 | GetLastErrorText | Den Klartext der letzten Fehlermeldung abfragen
 | GetLatchedPosition | Abfrage der gelatchten Position bei Eintreten des Portereignisses bei MoveAbsStopOnInput / MoveRelStopOnInput
 | GetNegSWLS | Abfrage der Koordinaten der negativen Software-Endschalter
 | GetParam PathVeloFactor | Abfragen des Bahngeschwindigkeitsfaktors
 | GetParam VPO | Abfragen der aktuell verwendeten Parameter der Betriebsart VPO einer Handlingachse
 | GetPort | Abfragen des Wertes eines Eingangsports/Ausgangsports (8 Bit)
 | GetPosSWLS | Abfrage der Koordinaten der positiven Software-Endschalter
 | GetScriptExitCode | Abfrage des Rückgabewertes des zuletzt ausgeführten Scripts
 | GetScriptStatus | Abfrage des aktuellen Scriptstatus: Aktiv / nicht aktiv
 | GetStateMctl | Aktuellen Status der Motion-Control (Bewegungssteuerung) abfragen
 | GetStateSecc | Abfrage des aktuellen Status des Sicherheitskreismoduls
 | GetStateSWLS | Abfrage des Status der Software-Endschalter
 | GetStatusEth | Status einer Ethernet-Verbindung abfragen
 | GetStatusMctl | Aktuellen Status der Motion-Control (Bewegungssteuerung) ermitteln
 | GetString | Dialog zur Eingabe einer Zeichenkette durch den Anwender
 | GetTickCount | Abfrage des System-Timers des PC's
 | GetTime | Abfrage der aktuellen Uhrzeit / Systemzeit
 | GetTool | Einwechseln eines neuen Werkzeuges
 | GetToolRefPos | Abfrage der Referenzposition Z eines Werkzeugs
 | GetValue | Dialogfeld zur Eingabe eines Wertes durch den Bediener
 | GetWorkDirectory | Ermitteln des Verzeichnisses der aktuell bearbeiteten PAL-Programmdatei
ñ | GoTo | Sprung an Sprungzielmarke

H | H | Operator zur Kennzeichnung einer Zahl als Hexadezimalwert
 | HOff | Hand-Modus ausschalten
 | HOn | Hand-Modus einschalten

I | I (Variable) | Integer-Variable
 | I (Adressbuchstabe), I1, I2 | Adressbuchstabe der Kreismittelpunktkoordinate X
 | IDABORT | Symbolische Konstante für den Rückgabewert eines Dialogs
 | IDCANCEL | Symbolische Konstante für den Rückgabewert eines Dialogs
 | IDIGNORE | Symbolische Konstante für den Rückgabewert eines Dialogs
 | IDNO | Symbolische Konstante für den Rückgabewert eines Dialogs
 | IDOK | Symbolische Konstante für den Rückgabewert eines Dialogs
 | IDRETRY | Symbolische Konstante für den Rückgabewert eines Dialogs
 | IDYES | Symbolische Konstante für den Rückgabewert eines Dialogs
 | If | Bedingte Verzweigung: Beginn des Anweisungsblocks
 | In | Zugriff auf einen Eingang
 | Inch | Festlegen der Einheit "Inch" ("Zoll") für die Koordinatenübergabe
 | INMOTION | Prüfen ob momentan eine Bewegung aktiv ist
ñ | ITFM | Inverse Time Feed Mode ein-/ausschalten

J | J, J1, J2 | Adressbuchstabe der Kreismittelpunktkoordinate Y
ñ |  |

K | K, K1, K2 | Adressbuchstabe der Kreismittelpunktkoordinate Z
ñ |  |

L | Lamp | Ein-/Ausschalten der (Arbeitsraum-)Beleuchtung
 | LN | Berechnung des natürlichen Logarithmus
 | Lnr | Aufruf eines Unterprogramms
 | LoadIVar | Laden der Werte einzelner I-Variablen aus einer Datei
 | LoadIVarFile | Laden der Werte der I-Variablen I0...I299 aus einer Datei
 | LoadQVar | Laden der Werte einzelner Q-Variablen aus einer Datei
 | LoadQVarFile | Laden der Werte der Q-Variablen Q0...Q299 aus einer Datei
 | LoadRVar | Laden der Werte einzelner R-Variablen aus einer Datei
 | LoadRVarFile | Laden der Werte der R-Variablen R0...R299 aus einer Datei
 | LockToolChange | Sperren/Erlauben des Werkzeugwechselzyklus
ñ | LOG | Berechnung des dekadischen Logarithmus (Zehnerlogarithmus)

M | M0 | Beenden des Hauptprogramms nach Bedienerquittung
 | M1 | Anhalten und optionales Weiterführen/Beenden des Hauptprogramms
 | M2 | Beenden des CNC-Hauptprogramms ohne Ausschalten der Antriebsspindel
 | M3 | Start der Antriebsspindel im Rechtslauf
 | M4 | Start der Antriebsspindel im Linkslauf
 | M5 | Ausschalten der Antriebsspindel
 | M8 | Einschalten der Kühlmittelpumpe
 | M9 | Ausschalten der Kühlmittelpumpe
 | M17 | Beenden eines Unterprogramms und Rückkehr an Aufrufpunkt
 | M30 | Beenden des CNC-Hauptprogramms
 | M41 | Einschalten der Kühlmittelpumpe 2
 | M42 | Ausschalten der Kühlmittelpumpe 2
 | M43 | Einschalten der Absaugung (1)
 | M44 | Ausschalten der Absaugung (1)
 | M45 | Einschalten der Absaugung 2
 | M46 | Ausschalten der Absaugung 2
 | Mpbv | Setzen eines Ausgangs auf den Wert "0" oder "1"
 | MABORT | Abbrechen einer aktiven Verfahrbewegung
 | MakePath | Einen vollständigen Dateipfad aus Laufwerk, Pfad, Dateiname und Extension erstellen
 | ManualMove | Öffnet den Dialog für das manuelle Verfahren von Achsen
 | MessageBox | Anzeige einer Meldung in einem Dialog
 | MEnableSwLimitSwitch | Enable/Disable der Software-Endschalter
 | MEnableSWLS | Enable/Disable der Software-Endschalter (wie MEnableSwLimitSwitch)
 | Metric | Festlegen der Einheit "Millimeter" für die Koordinatenübergabe
 | MODULO | Operator für die Modulo-Division
 | MoveAbs | Bewegung an eine Absolut-Zielposition
 | MoveAbsStopOnInput | Bewegung an eine Absolut-Zielposition, Abbruch bei Portereignis
 | MoveFile | Verschieben einer Datei
 | MoveFrame | Lineare Bewegung an eine durch eine Frame-Variable angegebene Zielposition
 | MoveRel | Bewegung an eine relative Zielposition
 | MoveRelStopOnInput | Bewegung an eine relative Zielposition, Abbruch bei Portereignis
 | MOVERRIDE | Einstellen des Geschwindigkeits-Override für Fahrbewegungen
 | MReset | Ausführen eines Reset der Motion Control
 | MResetReferenceFlag | Rücksetzen des Flags "Achse ist referenziert"
 | MSTART | Weiterführen einer angehaltenen aktiven Verfahrbewegung
ñ | MSTOP | Anhalten einer aktiven Verfahrbewegung

N | NOT | Operator für logische Negation
 | NotifyError | Einen Fehler in den Fehlerspeicher der Anwendung eintragen

O | OK | MessageBox: Anzeige der Schaltfläche "OK"
 | OKCANCEL | MessageBox: Anzeige der Schaltflächen "OK" und "Abbruch"
 | OnEmergencyOff | Eventhandler für das Ereignis "Der NOT-AUS-Schalter wurde betätigt"
 | OnError | Eventhandler für das Ereignis "Ein Fehler ist aufgetreten"
 | OnProcessStart | Event-Handler für das Ereignis "Bearbeitung wird gestarted"
 | OnProcessStop | Event-Handler für das Ereignis "Bearbeitung wird gestoppt"
 | OnProgBegin | Eventhandler für das Ereignis "Bearbeitung beginnt"
 | OnProgEnd | Eventhandler für das Ereignis "Bearbeitung wird beendet"
 | OnTimer | Eventhandler für ein Timer-Ereignis
 | OpenCom | Öffnen einer seriellen Schnittstelle
 | OpenEth | Aufbau einer Ethernet-Verbindung zum IP-Host
ñ | OR | Operator für logische ODER-Verknüpfung

P | P(-Variable) | Prozess-Variable
 | Parameter | Aufruf des Dialogs zur Bearbeitung von R-Variablen
 | Path | Bahnfahrt einschalten
 | PathEnd | Bahnfahrt ausschalten
 | PI | Konstante: Kreiszahl Pi
 | Plane | Festlegen der Ebene für Kreis- oder Helixinterpolation
 | POption1 | Ein-/Ausschalten der optionalen Funktion 1
 | POption2 | Ein-/Ausschalten der optionalen Funktion 2
 | Pos.Axn | Variable zur Abfrage der aktuellen Position einer Handlingachse
 | Posn.a | Variable zur Abfrage einer aktuellen Achsposition
 | POW | Funktion zur Berechnung einer Potenz
 | ProgBegin | Kennzeichnung des Beginns des CNC-Hauptprogramms
 | ProgEnd | Kennzeichnung des Endes des CNC-Hauptprogramms
ñ | Pump | Ein-/Ausschalten der Pumpe / Absaugvorrichtung o. ä.

Q | Q(-Variable) | Struktur mit Achspositionen
ñ | Quit | Anhalten und optionales Weiterführen/Beenden des Hauptprogramms

R | R(-Variable) | Real-Variable
 | ReadExcelFile | Lesen einer Zelle eines Arbeitsblattes einer Excel-Datei
 | ReadInitFile | Lesen eines Eintrags aus einer Initialisierungsdatei
 | ReadTextFile | Lesen einer Zeile aus einer ASCII-Textdatei
 | Ref | Ausführen einer Referenzfahrt für eine oder mehrere Achsen
 | RefCycle | Ausführen des komplexen Referenzfahrt-Zyklus der Anwendung
 | Repeat | Wiederholschleife Repeat...Until: Beginn des Anweisungsblocks
 | ResBit | Setzen des Wertes eines Ausgangs auf den Wert "0"
 | RETRYCANCEL | MessageBox: Anzeige der Schaltflächen "Wiederholen" und "Abbrechen"
 | Return | Rückkehr aus einem Unterprogramm
 | RVel | Angabe der Normalgeschwindigkeit für Drehachsen
 | RxCAN | Lesen eines Eintrags im Objektverzeichnis eines CAN-Knotens
 | RxCom | Empfangen eines Zeichens / mehrerer Zeichen von einer geöffneten seriellen Schnittstelle
ñ | RxEth | Empfangen von Daten über eine Ethernet-Verbindung

S | S | Einstellen einer Spindeldrehzahl
 | SaveIVar | Speichern der Werte einzelner I-Variablen in eine Datei
 | SaveIVarFile | Speichern der Werte der I-Variablen I0...R299 in eine Datei
 | SaveQVar | Speichern der Werte einzelner Q-Variablen in eine Datei
 | SaveQVarFile | Speichern der Werte der Q-Variablen Q0...Q299 in eine Datei
 | SaveRVar | Speichern der Werte einzelner R-Variablen in eine Datei
 | SaveRVarFile | Speichern der Werte der R-Variablen R0...R299 in eine Datei
 | SCCLW | Einschalten des Spindelantriebs / der Frässpindel im Linkslauf
 | SCLW | Einschalten des Spindelantriebs / der Frässpindel im Rechtslauf
 | Selection | Definition einer Auswahlmöglichkeit für die 1-aus-n-Auswahl mit Select
 | Select | Anzeige des Auswahldialogs für die 1-aus-n-Auswahl
 | SetAcce | Setzt einen neuen Beschleunigungswert für eine oder mehrere Achsen
 | SetAnalog | Einstellen des Wertes eines Analogausgangs
 | SetApplicationParameter | Setzen von internen Parametern der Anwendung
 | SetBit | Setzen des Wertes eines Ausgangs auf den Wert "1"
 | SetGear | Setzen des Umrechnungsfaktors einer Achse
 | SetNegSWLS | Setzen der Koordinaten für die negativen Software-Endschalter
 | SetOpMode | Setzen der Betriebsart für eine Handlingachse
 | SetParam PathVeloFactor | Setzen des Bahngeschwindigkeitsfaktors
 | SetParam VPO | Setzen der Parameter für die Betriebsart VPO einer Handlingachse
 | SetPort | Setzen des Wertes eines Ausgangsports (8 Bit)
 | SetPosSWLS | Setzen der Koordinaten für die positiven Software-Endschalter
 | SetPWM | Einstellen des Tastverhältnisses an einemPWM-Ausgang
 | SignalError | Anzeige eines benutzerspezifischen Fehlers mit dem Fehlermeldungsdialog der Anwendung
 | SIN | Operator für die trigonometrische Funktion SINUS
 | SMax | Einstellen der Maximaldrehzahl der Antriebsspindel
 | Sn=rpm | Angabe der Drehzahl des Spindelantriebs / der Frässpindel
 | SOFF | Ausschalten des Spindelantriebs / der Frässpindel
 | Spindle | Ein-/Ausschalten des Spindelantriebs / der Frässpindel
 | SplitPath | Bestandteile eines Dateipfades extrahieren
 | SQR | Quadrieren einer Zahl
 | SQRT | Funktion zur Ermittlung der Quadratwurzel einer Zahl
 | StartScript | Programmatisches Starten eines Scripts
 | StopWatch | Zeitmessung mit der Stoppuhr der Anwendung
 | StrCompare | Vergleich zweier Zeichenketten, Case-sensitiv
 | StrCompareNoCase | Vergleich zweier Zeichenketten, nicht Case-sensitiv
 | StrDelete | Löschen eines oder mehrerer Zeichen in einer Zeichenkette
 | StrEmpty | Den Inhalt einer String-Variablen löschen
 | StrFind | Suchen eines Zeichens oder einer Teilzeichenkette in einer Zeichenkette
 | StrFindOneOf | Erstes Auftreten eines beliebigen Zeichens einer Zeichenmenge in der Zeichenkette finden
 | StrFormat | Bedingte Formatierung einer Zeichenkette
 | StrGetAt | Ein Zeichen oder eine Teilzeichenkette aus einer Zeichenkette extrahieren
 | StrGetLength | Abfrage der Länge einer Zeichenkette
 | StrInsert | Ein Zeichen oder eine Teilzeichenkette in eine Zeichenkette einfügen
 | StrIsEmpty | Prüfen ob eine Zeichenkette leer ist
 | StrLeft | Extrahieren aller Zeichen ab Beginn einer Zeichenkette bis Index
 | StrMakeLower | Den Inhalt einer Zeichenkette in Kleinschreibung konvertieren
 | StrMakeReverse | Inhalt einer Zeichenkette umkehren
 | StrMakeUpper | Den Inhalt einer Zeichenkette in Großschreibung konvertieren
 | StrMid | Extrahieren einer Teilzeichenkette aus einer Zeichenkette ab Index
 | StrMiddlePart | Extrahieren von n Zeichen einer Zeichenkette ab Index
 | Strn | Zeichenkettenvariable
 | StrRemove | Entfernen eines Zeichens oder einer Teilzeichenkette aus einer Zeichenkette
 | StrReplace | Ersetzen eines Zeichens oder einer Teilzeichenkette in einer Zeichenkette
 | StrReverseFind | Suchen eines Zeichens oder einer Teilzeichenkette in einer Zeichenkette, inverse Suchreihenfolge
 | StrRight | Extrahieren aller Zeichen ab Ende einer Zeichenkette rückwärts bis Index
 | StrScan | Auswerten von Zeichen oder Teilzeichenketten einer Zeichenkette
 | StrSetAt | Zeichen einer Zeichenkette an Indexposition ersetzen
 | StrSpanExcluding | Extrahieren aller Zeichen einer Zeichenkette, die nicht in einem Zeichenvorrat enthalten sind
 | StrSpanIncluding | Extrahieren aller Zeichen einer Zeichenkette, die in einem Zeichenvorrat enthalten sind
 | StrTrimLeft | Zeichenkette am Anfang trimmen
 | StrTrimRight | Zeichenkette am Ende trimmen
 | SubR | Aufruf eines Unterprogramms
 | Suction1 | Absaugung 1 ein-/ausschalten
 | Suction2 | Absaugung 2 ein-/ausschalten
ñ | Switch | Mehrfachverzweigung: Beginn der Anweisungsblöcke

T

T

Werkzeug einwechseln

TAN

Operator für die trigonometrische Funktion TANGENS

TchCollet

Öffnen/Schließen der Werkzeug-Spannzange eines Werkzeugwechselsystems

TchCover

Öffnen/Schließen der Abdeckung des Werkzeugmagazins eines Werkzeugwechselsystems

TchGetSignal

Abfrage des aktuellen Zustands diverser Sensoren des Werkzeugwechselsystems

TchGetStatus

Abfrage des aktuellen Status eines Werkzeugwechselsystems

TchGetTool

Einwechseln eines Werkzeugs

TchGetToolCuttingTime

Abfrage der aktuellen Schnittzeit eines Werkzeugs

TchGetToolRefPos

Abfrage der Referenzposition Z eines Werkzeugs

TchGetToolRunTime

Abfrage der aktuellen Laufzeit eines Werkzeugs

TchMeasureTool

Vermessung eines Werkzeugs durchführen

TchReset

Reset einer Werkzeugwechslersteuerung

TchSelectToolStore

Den Werkzeughalter eines Wechslermagazins an die Arbeitsposition positionieren

TchSetSignal

Ansteuern diverser Aktoren des Werkzeugwechselsystems

TchSetStatus

Den Status des Werkzeugwechselsystems aktualisieren

TchSetToolCuttingTime

Zuweisen einer neuen Schnittzeit an ein Werkzeug

TchSetToolRefPos

Einem Werkzeug eine neue Referenzposition für die Werkzeuglängenverrechnung zuweisen

TchSetToolRunTime

Zuweisen einer neuen Laufzeit an ein Werkzeug

TchSlideToolMagazine

Ein-/Ausfahren des Werkzeugmagazins eines Werkzeugwechselsystems

Teach

Aufruf des Dialogs "Geometriedatei" zur Bearbeitung von Framepositionen

TeachOff

Teach-Modus der Steuerung ausschalten

TeachOn

Teach-Modus der Steuerung einschalten

Time

Ausführen einer Wartezeit mit eingeblendetem Hinweis

TOff

Test-Modus der Steuerung ausschalten

TOn

Test-Modus der Steuerung einschalten

ToolRefPos

Abfrage der Referenzposition Z eines Werkzeugs

TRP

ToolRefPos: Abfrage der Referenzposition Z eines Werkzeugs

TxCAN

Schreiben eines Eintrags im Objektverzeichnis eines CAN-Knotens

TxCom

Senden eines Zeichens / mehrerer Zeichen über eine geöffnete serielle Schnittstelle

TxEth

Senden von Daten über eine Ethernet-Verbindung

Type

Veraltet: Ausgabe eines Textes in der Statuszeile des Programms

U | U, U1, U2 | Adressbuchstaben der Achse U
 | Until | Wiederholschleife Repeat...Until: Ende des Anweisungsblocks
 | User | Aufruf einer benutzerspezifischen Batch-Datei
 | UserBat | Aufruf einer benutzerspezifischen Batch-Datei
 | UserDLL | Aufruf einer Funktion in einer benutzerspezifischen Bibliothek (DLL)
ñ | UserExe | Aufruf einer externen Applikation

V | V, V1, V2 | Adressbuchstaben der Achse V
 | Vel | Angabe der Normalgeschwindigkeit für Linearachsen
 | VelPropPwm | Erweiterter Befehl für die Erzeugung eines geschwindigkeitsproportionalen PWM-Signals
 | VelPropVoltage | Befehl für die Ausgabe eines geschwindigkeitsproportionalen Spannungswertes
 | VppOn | Ausgabe eines geschwindigkeitsproportionalen PWM-Signals beginnen
 | VppOff | Ausgabe eines geschwindigkeitsproportionalen PWM-Signals beenden
 | VpvOn | Ausgabe eines geschwindigkeitsproportionalen Spannungswertes beginnen
ñ | VpvOff | Ausgabe eines geschwindigkeitsproportionalen Spannungswertes beenden

W | W, W1, W2 | Adressbuchstaben der Achse W
 | Wait | Zeitverzögerung ohne Visualisierungsdialog
 | WaitMove | Warten auf das Ende der Bewegung einer Handlingachse
 | WaitBit | Warten auf einen logischen Pegel eines Eingangskanals
 | WaitPort | Warten auf ein Bitmuster an einem 8-Bit-Eingangsport
 | WARNING | MessageBox: Anzeiges des Symbols "Warnung"
 | While | Wiederholschleife While...EndWhile: Beginn des Anweisungsblocks
 | WpClamp | Spannen / Lösen der Werkstückspannvorrichtung
 | WpClear | Löschen einer Nullpunktverschiebung / eines Werkstücknullpunktes
 | WpReg1 | Aktivieren von Werkstücknullpunkt-Register 1
 | WpReg1Act | Aktivieren von Werkstücknullpunkt-Register 1
 | WpReg1Write | Beschreiben von Werkstücknullpunkt-Register 1
 | WpReg2 | Aktivieren von Werkstücknullpunkt-Register 2
 | WpReg2Act | Aktivieren von Werkstücknullpunkt-Register 2
 | WpReg2Write | Beschreiben von Werkstücknullpunkt-Register 2
 | WpTeach | Teachen und aktivieren eines Werkstücknullpunktes
 | WpZero | Aktivieren der aktuellen Position als neuen Werkstück-Nullpunkt
 | WpZeroAbs | Aktivieren eines Werkstück-Nullpunkts mit Übergabe der Koordinaten
 | WpZeroRead | Abfragen der Koordinaten des aktuellen Werkstücknullpunkts
ñ | WriteExcelFile | Beschreiben einer Zelle eines Arbeitsblattes in einer Excel-Datei
 | WriteInitFile | Schreiben eines Eintrags in eine Initialisierungsdatei
 | WriteTextFile | Schreiben einer Zeile in eine ASCII-Textdatei

X | X, X1, X2 | Adressbuchstaben der Achse X
 | XType | Ausgabe eines formatierten Textes in die Statusanzeige(n) der Anwendung

Y | Y, Y1, Y2 | Adressbuchstaben der Achse Y
 | YESNO | MessageBox: Anzeige der Schaltflächen "Ja" und "Nein"
ñ | YESNOCANCEL | MessageBox: Anzeige der Schaltflächen "Ja", "Nein" und "Abbrechen"

Z | Z, Z1, Z2 | Adressbuchstaben der Achse Z
ñ |  |


Bewegungsbefehle

Befehle im PAL-Format

#

Operator "Bewegung ohne Warten auf Ende"

A | A, A1, A2 | Adressbuchstaben der Achse A
 | Acce | Einstellen des Beschleunigungsverhaltens einer Achse
 | Axn | Achsbezeichner für Handlingachse n
 | AxAbort | Abbruch der Bewegung der Handlingachse Axn
 | AxnInMotion | Prüfen ob momentan eine Bewegung einer Handlingachse aktiv ist
 | AxStart | Weiterführen der angehaltenen Bewegung der Handlingachse n
 | AxStop | Anhalten einer Bewegung der Handlingachse n
 | AxnPA | Handlingachse n im Positionsmodus an Absolut-Zielposition fahren
 | AxnPI | Handlingachse n im Positionsmodus an relative Zielposition fahren
 | AxnV | Handlingachse n im Geschwindigkeitsmodus starten

B | B, B1, B2 | Adressbuchstaben der Achse B

C | C, C1, C2 | Adressbuchstaben der Achse C
 | Change | Logischer Tausch von zwei Achsen der Anlage
 | ChangePosition | Manipulation der Istposition einer/mehrerer Achse(n)
 | CircleAbs | Kreisinterpolation mit Verwendung von Absolut-Zielkoordinaten
 | CircleRel | Kreisinterpolation mit Verwendung von relativen Zielkoordinaten
 | CcwHlxAbs | Helixinterpolation im Gegen-Uhrzeigersinn, Verwendung von Absolut-Zielkoordinaten
 | CcwHlxRel | Helixinterpolation im Gegen-Uhrzeigersinn, Verwendung von relativen Zielkoordinaten
 | CwHlxAbs | Helixinterpolation im Uhrzeigersinn, Verwendung von Absolut-Zielkoordinaten
 | CwHlxRel | Helixinterpolation im Uhrzeigersinn, Verwendung von relativen Zielkoordinaten

D | Drill | Ausführen eines Bohrzyklus an der Position XYZ
 | DrillDef | Definition von Parametern für einen Bohrzyklus

E | Ep.b | Zugriff auf einen Eingang

F | F | Angabe des Vorschubs für Verfahrbewegungen
 | FastAbs | Eilbewegung an eine Absolut-Zielposition
 | FastFrame | Lineare Eilbewegung an eine durch eine Frame-Variable angegebene Zielposition
 | FastRel | Eilbewegung an eine relative Zielposition
 | FastRVel | Angabe der Eilgeschwindigkeit für Drehachsen
 | FastVel | Angabe der Eilgeschwindigkeit für Linearachsen
 | FAx | Angabe der Geschwindigkeit für eine Handlingachse

 | GetAcce | Abfrage des aktuellen Beschleunigungswertes einer oder mehrerer Achsen
 | GetDestinationPos | Abfrage der Zielpositionen einer Segmentbewegung
 | GetGear | Abfragen des Umrechnungsfaktors für eine Achse
G | GetLatchedPosition | Abfrage der gelatchten Position bei Eintreten des Portereignisses bei MoveAbsStopOnInput / MoveRelStopOnInput
 | GetNegSWLS | Abfrage der Koordinaten der negativen Software-Endschalter
 | GetParam PathVeloFactor | Abfragen des Bahngeschwindigkeitsfaktors
 | GetPosSWLS | Abfrage der Koordinaten der positiven Software-Endschalter
 | GetStateMctl | Aktuellen Status der Motion-Control (Bewegungssteuerung) abfragen
 | GetStatusMctl | Aktuellen Status der Motion-Control (Bewegungssteuerung) ermitteln

I | I, I1, I2 | Adressbuchstabe der Kreismittelpunktkoordinate X
 | Inch | Festlegen der Einheit "Inch" ("Zoll") für die Koordinatenübergabe
 | INMOTION | Prüfen ob momentan eine Bewegung aktiv ist
 | ITFM | Inverse Time Feed Mode ein-/ausschalten

J | J, J1, J2 | Adressbuchstabe der Kreismittelpunktkoordinate Y

K | K, K1, K2 | Adressbuchstabe der Kreismittelpunktkoordinate Z

M | MABORT | Abbrechen einer aktiven Verfahrbewegung
 | ManualMove | Öffnet den Dialog für das manuelle Verfahren von Achsen
 | Metric | Festlegen der Einheit "Millimeter" für die Koordinatenübergabe
 | MoveAbs | Bewegung an eine Absolut-Zielposition
 | MoveAbsStopOnInput | Bewegung an eine Absolut-Zielposition, Abbruch bei Portereignis
 | MoveFrame | Lineare Bewegung an eine durch eine Frame-Variable angegebene Zielposition
 | MoveRel | Bewegung an eine relative Zielposition
 | MoveRelStopOnInput | Bewegung an eine relative Zielposition, Abbruch bei Portereignis
 | MOVERRIDE | Einstellen des Geschwindigkeits-Override für Fahrbewegungen
 | MReset | Ausführen eines Reset der Motion Control
 | MSTART | Weiterführen einer angehaltenen aktiven Verfahrbewegung
 | MSTOP | Anhalten einer aktiven Verfahrbewegung

P | Path | Bahnfahrt einschalten
 | PathEnd | Bahnfahrt ausschalten
 | Plane | Festlegen der Ebene für Kreis- oder Helixinterpolation
 | Pos.Axn | Variable zur Abfrage der aktuellen Position einer Handlingachse
 | Posn.a | Variable zur Abfrage einer aktuellen Achsposition

Q | Q(-Variable) | Struktur mit Achspositionen

R | R(-Variable) | Real-Variable
 | Ref | Ausführen einer Referenzfahrt für eine oder mehrere Achsen
 | RVel | Angabe der Normalgeschwindigkeit für Drehachsen

S | SetOpMode | Setzen der Betriebsart für eine Handlingachse
 | SetParam PathVeloFactor | Setzen des Bahngeschwindigkeitsfaktors

T | Teach | Aufruf des Dialogs "Geometriedatei" zur Bearbeitung von Framepositionen

U | U, U1, U2 | Adressbuchstaben der Achse U

V | V, V1, V2 | Adressbuchstaben der Achse V
 | Vel | Angabe der Normalgeschwindigkeit für Linearachsen
 | VelPropVoltage | Befehl für die Ausgabe eines geschwindigkeitsproportionalen Spannungswertes
 | VpvOn | Ausgabe eines geschwindigkeitsproportionalen Spannungswertes beginnen
 | VpvOff | Ausgabe eines geschwindigkeitsproportionalen Spannungswertes beenden

W | W, W1, W2 | Adressbuchstaben der Achse W
 | WaitMove | Warten auf das Ende der Bewegung einer Handlingachse
 | WpClear | Löschen einer Nullpunktverschiebung / eines Werkstücknullpunktes
 | WpReg1 | Aktivieren von Werkstücknullpunkt-Register 1
 | WpReg1Write | Beschreiben von Werkstücknullpunkt-Register 1
 | WpReg2 | Aktivieren von Werkstücknullpunkt-Register 2
 | WpReg2Write | Beschreiben von Werkstücknullpunkt-Register 2
 | WpTeach | Teachen und aktivieren eines Werkstücknullpunktes
 | WpZero | Aktivieren der aktuellen Position als neuen Werkstück-Nullpunkt
 | WpZeroAbs | Aktivieren eines Werkstück-Nullpunkts mit Übergabe der Koordinaten
 | WpZeroRead | Abfragen der Koordinaten des aktuellen Werkstücknullpunkts

X | X, X1, X2 | Adressbuchstaben der Achse X

Y | Y, Y1, Y2 | Adressbuchstaben der Achse Y

Z | Z, Z1, Z2 | Adressbuchstaben der Achse Z

Befehle im Format DIN66025

G | G00 | Einstellen des Punktsteuerungsverhaltens (Bewegung mit Eilgeschwindigkeit)
 | G00 G90 | Linearbewegung an Absolut-Zielposition mit Eilgeschwindigkeit
 | G00 G91 | Linearbewegung an relative Zielposition mit Eilgeschwindigkeit
 | G01 | Einstellen der Geraden-Interpolation (Bewegung mit Normalgeschwindigkeit)
 | G01 G90 | Linearbewegung an Absolut-Zielposition mit Normalgeschwindigkeit
 | G01 G91 | Linearbewegung an relative Zielposition mit Normalgeschwindigkeit
 | G02 | Kreisinterpolation im Uhrzeigersinn
 | G02 G90 | Kreisinterpolation im Uhrzeigersinn mit Angabe von Absolut-Endpunktkoordinaten
 | G02 G91 | Kreisinterpolation im Uhrzeigersinn mit Angabe von relativen Endpunktkoordinaten
 | G03 | Kreisinterpolation im Gegen-Uhrzeigersinn
 | G03 G90 | Kreisinterpolation im Gegen-Uhrzeigersinn mit Angabe von Absolut-Endpunktkoordinaten
 | G03 G91 | Kreisinterpolation im Gegen-Uhrzeigersinn mit Angabe von relativen Endpunktkoordinaten
 | G10 | Lineare Eilbewegung an eine durch eine Frame-Variable angegebene Zielposition
 | G11 | Lineare Bewegung an eine durch eine Frame-Variable angegebene Zielposition
 | G12 | Helixinterpolation im Uhrzeigersinn
 | G13 | Helixinterpolation im Gegen-Uhrzeigersinn
 | G17 | Setzen der Kreisinterpolationsebene XY
 | G18 | Setzen der Kreisinterpolationsebene XZ
 | G19 | Setzen der Kreisinterpolationsebene YZ
 | G28 | Maschinennullpunkt über Zwischenpunkt anfahren
 | G53 | Löschen einer Nullpunktverschiebung / eines Werkstücknullpunktes
 | G54 | Aktivieren von Werkstücknullpunkt-Register 1
 | G55 | Aktivieren von Werkstücknullpunkt-Register 2
 | G56 | Aktivieren der aktuellen Position als neuen Werkstück-Nullpunkt
 | G60 | Bahnfahrt ausschalten
 | G64 | Bahnfahrt einschalten
 | G68 | Korrektur in der XY-Ebene einschalten
 | G69 | Korrektur in der XY-Ebene ausschalten
 | G70 | Festlegen der Einheit "Inch" ("Zoll") für die Koordinatenübergabe
 | G71 | Festlegen der Einheit "Millimeter" für die Koordinatenübergabe
 | G74 | Ausführen einer Referenzfahrt für eine oder mehrere Achsen
 | G80 | Definition von Parametern für einen Bohrzyklus
 | G81 | Ausführen des Bohrzyklus "Einfaches Bohren" an der Position XYZ
 | G82 | Ausführen des Bohrzyklus "Einfaches Bohren mit Wartezeit"
 | G83 | Ausführen des Bohrzyklus "Ausräumen" an der Position XYZ
 | G86 | Ausführen des Bohrzyklus "Spanbrechen" an der Position XYZ
 | G90 | Einstellen von absoluten Maßangaben
 | G91 | Einstellen von relativen (inkrementellen) Maßangaben
 | G92 | Beschreiben von Werkstücknullpunkt-Register 1
 | G93 | Beschreiben von Werkstücknullpunkt-Register 2
 | G93.0 | Inverse Time Feed Mode ausschalten
 | G93.1 | Inverse Time Feed Mode einschalten
 | G198.1 | Koordinaten der negativen Software-Endschalter abfragen
 | G198.2 | Koordinaten der positiven Software-Endschalter abfragen
 | G199.1 | Neue Koordinaten für die negativen Software-Endschalter setzen
 | G199.2 | Neue Koordinaten für die positiven Software-Endschalter setzen


Ein-/Ausgabebefehle

Befehle im PAL-Format

E | Ep.b | Zugriff auf einen Eingang

G | GetAnalog | Abfragen des Wertes eines Analogeingangs
 | GetBit | Abfragen des Wertes eines Eingangs/Ausgangs
 | GetPort | Abfragen des Wertes eines Eingangsports/Ausgangsports (8 Bit)

L | Lamp | Ein-/Ausschalten der (Arbeitsraum-)Beleuchtung

P | P(-Variable) | Prozess-Variable
 | POption1 | Ein-/Ausschalten der optionalen Funktion 1
 | POption2 | Ein-/Ausschalten der optionalen Funktion 2
 | Pump | Ein-/Ausschalten der Pumpe / Absaugvorrichtung o. ä.

R | ResBit | Setzen des Wertes eines Ausgangs auf den Wert "0"
 | RxCAN | Lesen eines Eintrags im Objektverzeichnis eines CAN-Knotens
ñ | RxCom | Empfangen eines Zeichens / mehrerer Zeichen von einer geöffneten seriellen Schnittstelle

S | SetAnalog | Einstellen des Wertes eines Analogausgangs
 | SetBit | Setzen des Wertes eines Ausgangs auf den Wert "1"
 | SetPort | Setzen des Wertes eines Ausgangsports (8 Bit)
 | SetPWM | Einstellen des Tastverhältnisses an einemPWM-Ausgang

T | TxCAN | Schreiben eines Eintrags im Objektverzeichnis eines CAN-Knotens
 | TxCom | Senden eines Zeichens / mehrerer Zeichen über eine geöffnete serielle Schnittstelle

V | Vel | Angabe der Normalgeschwindigkeit für Linearachsen
 | VelPropVoltage | Befehl für die Ausgabe eines geschwindigkeitsproportionalen Spannungswertes
 | VpvOn | Ausgabe eines geschwindigkeitsproportionalen Spannungswertes beginnen
 | VpvOff | Ausgabe eines geschwindigkeitsproportionalen Spannungswertes beenden

W | WaitBit | Warten auf einen logischen Pegel eines Eingangskanals
 | WaitPort | Warten auf ein Bitmuster an einem 8-Bit-Eingangsport
 | WpClamp | Spannen / Lösen der Werkstückspannvorrichtung

Befehle im Format DIN66025

 | M5 | Ausschalten der Antriebsspindel
 | M8 | Einschalten der Kühlmittelpumpe
 | M9 | Ausschalten der Kühlmittelpumpe
M | Mpbv | Setzen eines Ausgangs auf den Wert "0" oder "1"


Spindelbefehle

Befehle im PAL-Format

S | S | Einstellen einer Spindeldrehzahl
 | SCCLW | Einschalten des Spindelantriebs / der Frässpindel im Linkslauf
 | SCLW | Einschalten des Spindelantriebs / der Frässpindel im Rechtslauf
 | Sn=rpm | Angabe der Drehzahl des Spindelantriebs / der Frässpindel
 | SOFF | Ausschalten des Spindelantriebs / der Frässpindel
 | Spindle | Ein-/Ausschalten des Spindelantriebs / der Frässpindel

Befehle im Format DIN66025

M | M3 | Start der Antriebsspindel im Rechtslauf
 | M4 | Start der Antriebsspindel im Linkslauf
 | M5 | Ausschalten der Antriebsspindel


Befehle zur Steuerung von Handlingachsen

Befehle im PAL-Format

A | Activate VPO | Aktivieren der Betriebsart VPO einer Handlingachse
 | Axn | Achsbezeichner für Handlingachse n
 | AxAbort | Abbruch der Bewegung der Handlingachse Axn
 | AxnInMotion | Prüfen ob momentan eine Bewegung einer Handlingachse aktiv ist
 | AxStart | Weiterführen der angehaltenen Bewegung einer Handlingachse
 | AxStart VPO | Starten der Betriebsart VPO für eine Handlingachse
 | AxStop | Anhalten einer Bewegung einer Handlingachse
 | AxStop VPO | Beenden der Betriebsart VPO für eine Handlingachse
 | AxnPA | Handlingachse n im Positionsmodus an Absolut-Zielposition fahren
 | AxnPI | Handlingachse n im Positionsmodus an relative Zielposition fahren
 | AxnV | Handlingachse n im Geschwindigkeitsmodus starten

D | Dectivate VPO | Deaktivieren der Betriebsart VPO einer Handlingachse

F | FAx | Angabe der Geschwindigkeit für eine Handlingachse

G | GetParam VPO | Abfragen der aktuell verwendeten Parameter der Betriebsart VPO einer Handlingachse

P | Pos.Axn | Variable zur Abfrage der aktuellen Position einer Handlingachse

S | SetOpMode | Setzen der Betriebsart für eine Handlingachse
 | SetParam VPO | Setzen der Parameter für die Betriebsart VPO einer Handlingachse

W | WaitMove | Warten auf das Ende der Bewegung einer Handlingachse


Programm-Ablaufsteuerung

Befehle im PAL-Format

A | Abort | Beenden des Hauptprogramms nach Bedienerquittung
 | AbortScript | Beenden eines momentan laufenden Scripts

B | Break | Abbruch einer Schleife oder Verzweigung

C | Case | Mehrfachverzweigung: Beginn eines Fall-Anweisungsblocks
 | Continue | Nächste Iteration einer Schleife ausführen

D | Default | Mehrfachverzweigung: Beginn des Anweisungsblocks "Alle anderen Fälle"
 | Delay | Ausführen einer Wartezeit im NC-Programm
 | Display | Ausgabe eines Hinweistextes in ein Display
 | Do | Wiederholschleife Do...EndDo: Beginn des Anweisungsblocks

E | Else | Bedingte Verzweigung: Alternativer Anweisungsblock
 | EndCase | Mehrfachverzweigung: Ende eines Fall-Anweisungsblocks
 | EndDo | Wiederholschleife Do...EndDo: Ende des Anweisungsblocks
 | EndFor | Zählschleife For...EndFor: Ende des Anweisungsblocks
 | EndIf | Bedingte Verzweigung: Ende eines Anweisungsblocks
 | EndSwitch | Mehrfachverzweigung: Ende der Anweisungsblöcke
 | EndWhile | Wiederholschleife While...EndWhile: Ende eines Anweisungsblocks
 | EventReturn | Rückkehr aus einer Eventhandler-Routine
 | Execute | Aufruf einer externen NCP-, CNC- oder ISO-Bearbeitungsdatei

F | For | Zählschleife: Beginn des Anweisungsblocks

G | GetScriptExitCode | Abfrage des Rückgabewertes des zuletzt ausgeführten Scripts
 | GetScriptStatus | Abfrage des aktuellen Scriptstatus: Aktiv / nicht aktiv

I | If | Bedingte Verzweigung: Beginn des Anweisungsblocks

M | MessageBox | Anzeige einer Meldung in einem Dialog

O | OnProgBegin | Eventhandler für das Ereignis "Bearbeitung beginnt"
 | OnProgEnd | Eventhandler für das Ereignis "Bearbeitung wird beendet"
 | OnError | Eventhandler für das Ereignis "Ein Fehler ist aufgetreten"

P | ProgBegin | Kennzeichnung des Beginns des CNC-Hauptprogramms
 | ProgEnd | Kennzeichnung des Endes des CNC-Hauptprogramms

Q | Quit | Anhalten und optionales Weiterführen/Beenden des Hauptprogramms

R | Repeat | Wiederholschleife Repeat...Until: Beginn des Anweisungsblocks
 | Return | Rückkehr aus einem Unterprogramm

S | StartScript | Programmatisches Starten eines Scripts
 | SubR | Aufruf eines Unterprogramms
 | Switch | Mehrfachverzweigung: Beginn der Anweisungsblöcke

T | Time | Ausführen einer Wartezeit mit eingeblendetem Hinweis
 | Type | Ausgabe eines Textes in der Statuszeile des Programms

U | Until | Wiederholschleife Repeat...Until: Ende des Anweisungsblocks

W | WaitMove | Warten auf das Ende der Bewegung einer Handlingachse
 | WaitBit | Warten auf einen logischen Pegel eines Eingangskanals
 | WaitPort | Warten auf ein Bitmuster an einem 8-Bit-Eingangsport
 | While | Wiederholschleife While...EndWhile: Beginn des Anweisungsblocks

X | XType | Ausgabe eines formatierten Textes in der Statuszeile des Programms

Befehle im Format DIN66025

%nr | Beginn eines Hauptprogramms (DIN66025/G-Code)
%Lnr | Beginn eines Unterprogramms (DIN66025/G-Code)

L | Lnr | Aufruf eines Unterprogramms

M | M0 | Beenden des Hauptprogramms nach Bedienerquittung
 | M1 | Anhalten und optionales Weiterführen/Beenden des Hauptprogramms
 | M17 | Beenden eines Unterprogramms und Rückkehr an Aufrufpunkt
 | M30 | Beenden des CNC-Hauptprogramms


Arithmetische Funktionen und Operatoren

%In% | Formatierung einer I-Variablen als Zeichenkette
%Pn% | Formatierung einer P-Variablen als Zeichenkette
%Rn% | Formatierung einer R-Variablen als Zeichenkette
%Sn% | Formatierung einer Str-Variablen als Zeichenkette
$ | Operator zur Kennzeichnung einer Zahl als Hexadezimalwert
& | Operator für bitweise UND-Verknüpfung
| | Operator für bitweise ODER-Verknüpfung
^ | Operator für bitweise Exklusiv-ODER-Verknüpfung
~ | Operator für bitweise Negation
+ | Operator für die Addition
+= | Operator für die Additionszuweisung
- | Operator für die Subtraktion
-= | Operator für die Subtraktionszuweisung
* | Operator für die Multiplikation
*= | Operator für die Multiplikationszuweisung
/ | Operator für die Division
/= | Operator für die Divisionszuweisung
< | Operator für Vergleich "Kleiner als"
<< | Operator für bitweise Verschieben nach links
<= | Operator für Vergleich "Kleiner als oder gleich"
> | Operator für Vergleich "Größer als"
>> | Operator für bitweise Verschieben nach rechts
>= | Operator für Vergleich "Größer als oder gleich"
== | Operator für Vergleich "Ist gleich"
!= | Operator für Vergleich "Ist ungleich"

0 | 0x | Operator zur Kennzeichnung einer Zahl als Hexadezimalwert

A | ACOS | Trigonometrische Funktion ARCUSCOSINUS
 | AND | Operator für logische UND-Verknüpfung
 | ASIN | Trigonometrische Funktion ARCUSSINUS
 | ATAN | Trigonometrische Funktion ARCUSTANGENS
 | ATAN2 | Trigonometrische Funktion ARCUSTANGENS mit zwei Argumenten x,y
 | AtoF | Konvertierung einer ASCII-Zeichenkette in einen Gleitkommawert
 | AtoL | Konvertierung einer ASCII-Zeichenkette in einen ganzzahligen Wert

C | COS | Operator für die trigonometrische Funktion COSINUS

E | EXP | Berechnen der Exponentialfunktion

F | FABS | Funktion zur Ermittlung des Betrags einer Zahl
 | FLOOR | Funktion für das Ermitteln des ganzzahligen Anteils einer Zahl

H | H | Operator zur Kennzeichnung einer Zahl als Hexadezimalwert

I | I(-Variable) | Integer-Variable

L | LN | Berechnung des natürlichen Logarithmus
 | LOG | Berechnung des dekadischen Logarithmus (Zehnerlogarithmus)

M | MODULO | Operator für die Modulo-Division

N | NOT | Operator für logische Negation

O | OR | Operator für logische ODER-Verknüpfung

P | P(-Variable) | Prozess-Variable
 | PI | Konstante: Kreiszahl Pi
 | POW | Funktion zur Berechnung einer Potenz

Q | Q(-Variable) | Struktur mit Achspositionen

R | R(-Variable) | Real-Variable

S | SIN | Operator für die trigonometrische Funktion SINUS
 | SQRT | Funktion zur Ermittlung der Quadratwurzel einer Zahl
 | Strn | Zeichenkettenvariable

T | TAN | Operator für die trigonometrische Funktion TANGENS


Benutzerinteraktion

Befehle im PAL-Format

A | ABORTRETRYIGNORE | MessageBox: Anzeige der Schaltflächen "Abbrechen", "Wiederholen" und "Ignorieren"

D | Display | Ausgabe eines Hinweistextes in ein Display

E | ERROR | MessageBox: Anzeige des Symbols "Fehler"

 | GetString | Dialog zur Eingabe einer Zeichenkette durch den Anwender
G | GetValue | Dialogfeld zur Eingabe eines Wertes durch den Bediener

I | IDABORT | Symbolische Konstante für den Rückgabewert eines Dialogs
 | IDCANCEL | Symbolische Konstante für den Rückgabewert eines Dialogs
 | IDIGNORE | Symbolische Konstante für den Rückgabewert eines Dialogs
 | IDNO | Symbolische Konstante für den Rückgabewert eines Dialogs
 | IDOK | Symbolische Konstante für den Rückgabewert eines Dialogs
 | IDRETRY | Symbolische Konstante für den Rückgabewert eines Dialogs
 | IDYES | Symbolische Konstante für den Rückgabewert eines Dialogs

M | ManualMove | Öffnet den Dialog für das manuelle Verfahren von Achsen
 | MessageBox | Anzeige einer Meldung in einem Dialog

O | OK | MessageBox: Anzeige der Schaltfläche "OK"
 | OKCANCEL | MessageBox: Anzeige der Schaltflächen "OK" und "Abbruch"

P | Parameter | Aufruf des Dialogs zur Bearbeitung von R-Variablen

Q | Quit | Anhalten und optionales Weiterführen/Beenden des Hauptprogramms

R | RETRYCANCEL | MessageBox: Anzeige der Schaltflächen "Wiederholen" und "Abbrechen"

S | Selection | Definition einer Auswahlmöglichkeit für die 1-aus-n-Auswahl mit Select
 | Select | Anzeige des Auswahldialogs für die 1-aus-n-Auswahl

T | Type | Ausgabe eines Textes in der Statuszeile des Programms

U | Until | Wiederholschleife Repeat...Until: Ende des Anweisungsblocks
 | User | Aufruf einer benutzerspezifischen Batch-Datei
 | UserBat | Aufruf einer benutzerspezifischen Batch-Datei
 | UserDLL | Aufruf einer Funktion in einer benutzerspezifischen Bibliothek (DLL)
 | UserExe | Aufruf einer externen Applikation

W | WARNING | MessageBox: Anzeiges des Symbols "Warnung"

X | XType | Ausgabe eines formatierten Textes in der Statuszeile des Programms

Y | YESNO | MessageBox: Anzeige der Schaltflächen "Ja" und "Nein"
 | YESNOCANCEL | MessageBox: Anzeige der Schaltflächen "Ja", "Nein" und "Abbrechen"

Befehle im Format DIN66025

G | G75 | Aufruf des Dialogs "Geometriedatei" zur Bearbeitung von Framepositionen
 | G98 | Aufruf des Dialogs zur Bearbeitung von R-Variablen
 | G99 | Ausgabe eines Textes in der Statuszeile des Programms

M | M0 | Beenden des Hauptprogramms nach Bedienerquittung
 | M1 | Anhalten und optionales Weiterführen/Beenden des Hauptprogramms


Variablen

I | I(-Variable) | Integer-Variable

L | LoadIVar | Laden der Werte einzelner I-Variablen aus einer Datei
 | LoadIVarFile | Laden der Werte der I-Variablen I0...I299 aus einer Datei
 | LoadQVar | Laden der Werte einzelner Q-Variablen aus einer Datei
 | LoadQVarFile | Laden der Werte der Q-Variablen Q0...Q299 aus einer Datei
 | LoadRVar | Laden der Werte einzelner R-Variablen aus einer Datei
 | LoadRVarFile | Laden der Werte der R-Variablen R0...R299 aus einer Datei

P | P(-Variable) | Prozess-Variable
Q | Q(-Variable) | Struktur mit Achspositionen
R | R(-Variable) | Real-Variable
S | Strn | Zeichenkettenvariable

SaveIVar | Speichern der Werte einzelner I-Variablen in eine Datei
SaveIVarFile | Speichern der Werte der I-Variablen I0...R299 in eine Datei
SaveQVar | Speichern der Werte einzelner Q-Variablen in eine Datei
SaveQVarFile | Speichern der Werte der Q-Variablen Q0...Q299 in eine Datei
SaveRVar | Speichern der Werte einzelner R-Variablen in eine Datei
SaveRVarFile | Speichern der Werte der R-Variablen R0...R299 in eine Datei

%In% | Formatierung einer I-Variablen als Zeichenkette
%Pn% | Formatierung einer P-Variablen als Zeichenkette
%Rn% | Formatierung einer R-Variablen als Zeichenkette
%Sn% | Formatierung einer Str-Variablen als Zeichenkette


Befehle zur Manipulation von String-Variablen

Strn | Zeichenkettenvariable
StrCompare | Vergleich zweier Zeichenketten, Case-sensitiv
StrCompareNoCase | Vergleich zweier Zeichenketten, nicht Case-sensitiv
StrDelete | Löschen eines oder mehrerer Zeichen in einer Zeichenkette
StrEmpty | Den Inhalt einer String-Variablen löschen
StrFind | Suchen eines Zeichens oder einer Teilzeichenkette in einer Zeichenkette
StrFindOneOf | Erstes Auftreten eines beliebigen Zeichens einer Zeichenmenge in der Zeichenkette finden
StrFormat | Bedingte Formatierung einer Zeichenkette
StrGetAt | Ein Zeichen oder eine Teilzeichenkette aus einer Zeichenkette extrahieren
StrGetLength | Abfrage der Länge einer Zeichenkette
StrInsert | Ein Zeichen oder eine Teilzeichenkette in eine Zeichenkette einfügen
StrIsEmpty | Prüfen ob eine Zeichenkette leer ist
StrLeft | Extrahieren aller Zeichen ab Beginn einer Zeichenkette bis Index
StrMakeLower | Den Inhalt einer Zeichenkette in Kleinschreibung konvertieren
StrMakeReverse | Inhalt einer Zeichenkette umkehren
StrMakeUpper | Den Inhalt einer Zeichenkette in Großschreibung konvertieren
StrMid | Extrahieren einer Teilzeichenkette aus einer Zeichenkette ab Index
StrRemove | Entfernen eines Zeichens oder einer Teilzeichenkette aus einer Zeichenkette
StrReplace | Ersetzen eines Zeichens oder einer Teilzeichenkette in einer Zeichenkette
StrReverseFind | Suchen eines Zeichens oder einer Teilzeichenkette in einer Zeichenkette, inverse Suchreihenfolge
StrRight | Extrahieren aller Zeichen ab Ende einer Zeichenkette rückwärts bis Index
StrScan | Auswerten von Zeichen oder Teilzeichenketten einer Zeichenkette
StrSetAt | Zeichen einer Zeichenkette an Indexposition ersetzen
StrSpanExcluding | Extrahieren aller Zeichen einer Zeichenkette, die nicht in einem Zeichenvorrat enthalten sind
StrSpanIncluding | Extrahieren aller Zeichen einer Zeichenkette, die in einem Zeichenvorrat enthalten sind
StrTrimLeft | Zeichenkette am Anfang trimmen
StrTrimRight | Zeichenkette am Ende trimmen


Deklarationen

Befehle im PAL-Format

#define | Festlegung eines Textersatzes im Quellprogramm
#include | Einbinden einer Datei mit Programmcode

I | Inch | Festlegen der Einheit "Inch" ("Zoll") für die Koordinatenübergabe

M | Metric | Festlegen der Einheit "Millimeter" für die Koordinatenübergabe

Befehle im Format DIN66025

G | G70 | Festlegen der Einheit "Inch" ("Zoll") für die Koordinatenübergabe
 | G71 | Festlegen der Einheit "Millimeter" für die Koordinatenübergabe


Befehle für Dateizugriffe

Befehle im PAL-Format

C | CopyFile | Kopieren einer Datei

D | DeleteFile | Löschen einer Datei

 | FileDialog | Dateiauswahl mit dem "Dialog Datei öffnen"
F | FileExists | Prüfen der Existenz einer Datei

G | GetFileType | Feststellen des Typs einer Datei

L | LoadIVar | Laden der Werte einzelner I-Variablen aus einer Datei
 | LoadIVarFile | Laden der Werte der I-Variablen I0...I299 aus einer Datei
 | LoadQVar | Laden der Werte einzelner Q-Variablen aus einer Datei
 | LoadQVarFile | Laden der Werte der Q-Variablen Q0...Q299 aus einer Datei
 | LoadRVar | Laden der Werte einzelner R-Variablen aus einer Datei
 | LoadRVarFile | Laden der Werte der R-Variablen R0...R299 aus einer Datei

M | MoveFile | Verschieben einer Datei

R | ReadExcelFile | Lesen einer Zelle eines Arbeitsblattes einer Excel-Datei
 | ReadInitFile | Lesen eines Eintrags aus einer Initialisierungsdatei
 | ReadTextFile | Lesen einer Zeile aus einer ASCII-Textdatei

S | SaveIVar | Speichern der Werte einzelner I-Variablen in eine Datei
 | SaveIVarFile | Speichern der Werte der I-Variablen I0...R299 in eine Datei
 | SaveQVar | Speichern der Werte einzelner Q-Variablen in eine Datei
 | SaveQVarFile | Speichern der Werte der Q-Variablen Q0...Q299 in eine Datei
 | SaveRVar | Speichern der Werte einzelner R-Variablen in eine Datei
 | SaveRVarFile | Speichern der Werte der R-Variablen R0...R299 in eine Datei

W | WriteExcelFile | Beschreiben einer Zelle eines Arbeitsblattes in einer Excel-Datei
 | WriteInitFile | Schreiben eines Eintrags in eine Initialisierungsdatei
 | WriteTextFile | Schreiben einer Zeile in eine ASCII-Textdatei


Serielle Datenübertragung

Befehle im PAL-Format

C | CloseCom | Schließen einer geöffneten seriellen Schnittstelle
O | OpenCom | Öffnen einer seriellen Schnittstelle
R | RxCom | Empfangen eines Zeichens / mehrerer Zeichen von einer geöffneten seriellen Schnittstelle
T | TxCom | Senden eines Zeichens / mehrerer Zeichen über eine geöffnete serielle Schnittstelle


CAN-Bus-Kommunikation

Befehle im PAL-Format

R | RxCAN | Lesen eines Eintrags im Objektverzeichnis eines CAN-Knotens
T | TxCAN | Schreiben eines Eintrags im Objektverzeichnis eines CAN-Knotens


Ethernet-Kommunikation

Befehle im PAL-Format

C | CloseEth | Beenden der Ethernet-Verbindung zum IP-Host
G | GetStatusEth | Status einer Ethernet-Verbindung abfragen
O | OpenEth | Aufbau einer Ethernet-Verbindung zum IP-Host
R | RxEth | Empfangen von Daten über eine Ethernet-Verbindung
T | TxEth | Senden von Daten über eine Ethernet-Verbindung


%

Navigation: Befehlsliste >

Return to chapter overview

%nr

Beginn eines Hauptprogramms (DIN66025/G-Code)

Kennzeichnung für den Beginn eines NC-Hauptprogramms im Format DIN66025 (G-Code). Nach dem Zeichen für den Programmbeginn steht die Programmnummer nr. Das Ende des Hauptprogramms wird mit dem Befehl M30 gekennzeichnet.

Falls Subroutinen verwendet werden, müssen die Deklarationen der Subroutinen außerhalb des Hauptprogrammblocks erfolgen.

Beispiel:

%1

G90 G01 X0 Y0 Z0

M30

Siehe auch: M30


%L

%Lnr

Beginn eines Unterprogramms

Deklaration eines Unterprogramms im Format DIN66025 (G-Code). Nach der Zeichenkette für die Deklaration des Unterprogramms ("%L") steht die Programmnummer nr. Das Ende des Unterprogramms wird mit dem Befehl M17 gekennzeichnet.

Falls in einem NC-Programm Unterprogramme verwendet werden, müssen die Deklarationen der Unterprogramme außerhalb des Hauptprogrammblocks (deklariert durch die Befehle "%" und "M30") erfolgen.

Beispiel:

%1

G90 G01 X0 Y0 Z0

M30

Siehe auch: M17


%In%

Steuerzeichen zur Darstellung einer I-Variablen als Zeichenkette

Zur Darstellung der aktuellen Werte von I-Variablen (Integer-Variablen, ganzzahlige numerische Werte) in einer Meldung, in einer MessageBox oder zur Verarbeitung in einer Zeichenkette besteht die Möglichkeit, die Steuerzeichenkette "In" zur Umwandlung des Wertes in eine Zeichenkette zu verwenden.

Strn = %Im%

n: Index der String-Variablen

m: Index der Integer-Variablen

Das "Einfassen" des Variablen-Bezeichners in das Zeichen "%" bewirkt die Umwandlung des Wertes in eine Zeichenkette. Das Ergebnis der Umwandlung kann anschließend mit den Zeichenkettenfunktionen weiterverarbeitet werden oder direkt in einer Meldung dargestellt werden.

Beispiel:

;Darstellung des Wertes eines Zaehlers durch

;Umwandlung ueber die Steuerzeichen

;%I1%

I1=I1+1

Str11 = "Aktueller Wert des Zaehlers: "

Str1=Str11+"%I1%"

MessageBox Str1

;Verschiedene Werte in einer Zeile...

I1=12

I2=34

I3=I1+I2

Str1="I-Variablen: I1=%I1%, I2=%I2%, I3=%I3%"

XType Str1

Siehe auch: %Pn%, %Rn%, %Sn%


%Pn%

Steuerzeichen zur Darstellung einer P-Variablen als Zeichenkette

Zur Darstellung der aktuellen Werte von P-Variablen (Prozessvariablen) in einer Meldung, in einer MessageBox oder zur Darstellung in einem Display besteht die Möglichkeit, das Steuerzeichen zur Umwandlung des Wertes in eine Zeichenkette zu verwenden.

Strn = %Pm%

n: Index der String-Variablen

m: Index der P-Variablen

Das "Einfassen" der Variablen in das Zeichen "%" bewirkt die Umwandlung des Wertes in eine Zeichenkette. Das Ergebnis der Umwandlung kann anschließend mit den Zeichenkettenfunktionen weiterverarbeitet werden oder direkt in einer Meldung dargestellt werden.

Beispiel:

(1)

;Darstellung der Werte von Eingaengen durch

;Umwandlung ueber die Steuerzeichen

;%P1%, %P2&, %P3%, ..., %P7%

Str11 = "Aktuelle P-Variablen\n\n"

Str12 = "(Eingänge 1, 2, 3, 4):\n

Str13 = "%P1% %P3% %P5% %P7%\n\n"

Str14 = "(Ausgänge 1, 2, 3, 4):\n

Str15 = "%P0% %P2% %P4% %P6%"

Str1=Str11+Str12+Str13+Str14+Str15

MessageBox Str1

(2)

;in einer Zeile...

Str11= "P-Variable: P20=%P20% P21=%P21% P22=%P22%"

MessageBox Str11

Siehe auch: %In%, %Rn%, %Sn%


%Rn%

Steuerzeichen zur Darstellung einer R-Variablen als Zeichenkette

Zur Darstellung der aktuellen Werte von R-Variablen (Real-Variablen) in einer Meldung, in einer MessageBox oder zur Darstellung in einem Display besteht die Möglichkeit, das Steuerzeichen zur Umwandlung des Wertes in eine Zeichenkette zu verwenden.

Strn = %Rm%

n: Index der String-Variablen

m: Index der R-Variablen

Das "Einfassen" der Variablen in das Zeichen "%" bewirkt die Umwandlung des Wertes in eine Zeichenkette. Das Ergebnis der Umwandlung kann anschließend mit den Zeichenkettenfunktionen weiterverarbeitet werden oder direkt in einer Meldung dargestellt werden.

Beispiel:

R1=123.456

;Umwandlung ueber das Steuerzeichen %R1%

Str1="%R1%"

Str2="Der Wert der R-Variablen R1 ist: %R1%"

Str3="Der Wert der R-Variablen R1 ist: " + "%R1%"

Siehe auch: %In%, %Pn%, %Sn%


%Sn%

Steuerzeichen zur Darstellung einer String-Variablen als Zeichenkette

Zur Darstellung der aktuellen Werte von Str-Variablen (String-Variablen, Zeichenketten) in einer Meldung, in einer MessageBox oder zur Verarbeitung in Zeichenketten besteht die Möglichkeit, über die Steuerzeichenkette "Sn" auf den Inhalt einer String-Variablen zuzugreifen.

Strn = %Sm%

n: Index der String-Variablen

m: Index der String-Variablen, deren Inhalt verwendet werden soll

Das "Einfassen" des Variablen-Bezeichners in das Zeichen "%" bewirkt die Umwandlung des Wertes in eine Zeichenkette. Das Ergebnis der Umwandlung kann anschließend mit den Zeichenkettenfunktionen weiterverarbeitet werden oder direkt in einer Meldung dargestellt werden.

Beispiel:

(1)

;Ergebnisauswertung über ein Flag

;R1=0 -> Ergebnis OK

;R1=1 -> Ergebnis nicht OK

Str1 = "OK"

Str2 = "Nicht OK"

Str11 = StrR1

MessageBox "Ergebnis der Pruefung: %S11%"

(2)

;Verschiedene Werte in einer Zeile...

Str1="Das "

Str2="ist "

Str3="ein "

Str4="Text"

XType "Ausgabe: %Str1% %Str2% %Str3% %Str4%"

Siehe auch: %In%, %Pn%, %Rn%


(...)

Kommentar nach DIN

Kommentar nach DIN 66025. Die öffnende Klammer beginnt den Kommentar, die schließende Klammer beendet ihn. Der Kommentar kann sich auch über mehrere Zeilen erstrecken.

Beispiel:

(Das ist ein Kommentar)

( Das ist ein Kommentar

über mehrere Zeilen )


{...}

Kommentar nach PAL

Kommentar nach der PAL-Syntax (spezifische CNC-Programmiersprache von isel). Die öffnende geschweifte Klammer beginnt den Kommentar, die schließende geschweifte Klammer beendet den Kommentar. Der Kommentar kann auch mehrzeilig sein.

Beispiel:

MOVEABS X10.0

{

WICHTIG!

Folgende R Variablen initialisieren:

R1

R2

R3

R5

}

PARAMETER

FOR R1=1,R5,1

MOVEREL X1.0

MOVEREL YR3

ENDFOR


;

Einzeiliger Kommentar

Beginn eines einzeiligen Kommentars. Der nach dem Semikolon stehende Text wird bis zum Ende der aktuellen Zeile als Kommentar angesehen.

Beispiel:

;*************************

; Stand 27.11.2007

; Bearbeiter:

;*************************

MoveAbs X23.7 ; Startposition anfahren


&

Operator für bitweise UND-Verknüpfung

Bitweise UND-Verknüpfung eines binären Wertes mit einem weiteren binären Wert.

Logik der UND-Verknüpfung:

1100 1010

1010 1100

1000 1000

Beispiel:

; Ausmaskieren von Bit 1 eines gelesenen Portwertes, wenn das Bit gesetzt ist wird die Fahrbewegung ausgeführt

P21 = GETPORT E2

IF P21 & 0x01

MOVEREL X-10.0

ENDIF


$, 0x, H

Operator zur Kennzeichnung eines Wertes als Hexadezimalwert

Operator zur Kennzeichnung eines Wertes als Hexadezimalwert. Zulässige Ziffern bei Verwendung dieses Operators sind 0...9, a...f, A...F.

Beispiel:

P10=$55

P10=$F1

P10=$f1

P10=$BE

P10=$Dc

P11=0x55

P11=0xF1

P11=0xf1

P11=0xDc

P12=55H

P12=F1H

P12=f1H

P12=DcH


|

Operator für bitweise ODER-Verknüpfung

ODER-Verknüpfung eines binären Wertes mit einem weiteren binären Wert.

Logik der ODER-Verknüpfung:

1100 1010

1010 1100

1110 1110

Beispiel:

P97=GETPORT E1 ;Wert von Eingangsport 1 einlesen

P98=GETPORT E2 ;Wert von Eingangsport 2 einlesen

P99=P97|P98 ;Die beiden Werte bitweise ODER-verknüpfen

IF NOT P99 & 0x01 ;Bit 1 von beiden Ports ist "0"

MOVEREL X10.0

ENDIF


^

Bitweise Exklusiv-ODER-Verknüpfung

Exklusiv-ODER-Verknüpfung eines Wertes mit einem weiteren Wert.

Logik der Exklusiv-ODER-Verknüpfung:

1100 1010

1010 1100

0110 0110

Beispiele:

P97=GETPORT E1 ;Lesen von Eingang 1

P98=GETPORT E2 ;Lesen von Eingang 2

P99=P97^P98 ;Exklusiv-ODER-Verknüpfung

; Die Bewegung wird nur ausgeführt, wenn Bit 1 von Eingang 1 oder Bit 1 von Eingang 2 aktiv ist. Wenn beide Bits aktiv sind oder wenn beide Bits inaktiv sind, wird keine Aktion ausgeführt.

IF (P1&0x01) ^ (P3&0x02)

MOVEREL X10.0

ENDIF


~

Operator für bitweise Negation

Bitweise Negation eines Wertes. Der Operator ~ bewirkt, daß die einzelnen Bits eines Wertes ihren Wert invertieren, d.h. aus 0 wird 1 und umgekehrt.

Logik der bitweisen Negation:

1100 1010

0011 0101

Beispiel:

P98=GETPORT E2 ; Wert von Eingangsport 2 einlesen

P99=~P98 ; den gelesenen Wert invertieren

IF P99 & 0x01

MOVEREL X10.0

ENDIF


+

Operator für die Addition

Arithmetischer Operator für die Addition.

Beispiel:

R25=R23+R24

R26=R25+45.0

R27=3+4


+=

Operator für die Additionszuweisung

Arithmetischer Operator für eine Additionszuweisung. Bei dieser Operation wird mindestens eine Variable mit einem weiteren Wert oder einer Variablen arithmetisch verknüpft und das Ergebnis wiederum der Variablen zugewiesen.

Syntax:

variable += [wert] | [variable]

Hierbei entspricht die Schreibweise

variable+=wert_oder_variable

der längeren Schreibweise

variable = variable + wert_oder_variable.

Beispiel:

(1)

R1=3

R2=4

R1+=2.5 ;entspricht R1=R1+2.5

R1+=R2 ;entspricht R1=R1+R2

(2)

Str1="Die Bearbeitung war "

If(I_Error==0)

Str1+="erfolgreich"

Else

Str1+="fehlerhaft"

EndIf

oder in kompakter, einzeiliger Schreibweise mit Nutzung des Entscheidungsoperators "?":

(3)

Str1 = "Die Bearbeitung war "

Str1 += (I_Error==0) ? "erfolgreich" : "fehlerhaft"


-

Operator für die Subtraktion

Arithmetischer Operator für die Subtraktion.

Beispiel:

R25=R23-R24

R26=R25-30.0

R27=4-3


-=

Operator für die Subtraktionszuweisung

Arithmetischer Operator für eine Subtraktionszuweisung. Bei dieser Operation wird mindestens eine Variable mit einem weiteren Wert oder einer Variablen arithmetisch verknüpft und das Ergebnis wiederum der Variablen zugewiesen.

Syntax:

variable -= [wert] | [variable]

Hierbei entspricht die Schreibweise

variable-=wert_oder_variable

der längeren Schreibweise

variable = variable - wert_oder_variable.

Beispiel:

(1)

R1=8

R2=5

R1-=2.5 ;entspricht R1=R1-2.5

R1-=R2 ;entspricht R1=R1-R2

(2)

I1=10

I1-=1 ;dekrementieren um 1

I1-=I1 ;Den Wert auf 0 setzen :-)


*

Operator für die Multiplikation

Arithmetischer Operator für die Multiplikation.

Beispiel:

R25=R23*R24

R26=2*R25

R27=3*4


*=

Operator für die Multiplikationszuweisung

Arithmetischer Operator für eine Multiplikationszuweisung. Bei dieser Operation wird mindestens eine Variable mit einem weiteren Wert oder einer Variablen arithmetisch verknüpft und das Ergebnis wiederum der Variablen zugewiesen.

Hierbei entspricht die Schreibweise

variable*=wert_oder_variable

der längeren Schreibweise

variable = variable * wert_oder_variable.

Beispiel:

(1)

R1=8

R2=5

R1*=2.0 ;entspricht R1=R1*2.0

R1*=R2 ;entspricht R1=R1*R2

(2)

I1=10

I1*=2 ;Wert verdoppeln

I1*=I1 ;Wert quadrieren


\ (Escape-Zeichen)

Eine Escape-Sequenz (nach dem Escape-Zeichen, englisch to escape ‚entkommen‘) ist eine Zeichenkombination , die keinen Text repräsentiert, sondern eine Sonderfunktion ausführt.

Im Editor von ProNC bewirkt das Escape-Zeichen '\' am Ende einer Zeile das Überlesen des Zeilenendes. Das bedeutet, daß die Zeile über den Zeilenumbruch hinaus gelesen und so verarbeitet wird, als ob die nachfolgende Zeile noch Teil der Anweisung der vorhergehenden Zeile ist. Das Escape-Zeichen kann auch mehrere aufeinanderfolgende Zeilen miteinander verbinden.

Mit dem Escape-Zeichen '\' können beispielsweise komplexe Bedingungen übersichtlicher dargestellt werden.

Beispiel:

;Die komplexe Auswertung in einer If-Bedingung wird übersichtlicher dargestellt

#define BEDINGUNG_IST_NICHT_ERFUELLT 0

#define BEDINGUNG_IST_ERFUELLT 1

#define iBedingungTesten I21

#define iPortNr I23

#define iBitNr1 I24

#define iBitNr2 I25

2iBedingungTesten=1

iPortNr=2

iBitNr1=1

iBitNr2=2

If((iBedingungTesten==1) AND \

(IniPortNr.iBitNr1==BEDINGUNG_IST_ERFUELLT) AND \

(IniPortNr.iBitNr2==BEDINGUNG_IST_NICHT_ERFUELLT) AND \

(POS1.X>120.0))

SetBit Out1.5=1

Else

SetBit Out1.5=0

EndIf


/Anweisung (Ausblendsatz)

/Anweisung

Kennzeichnung für einen Ausblendsatz

Der einer gültigen Anweisung vorangestellte Schrägstrich wird vom Interpreter der Steuerung als Kennzeichnung für einen Ausblendsatz angesehen.

Anweisungen mit dieser Kennzeichnung werden während des Programmlaufs ignoriert. Die Bearbeitung der Ausblendsätze kann in der Programmoberfläche mit der Schaltfläche "Ausblendsätze" aktiviert bzw. deaktiviert werden.

Die Schaltfläche "Ausblendsätze"


/

Operator für die Division

Arithmetischer Operator für die Division.

Beispiel:

R25=R23/R24

R26=R25/2.0

R27=4/3


/=

Operator für die Divisionszuweisung

Arithmetischer Operator für eine Divisionszuweisung. Bei dieser Operation wird mindestens eine Variable mit einem weiteren Wert oder einer Variablen arithmetisch verknüpft und das Ergebnis wiederum der Variablen zugewiesen.

Hierbei entspricht die Schreibweise

variable/=wert_oder_variable

der längeren Schreibweise

variable = variable / wert_oder_variable.

Beispiel:

(1)

R1=8

R2=5

R1/=2.0 ;entspricht R1=R1/2.0

R1*=R2 ;entspricht R1=R1/R2

(2)

I1=10

I1/=2 ;Wert halbieren


<

Operator für Vergleich "Kleiner als"

Operator für "Kleiner als"-Vergleich. Es wird geprüft, ob Operand 1 kleiner als Operand 2 ist.

Beispiel:

IF R25 < R26

MOVEREL X20.0

ENDIF

IF R25 < 100

MOVEREL X-20.0

ENDIF


<<

Operator für bitweise Schieben nach links (LeftShift-Operator)

Der LeftShift-Operator bewirkt, dass die Bits des linksstehenden Ausdrucks um die Anzahl von Positionen nach links verschoben werden, wie es durch den rechts des Operators stehenden Ausdruck angegeben wird.

Die durch den Verschiebevorgang frei gewordenen Bitpositionen werden mit Nullen angefüllt. Eine Verschiebung nach links ist eine logische Verschiebung (die Bits, die über das Ende hinaus verschoben werden, werden verworfen, einschließlich des Vorzeichenbits).

Der LeftShift-Operator kann sowohl mit P- als auch mit I-Variablen benutzt werden.

Der LeftShift-Operator hat Vorrang gegenüber allen anderen Boolschen Operatoren wie & (and), | (or) bzw. Antivalenz.

Syntax:

ausdruck << anzahl

Die Bits in "ausdruck" werden um "anzahl" Stellen nach links verschoben.

Jede Verschiebung um 1 Bit nach links entspricht bei einer ganzzahligen Zahl einer Multiplikation mit 2. Wird jedoch eine signierte Zahl nach links verschoben, sodass das Vorzeichenbit davon betroffen ist, ist das Ergebnis nicht definiert.

Beispiel:

(1)

I1=0xAA ;binaer 10101010

I2=I1<<4 ;I2 ist jetzt 10100000 (0xA0)

(2)

I1=0xBA

;zuerst wird die Maske geschoben

;0x0F wird zu 0xF0, anschliessend

;erfolgt das bitweise VerUNDen

;I2 wird zu 0xB0

I2=I1&0x0F<<4

(3)

I1=0xBA

;Das Ergebnis kann an eine R-Variable

;zugewiesen werden

R1=I1<<4

;jedoch kann keine Gleitkommavariable

;geschoben werden -> Syntax Error

I2=R1<<4 ;nicht erlaubt

Siehe auch: >>


<=

Operator für Vergleich "Kleiner als oder gleich"

Operator für "Kleiner als oder gleich als"-Vergleich. Es wird geprüft, ob Operand 1 kleiner als oder gleich Operand 2 ist.

Beispiel:

IF R25<=R26

MOVEREL X20.0

ENDIF

IF R25<=100

MOVEREL X-20.0

ENDIF


>

Operator für Vergleich "Größer als"

Operator für "Größer als"-Vergleich. Es wird geprüft, ob Operand 1 größer als Operand 2 ist.

Beispiel:

IF R25 > R26

MOVEREL X20.0

ENDIF

IF R25 > 100

MOVEREL X-20.0

ENDIF


>>

Operator für bitweise Schieben nach rechts (RightShift-Operator)

Der RightShift-Operator bewirkt, dass die Bits des linksstehenden Ausdrucks um die Anzahl von Positionen nach rechts verschoben werden, wie es durch den rechts des Operators stehenden Ausdruck angegeben wird.

Die durch den Verschiebevorgang frei gewordenen Bitpositionen werden jeweils mit Nullen angefüllt. Eine Verschiebung nach rechts ist eine logische Verschiebung (die Bits, die über das Ende hinaus verschoben werden, werden verworfen, einschließlich des Vorzeichenbits).

Der RightShift-Operator kann sowohl mit P- als auch mit I-Variablen benutzt werden.

Der RightShift-Operator hat Vorrang gegenüber allen anderen Boolschen Operatoren wie & (and), | (or) bzw. Antivalenz.

Syntax:

ausdruck >> anzahl

Die Bits in "ausdruck" werden um "anzahl" Stellen nach rechts verschoben.

Jede Verschiebung um 1 Bit nach rechts entspricht bei einer ganzzahligen Zahl einer Division durch 2. Wird jedoch eine signierte Zahl nach rechts verschoben, sodass das Vorzeichenbit davon betroffen ist, ist das Ergebnis nicht definiert.

Beispiel:

(1)

I1=0xBA ;binaer 10111010

I2=I1>>4 ;I2 ist jetzt 00001011 (0x0B)

(2)

I1=0xBA

;zuerst wird die Maske geschoben

;0x0F wird zu 0x=0, anschliessend

;erfolgt das bitweise VerUNDen

;I2 wird zu 0x00

I2=I1&0x0F>>4

(3)

I1=0xBA

;Das Ergebnis kann an eine R-Variable

;zugewiesen werden

;I1>>4 = 0x0B = 11 -> R1=11.000

R1=I1>>4

;jedoch kann keine Gleitkommavariable

;geschoben werden -> Syntax Error

I2=R1>>4 ;nicht erlaubt

Siehe auch: <<


>=

Operator für Vergleich "Größer als oder gleich"

Operator für "Größer als oder gleich als"-Vergleich. Es wird geprüft, ob Operand 1 größer als oder gleich Operand 2 ist.

Beispiel:

IF R25>=R26

MOVEREL X20.0

ENDIF

IF R25>=100

MOVEREL X-20.0

ENDIF


==

Operator für Vergleich "Ist gleich"

Operator für "Ist gleich wie"-Vergleich. Es wird geprüft, ob Operand 1 gleich groß wie Operand 2 ist.

Beispiel:

IF R25 == R26

MOVEREL X20.0

ENDIF

IF R25 == 100

MOVEREL X-20.0

ENDIF

IF I101 == 1

PROGEND

ENDIF


!=

Operator für Vergleich "Ist ungleich"

Operator für "Ist ungleich zu"-Vergleich. Es wird geprüft, ob Operand 1 ungleich groß wie Operand 2 ist.

Beispiel:

IF R25 != R26

MOVEREL X20.0

ENDIF

IF R25 != 100

MOVEREL X-20.0

ENDIF


?

Entscheidungsoperator, Zweiwegeentscheidung

Durch den Entscheidungsoperator "?" werden drei Ausdrücke in der Form

ausdruck1 ? ausdruck2 : ausdruck3

verknüpft. Wenn ausdruck1 wahr ist, kommt ausdruck2 zur Anwendung, anderenfalls ausdruck3. ausdruck2 wird von ausdruck3 durch einen Doppelpunkt getrennt.

In Kombination mit dem Zuweisungsoperator "=" bildet der Entscheidungsoperator die verkürzte Schreibweise einer Zweiwegeentscheidung (IF ... ELSE ... ENDIF).

Beispiel:

;Ermitteln des Maximums

R3= (R1>R2) ? R1 : R2

;Ermitteln des Absolutwertes

R3=(R1<0.0) ? -R1 : R1

;Zuweisung eines Meldungstextes,

;abhaengig vom Wert einer I-Variablen

Str1 = I1==0 ? "Fehlerfrei" : "FEHLER!"


#

Operator für "Bewegung starten, Ende nicht abwarten"

Operator für das Ausführen einer Bewegungsfunktion ohne Warten auf das Ende der gestarteten Bewegung. Diese Konstruktion kann in Verbindung mit dem Statusflag INMOTION zur Realisierung komplexer Bewegungen verwendet werden.

Beispiel:

MoveAbs X50.0

#MoveRel X100.0

While InMotion

If GetPort A1 & 0x01

MAbort

SetBit A1.2

EndIf

EndWhile


#define

#define "zeichenkette_original" "zeichenkette_ersatz"

Festlegung eines Textersatzes im Quellprogramm

Der ProNC-Compiler führt bei der Übersetzung des ISO- oder PAL-Quellprogrammes einen Ersatz von entsprechend definierten Texten durch. Diese Texte werden mit der Anweisung #define festgelegt. Die Benutzung von #define-Anweisungen erhöht den (symbolischen) Dokumentationswert der entsprechenden Anwenderprogramme, die Lesbarkeit verbessert sich und die Bearbeitung eines Programms durch Dritte wird dadurch vereinfacht.

Beispiele:

; Pseudo-Variable für Arithmetik:

#define ArgumentGrad R1

#define ArgumentRad R2

#define Trig_Pythagoras R7

;Pseudo-Variable für Arbeitswerte

# define aktuelle_Temp1 R11

# define aktuelle_Temp2 R12

# define Temp_Summe R13

# define Laser1_Messwert R14

# define Retcode_Laser_Dll R15

# define aktueller_Abstand R16

;Klartextnamen für Subroutinen

# define LaserControlOn Subr100

# define LaserControlOff Subr200

;Kurzbezeichner fuer Meldungstexte

# define Text1 Type das ist der Text1 ...

# define Text2 Type Bitte Programm starten mit ENTER-Taste ...

;Definitionen für E/A:

#define Gas_On SetBit A1.1=1

#define Gas_Off SetBit A1.1=0

;Mnemonische Befehle können symbolisch benannt werden, z.B.

#define Warten_auf_Anwendereingabe Quit

#define Programm_Abbruch_nach_Enter Abort

;Eine Bedingung, welche immer wahr ist

#define TRUE 1==1

;Einen digitalen Temperaturwert einlesen:

#define Akt_Temperatur_Abfragen R100=GetPort E1

;Eine Bedingung, die einen Vergleich beinhaltet

#define Maximal_Wert_Erreicht R100 > 100


#include

Einschließen einer weiteren Quelldatei in die aktuelle Datei

Zur Unterstützung einer strukturierten Programmierung besteht die Möglichkeit, bestimmte Quelldateien mit z.B. allgemeinen Definitionen, immer wieder verwendeten Subroutinen, Texten usw. als Quellcodemodul in die Haupt-Quelldatei des Projekts einzubinden. Der Compiler verwendet diese eingeschlossenen Dateien so, als ob der in der inkludierten Datei enthaltene Text an dieser Stelle in der Quelldatei stehen würde.

Es gibt mehrere Varianten für die Angabe des Namens der include-Datei, je nach Angabe wird der Dateiname folgendermaßen aufgelöst:

·Angabe des vollständigen Pfad und Namens der Datei

Durch Angabe des vollständigen Dateinamens wird eindeutig festgelegt, welche Datei einzuschließen ist. Der vollständige Dateiname wird in Anführungsstrichen eingefasst.

#include "C:\CNCWorkbench\NcProg\Include\Sub_EventHandler.PAL"

·Nutzung des festgelegten Pfades für Include-Dateien aus den Programmeinstellungen

In ProNC kann in den Einstellungen der Programmverzeichnisse ein Standard-Pfad für Include-Dateien festgelegt werden:

Erfolgt die Angabe der Include-Datei im Programm als in eckigen Klammern eingefasster Dateiname, so wird diese Include-Datei im Standard-Verzeichnis der Include-Dateien gesucht.

Die Angabe

#include <Sub_EventHandler.PAL>

bewirkt also das Einbinden der Datei mit dem vollständigen Namen

F:\NCProg\Include\Sub_EventHandler.PAL

·Einschließen einer Datei im gleichen Verzeichnis der Quelldatei

Die Angabe der einzubindenden Datei in der Form Name und Erweiterung in Anführungsstrichen hat zur Folge, daß die Include-Datei im Verzeichnis der aktuellen Quelldatei gesucht wird.

Wenn die Quelldatei, in welche die Include-Datei eingebunden werden soll, im Verzeichnis

C:\NcProg\PAL\Projekt1

steht und die Angabe der Include-Datei in der Form

#include "Sub_EventHandler.PAL"

erfolgt, so wird die Datei mit dem vollständigen Namen

C:\NcProg\PAL\Projekt1\Sub_EventHandler.PAL

eingebunden.

·Einschließen einer Datei aus einem Unterverzeichnis des aktuellen Verzeichnisses der Quelldatei

Falls sich die einzubindende Datei in einem Unterverzeichnis des Verzeichnisses der aktuellen Quelldatei befindet, kann dieses Unterverzeichnis mit einem vorangestellten Operator angegeben werden. Die Angabe des kompletten relativen Pfades erfolgt in Anführungsstrichen.

Wenn die Quelldatei, in welche die Include-Datei eingebunden werden soll, im Verzeichnis

C:\NcProg\PAL\Projekt1

steht und die Angabe der Include-Datei in der Form

#include ".\SubRoutinen\Sub_EventHandler.PAL"

erfolgt, so wird die Datei mit dem vollständigen Namen

C:\NcProg\PAL\Projekt1\SubRoutinen\Sub_EventHandler.PAL

eingebunden. Die Angabe des Zeichens "." bedeutet, daß die nachstehende Angabe ein relativer Pfad des Verzeichnisses ist, in dem sich die aktuelle Quelldatei mit der #include-Anweisung befindet.


<Application ...>

Zugriff auf interne Daten und Funktionen der Anwendung

In Bearbeitung


<Break ...>

Marke für das (bedingte) Anhalten eines PAL-Programms

Der Befehl <Break> ist ein Kommando, mit dem der Bearbeitungsablauf von ProNC bzw. Remote während einer Dateiausgabe kontrolliert werden kann. Er dient dazu, während der Phase der CNC-Programmentwicklung eine Bearbeitung anzuhalten und anschließend (optional im Einzelschrittbetrieb) fortzuführen. Auf diese Weise können kritische Abschnitte des CNC-Programms auf sichere Weise in Betrieb genommen werden.

Einfaches Unterbrechen einer CNC-Programmbearbeitung

<Break>

Nach Erreichen dieser Anweisung wird die laufende Programmbearbeitung angehalten, die Anwendung aktiviert den Stop-Modus (vergleichbar dem Betätigen der Schaltfläche STOP bzw. Auswahl des Menübefehls "Ausgabe" - "Stop").

Die Schaltfläche "STOP"

Unterbrechen einer CNC-Programmbearbeitung und Festlegen des weiteren Bearbeitungsmodus

<Break RunMode=[Single]|[Auto]>

Nach Erreichen der Break-Anweisung und Anhalten der Bearbeitung wird der neue Bearbeitungsmodus entsprechend der Anweisung "RunMode" eingestellt:

RunMode=Single | Der Bearbeitungsmodus der Anwendung (ProNC / Remote) wird automatisch in den Einzelschrittbetrieb umgeschaltet
RunMode=Auto | Der Bearbeitungsmodus der Anwendung (ProNC / Remote) wird in den Automatikbetrieb umgeschaltet
keine Angabe | Der Bearbeitungsmodus der Anwendung (ProNC / Remote) wird in den Automatikbetrieb umgeschaltet

Bedingtes Unterbrechen einer CNC-Programmbearbeitung

Die Break-Anweisung kann wie eine normale Programmanweisung im Rahmen einer If- oder einer Switch-Konstruktion verwendet werden. Das bedeutet, daß die Bearbeitung des CNC-Programms abhängig von spezifischen Steuerungs- bzw. Maschinenzuständen unterbrochen werden kann.

If E1.4

<Break>

EndIf

Nach Erreichen des Anweisungsblocks wird die Programmunterbrechung nur ausgelöst, wenn Eingang E1.4 aktiv ist. Eingang E1.4 könnte beispielsweise die Betriebsbereitschaft eines externen, über eine IO-Schnittstelle verbundenen Gerätes signalisieren.

R1=GetAnalog E1

If (R1>3500.0)

<Break>

EndIf

Bei Erreichen des Anweisungsblocks wird der Spannungswert an einem Analogeingang eingelesen. Die Programmunterbrechung wird nur ausgelöst, wenn der Spannungswert größer als 3.5 V (3500 mV) ist. Analogeingang E1 könnte zum Beispiel einen Temperaturwert repräsentieren.

Aktivieren / Deaktivieren der Unterbrechungsanweisung

Die Anweisung <Break ...> ist mit dem Steuerzeichen für Ausblendsätze kombinierbar. Dazu wird der Anweisung die Kennzeichnung für einen Ausblendsatz "/" vorangestellt.

/<Break RunMode Auto>

Hinweis:

Als Trennzeichnen zwischen Anweisung und Parameter können wahlweise die Zeichen '=', ':' oder ein Leerzeichen verwendet werden, ebenso ist Groß-/Kleinschreibung nicht vorgeschrieben. Es werden also gleichermaßen die folgenden Befehle akzeptiert:

<Break RunMode=Single>

<Break RunMode:Single>

<Break RunMode Single>

<BREAK RUNMODE=SINGLE>

<BREAK runmode:single>

Beispiel:

; Einfaches Unterbrechen einer CNC-Programmbearbeitung

<Break>

; Unterbrechen einer CNC-Programmbearbeitung und den

; Bearbeitungsmodus auf Einzelschritt setzen

<Break RunMode=Single>

; Unterbrechen der CNC-Programmbearbeitung und den

; Bearbeitungsmodus auf Automatikbetrieb setzen

<Break RunMode=Auto>

Siehe auch: <Trace>, <ProgAbort>, Switch ... EndSwitch, If ... Else ... Endif


<Counter ...>

Zugriff auf einen mehrkanaligen Zähler

In den Anwendungen ProNC bzw. Remote können bis zu 32 digitale Zähler für automatische oder programmgesteuerte Zählanwendungen konfiguriert werden.

Die Konfiguration der Zähler erfolgt mit Hilfe der entsprechenden Einstellfunktion(en) in Remote oder ProNC. In den Konfigurationsdialogen können Parameter wie Resetwert des Zählers, Inkrement pro Zählvorgang, Zählermodus, Limitwerte, Signalausgänge usw. konfiguriert werden.

In Ergänzung zu den konfigurierbaren automatischen Zählvorgängen kann programmatisch aus einem PAL-Programm heraus auf die Zähler zugegriffen werden. Dazu dient der Befehl <Counter ...>, mit dessen Hilfe auf die internen Parameter und Arbeitsmodi der Zähler zugegriffen werden kann sowie Zählvorgänge der Zähler umgesetzt werden können.

Verwendete Parameter:

Channel, Chnl

Angabe der Indexnummer des Zählers, auf den zugegriffen werden soll. In der Anwendung können bis zu 32 Zähler verwendet werden, demzufolge können die Kanalnummern 1...32 als Index angegeben werden. Folgende Schreibweisen sind erlaubt:

Channel:2, Channel=2

Chnl:1, Chnl=1

Reset

Der angegebene Zähler wird auf den konfigurierten Resetwert zurückgesetzt.

Increment, Incr

Der angegebene Wert wird zum Zählerstand des angegebenen Zählers addiert. Dabei gilt, daß der angegebene Wert absolut zum aktuellen Zählerstand addiert wird, d.h. falls ein negativer Wert für die inkrementelle Änderung angegeben wird, verringert sich der Zählerstand um den Betrag des angegebenen Wertes.

Erlaubte Schreibweisen:

Increment:2, Increment=2, Increment:0.4, INCREMENT=-2.35

Incr:1, Incr=1, Incr:1.75, INCR:-4.75

Decrement

Der angegebene Wert wird vom Zählerstand des angegebenen Zählers subtrahiert. Dabei gilt, daß der angegebene Wert absolut vom aktuellen Zählerstand subtrahiert wird, d.h. falls ein negativer Wert für die inkrementelle Änderung angegeben wird, erhöht sich der Zählerstand um den Betrag des angegebenen Wertes.

Erlaubte Schreibweisen:

Decrement:2, Decrement=2, Decrement:0.4, DECREMENT=-2.35

Decr:1, Decr=1, Decr:1.75, DECR:-4.75

Count

Der aktuelle Zählerstand wird um den in den Zählereinstellungen festgelegten Wert pro Zählvorgang verändert.

Beispiele:

<Counter CHANNEL:1 RESET>

Der Zähler mit dem Index 1 wird auf den in der Zählerkonfiguration festgelegten Resetwert gesetzt. Falls in der Konfiguration von Zählerkanal 1 kein Resetwert angegeben wurde, wird keine Aktion ausgeführt.

<Counter Channel:1 Increment=5>

Der Zählerstand des Zählers mit dem Index 1 wird um 5 erhöht.

<Counter Channel:1 Increment=-5>

Der Zählerstand des Zählers mit dem Index 1 wird um 5 verringert. Zwar wurde der Parameter "Increment" (Erhöhen) verwendet, der inkrementelle Wert ist jedoch negativ.

<Counter Chnl:4 Decrement=1>

Der Zählerstand des Zählers mit dem Index 4 wird um 1 erhöht.

<Counter CHNL:4 DECR=-1>

Der Zählerstand des Zählers mit dem Index 4 wird um 1 verringert. Zwar wurde der Parameter "Decrement" (Verringern) verwendet, der inkrementelle Wert ist jedoch negativ.

Verwendung eines Zählers analog zu einer Variablen

Zusätzlich zu den in eine eckige Klammer gefassten Counter-Befehlen kann ein Zähler auch wie eine normale Programmvariable angesprochen werden. Der gewünschte Kanal kann in der Form "Countern" angesprochen werden, d.h. nach dem Schlüsselwort "Counter" folgt ohne Leerzeichen der Index des gewünschten Zählers. Die Indexnummer liegt im Bereich von 1 ... 32. Diese Option erlaubt es, komplexe Berechnungen mit den aktuellen Zählerständen der Zähler durchzuführen.

Obwohl der Zähler bei dieser Schreibweise insgesamt wie eine Variable verwendet werden kann, gibt es doch eine Erweiterung, die nicht dem Standard entspricht. Durch Angabe des Schlüsselwortes "Count" kann bewirkt werden, daß der Zählerstand des indizierten Zählers um den in der Konfiguration des Zählers angegebenen inkrementellen Wert pro Zählvorgang erhöht bzw. verringert wird.

Beispiele:

Counter2=5

Der Zählerstand des Zählers mit dem Index 2 wird auf den Wert 5 gesetzt.

Counter12 Count

Der Zählerstand von Zähler 12 wird um den in der Konfiguration festgelegten Wert pro Zählvorgang erhöht bzw. verringert.

Counter4 = R5 + Counter3 * 3

Der Zählerstand von Zählerkanal wird mit 3 multipliziert. Anschließend wird der Wert der Variablen R5 addiert und das Ergebnis an den Zählerkanal 4 übertragen.

Bedingtes Zählen

Die Anweisung <Counter ...> bzw. die Verwendung von Countern kann auch wie eine normale Programmanweisung im Rahmen einer If- oder einer Switch-Konstruktion verwendet werden. Das bedeutet, daß das Zählen im Programmablauf abhängig von spezifischen Steuerungs- bzw. Maschinenzuständen ausgeführt werden kann.

If E1.4

<Counter Channel=2 Count>

EndIf

Bedingtes Zählen mit Verwendung des Counters wie Variable

Hinweis: Für diese Operationen ist die Verwendung des Befehls "Counter" ohne spitze Klammern erforderlich.

Bei Erreichen des Anweisungsblocks wird der Zähler mit dem Index 2 nur dann um den konfigurierten Inkrementalwert verändert, wenn der digitale Eingang E1.4 aktiv ist.

Switch I11

Case 1: ;Wert ist 1, um 1 erhoehen

Counter8=Counter8+1

EndCase

Case 2: ;Wert ist 2, um 2 erhoehen

Counter8=Counter8+2

EndCase

Case 4: ;Wert ist 4, um 4 erhoehen

Counter8=Counter8+4

EndCase

Default: ;in allen anderen Faellen um Defaultwert veraendern

Counter8 Count

EndCase

EndSwitch

Siehe auch: Counter, Switch ... EndSwitch, If ... Else ... Endif


<OutputType>

<OutputType ...>

Festlegen der Betriebsart für einen digitalen Ausgang

In der Anwendung können bis zu 8 digitale Ausgänge für eine besondere Betriebsart konfiguriert werden. Jedem Ausgang kann einer der Funktionen "Taktender Ausgang", "Einzelimpuls", "Ausschaltverzögerung" oder "Taktend mit automatischem Ausschalten" zugewiesen werden.

Normalerweise werden diese Ausgänge mit Sonderfunktion innerhalb der Anwendung konfiguriert, je nach Art des erstellten CNC-Programms und der Bearbeitungsaufgabe kann es jedoch erforderlich sein, diese Funktionalitäten nur während bestimmter Programmabschnitte zu verwenden, in anderen hingegen nicht. Der Befehl "<OutputType>" zusammen mit den angegebenen Parametern ermöglicht die Umschaltung des Ausgangstyps während der Laufzeit eines CNC-Programms.

Folgende Parameter können innerhalb der Anweisung angegeben werden:

Verwendete Parameter:

A, O

Angabe von Port- und Bitnummer des Ausgangs, dessen Verhalten konfiguriert werden soll. Die Angabe erfolgt in der Form "p.b", wobei p die Portnummer (1...32) und b die Bitnummer (1...8) darstellt.

Channel

Angabe der Kanalnummer des Ausgangs, dessen Verhalten konfiguriert werden soll. In der Anwendung können bis zu 8 digitale Ausgänge für die Bereitstellung von Sonderfunktionen konfiguriert werden. Jedem dieser Kanäle wird eine Port- und eine Bitnummer zugeordnet. Die Angabe des Parameters "Channel" bewirkt, daß der für die angegebenen Kanalnummer (1...8) zugewiesene Ausgang konfiguriert wird.

Reset

Der angegebene Ausgang wird in die Standard-Betriebsart zurückgesetzt und verhält sich ab Aufruf des Kommandos wie ein üblicher digitaler Ausgang.

Type

Dieser Parameter wird verwendet, um die Art der Sonderfunktion des Ausgangs festzulegen. Folgende Werte sind möglich:

0

Der Ausgang wird in die Standard-Betriebsart versetzt

1

Der Ausgang wird in die Betriebsart "Taktender Ausgang" versetzt. Die Puls- und Pausendauer des Signals werden durch die Parameter "PulseTime" und "PauseTime" festgelegt. Die Angabe von Impulsdauer und Pausendauer erfolgt in Millisekunden.

Wenn der Ausgang aktiviert wird (Schreiben des Wertes 1 auf den Ausgang), erfolgt die Ausgabe des getakteten Signals. Wird der Ausgang deaktiviert (Schreiben des Wertes 0 auf den Ausgang), bleibt er dauerhaft ausgeschaltet.

2

Der Ausgang wird in die Betriebsart "Einzelimpuls" versetzt. Die Dauer des Einzelimpulses wird durch den Parameter "PulseTime" festgelegt. Die Angabe der Impulsdauer erfolgt in Millisekunden.

Wenn der Ausgang aktiviert wird (Schreiben des Wertes 1 auf den Ausgang), nimmt der Ausgang zunächst den Wert "1" an. Sobald die mit dem Parameter "PulseTime" festgelegte Zeitspanne verstrichen ist, deaktiviert sich der Ausgang automatisch und nimmt den Wert "0" an.

3

Der Ausgang nimmt die Betriebsart "Ausschaltverzögerung" an. In dieser Betriebsart wird der Ausgang aktiviert, sobald der Wert "1" auf den Ausgang geschrieben wird. Wenn der Ausgang durch Schreiben des Wertes "0" deaktiviert wird, so bleibt er zunächst aktiv. Erst nach Ablauf der mit dem Parameter "SwitchOffDelay" verstrichenen Zeit wird der Ausgang auch physikalisch auf den Wert "0" gesetzt. Die Angabe der Ausschaltverzögerungszeit erfolgt in Millisekunden.

4

Der Ausgang wird in die Betriebsart "Taktend mit automatischem Ausschalten" versetzt. In dieser Betriebsart wird bei der Aktivierung des Ausgangs (Schreiben des Wertes 1 auf den Ausgang) eine Impulsfolge ausgegeben, deren Impuls- und Pausendauer mittels der Parameter "PulseTime" und "PauseTime" festgelegt wird. Nachdem die mit dem Parameter "AutoOffDelay" festgelegte Zeit verstrichen ist, wird der Ausgang automatisch deaktiviert und nimmt den Wert "0" an.
Alle Zeitangaben in den einzelnen Parametern erfolgen in Millisekunden.

Programmatische Konfiguration der Sonderfunktionen für Ausgänge

<OutputType A1.2=0>

Der digitale Ausgang A1.2 wird in die Standard-Betriebsart gebracht.

<OutputType A1.2 Type=1 PulseTime=750 PauseTime=500>

Für den digitalen Ausgang A1.2 wird die Betriebsart "Taktender Ausgang" aktiviert. Wenn der Ausgang deaktiviert ist (Schreiben von "0" auf den Ausgang) bleibt der Ausgang dauerhaft aus. Wenn der Ausgang aktiviert wird (Schreiben des Wertes "1" auf den Ausgang), wird automatisch eine Impulsfolge mit der Impulsdauer 750 ms und der Pausendauer 500 ms erzeugt.

<OutputType A1.2 Type=2 PulseTime=1500>

Für den Ausgang A1.2 wird die Betriebsart "Einzelimpuls" eingestellt. Wenn der Ausgang durch Schreiben des Wertes "1" aktiviert und anschließend die mit dem Parameter "PulseTime" festgelegte Zeit verstrichen ist, deaktiviert sich der Ausgang automatisch. Wenn innerhalb der Impulsdauer der Ausgang durch Schreiben des Wertes "0" deaktiviert wird, so wird er sofort zurückgesetzt.

<OutputType A1.2 Type=3 SwitchOffDelay=1000>

Der Ausgang A1.2 wird in die Betriebsart "Ausschaltverzögerung" gebracht. Beim Aktivieren des Ausgangs durch Schreiben des Wertes "1" verhält sich der Ausgang wie ein normaler digitaler Ausgang, d.h. der Ausgangspegel wechselt sofort auf "Aktiv". Wird der Ausgang jedoch durch Schreiben des Wertes "0" deaktiviert, so wechselt der Ausgangspegel nicht sofort auf "Inaktiv", sondern erst nachdem die angegebene Verzögerungszeit verstrichen ist.

<OutputType A1.2 Type=4 PulseTime=750 PauseTime=500 AutoOffDelay=5000>

Der Ausgang A1.2 wird in die Betriebsart "Taktend mit automatischem Ausschalten" gebracht. Beim Aktivieren des Ausgangs durch Schreiben des Wertes "1" beginnt die Ausgabe einer Impulsfolge mit der Impulsdauer 750 ms und der Pausendauer 500 ms. Wenn die angegebene Wartezeit bis zum automatischen Ausschalten des Ausgangs verstrichen ist, wird der Ausgang nach letzten vollständig generierten Impuls deaktiviert. Wenn der Ausgang innerhalb der festgelegten Wartezeit durch Schreiben des Wertes "0" deaktiviert wird, so wird er sofort in den Zustand "Inaktiv" zurückgesetzt.

Bedingtes Konfigurieren der Ausgangs-Sonderfunktionen

Die Anweisung <OutputType> kann wie eine normale Programmanweisung im Rahmen einer If- oder einer Switch-Konstruktion verwendet werden. Das bedeutet, daß die Aktivierung verschiedener Betriebszustände eines Ausgangsports abhängig von spezifischen Steuerungs- bzw. Maschinenzuständen ausgeführt werden kann.

If E1.4

<OutputType Channel=1 Type=2 PulseTime=1500>

EndIf

Nach Erreichen des Anweisungsblocks wird Kanal 1 der Ausgänge mit Sonderbetriebsart nur dann in den Modus "2" (Einzelimpuls) mit einer Impulslänge von 1,5 Sekunden gebracht, wenn der digitale Eingang E1.4 aktiv ist.

Hinweis:

Als Trennzeichnen zwischen Anweisung und Parameter können wahlweise die Zeichen '=', ':' oder ein Leerzeichen verwendet werden, ebenso ist Groß-/Kleinschreibung nicht vorgeschrieben. Es werden also gleichermaßen die folgenden Befehle akzeptiert:

<OutputType Channel=1 Type=1>

<OutputType Channel:1 Reset>

<OutputType a1.4 type=2 Pulsetime=500>

<OUTPUTTYPE CHANNEL=1 Type=0>

<OUTPUTTYPE channel:2 type:4 pulsetime:500 pausetime:500 autooffdelay:2000>

Siehe auch: <Trace>, <Break>, <ProgHalt>, <ProgAbort>, Switch ... EndSwitch, If ... Else ... Endif


<PathMode ...>

Festlegen des Bahnmodus der Motion Control

Mit Hilfe dieser Anweisung kann die Option "Bahnsteuerungsverhalten" der Anwendung ein- oder ausgeschaltet werden. In der Anwendung (ProNC oder Remote) ist ein Schalter vorhanden, welcher das generelle Bahnsteuerungsverhalten der Anwendung festlegt.

Schaltflächen für die Festlegung des Bahnsteuerungsverhaltens:

In ProNC, je nach Bedienelement

In Remote

Die Anwendung der Anweisung <PathMode ...> wirkt direkt auf die Einstellung der Anwendung, die Festlegung ist nicht auf die momentan laufende Bearbeitungsdatei beschränkt.

Verwendete Parameter:

ON, 1 | Der Bahnmodus der Motion Control wird eingeschaltet.
OFF, 0 | Der Bahnmodus der Motion Control wird ausgeschaltet.

Beispiel:

; Bahnmodus in der Anwendung ausschalten

<PathMode OFF>

<PathMode 0>

; Bahnmodus in der Anwendung einschalten

<PathMode ON>

<PathMode 1>


<ProgAbort ...>

Marke für das (bedingte) Beenden eines PAL-Programms

Anlegen eines Haltepunktes für den bedingten Programmabbruch an der aktuellen Zeile.

Dieser Befehl beendet die Ausgabe des laufenden Programms, wenn das angegebene Ereignis eingetreten ist. Wenn das Ereignis noch nicht eingetreten ist, wird dieser Befehl folgenlos übersprungen. Ein Ereignis, welches zum Programmabbruch führt, kann auf unterschiedliche Weise herbeigeführt werden.

Folgende Parameter können innerhalb der Anweisung verwendet werden:

Verwendete Parameter:

AbortCondition

Angabe, welches Flag zum Abbruch der Bearbeitung führen soll. Die Abbruchbedingungen werden während des Programmlaufs durch die Schaltflächen "Bedingtes Programmende 1" sowie "Bedingtes Programmende 2" gesetzt.

Mögliche Werte für die Abbruchbedingung sind 1 und 2.

Die Schaltflächen "Bedingtes Programmende 1" und "Bedingtes Programmende 2" der Symbolleiste "Bearbeitung"

Reset | Die Angabe des Parameters "RESET" bewirkt, daß die aktivierte Schaltfläche für das bedingte Programmende nach der Bearbeitung des Ereignisses automatisch wieder in den Inaktiv-Zustand gesetzt wird.

Abbrechen einer CNC-Programmbearbeitung

<ProgAbort AbortCondition=1>

Sobald die Anweisung erreicht wird, wird geprüft ob die Schaltfläche "Bedingtes Programmende 1" aktiv ist oder nicht. Wenn die Schaltfläche aktiviert wurde und niedergedrückt dargestellt ist, wird die laufende Programmbearbeitung beendet (vergleichbar dem Betätigen der Schaltfläche ENDE bzw. Auswahl des Menübefehls "Ausgabe" - "Beenden").

Die Schaltfläche "ENDE"

Abbrechen einer CNC-Programmbearbeitung und Deaktivieren der Abbruchbedingung

<ProgAbort AbortCondition=1 Reset>

Sobald die Anweisung erreicht wird, wird geprüft ob die Schaltfläche "Bedingtes Programmende 1" aktiv ist oder nicht. Wenn die Schaltfläche aktiviert wurde und niedergedrückt dargestellt ist, wird die laufende Programmbearbeitung beendet. Da zusätzlich die Anweisung RESET angegeben wurde, wird die Abbruchbedingung in der Anwendung automatisch zurückgesetzt und die Schaltfläche "Bedingtes Programmende 1" wird inaktiv.

Bedingter Aufruf der Abbruchbedingung bei einer CNC-Programmbearbeitung

Die Anweisung <ProgAbort> kann wie eine normale Programmanweisung im Rahmen einer If- oder einer Switch-Konstruktion verwendet werden. Das bedeutet, daß die Bearbeitung des CNC-Programms abhängig von spezifischen Steuerungs- bzw. Maschinenzuständen bedingt beendet werden kann.

If E1.4

<ProgAbort AbortCondition=1>

EndIf

Nach Erreichen des Anweisungsblocks wird die Bedingung für das Beenden des Programms nur ausgelöst, wenn Eingang E1.4 aktiv ist.

Aktivieren / Deaktivieren der Abbruchbedingung

Die Anweisung <ProgAbort ...> ist mit dem Steuerzeichen für Ausblendsätze kombinierbar. Dazu wird der Anweisung die Kennzeichnung für einen Ausblendsatz "/" vorangestellt.

/<ProgAbort AbortCondition 2>

Hinweis:

Als Trennzeichnen zwischen Anweisung und Parameter können wahlweise die Zeichen '=', ':' oder ein Leerzeichen verwendet werden, ebenso ist Groß-/Kleinschreibung nicht vorgeschrieben. Es werden also gleichermaßen die folgenden Befehle akzeptiert:

<ProgAbort AbortCondition=1>

<ProgAbort AbortCondition:1>

<ProgAbort AbortCondition 2>

<PROGABORT ABORTCONDITION=1>

<PROGABORT abortcondition:2>

Beispiel:

; Abbruch bei aktiviertem Ereignis "1"

<ProgAbort AbortCondition=1>

Siehe auch: <Trace>, <Break>, <ProgHalt>, Switch ... EndSwitch, If ... Else ... Endif


<ProgHalt ...>

Marke für das (bedingte) Anhalten (Stop) eines PAL-Programms

Anlegen eines Haltepunktes für den bedingten Programmhalt an der aktuellen Zeile.

Das Verhalten der Anwendung bei Erreichen einer <ProgHalt>-Anweisung entspricht dem Betätigen der Schaltfläche "Stop" während einer laufenden Bearbeitung.

Die Ausgabe des laufenden Programms wird angehalten, wenn das angegebene Ereignis eingetreten ist. Wenn das Ereignis noch nicht eingetreten ist, wird dieser Befehl folgenlos übersprungen. Ein Ereignis, welches zum Anhalten des Programms führt, kann auf unterschiedliche Weise herbeigeführt werden.

Folgende Parameter können innerhalb der Anweisung verwendet werden:

Verwendete Parameter:

HaltCondition

Angabe, welches Flag zum Anhalten der Bearbeitung führen soll. Die Bedingungen für den Programmstop werden während des Programmlaufs durch die Schaltflächen "Bedingter Halt 1", "Bedingter Halt 2", "Bedingter Halt 3" und "Bedingter Halt 4" definiert.

Mögliche Werte für die Abbruchbedingung sind 1, 2, 3 und 4.

Die Schaltflächen "Bedingter Programmhalt 1" ... "Bedingter Programmhalt 4" der Symbolleiste "Bearbeitung"

Reset | Die Angabe des Parameters "RESET" bewirkt, daß die aktivierte Schaltfläche für den bedingten Programmhalt nach der Bearbeitung des Ereignisses automatisch wieder in den Inaktiv-Zustand gesetzt wird.

Anhalten einer CNC-Programmbearbeitung

<ProgHalt HaltCondition=1>

Sobald die Anweisung erreicht wird, wird geprüft ob die Schaltfläche "Bedingter Programmhalt 1" [image] aktiv ist oder nicht. Wenn die Schaltfläche aktiviert wurde und niedergedrückt dargestellt ist, wird die laufende Programmbearbeitung angehalten (vergleichbar dem Betätigen der Schaltfläche STOP bzw. Auswahl des Menübefehls "Ausgabe" - "Stop").

Die Schaltfläche "STOP"

Anhalten der CNC-Programmbearbeitung und Deaktivieren der Abbruchbedingung

<ProgHalt HaltCondition=1 Reset>

Sobald die Anweisung erreicht wird, wird geprüft ob die Schaltfläche "Bedingter Programmhalt 1" aktiv ist oder nicht. Wenn die Schaltfläche aktiviert wurde und niedergedrückt dargestellt ist, wird die laufende Programmbearbeitung angehalten. Da zusätzlich die Anweisung "RESET" angegeben wurde, wird die Haltbedingung in der Anwendung automatisch zurückgesetzt und die Schaltfläche "Bedingter Programmhalt 1" wird inaktiv.

Bedingte Aufruf der Unterbrechungsanweisung bei einer CNC-Programmbearbeitung

Die Anweisung <ProgHalt> kann wie eine normale Programmanweisung im Rahmen einer If- oder einer Switch-Konstruktion verwendet werden. Das bedeutet, daß die Bearbeitung des CNC-Programms abhängig von spezifischen Steuerungs- bzw. Maschinenzuständen bedingt angehalten werden kann.

If E1.4

<ProgHalt HaltCondition=1>

EndIf

Nach Erreichen des Anweisungsblocks wird die Bedingung für das Anhalten des Programms nur ausgelöst, wenn Eingang E1.4 aktiv ist.

Aktivieren / Deaktivieren der Unterbrechungsanweisung

Die Anweisung <ProgHalt ...> ist mit dem Steuerzeichen für Ausblendsätze kombinierbar. Dazu wird der Anweisung die Kennzeichnung für einen Ausblendsatz "/" vorangestellt.

/<ProgHalt HaltCondition 2>

Hinweis:

Als Trennzeichnen zwischen Anweisung und Parameter können wahlweise die Zeichen '=', ':' oder ein Leerzeichen verwendet werden, ebenso ist Groß-/Kleinschreibung nicht vorgeschrieben. Es werden also gleichermaßen die folgenden Befehle akzeptiert:

<ProgHalt HaltCondition=1>

<ProgHalt HaltCondition:1>

<ProgHalt HaltCondition 2>

<PROGHALT HALTCONDITION=1>

<PROGHALT haltcondition:2>

Beispiel:

; Abbruch bei aktiviertem Ereignis "1"

<ProgHalt HaltCondition=1>

Siehe auch: <Trace>, <Break>, <ProgAbort>, Switch ... EndSwitch, If ... Else ... Endif


<SupervisionInput ...>

Aktivieren / Deaktivieren eines Überwachungseingangs

In der Anwendung können Überwachungseingänge konfiguriert werden, die bei Eintreten eines Ereignisses (Aktivierung des jeweils zugeordneten Eingangs der IO-Umgebung) die Programmbearbeitung anhalten und eine Fehlermeldung anzeigen.

Je nach Art des erstellten CNC-Programms und der Bearbeitungsaufgabe kann es erforderlich sein, diese Überwachung während einiger Programmabschnitte zu verwenden, in anderen jedoch nicht. Der Befehl "<SupervisionInput>" zusammen mit den angegebenen Parametern wird für die Aktivierung / Deaktivierung der Überwachungseingänge zur Laufzeit eines CNC-Programms verwendet.

Diese Parameter können innerhalb der Anweisung angegeben werden:

Verwendete Parameter:

Channel

Festlegung der Kanalnummer des Überwachungseingangs, für den die angegebenen Aktionen ausgeführt werden sollen.

Die Kanalnummer entspricht der Kanalnummer, die im Einstelldialog für die Überwachungseingänge konfiguriert wurde.

Enable, On | Der Überwachungseingang mit der angegebenen Kanalnummer wird aktiviert, d.h. ab der Programmzeile mit der Anweisung "<SupervisionInput...>" wird die Überwachung der konfigurierten Bedingung wirksam.
Disable, Off | Der Überwachungseingang mit der angegebenen Kanalnummer wird deaktiviert, d.h. ab der Programmzeile mit der Anweisung "<SupervisionInput...>" wird die Überwachung der konfigurierten Bedingung nicht mehr durchgeführt.

Programmatische Steuerung der Überwachungseingänge

<SupervisionInput Channel=1 Enable>

Sobald die Anweisung erreicht wird, wird die Überwachung für Kanal 1 der Überwachungseingänge gemäß der vorhandenen Konfiguration für diesen Überwachungseingang aktiviert. Anstelle der Anweisung "Enable" kann auch das Kommando "On" verwendet werden.

<SupervisionInput Channel=1 Disable>

Diese Anweisung bewirkt, daß die Überwachung für Kanal 1 der Überwachungseingänge deaktiviert wird. Anstelle der Anweisung "Disable" kann auch das Kommando "Off" verwendet werden.

Bedingtes Aktivieren/Deaktivieren der Überwachungseingänge bei einer CNC-Programmbearbeitung

Die Anweisung <SupervisionInput> kann wie eine normale Programmanweisung im Rahmen einer If- oder einer Switch-Konstruktion verwendet werden. Das bedeutet, daß die Aktivierung bzw. Deaktivierung der Überwachungseingänge abhängig von spezifischen Steuerungs- bzw. Maschinenzuständen ausgeführt werden kann.

If E1.4

<SupervisionInput Channel=1 On>

EndIf

Nach Erreichen des Anweisungsblocks wird Kanal 1 der Überwachungseingänge nur aktiviert, wenn der digitale Eingang E1.4 aktiv ist.

Hinweis:

Als Trennzeichnen zwischen Anweisung und Parameter können wahlweise die Zeichen '=', ':' oder ein Leerzeichen verwendet werden, ebenso ist Groß-/Kleinschreibung nicht vorgeschrieben. Es werden also gleichermaßen die folgenden Befehle akzeptiert:

<SupervisionInput Channel=1 Enable>

<SupervisionInput Channel:1 Disable>

<SupervisionInput Channel 2 DISABLE>

<SUPERVISIONINPUT CHANNEL=1 ON>

<SUPERVISIONINPUT channel:2 OFF>

Siehe auch: <Trace>, <Break>, <ProgHalt>, <ProgAbort>, Switch ... EndSwitch, If ... Else ... Endif


<Trace ...>

Marke für den (bedingten) Wechsel des Modus der Programmbearbeitung

Der Befehl <Trace> wird verwendet, um den Bearbeitungsablauf von ProNC bzw. Remote kontrolliert zu verlangsamen. Er dient dazu, während der Phase der CNC-Programmentwicklung neu programmierte Abläufe kontrolliert zu verlangsamen, so daß bei der Ausführung von neuen Programmabschnitten rechtzeitig eingegriffen werden kann. Auf diese Weise können kritische Abschnitte des CNC-Programms auf sichere Weise in Betrieb genommen werden.

Aktivieren der Programmablaufverzögerung

<Trace On>

Nach Erreichen dieser Anweisung wird der Dialog geöffnet, mit dessen Hilfe die Verzögerung der Programmbearbeitung gesteuert wird.

Der Dialog "Tracing"

Falls kein weiterer Parameter angegeben wurde, werden die zuletzt verwendeten Einstellungen für die Ablaufverzögerung wiederhergestellt.

Mit Hilfe des Parameters "Delay" kann die Wartezeit zwischen der Ausführung der Befehle gesteuert werden. Die Angabe der Wartezeit erfolgt in Millisekunden. Der entsprechende Trace-Befehl lautet

<Trace On Delay=1000>

Die Wartezeiten können sich sich im Bereich 1 ... 2000 ms bewegen.

Proportional zur festgelegten Wartezeit zwischen den Befehlen wird die Fahrgeschwindigkeit von Achsbewegungen verringert. Hier gilt folgender Zusammenhang: Der prozentuale Wert der angegebenen Verzögerungszeit, bezogen auf den Maximalwert der Verzögerungszeit (2000 ms), ist der Skalierungsfaktor für die momentane Sollgeschwindigkeit der Fahrbewegungen.

Wenn z.B. der aktuelle Sollwert der Fahrgeschwindigkeit 50 mm/s ist und der aktuell eingestellte Wert des Geschwindigkeits-Overrides 75% beträgt, dann ergibt sich eine momentane Soll-Fahrgeschwindigkeit von

50 mm/s * 75% = 37.5 mm/s

Der Befehl

<Trace On Delay=1500>

würde den Wert der Wartezeit zwischen den Einzelbefehlen auf 1500 ms setzen, der Skalierungsfaktor für die aktuelle Soll-Fahrgeschwindigkeit ware 25%. Die resultierende Soll-Fahrgeschwindigkeit wäre also

(50 mm/s * 75%) * 25% = 37.5 mm/s * 25% = 9.375 mm/s.

Deaktivieren der Programmablaufverzögerung

<Trace Off>

Die Ausführungsverzögerung wird deaktiviert, der Steuerdialog für die Verzögerung der Programmbearbeitung wird geschlossen.

Bedingter Wechsel des Modus der CNC-Programmbearbeitung

Die Trace-Anweisung kann wie eine normale Programmanweisung im Rahmen einer If- oder einer Switch-Konstruktion verwendet werden. Das bedeutet, daß die Aktivierung bzw. Deaktivierung der Verzögerung der Bearbeitung des CNC-Programms abhängig von spezifischen Steuerungs- bzw. Maschinenzuständen unterbrochen werden kann.

If E1.4

<Trace On Delay=500>

EndIf

Nach Erreichen des Anweisungsblocks wird die Programmablaufverzögerung nur aktiviert, wenn Eingang E1.4 aktiv ist.

Hinweis:

Als Trennzeichnen zwischen Anweisung und Parameter können wahlweise die Zeichen '=', ':' oder ein Leerzeichen verwendet werden, ebenso ist Groß-/Kleinschreibung nicht vorgeschrieben. Es werden also gleichermaßen die folgenden Befehle akzeptiert:

<Trace On>

<Trace On Delay=1000>

<Trace On Delay:1000>

<Trace On Delay 250>

<TRACE ON DELAY=1200>

<TRACE on delay:150>

<Trace OFF>

Beispiel:

; Aktivieren der Verzögerung der CNC-Programmbearbeitung,

; verwenden der zuletzt eingestellten Parameter

<Trace ON>

; Deaktivieren der Verzögerung der CNC-Programmbearbeitung

<Trace OFF>

; Unterbrechen der CNC-Programmbearbeitung und die

; Wartezeit auf 1 Sekunde setzen

<Trace On Delay=1000>

Siehe auch: <Break>, <ProgAbort>, Switch ... EndSwitch, If ... Else ... Endif


A

Adressbuchstabe der Achse A

Adressbuchstabe der Achse A in der ersten Motion Control.

Siehe Adressbuchstaben


A1

Adressbuchstabe der Achse A

Adressbuchstabe der Achse A in der ersten Motion Control.

Siehe Adressbuchstaben


A2

Adressbuchstabe der Achse A

Adressbuchstabe der Achse A in der zweiten Motion Control.

Siehe Adressbuchstaben


Abort

Beenden des Hauptprogramms nach Bedienerquittung

Beendet die Ausgabe des laufenden Programms nach einer Bedienerquittung. Es besteht nicht die Möglichkeit, das Programm fortzusetzen.

Beispiel:

; Abbruch bei aktivem Bit 5 des Eingangs 1

IF GETBIT E1.5

ABORT

ENDIF

Siehe auch: ProgBegin, ProgEnd, Quit


AbortScript

AbortScript Im|Rm

Vorzeitiges Beenden eines laufenden Scripts

Diese Anweisung dient zum vorzeitigen Beenden eines Scripts durch das Hauptprogramm, aus dem heraus es mit dem Befehl "StartScript" gestartet wurde.

Hinweis: Die Befehle für den Zugriff auf ein laufendes Script (GetScriptStatus, GetScriptExitCode, AbortScript) können nur dann für die Ablaufsteuerung eines Scripts verwendet werden, wenn das Script in der Betriebsart "Nichtmodal" (durch Angabe des Parameters NONMODAL bei Aufruf von StartScript) gestartet wurde. Wenn diese Befehle auf ein im modalen Betrieb laufendes Script angewendet werden, wird die Bearbeitung im Hauptprogramm bei Aufruf eines dieser Befehle solange blockiert, bis das modale Script beendet ist.

Verwendete Parameter:

Im, Rm

Eine Integer- oder Real-Variable mit der Prozess-ID eines gestarteten Scripts.

Beispiel:

(1)

;Ausfuehrung eines Scripts in der Betriebsart "Nichtmodal"

;mit anschliessender Ueberwachung einer externen Abbruchbedingung

;Uebertragen des Scriptnamens in eine String-Variable

Str1="C:\CNCWorkbench\Script\HandlingAchseAnPosition02.NCP"

;Pruefen ob die Datei existiert

I1=FileExists Str1

;Wenn das der Fall ist: Script starten

;Die beiden Optionen AUTOSTART und AUTOCLOSE muessen fuer

;die automatische Ausfuehrung des Scripts innnerhalb

;eines Bearbeitungsprogramms immer aktiviert sein

If(I1==1)

I1=StartScript Str1 AUTOSTART AUTOCLOSE NONMODAL

;Warten auf das Beenden interner Ablaeufe in der Anwendung:

;Einfuegen des nachfolgenden Befehls: Delay 500

;nach der kurzen Wartezeit wird der Befehl fuer die Abfrage

;des aktuellen Scriptstatus aufgerufen.

Delay 500

;Jetzt zyklisches Ueberpruefen der externen

;Abbruchbedingung und des Scriptstatus:

;

Do

;Abbruch wenn Eingang E2.8 aktiv ist

If(E2.8==1)

I2=AbortScript I1

EndIf

;Abbruch der Schleife wenn das Script nicht mehr aktiv ist

I301=GetScriptStatus I1

EndDo(I301==0)

EndIf

(2)

;Falls im Bearbeitungsablauf nach dem Abbruch eines Scripts

;sofort danach ein weiteres Script gestartet werden könnte,

;empfiehlt es sich, nach Aufruf des Befehls AbortScript in

;einer Warteschleife auf das tatsaechliche Ende der

;Scriptbearbeitung zu warten:

Str1="C:\CNCWorkbench\Script\Script01.NCP"

Str2="C:\CNCWorkbench\Script\Script02.NCP"

;Start des ersten Scripts

I1=FileExists Str1

If(I1==1)

I1=StartScript Str1 AUTOSTART AUTOCLOSE NONMODAL

Delay 500

EndIf

;Ausfuehren einer beliebigen Aktion, dann Abbruch

;HINWEIS: Diese Methode funktioniert nur wenn

;das Script in der Betriebsart "Nichtmodal"

;gestartet wird

Delay 2000

I2=AbortScript I1

;jetzt warten auf tatsaechliches Ende bevor das

;naechste Script gestartet wird

Do

I301=GetScriptStatus I1

EndDo(I301==0)

;Starten des naechsten Scripts erst wenn die bisherige

;Scriptbearbeitung ueber den Status meldet, dass sie

;vollstaendig beendet ist

I1=FileExists Str2

If(I1==1)

I1=StartScript Str2 AUTOSTART AUTOCLOSE NONMODAL

Delay 500

EndIf

Siehe auch: StartScript, GetScriptExitCode, GetScriptStatus


Acce

Acce ax acc

Einstellen des Beschleunigungsverhaltens einer Achse

Der Befehl Acce wird verwendet, um während der Laufzeit eines NC-Programmmes die Achsbeschleunigungswerte (Beschleunigung = Änderung der Geschwindigkeit pro Zeiteinheit) zu verändern. Dies ist z.B. erforderlich, wenn auf wechselnde Lastverhältnisse reagiert werden muß. Soll eine Achse eine große Masse transportieren, so ist eine geringere maximale Achsbeschleunigung möglich als beim Transport einer kleinen Masse. Durch sinnvolle Anpassung der Achsbeschleunigungen kann z.B. die Dauer eines Bearbeitungszyklus möglichst gering gehalten werden.

Parameter des Befehls:

ax

Angabe der Achse, für welche die Beschleunigung eingestellt werden soll. Zulässige Angabe sind X, Y, Z, A, B, C, U, V, W. Weiterhin können die Achsbezeichner für Handlingachse verwendet werden: Ax1, Ax2, Ax3, ..., Ax6.

Einschränkung: Die Achsbezogenheit ist nur bei einigen Steuerungstypen gegeben, bei der CAN-Steuerung wirkt der Befehl auf alle Achsen.

acc

Der neue Wert für die Beschleunigung. Die Angabe der Beschleunigung erfolgt in mm/s².

Beispiel:

(1)

;Setzen der Achsbeschleunigung für

;Achse X auf 30 mm/s²

Acce X 30

Siehe auch: Acce.Axn, GetAcce, SetAcce


Acce.Axn

Rn=Acce.Axn

Abfragen der aktuell eingestellten Achsbeschleunigung einer Handlingachse

Dieses Kommando dient zum Abfragen der aktuell eingestellten Beschleunigung einer Handlingachse. Der ermittelte Wert wird in mm/s² zurückgeliefert.

Parameter des Befehls:

Rn | Eine R-Variable mit dem Index n, in welche der zurückgelieferte Beschleunigungswert übertragen wird.
n | Der Index der Handlingachse, deren aktuell eingestellte Beschleunigung ermittelt werden soll. Gültige Werte für den Index sind 1, 2, 3, 4, 5, und 6.

Beispiel:

;Abfrage der aktuellen Beschleunigung

;von Handlingachse 2

R1=Acce.Ax2

;Reduzieren auf die 0.7-fache Beschleunigung

R1=R1*0.7

;Setzen des neuen Beschleunigungswertes

Acce Ax2 = 2000

Siehe auch: Acce, GetAcce, SetAcce


ACOS

Operator für die trigonometrische Funktion ArcusCosinus

Operator für die zyklometrische Funktion ARCUSCOSINUS. Die ACOS-Funktion ist die mathematische Umkehrung der COSINUS-Funktion. Als Argument wird ein einheitenloser Wert w erwartet.

Weil die zugrundeliegende Cosinusfunktion eine periodische Funktionen ist, wird bei ihrer Umkehrung der ursprüngliche Definitionsbereich des Cosinus auf das Intervall [0;Pi] beschränkt.

Beispiel:

; Berechnung des Winkels zwischen Ankathete und Hypothenuse

R11=ACOS((R25-R24)/(R32-R31))

Umrechnung von Radiant in Grad:

winkel_in_rad * 180

winkel_in_grad = ——————————————————————

Pi

Umrechnung von Grad in Radiant :

winkel_in_grad * Pi

winkel_in_rad = ————————————————————————

180

Siehe auch: ASIN, ATAN, ATAN2


Activate VPO

Activate VPO Axn In

Aktivieren der Betriebsart VPO einer Handlingachse

Show/Hide Hidden Text

Die Betriebsart VPO (Velocity Proportional Operation) einer Handlingachse ist eine spezielle Funktion, welche bewirkt, daß sich die aktuelle Geschwindigkeit einer Handlingachse nach der interpolierten Geschwindigkeit der drei kartesischen Achsen X, Y und Z richtet. Je nach aktuellem Wert der führenden Geschwindigkeit Vxyz wird versucht, die aktuelle Geschwindigkeit der Handlingachse innerhalb eines gewissen Look-Ahead-Zeitraums an die Geschwindigkeitsänderungen der führenden Achsen im kartesischen System XYZ anzupassen.

Typische Anwendung: Nachführen einer Dispenser-Achse

Voraussetzungen

·Isel Can-CNC Version 01.60.00.90 auf allen Endstufen und Can-Treiber

·ProNC in der Version: ab 1.46.8.1

·ProNC-Compiler-Version: ab 1.46.8.2

Das Kommando "AxStart VPO" wird für das Aktivieren der Betriebsart VPO für Handlingachsen benutzt.

Parameter des Befehls:

Axn

Angabe der Handlingachse, für welche die Betriebsart VPO aktiviert werden soll. n ist der Index der Handlingachse, gültige Werte sind 1, 2, 3, ... 6.

Ix

Eine I-Variable (Integer-Variable) mit dem Index x, welche die erste Variable eines zur Datenübergabe verwendeten Variablenfeldes (bestehend aus mehreren I-Variablen mit aufeinanderfolgenden Indizes) darstellt. Das Feld besteht aus insgesamt 9 Werten, welche durch die I-Variablen mit den aufeinanderfolgenden Indizes repräsentiert werden.

Parameter

Ix | VpoActive | Zeigt den aktuellen Aktivierungszustand der Betriebsart VPO an: 0: VPO-Betriebmodus nicht aktiv 1: VPO-Betriebmodus aktiv
I(x+1) | WorkMode | Wenn VpoActive == 0 -> bWorkMode = 0 Wenn VpoActive == 1 -> bWorkMode == VPO_WORK_MODE_1 oder bWorkMode == VPO_WORK_MODE_2
I(x+2) | MaxLookAheadTimeUpperLimit | Systemintern wird die maximal vorrausschauende Zeit sowohl nach oben als auch nach unten begrenzt. Dieser Wert ist die obere Grenze [micro_sec] fur die maximal vorrausschauende Zeit. Dieser Wert wird bei der Initialisierung der Handlingachse durch den Steuerungskern ermittelt.
I(x+3) | MaxLookAheadTimeLowerLimit | Systemintern wird die maximal vorrausschauende Zeit sowohl nach oben als auch nach unten begrenzt. Dieser Wert ist die untere Grenze [micro_sec] fur die maximal vorrausschauende Zeit. Dieser Wert wird bei der Initialisierung der Handlingachse durch den Steuerungskern ermittelt.
I(x+4) | MaxLookAheadTime | Maximal vorausschauende Zeit [micro_sec]. Dieser Wert wird vom Anwender beim Aktivieren des VPO-Betriebmodus gesetzt und liegt im Bereich MaxLookAheadTimeLowerLimit ...MaxLookAheadTimeUpperLimit
I(x+5) | WorkingEnable | Aktivieren/Deaktivieren der Betriebsart VPO 0: Das eingebundene TxPDO ist gesperrt und wird nicht gesendet 1: Das eingebundene TxPDO ist freigelassen und wird regelmäßig gesendet
I(x+6) | LookAheadTime | Vorausschauende Zeit [µs]. Die Sollgeschwindigkeit zu dieser Zeit wird umgerechnet und auf den Bus geschickt.
I(x+7) | Velocity | Soll-Geschwindigkeit
I(x+8) | Acceleration | Soll-Beschleunigung

Beschreibung der Funktionsweise

Beim Aufruf der Funktion AxStart wird die Handlingsachse mit der zuvor übergebenen Beschleunigung auf die übergebene Geschwindigkeit beschleunigt. Mit Hilfe der Startgeschwindigkeit, der Sollgeschwindigkeit und der Beschleunigung kann man berechnen, wie groß die Zeit und die Distanz zwischen Startgeschwindigkeit und Sollgeschwindigkeit sind. Sobald die Achse die Sollgeschwindigkeit erreicht hat, folgt die Handlingsachse proportional der Bahngeschwindigkeit. Diese kann bis zur MaxLookAheadTime vorausberechnet werden. Diese Funktionalität kann speziell beim Dosieren abhängig von Viskosität des Materials sinnvoll sein.

Beim Aufruf der Funktion AxStop wird die Handlingsachse mit der zuletzt übergebenen Beschleunigung auf die Startgeschwindigkeit der Handlingsachse abgebremst. Das heißt, wenn die Handlingsachse sich mit einer Geschwindigkeit von 5°/s dreht und anschließend der VPO-Modus aktiviert und gestartet wird und im Anschluß der VPO-Modus gestoppt wird, dann nimmt die Handlingsachse wieder die Ausgangsgeschwindigkeit von 5°/s ein.

Gleichmäßig beschleunigte Bewegung – Geschwindigkeits-Zeit-Gesetz:

Sollgeschwindigkeit = Beschleunigung * ZeitStartSoll + Startgeschwindigkeit
ZeitStartSoll = (Sollgeschwindigkeit – Startgeschwindigkeit) / Beschleunigung

Gleichmäßig beschleunigte Bewegung - Weg-Zeit-Gesetz:

WegStartSoll = Beschleunigung / 2 * ZeitStartSoll^2 + Startgeschwindigkeit * ZeitStartSoll

Die Funktionen können in folgender Reihenfolge aufgerufen werden (EBNF):

GetParam

Activate

{

[Bewegungsdaten]

SetParam

[Bewegungsdaten]

AxStart

[Bewegungsdaten]

[SetParam]

AxStop

[Bewegungsdaten]

}

Deactivate

Zeichenerklärung:

Verwendung | Zeichen
Option | [ … ]
Optionale Wiederholung | { … }

Beispiel:

; Bedeutung der I-Variablen I11 bis I19

I11 VPO Aktivierungsstand

I12 VPO WorkMode

I13 MaxLookAheadTimeUpperLimit

I14 MaxLookAheadTimeLowerLimit

I15 MaxLookAheadTime

I16 WorkingEnable

I17 LookAheadTime

I18 Velocity

I19 Acceleration

;Aktuelle Werte abholen

GetParam VPO I11

I12=2 ;Soll auf 2 gesetzt werden

;LookAheadTime auf Mittelwert setzen

I17=(I13-I14)/2

SetParam VPO Ax1 I11 ;Erste I-Variable des Feldes angeben

Siehe auch: Deactivate VPO, AxStart VPO, AxStop VPO, SetParam VPO, GetParam VPO


AND

Operator für die logische UND-Verknüpfung

Logische UND-Verknüpfung mehrerer Bedingungen. Der Operator AND kann in Zusammenhang mit der Prüfung von Bedingungen für Schleifen, Verzweigungen u. ä. eingesetzt werden.

Beispiel 1:

; Nur wenn R3 zwischen 5 und 10 liegt, wird in negativer Richtung gefahren

IF (R3>5) AND (R3<10)

MOVEREL X-10.0

ELSE

MOVEREL X10.0

ENDIF

Beispiel 2:

; Wenn Bit 2 oder Bit 3 von Eingang 2 aktiv ist, wird in negativer Richtung gefahren

IF E2.2 OR E2.3

MOVEREL X-10.0

ELSE

MOVEREL X10.0

ENDIF


ASIN

Operator für die trigonometrische Funktion ArcusSinus

Operator für die zyklometrische Funktion ARCUSSINUS. Die ASIN-Funktion ist die mathematische Umkehrung der SINUS-Funktion. Als Argument wird ein einheitenloser Wert w erwartet.

Weil die zugrundeliegende Sinusfunktion eine periodische Funktionen ist, wird bei ihrer Umkehrung der ursprüngliche Definitionsbereich des Sinus auf das Intervall [-Pi/2;Pi/2] beschränkt.

Beispiel:

; Berechnung des Winkels zwischen Gegenkathete und Hypothenuse

R11=ASIN((R22-R21)/(R32-R31))

Umrechnung von Radiant in Grad:

winkel_in_rad * 180

winkel_in_grad = ———————————————————————

Pi

Umrechnung von Grad in Radiant :

winkel_in_grad * Pi

winkel_in_rad = ———————————————————————

180

Siehe auch: ACOS, ATAN, ATAN2


ATAN

ATAN w

Operator für die trigonometrische Funktion ArcusTangens

Operator für die zyklometrische Funktion ARCUSTANGENS. Die ATAN-Funktion ist die mathematische Umkehrung der TANGENS-Funktion. Als Argument wird ein einheitenloser Wert w erwartet.

Weil die Tangens-Funktion eine periodische Funktionen ist, ist bei ihrer Umkehrung der ursprüngliche Definitionsbereich des Tangens auf das Intervall [-Pi/2;Pi/2] beschränkt, d.h. als Ergebnis der Funktion wird ein Wert geliefert, welcher im erwähnten Intervall liegt.

Verlauf der Funktion atan(x)

Beispiel:

; Berechnung des Winkels zwischen Gegenkathete und Ankathete

R11=ATAN((R25-R24)/(R35-R34))

Umrechnung von Radiant in Grad:

winkel_in_rad * 180

winkel_in_grad = ———————————————————————

Pi

Umrechnung von Grad in Radiant :

winkel_in_grad * Pi

winkel_in_rad = ——————————————————————

180

Siehe auch: ASIN, ACOS, ATAN2


ATAN2

Operator für die trigonometrische Funktion ArcusTangens mit 2 Argumenten

Bei der Umrechnung von kartesischen Koordinaten in Polarkoordinaten wird die Funktion ATAN2 zur Ermittlung des Winkels verwendet.

Bei der einfachen Arcustangens-Funktion besteht nicht die Möglichkeit, den Winkel im korrekten Quadranten zu ermitteln, da der Definitionsbereich der zugrundeliegenden Tangens-Funktion TAN auf das Intervall [ -¶/2 ; ¶/2 ] begrenzt ist. Aus diesem Grund gibt es in vielen Programmiersprachen eine Funktion mit 2 Argumenten. Sie wird üblicherweise atan2(y,x) genannt. Die übergebenen Argumente beschreiben einen Punkt P(x,y) im Abstand r (Radius) vom Mittelpunkt eines Kreises.

Wertebereich:

X | Y | atan2[y,x] | Winkel [°]
1 | 0 | 0 | 0
0.707107 | 0.707107 | 0.785398 | 45
0 | 1 | 1.570796 (Pi/2) | 90
-0.707107 | 0.707107 | 2.356194 | 135
-1 | 0 | 3.1415926 (Pi) | 180
-0.707107 | -0.707107 | -2.356194 | 225
0 | -1 | -1.570796 (-Pi/2) | 270
0.707107 | -0.707107 | -0.785398 | 315

Aufgrund des Bereichs der zurückgelieferten Werte (falls sich der Punkt P im 3. oder 4. Quadranten befindet) ist zur eindeutigen Ermittlung eines Winkels Phi zwischen dem Punkt P(x,y) und der X-Achse folgende Berechnung erforderlich:

[Ergebnis atan>=0: Ergebnis

Winkel[rad]=|

[Ergebnis atan<0: Ergebnis + 2*Pi

Beispiel:

Der nachstehende beispielhafte PAL-Code liefert den Winkel zwischen der X-Achse und der Strecke Kreismittelpunkt-Punkt auf dem Kreis im Bogenmaß mit einem Wertebereich von [0;2*Pi]:

R_Winkel_rad=atan2[R_AktPos_Y R_AktPos_X] ;Ergebnis in R_Winkel_rad (Bogenmass)

If(R_Winkel_rad<0) ;Wenn das Ergebnis < 0 dann korrigieren

R_Winkel_rad=R_Winkel_rad + 2*PI

EndIf

Zu beachten ist hier ausserdem, daß für ein korrektes Ergebnis alle Koordinaten von Kreismittelpunkt und aktueller Position auf der Kreisbahn auf den Einheitskreis normiert werden müssen.

Umrechnung von Radiant in Grad:

winkel_in_rad * 180

winkel_in_grad = ———————————————————————

Pi

Umrechnung von Grad in Radiant :

winkel_in_grad * Pi

winkel_in_rad = ——————————————————————

180

Siehe auch: ASIN, ACOS, ATAN


AtoF

AtoF([string][str_var])

Eine ASCII-Zeichenkette in einen Gleitkommawert konvertieren

Mit Hilfe dieser Anweisung kann der Inhalt einer Zeichenkettenvariablen bzw. eine Zeichenkette in einen Gleitkommawert konvertiert werden. Als Dezimaltrennzeichen wird der Dezimalpunkt '.' verwendet.

Die übergebene Zeichenkette wird als Abfolge von Zeichen interpretiert, die einen Gleitkommawert darstellen. Die Auswertung wird an der ersten Stelle der Zeichenkette beendet, die nicht mehr als Teil eines Gleitkommawertes interpretiert werden kann.

Verwendete Parameter:

string Eine Zeichenkette in der Form "123.456".

str_var Eine Zeichenkettenvariable, welche die zu konvertierende Zeichenkette enthält. Es muß die gleiche Form wie bei der Angabe einer Zeichenkette vorliegen.

Beispiel:

(1)

;das Argument der Funktion ist ein String_Ausdruck,

;konvertiert wird die ASCII-Zeichenkette "1122.3344"

R1=0

R1=AtoF("1122" + ".3344")

(2)

;die ASCII-Konvertierungsfuntionen können auch innerhalb

;eines arithmetischen Ausdruckes wie ein Operand

;benutzt werden:

Str1="30.0"

Str2="10"

Str3="20"

R2=AtoF("10.0") + AtoF("20.0") + AtoF(Str1) - AtoF(Str2) - AtoF(Str3)

(3)

; eine leere Zeichenkette wird als 0.0 interpretiert

Str1=""

R3=100.0

R3=AtoF(Str1)

If R3==0

MessageBox Info "OK..."

EndIf

Siehe auch: AtoL


AtoL

AtoL([string][str_var])

Eine ASCII-Zeichenkette in einen ganzzahligen (Integer-) Wert konvertieren

Mit Hilfe dieser Anweisung kann der Inhalt einer Zeichenkettenvariablen bzw. eine Zeichenkette in einen Ganzzahlwert (Integer-Wert) konvertiert werden.

Die übergebene Zeichenkette wird als Abfolge von Zeichen interpretiert, die einen ganzzahligen (Integer-)Wert darstellen. Die Auswertung wird an der ersten Stelle der Zeichenkette beendet, die nicht mehr als Teil eines Ganzzahlwertes interpretiert werden kann.

Verwendete Parameter:

string Eine Zeichenkette in der Form "123".

str_var Eine Zeichenkettenvariable, welche die zu konvertierende Zeichenkette enthält. Es muß die gleiche Form wie bei der Angabe einer Zeichenkette vorliegen.

Beispiel:

(1)

;das Argument der Funktion ist ein String_Ausdruck,

;konvertiert wird die ASCII-Zeichenkette "1234"

I1=0

I1=AtoL("12" + "34")

(2)

; wird als Argument eine Zeichenkette mit

;Nachkommastellen angegeben, so wird nur der

;ganzzahlige Anteil berücksichtigt

;konvertiert wird die ASCII-Zeichenkette "1234"

I2=AtoL("1234.5678")

(3)

;die ASCII-Konvertierungsfuntionen können auch innerhalb

;eines arithmetischen Ausdruckes wie ein Operand

;benutzt werden:

Str1="30.0"

Str2="10"

Str3="20"

I3=AtoL("10.3") + AtoL("20") + AtoL(Str1) - AtoL(Str2) - AtoL(Str3)

;hier lautet das Ergebnis:

I3=10 + 20 + 30 - 10 - 20

I3=30

(4)

; eine leere Zeichenkette wird als 0 interpretiert

Str1=""

I4=500

I4=AtoL(Str1)

If I4==0

MessageBox Info "OK..."

EndIf

Siehe auch: AtoF


Axn

Ax1, Ax2, Ax3, Ax4, Ax5, Ax6

Bezeichner für Handlingachsen

In ProNC können ab Version 1.45.0.2 die sechs Handlingachsen Ax1 bis Ax6 programmiert werden. Die Bezeichner für die Handlingachsen setzen sich aus der Bezeichnung Ax und der nachfolgenden Achsennummer zusammen.

Gültige Achsbezeichner für Handlingachsen

Ax1, Ax2, Ax3, Ax4, Ax5, Ax6

Referenzfahrt einer Handlingachse

Für die Ausführung der Referenzfahrt einer Handlingachse ist es erforderlich, den Befehl Ref (Referenzfahrt) in Verbindung mit dem Bezeichner einer Handlingachse zu verwenden.

Beispiele:

;Ausfuehren einer Referenzfahrt der Handlingachse 1

Ref Ax1

;Ausfuehren der Referenzfahrt fuer mehrere Handlingachsen

Ref Ax1 Ax2 Ax4 Ax5

Eine Handlingachse kann in zwei Betriebsarten (Operation Mode) programmiert werden:

- Betriebsart Positions-Modus (Position Mode)

- Betriebsart Geschwindigkeits-Modus (Velocity Mode)

Starten einer Handlingachse im Positions-Modus (Position Mode)

; Start mit Bewegung zu absoluter Zielposition

AxnPA = AbsPos

; Start mit relativem Verfahrweg, bezogen auf die aktuelle Position

AxnPI = RelPos

Hinweis: Der Start einer Handlingachse im Positions-Modus kann auch als zusätzliche Anweisung in jedem MoveAbs-Befehl bzw. MoveRel-Befehl erfolgen.

Beispiele:

;Starte die Handlingachse 1 (z.B. Linearachse) im Position Mode mit der

;aktuellen Geschwindigkeit (Vorschub) in mm/sec

;die Zielposition ist 10 mm (absolute Positionierung)

Ax1PA=10

;Starte die Handlingachse 2 (z.B. Rundachse) im Position Mode mit der

;aktuellen Geschwindigkeit (Vorschub) in grd/sec

;die Zielposition ist 180 grd (absolute Positionierung)

;Die Geschwindigkeit betraegt 30°/sec.

FAx2=30

Ax2PA=180

;Starte die Handlingachse 1 (z.B. Linearachse) im Position Mode mit der

;aktuellen Geschwindigkeit (Vorschub) in mm/sec

;Zielposition := aktuelle Startposition + 20 mm (inkrementelle Positionierung)

Ax1PI=20

;Starte die Handlingachse 2 (z.B. Rundachse) im Position Mode mit der

;aktuellen Geschwindigkeit (Vorschub) in grd/sec

;Zielposition := aktuelle Startposition + 20 grd (inkrementelle Positionierung)

Ax2PI=20

;Starte die Handlingachse 1 im Position Mode mit der

;aktuellen Geschwindigkeit (Vorschub) in mm/sec

;Zielposition := aktuelle Startposition + 20 mm (inkrementelle Positionierung)

;Der Start der Bewegung erfolgt zusammen mit der linearen Absolutbewegung im Achssystem 1

MoveAbs X25.5 Y-39.0 Z-55.2 Ax1PI=20

Starten einer Handlingachse im Geschwindigkeits-Modus (Velocity Mode)

Axn V = absoluter Vorschub

absoluter Vorschub in mm/sec, wenn die Handlingachse eine Linearachse ist.

absoluter Vorschub in grd/sec, wenn die Handlingachse eine Rundachse ist.

Mit einem negativen Vorzeichen (zwischen "=" und "absoluter Vorschub" wird die Drehrichtung der Handlingachse definiert.

Beispiele:

;Starte die Handlingachse 1 (Linearachse) im Velocity Mode,

;der Vorschub beträgt 10 mm/sec

Ax1V=10

;Starte die Handlingachse 2 (Rundachse) im Velocity Mode,

;der Vorschub beträgt 20 grd/sec

Ax2V=20

;Starte die Handlingachse 2 (Rundachse) im Velocity Mode, der Vorschub

; beträgt 30 grd/sec (negative Drehrichtung der Rundachse)

Ax2V=-30

;Starte die Handlingachse 2 (Rundachse) im Velocity Mode,

;der Vorschub beträgt 20 grd/sec

;Der Start der Bewegung erfolgt zusammen mit der linearen Absolutbewegung im Achssystem 1

MoveAbs X15.4 Y-37.0 Z-10.0 Ax2V=20

Siehe auch: Handlingachsen, AxnPA, AxnPI, FAx, AxnV, AxStop, AxStart, AxAbort, WaitMove, AxnInMotion, Pos.Axn, SetOpMode, AxOverride, AxReset


AxAbort

AxAbort Ax1 Ax2 ... Axn

Abbruch der Verfahrbewegung einer Handlingachse

Dieser Befehl bricht eine aktive Verfahrbewegung der Handlingachse mit dem Index n ab. Der Befehl kann in Verbindung mit dem Statusflag AxnInMotion zur Realisierung komplexer Bewegungen verwendet werden.

Verwendete Parameter

Ax1, Ax2, ... Ax6

Bezeichner der Handlingachse, gültige Werte sind Ax1, Ax2, Ax3, Ax4, Ax5, Ax6

Beispiel:

;Die Bewegung der Handlingachse wird gestartet

Ax1PA=150.0 FAx1=12.5

;Solange die Bewegung aktiv ist, wird

;geprueft ob Eingang E1.1 aktiv wird,

;wenn Ja wird die Bewegung abgebrochen

While Ax1InMotion

If GetPort E1 & 0x01

AxAbort Ax1

EndIf

EndWhile

;Starten zweier Handlingachsen

Ax1PA=150.0 FAx1=12.5

Ax3PA=100.0 FAx3=25.0

...

;Die Bewegungen abbrechen

AxAbort Ax1 Ax3

Siehe auch: Handlingachsen, AxnPA, AxnPI, FAx, AxnV, AxStop, AxStart, WaitMove, AxnInMotion, Pos.Axn, SetOpMode, AxOverride, AxReset


AxnInMotion

Statusflag "Bewegung bei einer Handlingachse aktiv"

Statusflag zur Prüfung, ob eine Bewegung bei der Handlingachse mit dem Index n noch aktiv ist oder nicht. Diese Konstruktion kann verwendet werden, um im Programmablauf eine Synchronisation auf das Bewegungsende einer Handlingachse zu erreichen.

Der Ausdruck stellt eine einfache Bedingung dar (Wahrheitswert TRUE oder FALSE) und kann in allen While- oder DO-Schleifen bzw. in If-Konstruktionen verwendet werden.

Verwendete Parameter

n (bei AxnInMotion)

Index der Handlingachse, gültige Werte sind 1...6

Beispiel:

;Start der Bewegung einer Handlingachse

Ax1PA=50.0 FAx1=6.5

;Weitere Bewegungen werden parallel

;zur Bewegung der Handlingachse ausgeführt

MoveAbs X45.0 Y20.0

MoveAbs Z-10.0

;Warten bis die Handlingachse am Ziel ist

While Ax1InMotion

EndWhile

;Diese Bewegung darf erst ausgeführt werden,

;wenn auch die Handlingachse positioniert ist

MoveAbs Z-50 F2.5

;Warten bis zwei Handlingachsen am Ziel sind

While Ax1InMotion OR Ax2InMotion

EndWhile

Siehe auch: Handlingachsen, AxnPA, AxnPI, FAx, AxnV, AxStop, AxStart, AxAbort, WaitMove, Pos.Axn, SetOpMode


AxOverride

AxnOverride ovr

Programmatische Änderung des Geschwindigkeits-Overrides einer Handlingachse

Dieser Befehl ändert den Geschwindigkeitsoverride für die aktive Bewegung einer Handlingachse. Die Handlingachse muß sich in der Betriebsart "Positionsmodus" befinden.

Die Angabe des Override erfolgt in % (Prozent). Der aktuelle Override wird sofort auf den Wert ovr gesetzt, auch wenn momentan eine Bewegung aktiv ist.

Beispiel:

;Starten der Handlingachse 1 (Linearachse) im Position Mode

;mit der aktuellen Geschwindigkeit (Vorschub) in mm/sec

;die Zielposition ist 150 mm (absolute Positionierung)

Ax1PA=150

;Solange die Bewegung aktiv ist, wird geprueft

;ob Eingang E1.1 aktiv ist, wenn Ja wird

;der Geschwindigkeits-Override auf 50% gesetzt,

;sonst wird der Override auf 100% gesetzt

While Ax1InMotion

If E1.1 == 1

Ax1Override 50

Else

Ax1Override 100

EndIf

EndWhile

Siehe auch: Handlingachsen, AxnPA, AxnPI, FAx, AxnV, AxStop, AxStart, AxAbort, WaitMove, AxnInMotion, Pos.Axn, SetOpMode, AxReset


AxReset

AxReset Axn

Diskreter Reset einer Handlingachse

Diese Funktion dient dazu, die Reset-Funktion für die Handlingachsen aufzurufen. Als Parameter wird der Index der Handlingachse (Ax1...Ax6) übergeben.

Nach dem erfolgreichen Ausführen der Funktion Reset befindet sich die Handlingachse im Positionsmodus.

Beispiel:

AxReset Ax1 ; Reset Handlingachse 1, Default-Mode: POS

AxReset Ax2 ; Reset Handlingachse 2, Default-Mode: POS

SetOpMode V Ax2 ; Handlingachse 2 im Geschwindigkeitsmodus verwenden

Siehe auch: Handlingachsen, AxnPA, AxnPI, FAx, AxnV, AxStop, AxStart, AxAbort, WaitMove, AxnInMotion, Pos.Axn, SetOpMode, AxOverride


AxStart

AxStart Ax1 Ax2 ... Axn

Start der angehaltenen Verfahrbewegung einer Handlingachse

Dieser Befehl wird verwendet, um die mit dem Befehl AxStop angehaltene Verfahrbewegung einer Handlingachse weiterzuführen. Die Befehle AxStop und AxStart können zur Realisierung komplexer Bewegungen verwendet werden.

Verwendete Parameter

Ax1, Ax2, ... Ax6

Bezeichner der Handlingachse, gültige Werte sind Ax1, Ax2, Ax3, Ax4, Ax5, Ax6

Beispiel:

;Die Bewegung der Handlingachse wird gestartet

Ax1PA=150.0 FAx1=12.5

;Solange die Bewegung aktiv ist, wird

;geprueft ob Eingang E1.1 aktiv wird,

;wenn Ja wird die Bewegung angehalten,

;sobald E1.1 inaktiv ist wird die

;Bewegung weitergefuehrt

P21=P1 & 0x01 ;Initialisieren von P21

While Ax1InMotion ;Solange die Bewegung laeuft

P22=P1&0x01 ;Einlesen von E1.1

If(P22^P21) ;XOR: Ist erfuellt wenn P22!=P21

If P22&0x01 ;Der Eingang ist aktiv ("1")

AxStop Ax1 ;Anhalten der Bewegung

Else

AxStart Ax1 ;Weiterfuehren der Bewegung

EndIf

P21=P22 ;Merken, damit naechster Wechsel erkannt wird

EndIf

EndWhile

;Starten zweier Handlingachsen

Ax1PA=150.0 FAx1=12.5

Ax2PA=100.0 FAx2=25.0

...

;Die Bewegungen anhalten

AxStop Ax1 Ax2

...

;Nun die Bewegungen weiterfuehren

AxStart Ax1 Ax2

Siehe auch: Handlingachsen, AxnPA, AxnPI, FAx, AxnV, AxStop, AxAbort, WaitMove, AxnInMotion, Pos.Axn, SetOpMode, AxOverride, AxReset


AxStart VPO

AxStart VPO Axn

Starten der Betriebsart VPO einer Handlingachse

Show/Hide Hidden Text

Die Betriebsart VPO (Velocity Proportional Operation) einer Handlingachse ist eine spezielle Funktion, welche bewirkt, daß sich die aktuelle Geschwindigkeit einer Handlingachse nach der interpolierten Geschwindigkeit der drei kartesischen Achsen X, Y und Z richtet. Je nach aktuellem Wert der führenden Geschwindigkeit Vxyz wird versucht, die aktuelle Geschwindigkeit der Handlingachse innerhalb eines gewissen Look-Ahead-Zeitraums an die Geschwindigkeitsänderungen der führenden Achsen im kartesischen System XYZ anzupassen.

Typische Anwendung: Nachführen einer Dispenser-Achse

Voraussetzungen

·Isel Can-CNC Version 01.60.00.90 auf allen Endstufen und Can-Treiber

·ProNC in der Version: ab 1.46.8.1

·ProNC-Compiler-Version: ab 1.46.8.2

Das Kommando "AxStart VPO" wird für das Starten der Bewegung der Handlingachse in der Betriebsart VPO benutzt. Für die Bewegung werden die Parameter berücksichtigt, die mit der Funktion SetParam VPO festgelegt wurden.

Parameter des Befehls:

Axn

Angabe der Handlingachse, für welche die Betriebsart VPO gestartet werden soll. n ist der Index der Handlingachse, gültige Werte sind 1, 2, 3, ... 6.

Beschreibung der Funktionsweise

Beim Aufruf der Funktion AxStart wird die Handlingsachse mit der zuvor übergebenen Beschleunigung auf die übergebene Geschwindigkeit beschleunigt. Mit Hilfe der Startgeschwindigkeit, der Sollgeschwindigkeit und der Beschleunigung kann man berechnen, wie groß die Zeit und die Distanz zwischen Startgeschwindigkeit und Sollgeschwindigkeit sind. Sobald die Achse die Sollgeschwindigkeit erreicht hat, folgt die Handlingsachse proportional der Bahngeschwindigkeit. Diese kann bis zur MaxLookAheadTime vorausberechnet werden. Diese Funktionalität kann speziell beim Dosieren abhängig von Viskosität des Materials sinnvoll sein.

Beim Aufruf der Funktion AxStop wird die Handlingsachse mit der zuletzt übergebenen Beschleunigung auf die Startgeschwindigkeit der Handlingsachse abgebremst. Wenn sich die Handlingsachse momentan mit einer Geschwindigkeit von 5°/s dreht und anschließend der VPO-Modus aktiviert und gestartet wird, beschleunigt die Handlingachse auf eine höhere Drehgeschwindigkeit. Sobald der VPO-Modus gestoppt wird, nimmt die Handlingsachse wieder die Ausgangsgeschwindigkeit von 5°/s ein.

Gleichmäßig beschleunigte Bewegung – Geschwindigkeits-Zeit-Gesetz:

Sollgeschwindigkeit = Beschleunigung * ZeitStartSoll + Startgeschwindigkeit
ZeitStartSoll = (Sollgeschwindigkeit – Startgeschwindigkeit) / Beschleunigung

Gleichmäßig beschleunigte Bewegung - Weg-Zeit-Gesetz:

WegStartSoll = Beschleunigung / 2 * ZeitStartSoll^2 + Startgeschwindigkeit * ZeitStartSoll

Die Funktionen können in folgender Reihenfolge aufgerufen werden (EBNF):

GetParam

Activate

{

[Bewegungsdaten]

SetParam

[Bewegungsdaten]

AxStart

[Bewegungsdaten]

[SetParam]

AxStop

[Bewegungsdaten]

}

Deactivate

Zeichenerklärung:

Verwendung | Zeichen
Option | [ … ]
Optionale Wiederholung | { … }

Siehe auch: AxStart VPO, AxStop VPO, Activate VPO, Deactivate VPO, SetParam VPO, GetParam VPO


AxStop

AxStop Ax1 Ax2 ... Axn

Anhalten der Verfahrbewegung einer Handlingachse

Dieser Befehl wird verwendet, um die laufende Verfahrbewegung einer Handlingachse mit dem Index n anzuhalten, aber nicht zu beenden. Das Bewegungssegment ist weiterhin aktiv, obwohl die Achse keine physikalische Bewegung ausführt. Um die Bewegung weiterführen, kann der Befehl AxStart verwendet werden. Die Befehle AxStop und AxStart können zur Realisierung komplexer Bewegungen verwendet werden.

Verwendete Parameter

Ax1, Ax2, ... Ax6

Bezeichner der Handlingachse, gültige Werte sind Ax1, Ax2, Ax3, Ax4, Ax5, Ax6

Beispiel:

;Die Bewegung der Handlingachse wird gestartet

Ax1PA=150.0 FAx1=12.5

;Solange die Bewegung aktiv ist, wird

;geprueft ob Eingang E1.1 aktiv wird,

;wenn Ja wird die Bewegung angehalten,

;sobald E1.1 inaktiv ist wird die

;Bewegung weitergefuehrt

P21=P1 & 0x01 ;Initialisieren von P21

While Ax1InMotion ;Solange die Bewegung laeuft

P22=P1&0x01 ;Einlesen von E1.1

If(P22^P21) ;XOR: Ist erfuellt wenn P22!=P21

If P22&0x01 ;Der Eingang ist aktiv ("1")

AxStop Ax1 ;Anhalten der Bewegung

Else

AxStart Ax1 ;Weiterfuehren der Bewegung

EndIf

P21=P22 ;Merken, damit naechster Wechsel erkannt wird

EndIf

EndWhile

;Starten zweier Handlingachsen

Ax1PA=150.0 FAx1=12.5

Ax2PA=100.0 FAx2=25.0

...

;Die Bewegungen anhalten

AxStop Ax1 Ax2

...

;Nun die Bewegungen weiterfuehren

AxStart Ax1 Ax2

Siehe auch: Handlingachsen, AxnPA, AxnPI, FAx, AxnV, AxStart, AxAbort, WaitMove, AxnInMotion, Pos.Axn, SetOpMode, AxOverride, AxReset


AxStop VPO

AxStop VPO Axn

Stoppen der Betriebsart VPO einer Handlingachse

Show/Hide Hidden Text

Die Betriebsart VPO (Velocity Proportional Operation) einer Handlingachse ist eine spezielle Funktion, welche bewirkt, daß sich die aktuelle Geschwindigkeit einer Handlingachse nach der interpolierten Geschwindigkeit der drei kartesischen Achsen X, Y und Z richtet. Je nach aktuellem Wert der führenden Geschwindigkeit Vxyz wird versucht, die aktuelle Geschwindigkeit der Handlingachse innerhalb eines gewissen Look-Ahead-Zeitraums an die Geschwindigkeitsänderungen der führenden Achsen im kartesischen System XYZ anzupassen.

Typische Anwendung: Nachführen einer Dispenser-Achse

Voraussetzungen

·Isel Can-CNC Version 01.60.00.90 auf allen Endstufen und Can-Treiber

·ProNC in der Version: ab 1.46.8.1

·ProNC-Compiler-Version: ab 1.46.8.2

Das Kommando "AxStart VPO" wird für das Stoppen der Betriebsart VPO für Handlingachsen benutzt.

Parameter des Befehls:

Axn

Angabe der Handlingachse, für welche die Betriebsart VPO angehalten werden soll. n ist der Index der Handlingachse, gültige Werte sind 1, 2, 3, ... 6.

Beschreibung der Funktionsweise

Beim Aufruf der Funktion AxStart wird die Handlingsachse mit der zuvor übergebenen Beschleunigung auf die übergebene Geschwindigkeit beschleunigt. Mit Hilfe der Startgeschwindigkeit, der Sollgeschwindigkeit und der Beschleunigung kann man berechnen, wie groß die Zeit und die Distanz zwischen Startgeschwindigkeit und Sollgeschwindigkeit sind. Sobald die Achse die Sollgeschwindigkeit erreicht hat, folgt die Handlingsachse proportional der Bahngeschwindigkeit. Diese kann bis zur MaxLookAheadTime vorausberechnet werden. Diese Funktionalität kann speziell beim Dosieren abhängig von Viskosität des Materials sinnvoll sein.

Beim Aufruf der Funktion AxStop wird die Handlingsachse mit der zuletzt übergebenen Beschleunigung auf die Startgeschwindigkeit der Handlingsachse abgebremst. Wenn sich die Handlingsachse momentan mit einer Geschwindigkeit von 5°/s dreht und anschließend der VPO-Modus aktiviert und gestartet wird, beschleunigt die Handlingachse auf eine höhere Drehgeschwindigkeit. Sobald der VPO-Modus gestoppt wird, nimmt die Handlingsachse wieder die Ausgangsgeschwindigkeit von 5°/s ein.

Gleichmäßig beschleunigte Bewegung – Geschwindigkeits-Zeit-Gesetz:

Sollgeschwindigkeit = Beschleunigung * ZeitStartSoll + Startgeschwindigkeit
ZeitStartSoll = (Sollgeschwindigkeit – Startgeschwindigkeit) / Beschleunigung

Gleichmäßig beschleunigte Bewegung - Weg-Zeit-Gesetz:

WegStartSoll = Beschleunigung / 2 * ZeitStartSoll^2 + Startgeschwindigkeit * ZeitStartSoll

Die Funktionen können in folgender Reihenfolge aufgerufen werden (EBNF):

GetParam

Activate

{

[Bewegungsdaten]

SetParam

[Bewegungsdaten]

AxStart

[Bewegungsdaten]

[SetParam]

AxStop

[Bewegungsdaten]

}

Deactivate

Zeichenerklärung:

Verwendung | Zeichen
Option | [ … ]
Optionale Wiederholung | { … }

Siehe auch: AxStart VPO, Activate VPO, Deactivate VPO, SetParam VPO, GetParam VPO


AxnPA

Starten einer Handlingachse im Positionsmodus, Anfahren einer Absolutposition

In ProNC können ab Version 1.45.0.2 die sechs Handlingachsen Ax1 bis Ax6 programmiert werden. Die Bezeichner für die Handlingachsen setzen sich aus der Bezeichnung Ax und der nachfolgenden Achsennummer zusammen.

Verwendete Parameter

n (bei AxnPA)

Index der Handlingachse, gültige Werte sind 1...6

Hinweis: Vor der Verwendung des Befehls AxnPA ist eine Referenzfahrt erforderlich.

Für die Ausführung der Referenzfahrt einer Handlingachse ist es erforderlich, den Befehl Ref (Referenzfahrt) in Verbindung mit dem Bezeichner einer Handlingachse zu verwenden.

Das Starten einer Handlingachse im Positions-Modus (Position Mode) zu einer absoluten Zielposition erfolgt unter Angabe des Kürzels AxnPA, wobei n die Achsnummer (1...6) darstellt. P steht für Positionsmodus, A für die Verwendung einer Absolut-Zielposition.

AxnPA = AbsPos

Hinweis: Der Start einer Handlingachse im Positions-Modus kann auch als zusätzliche Anweisung in jedem MoveAbs-Befehl bzw. MoveRel-Befehl erfolgen.

Hinweis: Nach der Übergabe eines Bewegungsbefehls an eine Handlingachse wartet das Programm nicht, bis die Bewegung der Handlingachse beendet ist. Der nächste Befehl im Programm wird unmittelbar nach dem Start der Handlingbewegung ausgeführt.

Beispiele:

;Starte die Handlingachse 1 (z.B. Linearachse) im Position Mode mit der

;aktuellen Geschwindigkeit (Vorschub) in mm/sec

;die Zielposition ist 10 mm (absolute Positionierung)

Ax1PA=10

;Starte die Handlingachse 2 (z.B. Rundachse) im Position Mode mit der

;aktuellen Geschwindigkeit (Vorschub) in grd/sec

;die Zielposition ist 180 grd (absolute Positionierung)

;Die Geschwindigkeit betraegt 30°/sec.

FAx2=30

Ax2PA=180

Siehe auch: Handlingachsen, AxnPI, FAx, AxnV, AxStop, AxStart, AxAbort, WaitMove, AxnInMotion, Pos.Axn, SetOpMode, AxOverride, AxReset


AxnPI

Starten einer Handlingachse im Positionsmodus, Anfahren einer Relativposition

In ProNC können ab Version 1.45.0.2 die sechs Handlingachsen Ax1 bis Ax6 programmiert werden. Die Bezeichner für die Handlingachsen setzen sich aus der Bezeichnung Ax und der nachfolgenden Achsennummer zusammen.

Verwendete Parameter

n (bei AxnPI)

Index der Handlingachse, gültige Werte sind 1...6

Hinweis: Vor der Verwendung des Befehls AxnPI ist eine Referenzfahrt erforderlich.

Für die Ausführung der Referenzfahrt einer Handlingachse ist es erforderlich, den Befehl Ref (Referenzfahrt) in Verbindung mit dem Bezeichner einer Handlingachse zu verwenden.

Das Starten einer Handlingachse im Positions-Modus (Position Mode) zu einer relativen Zielposition erfolgt unter Angabe des Kürzels AxnPI, wobei n die Achsnummer (1...6) darstellt. P steht für Positionsmodus, I für die Verwendung einer relativen Zielposition (bezogen auf die aktuelle Achsposition).

AxnPI = RelPos

Hinweis: Der Start einer Handlingachse im Positions-Modus kann auch als zusätzliche Anweisung in jedem MoveAbs-Befehl bzw. MoveRel-Befehl erfolgen.

Beispiele:

;Starte die Handlingachse 1 (z.B. Linearachse) im Position Mode mit der

;aktuellen Geschwindigkeit (Vorschub) in mm/sec

;Zielposition := aktuelle Startposition + 20 mm (inkrementelle Positionierung)

Ax1PI=20

;Starte die Handlingachse 2 (z.B. Rundachse) im Position Mode mit der

;aktuellen Geschwindigkeit (Vorschub) in grd/sec

;Zielposition := aktuelle Startposition + 20 grd (inkrementelle Positionierung)

Ax2PI=20

Siehe auch: Handlingachsen, AxnPA, FAx, AxnV, AxStop, AxStart, AxAbort, WaitMove, AxnInMotion, Pos.Axn, SetOpMode, AxOverride, AxReset


AxnV

Starten einer Handlingachse im Geschwindigkeitsmodus

In ProNC können ab Version 1.45.0.2 die sechs Handlingachsen Ax1 bis Ax6 programmiert werden. Die Bezeichner für die Handlingachsen setzen sich aus der Bezeichnung Ax und der nachfolgenden Achsennummer zusammen.

Verwendete Parameter

n (bei AxnV)

Index der Handlingachse, gültige Werte sind 1...6

Hinweis: Vor der Verwendung des Befehls AxnV ist eine Referenzfahrt der jeweiligen Achse nicht erforderlich.

Das Starten einer Handlingachse im Geschwindigkeits-Modus (Position Mode) erfolgt unter Angabe des Kürzels AxnV, wobei n die Achsnummer (1...6) darstellt. V steht für Velocity-(Geschwindigkeits-)Modus.

Axn V = absoluter Vorschub

absoluter Vorschub in mm/sec, wenn die Handlingachse eine Linearachse ist.

absoluter Vorschub in grad/sec, wenn die Handlingachse eine Rundachse ist.

Mit einem negativen Vorzeichen (zwischen "=" und "absoluter Vorschub" wird die Drehrichtung der Handlingachse definiert.

Hinweis: Der Start einer Handlingachse im Geschwindigkeits-Modus kann auch als zusätzliche Anweisung in jedem MoveAbs-Befehl bzw. MoveRel-Befehl erfolgen.

Beispiele:

;Starte die Handlingachse 1 (Linearachse) im Velocity Mode,

;der Vorschub beträgt 10 mm/sec

Ax1V=10

;Starte die Handlingachse 2 (Rundachse) im Velocity Mode,

;der Vorschub beträgt 20 grd/sec

Ax2V=20

;Starte die Handlingachse 2 (Rundachse) im Velocity Mode, der Vorschub

; beträgt 30 grd/sec (negative Drehrichtung der Rundachse)

Ax2V=-30

;Starte die Handlingachse 2 (Rundachse) im Velocity Mode,

;der Vorschub beträgt 20 grd/sec

;Der Start der Bewegung erfolgt zusammen mit der linearen Absolutbewegung im Achssystem 1

MoveAbs X15.4 Y-37.0 Z-10.0 Ax2V=20

Siehe auch: Handlingachsen, AxnPA, AxnPI, FAx, AxStop, AxStart, AxAbort, WaitMove, AxnInMotion, Pos.Axn, SetOpMode, AxOverride, AxReset


B

Adressbuchstabe der Achse B

Adressbuchstabe der Achse B in der ersten Motion Control.

Siehe Adressbuchstaben


B1

Adressbuchstabe der Achse B

Adressbuchstabe der Achse B in der ersten Motion Control.

Siehe Adressbuchstaben


B2

Adressbuchstabe der Achse B

Adressbuchstabe der Achse B in der zweiten Motion Control.

Siehe Adressbuchstaben


Break

Abbrechen einer Schleifenoperation innerhalb des Schleifenkörpers

Wenn die Auswertung der Schleifenbedingung "wahr" ist, dann werden normalerweise alle Anweisungen innerhalb des Schleifenkörpers ausgeführt.

Mit der Anweisung "Break" besteht alternativ die Möglichkeit, die Abarbeitung der Anweisungen innerhalb des Schleifenkörpers an einem beliebigen Punkt abzubrechen. Der Schleifenkörpers wird an der Stelle mit der Anweisung "Break" verlassen. Der nächste Durchlauf der Schleife findet nicht mehr statt, auch wenn die Schleifenbedingung weiterhin wahr ist.

Es ist wenig sinnvoll, "Break" als eigene, allein stehende Anweisung zu gebrauchen. In diesem Fall würden alle nachfolgenden Anweisungen innerhalb des Schleifenkörpers nie zur Ausführung kommen.

Die Anweisung "Break" ist in Verbindung mit den Schleifenoperationen While...EndWhile, Do...EndDo und For...EndFor verwendbar.

Beispiel:

For R1=1,1000,1

; ...Anweisungen hier werden ausgeführt

If(I1<0)

Break

EndIf

; Sobald I1 kleiner als 0 ist, wird

; der Schleifenkörper bei der Anweisung

; "Break" verlassen...

EndFor

; ...und das Programm hier fortgesetzt

Siehe auch: Continue


C

Adressbuchstabe der Achse C

Adressbuchstabe der Achse C in der ersten Motion Control.

Siehe Adressbuchstaben


C1

Adressbuchstabe der Achse C

Adressbuchstabe der Achse C in der ersten Motion Control.

Siehe Adressbuchstaben


C2

Adressbuchstabe der Achse C

Adressbuchstabe der Achse C in der zweiten Motion Control.

Siehe Adressbuchstaben


CcwHlxAbs

CcwHlxAbs W... I... J... K... X... Y... Z...

Helixinterpolation entgegen dem Uhrzeigersinn mit Verwendung von Absolut-Zielkoordinaten

Spiralbewegung entgegen dem Uhrzeigersinn um einen Mittelpunkt M mit dem Drehwinkel W zu einem Endpunkt E.

Entgegen dem Uhrzeigersinn bzw. im Gegen-Uhrzeigersinn bedeutet: Bei einer Blickrichtung aus positiver Richtung auf die Ebene, in der die Helixinterpolation ausgeführt wird, bewegt sich das Werkzeug entgegengesetzt dem Uhrzeigersinn (links) um den Mittelpunkt herum.

Die Bezugsebene für die Helixinterpolation wird mit Hilfe des Befehls Plane festgelegt.

Die Angabe der Koordinaten des Endpunktes E erfolgt absolut, d.h die Koordinaten X, Y, Z, ,... für die Angabe der Zielpositionen aller Achsen der Anlage beziehen sich auf den gesetzten Werkstücknullpunkt. Falls kein Werkstücknullpunkt aktiv ist, beziehen sich die Zielkoordinaten auf den Maschinennullpunkt.

Die Angabe der Mittelpunkts-Koordinaten erfolgt immer relativ bezüglich des Start-Punktes S (das ist die aktuelle Position der Achsen der Anlage).

Die Angabe des Drehwinkels definiert die Anzahl der Umdrehungen, die Angabe des Drehwinkels erfolgt in Grad (360° = 1 Vollkreis).

Folgende Parameter finden Verwendung:

W Angabe des Winkels (in Grad), der durch die Helix überstrichen wird
Hinweis: Die Angabe dieses Parameters muß unmittelbar hinter der Anweisung CcwHlxAbs erfolgen!

I Mittelpunkt X (relativ zur aktuellen Position S)
J Mittelpunkt Y (relativ zur aktuellen Position S)
K Mittelpunkt Z (relativ zur aktuellen Position S)

Die Angabe des Mittelpunktes ist abhängig von der verwendeten Interpolationsebene. Je nach Ebene werden zwei der drei Mittelpunktskoordinaten verwendet, die dritte Angabe wird ignoriert:

XY Verwendet werden I, J
XZ Verwendet werden I, K
YZ Verwendet werden J, K

X Endposition der Achse X (absolut)
Y Endposition der Achse Y (absolut)
Z Endposition der Achse Z (absolut)

Für alle Achsen, die an einer Maschine zur Verfügung stehen, können Endpositionen angegeben werden, die während der Helixinterpolation erreicht werden sollen. Falls die Endpositionen einzelner Achsen bereits durch einen anderen Parameter zwingend bestimmt wurden (z.B. X und Y bei der Helixinterpolation in der XY-Ebene, hier wird die Zielposition X und Y durch die Angabe des Mittelpunktes M sowie des Winkels W festgelegt), so werden die betreffenden Parameter ignoriert.

Wenn bei einer Helix die Parameter so gewählt werden, daß keine Tiefe entsteht, dann kann mit Hilfe des Helix-Befehls ein Kreisbefehl mit einem überstrichenen Winkel von mehr als 360° realisiert werden.

Modalität:

Parameter, die für den aktuellen Kreisbefehl keine Auswirkung auf die Durchführung haben, können weggelassen werden. In diesem Fall werden als Parameter entweder 0 (bei der Angabe von relativen Parametern) oder die jeweils aktuelle Achsposition (bei der Angabe von Absolutparametern) verwendet. So kann z.B. für die Ausführung eines Vollkreises der Befehl

MoveAbs X10.0 Y10.0 Z-20.0

CcwHlxAbs W360 I0 J10 K0 X10 Y10 Z-20

auch in der Form

MoveAbs X10.0 Y10.0 Z-20.0

CcwHlxAbs W360 J10

geschrieben werden.

Beispiel:

MoveAbs X10.0 Y10.0 Z-20.0

; Interpolation in der XY-Ebene

Plane XY

;Helix mit 2 Windungen, die insgesamt eine

;Tiefe von 10 mm erreichen

CcwHlxAbs W720 I10 J0 X10 Y10 Z-30

MoveAbs X10.0 Y10.0 Z-20.0

; Interpolation in der XZ-Ebene

Plane XZ

;Helix mit 1 Windung mit einer Zustellung

;von 10 mm in Richtung Y

CcwHlxAbs W360 I0 K-10 X10 Y20 Z-20

MoveAbs X10.0 Y10.0 Z-20.0

; Interpolation in der YZ-Ebene

Plane YZ

;Helix mit 4 Windungen, in Richtung X

;betraegt die Zustellung 20 mm

CcwHlxAbs W1440 J10 K0 X-10 Y10 Z-20

Siehe auch: CcwHlxRel, CwHlxAbs, CwHlxRel, Plane


CcwHlxRel

CcwHlxRel W... I... J... K... X... Y... Z...

Helixinterpolation entgegen dem Uhrzeigersinn mit Verwendung von relativen Zielkoordinaten

Spiralbewegung entgegen dem Uhrzeigersinn um einen Mittelpunkt M mit dem Drehwinkel W zu einem Endpunkt E.

Entgegen dem Uhrzeigersinn bzw. im Gegen-Uhrzeigersinn bedeutet: Bei einer Blickrichtung aus positiver Richtung auf die Ebene, in der die Helixinterpolation ausgeführt wird, bewegt sich das Werkzeug entgegengesetzt dem Uhrzeigersinn (links) um den Mittelpunkt herum.

Die Bezugsebene für die Helixinterpolation wird mit Hilfe des Befehls Plane festgelegt.

Die Angabe der Koordinaten des Endpunktes E erfolgt relativ, d.h die Koordinaten X, Y, Z, ,... für die Angabe der Zielpositionen aller Achsen der Anlage beziehen sich auf die aktuell erreichten Positionen der Achsen der Anlage. Die aktuelle Position bildet somit den Startpunkt S für die Helix-Interpolation.

Die Angabe der Mittelpunkts-Koordinaten erfolgt immer relativ bezüglich des Start-Punktes S.

Die Angabe des Drehwinkels definiert die Anzahl der Umdrehungen, die Angabe des Drehwinkels erfolgt in Grad (360° = 1 Vollkreis).

Folgende Parameter finden Verwendung:

W Angabe des Winkels (in Grad), der durch die Helix überstrichen wird
Hinweis: Die Angabe dieses Parameters muß unmittelbar hinter der Anweisung CcwHlxRel erfolgen!

I Mittelpunkt X (relativ zur aktuellen Position S)
J Mittelpunkt Y (relativ zur aktuellen Position S)
K Mittelpunkt Z (relativ zur aktuellen Position S)

Die Angabe des Mittelpunktes ist abhängig von der verwendeten Interpolationsebene. Je nach Ebene werden zwei der drei Mittelpunktskoordinaten verwendet, die dritte Angabe wird ignoriert:

XY Verwendet werden I, J
XZ Verwendet werden I, K
YZ Verwendet werden J, K

X Endposition der Achse X (relativ zur aktuellen Position S)
Y Endposition der Achse Y (relativ zur aktuellen Position S)
Z Endposition der Achse Z (relativ zur aktuellen Position S)

Für alle Achsen, die an einer Maschine zur Verfügung stehen, können Endpositionen angegeben werden, die während der Helixinterpolation erreicht werden sollen. Falls die Endpositionen einzelner Achsen bereits durch einen anderen Parameter zwingend bestimmt wurden (z.B. X und Y bei der Helixinterpolation in der XY-Ebene, hier wird die Zielposition X und Y durch die Angabe des Mittelpunktes M sowie des Winkels W festgelegt), so werden die betreffenden Parameter ignoriert.

Wenn bei einer Helix die Parameter so gewählt werden, daß keine Tiefe entsteht, dann kann mit Hilfe des Helix-Befehls ein Kreisbefehl mit einem überstrichenen Winkel von mehr als 360° realisiert werden.

Modalität:

Parameter, die für den aktuellen Helixbefehl keine Auswirkung auf die Ausführung der Helix haben, können weggelassen werden. In diesem Fall wird als Parameter automatisch der Wert 0 verwendet. So kann z.B. für die Durchführung eines Vollkreises mit Hilfe des Helixbefehles auch die Form

CcwHlxRel W360 I10

CcwHlxRel W360 K-10

CcwHlxRel W360 J10

verwendet werden.

Beispiel:

; Interpolation in der XY-Ebene

Plane XY

;Helix mit 2 Windungen, die insgesamt eine

;Tiefe von 10 mm erreichen

CcwHlxRel W720 I10 J0 X0 Y0 Z-10

;Helix mit 1,5 Windungen ueber eine

;Laenge von 10 mm

CcwHlxRel W540 I10 J0 X20 Y0 Z-10

; Interpolation in der XZ-Ebene

Plane XZ

;Helix mit 1 Windung mit einer Zustellung

;von 10 mm in Richtung Y

CcwHlxRel W360 I0 K-10 X0 Y10 Z0

; Interpolation in der YZ-Ebene

Plane YZ

;Helix mit 4 Windungen, in Richtung X

;betraegt die Zustellung 20 mm

CcwHlxRel W1440 J10 K0 X-20 Y0 Z0

Siehe auch: CcwHlxAbs, CwHlxAbs, CwHlxRel, Plane


Change

Change a1 a2

Tausch von zwei Achsen der Anlage

Der Befehl CHANGE ermöglicht es, zwei physikalische Achsen der Maschine logisch zu tauschen. Alle Zugriffe auf Achse a1 werden nach der Durchführung des Achsentauschs auf Achse a2 umgeleitet und umgekehrt. Die Parameter a1 und a2 geben die zu tauschenden Achsen an, mögliche Parameter sind X, Y, Z, A, B, C, U, V, W.

Es gilt die Einschränkung, daß Achsen nur mit anderen Achsen gleichen Typs getauscht werden können, d.h. Linearachse kann nur gegen Linearachse und Drehachse kann nur gegen Drehachse getauscht werden.

Das Aufheben des Achstauschs erfolgt durch erneuten Aufruf der Funktion Change mit den Identifiern der getauschten Achsen oder generell durch Aufruf der Funktion MRESET (Reset der Motion Control). Ein Reset, welcher mit den Funktionen der Bedienoberfläche (Remote, ProNC) ausgeführt wird, führt ebenfalls zur Aufhebung des Achstauschs.

Beispiel:

; X ist Querachse, Y ist Längsachse

; Die Querachse fährt an die Pos. 10 mm

; Die Längsachse fährt an die Pos. 100 mm

MOVEABS X10.0 Y100.0

; Tausch von Längs- und Querachse

CHANGE X Y

; Die Querachse fährt nun an die Pos. 100 mm

; Die Längsachse fährt nun an die Pos. 10 mm

MOVEABS X10.0 Y100.0

; Tausch von Längs- und Querachse aufheben

CHANGE X Y

Siehe auch: Cube


ChangePosition

ChangePosition [X[n] [Rn] [In] [ofsx]] [Y[n] [Rn] [In] [ofsy]] ...

Manipulation der Ist-Koordinate(n) der Achse(n)

Mit Hilfe dieser Funktion können die Istpositionen von Achsen um einen Offsetwert verändert werden.

Hinweis: Normalerweise ist es nicht sinnvoll, die Istpositionen von Linearachsen zu verändern, dies bringt immer eine Kollisionsgefahr bei Verfahrbewegungen im kartesischen Koordinatenraum mit sich.

Anwendung

Ein konkreter Anwendungsfall ist jedoch das "Abschneiden" von überzähligen Umdrehungen bei einer Drehachse nach einem vollendeten Dreh-/Fräszyklus.

Bei dieser Bearbeitungsvariante wird ein Rotationskörper mit einer Kombination aus Linear- und Drehbewegungen realisiert, wobei die Drehachse, z.B. A, nur in eine Richtung dreht. Vor dem Start des nächsten Dreh-/Fräszyklus wird diese Achsposition bei einer rotationssymmetrischen Form nun auf die Position 0 gesetzt.

Eine weitere Variante bei nicht rotationssymmetrischen Körpern ist, daß nur die überzähligen ganzzahligen Anteile der Achsumdrehungen entfernt werden, z.B. die ganzzahligen Umdrehungen der Achsposition A von 4378,5° (entspricht 12+360° + 58,5°).

Nach Ausführen der Operation soll die Achsposition also

4378.5° - 12 * 360° = 58.5°

sein. Die Achse steht mechanisch an der gleichen Position wie zuvor, der ganzzahlige Anteil von Umdrehungen n*360° wurde aber herausgerechnet. Der nächste Dreh-/Fräszyklus kann nun wieder ab einer Position nahe dem Achsnullpunkt gestartet werden. Der anzugebende Offsetwert ist in diesem Fall der ganzzahlige Anteil der Umdrehungen.

Parameter des Befehls:

Xn, Yn, Zn, ... Wn | Angabe der Achse, für welche die Operation ausgeführt werden soll. Der optionale Index n ist der Index der Motion Control, auf deren Achse zugegriffen werden soll. Wenn kein Index angegeben ist, wird die Achse aus Motion Control 1 verwendet.
Rn, In | Eine Real-Variable oder eine Integer-Variable mit dem Offset, welcher der Achsposition zugewiesen werden soll. Grundsätzlich gilt: Der Offset wird von der aktuellen Achsposition abgezogen, d.h. um einen Positionswert zu reduzieren muß der Offset mit einem positiven Vorzeichen angegeben werden.
ofsx, ofsy, ...ofsw | Angabe des Offsets wie bei Rn oder In als numerischer Wert.

Berechnung der Parameter

1.Um die aktuelle Achsposition der Achse auf 0 zu setzen

R1=Pos1.A
ChangePosition AR1

2.Um die ganzzahligen Anteile der Umdrehungen abzuschneiden

I1=Pos1.A
I1=FLOOR(I1/360)*360
ChangePosition AI1


CircleAbs

CircleAbs dir I J K X Y Z

Kreisinterpolation mit Verwendung von Absolut-Zielkoordinaten

Kreisinterpolation unter Verwendung der aktuell gesetzten Normalgeschwindigkeit. Für die Endpositionen der Achsen werden Absolutkoordinaten übergeben, die sich auf den aktuell gesetzten Werkstücknullpunkt beziehen. Falls kein Werkstücknullpunkt aktiv ist, beziehen sich die übergebenen Koordinaten der Endpositionen auf den Maschinennullpunkt.

Die Angabe der Mittelpunktkoordinaten (I, J, K) erfolgt relativ zur aktuellen Position!

Folgende Parameter finden Verwendung

dir
CW Fahren im Uhrzeigersinn
CCW Fahren im Gegenuhrzeigersinn

I Mittelpunkt X (relativ)
J Mittelpunkt Y (relativ)
K Mittelpunkt Z (relativ)

X Endposition der Achse X (absolut)
Y Endposition der Achse Y (absolut)
Z Endposition der Achse Z (absolut)

Modalität:

Parameter, die für den aktuellen Kreisbefehl keine Auswirkung auf die Durchführung haben, können weggelassen werden. In diesem Fall werden als Parameter entweder 0 (bei der Angabe von relativen Parametern) oder die jeweils aktuelle Achsposition (bei der Angabe von Absolutparametern) verwendet. So kann z.B. für die Durchführung eines Vollkreises der Befehl

MOVEABS X10.0 Y10.0 Z-20.0

CIRCLEABS CW I0 J10 K0 X10 Y10 Z-20

auch in der Form

MOVEABS X10.0 Y10.0 Z-20.0

CIRCLEABS CW J10

geschrieben werden.

Beispiel:

MOVEABS X10.0 Y10.0 Z-20.0

; Interpolation in der XY-Ebene

PLANE XY

CIRCLEABS CW I10 J0 K0 X10 Y10 Z-20

MOVEABS X10.0 Y10.0 Z-20.0

; Interpolation in der XZ-Ebene

PLANE XZ

CIRCLEABS CW I0 J0 K-10 X10 Y10 Z-20

MOVEABS X10.0 Y10.0 Z-20.0

; Interpolation in der YZ-Ebene

PLANE YZ

CIRCLEABS CW I0 J10 K0 X10 Y10 Z-20

Siehe auch: CircleRel, Plane


CircleRel

CircleRel dir I J K X Y Z

Kreisinterpolation mit Verwendung von relativen Zielkoordinaten

Kreisinterpolation unter Verwendung der aktuell gesetzten Normalgeschwindigkeit. Für die Endpositionen der Achsen werden Relativkoordinaten übergeben, die sich auf die aktuellen Positionen der beteiligten Achsen beziehen. Die Angabe der Mittelpunktkoordinaten (I, J, K) erfolgt ebenfalls relativ zur aktuellen Position der beteiligten Achsen.

Folgende Parameter finden Verwendung

dir
CW Fahren im Uhrzeigersinn
CCW Fahren im Gegenuhrzeigersinn

I Mittelpunkt X (relativ)
J Mittelpunkt Y (relativ)
K Mittelpunkt Z (relativ)

X Endposition der Achse X (relativ)
Y Endposition der Achse Y (relativ)
Z Endposition der Achse Z (relativ)

Beispiel:

; Interpolation in der XY-Ebene

PLANE XY

CIRCLEREL CW I10 J0 K0 X0 Y0 Z0

; Interpolation in der XZ-Ebene

PLANE XZ

CIRCLEREL CW I0 J0 K-10 X0 Y0 Z0

; Interpolation in der YZ-Ebene

PLANE YZ

CIRCLEREL CW I0 J10 K0 X0 Y0 Z0

Modalität:

Parameter, die für den aktuellen Kreisbefehl keine Auswirkung auf die Durchführung haben, können weggelassen werden. In diesem Fall wird als Parameter der Wert 0 verwendet. So können z.B. für die Durchführung eines Vollkreises die oben aufgeführten Befehle auch in der Form

CIRCLEREL CW I10

CIRCLEREL CW K-10

CIRCLEREL CW J10

geschrieben werden.

Siehe auch: CircleAbs, Plane


CloseCom

Schließen einer geöffneten seriellen Schnittstelle

Für das Senden und Empfangen von Zeichen über eine serielle Schnittstelle des PC's ist es erforderlich, die gewünschte Schnittstelle mit Hilfe des Befehls "OpenCom" zu öffnen. Nach Abschluß der Sende- und Empfangsoperationen muß die serielle Schnittstelle wieder mit Hilfe des Befehls "CloseCom" geschlossen werden.

Bei der Anwendung des Befehls sind keine weiteren Parameter erforderlich.

Hinweis:

Die Befehle zum Senden (Tx) bzw. Empfangen (Rx) von Zeichen über eine serielle Schnittstelle COMx beziehen sich immer auf die jeweilige, für eine bestimmte Übertragungsrate geöffnete Schnittstelle COMn (n=1...Anzahl der Schnittstellen). Es ist also nicht erforderlich, in den Befehlen für das Senden und Empfangen von Zeichen die Nummer der geöffneten Schnittstelle anzugeben. Falls innerhalb eines ISO- oder PAL-Anwendungsprogrammes z.B. von der Schnittstelle COM1 zur Schnittstelle COM3 gewechselt werden soll, so ist COM1 zu schließen und danach COM3 zu öffnen.

Beispiele:

;Oeffnen der Schnittstelle COM1

;Definition der Baudrate 19200 Bit/sec

OpenCom 1 19200

;Senden von 6 Bytes über die serielle Schnittstelle COM1

I10=6

I1=0x31 I2=0x32 I3=0x33 I4=0x34 I5=0x35

;Steuerzeichen CR=13 dez am Ende

I6=0x0d

;6 Byte ab I1 senden

TxCom I10 I1

;Ueberpruefung des Sendevorgangs

;I10 enthaelt die Anzahl gesendeter Zeichen

If I10!=6

MessageBox OK "Fehler bei Tx: zu wenig Zeichen gesendet ..."

EndIf

;Senden des Inhaltes der STR-Variable Str1 als

;Zeichenkette über die serielle Schnittstelle COM1

;Anzahl der zu sendenden Zeichen

I10=40

;Initialisierung der String-Variablen

Str1="Hello how are you ?! 1234567890 =&/() ,;.ÄÖÜ"

;Die ersten 40 Zeichen der Str-Variable Str1 werden gesendet

TxCom I10 Str1

;1 Sekunde warten

Delay 1000

;Empfang von 6 Bytes über die COM1

;6 Byte sollen empfangen werden

I10=6

I11=0 I12=0 I13=0 I14=0 I15=0 I16=0

;Die 6 Rx-Bytes ab I11 abspeichern in I11, I12, I13 ...

RxCom I10 I11

;I10 enthaelt die Anzahl empfangener Zeichen

If I10==6

Display 1 1 "Rx: %I10% Zeichen -> %I11% %I12% %I13% %I14% %I15% %I16% "

Else

MessageBox ERROR OK "Fehler bei Rx: Es wurden nur %I10% Zeichen empfangen..."

EndIf

; 44 Byte sollen als Zeichenkette empfangen werden

I10=44

Str2="..."

;44 Byte werden in Str2 uebertragen...

RxCom I10 Str2

;Geöffnete Schnittstelle COM1 schließen:

CloseCom

Siehe auch: OpenCom, RxCom, TxCom


CloseEth

CloseEth handle ErrorCode=Im

Beenden der Ethernet-Verbindung zum IP-Host

Mit diesem Befehl wird eine offene Ethernet-Verbindung geschlossen, die zuvor mit dem Befehl OpenEth hergestellt wurde.

Verwendete Parameter:

handle | Dieser Parameter ist der Handle der Verbindung, der bei Aufruf der Funktion OpenEth zurückgegeben wurde und normalerweise in einer Integer-Variablen abgelegt wurde.
ErrorCode | Dieser Parameter dient zur Angabe einer Integer-Variablen mit dem Index m, in welcher der Fehlercode des Aufrufs abgelegt wird.

Beispiel:

;Schliessen der Verbindung zwischen Client und Server

I11=0

I0=OpenEth Str1 I1 ErrorCode=I11

;...

I11=0

CloseEth I0 ErrorCode=I11

If((I11&0xC0000000)!=0)

Display Add "FEHLER beim Verbindungsabbau..."

NotifyError I11

Else

Display Add "Verbindung beendet ..."

EndIf

Siehe auch: OpenEth, RxEth, TxEth, GetStatusEth


Continue

Weiterführen einer Schleifenoperation an der Schleifenbedingung

Wenn die Auswertung der Schleifenbedingung "wahr" ist, dann werden normalerweise alle Anweisungen innerhalb des Schleifenkörpers ausgeführt.

Mit der Anweisung "Continue" besteht alternativ die Möglichkeit, die Abarbeitung der Anweisungen innerhalb des Schleifenkörpers an einem beliebigen Punkt zu unterbrechen. Die nachfolgenden Anweisungen des Schleifenkörpers werden übergangen und die Schleife wird mit der Prüfung der Schleifenbedingung fortgesetzt. Wenn die Schleifenbedingung weiterhin wahr ist, wird der nächste Durchlauf der Schleife gestartet.

Es ist wenig sinnvoll, "Continue" als eigene, allein stehende Anweisung zu gebrauchen. In diesem Fall würden alle nachfolgenden Anweisungen nie zur Ausführung kommen.

Die Anweisung "Continue" ist in Verbindung mit den Schleifenoperationen While...EndWhile, Do...EndDo und For...EndFor verwendbar.

Beispiel:

While 1==1

; ...Anweisungen hier werden ausgeführt

If(I1<0)

Continue

EndIf

; ...Anweisungen hier werden NICHT

; ausgeführt, wenn I1 kleiner 0 ist

EndWhile

Siehe auch: Break


Coolant

Coolant [ON][OFF]

Kühlmittelfluß ein-/ausschalten

Schaltet die Kühlmittelpumpe (sofern an der Maschine installiert und eingerichtet) ein oder aus.

Die Signalisierung für den Betrieb der Kühlmittelpumpe muß im entsprechenden Einstelldialog des Programms eingerichtet werden:

Einstellungen - Steuerung - Selektion: Ein-/Ausgabemodule - Schaltfläche: Erweiterte Einstellungen - Registerkarte: Peripherie

Parameter des Befehls:

ON | Kühlmittelfluss von Kühlmittelpumpe einschalten
OFF | Kühlmittelfluss von Kühlmittelpumpe ausschalten

Beispiel:

COOLANT ON

MOVEABS X100

COOLANT OFF

Siehe auch: Coolant2


Coolant2

Coolant2 [ON][OFF]

Kühlmittelfluß der Kühlmittelpumpe 2 ein-/ausschalten

Schaltet die zweite Kühlmittelpumpe (sofern an der Maschine installiert und eingerichtet) ein oder aus.

Die Signalisierung für den Betrieb der Kühlmittelpumpe muß im entsprechenden Einstelldialog des Programms eingerichtet werden:

Einstellungen - Steuerung - Selektion: Ein-/Ausgabemodule - Schaltfläche: Erweiterte Einstellungen - Registerkarte: Peripherie

Parameter des Befehls:

ON | Kühlmittelfluss an Kühlmittelpumpe 2 einschalten
OFF | Kühlmittelfluss an Kühlmittelpumpe 2 einschalten

Beispiel:

Coolant2 ON

MoveAbs X100

Coolant2 OFF

Siehe auch: Coolant


CopyFile

CopyFile [param] str_srcfile str_destfile

Kopieren einer Datei

Kopiert den Inhalt einer existierenden Datei in eine Datei mit einem anderen Namen. Durch die optionale Angabe zusätzlicher Parameter kann das Laufzeitverhalten der Funktion an die jeweilige Aufgabenstellung angepasst werden.

Syntax:

CopyFile [param] str_srcfile str_destfile

Parameter des Befehls:

str_srcfile | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) welche den Namen der Quelldatei enthält, die kopiert werden soll.
str_destfile | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) welche den Namen der Zieldatei enthält, in welche die Quelldatei kopiert werden soll.
ALLOWUNDO | Sichert, wenn möglich, alle Informationen für die Operation "Rückgängig"
FILESONLY | Die Aktion wird nur auf Dateien angewendet, wenn die Angabe des Quelldateinamens eine Wildcard ("*.*") enthält.
NOCONFIRMATION | Falls während der Dateioperation eine Benutzerabfrage erfolgt, werden alle Dialoge mit "Ja zu allem" beantwortet.
NOCONFIRMMKDIR | Falls die Dateioperation es erforderlich macht, daß ein neues Verzeichnis angelegt wird, erfolgt keine Aufforderung das Anlegen des neuen Verzeichnisses zu bestätigen.
NOERRORUI | Wenn während der Dateioperation ein Fehler auftritt, wird die Fehlermeldung unterdrückt.
RENAMEONCOLLISION | Weist der bearbeiteten Datei einen neuen Namen zu, wenn während der Dateioperation eine Namenskollision festgestellt wird, z.B. wenn die Zieldatei bereits existiert.
SILENT | Es wird keine Fortschrittsanzeige für die Dateioperation angezeigt.
SIMPLEPROGRESS | Während der Dateioperation wird ein Fortschrittsdialog angezeigt, der jedoch keine Dateinamen enthält.

Hinweis: Im Gegensatz zu vielen anderen Befehlen und Kommandos, bei denen die Reihenfolge der Parameter nicht festgelegt ist, müssen bei diesem Befehl die optionalen Parameter param vor der Angabe von Quelldatei und Zieldatei stehen.

Beispiel:

Str11="C:\NCProg\"

Str12="NCP-Dateien|*.NCP|Alle Dateien|*.*||"

;zuvor die Zeichenkettenvariable R1 mit einer

;leeren Zeichenkette initialisieren

Str1=""

;Dateiauswahldialog aufrufen...

R1=FileDialog OpenFileDialog=1 Result=Str1 DefaultPath=Str11 DefaultExtension="NCP" Filter=Str12

;einen festen Namen fuer die Zieldatei angeben...

Str2="C:\NcProg\test1.ncp"

;Kopiervorgang starten, falls die Zieldatei bereits

;existiert wird sie ohne Nachfrage ueberschrieben,

;wenn NOCONFIRMATION weggelassen wird erscheint die

;Standardabfrage von Windows und bietet eine Auswahl

;an Moeglichkeiten an

CopyFile NOCONFIRMATION Str1 Str2

Siehe auch: MoveFile, DeleteFile, FileDialog, FileExists, SplitPath, MakePath, GetFileType


COS

Operator für die trigonometrische Funktion COSINUS

Operator für die trigonometrische Funktion COSINUS. Als Argument wird ein Winkel w in Radiant (0...2*Pi => 0°...360°) erwartet.

Beispiel:

R11=PI/2

R12=COS(R11) ;Ergibt 0

R13=COS(2*R11) ;Ergibt -1.0

Umrechnung von Radiant in Grad:

winkel_in_rad * 180

winkel_in_grad = ———————————————————————

Pi

Umrechnung von Grad in Radiant :

winkel_in_grad * Pi

winkel_in_rad = ——————————————————————

180

Siehe auch: SIN, TAN


Counter

Countern [Count]

Verwendung eines Zählers der Anwendung

In den Anwendungen ProNC bzw. Remote können bis zu 32 digitale Zähler für automatische oder programmgesteuerte Zählanwendungen konfiguriert werden.

Die Konfiguration der Zähler erfolgt mit Hilfe der entsprechenden Einstellfunktion(en) in Remote oder ProNC. In den Konfigurationsdialogen können Parameter wie Resetwert des Zählers, Inkrement pro Zählvorgang, Zählermodus, Limitwerte, Signalausgänge usw. konfiguriert werden.

In Ergänzung zu den konfigurierbaren automatischen Zählvorgängen kann programmatisch aus einem PAL-Programm heraus auf die Zähler zugegriffen werden. Dazu dient der Befehl Counter, mit dessen Hilfe auf die internen Parameter und Arbeitsmodi der Zähler zugegriffen werden kann sowie Zählvorgänge der Zähler umgesetzt werden können.

Verwendete Parameter:

n | Angabe der Indexnummer des Zählers, auf den zugegriffen werden soll. In der Anwendung können bis zu 32 Zähler verwendet werden, demzufolge können die Kanalnummern 1...32 als Index direkt an den Befehl Counter angehängt werden. Damit ergibt sich diese Schreibweise für den Zugriff auf einen bestimmten Zähler: Counter1, Counter2, ... Counter32
Count | Anweisung für den Zähler, den konfigurierten Zählvorgang auszuführen. Der Zählvorgang wird durchgeführt, indem der in den Einstellungen des Zählers festgelegte Inkrementwert zum aktuellen Zählerstand addiert wird.

Verwendung eines Zählers analog zu einer Variablen

Ein Zähler kann mit Hilfe der Anweisung Countern wie eine normale Programmvariable angesprochen werden. Der gewünschte Kanal wird in der Form "Countern" angegeben, d.h. nach dem Schlüsselwort "Counter" folgt ohne Leerzeichen der Index des gewünschten Zählers. Die Indexnummer liegt im Bereich von 1 ... 32. Diese Option erlaubt es, komplexe Berechnungen mit den aktuellen Zählerständen der Zähler durchzuführen.

Obwohl der Zähler bei dieser Schreibweise insgesamt wie eine Variable verwendet werden kann, gibt es doch eine Erweiterung, die nicht dem Standard entspricht. Durch Angabe des Schlüsselwortes "Count" kann bewirkt werden, daß der Zählerstand des indizierten Zählers um den in der Konfiguration des Zählers angegebenen inkrementellen Wert pro Zählvorgang erhöht bzw. verringert wird.

Beispiele:

Counter2=5

Der Zählerstand des Zählers mit dem Index 2 wird auf den Wert 5 gesetzt.

Counter12 Count

Der Zählerstand von Zähler 12 wird um den in der Konfiguration festgelegten Wert pro Zählvorgang erhöht bzw. verringert.

Counter4 = R5 + Counter1 * 3

Der Zählerstand von Zählerkanal 1 wird mit 3 multipliziert. Anschließend wird der Wert der Variablen R5 addiert und das Ergebnis an den Zählerkanal 4 übertragen.

Bedingtes Zählen mit Verwendung des Counters wie Variable

Bei Erreichen des Anweisungsblocks wird der Zähler mit dem Index 2 nur dann um den konfigurierten Inkrementalwert verändert, wenn der digitale Eingang E1.4 aktiv ist.

If E1.4==1

Counter2 Count

EndIF

Direkte Verwendung des Eingangssignals für den Zähler

Falls das Zählen vom Wert eines Eingangs abhängig ist, kann der Eingangskanal auch direkt in einer mathematischen Operation durch den Operator "+" verknüpft verwendet werden.

Counter2=Counter2+In1.2

Siehe auch: <Counter>


Cube

Cube xyz

Festlegung der interpolierenden Achsen des kartesischen Koordinatensystems

Die Interpolation einer Bewegung in einem rechtshändigen dreidimensionalen kartesischen Koordinatensystem wird standardmäßig durch kombinierte Einzelbewegungen der drei Achsen X, Y und Z realisiert. In den meisten Fällen sind Maschinen nach diesem Standard konfiguriert, weitere Achsen an der Maschine dienen als Hilfsachsen für Zustellbewegungen, Belade- oder Entladeoperationen, Transportbewegungen usw.

In Sonderformen von Maschinen kann es mitunter erforderlich sein, die interpolierenden Achsen zu wechseln, d.h. das kartesische Koordinatensystem, innerhalb dessen die Interpolation erfolgt, wird nicht mehr durch die drei Hauptachsen X, Y und Z gebildet, sondern durch eine hiervon abweichende Anordnung, z.B. könnte die Z-Achse durch eine weitere Vertikalachse ersetzt werden.

Für die Konfiguration der Achsen, welche das kartesische Koordinatensystem bilden sollen, steht der Befehl Cube zur Verfügung.

Verwendete Parameter:

xyz Angabe der Achsen, die das kartesische Koordinatensystem bilden, innerhalb dessen die 3D-Interpolation stattfinden soll.

Es gilt:

x (der erste Parameter) legt die Abszissenachse (X) fest
y (der zweite Parameter) legt die Ordinatenachse (Y) fest
z (der dritte Parameter) legt die Höhenachse (Z) fest.

koordinatensystem

Beispiel:

(1)

;Das Standard-Koordinatensystem wird aus den

;drei Hauptachsen der Maschine gebildet (Default)

Cube XYZ

(2)

;An einer Maschine befinden sich die drei Hauptachsen

;X, Y und Z sowie eine weitere Vertikalachse A, die

;zeitweise als zweite Z-Achse verwendet werden soll

;Den Inhalt der Framevariablen mit dem Werkstuecknullpunkt

;an eine Q-Variable uebertragen

Q1 = WSNULLPKT_1

;Das kartesische Koordinatensystem wird aus den drei

;Hauptachsen der Maschine gebildet

Cube XYZ

;Werkstueck-Nullpunkt anfahren in X und Y

FastVel 40

FastAbs XQ1:X YQ1:Y

;Spindel (Drehzahl 5000 U/min, rechtsdrehend) ein

S5000 SCLW

;Absenken der Z-Achse auf die Oberflaeche des Werkstuecks

FastAbs ZQ1:Z

;neuen Nullpunkt einrichten

WpZero

;linke Ecke bei (20,15,2) anfahren im Eilgang

FastAbs Z0.5

FastAbs X20 Y15 Z2

;4 mm tief in den Werkstoff fraesen

;Vorschub 5.0 mm/s

MoveAbs Z-4 F5.0

;Kontur fräsen mit Vorschub von 25 mm/sec

MoveAbs Y60 F25.0

ClwAbs  X45 Y85 I25 J0

MoveAbs X140

MoveAbs X180 Y45

MoveAbs Y15

MoveAbs X106

MoveAbs Y40

CclwAbs X70 Y40 I-18 J0

MoveAbs Y15

MoveAbs X20

;Werkstuecknullpunkt loeschen und an Sicherheitshoehe

WpClear

FastAbs Z-0.5

;Jetzt wird das kartesische Koordinatensystem aus den

;beiden Hauptachsen X und Y der Maschine sowie der

;zweiten Vertikalachse (A) gebildet

Cube XYA

;Werkstueck-Nullpunkt anfahren in X und Y

FastVel 40

FastAbs XQ1:X YQ1:Y

;Spindel (Drehzahl 5000 U/min, rechtsdrehend) ein

S5000 SCLW

;Absenken der Z2-Achse (A) auf die Oberflaeche

;des Werkstuecks

FastAbs AQ1:A

;neuen Nullpunkt einrichten

WpZero

;linke Ecke bei (20,15,2) anfahren im Eilgang

FastAbs A0.5

FastAbs X20 Y15 A2

;4 mm tief in den Werkstoff fraesen

;Vorschub 5.0 mm/s

MoveAbs A-4.0 F5.0

;Kontur fräsen mit Vorschub von 25 mm/sec

MoveAbs Y60 F25.0

ClwAbs  X45 Y85 I25 J0

MoveAbs X140

MoveAbs X180 Y45

MoveAbs Y15

MoveAbs X106

MoveAbs Y40

CclwAbs X70 Y40 I-18 J0

MoveAbs Y15

MoveAbs X20

;Standard wiederherstellen: Das kartesische Koordinatensystem

;wird wieder aus den drei Hauptachsen der Maschine gebildet

Cube XYZ

;Werkstuecknullpunkt loeschen und an Sicherheitshoehe

WpClear

FastAbs A-0.5

Siehe auch: Change


CwHlxAbs

CwHlxAbs W... I... J... K... X... Y... Z...

Helixinterpolation im Uhrzeigersinn mit Verwendung von Absolut-Zielkoordinaten

Spiralbewegung im Uhrzeigersinn um einen Mittelpunkt M mit dem Drehwinkel W zu einem Endpunkt E.

Im Uhrzeigersinn bedeutet: Bei einer Blickrichtung aus positiver Richtung auf die Ebene, in der die Helixinterpolation ausgeführt wird, bewegt sich das Werkzeug im Uhrzeigersinn (rechts) um den Mittelpunkt herum.

Die Bezugsebene für die Helixinterpolation wird mit Hilfe des Befehls Plane festgelegt.

Die Angabe der Koordinaten des Endpunktes E erfolgt absolut, d.h die Koordinaten X, Y, Z, ,... für die Angabe der Zielpositionen aller Achsen der Anlage beziehen sich auf den gesetzten Werkstücknullpunkt. Falls kein Werkstücknullpunkt aktiv ist, beziehen sich die Zielkoordinaten auf den Maschinennullpunkt.

Die Angabe der Mittelpunkts-Koordinaten erfolgt immer relativ bezüglich des Start-Punktes S (das ist die aktuelle Position der Achsen der Anlage).

Die Angabe des Drehwinkels definiert die Anzahl der Umdrehungen, die Angabe des Drehwinkels erfolgt in Grad (360° = 1 Vollkreis).

Folgende Parameter finden Verwendung:

W Angabe des Winkels (in Grad), der durch die Helix überstrichen wird
Hinweis: Die Angabe dieses Parameters muß unmittelbar hinter der Anweisung CwHlxAbs erfolgen!

I Mittelpunkt X (relativ zur aktuellen Position S)
J Mittelpunkt Y (relativ zur aktuellen Position S)
K Mittelpunkt Z (relativ zur aktuellen Position S)

Die Angabe des Mittelpunktes ist abhängig von der verwendeten Interpolationsebene. Je nach Ebene werden zwei der drei Mittelpunktskoordinaten verwendet, die dritte Angabe wird ignoriert:

XY Verwendet werden I, J
XZ Verwendet werden I, K
YZ Verwendet werden J, K

X Endposition der Achse X (absolut)
Y Endposition der Achse Y (absolut)
Z Endposition der Achse Z (absolut)

Für alle Achsen, die an einer Maschine zur Verfügung stehen, können Endpositionen angegeben werden, die während der Helixinterpolation erreicht werden sollen. Falls die Endpositionen einzelner Achsen bereits durch einen anderen Parameter zwingend bestimmt wurden (z.B. X und Y bei der Helixinterpolation in der XY-Ebene, hier wird die Zielposition X und Y durch die Angabe des Mittelpunktes M sowie des Winkels W festgelegt), so werden die betreffenden Parameter ignoriert.

Wenn bei einer Helix die Parameter so gewählt werden, daß keine Tiefe entsteht, dann kann mit Hilfe des Helix-Befehls ein Kreisbefehl mit einem überstrichenen Winkel von mehr als 360° realisiert werden.

Modalität:

Parameter, die für den aktuellen Kreisbefehl keine Auswirkung auf die Durchführung haben, können weggelassen werden. In diesem Fall werden als Parameter entweder 0 (bei der Angabe von relativen Parametern) oder die jeweils aktuelle Achsposition (bei der Angabe von Absolutparametern) verwendet. So kann z.B. für die Ausführung eines Vollkreises der Befehl

MoveAbs X10.0 Y10.0 Z-20.0

CcwHlxAbs W360 I0 J10 K0 X10 Y10 Z-20

auch in der Form

MoveAbs X10.0 Y10.0 Z-20.0

CcwHlxAbs W360 J10

geschrieben werden.

Beispiel:

MoveAbs X10.0 Y10.0 Z-20.0

; Interpolation in der XY-Ebene

Plane XY

;Helix mit 2 Windungen, die insgesamt eine

;Tiefe von 10 mm erreichen

CwHlxAbs W720 I10 J0 X10 Y10 Z-30

MoveAbs X10.0 Y10.0 Z-20.0

; Interpolation in der XZ-Ebene

Plane XZ

;Helix mit 1 Windung mit einer Zustellung

;von 10 mm in Richtung Y

CwHlxAbs W360 I0 K-10 X10 Y20 Z-20

MoveAbs X10.0 Y10.0 Z-20.0

; Interpolation in der YZ-Ebene

Plane YZ

;Helix mit 4 Windungen, in Richtung X

;betraegt die Zustellung 20 mm

CwHlxAbs W1440 J10 K0 X-10 Y10 Z-20

Siehe auch: CcwHlxAbs, CcwHlxRel, CwHlxRel, Plane


CwHlxRel

CwHlxRel W... I... J... K...X... Y... Z...

Helixinterpolation im Uhrzeigersinn mit Verwendung von relativen Zielkoordinaten

Spiralbewegung im Uhrzeigersinn um einen Mittelpunkt M mit dem Drehwinkel W zu einem Endpunkt E.

Im Uhrzeigersinn bedeutet: Bei einer Blickrichtung aus positiver Richtung auf die Ebene, in der die Helixinterpolation ausgeführt wird, bewegt sich das Werkzeug im Uhrzeigersinn (rechts) um den Mittelpunkt herum.

Die Bezugsebene für die Helixinterpolation wird mit Hilfe des Befehls Plane festgelegt.

Die Angabe der Koordinaten des Endpunktes E erfolgt relativ, d.h die Koordinaten X, Y, Z, ,... für die Angabe der Zielpositionen aller Achsen der Anlage beziehen sich auf die aktuell erreichten Positionen der Achsen der Anlage. Die aktuelle Position bildet somit den Startpunkt S für die Helix-Interpolation.

Die Angabe der Mittelpunkts-Koordinaten erfolgt immer relativ bezüglich des Start-Punktes S.

Die Angabe des Drehwinkels definiert die Anzahl der Umdrehungen, die Angabe des Drehwinkels erfolgt in Grad (360° = 1 Vollkreis).

Folgende Parameter finden Verwendung:

W Angabe des Winkels (in Grad), der durch die Helix überstrichen wird
Hinweis: Die Angabe dieses Parameters muß unmittelbar hinter der Anweisung CwHlxRel erfolgen!

I Mittelpunkt X (relativ zur aktuellen Position S)
J Mittelpunkt Y (relativ zur aktuellen Position S)
K Mittelpunkt Z (relativ zur aktuellen Position S)

Die Angabe des Mittelpunktes ist abhängig von der verwendeten Interpolationsebene. Je nach Ebene werden zwei der drei Mittelpunktskoordinaten verwendet, die dritte Angabe wird ignoriert:

XY Verwendet werden I, J
XZ Verwendet werden I, K
YZ Verwendet werden J, K

X Endposition der Achse X (relativ zur aktuellen Position S)
Y Endposition der Achse Y (relativ zur aktuellen Position S)
Z Endposition der Achse Z (relativ zur aktuellen Position S)

Für alle Achsen, die an einer Maschine zur Verfügung stehen, können Endpositionen angegeben werden, die während der Helixinterpolation erreicht werden sollen. Falls die Endpositionen einzelner Achsen bereits durch einen anderen Parameter zwingend bestimmt wurden (z.B. X und Y bei der Helixinterpolation in der XY-Ebene, hier wird die Zielposition X und Y durch die Angabe des Mittelpunktes M sowie des Winkels W festgelegt), so werden die betreffenden Parameter ignoriert.

Wenn bei einer Helix die Parameter so gewählt werden, daß keine Tiefe entsteht, dann kann mit Hilfe des Helix-Befehls ein Kreisbefehl mit einem überstrichenen Winkel von mehr als 360° realisiert werden.

Modalität:

Parameter, die für den aktuellen Kreisbefehl keine Auswirkung auf die Durchführung haben, können weggelassen werden. In diesem Fall werden als Parameter entweder 0 (bei der Angabe von relativen Parametern) oder die jeweils aktuelle Achsposition (bei der Angabe von Absolutparametern) verwendet. So kann z.B. für die Ausführung eines Vollkreises der Befehl

CwHlxRel W360 I0 J10 K0 X0 Y0 Z0

auch in der Form

CwHlxRel W360 J10

geschrieben werden.

Beispiel:

; Interpolation in der XY-Ebene

Plane XY

;Helix mit 2 Windungen, die insgesamt eine

;Tiefe von 10 mm erreichen

CwHlxRel W720 I10 J0 X0 Y0 Z-10

;Helix mit 1,5 Windungen ueber eine

;Laenge von 10 mm

CwHlxRel W540 I10 J0 X20 Y0 Z-10

; Interpolation in der XZ-Ebene

Plane XZ

;Helix mit 1 Windung mit einer Zustellung

;von 10 mm in Richtung Y

CwHlxRel W360 I0 K-10 X0 Y10 Z0

; Interpolation in der YZ-Ebene

Plane YZ

;Helix mit 4 Windungen, in Richtung X

;betraegt die Zustellung 20 mm

CwHlxRel W1440 J10 K0 X-20 Y0 Z0

Siehe auch: CcwHlxAbs, CcwHlxRel, CwHlxAbs, Plane


Cyl

Cyl Drehachse Radius Linearachse

Bearbeitung auf einer Zylindermantelfläche

Dieser Befehl wird verwendet, um eine Standard-Bearbeitungsdatei, welche für die Bearbeitung im kartesischen Koordinatensystem erstellt wurde, auf der Oberfläche eines zylindrischen Körpers zu bearbeiten.

Verwendete Parameter

Drehachse

Angabe des Achsbuchstabens der Drehachse, welche das zylindrische Werkstück bewegt. Bei Achssystemen mit nur einer Drehachse ist das immer der Achsbuchstabe A.

Radius

Angabe des Radius des zylindrischen Werkstücks. Diese Angabe wird benötigt, damit die linearen Koordinaten aus der Standard-Bearbeitungsdatei, welche für die Bearbeitung im kartesischen Koordinatensystem erstellt wurde, korrekt in die entsprechende Drehbewegung umgerechnet werden kann. Die Angabe des Radius erfolgt in mm (Millimeter).

Linearachse

Angabe der Linearachse, welche durch die Drehachse ersetzt wird. Die Koordinaten dieser Achse werden unter Verwendung des angegebenen Radius in die entsprechenden Winkelkoordinaten für die angegebene Drehachse umgerechnet.

Angabe von | Kinematische Ausführung
X | Die Drehachse ist parallel zur Y-Achse montiert, die Koordinaten der Achse X aus der Bearbeitungsdatei werden umgerechnet und für die Drehachse verwendet.
Y | Die Drehachse ist parallel zur X-Achse montiert, die Koordinaten der Achse Y aus der Bearbeitungsdatei werden umgerechnet und für die Drehachse verwendet.

Beispiel:

;Verwendete Einheiten

; Positionen linear: mm (Millimeter)

; Positionen drehend: º (Grad)

; Geschwindigkeiten linear: mm/s (Millimeter/Sekunde)

;Geschwindigkeiten drehend: º/s (Grad /Sekunde)

Cyl A100 Y ;Radius: 100 mm, Drehachse ist Achse A

;Drehachse A ist parallel zur X-Achse montiert

;...

;...

Cyl A0 ;Mantelflächenmodus deaktivieren: Radius = 0 mm

Cyl B100 X ;Radius: 100 mm, Drehachse ist B

;Drehachse B ist parallel zur Y-Achse montiert

;...

;...

Cyl B0 ;Mantelflächenmodus dbeenden: Radius = 0 mm


Deactivate VPO

Deactivate VPO Axn

Deaktivieren der Betriebsart VPO einer Handlingachse

Show/Hide Hidden Text

Die Betriebsart VPO (Velocity Proportional Operation) einer Handlingachse ist eine spezielle Funktion, welche bewirkt, daß sich die aktuelle Geschwindigkeit einer Handlingachse nach der interpolierten Geschwindigkeit der drei kartesischen Achsen X, Y und Z richtet. Je nach aktuellem Wert der führenden Geschwindigkeit Vxyz wird versucht, die aktuelle Geschwindigkeit der Handlingachse innerhalb eines gewissen Look-Ahead-Zeitraums an die Geschwindigkeitsänderungen der führenden Achsen im kartesischen System XYZ anzupassen.

Typische Anwendung: Nachführen einer Dispenser-Achse

Voraussetzungen

·Isel Can-CNC Version 01.60.00.90 auf allen Endstufen und Can-Treiber

·ProNC in der Version: ab 1.46.8.1

·ProNC-Compiler-Version: ab 1.46.8.2

Das Kommando "AxStart VPO" wird für das deaktivieren der Betriebsart VPO für Handlingachsen benutzt.

Parameter des Befehls:

Axn

Angabe der Handlingachse, für welche die Betriebsart VPO deaktiviert werden soll. n ist der Index der Handlingachse, gültige Werte sind 1, 2, 3, ... 6.

Beschreibung der Funktionsweise

Beim Aufruf der Funktion AxStart wird die Handlingsachse mit der zuvor übergebenen Beschleunigung auf die übergebene Geschwindigkeit beschleunigt. Mit Hilfe der Startgeschwindigkeit, der Sollgeschwindigkeit und der Beschleunigung kann man berechnen, wie groß die Zeit und die Distanz zwischen Startgeschwindigkeit und Sollgeschwindigkeit sind. Sobald die Achse die Sollgeschwindigkeit erreicht hat, folgt die Handlingsachse proportional der Bahngeschwindigkeit. Diese kann bis zur MaxLookAheadTime vorausberechnet werden. Diese Funktionalität kann speziell beim Dosieren abhängig von Viskosität des Materials sinnvoll sein.

Beim Aufruf der Funktion AxStop wird die Handlingsachse mit der zuletzt übergebenen Beschleunigung auf die Startgeschwindigkeit der Handlingsachse abgebremst. Das heißt, wenn die Handlingsachse sich mit einer Geschwindigkeit von 5°/s dreht und anschließend der VPO-Modus aktiviert und gestartet wird und im Anschluß der VPO-Modus gestoppt wird, dann nimmt die Handlingsachse wieder die Ausgangsgeschwindigkeit von 5°/s ein.

Gleichmäßig beschleunigte Bewegung – Geschwindigkeits-Zeit-Gesetz:

Sollgeschwindigkeit = Beschleunigung * ZeitStartSoll + Startgeschwindigkeit
ZeitStartSoll = (Sollgeschwindigkeit – Startgeschwindigkeit) / Beschleunigung

Gleichmäßig beschleunigte Bewegung - Weg-Zeit-Gesetz:

WegStartSoll = Beschleunigung / 2 * ZeitStartSoll^2 + Startgeschwindigkeit * ZeitStartSoll

Die Funktionen können in folgender Reihenfolge aufgerufen werden (EBNF):

GetParam

Activate

{

[Bewegungsdaten]

SetParam

[Bewegungsdaten]

AxStart

[Bewegungsdaten]

[SetParam]

AxStop

[Bewegungsdaten]

}

Deactivate

Zeichenerklärung:

Verwendung | Zeichen
Option | [ … ]
Optionale Wiederholung | { … }

Siehe auch: Activate VPO, AxStart VPO, AxStop VPO, SetParam VPO, GetParam VPO


Delay

Delay t

Ausführen einer Wartezeit im NC-Programm

Führt eine Zeitverzögerung aus. Die Angabe der Zeitverzögerung t erfolgt in Millisekunden.

Im Gegensatz zur Funktion TIME wird die laufende Zeitverzögerung nur in der Statuszeile eingeblendet, das Programm bleibt bedienbar. Diese Funktion sollte bevorzugt vor der Funktion TIME eingesetzt werden, um die Programmbedienung auch während einer laufenden Zeitverzögerung zu ermöglichen.

Beispiel:

DELAY 2000

Siehe auch: Wait, Time


DeleteFile

DeleteFile [param] str_file

Datei löschen

Löscht die angegebene Datei. Durch die optionale Angabe zusätzlicher Parameter kann das Laufzeitverhalten der Funktion an die jeweilige Aufgabenstellung angepasst werden.

Syntax:

DeleteFile [param] str_file

Parameter des Befehls:

str_file | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) welche den Namen der Datei enthält, die gelöscht werden soll.
ALLOWUNDO | Sichert, wenn möglich, alle Informationen für die Operation "Rückgängig"
FILESONLY | Die Aktion wird nur auf Dateien angewendet, wenn die Angabe des Quelldateinamens eine Wildcard ("*.*") enthält.
NOCONFIRMATION | Falls während der Dateioperation eine Benutzerabfrage erfolgt, werden alle Dialoge mit "Ja zu allem" beantwortet.
NOERRORUI | Wenn während der Dateioperation ein Fehler auftritt, wird die Fehlermeldung unterdrückt.
SILENT | Es wird keine Fortschrittsanzeige für die Dateioperation angezeigt.

Hinweis: Im Gegensatz zu vielen anderen Befehlen und Kommandos, bei denen die Reihenfolge der Parameter nicht festgelegt ist, müssen bei diesem Befehl die optionalen Parameter param vor der Angabe des Dateinamens stehen.

Beispiel:

Str11="C:\NCProg\"

Str12="NCP-Dateien|*.NCP|Alle Dateien|*.*||"

;zuvor die Zeichenkettenvariable R1 mit einer

;leeren Zeichenkette initialisieren

Str1=""

;Dateiauswahldialog aufrufen...

R1=FileDialog OpenFileDialog=1 Result=Str1 DefaultPath=Str11 DefaultExtension="NCP" Filter=Str12

;Loeschen der Datei starten

;wenn der Parameter NOCONFIRMATION weggelassen wird

;erscheint die Standardabfrage von Windows und fordert

;den Anwender auf, das Loeschen zu bestaetigen

DeleteFile NOCONFIRMATION Str1

Siehe auch: CopyFile, MoveFile, FileDialog, FileExists, SplitPath, MakePath, GetFileType


Display

Display [Param] [zn] [sn] [Row=ivar|rvar] [Col=ivar|rvar] "Text"

Ausgabe eines Hinweistextes in ein Display

Ausgabe eines Hinweistextes in ein Display. Das Display kann das reale Display eines Controllers sein oder eine Simulation für den Betrieb auf einem Desktop-PC.

Achtung: Für den Betrieb eines zusätzlichen Hardware-Displays ist ein entsprechendes Software-Interface erforderlich!

Beispiel für die Darstellung des Soft-Displays in ProNC

Folgende Parameter finden Verwendung:

RESET Löscht die Display-Anzeige und stellt den Einschaltzustand des Display-Gerätes wieder her.

CLEAR [zn] Löschen einer Zeile mit der Zeilennummer zn. Gültige Zeilennummern bewegen sich im Bereich von 1 ... max. Anzahl der Zeilen des Displays. Falls keine explizite Zeilennummer angegeben wird, so wird der Inhalt des gesamten Displays gelöscht.

CLEAR [zn] [sn] Löschen eines einzelnen Zeichens an der Position (Zeilennummer,Spaltennummer). Gültige Zeilennummern bewegen sich im Bereich von 1 ... max. Anzahl der Zeilen des Displays, gültige Spaltennummern laufen von 1 ... max. Anzahl der Spalten des Displays.

LEFT Festlegung der Orientierung der Textausgabe auf "Linksbündig". Die Angabe einer Spaltennummer in einem nachfolgenden Display-Befehl bezieht sich auf die linke Seite des zur Verfügung stehenden Ausgabebereichs.

CENTER Festlegung der Orientierung der Textausgabe auf "Zentriert". Die Angabe einer Spaltennummer in einem nachfolgenden Display-Befehl ist wirkungslos.

RIGHT Festlegung der Orientierung der Textausgabe auf "Rechtsbündig". Die Angabe einer Spaltennummer in einem nachfolgenden Display-Befehl bezieht sich auf die rechte Seite des zur Verfügung stehenden Ausgabebereichs.

[zn] [sn] ["text"] Die Parameter zn und sn geben die Zeilennummer sowie Spaltennummer an, in welcher der Text "text" ausgegeben werden soll. Gültige Zeilennummern bewegen sich im Bereich von 1 ... max. Anzahl der Zeilen des Displays, gültige Spaltennummern laufen von 1 ... max. Anzahl der Spalten des Displays. Falls der Parameter sn nicht angegeben wird, so wird automatisch die Position "Spalte 1" verwendet. Falls der Parameter zn nicht angegeben wird, so wird automatisch die Position "Zeile 1" verwendet.

[Row=ivar|rvar]

[Col=ivar|rvar] Falls für die Angabe der Zeilennummer oder der Spaltennummer Variablen verwendet werden sollen, müssen der jeweiligen Variable die Schlüsselwörter "Row=" (für die Angabe der Zeilennummer) bzw. "Col=" (für die Angabe der Spaltennummer) vorangestellt werden. Als Variable sind I-Variablen (I0...I999) oder R-Variablen (R0...R999) zulässig. Die Variablennamen können außerdem mit Hilfe der Anweisung "#define" über einen Textersatz dargestellt werden.

ADD "text" Der gesamte Inhalt des Text-Displays wird um eine Zeile nach oben gescrollt, anschließend wird in der letzten (nun leeren) Zeile des Displays der neue Text "text" eingefügt.

BACKCOL r,g,b Angabe der Hintergrundfarbe für das durch ProNC bereitgestellte Soft-Display. Die resultierende Hintergrundfarbe wird anteilig aus den drei Grundfarben Rot, Grün und Blau zusammengestellt. Die drei Parameter r, g und b geben den Anteil der Grundfarbe an, der Wert kann jeweils im Bereich von 0 ... 255 liegen. Hierbei bedeutet 0, daß die jeweilige Farbe gar nicht verwendet wird, 255 daß die Farbe mit ihrem maximalen Anteil verwendet wird.

TEXTCOL r,g,b Angabe der Farbe des im Display ausgegebenen Textes. Die resultierende Textfarbe wird anteilig aus den drei Grundfarben Rot, Grün und Blau zusammengestellt. Die drei Parameter r, g und b geben den Anteil der Grundfarbe an, der Wert kann jeweils im Bereich von 0 ... 255 liegen. Hierbei bedeutet 0, daß die jeweilige Farbe gar nicht verwendet wird, 255 daß die Farbe mit ihrem maximalen Anteil verwendet wird.
Die erforderlichen Parameter für die Festlegung von Farben können mit Hilfe eines Standard-Farbeinstelldialogs aus einem beliebigen Zeichenprogramm ermittelt werden:
Hier ist zu erkennen, daß zur Darstellung der Farbe Hellrot die Parameter R=0, G=64 sowie B=128 verwendet werden müssen, der erforderliche Befehl wäre also Display TEXTCOL 0,64,128.

LOADCONFIG inifile Im Display-Dialog der Anwendung besteht die Möglichkeit, Konfigurationen und Einstellungen des Dialogs wie zum Beispiel die Anzahl der Zeilen und Spalten, die verwendeten Farben, Schriftgröße und Schriftart usw. in einer Initialisierungsdatei zu speichern. Falls es erforderlich sein sollte, in verschiedenen Programmen mit unterschiedlichen Display-Konfigurationen zu arbeiten, kann mit Hilfe des Befehls "Display LoadConfig inifile" eine Display-Konfiguration zur Laufzeit geladen und zur Anzeige gebracht werden.
Der Parameter "inifile" ist der vollständige Name und Pfad der Initialisierungsdatei, die im Dialog "Einstellungen" des Display-Dialogs mit der Schaltfläche "Konfiguration speichern" erstellt wurde. Für den Parameter "inifile" kann eine Zeichenkette oder eine Zeichenkettenvariable (Str-Variable) angegeben werden.

Beispiele:

[1]

;Hintergrundfarbe des Displays auf "Schwarz" setzen

DISPLAY BACKCOL 0,0,0

;Textfarbe des Displays auf "Weiss" setzen

DISPLAY TEXTCOL 255,255,255

[2]

;Ausgabe eines Textes an der Position Zeile=1, Spalte=1

DISPLAY 1 1 "Start des Bearbeitungsprogramms erfolgt!"

[3]

;Festlegung eines Standard-Textes mit einem #define-Statement

#define Txt_BetrBereitschHerst "Betriebsbereitschaft herstellen"

;Festlegung von standardisierten Aktionen mit #define-Statements

#define Display_Aktion Display 5 2

#define Display_Aktion_Clear Display CLEAR 5

;...

Display_Aktion Txt_BetrBereitschHerst ;Anzeige der Aktion

;...

;Programmcode zur Herstellung der Betriebsbereitschaft

;...

Display_Aktion_Clear

[4]

;Festlegung eines Variablen-Klartextnamens mit einem #define-Statement

#define Str_Text Str1

;Festlegung eines Standard-Textes mit einem #define-Statement

#define Txt_EingangAktiv "Eingang ist aktiv: "

;Text an die String-Variable zuweisen

Str_Text=Txt_EingangAktiv

;Wenn Eingang 1.1 oder 1.2 aktive ist: Einen entprechenden Text zuweisen

If E1.1

Str_Text=Str_Text+"1"

EndIf

If E1.2

Str_Text=Str_Text+"2"

EndIf

;Anzeige dieses Textes auf dem Display

Display 3 2 Str_Text

[5]

;Anzeige des Wertes der R-Variablen R11 an der Position Zeile=5, Spalte=2 auf dem Display

Display 5 2 "%R11%"

[6]

;Anzeige der aktuellen Positionen X und Y

;(R1101 stellt die aktuelle Position der X-Achse dar,

;R1102 die aktuelle Position der Y-Achse)

Display 10 2 "X:%R1101%"

Display 10 22 "Y:%R1102%"

[7]

;Laden einer Konfigurationsdatei und Anpassung des

;Erscheinungsbildes des Display-Dialogs zur Laufzeit

;Angabe von Name und Pfad der Konfigurationsdatei als Zeichenkette

Display LOADCONFIG "C:\Temp\Display.INI"

;Angabe von Name und Pfad der Konfigurationsdatei

;mit einer Zeichenkettenvariablen (Str-Variablen)

Str1="C:\Temp\Display2.INI"

Display LOADCONFIG Str1

[8]

;Verwendung von Variablen fuer die Angabe

;von Zeilen- und Spaltennummer

R101=4 ;Textausgabe in Zeile 4

R102=1 ;in Spalte 1

Display Row=R1 Col=R2 "Startposition anfahren"

;oder mit Hilfe der Anweisung #define

#define ZEILE R1

#define SPALTE R2

ZEILE=4

SPALTE=1

Display Row=ZEILE Col=SPALTE "Startposition anfahren"

Siehe auch: String-Variablen, I-Variablen, R-Variablen, #define


DistRegulator

DistRegulator ax_id op

Abstandsregelung einer CAN-Endstufe parametrieren bzw. ein-/ausschalten

Bei den CAN-Endstufen des Typs IMD20 und IMD40 kann ab der Firmware-Version 1.60.00.80 eine interne Funktion für das nachführen der Position in Abhängigkeit von einem analogen Eingangswert verwendet werden, z.B. für die Höhennachführung der Achse Z auf einer unebenen Bearbeitungsfläche.

Hinweis: Die nachstehende Beschreibung bezieht sich grundlegend auf die Höhennachführung der Z-Achse einer Maschine.

Für die Parametrierung der Abstandsregulierung sind sehr viele Parameter erforderlich, so daß im Gegensatz zu fast allen anderen Befehlen des CNC-Befehlssatzes eine Besonderheit zum Tragen kommt: Die Arbeitsparameter der Abstandsregulierung werden vor dem Aufruf des Befehls in I-Variablen geschrieben bzw. können nach dem Aufruf des Befehls aus I-Variablen gelesen werden.

Die verwendeten I-Variablen befinden sich im Bereich I901 ... I926 und haben nachstehende Bedeutung:

I-Variable | Parameter | Richtung | Bedeutung
I901 | ADResolution | eingehend | Auflösung des AD-Wandlers, 10=10-bit, 11=11-bit, 12=12-Bit
I902 | ADVoltageRange | eingehend | Angabe des Eingangsspannungsbereichs in mV (Millivolt)
I903 | ADDesiredValue | eingehend | Sollwert des AD-Wandlers, welcher eingehalten werden soll, Angabe in digits
I904 | ADDeadBand | eingehend |
I905 | ADMaxNegDeviation | eingehend | max. negative Abweichung des Analogwertes in digits
I906 | ADMaxPosDeviation | eingehend | max. positive Abweichung des Analogwertes in digits
I907 | DistanceFactorNumerator | eingehend | Umrechnungsfaktor Analoginkrement - Abstand
I908 | DistanceFactorDivisor | eingehend | Umrechnungsfaktor Analoginkrement - Abstand
I909 | ProposeRegulatorTime | eingehend | Empfohlene Zeit fur das Ausregeln einer Abweichung in µs (Mikrosekunden).
I910 | RegulatorTime | eingehend | Ausregelzeit fuer die max. Abweichung = Max(dwADMaxNegDeviation, dwADMaxPosDeviation) in 100 Mikrosekunden (0.1 ms, Zehntel-Millisekunden)
I911 | MaxTotalDeviation | eingehend | Maximal zu setzende Totalabweichung in [Anwendereinheit]
I912 | TotalDeviation | eingehend | Gesetzte Totalabweichung in [Anwendereinheit]
I915 | ADValue | ausgehend | Abstandsregler-Parameter
I916 | AccordingDistance | ausgehend |
I921 | ADDesiredValue | ausgehend | Sollwert für das analoge Eingangssignal in digits
I922 | ADDeadBand | ausgehend |
I923 | ADMaxNegDeviation | ausgehend | max. negative Abweichung des Analogwertes in digits
I924 | ADMaxPosDeviation | ausgehend | max. positive Abweichung des Analogwertes in digits
I925 | RegulatorTime | ausgehend | Ausregelzeit fuer die max. Abweichung
I926 | TotalDeviation | ausgehend | Gesetzte Totalabweichung in [Anwendereinheit]

Parameter der Funktion:

ax_id

Angabe der Achse, auf deren Endstufe die Abstandsregulierung aktiviert werden soll. Erwartet wird die Angabe eines der Achs-Identifikatoren X, Y, Z, A, B, ...

op

Auszuführende Operation. Hier sind folgende Parameter möglich

GETPARAM | Abholen der aktuellen Parameter der Abstandsregulierung. Die aktuellen Werte der verschiedenen Parameter werden in die I-Variablen I901 ... I912 übertragen.
SETPARAM | Setzen der Parameter der Abstandsregulierung. Die aktuellen Werte in den I-Variablen I915 ... I916 sowie I921 ... I926 werden an die Abstandsregulierung übertragen.
ON | Aktivieren der Abstandsregulierung
OFF | Deaktivieren der Abstandsregulierung

Beispiel:

;********************************************************

; Event-Handler ...

; Diese Funktion wird immer dann aufgerufen, wenn das

; Anwendungsprogramm, egal an welcher Stelle im

; Programmablauf, beendet wird...

;********************************************************

OnProgEnd

;falls noch eine Bewegung aktiv ist: Diese abbrechen

If InMotion

MAbort

Delay 500

EndIf

;Bei Abbruch des Programms immer Z-Höhenkorrektur aus!!

DistRegulator Z Off

EventReturn

;--------------------------------------------------------

;********************************************************

; Hauptprogramm

;********************************************************

ProgBegin

;Referenzfahrt der Achsen X, Y, Z

Ref XYZ

;aktuelle Parameter der Z-Höhenkorrektur von der

;CAN-Steuerung abfragen (lesen), die 12 gelesenen

;Werte stehen in I901 bis I912

DistRegulator Z GETPARAM

;die Reglerparameter setzen:

;d.h. die relevanten I-Variablen mit den entsprechenden

;Werten beschreiben...

I915 = 1024 ;AD value

I916 = 20 ;According distance

I921 = 500 ;AD Desired value

I922 = 10 ;AD Dead band

I923 = 200 ;AD Max neg deviation

I924 = 200 ;AD max pos deviation

I925 = 5 ;Regulator time

I926 = 35000 ;Total deviation

;Die gesetzten I-Variablen an die CAN-Steuerung

;übergeben (schreiben)

DistRegulator Z SETPARAM

;Jetzt sind alle Voraussetzungen erfüllt, dass

;der Abstandsregler aktiviert werden kann

While 1==1

;Z-Abstandsregulierung einschalten:

DistRegulator Z On

;Geschwindigkeit 40 mm/s

Vel 40

;X-Achse langsam mit aktiver Z-Abstandsregulierung verfahren

MoveAbs X500

;Durch diesen bahnbegrenzenden Befehl werden die beiden

;MoveAbs-Befehle nicht zu einer Bahn zusammengefasst

Delay 10

;Geschwindigkeit 80 mm/s

Vel 80

;X-Achse schneller mit aktiver Z-Abstandsregulierung verfahren

MoveAbs X0

Delay 10

;6-Eck im Bahnmodus mit Relativbewegungen

MoveRel X25 Y-43.301

MoveRel X50

MoveRel X25 Y43.301

MoveRel X-25 Y43.301

MoveRel X-50

MoveRel X-25 Y-43.301

;Z-Abstandsregulierung ausschalten, implizit wird der

;Bahnmodus beendet

;Ausserdem erfolgt in der entsprechenden Achse ein

;Soll-Istwert-Abgleich, damit bei einer nachfolgenden

;Relativbewegung keine Probleme auftreten

DistRegulator Z Off

MoveRel Z100

Delay 10

MoveRel Z-100

Delay 1000

EndWhile

ProgEnd

;--------------------------------------------------------


Do ... EndDo

Wiederholschleife Do...EndDo

Die Do While-Schleife ist eine annehmende Schleife, da die Laufbedingung erst nach mindestens einem Durchlauf überprüft wird und somit immer mindestens eine Bearbeitung der Anweisungen erfolgt. Sie wird eingesetzt wenn bei Schleifenbeginn noch unbekannt ist wieviel Durchläufe erfolgen sollen, wie z.B. bei Eingabeaufforderungen an den Benutzer.

Grundlegende Struktur der Anweisung:

Do

Anweisungsblock

EndDo Ende-Bedingung

Anweisungsblock | Die Kommandos, welche in der Do...EndDo-Schleife ausgeführt werden sollen. Falls der Anweisungsblock nicht durch weitere Verzweigungen eingefasst wird, erfolgt mindestens eine Ausführung dieser Anweisungen.
Ende-Bedingung | Die Bedingung für das beenden der Do...EndDo-Schleife. Sobald die Bedingung "Wahr" (!=0) ist, wird die Schleife beendet.

Beispiel:

;Die Schleife wird beendet, sobald der Wert an Eingangsport

;E1.4 logisch 1 ("Wahr") ist, d.h. der Eingang aktiv ist.

;Die Anweisung "MoveRel Z-0.5" wird mindestens einmal ausgeführt.

DO

MOVEREL Z-0.5

ENDDO E1.4

;Die Schleife wird beendet, sobald der Wert an Eingangsport

;E1.4 logisch 1 ("Wahr") ist, d.h. der Eingang aktiv ist.

;Die Anweisung "MoveRel Z-0.5" wird nur dann ausgeführt,

;wenn der Eingang E1.4 nicht aktiv ist.

DO

IF NOT E1.4

MOVEREL Z-0.5

ENDIF

ENDDO E1.4

Siehe auch: While ... EndWhile, For...EndFor, Continue, Break


Drill

Drill [X...] [Y...] [Z...]

Ausführen eines Bohrzyklus an der Position XYZ

Ausführen eines Bohrzyklus an der Position X, Y, Z. Alle Parameter für die Spezifikation des Bohrzyklus müssen in einer vorangehenden DrillDef-Anweisung festgelegt werden.

Für die Verwendung der Parameter gilt die Modalität, d.h. wenn in vorangegangen Befehlen Parameter eingestellt werden, gelten diese Werte bis zu dem Zeitpunkt, an dem sie erneut gesetzt werden.

Die Verwendung der Positionen erfolgt ebenfalls modal, d.h. falls für eine oder mehrere Achsen keine Positionen angegeben sind, wird die aktuelle Position der jeweiligen Achse verwendet.

Parameter des Befehls:

X, Y, Z

Angabe der Achskoordinaten für die Position der Bohrung. Die Koordinate wird als Inhalt einer Variablen, als arithmetischer Ausdruck oder als Zahlenwert übergeben.

Beispiele:

;Einfaches Bohren

;CY: Bohrzyklus = 1 "Einfaches Bohren"

;PL: Arbeitsebene = 0 "XY"

;DI: Arbeitsrichtung = 0 "Standard/Negativ"

;RF: Referenzhöhe = 1 mm

;DE: Bohrlochtiefe = 10 mm

;TI: Verzögerung nach Erreichen der Tiefe = 0 ms

;VE: Vorschubgeschwindigkeit = 1 mm/s

;VF: Eilgeschwindigkeit = 10 mm/s

;LE: Rückzugsebene nach Bohren = 1 mm

;SE: Sicherheitshöhe = 2 mm

DrillDef CY1 PL0 DI0 RF1 DE10 TI0 VE1 VF10 LE1 SE2

;Bohren an der aktuellen Position

Drill

;Bohren an X 20 mm

Drill X20.0

;5 Bohrungen in einer Reihe

R1=20.0

Drill XR1 Y50.0

R1=R1+5.0

Drill XR1

R1=R1+5.0

Drill XR1

R1=R1+5.0

Drill XR1

R1=R1+5.0

Drill XR1

;Einfaches Bohren mit Wartezeit

;TI: Verzögerung nach Erreichen der Tiefe = 2500 ms)

DrillDef CY1 PL0 DI0 RF1 DE10 TI2500 VE1 VF10 LE1 SE2

;Bohren mit Wartezeit an der aktuellen Position

Drill

;Ausräumen

;CY: Bohrzyklus = 2 "Ausräumen"

;TI: Verzögerung nach Erreichen der Tiefe = 1000 ms)

;FI: Erste inkrementelle Zustelltiefe = 3 mm

;OT: Weitere inkrementelle Zustelltiefen = 1 mm

DrillDef CY2 PL0 DI0 RF1 DE10 TI1000 VE1 VF10 FI3 OT1 LE1 SE2

;Bohren an X 20 mm

R1=19.5

R2=75.1

Drill XR1 YR2

;Spanbrechen

;CY: Bohrzyklus = 3 "Spanbrechen"

DrillDef CY3 PL0 DI0 RF1 DE10 TI1000 VE1 VF10 FI3 OT1 LE1 SE2

;Bohren an der aktuellen Position

Drill

Siehe auch: DrillDef, Drill, DrillB, DrillD, DrillT


DrillB

DrillB [X...] [Y...] [Z...]

Ausführen des Bohrzyklus "Spanbrechen" an der optionalen Position XYZ

Ausführen des Bohrzyklus "Spanbrechen" an der Position X, Y, Z.

Dieser Befehl entspricht im wesentlichen dem Befehl "Drill", jedoch ist hier als Bohrzyklus der Zyklus "Spanbrechen" fest eingestellt und wird angewendet, auch wenn in einer vorhergehenden DrillDef-Anweisung ein anderer Zyklus definiert wurde. Die Konfiguration aller anderen Parameter erfolgt über den Befehl DrillDef.

Für die Verwendung der Parameter gilt die Modalität, d.h. wenn in vorangegangen DrillDef-Befehlen Parameter eingestellt werden, gelten diese Werte bis zu dem Zeitpunkt, an dem sie erneut gesetzt werden.

Die Verwendung der Positionen erfolgt ebenfalls modal, d.h. falls für eine oder mehrere Achsen keine Positionen angegeben sind, wird die aktuelle Position der jeweiligen Achse verwendet.

Parameter des Befehls:

X, Y, Z

Angabe der Achskoordinaten für die Position der Bohrung. Die Koordinate wird als Inhalt einer Variablen, als arithmetischer Ausdruck oder als Zahlenwert übergeben.

Beispiele:

;Einfaches Bohren

;CY: Bohrzyklus = 1 "Einfaches Bohren", nicht erforderlich bei DrillB

;PL: Arbeitsebene = 0 "XY"

;DI: Arbeitsrichtung = 0 "Standard/Negativ"

;RF: Referenzhöhe = 1 mm

;DE: Bohrlochtiefe = 10 mm

;TI: Verzögerung nach Erreichen der Tiefe = 0 ms

;VE: Vorschubgeschwindigkeit = 1 mm/s

;VF: Eilgeschwindigkeit = 10 mm/s

;LE: Rückzugsebene nach Bohren = 1 mm

;SE: Sicherheitshöhe = 2 mm

DrillDef PL0 DI0 RF1 DE10 TI0 VE1 VF10 LE1 SE2

;Bohren mit Spanbrechen an der aktuellen Position

DrillB

;Bohren mit Spanbrechen an X 20 mm

DrillB X20

;5 Bohrungen in einer Reihe

R1=20.0

DrillB XR1 Y50.0

R1=R1+5.0

DrillB XR1

R1=R1+5.0

DrillB XR1

R1=R1+5.0

DrillB XR1

R1=R1+5.0

DrillB XR1

Siehe auch: DrillDef, Drill, DrillD, DrillT


DrillD

DrillD [X...] [Y...] [Z...]

Ausführen des Bohrzyklus "Ausräumen" an der optionalen Position XYZ

Ausführen des Bohrzyklus "Ausräumen" an der Position X, Y, Z.

Dieser Befehl entspricht im wesentlichen dem Befehl "Drill", jedoch ist hier als Bohrzyklus der Zyklus "Ausräumen" fest eingestellt und wird angewendet, auch wenn in einer vorhergehenden DrillDef-Anweisung ein anderer Zyklus definiert wurde. Die Konfiguration aller anderen Parameter erfolgt über den Befehl DrillDef.

Für die Verwendung der Parameter gilt die Modalität, d.h. wenn in vorangegangen DrillDef-Befehlen Parameter eingestellt werden, gelten diese Werte bis zu dem Zeitpunkt, an dem sie erneut gesetzt werden.

Die Verwendung der Positionen erfolgt ebenfalls modal, d.h. falls für eine oder mehrere Achsen keine Positionen angegeben sind, wird die aktuelle Position der jeweiligen Achse verwendet.

Parameter des Befehls:

X, Y, Z

Angabe der Achskoordinaten für die Position der Bohrung. Die Koordinate wird als Inhalt einer Variablen, als arithmetischer Ausdruck oder als Zahlenwert übergeben.

Beispiele:

;Ausräumen

;CY: Bohrzyklus = 2 "Ausräumen", nicht erforderlich bei DrillD

;TI: Verzögerung nach Erreichen der Tiefe = 1000 ms)

;FI: Erste inkrementelle Zustelltiefe = 3 mm

;OT: Weitere inkrementelle Zustelltiefen = 1 mm

DrillDef PL0 DI0 RF1 DE10 TI1000 VE1 VF10 FI3 OT1 LE1 SE2

;Bohren an der aktuellen Position der Achsen

DrillD

;Bohren an X 20 mm und aktueller Y-Position

DrillD X20

;Mehrere Bohrungen mit Zyklus "Ausräumen" in einer Reihe

DrillD X20.0 Y50.0

DrillD X30.0

DrillD X40.0

DrillD X50.0

;5 Bohrungen in einer Reihe

R1=20.0

DrillD XR1 Y50.0

R1=R1+5.0

DrillD XR1

R1=R1+5.0

DrillD XR1

R1=R1+5.0

DrillD XR1

R1=R1+5.0

DrillD XR1

Siehe auch: DrillDef, Drill, DrillB, DrillT


DrillT

DrillT [X...] [Y...] [Z...] TIME=time

Ausführen des Bohrzyklus "Einfaches Bohren mit Verweilzeit" an der optionalen Position XYZ

Ausführen des Bohrzyklus "Einfaches Bohren mit Verweilzeit" an der Position X, Y, Z.

Dieser Befehl entspricht im wesentlichen dem Befehl "Drill", jedoch ist hier als Bohrzyklus der Zyklus "Einfaches Bohren" fest eingestellt und wird angewendet, auch wenn in einer vorhergehenden DrillDef-Anweisung ein anderer Zyklus definiert wurde. Als weiterer Parameter kann eine Wartezeit angegeben werden, die nach Erreichen der Endtiefe der Bohrung ausgeführt wird. Die Konfiguration aller anderen Parameter erfolgt über den Befehl DrillDef.

Für die Verwendung der Parameter gilt die Modalität, d.h. wenn in vorangegangen DrillDef-Befehlen Parameter eingestellt werden, gelten diese Werte bis zu dem Zeitpunkt, an dem sie erneut gesetzt werden.

Die Verwendung der Positionen erfolgt ebenfalls modal, d.h. falls für eine oder mehrere Achsen keine Positionen angegeben sind, wird die aktuelle Position der jeweiligen Achse verwendet.

Parameter des Befehls:

X, Y, Z | Angabe der Achskoordinaten für die Position der Bohrung. Die Koordinate wird als Inhalt einer Variablen, als arithmetischer Ausdruck oder als Zahlenwert übergeben.
time | Die Verweilzeit nach Erreichen der Endtiefe der Bohrung

Beispiele:

;Einfaches Bohren

;CY: Bohrzyklus = 1 "Einfaches Bohren"

;PL: Arbeitsebene = 0 "XY"

;DI: Arbeitsrichtung = 0 "Standard/Negativ"

;RF: Referenzhöhe = 1 mm

;DE: Bohrlochtiefe = 10 mm

;TI: Verzögerung nach Erreichen der Tiefe = 0 ms

;VE: Vorschubgeschwindigkeit = 1 mm/s

;VF: Eilgeschwindigkeit = 10 mm/s

;LE: Rückzugsebene nach Bohren = 1 mm

;SE: Sicherheitshöhe = 2 mm

DrillDef PL0 DI0 RF1 DE10 VE1 VF10 LE1 SE2

;Bohren mit Verweilzeit an der aktuellen Position

DrillT Time=500

;Bohren mit Verweilzeit an X 20 mm

DrillT X20 Time=5000

Siehe auch: DrillDef, Drill, DrillB, DrillD


DrillDef

DrillDef CY PL DI RF DE TI VE VF FI OT IC RE LE SE

Definition von Parametern für einen Bohrzyklus

Definition von Bohrzyklusparametern für den nachfolgenden Aufruf von Bohrzyklen mit dem Befehl Drill.

Verwendete Parameter:

CY Bohrzyklus: 1=Einfaches Bohren, 2=Ausräumen, 3=Spanbrechen

PL Arbeitsebene: 1=XY, 2=XZ, 3=YZ

DI Arbeitsrichtung: 0=Standard/Negativ, 1=Invers/Positiv

RF Referenzhöhe: Angabe in mm

DE Bohrlochtiefe, Angabe in mm als (positiver) Absolutwert

TI Wartezeit nach Erreichen der Bohrtiefe in ms (Millisekunden)

VE Vorschubgeschwindigkeit in mm/s

VF Eilgeschwindigkeit in mm/s

FI Erste inkrementelle Zustelltiefe, Angabe in mm als (positiver) Absolutwert

OT Weitere inkrementelle Zustelltiefen, Angabe in mm als (positiver) Absolutwert

IC Abnahme der inkrementellen Zustelltiefe, Angabe in mm als (positiver) Absolutwert

RE Inkrementeller Rückzug in mm, Angabe als (positiver) Absolutwert

LE Rückzugsebene nach Bohren in mm

SE Sicherheitshöhe in mm

Die Referenzhöhe bezieht sich auf einen gesetzten Werkstücknullpunkt. Falls kein WErkstücknullpunkt vor der Ausführung eines Bohrzyklus aktiviert wurde, bezieht sich die Referenzhöhe auf den Maschinennullpunkt der Achse Z.

Alle anderen Angaben beziehen sich auf die Referenzhöhe. Alle Parameter werden als positive Werte angegeben.

Übersicht der verwendeten Bohrzyklen

·Bohrzyklus "Einfaches Bohren"

Das Werkzeug fährt mit der Vorschubgeschwindigkeit "VE" auf die Tiefe "DE" und wird anschließend auf die Sicherheitssebene "SE" zurückgezogen.

·Bohrzyklus "Einfaches Bohren mit Wartezeit"

Das Werkzeug fährt mit Vorschub auf die Tiefe DE. Der Zyklus wird um die Zeit TI angehalten und anschliessend im Eilgang zur Rückzugsebene fortgesetzt.

·Bohrzyklus "Ausräumen"

Das Werkzeug fährt um den Wert FI in das Werkstück, wartet die vorgegebene Wartezeit, kehrt im Eilgang auf die Rückzugsebene zurück, taucht auf die letzte Zustelltiefe minus Sicherheitsabstand und fährt um das nächst Inkrement OT und diesen Sicherheitsabstand weiter. Der Zyklus wird so lange ausgeführt bis die Tiefe DE erreicht ist. Die eigene Berechnung der Schnittaufteilungen ist nicht erforderlich.

·Bohrzyklus "Spanbrechen"

Das Werkzeug fährt um den Wert FI in das Werkstück, wartet die vorgegebene Wartezeit, kehrt im Eilgang die letzte Position vor dem inkrementellen Zustellen zurück, taucht auf die letzte Zustelltiefe minus Sicherheitsabstand und fährt um das nächst Inkrement OT und diesen Sicherheitsabstand weiter. Der Zyklus wird so lange ausgeführt bis die Tiefe DE erreicht ist. Die eigene Berechnung der Schnittaufteilungen ist nicht erforderlich.

Beispiel:

;Festlegung verschiedener Bohrparameter

;mit direkter Angabe von Werten

DrillDef CY1 PL0 DE5.0 TI0 VE1.5 FI1.5 OT1.0 IC0.2 RE1.0 LE2.0 SE3.0

;Aufruf des Bohrzyklus "Einfaches Bohren"

Drill X25.0 Y25.0

;Festlegung verschiedener Parameter

;mit Hilfe von R-Variablen

;Zyklus ist "Einfaches Bohren mit Wartezeit" (CY=1, TI=1000)

R121=5.0

R122=1.5

Drill CY1 PL0 DER121 TI1000 VER122 FI1.5 OT1.0 IC0.2 RE1.0 LE2.0 SE3.0

;Aufruf des Bohrzyklus

;"Einfaches Bohren mit Wartezeit"

Drill X25.0 Y25.0

Siehe auch: Drill, DrillB, DrillD, DrillT


EnterString

Strn=EnterString [Title=title] [DlgStyle=dlgstyle] [EditField=editfield] [messagetext]

Eingabe einer Zeichenkette durch den Benutzer

Noch nicht implementiert!

Funktion für die Anzeige eines Dialogs zur Eingabe einer Zeichenkette.

Im Gegensatz zur Funktion GetString bietet dieser Dialog weitere Features, wie z.B. eine AutoClose-Funktion nach Änderung der Eingabe oder erweiterte Formatierungsmöglichkeiten.

Parameter des Befehls:

Strn | Eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index n, die zur Aufnahme des zurückgelieferten Wertes dient.
title | Optionale Angabe einer Zeichenkette oder einer Str-Variablen, die einen Text zur Darstellung im Titelbalken des Dialogs enthält.
editfield | Optionale Angabe einer Zeichenkette oder einer Str-Variablen, die einen Default-Text enthält, der in das Eingabefeld für die Ergebnis-Zeichenkette eingetragen wird.
messagetext | Optionale Angabe einer Zeichenkette oder einer Str-Variablen, die einen Text zur Darstellung im Infofeld des Dialogs enthält.


Ep.b

Zugriff auf einen Eingang

Diese Kurzanweisung wird für den Zugriff auf einen Eingangskanal verwendet und ist vergleichbar mit dem Befehl GetBit. Sie dient zum Einlesen des Wertes des einzelnen Bits b eines Eingangsports p. Gültige Portnummern reichen von 1 ... Anzahl der verfügbaren Eingangsports, gültige Bitnummern reichen von 1 ... 8.

Zu beachten ist, daß die Eingänge bzw. Ausgänge in der Systemsteuerung sowohl als Ein-/Ausgabegerät als auch als logische Ports in der Ein-/Ausgangsverwaltung eingerichtet wurden.

Die Anweisung für den Zugriff auf das Eingangsbit kann in Kombination mit verschiedenen weiteren Befehlen für die schnelle und effektive Programmierung komplexer Anweisungen verwendet werden.

·Auswerten einer Bedingung für eine Verzweigung

If E1.2

MoveRel X20.0

EndIf

·Warten auf ein Signal

While NOT E1.2

Endwhile

·Warten solange ein Signal anliegt

While E1.5

Endwhile

·Bewegung ausführen bis Eingang 1 aktiv ist

MoveRel X20 E1.1

·Bewegung ausführen solange Eingang 1 aktiv ist

MoveRel X20 NOT E1.1

Beispiel:

;Warten auf Bit E1.1, wenn der Eingang aktiv ist

;wird eine Fahrbewegung gestartet solange

;der Eingang aktiv bleibt

While NOT E1.1

Endwhile

MoveRel X100.0 NOT E1.1

Siehe auch: SetBit, ResBit, GetBit, SetPort, GetPort, SetAnalog, GetAnalog, SetPWM


ErrorDetection

ErrorDetection [ON] [OFF]

Ein- / Ausschalten der Fehlererkennung des Interpreters

Bei der Standard-Bearbeitung von CNC-Dateien ist die Fehlererkennung und -auswertung des Interpreters aktiviert. Treten während der Laufzeit eines CNC-Bearbeitungsprogramms Fehler in der Motion Control, der Ein-/Ausgabeumgebung, bei der Frässpindel oder im Werkzeugwechselsystem auf, werden diese Fehler erkannt, die Bearbeitung wird angehalten und eine Fehlermeldung angezeigt.

Diese Fehlererkennung und -weiterverarbeitung kann mit dem Befehl ErrorDetection ein- und ausgeschaltet werden.

Parameter des Befehls:

ON

Einschalten der Fehlererkennung und -auswertung.

Der Befehl "ErrorDetection ON" ist insbesondere dann sinnvoll einsetzbar, wenn in einem Programm die eigentliche Bearbeitung nach der programmatischen Herstellung der Betriebsbereitschaft der Maschine erfolgt. In diesem Fall ist diese Vorgehensweise zu empfehlen:

·Aktivieren der Option "Ungeprüften Bearbeitungsstart erlauben" in der Initialisierungsdatei "ProNC.INI"

·Starten des Bearbeitungsprogramms, die Programmschritte zur Überprüfung und ggfs. Herstellung der Betriebsbereitschaft der Maschine werden durchgeführt.

·Nach der Herstellung der Betriebsbereitschaft Aufruf des Befehls "ErrorDetection ON", um die Fehlererkennung wieder einzuschalten.

·Die nachfolgenden Anweisungen des CNC-Programms werden ab jetzt auf das Auftreten von Laufzeitfehlern überwacht.

OFF

Ausschalten der Fehlererkennung und -auswertung.

Das Ausschalten der Fehlererkennung während der Laufzeit eines CNC-Programms ist z.B. in der ErrorHandler-Funktion eines PAL-Programms sinnvoll. Nach dem Auftreten eines Fehler wird diese Behandlungsfunktion aufgerufen. Hier kann nach Ausschalten der Fehlererkennung versucht werden, den aufgetretenen Fehler programmatisch zu beheben.

Beispiel:

;Ausschalten der Fehlererkennung

ErrorDetection OFF

WpClear

MoveRel X-20.0

;mit diesem Befehl könnte die Achse z.B. in den Software-Endschalter fahren

;Statusabfrage der Motion Control

I1=GetStateMctl(1)

;Die Achse Y faehrt trotzdem

MoveRel Y-20.0

;wenn der Software-Endschalter aktiv ist

;Achse X aus dem SW-Endschalter fahren

If(I1&0x00080000)

MoveRel X5.0

EndIF

;Wiedereinschalten der Fehlererkennung

ErrorDetection ON


EventReturn

Rückkehr aus einer Eventhandler-Routine

In ProNC ab Version 1.45.x besteht die Möglichkeit, auf verschiedene Ereignisse, die während einer Programmbearbeitung stattfinden können, programmatisch mit sogenannten Event-Handlern zu reagieren.

Bei jedem Auftreten des Ereignisses, für welches eine Eventhandler-Routine hinterlegt wurde, wird in die entsprechende Subroutine gesprungen und der darin enthaltene Code ausgeführt.

Der Befehl "EventReturn" dient zum Abschluß der Subroutine des Eventhandlers. Nach Erreichen des Befehls EventReturn im Eventhandler wird im normalen Programmablauf an der Stelle fortgefahren, an der das Ereignis aufgetreten ist.

Die Deklaration der Subroutine des Eventhandlers muß vor der Deklaration des Hauptprogramms erfolgen. Die Subroutine des Eventhandlers muß mit dem Befehl "EventReturn" abgeschlossen werden. Der Befehl "Return" für die Rückkehr aus einem Unterprogramm darf nicht verwendet werden.

Beispiel:

;*****************************

;EventHandler fuer den

;Beginn der Bearbeitung

;Bei jedem Programmstart wird

;Ausgang 1.4 geloescht und

;Ausgang 1.1 gesetzt

;*****************************

OnProgBegin

ResBit A1.4

SetBit A1.1

EventReturn

;-----------------------------

;*****************************

;EventHandler fuer das

;Ende der Bearbeitung

;Bei Ende der Bearbeitung wird

;Ausgang 1.1 geloescht und

;die Fraesspindel ausgeschaltet

;*****************************

OnProgEnd

ResBit A1.1

Spindle OFF

EventReturn

;-----------------------------

;*****************************

;Hauptprogramm

;*****************************

ProgBegin

...

ProgEnd

;-----------------------------

Siehe auch: OnProgBegin, OnProgEnd, OnProcessStop, OnProcessStart, OnError, OnEmergencyOff, OnTimer


Execute

Rn|In=Execute cncfile

Ausführen der Bearbeitung einer externen CNC- oder NCP-Datei

Dieser Befehl ermöglicht die Ausführung einer NC-Datei (im NCP-, ISO- oder CNC-Format) als untergeordneten Prozess in einem PAL-Anwenderprogramm.

NCP | Ein isel-spezifisches Format, welches für die sequentielle Bearbeitung von Fräsdateien (vorwiegend generiert durch den Postprozessor eines CAM-Systems) verwendet wird
ISO | Ein Format für Programme zur Maschinensteuerung nach der Norm DIN 66025/ISO 6983. Programme in diesem Format werden meist kurz DIN/ISO-Programmierung genannt. Ein DIN-Programm ist auf jeder CNC-Maschine lauffähig.
CNC | Ein isel-spezifisches Format, welches durch den NC-Interpreter von ProNC für die Steuerung der Maschinen verwendet wird. Dateien im CNC-Format werden durch die Übersetzung einer Quelldatei im (isel-spezifischen) PAL-Format durch den NC-Compiler (NcComp.DLL) erstellt.

Die Bearbeitung einer NC-Datei als untergeordneter Prozess in einem PAL-Programmgerüst ermöglicht die flexible Reaktion auf unterschiedliche in der Praxis oft vorkommende Situationen wie

·materialabhängige Bearbeitungen

·Auswahl des zu bearbeitenden Werkstücks

·parametrische Programmierung

·Externe Bereitstellung der Fräsdatei und Einbinden in ein Prozessgerüst

·flexible Einbindung in eine Fertigungskette mit übergeordneter Prozeßsteuerung

Parameter des Befehls:

Rn

Angabe einer R-Variablen (Real-Variable, Gleitkommawert-Variable) mit dem Index n, in der das Ergebnis des Aufrufs abgelegt wird.

Die Angabe einer Variablen für den Rückgabe ist erforderlich!

In

Angabe einer I-Variablen (Integer-Variable, ganzzahlige Variable) mit dem Index n, in der das Ergebnis des Aufrufs abgelegt wird.

cncfile

Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index n, welche den vollständigen Pfad und Namen der externen einzubindenden Bearbeitungsdatei enthält.

Hinweis: Es ist immer die Angabe des vollständigen Pfads und Namens des auszuführenden CNC-Programms erforderlich.

Hinweis: Das Binden des Rückgabewertes an eine R- oder i-Variable ist verbindlich

Ausführen von Anweisungen

Eine erlaubte Anweisung wie z.B. "MoveAbs X100.0 F100.0" wird als Einzeilenkommando interpretiert und ausgeführt. Somit besteht die Möglichkeit, Anweisungen zur Laufzeit des CNC-Programms dynamisch zu formulieren und auszuführen.

Rückgabewert des ausgeführten Programms:

Der Rückgabewert der Funktion richtet sich nach einem Standardwert, welcher geliefert wird wenn kein expliziter Rückgabewert im aufzurufenden NC-Programm definiert ist. Die Definition des Rückgabewertes richtet sich nach dem Wert, der im aufgerufenen Programm beim Befehl "PROGEND" als Parameter in eckigen Klammern hinter dem Schlüsselwort steht.

Beispiel: ProgEnd [2] -> an Rn/In wird der Rückgabewert 2 übertragen.

Falls kein expliziter Rückgabewert angegeben wurde und die Bearbeitung des eingebetteten Programms erfolgreich ausgeführt werden konnte, ist der Standard-Rückgabewert 0.

Beispiel:

(1)

;Uebergabe des Dateinamens

;in einer Str-Variablen

Str1="C:\NCProg\ExecuteNcpFiles\Isel.ncp"

;Der Rueckgabewert wird in I1 uebertragen

I1=Execute Str1

(2)

;Uebergabe des Dateinamens

;als Zeichenkette

;Der Rueckgabewert wird in R1 uebertragen

R1=Execute "C:\NcProg\CncFiles\Test.CNC"

(3)

;Verwendung einer String-Variablen fuer eine Pfadangabe

;mit Anhaengen des Dateinamens als Zeichenkette

#define StrProgramPath Str311

...

StrProgramPath="C:\NcProg\CncFiles\"

I101=Execute StrProgramPath+"Test.ISO"


EXP

EXP(w)

Berechnen der Exponentialfunktion

Berechnet die Exponentialfunktion des Wertes w mit der Basis e. Die Eulersche Zahl e ist die Basis des natürlichen Logarithmus und der natürlichen Exponentialfunktion.

Beispiel:

R22=EXP(R21) ; R-Variable als Argument

R22=EXP(0) ; Ergebnis ist 1

R22=EXP(1) ; Ergebnis ist 2.718282 (die Zahl e)


F

Vel

Angabe des Vorschubs für Segmentbewegungen

Gibt die Geschwindigkeit für die aktuelle und folgende Verfahrbewegungen als Parameter eines Fahrbefehls an. Die zuletzt gesetzte Geschwindigkeit wird verwendet, bis eine neue Normalgeschwindigkeit (entweder mit Vel oder F) eingestellt wird. Die Angabe der Geschwindigkeit erfolgt in Millimeter / Sekunde, wenn mindestens eine Linearachse an der Bewegung beteiligt ist, wenn die Bewegung ausschliesslich von Drehachsen ausgeführt wird, dann wird die Geschwindigkeit in grad/sec. angegeben.

Der Vorschub kann entweder in der gleichen Zeile wie z.B. ein Bewegungsbefehl angegeben werden oder als separate Anweisung in einer einzelnen Befehlszeile.

In ProNC können ab Version 1.45.0.2 die sechs Handlingachsen Ax1 bis Ax6 programmiert werden. Entsprechend können Geschwindigkeitswerte für die einzelnen Handlingachsen mit dem Operator F programmiert werden.

F Axn = wert (n=1...6)

Ist die Handlingachse eine Linearachse, wird der Vorschub in mm/sec definiert.

Ist die Handlingachse eine Rundachse, wird der Vorschub in grad/sec definiert.

Beispiele:

;Angabe der Vorschubgeschwindigkeit für eine Linearbewegung

MOVEABS X0 Y0 Z0 F25.0 ;Anfahren mit 25 mm/s

MOVEABS X0 Y0 Z-5.0 F2.5 ;Absenken mit 2.5 mm/s

;Modale Angabe der Vorschubgeschwindigkeit für nachfolgende Verfahrbewegungen

Vel 1500

MOVEABS X0 Y0 Z-5.0

MOVEABS X10 Y0 F25.0

MOVEABS X10 Y10 F25.0

...

;Definiere den Vorschub der Handlingachse 1 (für den Position Mode)

;- auf 10 mm/sec (Handlingachse 1 ist eine Linearachse) bzw.

;- auf 10 grd/sec (Handlingachse 1 ist eine Rundachse)

FAx1 = 10

Siehe auch: Vel, FastVel, RVel, FastRVel


FABS

FABS w

Funktion zur Ermittlung des Betrags einer Zahl

Funktion für die Ermittlung des Betrages eines vorzeichenbehafteten numerischen Ausdrucks w.

Beispiele:

R2=FABS(R1)

; Ergibt den positiven Wert von R1, d.h. wenn R1 negativ ist, enthält R2 den positiven Wert, wenn R1 positiv ist, enthält R2 den Originalwert von R1.

R2=FABS(-5.0)

; Ergibt den Betrag von -5, also 5

Siehe auch: Floor


FastAbs

FastAbs Seq=... X... Y... Z... E...

Lineare Eilbewegung an eine Absolut-Zielposition

Show/Hide Hidden Text

Lineare Bewegung an eine Zielposition unter Verwendung der aktuell gesetzten Eilgeschwindigkeit (siehe Befehl FASTVEL).

Verwendete Parameter:

X Zielkoordinate der Achse X
Y Zielkoordinate der Achse Y
Z Zielkoordinate der Achse Z
A Zielkoordinate der Achse A
B Zielkoordinate der Achse B
C Zielkoordinate der Achse C
U Zielkoordinate der Achse U
V Zielkoordinate der Achse V
W Zielkoordinate der Achse W

E Angabe der Fahrgeschwindigkeit für die Eilgangbewegung

Seq Angabe der Bewegungsreihenfolge der Achsen

Die Angabe der Koordinaten erfolgt in Absolutwerten, welche sich auf den gesetzten Werkstücknullpunkt beziehen. Falls kein Werkstücknullpunkt aktiv ist, bezieht sich die Zielposition auf den Maschinennullpunkt. Der Maschinennullpunkt ist die Position, die durch die Referenzfahrt der Maschine ermittelt wird.

Beispiele:

;Fahren mit Eilgeschwindigkeit 60 mm/s an Zielposition

FastVel 60.0

FastAbs X20.5 Y12.28 Z-21.32

;Ablage der Zielkoordinaten in R-Variablen

R22=R25-5.25

FastAbs XR22 Y10

;Dynamische Berechnung der Zielkoordinaten

;und Ablage in R-Variablen

R22=R25-R26

FastAbs YR22

Festlegung der Bewegungsreihenfolge der Achsen

Durch die Option "SEQ" kann die Reihenfolge festgelegt werden, in der die beteiligten Achsen einer Eilbewegung an ihre Zielpositionen fahren. Die Angabe der Verfahrreihenfolge ist sehr nützlich, wenn z.B. die Gefahr von Kollisionen mit Aufbauten auf einem Maschinentisch besteht.

Gültige Parameter für die Option "Seq" sind:

·"Auto", "Direct", "X", "Y", "Z", "A", "B", "C", "U", "V", "W" sowie die Kombinationen hieraus ("XY,Z", "Z,XY", "Z,Auto", "A,Z,XY", ...)

Mehr...

Die Option "SEQ" kann für alle Geradenbefehle verwendet werden:

G00, FastAbs, FastRel,

G01, MoveAbs, MoveRel,

G10, FastFrame,

G11, MoveFrame

Nach Seq=... kann eine String-Konstante (Zeichenkette, eingeschlossen in Anführungszeichen " ) oder eine Str-Variable (Str1 ... Str999) folgen.

Folgende Anweisungen sind möglich:

Geradenbefehl SEQ="Auto" X... Y... Z...

Die Z-Achse wird sicher verfahren. Bezogen auf ein kartesisches Koordinatensystem bedeutet das:

·Wenn die aktuelle Position der Z-Achse "tiefer" ist als die Zielposition Z, wird zunächst die Z-Achse, anschließend die Achsen X und Y verfahren

·Wenn die aktuelle Position der Z-Achse "höher" ist als die Zielposition Z, werden zunächst die X- und Y-Achse verfahren, anschließend wird die Achse Z zugestellt

Geradenbefehl SEQ="Direct" X... Y... Z...

Alle Achsen werden synchron verfahren. Dies ist das Standard-Verhalten eines Bewegungsbefehls. Bei Angabe dieser Option verhalten sich die Achsen also so als ob die Option "SEQ" nicht angegeben wäre.

Geradenbefehl SEQ="Y,Z,X" X... Y... Z...

Die Reihenfolge des Achsfahrens erfolgt wie angegeben: Zuerst wird die Y-Achse verfahren, dann die Achse Z, zuletzt die Achse X. Falls der Befehl weitere Zielkoordinaten für beteiligte Achsen enthält, werden diese ignoriert. Verfahren werden nur die Achsen, die in der Anfahrreihenfolge angegeben werden. Gültige Trennzeichen sind ",", ";", " ".

Geradenbefehl SEQ="Z,XY" X... Y... Z...

Werden 2 oder mehr Achsen in einem Block angegeben, so verfahren diese Achsen synchron. Hier wird zunächst die Achse Z verfahren, anschließend fahren X und Y synchron an ihre Zielpositionen.

Str5="Auto"

Geradenbefehl SEQ=Str5 X... Y...

Die Zeichenkettenvariable Str5 enthält die Reihenfolge für das Fahren der Achsen. Vor Verwendung dieses Befehls muß die Variable mit einer entsprechenden Zeichenkette initialisiert werden.

Geradenbefehl SEQ FramePosition

Die Bewegungsreihenfolge erfolgt wie in der Framedefinition festgelegt. Diese Festlegung erfolgt in den Dialogen für

·das Einstellen und Verwalten von Maschinenpositionen

·das Einstellen und Verwalten von Werkstücknullpunkten

·das Einstellen und Verwalten von spezifischen Frame-Dateien für PAL-Quellprogramme

Beispiel:

(1)

;Fahren mit v=80 mm/s an Zielposition

FastVel 80.0

FastAbs Seq="Auto" X20.5 Y12.28 Z-21.32

(2)

;Zuweisung der Bewegungssequenz-Steuerzeichenkette

Str1 = "Auto"

Str2 = "Direct"

Str3 = "X,Y,Z"

;Angabe der Fahrgeschwindigkeit: Eilgeschwindigkeit 100mm/sec

FastVel 100

;Fahren an Zielposition, Modus ist "Z sicher fahren"

FastAbs Seq=Str1 X10 Y20 Z30

;Fahren an Position (0,0,0), alle Achsen synchron

FastAbs X0 Y0 Z0

;Fahren an Zielposition, Modus ist "alle Achsen gleichzeitig"

;Die Eilgeschwindigkeit (Angabe mit "E") ist 200 mm/s

FastAbs Seq=Str2 X10 Y20 Z30 E200

;Bewegungen zurück, diesmal in der Reihenfolge

;erst X, dann Y, dann Z

FastAbs Seq=Str3 X0 Y0 Z0

(3)

;Verwendung der Bewegungssequenz-Steuerzeichenkette

;einer Frame-Variablen

;Die Bewegungsreihenfolge ist wie in der Framedefinition festgelegt

FastFrame SEQ StartPos2

;Wird die Option "SEQ" nicht angegeben, werden alle Achsen

;synchron verfahren

FastFrame StartPos2

Siehe auch: MoveAbs, MoveRel, FastRel, MoveFrame, FastFrame, InMotion, MStop, MStart, MAbort, FastVel


FastFrame

FastFrame Seq=... framename / Qn E...

Eilbewegung an eine Zielposition (definiert durch Frame-Variable)

Show/Hide Hidden Text

Lineare Bewegung an eine Zielposition, welche durch Angabe einer Framevariablen definiert wird. Die Framevariable kann entweder direkt als Name einer angelegten Framevariablen oder als eine Q-Variable mit Index übergeben werden.

Für jede NC-Quelldatei kann zur Verwendung beim Programmlauf eine entsprechende Framedatei zugeordnet werden. Dies geschieht, indem eine Framedatei mit gleichem Namen wie die NC-Quelldatei, jedoch der Extension "FRA" im Standardverzeichnis für Framedateien angelegt wird. In dieser Framedatei können die Namen der Frames festgelegt werden sowie die jeweiligen Achspositionen zugewiesen werden. Im Programm kann entweder durch Angabe des Framenamens aus die Frame-Variable zugegriffen werden oder durch Übertrag der Framevariablen in eine Q-Variable und anschließender Verwendung der Q-Variablen.

Weitere Frames werden festgelegt, indem

·eine Maschinenposition unter Verwendung des entsprechenden Dialogs angelegt wird

·ein Werkstücknullpunkt unter Verwendung des entsprechenden Dialogs angelegt wird

Frames, die als Maschinenposition oder als Werkstücknullpunkt angelegt werden, können ebenfalls unter Verwendung des Framenamens in den Befehlen MoveFrame und FastFrame verwendet werden.

Die Verfahrbewegung wird unter Verwendung der aktuell gesetzten Eilgeschwindigkeit (siehe Befehl FASTVEL) ausgeführt.

Verwendete Parameter:

framename Angabe eines Frames mit den Zielkoordinaten

Qn Angabe einer Q-Variablen mit den Zielkoordinaten

Seq Angabe der Bewegungsreihenfolge der Achsen

Hinweis: Ein Framename kann maximal 40 Zeichen lang sein. Falls ein Framename verwendet wird, der die Maximallänge überschreitet, wird ein Laufzeitfehler angezeigt.

Beispiele:

; Direkte Angabe des Namens der Framevariablen

FASTVEL 50.0

FASTFRAME STARTPOS1

; Zuweisen der Framevariablen an eine Q-Variable

; Verwendung der Q-Variablen für MoveFrame

Q1=STARTPOS2

FASTFRAME Q1

; Zuweisen der Framevariablen an mehrere Q-Variable

; Indizierter Zugriff auf die Q-Variablen

Q1=POSITION1

Q2=POSITION2

Q3=POSITION3

R1=1

FASTFRAME QR1

R1=2

FASTFRAME QR1

R1=3

FASTFRAME QR1

; oder Verwendung in einer Schleife

;nacheinander werden Q1 bis Q3 angefahren

FASTVEL 100.0

FOR R1=1,3,1

FASTFRAME QR1

ENDFOR

Festlegung der Bewegungsreihenfolge der Achsen

Durch die Option "SEQ" kann die Reihenfolge festgelegt werden, in der die beteiligten Achsen einer Bewegung an ihre Zielpositionen fahren. Die Angabe der Verfahrreihenfolge ist sehr nützlich, wenn z.B. die Gefahr von Kollisionen mit Aufbauten auf einem Maschinentisch besteht.

Gültige Parameter für die Option "Seq" sind:

·"Auto", "Direct", "X", "Y", "Z", "A", "B", "C", "U", "V", "W" sowie die Kombinationen hieraus ("XY,Z", "Z,XY", "Z,Auto", "A,Z,XY", ...)

Mehr

Die Option "SEQ" kann für alle Geradenbefehle verwendet werden:

G00, FastAbs, FastRel,

G01, MoveAbs, MoveRel,

G10, FastFrame,

G11, MoveFrame

Nach Seq=... kann eine String-Konstante (Zeichenkette, eingeschlossen in Anführungszeichen " ) oder eine Str-Variable (Str1 ... Str999) folgen.

Folgende Anweisungen sind möglich:

Geradenbefehl SEQ="Auto" X... Y... Z...

Die Z-Achse wird sicher verfahren. Bezogen auf ein kartesisches Koordinatensystem bedeutet das:

·Wenn die aktuelle Position der Z-Achse "tiefer" ist als die Zielposition Z, wird zunächst die Z-Achse, anschließend die Achsen X und Y verfahren

·Wenn die aktuelle Position der Z-Achse "höher" ist als die Zielposition Z, werden zunächst die X- und Y-Achse verfahren, anschließend wird die Achse Z zugestellt

Geradenbefehl SEQ="Direct" X... Y... Z...

Ale Achsen werden synchron verfahren. Dies ist das Standard-Verhalten eines Bewegungsbefehls. Bei Angabe dieser Option verhalten sich die Achsen also so als ob die Option "SEQ" nicht angegeben wäre.

Geradenbefehl SEQ="Y,Z,X" X... Y... Z...

Die Reihenfolge des Achsfahrend erfolgt wie angegeben: Zuerst wird die Y-Achse verfahren, dann die Achse Z, zuletzt die Achse X. Falls der Befehl weitere Zielkoordinaten für beteiligte Achsen enthält, werden diese ignoriert. Verfahren werden nur die Achsen, die in der Anfahrreihenfolge angegeben werden. Gültige Trennzeichen sind ",", ";", " ".

Geradenbefehl SEQ="Z,XY" X... Y... Z...

Werden 2 oder mehr Achsen in einem Block angegeben, so verfahren diese Achsen synchron. Hier wird zunächst die Achse Z verfahren, anschließend fahren X und Y synchron an ihre Zielpositionen.

Str5="Auto"

Geradenbefehl SEQ=Str5 X... Y...

Die Zeichenkettenvariable Str5 enthält die Reihenfolge für das Fahren der Achsen. Vor Verwendung dieses Befehls muß die Variable mit einer entsprechenden Zeichenkette initialisiert werden.

Geradenbefehl SEQ FramePosition

Die Bewegungsreihenfolge erfolgt wie in der Framedefinition festgelegt. Diese Festlegung erfolgt in den Dialogen für

·das Einstellen und Verwalten von Maschinenpositionen

·das Einstellen und Verwalten von Werkstücknullpunkten

·das Einstellen und Verwalten von spezifischen Frame-Dateien für PAL-Quellprogramme

Beispiel:

(1)

;Verwendung der Bewegungssequenz-Steuerzeichenkette

;einer Frame-Variablen

;Die Frame-Variable muß in einer entsprechenden Datei

;angelegt sein (z.B. in der Liste der Maschinenpositionen, in der

;Liste der Werkstücknullpunkte oder in der Frame-Datei des Quellprogramms

;Die Bewegungsreihenfolge ist wie in der Framedefinition festgelegt

FastFrame SEQ StartPos2

;Die Bewegungsreihenfolge wird über eine Zeichenkette festgelegt

;in diesem Fall wird die Reihenfolge aus der Framedefinition ignoriert

FastFrame Seq="Auto" StartPos2

;Die Bewegungsreihenfolge wird über eine String-Variable festgelegt,

;die zuvor initialisiert wird

;Die Reihenfolge aus der Framedefinition wird ignoriert

Str11="Z,Auto"

FastFrame Seq=Str11 StartPos2

;Wird die Option "SEQ" nicht angegeben, werden alle Achsen

;synchron verfahren

FastFrame StartPos2

Siehe auch: MoveAbs, MoveRel, FastAbs, FastRel, MoveFrame, InMotion, MStop, MStart, MAbort, FastVel, Q-Variablen


FastRel

FastRel Seq=... X... Y... Z... E...

Lineare Eilbewegung an relative Zielposition

Show/Hide Hidden Text

Lineare Bewegung an eine relative Zielposition unter Verwendung der aktuell gesetzten Eilgeschwindigkeit (siehe Befehl FASTVEL).

Verwendete Parameter:

X Relative Zielkoordinate der Achse X
Y Relative Zielkoordinate der Achse Y
Z Relative Zielkoordinate der Achse Z
A Relative Zielkoordinate der Achse A
B Relative Zielkoordinate der Achse B
C Relative Zielkoordinate der Achse C
U Relative Zielkoordinate der Achse U
V Relative Zielkoordinate der Achse V
W Relative Zielkoordinate der Achse W

E Angabe der Fahrgeschwindigkeit für die Eilgangbewegung

Seq Angabe der Bewegungsreihenfolge der Achsen

Die Angabe der Koordinaten erfolgt in Werten relativ zur aktuellen Position, d.h. alle übergebenen Koordinaten beziehen sich auf die aktuell erreichten Sollpositionen der jeweiligen Achsen.

Beispiele:

;Fahren mit Eilgeschwindigkeit 60 mm/s an Zielposition

FastVel 60.0

FastRel X25 Y-19.78 Z2.32

;Dynamische Begrenzung der Weglaenge

;und Ablage in einer R-Variablen

If R22 > 2.0

R22 = 2.0

EndIf

FastRel XR22

;Vorherige Berechnung der Weglaenge

;und Uebergabe mit der R-Variablen

R22=R25-R26

FastVel 40.0

FastRel YR22

Festlegung der Bewegungsreihenfolge der Achsen

Durch die Option "SEQ" kann die Reihenfolge festgelegt werden, in der die beteiligten Achsen einer Eilbewegung an ihre Zielpositionen fahren. Die Angabe der Verfahrreihenfolge ist sehr nützlich, wenn z.B. die Gefahr von Kollisionen mit Aufbauten auf einem Maschinentisch besteht.

Gültige Parameter für die Option "Seq" sind:

·"Auto", "Direct", "X", "Y", "Z", "A", "B", "C", "U", "V", "W" sowie die Kombinationen hieraus ("XY,Z", "Z,XY", "Z,Auto", "A,Z,XY", ...)

Mehr...

Die Option "SEQ" kann für alle Geradenbefehle verwendet werden:

G00, FastAbs, FastRel,

G01, MoveAbs, MoveRel,

G10, FastFrame,

G11, MoveFrame

Nach Seq=... kann eine String-Konstante (Zeichenkette, eingeschlossen in Anführungszeichen " ) oder eine Str-Variable (Str1 ... Str999) folgen.

Folgende Anweisungen sind möglich:

Geradenbefehl SEQ="Auto" X... Y... Z...

Die Z-Achse wird sicher verfahren. Bezogen auf ein kartesisches Koordinatensystem bedeutet das:

·Wenn die aktuelle Position der Z-Achse "tiefer" ist als die Zielposition Z, wird zunächst die Z-Achse, anschließend die Achsen X und Y verfahren

·Wenn die aktuelle Position der Z-Achse "höher" ist als die Zielposition Z, werden zunächst die X- und Y-Achse verfahren, anschließend wird die Achse Z zugestellt

Geradenbefehl SEQ="Direct" X... Y... Z...

Ale Achsen werden synchron verfahren. Dies ist das Standard-Verhalten eines Bewegungsbefehls. Bei Angabe dieser Option verhalten sich die Achsen also so als ob die Option "SEQ" nicht angegeben wäre.

Geradenbefehl SEQ="Y,Z,X" X... Y... Z...

Die Reihenfolge des Achsfahrend erfolgt wie angegeben: Zuerst wird die Y-Achse verfahren, dann die Achse Z, zuletzt die Achse X. Falls der Befehl weitere Zielkoordinaten für beteiligte Achsen enthält, werden diese ignoriert. Verfahren werden nur die Achsen, die in der Anfahrreihenfolge angegeben werden. Gültige Trennzeichen sind ",", ";", " ".

Geradenbefehl SEQ="Z,XY" X... Y... Z...

Werden 2 oder mehr Achsen in einem Block angegeben, so verfahren diese Achsen synchron. Hier wird zunächst die Achse Z verfahren, anschließend fahren X und Y synchron an ihre Zielpositionen.

Str5="Auto"

Geradenbefehl SEQ=Str5 X... Y...

Die Zeichenkettenvariable Str5 enthält die Reihenfolge für das Fahren der Achsen. Vor Verwendung dieses Befehls muß die Variable mit einer entsprechenden Zeichenkette initialisiert werden.

Geradenbefehl SEQ FramePosition

Die Bewegungsreihenfolge erfolgt wie in der Framedefinition festgelegt. Diese Festlegung erfolgt in den Dialogen für

·das Einstellen und Verwalten von Maschinenpositionen

·das Einstellen und Verwalten von Werkstücknullpunkten

·das Einstellen und Verwalten von spezifischen Frame-Dateien für PAL-Quellprogramme

Beispiel:

(1)

;Fahren mit v=80 mm/s an Zielposition

FastVel 80.0

FastRel Seq="Auto" X205.4 Y122.8 Z-21.32

(2)

;Zuweisung der Bewegungssequenz-Steuerzeichenkette

Str1 = "Auto"

Str2 = "Direct"

Str3 = "X,Y,Z"

;Angabe der Fahrgeschwindigkeit: Eilgeschwindigkeit 100mm/sec

FastVel 100

;Fahren an Zielposition, Modus ist "Z sicher fahren"

FastRel Seq=Str1 X100 Y200 Z-50

;Fahren an Ausgangsposition, alle Achsen synchron

FastRel X-100 Y-200 Z50

;Fahren an Zielposition, Modus ist "alle Achsen gleichzeitig"

;Die Eilgeschwindigkeit (Angabe mit "E") ist 200 mm/s

FastRel Seq=Str2 X100 Y200 Z-50 E200

;Bewegungen zurück, diesmal in der Reihenfolge

;erst X, dann Y, dann Z

FastRel Seq=Str3 X-100 Y-200 Z50

(3)

;Verwendung der Bewegungssequenz-Steuerzeichenkette

;einer Frame-Variablen

;Die Bewegungsreihenfolge ist wie in der Framedefinition festgelegt

FastFrame SEQ StartPos2

;Wird die Option "SEQ" nicht angegeben, werden alle Achsen

;synchron verfahren

FastFrame StartPos2

Siehe auch: MoveAbs, MoveRel, FastAbs, MoveFrame, FastFrame, InMotion, MStop, MStart, MAbort, FastVel


FastRVel

FastRVel v

Angabe der Eilgeschwindigkeit für Drehachsen

Gibt die Sollgeschwindigkeit für die aktuelle und alle weiteren Verfahrbewegungen von Drehachsen im Eilgang an. Die Angabe der Eilgeschwindigkeit ist modal, d.h. die zuletzt gesetzte Eilganggeschwindigkeit wird verwendet, bis eine neue Eilgeschwindigkeit mit dem Befehl FastRVel eingestellt wird. Die Angabe der Geschwindigkeit erfolgt in °/s (Grad/Sekunde).

Beispiel:

FastRVel 30.0

FastAbs A350.0

Umrechnung von °/s in U/min:

v[°/s] * 60

v[u/min] =

360

Umrechnung von U/min in °/s:

v[u/min] * 360

v[°/s] =

60

Siehe auch: Vel, FastVel, RVel, F


FastVel

FastVel v

Angabe der Eilgeschwindigkeit für Linearachsen

Gibt die Sollgeschwindigkeit für die aktuelle und alle weiteren Verfahrbewegungen von Linearachsen im Eilgang an. Die Angabe der Eilgeschwindigkeit ist modal, d.h. die zuletzt gesetzte Eilganggeschwindigkeit wird verwendet, bis eine neue Eilgeschwindigkeit mit dem Befehl FastVel eingestellt wird. Die Angabe der Geschwindigkeit erfolgt in mm/s (Millimeter/Sekunde).

Beispiel:

FastVel 25.0

FastAbs X10.0 Y10.0 Z0.0

Siehe auch: Vel, RVel, FastRVel, F


FAx

FAxn=v

Angabe der Geschwindigkeit für eine Handlingachse

In ProNC können ab Version 1.45.0.2 die sechs Handlingachsen Ax1 bis Ax6 programmiert werden. Die Bezeichner für die Handlingachsen setzen sich aus der Bezeichnung Ax und der nachfolgenden Achsennummer zusammen.

Der Befehl FAxn dient zur Angabe der Vorschubgeschwindigkeit für eine Handlingachse. Der Parameter n stellt dabei die Achsnummer der Handlingachse dar und darf im Bereich 1...6 liegen.

Wenn es sich bei der Handlingachse um eine Linearachse handelt, erfolgt die Angabe der Geschwindigkeit in der zuletzt (mit den Befehlen METRIC oder INCH) gesetzten Einheit. Wenn es sich bei der Handlingachse um eine Drehachse handelt, wird die Geschwindigkeit in Grad/Sekunde angegeben.

Verwendete Parameter:

n (bei FAxn=...)

Achsnummer der Handlingachse, n=1...6

v

Neue Vorschubgeschwindigkeit für die Handlingachse mit der Achsnummer n

Beispiel:

;Die (Linear-)Handlingachse 2 soll

;mit 20 mm/s verfahren

FAx2=20

Ax2PA=300

;Die (Dreh-)Handlingachse 3 soll

;mit 60 °/s verfahren

FAx3=60

Ax3PI=120

;Verwendung in einem weiteren Fahrbefehl

MoveAbs X20.0 Y 35.0 Ax1PA=30 FAx1=20

Siehe auch: Handlingachsen, AxnPA, AxnPI, AxnV, AxStop, AxStart, AxAbort, WaitMove, AxnInMotion, Pos.Axn, SetOpMode, AxOverride, AxReset


FeedPerSec

FeedPerSec
Umschalten der Einheit der Geschwindigkeit auf mm/s

Dieser Befehl dient zur Festlegung der Maßeinheit MILLIMETER/SEKUNDE für die Übergabe von Geschwindigkeiten an translatorische Achsen. Der Befehl wirkt modal, d.h. bei allen Befehlen, die als Parameter Geschwindigkeitswerte für Linearachsen verwenden, wird ab sofort die Maßeinheit mm/s verwendet.

Beispiel:

;Festlegen von Millimeter/Sekunde als

;als Einheit der Geschwindigkeit

FeedPerSec

;Vorschubgeschwindigkeit 5.5 Millimeter/Sekunde

MoveAbs X10 F5.5

;Vorschubgeschwindigkeit 25.2 Millimeter/Sekunde

Vel 25.2

MoveAbs X0

Siehe auch: Metric


FileDialog

Rn,In=FileDialog [OpenFileDialog=0/1] [FileMustExist=0/1] [Result=str_result] [Title=str_title] [DefaultExtension=str_defext ] [DefaultPath=str_defpath] [Filter=str_filter]

Auswahl eines Dateinamens mit dem Dateiauswahl-Dialog

Diese Funktion ermöglicht es, einen Dialog für die Auswahl eines Dateinamens zu öffnen und, nach Auswahl einer Datei, diese Auswahl an eine geeignete Variable zur weiteren Bearbeitung zu übertragen. Die Funktionalität des Dateiauswahldialogs entspricht dabei den Standarddialogen für Öffnen und Speichern in Windows-Anwendungen.

Syntax:

In|Rn=FileDialog OpenFileDialog=1 FileMustExist=1 Result=str_result Title=str_title DefaultPath=str_defpath DefaultExtension=str_defext Filter=str_Filter

Parameter der Funktion:

Rn, In

Eine R-Variable oder I-Variable mit dem Index n, welche einen Code für die vom Anwender getroffene Auswahl enthält. Damit kann festgestellt werden, ob zum Beenden des Dialogs die Schaltflächen "Öffnen" oder "Abbrechen" betätigt wurden.

Rückgabewert |
1 | Der Anwender hat die Auswahl mit der Schaltfläche "Öffnen" beendet.
2 | Die Auswahl wurde mit der Schaltfläche "Abbrechen" beendet.

OpenFileDialog

Ein Schalter für den Modus des Dateiauswahldialogs.

0 | Der Dialog wird im Modus "Datei speichern" dargestellt
1 | Der Dialog wird im Modus "Datei öffnen" dargestellt

FileMustExist

Ein Schalter für den Auswahlmodus des Dateiauswahldialogs. Falls der Schalter aktiviert ist, ist die direkte Angabe des Dateinamens einer nicht existierenden Datei nicht möglich.

0 | Es können auch Dateinamen nicht existierender Dateien angegeben werden
1 | Es können nur existierende Dateien ausgewählt werden

DefaultPath,

DefPath

Angabe eines voreingestellten Pfades für die Dateiauswahlliste. Sofern das angegebene Verzeichnis existiert, wird der Inhalt dieses Verzeichnisses direkt nach dem Öffnen des Dateiauswahldialogs zur Auswahl angeboten.

DefaultExtension,

DefExt

Die Angabe einer voreingestellten Dateinamenerweiterung bewirkt, daß im Eingabefeld "Dateiname" des Dateiauswahldialogs der Auswahlfilter auf "*.str_defext" gesetzt wird, welches die Anzeige der Dateien auf die Dateien beschränkt, welche die angegebene Dateinamenerweiterung haben. Wenn also der Parameter DefaultExtension="NCP" angegeben wird, werden bereits nach dem Öffnen des Dateiauswahldialogs nur Dateien mit der Dateinamenerweiterung "NCP" zur Auswahl angeboten.

Title

Ermöglicht es, einen Titel für den Dateiauswahldialog festzulegen. Der hier angegebene Text wird in der Titelleiste des Dialogs angezeigt.

Result

Angabe einer String-Variablen (Str-Variable), in die das Ergabnis der Dateiauswahl eingetragen werden soll. Nach Auswahl einer Datei und beenden des Dateiauswahldialogs mit "Öffnen" wird der vollständige Name und Pfad der selektierten Datei in die angegebene Str-Variable übertragen.

Filter

Angabe von Filtereinstellungen für den Dateiauswahldialog. Mittels verschiedener Parameter kann die Auswahlmöglichkeit innerhalb des Dialogs begrenzt werden bzw. auf den jeweiligen Anwendungsfall zugeschnitten werden. Die Filterparameter werden in einer Zeichenkette an den Dialog übergeben.

Aufbau der Filter-Zeichenkette:

Filter="desc1|defext1[desc2|defext2|Alle Dateien|*.*]||"

Innerhalb der Filterzeichenkette stehen jeweils Teilzeichenketten für die Beschreibung des Dateityps, z.B. "ISO-Dateien". Zur Abgrenzung dient das Zeichen '|'. Nach der Beschreibung des Dateityps folgt die für diesen Dateityp verwendete Dateinamenerweiterung in der Form "*.ext", z.B. "*.ISO". Um weitere Dateitypen anzugeben, werden einfach weitere Beschreibungen und Dateinamenerweiterungen an die Zeichenkette angehängt, jeweils durch das Trennzeichen '|' abgegrenzt. Um das Ende der Filterzeichenkette zu signalisieren, wird das Trennzeichen doppelt ('||') an das Ende der Zeichenkette angehängt.

Hinweis: Wenn der Dateiauswahldialog mit der Schaltfläche "Abbrechen" beendet wird, bleibt der Inhalt der String-Variablen, die zur Aufnahme des Auswahlergebnisses dient, unverändert. Falls also zuvor eine gültige Dateiauswahl stattgefunden hat, kann der vorher selektierte Dateiname noch vollständig in der Variablen enthalten sein. Damit im weiteren Programmverlauf nicht mit einem ungültigen Dateinamen gearbeitet wird, sollte entweder der Inhalt der String-Variablen vor Aufruf des Dateiauswahldialogs mit einem leeren String initialisiert werden oder der in einer R-Variablen abgelegte Rückgabewert der Funktion überprüft werden.

Beispiele:

(1)

Direkte Angabe der Parameter als Zeichenketten

R1=FileDialog OpenFileDialog=1 DefaultPath="C:\NCProg\WorkFiles" Title="Auswahl der Bearbeitungsdatei" Result=Str1 Filter="ISO-Dateien|*.ISO|Alle Dateien|*.*||"

(2)

Angabe der Parameter in Variablen

Str11="C:\NCProg\WorkFiles"

Str12="Auswahl der Bearbeitungsdatei"

Str13="ISO-Dateien|*.ISO|Alle Dateien|*.*||"

;zuvor die Zeichenkettenvariable R1 mit einer

;leeren Zeichenkette initialisieren

Str1=""

;Dateiauswahldialog aufrufen...

R1=FileDialog OpenFileDialog=1 Result=Str1 DefaultPath=Str11 Title=Str12 Filter=Str13

;Rueckgabewerte fuer den weiteren Verlauf auswerten

If R1==1

;Anwender hat "Oeffnen" gewaehlt..

MessageBox "Gewaehlte Datei: "+Str1

Else

;Es wurde Abbrechen" ausgewaehlt...

MessageBox "Keine Datei ausgewaehlt..."

EndIf

Siehe auch: CopyFile, MoveFile, DeleteFile, FileExists, SplitPath, MakePath, GetFileType


FileExists

In,Rn=FileExists str_filename

Überprüfen der Existenz einer Datei

Das Kommando FileExists ermöglicht die schnelle Ermittlung, ob eine Datei mit dem angegebenen Dateinamen existiert oder nicht. Der übergebene Parameter ist der vollständige Name und Pfad der Datei.

Syntax:

I1=FileExists str_filename

Parameter des Befehls:

In

Angabe einer I-Variablen (Integer-Variable, ganzzahlige Variable) mit dem Index n, in der das Ergebnis der Überprüfung der Existenz der Datei abgelegt wird.

0 | Die Datei existiert nicht
1 | Die Datei existiert

Rn

Angabe einer R-Variablen (Real-Variable, Gleitkommawert-Variable) mit dem Index n, in der das Ergebnis der Überprüfung der Existenz der Datei abgelegt wird.

0 | Die Datei existiert nicht
1 | Die Datei existiert

str_filename

Angabe der zu überprüfenden Datei als Zeichenkette oder als Str-Variable (Zeichenkettenvariable).

Es wird empfohlen, den vollständigen Pfad und Namen der Datei als Parameter an die Funktion zu übergeben, damit die Datei eindeutig identifizierbar ist.

Beispiel:

(1)

Angabe einer statischen Zeichenkette für den Dateinamen

I1=FileExists "C:\NcProg\Datei1.NCP"

If I1==1

MessageBox "Die Datei existiert..."

Else

MessageBox "Die Datei existiert nicht..."

EndIf

(2)

Angabe einer Str-Variablen mit dem Dateinamen

Str11="C:\NCProg"

Str12="Auswahl der Bearbeitungsdatei"

Str13="NCP-Dateien|*.NCP|Alle Dateien|*.*||"

;zuvor die Zeichenkettenvariable R1 mit einer

;leeren Zeichenkette initialisieren

Str1=""

;Dateiauswahldialog aufrufen...

R1=FileDialog Result=Str1 DefPath=Str11 Title=Str12 Filter=Str13

R1=FileExists Str1

If R1==1

MessageBox "Die Datei "+Str1+" existiert..."

Else

MessageBox "Die Datei "+Str1+" existiert nicht..."

EndIf

Siehe auch: CopyFile, MoveFile, DeleteFile, FileDialog, SplitPath, MakePath, GetFileType


FLOOR

FLOOR(w)

Ermitteln des ganzzahligen Anteils einer Zahl

Funktion für das Ermitteln des ganzzahligen Anteils des übergebenen Wertes w. Die Funktion gibt die nächste ganze Zahl zurück, die kleiner oder gleich dem angegebenen numerischen Ausdruck ist.

Beispiele:

R2=FLOOR(2.5) ; Ergibt 2

R2=FLOOR(3.9999) ; Ergibt 3

;Runden eines Wertes

R3=4.49

R4=FLOOR(R3+0.5) ;R4=4.0

R3=4.51

R4=FLOOR(R3+0.5) ;R4=5.0

Siehe auch: FAbs


For ... EndFor

Aufzählende Zählschleife

Aufzählende Zählschleife nach dem Muster

For Rx = Real-Startwert, Real-Endwert, Real-Schrittweite

oder

For In = Integer-Startwert, Integer-Endwert, Integer-Schrittweite

Als Zählvariable wird eine R-Variable Rx (Real-Variable, Gleitkommawert) oder eine I-Variable (Integer-Variable, ganzzahliger Wert) verwendet, die Anweisungen im Schleifenkörper werden n-mal ausgeführt.

Die Anzahl der Schleifendurchläufe errechnet sich nach

Anzahl Durchläufe = (Endwert - Startwert) + 1 / Schrittweite

Die Anzahl der Wiederholungen steht schon beim Eintritt in die Schleife fest. Nach jedem Schleifendurchlauf wird ausgehend vom Startwert der Wert von Rx / In um die Schrittweite erhöht, bis der Endwert erreicht oder überschritten ist. Die Zählvariable, der Startwert, die Schrittweite und der Endwert müssen numerisch sein. Diese Form der Schleife ist daher auch unter dem Begriff Zählschleife bekannt.

Beispiel:

(1)

FOR R1=1,10,1

IF GETPORT E1 & 0x01

MOVEREL X20.0

ENDIF

ENDFOR

(2)

For I0=1,5,1

Display I0 I0+1 "For loop based on I vars: I0=%I0% from 1 to 5"

EndFor

Siehe auch: While...EndWhile, Do...EndDo, Continue, Break


G00

Einstellen des Punktsteuerungsverhaltens

Einstellen des Punktsteuerungsverhaltens. Die nachfolgenden Verfahrbewegungen werden mit Eilgeschwindigkeit ausgeführt.

Beispiel:

(Absolutbewegung im Eilgang)

G90 G00 X20.5 Y12.28 Z-21.32

Siehe auch: G01


G00 G90

G00 G90 X Y Z ...

G90 G00 X Y Z ...

Linearbewegung an Absolut-Zielposition mit Eilgeschwindigkeit

Lineare Bewegung an eine Zielposition unter Verwendung der aktuell gesetzten Eilgeschwindigkeit. Die Angabe der Koordinaten erfolgt in Absolutwerten, welche sich auf den aktiven Werkstücknullpunkt beziehen. Falls kein Werkstücknullpunkt aktiv ist, dient der Maschinennullpunkt als Bezug.

Beispiel:

G90

G00 X20.5 Y12.28 Z-21.32

G00 G90 X0 Y0 Z-5.0

G90 G00 X94.56 Y-51.4 Z-18.04

Siehe auch: G00, G01, G90, G91


G00 G91

G91 G00

Linearbewegung an relative Zielposition mit Eilgeschwindigkeit

Lineare Bewegung an eine Zielposition unter Verwendung der aktuell eingestellten Eilgeschwindigkeit. Die Angabe der Koordinaten erfolgt in Werten relativ zur aktuellen Position.

Beispiel:

(Einstellen von inkrementalen Maßangaben)

G91

(Bewegung im Eilgang an die relative Zielposition)

G00 X25.0 Y-19.78 Z-2.50

(Relative Eilbewegung von 100 mm der Achse Y)

G91 G00 Y100.0

Siehe auch: G00, G01, G90, G91


G01

Einstellen der Geraden-Interpolation

Einstellen der Geraden-Interpolation. Die nachfolgenden Verfahrbewegungen werden interpoliert mit der aktuellen Normalgeschwindigkeit ausgeführt.

Beispiel:

(Absolutbewegung mit Normalgeschwindigkeit)

G90 G01 X20.5 Y12.28 Z-21.32

Siehe auch: G00


G01 G90

G01 G90 X Y Z ...

G90 G01 X Y Z ...

Linearbewegung an Absolut-Zielposition mit Normalgeschwindigkeit

Lineare Bewegung an eine Zielposition unter Verwendung der aktuell eingestellten Normalgeschwindigkeit. Die Angabe der Koordinaten erfolgt in Absolutwerten, welche sich auf den aktiven Werkstücknullpunkt beziehen. Falls kein Werkstücknullpunkt aktiv ist, dient der Maschinennullpunkt als Bezug.

Beispiel:

(Einstellen von Absolut-Maßangaben)

G90

(Ausfuehren der Bewegung)

G01 X20.5 Y12.28 Z-21.32

(Bewegung mit Normalgeschwindigkeit an Absolut-Zielposition)

G90 G01 Z-5.0

G90 G01 X-51.4 Y94.56 Z-18.04

Siehe auch: G00, G01, G90, G91


G01 G91

G01 G91 X Y Z ...

G91 G01 X Y Z ...

Linearbewegung an relative Zielposition mit Normalgeschwindigkeit

Lineare Bewegung an eine Zielposition unter Verwendung der aktuell eingestellten Normalgeschwindigkeit. Die Angabe der Koordinaten erfolgt in Werten relativ zur aktuellen Position.

Beispiel:

(Einstellen von inkrementalen Maßangaben)

G91

(Bewegung mit Normalgeschwindigkeit an die relative Zielposition)

G01 X25.0 Y-19.78 Z-2.0

(Relative Bewegung von 100 mm der Achse Y)

G91 G01 Y100.0

Siehe auch: G00, G01, G90, G91


G02

Kreisinterpolation im Uhrzeigersinn

Kreisinterpolation im Uhrzeigersinn. Die übergebenen Parameter sind Absolutwerte, wenn zuvor mit dem Befehl G90 die Verwendung von absoluten Maßangaben eingestellt wurde, sie sind Relativwerte, wenn zuvor mit dem Befehl G91 die Verwendung relativer Maße eingestellt wurde.

Mit den Befehlen G17, G18, G19 wird die Kreisinterpolationsebene festgelegt. Je nach eingestellter Kreisinterpolationsebene werden die folgenden Parameter verwendet:

Mittelpunkt

Ebene XY I, J

Ebene XZ I, K

Ebene YZ J, K

Endpunkt

Ebene XY X, Y

Ebene XZ X, Z

Ebene YZ Y, Z

Beispiel:

G17 G02 G90 I20 J10 X30 Y10

G18 G02 G90 I20 K10 X30 Z10

Siehe auch: G03, G17, G18, G19, G90, G91


G02 G90

G02 G90 I J K X Y Z ...

G90 G02 I J K X Y Z ...

Kreisinterpolation im Uhrzeigersinn mit Angabe von Absolut-Endpunktkoordinaten

Kreisinterpolation im Uhrzeigersinn. Die übergebenen Parameter sind Absolutwerte, da mit dem Befehl G90 die Verwendung von absoluten Maßangaben eingestellt wurde. Die Interpolationsgeschwindigkeit entspricht der eingestellten Normalgeschwindigkeit.

Mit den Befehlen G17, G18, G19 wird die Kreisinterpolationsebene festgelegt. Je nach eingestellter Kreisinterpolationsebene werden die folgenden Parameter verwendet:

Mittelpunkt

Ebene XY: I, J

Ebene XZ: I, K

Ebene YZ: J, K

Endpunkt

Ebene XY: X, Y

Ebene XZ: X, Z

Ebene YZ: Y, Z

Beispiel:

(Interpolationsebene XY einstellen)

G17

(Kreisbefehl mit Absolut-Koordinaten)

G90 G02 I20 J10 X30 Y10

(Interpolationsebene XZ einstellen)

G18

(Kreisbefehl mit Absolut-Koordinaten)

G90 G02 I20 K10 X30 Z10


G02 G91

G02 G91 I J K X Y Z ...

G91 G02 I J K X Y Z ...

Kreisinterpolation im Uhrzeigersinn mit Angabe von relativen Endpunktkoordinaten

Kreisinterpolation im Uhrzeigersinn. Die übergebenen Parameter für die Endpunktkoordinaten sind Relativwerte, da zuvor mit dem Befehl G91 die Verwendung relativer Maße eingestellt wurde. Die Interpolationsgeschwindigkeit entspricht der eingestellten Normalgeschwindigkeit.

Mit den Befehlen G17, G18, G19 wird die Kreisinterpolationsebene festgelegt. Je nach eingestellter Kreisinterpolationsebene werden die folgenden Parameter verwendet:

Mittelpunkt

Ebene XY I, J

Ebene XZ I, K

Ebene YZ J, K

Endpunkt

Ebene XY X, Y

Ebene XZ X, Z

Ebene YZ Y, Z

Beispiel:

(Interpolationsebene XY einstellen)

G17

(Vollkreis mit Radius 10mm)

G91 G02 I10 J0 K0 X0 Y0 Z0

(Interpolationsebene XZ einstellen)

G18

(Vollkreis in der XZ-Ebene mit Radius 10mm)

G91 G02 I0 J0 K-10 X0 Y0 Z0


G03

Kreisinterpolation im Gegen-Uhrzeigersinn

Kreisinterpolation im Gegen-Uhrzeigersinn. Die übergebenen Parameter sind Absolutwerte, wenn zuvor mit dem Befehl G90 die Verwendung von absoluten Maßangaben eingestellt wurde, sie sind Relativwerte, wenn zuvor mit dem Befehl G91 die Verwendung relativer Maße eingestellt wurde.

Mit den Befehlen G17, G18, G19 wird die Kreisinterpolationsebene festgelegt. Je nach eingestellter Kreisinterpolationsebene werden die folgenden Parameter verwendet:

Mittelpunkt

Ebene XY: I, J

Ebene XZ: I, K

Ebene YZ: J, K

Endpunkt

Ebene XY: X, Y

Ebene XZ: X, Z

Ebene YZ: Y, Z

Beispiel:

G17 G03 G90 I20 J10 X30 Y10

G18 G03 G90 I20 K10 X30 Z10

Siehe auch: G02, G17, G18, G19, G90, G91


G03 G90

G90 G03

Kreisinterpolation im Gegen-Uhrzeigersinn mit Angabe von Absolut-Endpunktkoordinaten

Kreisinterpolation im Gegen-Uhrzeigersinn. Die übergebenen Parameter sind Absolutwerte, da mit dem Befehl G90 die Verwendung von absoluten Maßangaben eingestellt wurde. Die Interpolationsgeschwindigkeit entspricht der eingestellten Normalgeschwindigkeit.

Mit den Befehlen G17, G18, G19 wird die Kreisinterpolationsebene festgelegt. Je nach eingestellter Kreisinterpolationsebene werden die folgenden Parameter verwendet:

Mittelpunkt

Ebene XY: I, J

Ebene XZ: I, K

Ebene YZ: J, K

Endpunkt

Ebene XY: X, Y

Ebene XZ: X, Z

Ebene YZ: Y, Z

Beispiel:

(Interpolationsebene XY einstellen)

G17

(Kreisbefehl mit Absolut-Koordinaten)

G90 G03 I20 J10 X30 Y10

(Interpolationsebene XZ einstellen)

G18

(Kreisbefehl mit Absolut-Koordinaten)

G90 G03 I20 K10 X30 Z10

Siehe auch: G02, G03, G17, G18, G19, G90, G91


G03 G91

G91 G03

Kreisinterpolation im Gegen-Uhrzeigersinn mit Angabe von relativen Endpunktkoordinaten

Kreisinterpolation im Gegen-Uhrzeigersinn. Die übergebenen Werte für die Endpunktkoordinaten sind Relativwerte, da mit dem Befehl G91 die Verwendung relativer Maße eingestellt wurde. Die Interpolationsgeschwindigkeit entspricht der eingestellten Normalgeschwindigkeit.

Mit den Befehlen G17, G18, G19 wird die Kreisinterpolationsebene festgelegt. Je nach eingestellter Kreisinterpolationsebene werden die folgenden Parameter verwendet:

Mittelpunkt

Ebene XY: I, J

Ebene XZ: I, K

Ebene YZ: J, K

Endpunkt

Ebene XY: X, Y

Ebene XZ: X, Z

Ebene YZ: Y, Z

Beispiel:

(Interpolationsebene XY einstellen)

G17

(Vollkreis mit Radius 10mm)

G91 G03 I10 J0 K0 X0 Y0 Z0

(Interpolationsebene XZ einstellen)

G18

(Vollkreis in der XZ-Ebene mit Radius 10mm)

G91 G03 I0 J0 K-10 X0 Y0 Z0

Siehe auch: G02, G03, G17, G18, G19, G90, G91


G04

G04 t

Angabe einer Wartezeit

Angabe einer Wartezeit t. Die Wartezeit wird in Millisekunden angegeben.

Beispiel:

(2 Sekunden warten...)

G04 2000


G10

G10 Framename / Qn

Lineare Eilbewegung an eine Zielposition (definiert durch Frame-Variable)

Lineare Bewegung an eine Zielposition, welche durch die Angabe einer Q-Variablen oder eines Framenamens definiert wird. Die Verfahrbewegung geschieht unter Verwendung der aktuell gesetzten Eilgeschwindigkeit.

Beispiel:

(Angabe des Framenamens)

G10 STARTPOS1

(Q-Variable mit Frame initialisieren

und Verwenden der Q-Variablen)

Q1=STARTPOS2

G10 Q1

(Mehrere Q-Variable mit Frames

initialisieren und Verwenden

der Q-Variablen über eine

Indexvariable)

Q1=STARTPOS3

Q2=STARTPOS4

(Indexierung der Framevariablen durch eine R-Variable)

R1=1

G10 QR1

R1=2

G10 QR1

Siehe auch: G11, Q-Variable


G11

G11 Framename / Qn

Lineare Bewegung an eine Zielposition (definiert durch Frame-Variable)

Lineare Bewegung an eine Zielposition, welche durch die Angabe einer Q-Variablen oder eines Framenamens definiert wird. Die Verfahrbewegung geschieht unter Verwendung der aktuell gesetzten Normalgeschwindigkeit.

Beispiel:

(Angabe des Framenamens)

G11 STARTPOS1

(Q-Variable mit Frame initialisieren

und Verwenden der Q-Variablen)

Q1=STARTPOS2

G11 Q1

(Mehrere Q-Variable mit Frames

initialisieren und Verwenden

der Q-Variablen über eine

Indexvariable)

Q1=STARTPOS3

Q2=STARTPOS4

R1=1

G11 QR1

R1=2

G11 QR1

Siehe auch: G10, Q-Variable


G12

G12 I... J... K... W... X... Y... Z...

Helixinterpolation im Uhrzeigersinn

Spiralbewegung im Uhrzeigersinn um einen Mittelpunkt M mit dem Drehwinkel W zu einem Endpunkt E.

Im Uhrzeigersinn bedeutet: Bei einer Blickrichtung aus positiver Richtung auf die Ebene, in welcher die Helixinterpolation ausgeführt wird, bewegt sich das Werkzeug im Uhrzeigersinn (rechts) um den Mittelpunkt herum.

Die Bezugsebene für die Helixinterpolation wird mit Hilfe eines der Befehle G17 (Kreisebene XY), G18 (Kreisebene XZ) oder G19 (Kreisebene YZ) festgelegt.

Die Angabe der Koordinaten des Endpunktes E erfolgt absolut, wenn zuvor mit dem Befehl G90 die Verwendung von Absolutkoordinaten eingestellt wurde. Das bedeutet, daß sich die Koordinaten X, Y, Z, ,... für die Angabe der Zielpositionen aller Achsen der Anlage auf den gesetzten Werkstücknullpunkt beziehen. Falls kein Werkstücknullpunkt aktiv ist, beziehen sich die Zielkoordinaten auf den Maschinennullpunkt.

Die Angabe der Koordinaten des Endpunktes E erfolgt relativ, wenn zuvor mit dem Befehl G91 die Verwendung von inkrementalen Maßangaben, d.h. Relativkoordinaten eingestellt wurde. Die Koordinaten X, Y, Z, ,... für die Angabe der Zielpositionen aller Achsen der Anlage beziehen sich dann auf die momentanen Positionen der Achsen der Anlage. Die aktuelle Position bildet somit den Startpunkt S für die Helix-Interpolation.

Die Angabe der Mittelpunkts-Koordinaten I, J, K des Punktes M erfolgt unabhängig von der Verwendung der Befehle G90 und G91 immer relativ bezüglich des Start-Punktes S (das ist die aktuelle Position der Achsen der Anlage).

Die Angabe des Drehwinkels definiert die Anzahl der Umdrehungen, die Angabe des Drehwinkels erfolgt in Grad (360° = 1 Vollkreis).

Folgende Parameter finden Verwendung:

I Mittelpunkt X (immer relativ zur aktuellen Position S)

J Mittelpunkt Y (immer relativ zur aktuellen Position S)

K Mittelpunkt Z (immer relativ zur aktuellen Position S)

Die Angabe des Mittelpunktes ist abhängig von der verwendeten Interpolationsebene. Je nach Ebene werden zwei der drei Mittelpunktskoordinaten verwendet, die dritte Angabe wird ignoriert:

XY Verwendet werden I, J

XZ Verwendet werden I, K

YZ Verwendet werden J, K

W Angabe des Winkels (in Grad), der durch die Helix überstrichen wird

X Endposition der Achse X (absolut bei G90, relativ bei G91)

Y Endposition der Achse Y (absolut bei G90, relativ bei G91)

Z Endposition der Achse Z (absolut bei G90, relativ bei G91)

Für alle Achsen, die an einer Maschine zur Verfügung stehen, können Endpositionen angegeben werden, die während der Helixinterpolation erreicht werden sollen. Falls die Endpositionen einzelner Achsen bereits durch einen anderen Parameter zwingend bestimmt wurden (z.B. X und Y bei der Helixinterpolation in der XY-Ebene, hier wird die Zielposition X und Y durch die Angabe des Mittelpunktes M sowie des Winkels W festgelegt), so werden die betreffenden Parameter ignoriert.

Wenn bei einer Helix die Parameter so gewählt werden, daß keine Tiefe entsteht, dann kann mit Hilfe des Helix-Befehls ein Kreisbefehl mit einem überstrichenen Winkel von mehr als 360° realisiert werden.

Modalität:

Parameter, die für den aktuellen Kreisbefehl keine Auswirkung auf die Durchführung haben, können weggelassen werden. In diesem Fall werden als Parameter entweder 0 (bei der Angabe von relativen Parametern) oder die jeweils aktuelle Achsposition (bei der Angabe von Absolutparametern) verwendet. So kann z.B. für die Ausführung eines Vollkreises der Befehl

G90 G01 X10.0 Y10.0 Z-20.0

G17

G90 G12 I0 J10 K0 W360 X10 Y10 Z-20

auch in der Form

G90 G01 X10.0 Y10.0 Z-20.0

G17

G12 J10 W360

geschrieben werden.

Beispiel:

G90 G01 X10.0 Y10.0 Z-20.0

(Interpolation in der XY-Ebene)

G17

(Helix mit 2 Windungen, die insgesamt eine)

(Tiefe von 10 mm erreichen)

G90 G12 I10 J0 W720 X10 Y10 Z-30

G90 G01 X10.0 Y10.0 Z-20.0

(Interpolation in der XZ-Ebene)

G18

(Helix mit 1 Windung mit einer Zustellung)

(von 10 mm in Richtung Y)

G90 G12 I0 K-10 W360 X10 Y20 Z-20

G90 G01 X10.0 Y10.0 Z-20.0

(Interpolation in der YZ-Ebene)

G19

(Helix mit 4 Windungen, in Richtung)

(X betraegt die Zustellung 20 mm)

G90 G12 J10 K0 W1440 X-10 Y10 Z-20

Siehe auch: G13, G17, G18, G19, G90, G91


G13

G13 I... J... K... W... X... Y... Z...

Helixinterpolation im Gegen-Uhrzeigersinn

Spiralbewegung im Gegen-Uhrzeigersinn um einen Mittelpunkt M mit dem Drehwinkel W zu einem Endpunkt E.

Entgegen dem Uhrzeigersinn bzw. im Gegen-Uhrzeigersinn bedeutet: Bei einer Blickrichtung aus positiver Richtung auf die Ebene, in der die Helixinterpolation ausgeführt wird, bewegt sich das Werkzeug entgegengesetzt dem Uhrzeigersinn (links) um den Mittelpunkt herum.

Die Bezugsebene für die Helixinterpolation wird mit Hilfe eines der Befehle G17 (Kreisebene XY), G18 (Kreisebene XZ) oder G19 (Kreisebene YZ) festgelegt.

Die Angabe der Koordinaten des Endpunktes E erfolgt absolut, wenn zuvor mit dem Befehl G90 die Verwendung von Absolutkoordinaten eingestellt wurde. Das bedeutet, daß sich die Koordinaten X, Y, Z, ,... für die Angabe der Zielpositionen aller Achsen der Anlage auf den gesetzten Werkstücknullpunkt beziehen. Falls kein Werkstücknullpunkt aktiv ist, beziehen sich die Zielkoordinaten auf den Maschinennullpunkt.

Die Angabe der Koordinaten des Endpunktes E erfolgt relativ, wenn zuvor mit dem Befehl G91 die Verwendung von inkrementalen Maßangaben, d.h. Relativkoordinaten eingestellt wurde. Die Koordinaten X, Y, Z, ,... für die Angabe der Zielpositionen aller Achsen der Anlage beziehen sich dann auf die momentanen Positionen der Achsen der Anlage. Die aktuelle Position bildet somit den Startpunkt S für die Helix-Interpolation.

Die Angabe der Mittelpunkts-Koordinaten I, J, K des Punktes M erfolgt unabhängig von der Verwendung der Befehle G90 und G91 immer relativ bezüglich des Start-Punktes S (das ist die aktuelle Position der Achsen der Anlage).

Die Angabe des Drehwinkels definiert die Anzahl der Umdrehungen, die Angabe des Drehwinkels erfolgt in Grad (360° = 1 Vollkreis).

Folgende Parameter finden Verwendung:

I Mittelpunkt X (immer relativ zur aktuellen Position S)

J Mittelpunkt Y (immer relativ zur aktuellen Position S)

K Mittelpunkt Z (immer relativ zur aktuellen Position S)

Die Angabe des Mittelpunktes ist abhängig von der verwendeten Interpolationsebene. Je nach Ebene werden zwei der drei Mittelpunktskoordinaten verwendet, die dritte Angabe wird ignoriert:

XY Verwendet werden I, J

XZ Verwendet werden I, K

YZ Verwendet werden J, K

W Angabe des Winkels (in Grad), der durch die Helix überstrichen wird

X Endposition der Achse X (absolut bei G90, relativ bei G91)

Y Endposition der Achse Y (absolut bei G90, relativ bei G91)

Z Endposition der Achse Z (absolut bei G90, relativ bei G91)

Für alle Achsen, die an einer Maschine zur Verfügung stehen, können Endpositionen angegeben werden, die während der Helixinterpolation erreicht werden sollen. Falls die Endpositionen einzelner Achsen bereits durch einen anderen Parameter zwingend bestimmt wurden (z.B. X und Y bei der Helixinterpolation in der XY-Ebene, hier wird die Zielposition X und Y durch die Angabe des Mittelpunktes M sowie des Winkels W festgelegt), so werden die betreffenden Parameter ignoriert.

Wenn bei einer Helix die Parameter so gewählt werden, daß keine Tiefe entsteht, dann kann mit Hilfe des Helix-Befehls ein Kreisbefehl mit einem überstrichenen Winkel von mehr als 360° realisiert werden.

Modalität:

Parameter, die für den aktuellen Kreisbefehl keine Auswirkung auf die Durchführung haben, können weggelassen werden. In diesem Fall werden als Parameter entweder 0 (bei der Angabe von relativen Parametern) oder die jeweils aktuelle Achsposition (bei der Angabe von Absolutparametern) verwendet. So kann z.B. für die Ausführung eines Vollkreises der Befehl

G90 G01 X10.0 Y10.0 Z-20.0

G17

G90 G13 I0 J10 K0 W360 X10 Y10 Z-20

auch in der Form

G90 G01 X10.0 Y10.0 Z-20.0

G17

G13 J10 W360

geschrieben werden.

Beispiel:

G90 G01 X10.0 Y10.0 Z-20.0

(Interpolation in der XY-Ebene)

G17

(Helix mit 2 Windungen, die insgesamt eine)

(Tiefe von 10 mm erreichen)

G90 G13 I10 J0 W720 X10 Y10 Z-30

G90 G01 X10.0 Y10.0 Z-20.0

(Interpolation in der XZ-Ebene)

G18

(Helix mit 1 Windung mit einer Zustellung)

(von 10 mm in Richtung Y)

G90 G13 I0 K-10 W360 X10 Y20 Z-20

G90 G01 X10.0 Y10.0 Z-20.0

(Interpolation in der YZ-Ebene)

G19

(Helix mit 4 Windungen, in Richtung)

(X betraegt die Zustellung 20 mm)

G90 G13 J10 K0 W1440 X-10 Y10 Z-20

Siehe auch: G12, G17, G18, G19, G90, G91


G17

Setzen der Kreisinterpolationsebene XY

Setzt die Kreisinterpolationsebene auf XY. Der Befehl wird modal verwendet, d.h. die nachfolgenden Kreisbefehle richten sich nach der zuletzt gesetzten Interpolationsebene XY, bis die Interpolationsebene durch den Aufruf eines der Befehle G17, G18 oder G19 neu festgelegt wird.

Beispiel:

(Kreise in der XY-Ebene)

G17

G02 G91 I20 J10

G03 G91 I20 J10

Siehe auch: G18, G19


G18

Setzen der Kreisinterpolationsebene XZ

Setzt die Kreisinterpolationsebene auf XZ. Der Befehl wird modal verwendet, d.h. die nachfolgenden Kreisbefehle richten sich nach der zuletzt gesetzten Interpolationsebene XZ, bis die Interpolationsebene durch den Aufruf eines der Befehle G17, G18 oder G19 neu festgelegt wird.

Beispiel:

(Kreise in der XY-Ebene)

G18

G02 G91 I20 K10

G03 G91 I20 K10

Siehe auch: G17, G19


G19

Setzen der Kreisinterpolationsebene YZ

Setzt die Kreisinterpolationsebene auf YZ. Der Befehl wird modal verwendet, d.h. die nachfolgenden Kreisbefehle richten sich nach der zuletzt gesetzten Interpolationsebene YZ, bis die Interpolationsebene durch den Aufruf eines der Befehle G17, G18 oder G19 neu festgelegt wird.

Beispiel:

(Kreise in der YZ-Ebene)

G19

G02 G91 J20 K10

G03 G91 J20 K10

Siehe auch: G17, G18


G20

Einstellen der Wegeeinheit Inch (Zoll) für translatorische Achsen

Show/Hide Hidden Text

Festlegung der Maßeinheit INCH (Zoll) für die Übergabe von Koordinaten an translatorische Achsen. Der Befehl hat eine modale Wirkung, d.h. bei allen Befehlen, die als Parameter Koordinatenangaben für Linearachsen verwenden, wird ab sofort die Maßeinheit INCH verwendet.

Das Zusammenspiel der Befehle G20, G21, G93 und G94

Mit diesen Befehlen werden die Einheiten für die Wegeinheiten sowie die Geschwindigkeiten für translatorische Achse festgelegt. Die Wirkung der Befehle ist modal, das bedeutet daß die festgelegte Einheit verwendet wird, bis sie erneut mit einem entsprechenden Befehl umgestellt wird oder bis die Einheit durch eine Bedienhandlung in der Anwendung umgestellt wird.

Die Befehle G20 und G21 legen fest, in welcher Einheit Wege bzw. Positionen angegeben werden:

G20 | Wege- bzw. Positionsangaben erfolgen in Inch (Zoll)
G21 | Wege- bzw. Positionsangaben erfolgen in Millimeter

Die Befehle G93 und G94 legen fest, welche Zeiteinheit für eine angegebene Geschwindigkeit benutzt wird:

G93 | Geschwindigkeitsangaben erfolgen in Wegeeinheit* / Sekunde
G21 | Geschwindigkeitsangaben erfolgen in Wegeeinheit* / Minute

* die mit den Befehlen G20 und G21 festgelegte Wegeeinheit (Inch oder Millimeter)

Befehl | Einheit für Wege | Einheit für Geschwindigkeiten
G20 G93 | Inch (Zoll) | Inch / Sekunde
G20 G94 | Inch | Inch / Minute
G21 G93 | Millimeter | Millimeter / Sekunde
G21 G94 | Millimeter | Millimeter / Minute

Beispiel:

; Festlegen von Inch (Zoll) als Maßeinheit

G20

;Fährt an die absolute Position 10''

;bzw. 254 Millimeter

G90 G01 X10

Siehe auch: G21, G93, G94


G21

Einstellen der Wegeeinheit Millimeter für translatorische Achsen

Show/Hide Hidden Text

Dieser Befehl dient zur Festlegung der Maßeinheit MILLIMETER für die Übergabe von Koordinaten an translatorische Achsen. Der Befehl wirkt modal, d.h. bei allen Befehlen, die als Parameter Koordinatenangaben für Linearachsen verwenden, wird ab sofort die Maßeinheit MILLIMETER verwendet.

Das Zusammenspiel der Befehle G20, G21, G93 und G94

Mit diesen Befehlen werden die Einheiten für die Wegeinheiten sowie die Geschwindigkeiten für translatorische Achse festgelegt. Die Wirkung der Befehle ist modal, das bedeutet daß die festgelegte Einheit verwendet wird, bis sie erneut mit einem entsprechenden Befehl umgestellt wird oder bis die Einheit durch eine Bedienhandlung in der Anwendung umgestellt wird.

Die Befehle G20 und G21 legen fest, in welcher Einheit Wege bzw. Positionen angegeben werden:

G20 | Wege- bzw. Positionsangaben erfolgen in Inch (Zoll)
G21 | Wege- bzw. Positionsangaben erfolgen in Millimeter

Die Befehle G93 und G94 legen fest, welche Zeiteinheit für eine angegebene Geschwindigkeit benutzt wird:

G93 | Geschwindigkeitsangaben erfolgen in Wegeeinheit* / Sekunde
G21 | Geschwindigkeitsangaben erfolgen in Wegeeinheit* / Minute

* die mit den Befehlen G20 und G21 festgelegte Wegeeinheit (Inch oder Millimeter)

Befehl | Einheit für Wege | Einheit für Geschwindigkeiten
G20 G93 | Inch (Zoll) | Inch / Sekunde
G20 G94 | Inch | Inch / Minute
G21 G93 | Millimeter | Millimeter / Sekunde
G21 G94 | Millimeter | Millimeter / Minute

Beispiel:

;Festlegen von Millimeter als Masseinheit

G21

;Fährt an die absolute Position 10.0 Millimeter

G90 G01 X10.0

Siehe auch: G20, G93, G94


G28

G28 [X...] [Y...] [Z...] ...

Maschinennullpunkt über Zwischenposition anfahren

Den Maschinennullpunkt bzw. Referenzpunkt über eine Zwischenposition im Eilgang anfahren.

Hinweis: In den Einstellungen für den CNC-Interpreter wird der Ausführungsmodus für den Befehl G28 festgelegt. Als Default-Einstellung ist die Option "Der Befehl G28 verursacht eine Fehlermeldung" aktiviert. Für ein anderes Laufzeitverhalten muss der Ausführungsmodus entsprechend angepasst werden.

Als Parameter muss mindestens eine Koordinate angegeben werden. Die Anfahrbewegung des Maschinennullpunktes ist so umgesetzt, daß zunächst simultan die Koordinaten des Zwischenpunktes angefahren werden, anschließend wird simultan die Position des Maschinennullpunktes angefahren.

Es ist zu prüfen, ob der Maschinennullpunkt angefahren werden kann, ohne daß ein Hardware- oder Software-Endschalter ausgelöst wird. Gegebenenfalls ist ein Offsetwert zu ermitteln, um den bei der Referenzfahrt frei gefahren wird bzw. der bei der Konfiguration der Software-Endschalter zu berücksichtigen ist.

Parameter des Befehls

X, Y, Z, ...

Angabe einer oder mehrerer Achskoordinaten des Zwischenpunktes

Beispiel:

(Anfahren des Maschinennullpunktes ueber)

(die Zwischenposition Z=-5.0)

...

G28 Z-5.0


G53

Löschen einer Nullpunktverschiebung / eines Werkstücknullpunktes

Deaktivieren einer aktiven Nullpunktverschiebung. Der aktuelle Nullpunkt des Werkstück-Koordinatenssystems wird auf den Nullpunkt des Maschinen-Koordinatensystems gelegt. Alle übergebenen Koordinaten beziehen sich nun auf den Maschinen-Nullpunkt.

Beispiel:

(Werkstücknullpunkt löschen)

G53

(Dieser Befehl veranlasst nun das

Anfahren des Maschinennullpunktes)

MOVEABS X0 Y0 Z0

Siehe auch: G54, G55, G56, G92, G93


G54

Aktivieren von Werkstücknullpunkt-Register 1

Nullpunktverschiebung 1 aktivieren: Der aktuelle Nullpunkt des Werkstück-Koordinatenssystems wird gegenüber dem Nullpunkt des Maschinen-Koordinatensystems absolut um die Werte im Nullpunkt-Register 1 verschoben. Der Inhalt des Nullpunktregisters 1 wird mit dem Befehl G92 festgelegt.

Beispiel:

(Werkstücknullpunktregister 1 laden)

G92 X10.0 Y20.0 Z-25.0

(Werkstücknullpunktregister 1 aktivieren)

G54

Siehe auch: G53, G55, G56, G92, G93


G55

Aktivieren von Werkstücknullpunkt-Register 2

Nullpunktverschiebung 2 aktivieren: Der aktuelle Nullpunkt des Werkstück-Koordinatenssystems wird gegenüber dem Nullpunkt des Maschinen-Koordinatensystems absolut um die Werte im Nullpunkt-Register 1 verschoben. Der Inhalt des Nullpunktregisters 2 wird mit dem Befehl G93 festgelegt.

Beispiel:

(Werkstücknullpunktregister 2 laden)

G93 X10.0 Y20.0 Z-25.0

(Werkstücknullpunktregister 2 aktivieren)

G55

Siehe auch: G53, G54, G56, G92, G93


G56

Werkstück-Nullpunkt an der aktuellen Position setzen

Setzt die aktuellen Positionen der Achsen als neuen Werkstücknullpunkt. Im Gegensatz zu den Befehlen G54 und G55 wird der neue Werkstücknullpunkt nicht aus einem Register gelesen, es wird stattdessen die aktuelle Position aller aktiven Achsen verwendet. Die zukünftig übergebenen Koordinaten beziehen sich also ab jetzt auf die aktuell erreichten Achspositionen.

Beispiel:

(Löschen des aktiven Nullpunktes)

G53

(Anfahren einer Position)

G90 G00 X30.0 Y30.0 Z-20.0

(Diese Position als

Werkstücknullpunkt setzen)

G56

Siehe auch: G53, G54, G55, G92, G93


G60

Bahnsteuerungsverhalten ausschalten

Show/Hide Hidden Text

Der Bahnmodus in ProNC ist eine spezielle Betriebsart der Motion-Control, bei der versucht wird, die Segmentübergänge von Einzelvektoren möglichst ohne Absenken der Fahrgeschwindigkeit zu realisieren. Dies hat eine wesentlich glattere, kontinuierliche Bewegung der Werkzeugspitze zur Folge, welche die Qualität Anwendung (Fräsen, Applizieren, ...) erheblich erhöht.

Der Befehl "G60" dient dazu, die Betriebsart "Bahnfahrt" programmatisch auszuschalten. Bewegungssegmente, die sich innerhalb des Textblocks zwischen "G64" und "G60" befinden, werden nun segmentweise nacheinander abgearbeitet.

Mehr...

Zur Realisierung des Bahnbetriebes (Bahnfahrt) in ProNC hat der Anwender zwei Möglichkeiten:

1.Ein aktivierter Button im Dialogfeld Dateiausgabe bewirkt unter der Voraussetzung, dass die konfigurierte Bewegungssteuerung über die Fähigkeit eines Online-Bahnbetriebes verfügt, den gewünschten Bahnbetrieb. Das heißt, alle im Anwenderprogramm aufeinanderfolgenden Bewegungssegmente (G1, G2, G3, G11 | MOVEABS, MOVEREL, CWABS, CWREL, CCWABS, CCWREL, MOVEFRAME) werden automatisch durch den Interpreter in einer kontinuierlichen Bahn zusammengefasst.

2.Sollen in einem ProNC-Anwenderprogramm bei nicht aktivierten Button bestimmte aufeinanderfolgende Bewegungssegmente als kontinuierliche Bahn abgefahren werden, sind diese Bewegungssegmente mit den Befehlen "G64" / "G60" zu „klammern". Alle zwischen "G64" und "G60" programmierten Bewegungssegmente werden zur aktuellen Bahn zusammengefasst. Der Befehl "G64" leitet die Bahnfahrt ein. Ein programmierter F-Befehl definiert die Bahngeschwindigkeit für das gesamte Bahnsegment, mehrere F-Befehle in verschiedenen Segmenten bewirken verschiedene Bahngeschwindigkeiten während einer „zusammenhängenden" Bahnfahrt. Der Befehl "G60" definiert im Quellprogramm das Ende einer Bahn (Trajektorie).

Die Berechnung des Geschwindigkeitsprofils über alle zur Bahn zusammenzufassenden Bewegungssegmente erfolgt durch die Bewegungssteuerung zur Laufzeit des CNC-Zielprogramms in Echtzeit (look ahead), dadurch bleibt das Variablenkonzept voll nutzbar, weil die Werte der R-Variablen immer richtig verarbeitet werden.

Beispiel:

;Die in den Q-Variablen Q1 bis Q4 gespeicherten

;Ziel-Punkte werden zu einer Bahn zusammengefasst:

;Ausgabe der Information "Beginn" in der Statuszeile

G99 Bahnfahrt einschalten ...

G64

G11 Q1 F10.0

G11 Q2

G11 Q3

G11 Q4

G60

;Ausgabe der Information "Ende" in der Statuszeile

G99 Bahnfahrt beendet ...

Siehe auch: G64, Path, PathEnd


G64

Bahnsteuerungsverhalten einschalten

Show/Hide Hidden Text

Der Bahnmodus in ProNC ist eine spezielle Betriebsart der Motion-Control, bei der versucht wird, die Segmentübergänge von Einzelvektoren möglichst ohne Absenken der Fahrgeschwindigkeit zu realisieren. Dies hat eine wesentlich glattere, kontinuierliche Bewegung der Werkzeugspitze zur Folge, welche die Qualität Anwendung (Fräsen, Applizieren, ...) erheblich erhöht.

Der Befehl "G64" dient dazu, die Betriebsart "Bahnfahrt" programmatisch einzuschalten. Bewegungssegmente, die sich innerhalb des Textblocks zwischen "G64" und "G60" befinden, werden durch die Steuerung zusammengefaßt und möglichst kontinuierlich und ohne Segmentübergänge abgefahren.

Mehr...

Zur Realisierung des Bahnbetriebes (Bahnfahrt) in ProNC hat der Anwender zwei Möglichkeiten:

1.Ein aktivierter Button im Dialogfeld Dateiausgabe bewirkt unter der Voraussetzung, dass die konfigurierte Bewegungssteuerung über die Fähigkeit eines Online-Bahnbetriebes verfügt, den gewünschten Bahnbetrieb. Das heißt, alle im Anwenderprogramm aufeinanderfolgenden Bewegungssegmente (G1, G2, G3, G11 | MOVEABS, MOVEREL, CWABS, CWREL, CCWABS, CCWREL, MOVEFRAME) werden automatisch durch den Interpreter in einer kontinuierlichen Bahn zusammengefasst.

2.Sollen in einem ProNC-Anwenderprogramm bei nicht aktivierten Button bestimmte aufeinanderfolgende Bewegungssegmente als kontinuierliche Bahn abgefahren werden, sind diese Bewegungssegmente mit den Befehlen "G64" / "G60" zu „klammern". Alle zwischen "G64" und "G60" programmierten Bewegungssegmente werden zur aktuellen Bahn zusammengefasst. Der Befehl "G64" leitet die Bahnfahrt ein. Ein programmierter F-Befehl definiert die Bahngeschwindigkeit für das gesamte Bahnsegment, mehrere F-Befehle in verschiedenen Segmenten bewirken verschiedene Bahngeschwindigkeiten während einer „zusammenhängenden" Bahnfahrt. Der Befehl "G60" definiert im Quellprogramm das Ende einer Bahn (Trajektorie).

Die Berechnung des Geschwindigkeitsprofils über alle zur Bahn zusammenzufassenden Bewegungssegmente erfolgt durch die Bewegungssteuerung zur Laufzeit des CNC-Zielprogramms in Echtzeit (look ahead), dadurch bleibt das Variablenkonzept voll nutzbar, weil die Werte der R-Variablen immer richtig verarbeitet werden.

Beispiel:

;Die in den Q-Variablen Q1 bis Q4 gespeicherten

;Ziel-Punkte werden zu einer Bahn zusammengefasst:

;Ausgabe der Information "Beginn" in der Statuszeile

G99 Bahnfahrt einschalten ...

G64

G11 Q1 F10.0

G11 Q2

G11 Q3

G11 Q4

G60

;Ausgabe der Information "Ende" in der Statuszeile

G99 Bahnfahrt beendet ...

Siehe auch: G60, Path, PathEnd


G70

Festlegen der Maßeinheit INCH

Dieser Befehl dient zur Festlegung der Maßeinheit INCH ('', Zoll) für die Übergabe von Koordinaten an translatorische Achsen. Bei allen Befehlen, die als Parameter Koordinatenangaben für Linearachsen verwenden, wird ab sofort die Maßeinheit Inch verwendet.

Beispiel:

(Festlegen von Inch als Masseinheit)

G70

(Dieser Befehl veranlasst das

Anfahren der Position 25.4 Millimeter)

G90 G01 X10.0

Siehe auch: G71


G71

Festlegen der Maßeinheit MILLIMETER

Dieser Befehl dient zur Festlegung der Maßeinheit MILLIMETER für die Übergabe von Koordinaten an translatorische Achsen. Bei allen Befehlen, die als Parameter Koordinatenangaben für Linearachsen verwenden, wird ab sofort die Maßeinheit Millimeter verwendet.

Beispiel:

(Festlegen von Millimeter als Masseinheit)

G71

(Dieser Befehl veranlasst das

Anfahren der Position 10.0 Millimeter)

G90 G01 X10.0

Siehe auch: G70


G74

G74 achse(n)

Ausführen einer Referenzfahrt

Befehl zur Ausführung einer Referenzfahrt unter Angabe der gewünschten Achse. Wird der Befehl G74 ohne Argument benutzt, werden alle Achsen in einer Standard-Reihenfolge, im Allgemeinen Z, Y, X, A, B, C, U, V, W referenziert.

Mögliche Achsbezeichner:

X, Y, Z, A, B, C, U, V, W

In ProNC können ab Version 1.45.0.2 die sechs Handlingachsen Ax1 bis Ax6 programmiert werden. Die Referenzfahrt für die Handlingachsen ist entsprechend der Referenzfahrt für die Achsen des Achssystems 1 oder 2 zu programmieren.

Hinweis: Die Referenzierung einer Handlingachse ist nur in der Betriebsart Positions-Modus erforderlich.

Mögliche Achsbezeichner für Handlingachsen:

Ax1, Ax2, Ax3, Ax4, Ax5, Ax6

Beispiel:

G74 XYZ

G74 X

G74 A

G74 Ax1


G75

Anzeige des Dialogs "Geometriedatei"

In ProNC besteht die Möglichkeit, mit sogenannten Framepositionen zu arbeiten. Eine Frameposition ist prinzipiell eine Struktur, welche die Positionen aller Achsen eines Achssystems beinhaltet. Mit Hilfe der Geometrie- oder Framedateien können diese Positionen geladen und gespeichert werden.

Jedes Programm in ProNC hat die Möglichkeit, evtl. verwendete Framepositionen in einer zum Programm gehörenden Framedatei zu verwalten. So werden für das Programm Test123.PAL alle Framepositionen in der dazugehörenden Datei Test123.FRA vermutet, diese Datei wird bei einem Programmlauf in unterschiedlichen Verzeichnissen gesucht. Falls eine entsprechende Datei vorhanden ist, werden die Framevariablen aus der gefundenen Datei geladen.

Mit dem Befehl G75 kann im Anwenderprogramm die Dialogbox "Geometriedatei" zur Laufzeit des CNC-Programmes aktiviert werden. Mit Hilfe dieses Dialogfeldes können Korrekturen der Framepositionen des Programms online vorgenommen werden, ohne den Automatikbetrieb verlassen zu müssen. Das Dialogfeld kann mit den Funktionen "OK" bzw. "Abbrechen" verlassen werden, danach wird im CNC-Programm mit dem Befehl unmittelbar nach G75 fortgesetzt. Falls das Dialogfeld mit "OK" beendet wird, werden alle vorgenommenen Änderungen der Framepositionen übernommen, anderenfalls verworfen.

Beispiel:

G90 G01 X10.0

(Bearbeiten der Framepositionen des Programms im Dialog)

G75

(Verwenden der Frameposition)

Q1=STARTPOSITION

G11 Q1


G76

Teach-Dialog für Festlegung des Werkstücknullpunkts aktivieren

Mit diesem Befehl wird der Dialog "Teach In" der Anwendung geöffnet. In diesem Dialog können die Achsen der Maschine an die Position verfahren werden, an der lokal ein neuer Werkstücknullpunkt gesetzt werden soll. Nach Beenden des Dialogs erfolgt eine Abfrage, ob an der aktuellen Position der neue Werkstücknullpunkt gesetzt werden soll.

Die Auswahl von "Ja" führt dazu, daß die aktuelle Position sofort als neuer Werkstücknullpunkt

aktiviert wird. Die Auswahl von "Nein" bedeutet, daß der aktuelle Werkstücknullpunkt unverändert bleibt.


G77

Teach-Dialog für das manuelle Verfahren von Achsen aktivieren

Dieser Befehl öffnet des Dialog "Teach In", mit dessen Hilfe die Achsen der Maschine manuell verfahren werden können. Nach Beenden des Dialogs finden keine weiteren Aktionen statt. Falls nach dem manuellen Anfahren einer Achsposition weitere Funktionen an der eingestellten Achsposition ausgeführt werden sollen, müssen diese manuell programmiert werden.


G80

G80 CY PL DI RF DE TI VE VF FI OT IC RE LE SE

Definition eines Bohrzyklus

Definition von Bohrzyklusparametern für den nachfolgenden Aufruf von Bohrzyklen mit den Befehlen G81, G82, G83 und G86.

Ein Bohrzyklus besteht aus einer Ablauffolge von Einzelbewegungen, die mittels einer G-Funktion und Wertangaben definiert sind. Der Zyklus wird an jeder angegebenen Position ausgeführt, bis der Zyklus aufgehoben wird.

Der Ablauf eines Bohrzyklus ist folgender:

- Anfahren der Position X/Y im Eilgang

- Anfahren der Referenzebene

- Umschalten auf Vorschub

- Bearbeitung in Z-Richtung gemäss Zyklus

- Rückkehr gemäss Zyklus auf die Referenzebene

- Rückzug im Eilgang auf Positionierebene

Verwendete Parameter:

CY Bohrzyklus: 1=Einfaches Bohren, 2=Ausräumen, 3=Spanbrechen

PL Arbeitsebene: 0=XY, 1=XZ, 2=YZ

DI Arbeitsrichtung: 0=Standard/Negativ, 1=Invers/Positiv

RF Referenzhöhe: Angabe in mm

DE Bohrlochtiefe: Angabe in mm

TI Wartezeit nach Erreichen der Bohrtiefe in ms

VE Vorschubgeschwindigkeit in mm/s

VF Eilgeschwindigkeit in mm/s

FI Erste inkrementelle Zustelltiefe in mm

OT Weitere inkrementelle Zustelltiefen in mm

IC Abnahme der inkrementellen Zustelltiefe in mm

RE Inkrementeller Rückzug in mm

LE Rückzugsebene nach Bohren in mm

SE Sicherheitshöhe in mm

Übersicht der verwendeten Bohrzyklen

·Bohrzyklus "Einfaches Bohren"

Das Werkzeug fährt mit der Vorschubgeschwindigkeit "VE" auf die Tiefe "DE" und wird anschließend auf die Sicherheitssebene "SE" zurückgezogen.

·Bohrzyklus "Einfaches Bohren mit Wartezeit"

Das Werkzeug fährt mit Vorschub auf die Tiefe DE. Der Zyklus wird um die Zeit TI angehalten und anschliessend im Eilgang zur Rückzugsebene fortgesetzt.

·Bohrzyklus "Ausräumen"

Das Werkzeug fährt um den Wert FI in das Werkstück, wartet die vorgegebene Wartezeit, kehrt im Eilgang auf die Rückzugsebene zurück, taucht auf die letzte Zustelltiefe minus Sicherheitsabstand und fährt um das nächst Inkrement OT und diesen Sicherheitsabstand weiter. Der Zyklus wird so lange ausgeführt bis die Tiefe DE erreicht ist. Die eigene Berechnung der Schnittaufteilungen ist nicht erforderlich.

·Bohrzyklus "Spanbrechen"

Das Werkzeug fährt um den Wert FI in das Werkstück, wartet die vorgegebene Wartezeit, kehrt im Eilgang die letzte Position vor dem inkrementellen Zustellen zurück, taucht auf die letzte Zustelltiefe minus Sicherheitsabstand und fährt um das nächst Inkrement OT und diesen Sicherheitsabstand weiter. Der Zyklus wird so lange ausgeführt bis die Tiefe DE erreicht ist. Die eigene Berechnung der Schnittaufteilungen ist nicht erforderlich.

Beispiel:

(Festlegung verschiedener Parameter

mit direkter Angabe von Werten)

G80 CY1 PL0 DE5.0 TI1000 VE1.5 FI1.5 OT1.0 IC0.2 RE1.0 LE2.0 SE3.0

(Aufruf des Bohrzyklus

"Einfaches Bohren")

G81 X25.0 Y25.0

(Festlegung verschiedener Parameter

mit Hilfe von R-Variablen)

R121=5.0

R122=1.5

G80 CY1 PL0 DER121 TI1000 VER122 FI1.5 OT1.0 IC0.2 RE1.0 LE2.0 SE3.0

(Aufruf des Bohrzyklus

"Einfaches Bohren mit Wartezeit")

G82 X25.0 Y25.0

Siehe auch Befehle G81, G82, G83, G86


G81

G81 X Y Z

Ausführen des Bohrzyklus "Einfaches Bohren"

Ausführen des Bohrzyklus "Einfaches Bohren" an der Position X, Y, Z.

Das Werkzeug fährt mit Vorschub auf die Tiefe DE und wird anschliessend auf die Sicherheitssebene zurückgezogen.

Die Verwendung der Parameter erfolgt modal, d.h. falls ein Parameter nicht angegeben werden sollte, wird die aktuelle Position der jeweiligen Achse verwendet.

Beispiel:

(CY: Bohrzyklus = 1 "Einfaches Bohren")

(PL: Arbeitsebene = 0 "XY"

(DI: Arbeitsrichtung = 0 "Standard/Negativ")

(RF: Referenzhöhe = 1 mm)

(DE: Bohrlochtiefe = 10 mm)

(VE: Vorschubgeschwindigkeit = 1 mm/s)

(VF: Eilgeschwindigkeit = 10 mm/s)

(LE: Rückzugsebene nach Bohren = 1 mm)

(SE: Sicherheitshöhe = 2 mm)

G80 CY1 PL0 DI0 RF1 DE10 VE1 VF10 LE1 SE2

(Bohren an aktueller Position)

G81

(Bohren an X 20 mm)

G81 X20

Siehe auch Befehle G80, G82, G83, G86


G82

G82 X Y Z

Ausführen des Bohrzyklus "Einfaches Bohren mit Wartezeit"

Ausführen des Bohrzyklus "Einfaches Bohren mit Wartezeit" an der Position X, Y, Z.

Das Werkzeug fährt mit Vorschub auf die Tiefe DE. Der Zyklus wird um die Zeit TI angehalten und anschliessend im Eilgang zur Rückzugsebene fortgesetzt.

Die Verwendung der Parameter erfolgt modal, d.h. falls ein Parameter nicht angegeben werden sollte, wird die aktuelle Position der jeweiligen Achse verwendet.

Beispiel:

(CY: Bohrzyklus = 1 "Einfaches Bohren")

(PL: Arbeitsebene = 0 "XY"

(DI: Arbeitsrichtung = 0 "Standard/Negativ")

(RF: Referenzhöhe = 1 mm)

(DE: Bohrlochtiefe = 10 mm)

(TI: Verzögerung nach Erreichen der Tiefe = 2500 ms)

(VE: Vorschubgeschwindigkeit = 1 mm/s)

(VF: Eilgeschwindigkeit = 10 mm/s)

(LE: Rückzugsebene nach Bohren = 1 mm)

(SE: Sicherheitshöhe = 2 mm)

G80 CY1 PL0 DI0 RF1 DE10 TI2500 VE1 VF10 LE1 SE2

(Bohren an aktueller Position)

G82

(Bohren an X 20 mm)

G82 X20

Siehe auch Befehle G80, G81, G83, G86


G83

G83 X Y Z

Ausführen des Bohrzyklus "Ausräumen"

Ausführen einer Bohrung in der Betriebsart "Ausräumen" an der Position X, Y, Z.

Das Werkzeug fährt um den Wert FI in das Werkstück, wartet die vorgegebene Wartezeit, kehrt im Eilgang auf die Rückzugsebene zurück, taucht auf die letzte Zustelltiefe minus Sicherheitsabstand und fährt um das nächst Inkrement OT und diesen Sicherheitsabstand weiter. Der Zyklus wird so lange ausgeführt bis die Tiefe DE erreicht ist. Die eigene Berechnung der Schnittaufteilungen ist nicht erforderlich.

Die Verwendung der Parameter erfolgt modal, d.h. falls ein Parameter nicht angegeben werden sollte, wird die aktuelle Position der jeweiligen Achse verwendet.

Beispiel:

(CY: Bohrzyklus = 2 "Ausräumen")

(PL: Arbeitsebene = 0 "XY"

(DI: Arbeitsrichtung = 0 "Standard/Negativ")

(RF: Referenzhöhe = 1 mm)

(DE: Bohrlochtiefe = 10 mm)

(VE: Vorschubgeschwindigkeit = 1 mm/s)

(VF: Eilgeschwindigkeit = 10 mm/s)

(FI: Erste inkrementelle Zustelltiefe = 3 mm)

(OT: Weitere inkrementelle Zustelltiefen = 1 mm)

(LE: Rückzugsebene nach Bohren = 1 mm)

(SE: Sicherheitshöhe = 2 mm)

G80 CY1 PL0 DI0 RF1 DE10 TI2500 VE1 VF10 FI3 OT1 LE1 SE2

(Bohren an aktueller Position)

G83

(Bohren an X 20 mm)

G83 X20

Siehe auch Befehle G80, G81, G82, G86


G86

G86 X Y Z

Ausführen des Bohrzyklus "Spanbrechen"

Ausführen einer Bohrung in der Betriebsart "Spanbrechen" an der Position X, Y, Z.

Das Werkzeug fährt um den Wert FI in das Werkstück, wartet die vorgegebene Wartezeit, kehrt im Eilgang die letzte Position vor dem inkrementellen Zustellen zurück, taucht auf die letzte Zustelltiefe minus Sicherheitsabstand und fährt um das nächst Inkrement OT und diesen Sicherheitsabstand weiter. Der Zyklus wird so lange ausgeführt bis die Tiefe DE erreicht ist. Die eigene Berechnung der Schnittaufteilungen ist nicht erforderlich.

Die Verwendung der Parameter erfolgt modal, d.h. falls ein Parameter nicht angegeben werden sollte, wird die aktuelle Position der jeweiligen Achse verwendet.

Beispiel:

(CY: Bohrzyklus = 3 "Spanbrechen")

(PL: Arbeitsebene = 0 "XY"

(DI: Arbeitsrichtung = 0 "Standard/Negativ")

(RF: Referenzhöhe = 1 mm)

(DE: Bohrlochtiefe = 10 mm)

(VE: Vorschubgeschwindigkeit = 1 mm/s)

(VF: Eilgeschwindigkeit = 10 mm/s)

(FI: Erste inkrementelle Zustelltiefe = 3 mm)

(OT: Weitere inkrementelle Zustelltiefen = 1 mm)

(LE: Rückzugsebene nach Bohren = 1 mm)

(SE: Sicherheitshöhe = 2 mm)

G80 CY1 PL0 DI0 RF1 DE10 TI2500 VE1 VF10 FI3 OT1 LE1 SE2

(Bohren an aktueller Position)

G86

(Bohren an X 20 mm)

G86 X20

Siehe auch Befehle G80, G81, G82, G83


G90

Absolute Maßangaben

Mit Hilfe dieses Befehls werden absolute Maßangaben für alle nachfolgenden Befehle mit Koordinatenangaben eingestellt.

Beispiel:

G90

G01 X23.5 Y15.0

G90 G00 X0 Y0

Siehe auch: G91


G91

Inkrementale Maßangaben

Einstellen von relativen (inkrementalen) Maßangaben für alle nachfolgenden Befehle mit Koordinatenangaben. Relative Maßangaben beziehen sich immer auf die aktuellen Positionen der Achsen.

Beispiel:

(Einstellen von Relativmaßangaben)

G91

(Bewegung mit Normalgeschwindigkeit an relative Zielposition)

G01 X1.0 Y1.0

(Einstellen von Relativmaßangaben)

G91 G00 Z-5.0

(Bewegung mit Eilgeschwindigkeit an relative Zielposition)

G91 G00 Z5.0

Siehe auch: G90


G92

G92 Xx Yy Zz ...

Setzen von Nullpunktregister 1

Mit diesem Befehl wird der Inhalt des Werkstück-Nullpunktregisters 1 geschrieben. Die Koordinaten x, y, z usw. werden in das Nullpunktregister 1 übertragen. Der Befehl wird modal verwendet, d.h. für Koordinaten, die nicht angegeben werden, bleibt der bisherige Wert erhalten.

Mit einem nachfolgenden Befehl G54 kann die Nullpunktverschiebung aus Werkstücknullpunktregister 1 aktiviert werden.

Beispiel:

(Werkstücknullpunktregister 1 laden)

G92 X10.0 Y20.0 Z-25.0

(Werkstücknullpunktregister 1 aktivieren)

G54

Siehe auch: G53, G54, G55, G56, G93


G93

G93 [Xx] [Yy] [Zz] [...]

Setzen von Nullpunktregister 2

Show/Hide Hidden Text

In Abhängigkeit von der Anzahl übergebener Parameter führt dieses Kommando verschiedene Aktionen aus.

Angabe weiterer Parameter für die Achsen X, Y, Z, ...

Die Angabe von Koordinaten für die Achsen X, Y, .... bewirkt, daß die übergebenen Koordinaten in das Werkstück-Nullpunktregisters 2 geschrieben werden. Die Koordinaten x, y, z usw. werden somit als neuer Werkstücknullpunkt in das Nullpunktregister 2 übertragen. Der Befehl wird modal verwendet, d.h. für Koordinaten, die nicht angegeben werden, bleibt der bisherige Wert erhalten.

Mit einem nachfolgenden Befehl G55 kann die Nullpunktverschiebung aus Werkstücknullpunktregister 2 aktiviert werden.

Beispiel:

(Werkstücknullpunktregister 2 laden)

G93 X20.0 Y10.0 Z-25.0

(Werkstücknullpunktregister 2 aktivieren)

G55

Siehe auch: G53, G54, G55, G56, G92

Keine Angabe weiterer Parameter

Sofern nach dem Befehl G93 keine weiteren Parameter aufgeführt werden, wird G93 als Kommando für die Festlegung der Zeiteinheit für die Vorschubgeschwindigkeit interpretiert. Der Befehl G93 bedeutet, daß Geschwindigkeiten in Wegeeinheit / Sekunde interpretiert werden. Der korrespondierende Befehl zu G93 ist G94, mit diesem Kommando wird die Zeiteinheit für die Vorschubgeschwindigkeit auf "Minute" gesetzt, nach dem Befehl G94 wird also eine Geschwindigkeit in Wegeeinheit / Minute interpretiert.

Das Zusammenspiel der Befehle G20, G21, G93 und G94

Mit diesen Befehlen werden die Einheiten für die Wegeinheiten sowie die Geschwindigkeiten für translatorische Achse festgelegt. Die Wirkung der Befehle ist modal, das bedeutet daß die festgelegte Einheit verwendet wird, bis sie erneut mit einem entsprechenden Befehl umgestellt wird oder bis die Einheit durch eine Bedienhandlung in der Anwendung umgestellt wird.

Die Befehle G20 und G21 legen fest, in welcher Einheit Wege bzw. Positionen angegeben werden:

G20 | Wege- bzw. Positionsangaben erfolgen in Inch (Zoll)
G21 | Wege- bzw. Positionsangaben erfolgen in Millimeter

Die Befehle G93 und G94 legen fest, welche Zeiteinheit für eine angegebene Geschwindigkeit benutzt wird:

G93 | Geschwindigkeitsangaben erfolgen in Wegeeinheit* / Sekunde
G21 | Geschwindigkeitsangaben erfolgen in Wegeeinheit* / Minute

* die mit den Befehlen G20 und G21 festgelegte Wegeeinheit (Inch oder Millimeter)

Befehl | Einheit für Wege | Einheit für Geschwindigkeiten
G20 G93 | Inch (Zoll) | Inch / Sekunde
G20 G94 | Inch | Inch / Minute
G21 G93 | Millimeter | Millimeter / Sekunde
G21 G94 | Millimeter | Millimeter / Minute

Beispiel:

;Festlegen von Millimeter als Masseinheit

G21

;Festlegen von Sekunde als Zeiteinheit der Geschwindigkeit

G93

;Fährt an die absolute Position 10.0 Millimeter

;mit der Geschwindigkeit 20 mm/s

G90 G01 X10.0 F20.0

Siehe auch: G20, G21, G94


G93.0

Inverse Time Feed Mode ausschalten

Die Betriebsart "Inverse Time Feed Mode" ist eine gebräuchliche Weise für eine Mehrachs-Simultanbearbeitung. In dieser Betriebsart werden keine Vorschubgeschwindigkeiten definiert, stattdessen wird die Zeit angegeben, die jedes einzelne Bewegungssegment dauern darf. Diese Zeiten werden für jede einzelne kombinierte Bewegung von translatorischen und rotatorischen Achsen separat durch das CAM-System berechnet.

Das bedeutet, daß in der Betriebsart "Inverse Time Feed Mode" in jeder Programmzeile ein F-Wort mit der jeweiligen Dauer der Bewegung stehen muß. Außerdem müssen die Programme auf die Kinematik der Maschine abgestimmt sein, z.B. muß bei einer 5-Achs-Bearbeitung Dreh- und Schwenkpunkt der rotatorischen Achsen sowie die Position der Dreh-/Schwenkeinheit im kartesischen Raum bekannt sein. Auch Größe und Lage des Werkstücks müssen berücksichtigt werden. In der Praxis bedeutet das, daß jedes Programm einzigartig ist und genau auf Maschine und Bearbeitungsfall abgestimmt sein muß.

Der Befehl G93.0 dient dazu, den Inverse Time Feed Mode auszuschalten.

Beispiel:

(...)

N50 G93.1 (ITFM einschalten)

N60 G0 Z7.500

N70 G1 Z6.500 F250

N80 G93

N90 G1 Z6.486 A-10.000 F662

N100 G1 Z6.472 A-20.000 F663

N110 G1 Z6.458 A-30.000 F665

N120 G1 Z6.444 A-40.000 F666

N130 G1 Z6.431 A-50.000 F668

N140 G1 Z6.417 A-60.000 F669

N150 G1 Z6.403 A-70.000 F670

N160 G1 Z6.389 A-80.000 F672

N170 G1 Z6.375 A-90.000 F673

N180 G1 Z6.361 A-100.000 F675

N190 G1 Z6.347 A-110.000 F676

N200 G1 Z6.333 A-120.000 F678

N210 G1 Z6.319 A-130.000 F679

N220 G93.0 (ITFM ausschalten)

(...)


G93.1

Inverse Time Feed Mode einschalten

Die Betriebsart "Inverse Time Feed Mode" ist eine gebräuchliche Weise für eine Mehrachs-Simultanbearbeitung. In dieser Betriebsart werden keine Vorschubgeschwindigkeiten definiert, stattdessen wird die Zeit angegeben, die jedes einzelne Bewegungssegment dauern darf. Diese Zeiten werden für jede einzelne kombinierte Bewegung von translatorischen und rotatorischen Achsen separat durch das CAM-System berechnet.

Das bedeutet, daß in der Betriebsart "Inverse Time Feed Mode" in jeder Programmzeile ein F-Wort mit der jeweiligen Dauer der Bewegung stehen muß. Außerdem müssen die Programme auf die Kinematik der Maschine abgestimmt sein, z.B. muß bei einer 5-Achs-Bearbeitung Dreh- und Schwenkpunkt der rotatorischen Achsen sowie die Position der Dreh-/Schwenkeinheit im kartesischen Raum bekannt sein. Auch Größe und Lage des Werkstücks müssen berücksichtigt werden. In der Praxis bedeutet das, daß jedes Programm einzigartig ist und genau auf Maschine und Bearbeitungsfall abgestimmt sein muß.

Der Befehl G93.1 dient dazu, den Inverse Time Feed Mode einzuschalten.

Beispiel:

(...)

N50 G93.1 (ITFM einschalten)

N60 G0 Z7.500

N70 G1 Z6.500 F250

N80 G93

N90 G1 Z6.486 A-10.000 F662

N100 G1 Z6.472 A-20.000 F663

N110 G1 Z6.458 A-30.000 F665

N120 G1 Z6.444 A-40.000 F666

N130 G1 Z6.431 A-50.000 F668

N140 G1 Z6.417 A-60.000 F669

N150 G1 Z6.403 A-70.000 F670

N160 G1 Z6.389 A-80.000 F672

N170 G1 Z6.375 A-90.000 F673

N180 G1 Z6.361 A-100.000 F675

N190 G1 Z6.347 A-110.000 F676

N200 G1 Z6.333 A-120.000 F678

N210 G1 Z6.319 A-130.000 F679

N220 G93.0 (ITFM ausschalten)

(...)


G94

Festlegen der Einheit der Vorschubgeschwindigkeit auf Wegeinheit/min

Show/Hide Hidden Text

Dieser Befehl bewirkt, daß Geschwindigkeiten in Wegeeinheit / Minute interpretiert werden. Der korrespondierende Befehl zu G94 ist G93, damit wird die Zeiteinheit für die Vorschubgeschwindigkeit auf "Sekunde" gesetzt.

Das Zusammenspiel der Befehle G20, G21, G93 und G94

Mit diesen Befehlen werden die Einheiten für die Wegeinheiten sowie die Geschwindigkeiten für translatorische Achse festgelegt. Die Wirkung der Befehle ist modal, das bedeutet daß die festgelegte Einheit verwendet wird, bis sie erneut mit einem entsprechenden Befehl umgestellt wird oder bis die Einheit durch eine Bedienhandlung in der Anwendung umgestellt wird.

Die Befehle G20 und G21 legen fest, in welcher Einheit Wege bzw. Positionen angegeben werden:

G20 | Wege- bzw. Positionsangaben erfolgen in Inch (Zoll)
G21 | Wege- bzw. Positionsangaben erfolgen in Millimeter

Die Befehle G93 und G94 legen fest, welche Zeiteinheit für eine angegebene Geschwindigkeit benutzt wird:

G93 | Geschwindigkeitsangaben erfolgen in Wegeeinheit* / Sekunde
G21 | Geschwindigkeitsangaben erfolgen in Wegeeinheit* / Minute

* die mit den Befehlen G20 und G21 festgelegte Wegeeinheit (Inch oder Millimeter)

Befehl | Einheit für Wege | Einheit für Geschwindigkeiten
G20 G93 | Inch (Zoll) | Inch / Sekunde
G20 G94 | Inch | Inch / Minute
G21 G93 | Millimeter | Millimeter / Sekunde
G21 G94 | Millimeter | Millimeter / Minute

Beispiel:

;Festlegen von Millimeter als Masseinheit

G21

;Festlegen von Minute als Zeiteinheit der Geschwindigkeit

G94

;Fährt die Achse X an die absolute Position 100.0 Millimeter

;mit der Geschwindigkeit 240 mm/Minute

G90 G01 X100.0 F240.0

Siehe auch: G20, G21, G93


G98

Eingabe / Änderung von R-Variablen

Mit dem Befehl G98 kann im Anwenderprogramm die Dialogbox "Eingabe von R-Variablen" zur Laufzeit des Programmes aktiviert werden. Damit können die Anfangsbedingungen für einen Programmlauf dynamisch je nach vorliegender Situation angepaßt werden. Um die geänderten Werte der R-Variablen zu übernehmen, wird die Schaltfläche "Übernahme" betätigt. Die Dialogbox wird mit der Taste ESC verlassen, danach wird das CNC-Programm mit dem unmittelbar nach G98 folgenden Befehl fortgesetzt.

Beispiel:

G90 G01 X10.0

(Bearbeiten von R5 im Dialog)

G98

FOR R1=1,R5,1

G91 G00 X1.0

ENDFOR


G99

G99 "text"

Textausgabe in der Statuszeile

Ausgabe eines Hinweistextes "text" in die Statuszeile des laufenden Bearbeitungsprogramms (ProNC oder Remote). Beachten Sie bitte, daß die Meldung in der Statuszeile durch Meldungen aus anderen Programmteilen, z.B. bei der Menüauswahl, überschrieben werden kann.

Beispiel:

G99 "Start des Bearbeitungsprogramms erfolgt"


G150

Geschwindigkeitsproportionale Ausgabe einer Analogspannung ausschalten

Die Befehle G150 und G151 werden für das Aktivieren / Deaktivieren einer geschwindigkeitsproportionalen Spannung verwendet.

Siehe: VelPropVoltage


G151

Geschwindigkeitsproportionale Ausgabe einer Analogspannung einschalten

Die Befehle G150 und G151 werden für das Aktivieren / Deaktivieren einer geschwindigkeitsproportionalen Spannung verwendet.

Siehe: VelPropVoltage


G152

Geschwindigkeitsproportionale Ausgabe eines PWM-Signals ausschalten

Die Befehle G152 und G153 werden für das Aktivieren / Deaktivieren eines PWM-Signals mit geschwindigkeitsproportionalem Tastverhältnis verwendet.

Siehe: VelPropPwm


G153

Geschwindigkeitsproportionale Ausgabe eines PWM-Signals einschalten

Die Befehle G152 und G153 werden für das Aktivieren / Deaktivieren eines PWM-Signals mit geschwindigkeitsproportionalem Tastverhältnis verwendet.

Siehe: VelPropPwm


G168

XyzRotation ON


G169

XyzRotation OFF


G174

G174 axiscode

Referenzfahrtzyklus der Anwendung ausführen

Im Gegensatz zum Kommando G74, welches die atomaren Referenzfahrtfunktionen des Steuerungskerns verwendet, bietet der Befehl G174 die Möglichkeit, den Referenzfahrtzyklus der Anwendung (ProNC, Remote) zu starten. Bei Ausführung der Referenzfahrt mit G74 besteht bei einigen Steuerungen keine Möglichkeit mehr, während der Durchführung der Referenzfahrt eine Bedienhandlung vorzunehmen.

Der Referenzfahrtzyklus der Anwendung zeigt während seiner Ausführung ein Dialogfeld mit der Schaltfläche "Abbrechen" an, so das die Möglichkeit besteht, die Referenzfahrt zu jeder Zeit abbrechen zu können.

Parameter des Befehls

axiscode

Angabe der an der Referenzfahrt beteiligten Achsen. Wird der Befehl G174 ohne Argument benutzt, werden alle Achsen in der Reihenfolge, welche für den Referenzfahrtzyklus der Anwendung festgelegt wurde, ausgeführt.

Mögliche Achsbezeichner:

X, Y, Z, A, B, C, U, V, W

Zu beachten ist, das mit der Angabe der Achsen nur festgelegt wird, welche Achsen bei der Ausführung des Referenzfahrtzyklus berücksichtigt werden sollen, die Reihenfolge der Ausführung ist immer die Reihenfolge, welche in den Einstellungen für den Referenzfahrtzyklus (Einstellungen - Steuerung - Motion Control Module - Erweiterte Einstellungen - Referenzfahrt) festgelegt wurde.

Beispiel:

;Referenzfahrtzyklus aufrufen,

;alle Achsen werden referenziert

;Referenzierung kann abgebrochen werden

G174

;Referenzfahrtzyklus aufrufen,

;nur Achse X wird referenziert,

;Referenzierung kann abgebrochen werden

G174 X

Siehe auch: G74


G181

G181 Ep.b == w TIMEOUT time

Warten auf Signal an einem digitalen Eingang

Mit Hilfe dieses Befehls kann eine Bearbeitung programmatisch angehalten werden, bis ein vorgegebener logischer Pegel an einem Eingangskanal auftritt.

Verwendete Parameter

p | Portnummer des Eingangskanals, der überprüft werden soll. Gültige Werte für die Portnummer p reichen von 1...Anzahl_der_Eingangsports.
b | Bitnummer des Eingangskanals, der überprüft werden soll. Gültige Werte für die Bitnummer b laufen von 1...8.
w | Logischer Pegel, auf dessen Eintreten gewartet werden soll. Zulässige Werte sind 0 und 1.
time | Durch die Anweisung TIMEOUT und der nachfolgenden Zahl time ist die Angabe einer Wartezeit in Millisekunden möglich, nach deren verstreichen die Aktion "Warten auf den Eingangspegel" abgebrochen wird.

Indikation in ProNC

In ProNC wird der aktive Befehl durch eine Anzeige in der Statuszeile des Programms sowie eine animierte Fortschrittsanzeige signalisiert.

Die Fortschrittsanzeige läuft dabei zyklisch von 0 bis 100%.

Hinweis: Das Warten auf das Eintreten des Bitwertes kann mit der Funktionstaste F8 abgebrochen werden

Bei zusätzlicher Verwendung einer Timeout-Zeit wird in der Statusleiste der Anwendung die verbleibende Wartezeit bis zum Abbruch der Funktion angezeigt:

Beispiele:

(1)

;Warten auf den logischen Pegel "1" an Eingang 1.1

G181 E1.1 == 1

(2)

;Warten auf den logischen Pegel "1" an einem Eingang,

;der Zugriff auf den Eingang erfolgt mit einem Textersatz

#define E_Start E1.8

G181 E_Start == 1

(3)

;Warten auf den logischen Pegel "1" an einem Eingang,

;die maximale Wartezeit ist 15 Sekunden

G181 E1.3==1 TIMEOUT 15000

Siehe auch: G182


G182

G182 Ep == w TIMEOUT time

Warten auf Bitmuster an einem digitalen Eingangsport

Mit Hilfe dieses Befehls wird die weitere Ausführung einer Bearbeitung angehalten, bis ein vorgegebenes Bitmuster an einem 8-Bit-Eingangsport auftritt.

Verwendete Parameter

p | Portnummer des 8-Bit-Eingangsports, das überprüft werden soll. Gültige Werte für die Portnummer p reichen von 1...Anzahl_der_Eingangsports.
w | Logischer Pegel, auf dessen Eintreten gewartet werden soll. Zulässige Werte liegen zwischen 0 und 255. Die Angabe des Bitmusters ist sowohl in dezimaler Schreibweise (0...255), in binärer (00000000B ... 11111111B) als auch in hexadezimaler Schreibweise (0x00 ... 0xFF) möglich.
time | Durch die Anweisung TIMEOUT und der nachfolgenden Zahl time ist die Angabe einer Wartezeit in Millisekunden möglich, nach deren verstreichen die Aktion "Warten auf das Eingangsbitmuster" abgebrochen wird.

Indikation in ProNC

In ProNC wird der aktive Befehl durch eine Anzeige in der Statuszeile des Programms sowie eine animierte Fortschrittsanzeige signalisiert.

Die Fortschrittsanzeige läuft dabei zyklisch von 0 bis 100%.

Hinweis: Das Warten auf das Eintreten des Bitwertes kann mit der Funktionstaste F8 abgebrochen werden.

Bei zusätzlicher Verwendung einer Timeout-Zeit wird in der Statusleiste der Anwendung die verbleibende Wartezeit bis zum Abbruch der Funktion angezeigt:

Beispiele:

(1)

;Warten auf ein Bitmuster an einem Eingangsport

;Die Angabe des Bitmusters erfolgt binaer

G182 E1 == 00001111B

(2)

;Warten auf ein Bitmuster an einem Eingangsport

;Die Angabe des Bitmusters erfolgt hexadezimal

G182 E1 == 0x0A

(3)

;Warten auf ein Bitmuster an einem Eingangsport

;Die Angabe von Port und Bitmuster erfolgt ueber

;die Definition eines Textersatzes

#define Start_Port E1

#define Start_Muster 0x03

G182 Start_Port == Start_Muster

Siehe auch: G181


G195

G195 rvar1 rvar2 rvar3 rvar4

Abfrage der aktuellen Beschleunigungs- und Ruckwerte von allen Achsen

Dieser Befehl dient dazu, die aktuellen Werte für Beschleunigung und maximalen Ruck aller Achsen von der Steuerung abzurufen. Die ermittelten Werte werden in die 4 abgegebenen R-Variablen übertragen.

Syntax:

G195 rvar1 rvar2 rvar3 rvar4

rvar1 ... rvar4 sind R-Variablen, in welche der ermittelte Wert des Parameters eingetragen wird. Die R-Variablen können sowohl mit ihrem Klartextnamen als auch als Aliasname (mit #define festgelegte Bezeichnung) angegeben werden.

Parameter des Befehls

rvar1 | Die erste angegebene Variable enthält die von der Steuerung verwendete Beschleunigung für Linearachsen. Die Angabe des ermittelten Wertes erfolgt in µm/s² (Mikrometer/Sekunde²).
rvar2 | In die zweite angegebene Variable wird die von der Steuerung verwendete Beschleunigung für Drehachsen übertragen. Die verwendete Einheit für diesen Wert ist ''/s² (Bogensekunden/Sekunde²).
rvar3 | Die dritte Variable nimmt den aktuellen Wert des maximalen Rucks für Linearachsen auf. Der Ruck ist die Änderung der Beschleunigung pro Zeiteinheit, wenn die Bewegung mit nichtlinearen Rampenprofilen begonnen oder beendet wird. Die Angabe des Wertes erfolgt in µm/s³ (Mikrometer/Sekunde³).
rvar3 | In diese R-Variable wird der aktuelle Wert des maximalen Rucks für Drehachsen übertragen. Die Angabe des Wertes erfolgt in ''/s³ (Bogensekunden/Sekunde³).

Beispiel:

;Angabe der Variablen in Klartextschreibweise

G195 R11 R12 R13 R14

;Angabe der Variablen mit Aliasnamen

#define R_AcceLin R11

#define R_AcceRot R12

#define R_JerkLin R13

#define R_JerkRot R14

G195 R_AcceLin R_AcceRot R_JerkLin R_JerkRot

Siehe auch: G196


G196

G196 RAccelLin RAccelRot RJerkLin RJerkRot

Setzt neue Beschleunigungs- und Ruckwerte für alle Achsen

Mit diesem Befehl werden die Werte für Beschleunigung und maximalen Ruck aller Achsen der Steuerung geändert. Die neuen Werte der Parameter können in R-Variablen, als arithmetischer Ausdruck oder als numerische Angabe angegeben werden. Mit dem Aufruf der Funktion werden die Parameter an die Steuerung übertragen.

Hinweis: Die angegebenen Beschleunigungs- und Ruckwerte wirken auf alle translatorischen bzw. rotatorischen Achsen

SetAcce rvar1 rvar2 rvar3 rvar4

rvar1 ... rvar4 sind R-Variablen, arithmetische Ausdrücke oder numerische Werte, die als Parameter dieses Befehls verwendet werden. R-Variablen können sowohl mit ihrem Klartextnamen als auch als Aliasname (mit #define festgelegte Bezeichnung) angegeben werden.

AccelLin | Der erste angegebene Parameter enthält die Beschleunigung für Linearachsen. Der neue Wert für die Beschleunigung von Linearachsen kann über eine R-Variable oder direkt als numerischer Wert angegeben werden. Die Angabe der Beschleunigung erfolgt in µm/s² (Mikrometer/Sekunde²).
AccelRot | Der zweite angegebene Parameter enthält den neuen Sollwert für die Beschleunigung von Drehachsen. Der neue Wert für die Beschleunigung von Drehachsen kann über eine R-Variable oder direkt als numerischer Wert angegeben werden. Die Angabe dieses diesen Wert erfolgt in ''/s² (Bogensekunden/Sekunde²).
JerkLin | Der dritte Parameter enthält den neuen Wert des maximalen Rucks für Linearachsen. Der Ruck ist die Änderung der Beschleunigung pro Zeiteinheit, wenn die Bewegung mit nichtlinearen Rampenprofilen begonnen oder beendet wird. Der neue Wert für den maximalen Ruck von Linearachsen kann über eine R-Variable oder direkt als numerischer Wert angegeben werden. Die Angabe des Wertes erfolgt in µm/s³ (Mikrometer/Sekunde³).
JerkRot | In diesem Parameter steht der neue Wert des maximalen Rucks für Drehachsen. Der neue Wert für den maximalen Ruck von Drehachsen kann über eine R-Variable oder direkt als numerischer Wert angegeben werden. Die Angabe des Wertes erfolgt in ''/s³ (Bogensekunden/Sekunde³).

Modalität

Falls ein oder mehrere Parameter nicht bei Aufruf des Kommandos angegeben werden, so werden die vorhandenen Parameter in der oben beschriebenen Reihenfolge angewendet. Falls nur ein Parameter angegeben wird, so wird dieser als Beschleunigungswert für Linearachsen angesehen. Werden 2 Parameter angegeben, so wird der erste Parameter als Beschleunigung für Linearachsen, der zweite Parameter als Beschleunigung für Drehachsen interpretiert.

Beispiel:

;Angabe der Variablen in Klartextschreibweise

MReset ;Reset Motion Control

R11=200*1000 ;Linearbeschleunigung 200 mm/Sek2

R12=72*3600 ;Rotative Beschleunigung 72 grad/Sek2

R13=50*1000000 ;Ruck bei Linearachsen 50000 mm/Sek³

R14=90*3600000 ;Ruck bei Rotationsachsen 90000 grad/Sek³

SetAcce R11 R12 R13 R14

;Angabe der Variablen mit Aliasnamen

#define R_AcceLin R11

#define R_AcceRot R12

#define R_JerkLin R13

#define R_JerkRot R14

MReset ;Reset Motion Control

R_AcceLin=200*1000 ;Linearbeschleunigung 200 mm/Sek2

R_AcceRot=72*3600 ;Rotative Beschleunigung 72 grad/Sek2

R_JerkLin=50*1000000 ;Ruck bei Linearachsen 50000 mm/Sek³

R_JerkRot=90*3600000 ;Ruck bei Rotationsachsen 90000 grad/Sek³

SetAcce R_AcceLin R_AcceRot R_JerkLin R_JerkRot

;Nur die Beschleunigung für Linearachsen ändern

R11=250*1000 ;Linearbeschleunigung 250 mm/Sek2

SetAcce R11 ;Nur einen Wert angeben -> Beschleunigung Linearachsen

Siehe auch: GetAcce, Acce, Acce.Axn


G197

G197 a1 a2

Achsumschaltung

Der Befehl G197 ermöglicht es, zwei physikalische Achsen der Maschine logisch zu tauschen. Alle Zugriffe auf Achse a1 werden nach der Durchführung des Achsentauschs auf Achse a2 umgeleitet und umgekehrt. Die Parameter a1 und a2 geben die zu tauschenden Achsen an, mögliche Parameter sind X, Y, Z, A, B, C, U, V, W.

Es gilt die Einschränkung, daß Achsen nur mit anderen Achsen gleichen Typs getauscht werden können, d.h. Linearachse kann nur gegen Linearachse und Drehachse kann nur gegen Drehachse getauscht werden.

Das Aufheben des Achstauschs erfolgt durch erneuten Aufruf der Funktion G197 mit den Identifiern der getauschten Achsen oder generell durch Aufruf der Funktion MRESET (Reset der Motion Control). Ein Reset, welcher mit den Funktionen der Bedienoberfläche (Remote, ProNC) ausgeführt wird, führt ebenfalls zur Aufhebung des Achstauschs.

Beispiel:

; X ist Querachse, Y ist Längsachse

; Die Querachse fährt an die Pos. 10 mm

; Die Längsachse fährt an die Pos. 100 mm

G90 G01 X10.0 Y100.0

; Tausch von Längs- und Querachse

G197 X Y

; Die Querachse fährt nun an die Pos. 100 mm

; Die Längsachse fährt nun an die Pos. 10 mm

G90 G01 X10.0 Y100.0

; Tausch von Längs- und Querachse aufheben

G197 X Y


G198.1

G198.1 Qn

Abfragen der Koordinaten des negativen Software-Endschalters

Mit Hilfe dieses Kommandos können die Koordinaten des negativen Software-Endschalters zur Laufzeit des ISO-Programms abgefragt werden.

Syntax:

G198.1 Qn

Parameter des Befehls:

Qn

Eine Q-Variable mit dem Index n, in welche die aktuellen Koordinaten des negativen Software-Endschalters übertragen werden.

Beispiel:

G198.1 Q1 ;SW-Endschalter Koordinaten abfragen

Q1:X=Q1:X-50.0 ;SW-Endschalter-Koordinaten anpassen

G199.1 Q1 ;Neue Koordinaten fuer neg. SW-Endschalter setzen

Siehe auch: G198.2, G199.1, G199.2


G198.2

G198.2 Qn

Abfragen der Koordinaten des positiven Software-Endschalters

Mit Hilfe dieses Kommandos können die Koordinaten des positiven Software-Endschalters zur Laufzeit des ISO-Programms abgefragt werden.

Syntax:

G198.2 Qn

Parameter des Befehls

Qn

Eine Q-Variable mit dem Index n, in welche die aktuellen Koordinaten des positiven Software-Endschalters übertragen werden.

Beispiel:

G198.1 Q1 ;SW-Endschalter Koordinaten abfragen

Q1:X=Q1:X+50.0 ;SW-Endschalter-Koordinaten anpassen

G199.1 Q1 ;Neue Koordinaten fuer neg. SW-Endschalter setzen

Siehe auch: G198.1, G199.1, G199.2


G199.1

G199.1 [Qn] [XRx] [YRy] [ZRz].... [X2=Rx2] [Y2=Ry2] [Z2=Rz2]....

Neue Koordinaten für den negativen Software-Endschalter setzen

Mit Hilfe dieses Kommandos können die Koordinaten des negativen Software-Endschalters zur Laufzeit des ISO-Programms geändert werden.

Syntax:

G199.1 Qn

G199.1 XRx YRy ZRz

G199.1 X2=Rx2 Y2=Ry2 ZRz2

Modalität:

Der Befehl wirkt modal, das bedeutet wenn unter Verwendung der Parameter X, Y, Z usw. nur Koordinaten für eine Einzelachse bzw. mehrere Einzelachsen übergeben werden, bleiben die Softwareendschalter-Koordinaten aller übrigen aktiven Achsen unverändert.

Parameter des Befehls

Qn | Eine Q-Variable mit dem Index n, welche die neuen Koordinaten des negativen Software-Endschalters enthält.
Rx, Ry, Rz | R-Variablen mit unterschiedlichen Indizes, welche Softwareendschalter-Koordinaten für die jeweilige Achse enthält.
Rx2, Ry2, Rz2 | Bei Verwendung einer Steuerungskonfiguration mit 2 aktiven Achssystemen: R-Variablen mit unterschiedlichen Indizes, welche die Softwareendschalter-Koordinaten für die jeweilige Achse im Achssystem 2 enthält.
numerischer Wert | Ebenfalls zulässig: Angabe einer Koordinate als numerischer Wert. Diese Koordinaten beziehen sich immer auf den Maschinennullpunkt.

Beispiel 1:

G198.1 Q1 ;SW-Endschalter Koordinaten abfragen

Q1:X=Q1:X+50.0 ;SW-Endschalter-Koordinaten anpassen

G199. Q1 ;Koordinaten fuer SW-Endschalter setzen

Beispiel 2:

;alternativ moeglich:

G198.1 Q1 ;SW-Endschalter Koordinaten abfragen

R1=Q1:X-25.0 ;SW-Endschalter-Koordinaten anpassen

R2=Q1:Y-25.0

G199.1 XR1 YR2 ;Koordinaten fuer SW-Endschalter setzen

Beispiel 3:

;alternativ moeglich:

G198.1 Q1 ;SW-Endschalter Koordinaten abfragen

R11=Q1:Z ;Aktuellen Wert von Z sichern

G199.1 Z-55.1 ;Koordinaten fuer SW-Endschalter Achse Z setzen

;.....

;Bearbeitungen

G199.1 ZR11 ;Ehemalige Position SW-Endschalter Z setzen

Siehe auch: G198.1, G198.2, G199.2


G199.2

G199.2 [Qn] [XRx] [YRy] [ZRz].... [X2=Rx2] [Y2=Ry2] [Z2=Rz2]....

Neue Koordinaten für den positiven Software-Endschalter setzen

Mit Hilfe dieses Kommandos können die Koordinaten des positiven Software-Endschalters zur Laufzeit des ISO-Programms geändert werden.

Syntax:

G199.2 Qn

G199.2 XRx YRy ZRz

G199.2 X2=Rx2 Y2=Ry2 ZRz2

Modalität:

Der Befehl wirkt modal, das bedeutet wenn unter Verwendung der Parameter X, Y, Z usw. nur Koordinaten für eine Einzelachse bzw. mehrere Einzelachsen übergeben werden, bleiben die Softwareendschalter-Koordinaten aller übrigen aktiven Achsen unverändert.

Parameter des Befehls

Qn | Eine Q-Variable mit dem Index n, welche die neuen Koordinaten des positiven Software-Endschalters enthält.
Rx, Ry, Rz | R-Variablen mit unterschiedlichen Indizes, welche Softwareendschalter-Koordinaten für die jeweilige Achse enthält.
Rx2, Ry2, Rz2 | Bei Verwendung einer Steuerungskonfiguration mit 2 aktiven Achssystemen: R-Variablen mit unterschiedlichen Indizes, welche die Softwareendschalter-Koordinaten für die jeweilige Achse im Achssystem 2 enthält.
numerischer Wert | Ebenfalls zulässig: Angabe einer Koordinate als numerischer Wert. Diese Koordinaten beziehen sich immer auf den Maschinennullpunkt.

Beispiel 1:

G198.2 Q1 ;SW-Endschalter Koordinaten abfragen

Q1:X=Q1:X+50.0 ;SW-Endschalter-Koordinaten anpassen

G199.2 Q1 ;Koordinaten fuer SW-Endschalter setzen

Beispiel 2:

;alternativ moeglich:

G198.2 Q1 ;SW-Endschalter Koordinaten abfragen

R1=Q1:X+25.0 ;SW-Endschalter-Koordinaten anpassen

R2=Q1:Y+25.0

G199.2 XR1 YR2 ;Koordinaten fuer SW-Endschalter setzen

Beispiel 3:

;alternativ moeglich, z.B. falls bei einer Bearbeitung

;Z nicht hoeher als an eine feste Hoehe fahren darf

G01 Z-25.0 ;Sicherheitsposition Z einnehmen

G198.2 Q1 ;SW-Endschalter Koordinaten abfragen

R11=Q1:Z ;Aktuellen Wert von Z sichern

G199.2 Z-16.5 ;Koordinaten fuer SW-Endschalter Achse Z setzen

;.....

;Bearbeitungen

G199.2 ZR11 ;Ehemalige Position SW-Endschalter Z setzen

Siehe auch: G198.1, G198.2, G199.1


GetAcce

GetAcce rvar1 rvar2 rvar3 rvar4

Abfrage der aktuellen Beschleunigungs- und Ruckwerte von allen Achsen

Dieser Befehl dient dazu, die aktuellen Werte für Beschleunigung und maximalen Ruck aller Achsen von der Steuerung abzurufen. Die ermittelten Werte werden in die 4 abgegebenen R-Variablen übertragen.

Syntax:

GetAcce rvar1 rvar2 rvar3 rvar4

rvar1 ... rvar4 sind R-Variablen, in welche der ermittelte Wert des Parameters eingetragen wird. Die R-Variablen können sowohl mit ihrem Klartextnamen als auch als Aliasname (mit #define festgelegte Bezeichnung) angegeben werden.

Parameter des Befehls

rvar1 | Die erste angegebene Variable enthält die von der Steuerung verwendete Beschleunigung für Linearachsen. Die Angabe des ermittelten Wertes erfolgt in µm/s² (Mikrometer/Sekunde²).
rvar2 | In die zweite angegebene Variable wird die von der Steuerung verwendete Beschleunigung für Drehachsen übertragen. Die verwendete Einheit für diesen Wert ist ''/s² (Bogensekunden/Sekunde²).
rvar3 | Die dritte Variable nimmt den aktuellen Wert des maximalen Rucks für Linearachsen auf. Der Ruck ist die Änderung der Beschleunigung pro Zeiteinheit, wenn die Bewegung mit nichtlinearen Rampenprofilen begonnen oder beendet wird. Die Angabe des Wertes erfolgt in µm/s³ (Mikrometer/Sekunde³).
rvar3 | In diese R-Variable wird der aktuelle Wert des maximalen Rucks für Drehachsen übertragen. Die Angabe des Wertes erfolgt in ''/s³ (Bogensekunden/Sekunde³).

Beispiel:

;Angabe der Variablen in Klartextschreibweise

GetAcce R11 R12 R13 R14

;Angabe der Variablen mit Aliasnamen

#define R_AcceLin R11

#define R_AcceRot R12

#define R_JerkLin R13

#define R_JerkRot R14

GetAcce R_AcceLin R_AcceRot R_JerkLin R_JerkRot

Siehe auch: SetAcce, Acce, Acce.Axn


GetAnalog

Rn=GetAnalog [Ek] [Ak]

Analogeingang einlesen

Analogausgang zurücklesen

Einlesen eines Analogeingangs

Syntax

Rn=GetAnalog Ek

Abfrage des Wertes am analogen Eingangskanal k. Die Kanalnummer k gibt an, welcher Analogeingang gelesen werden soll. Der Wert wird in Millivolt zurückgeliefert und an die angegebene R-Variable Rn übergeben.

Zurücklesen des Wertes eines Analogausgangs

Syntax

Rn=GetAnalog Ak

Abfrage des Wertes am Analogausgang mit der Kanalnummer k. Die Kanalnummer k gibt an, welcher Analogausgang gelesen werden soll. Der Wert wird in Millivolt zurückgeliefert und an die angegebene R-Variable Rn übergeben.

Beispiel 1:

;Lesen des Wertes am Analogeingang mit der Kanalnummer 1

;und Ablegen in R5

R5=GetAnalog E1

Beispiel 2:

;Lesen des Wertes am Analogausgang mit der Kanalnummer 1

;und Ablegen in R5

R5=GetAnalog A1

Siehe auch: SetAnalog, SetBit, ResBit, GetBit, Ep.b, SetPort, GetPort, SetPWM


GetApplicationParameter

GetApplicationParameter parameter [RVar]|[IVar] [StrVar] [QVar]

Abfrage von anwendungsinternen Parametern

Show/Hide Hidden Text

Diese Funktion ermöglicht den Zugriff auf interne Parameter der Anwendungen ProNC bzw. Remote. Diese Parameter werden normalerweise im Rahmen interner Abläufe verwendet, der Zugriff aus einem CNC-Programm heraus ist normalerweise nicht möglich und auch nicht erforderlich.

Eine Ausnahme ergibt sich, falls Scripte zur Erweiterung bzw. Ergänzung dieser internen Abläufe benutzt werden sollen. Dies ist bei den User-Scripten, bei den Werkzeugwechselfunktionen oder der Vermessung mit Hilfe eines 3D-Messtasters der Fall.

Der Befehl GetApplicationParameter dient zur Abfrage von internen Parametern der Anwendung.

Syntax:

GetApplicationParameter parameter [RVar]|[IVar]|[StrVar][QVar]

Verwendete Parameter

parameter

Eine Zeichenkette, welche den anwendungsinternen Parameter definiert, dessen Wert in die angegebene Variable übertragen werden soll. Die Zeichenkette setzt sich aus mehreren mit einem Punkt verbundenen Teilzeichenketten zusammen, was die interne Klassifizierung der Parameter widerspiegelt.

Festlegung des Informationsflusses:

IN | Der Parameter wird vor dem Aufruf eines Standard-Scripts mit dem aktuellen anwendungsinternen Wert initialisiert. Im Script kann dieser Parameter mit Hilfe der Funktion GetApplicationParameter abgerufen werden und im weiteren Ablauf des Scripts verwendet werden.
OUT | Die Anwendung erwartet nach Beenden eines Standard-Scripts ein Ergebnis in diesem Parameter, liest den Wert und verwendet ihn in den nachfolgenden anwendungsinternen Aktionen. Dazu muß der Parameter mit Hilfe der Funktion SetApplicationParameter vor dem Ende des Scripts auf den im Script ermittelten Wert gesetzt werden.

Liste der Parameter, die mit der Anweisung GetApplicationParameter gelesen werden können:

Übersicht der allgemeinen Parameter der Anwendung Allgemeine Parameter der Anwendung

Application.Version.Major

Application.Version.Minor

Application.Version.Release

Application.Version.Built

Variablentyp: IVar oder RVar

IN: Abfrage der Programmversion der Anwendung ProNC bzw. Remote. Die Programmversion ist nach dem Muster VMajor.Minor.Release.Built aufgebaut. Mit Hilfe der vier angegebenen Parameter können die einzelnen Teile der Version abgefragt werden.

Application.NcInterpreter.Version.Major

Application.NcInterpreter.Version.Minor

Application.NcInterpreter.Version.Release

Application.NcInterpreter.Version.Built

Variablentyp: IVar oder RVar

IN: Abfrage der Version des in ProNC bzw. Remote integrierten NC-Interpreters.

Application.NcCompiler.Version.Major

Application.NcCompiler.Version.Minor

Application.NcCompiler.Version.Release

Application.NcCompiler.Version.Built

Variablentyp: IVar oder RVar

IN: Abfrage der Version des in ProNC bzw. Remote integrierten NC-Compilers.

Übersicht der Parameter, welche auf interne Variablen des Werkzeugwechselsystems verweisen und zur Steuerung eigener Wechselzyklen verwendet werden können Anwendungsparameter zur Verwendung bei Scripten für Werkzeugwechselabläufe

Application.Toolchange.Cycle.Success

Variablentyp: IVar oder RVar

OUT: Flag zur Signalisierung daß der eigene scriptgesteuerte Werkzeugwechsel erfolgreich ausgeführt wurde. Dieses Flag wird von der Anwendung für die Festlegung des neuen Werkzeugstatus nach dem Werkzeugwechselscript ausgewertet.

Application.Toolchange.Cycle.RequestedToolNr

Variablentyp: IVar oder RVar

IN: Angabe der Werkzeugnummer des Werkzeugs, das durch den eigenen scriptgesteuerten Werkzeugwechsel eingewechselt werden soll.

Application.Toolchange.Cycle.ModuleOfRequestedTool

Variablentyp: IVar oder RVar

IN: Angabe des Werkzeughalters, in dem sich das durch den eigenen scriptgesteuerten Werkzeugwechsel einzuwechselnde Werkzeug befindet.

Application.Toolchange.Cycle.ToolPlaceOfRequestedTool

Variablentyp: IVar oder RVar

IN: Angabe des Werkzeugplatzes, an dem sich das durch den eigenen scriptgesteuerten Werkzeugwechsel einzuwechselnde Werkzeug befindet.

Application.Toolchange.Cycle.ToolNrOfActTool

Variablentyp: IVar oder RVar

IN: Angabe der Werkzeugnummer des Werkzeuges, welches sich momentan in der Spannzange der Frässpindel befindet. Dieses Werkzeug ist durch das Script für den Werkzeugwechsel in seinem zugeordneten Werkzeugmagazin abzulegen.

Application.Toolchange.Cycle.ModuleOfActTool

Variablentyp: IVar oder RVar

IN: Angabe des Werkzeughalters, aus dem das Werkzeug, welches sich momentan in der Spannzange der Frässpindel befindet, abzulegen ist.

Application.Toolchange.Cycle.ToolPlaceOfActTool

Variablentyp: IVar oder RVar

IN: Angabe des Werkzeugplatzes im Werkzeughalter, an dem das Werkzeug, welches sich momentan in der Spannzange der Frässpindel befindet, abzulegen ist.

Application.Toolchange.Cycle.ToolNrOfNewTool

Variablentyp: IVar oder RVar

OUT: Angabe der Werkzeugnummer des Werkzeuges, welches sich nach der Ausführung des Werkzeugwechsels aktuell in der Spannzange der Frässpindel befindet. Dieser Parameter spiegelt den aktuellen Istzustand des Werkzeugwechselsystems nach erfolgtem Wechsel wieder und wird nach erfolgreicher Ausführung des Werkzeugwechsel-Scripts in die Werkzeugverwaltung der Anwendung übertragen.

Application.Toolchange.Cycle.ModuleOfNewTool

Variablentyp: IVar oder RVar

OUT: Angabe des Werkzeughalters, aus dem das Werkzeug stammt, welches sich nach der Ausführung des Werkzeugwechsels aktuell in der Spannzange der Frässpindel befindet. Dieser Parameter spiegelt den aktuellen Istzustand des Werkzeugwechselsystems nach erfolgtem Wechsel wieder und wird nach erfolgreicher Ausführung des Werkzeugwechsel-Scripts in die Werkzeugverwaltung der Anwendung übertragen.

Application.Toolchange.Cycle.ToolPlaceOfNewTool

Variablentyp: IVar oder RVar

OUT: Angabe des Werkzeugplatzes im Werkzeughalter, aus dem das Werkzeug stammt, welches sich nach der Ausführung des Werkzeugwechsels aktuell in der Spannzange der Frässpindel befindet. Dieser Parameter spiegelt den aktuellen Istzustand des Werkzeugwechselsystems nach erfolgtem Wechsel wieder und wird nach erfolgreicher Ausführung des Werkzeugwechsel-Scripts in die Werkzeugverwaltung der Anwendung übertragen.

Application.Toolchange.TC1.Parameter.BasePosition

Application.Toolchange.TC2.Parameter.BasePosition

Variablentyp: QVar

IN: Die Koordinaten der "Startposition vor Wz-Wechsel". Das ist die Position, die als Ausgangsposition vor den eigentlichen Bewegungsabläufen eines Werkzeugwechselzyklus angefahren wird.

Die Angabe "TC1" bedeutet, daß die Parameter der Werkzeugwechslereinheit 1 abgefragt werden sollen, Die Angabe "TC2" bedeutet, die Parameter von Werkzeugwechslereinheit 2 sollen abgefragt werden.

Application.Toolchange.TC1.Parameter.EndPosition

Application.Toolchange.TC2.Parameter.EndPosition

Variablentyp: QVar

IN: Die Koordinaten der "Endposition nach Wz-Wechsel". Das ist die Position, die als Endposition nach einem Werkzeugwechselzyklus angefahren wird. Ab dieser Position werden die weiteren Bewegungsabläufe in einem laufenden NC-Programm ausgeführt. Wenn der Werkzeugwechsel manuell gestartet wurde, bleiben die Achsen der Maschine an dieser Position stehen.

Die Angabe "TC1" bedeutet, daß die Parameter der Werkzeugwechslereinheit 1 abgefragt werden sollen, Die Angabe "TC2" bedeutet, die Parameter von Werkzeugwechslereinheit 2 sollen abgefragt werden.

Application.Toolchange.TC1.Parameter.MeasureStartPosition

Application.Toolchange.TC2.Parameter.MeasureStartPosition

Variablentyp: QVar

IN: Die Koordinaten der "Startposition für Referenzierung". Das ist die Position die angefahren wird, bevor die Messfahrt mit der eingestellten Geschwindigkeit für das Anfahren des Messtasters beginnt.

Die Angabe "TC1" bedeutet, daß die Parameter der Werkzeugwechslereinheit 1 abgefragt werden sollen, Die Angabe "TC2" bedeutet, die Parameter von Werkzeugwechslereinheit 2 sollen abgefragt werden.

Application.Toolchange.TC1.Parameter.ManualHandlingPosition

Application.Toolchange.TC2.Parameter.ManualHandlingPosition

Variablentyp: QVar

IN: Die Koordinaten der "Position für manuelle Werkzeughandhabung". Wenn in den Werkzeugspezifikationen die Option "Das Werkzeug wird ausschließlich manuell gewechselt" aktiviert wurde, wird diese Position angefahren, um den Anlagenbediener den manuellen Wechsel des Werkzeugs zu ermöglichen.

Die Angabe "TC1" bedeutet, daß die Parameter der Werkzeugwechslereinheit 1 abgefragt werden sollen, Die Angabe "TC2" bedeutet, die Parameter von Werkzeugwechslereinheit 2 sollen abgefragt werden.

Application.Toolchange.TC1.Parameter.ToolInMagazinePosition.1

Application.Toolchange.TC1.Parameter.ToolInMagazinePosition.2

...

Application.Toolchange.TC1.Parameter.ToolInMagazinePosition.128

Application.Toolchange.TC2.Parameter.ToolInMagazinePosition.1

Application.Toolchange.TC2.Parameter.ToolInMagazinePosition.2

...

Application.Toolchange.TC2.Parameter.ToolInMagazinePosition.128

Variablentyp: QVar

IN: Die Koordinaten der Positionen der Werkzeuge an den Werkzeugplätzen 1 bis 128 (bzw. der maximalen Anzahl der Werkzeugplätze) eines Werkzeugmagazins. Es handelt sich hierbei um die Koordinaten, die für das Abholen eines Werkzeug vor Schließen der Spannzange bzw. für das Ablegen eines Werkzeugs vor Öffnen der Spannzange in der vorgangsspezifischen Reihenfolge angefahren werden.

Die Angabe "TC1" bedeutet, daß die Parameter der Werkzeugwechslereinheit 1 abgefragt werden sollen, Die Angabe "TC2" bedeutet, die Parameter von Werkzeugwechslereinheit 2 sollen abgefragt werden.

Application.Toolchange.TC1.Parameter.Input.Name.Use

Application.Toolchange.TC1.Parameter.Input.Name.Port

Application.Toolchange.TC1.Parameter.Input.Name.Bit

Application.Toolchange.TC1.Parameter.Input.Name.ActiveLevel

Variablentyp: IVar, RVar

IN: Die Eigenschaften von Eingangsports, die für die Überwachung der mechanischen Situation des Werkzeugwechselsystems verwendet werden. "Name" ist die Bezeichnung des Eingangs, dessen Parameter ermittelt werden sollen. Die Bezeichner nach dem Namen des Eingangs haben folgende Bedeutung:

Use | Abfrage, ob dieser Eingang verwendet wird (in der Konfiguration enabled ist)
Port | Abfrage der Portnummer des Eingangs, die Zählweise ist ab 1
Bit | Abfrage der Bitnummer des Eingangs, die Zählweise ist ab 1
ActiveLevel | Abfrage des Aktivpegels. Rückgabewerte sind 0 und 1, 0 bedeutet der Eingang ist Lowaktiv, 1 bedeutet der Eingang ist highaktiv

Übersicht der Eingänge (Name)

RefSwitch | Messtaster für die Ermittlung der Referenzposition Z eines Werkzeugs
CoverOpen | Sensor "Abdeckung des Werkzeugmagazins ist geöffnet"
CoverClosed | Sensor "Abdeckung des Werkzeugmagazins ist geschlossen"
ToolInCollet1 | Sensor der Werkzeugspannzange der Frässpindel 1: Ein Werkzeug ist in der Spannzange und richtig eingezogen
ToolInCollet2 | Sensor der Werkzeugspannzange der Frässpindel 2: Ein Werkzeug ist in der Spannzange und richtig eingezogen
ToolInCollet3 | Sensor der Werkzeugspannzange der Frässpindel 3: Ein Werkzeug ist in der Spannzange und richtig eingezogen
ToolInCollet4 | Sensor der Werkzeugspannzange der Frässpindel 4: Ein Werkzeug ist in der Spannzange und richtig eingezogen
ColletOpen1 | Sensor der Werkzeugspannzange der Frässpindel 1: Die Spannzange ist geöffnet
ColletOpen2 | Sensor der Werkzeugspannzange der Frässpindel 2: Die Spannzange ist geöffnet
ColletOpen3 | Sensor der Werkzeugspannzange der Frässpindel 3: Die Spannzange ist geöffnet
ColletOpen4 | Sensor der Werkzeugspannzange der Frässpindel 4: Die Spannzange ist geöffnet
AirPressure | Luftdrucküberwachung: Luftdruck ist ausreichend
SpindleStandstill | Summensignal: Alle Frässpindeln sind im Stillstand
ExhaustUnitCoverOpen11 | Sensor Nr. 1 "Abdeckung der Absaugung geöffnet" an Frässpindel 1: Die Abdeckung der Absaugung ist geöffnet
ExhaustUnitCoverOpen12 | Sensor Nr. 1 "Abdeckung der Absaugung geöffnet" an Frässpindel 2: Die Abdeckung der Absaugung ist geöffnet
ExhaustUnitCoverOpen13 | Sensor Nr. 1 "Abdeckung der Absaugung geöffnet" an Frässpindel 3: Die Abdeckung der Absaugung ist geöffnet
ExhaustUnitCoverOpen14 | Sensor Nr. 1 "Abdeckung der Absaugung geöffnet" an Frässpindel 4: Die Abdeckung der Absaugung ist geöffnet
ExhaustUnitCoverOpen21 | Sensor Nr. 2 "Abdeckung der Absaugung geöffnet" an Frässpindel 1: Die Abdeckung der Absaugung ist geöffnet
ExhaustUnitCoverOpen22 | Sensor Nr. 2 "Abdeckung der Absaugung geöffnet" an Frässpindel 2: Die Abdeckung der Absaugung ist geöffnet
ExhaustUnitCoverOpen23 | Sensor Nr. 2 "Abdeckung der Absaugung geöffnet" an Frässpindel 3: Die Abdeckung der Absaugung ist geöffnet
ExhaustUnitCoverOpen24 | Sensor Nr. 2 "Abdeckung der Absaugung geöffnet" an Frässpindel 4: Die Abdeckung der Absaugung ist geöffnet
ExhaustUnitCoverClosed11 | Sensor Nr. 1 "Abdeckung der Absaugung geschlossen" an Frässpindel 1: Die Abdeckung der Absaugung ist geschlossen
ExhaustUnitCoverClosed12 | Sensor Nr. 1 "Abdeckung der Absaugung geschlossen" an Frässpindel 2: Die Abdeckung der Absaugung ist geschlossen
ExhaustUnitCoverClosed13 | Sensor Nr. 1 "Abdeckung der Absaugung geschlossen" an Frässpindel 3: Die Abdeckung der Absaugung ist geschlossen
ExhaustUnitCoverClosed14 | Sensor Nr. 1 "Abdeckung der Absaugung geschlossen" an Frässpindel 4: Die Abdeckung der Absaugung ist geschlossen
ExhaustUnitCoverClosed21 | Sensor Nr. 2 "Abdeckung der Absaugung geschlossen" an Frässpindel 1: Die Abdeckung der Absaugung ist geschlossen
ExhaustUnitCoverClosed22 | Sensor Nr. 2 "Abdeckung der Absaugung geschlossen" an Frässpindel 2: Die Abdeckung der Absaugung ist geschlossen
ExhaustUnitCoverClosed23 | Sensor Nr. 2 "Abdeckung der Absaugung geschlossen" an Frässpindel 3: Die Abdeckung der Absaugung ist geschlossen
ExhaustUnitCoverClosed24 | Sensor Nr. 2 "Abdeckung der Absaugung geschlossen" an Frässpindel 4: Die Abdeckung der Absaugung ist geschlossen
ToolHostExtended1 | Sensor Nr. 1 "Werkzeughalter ist ausgefahren/in Arbeitsposition"
ToolHostExtended2 | Sensor Nr. 2 "Werkzeughalter ist ausgefahren/in Arbeitsposition"
ToolHostRetracted1 | Sensor Nr. 1 "Werkzeughalter ist eingefahren/in Ruheposition"
ToolHostRetracted2 | Sensor Nr. 2 "Werkzeughalter ist eingefahren/in Ruheposition"
ToolAtLocation1 | Sensor Nr. 1 "Werkzeug an Position"
ToolAtLocation2 | Sensor Nr. 2 "Werkzeug an Position"
ToolClampLifted | Sensor "Werkzeughalter des Werkzeugs ist angehoben"
ToolClampDown | Sensor "Werkzeughalter des Werkzeugs ist abgesenkt"
PositionSensor | Sensor "Rundwechsler an Taktposition"
ReferenceSensor | Sensor "Rundwechsler an Referenzposition"

Application.Toolchange.TC1.Parameter.Output.Name.Use

Application.Toolchange.TC1.Parameter.Output.Name.Port

Application.Toolchange.TC1.Parameter.Output.Name.Bit

Application.Toolchange.TC1.Parameter.Output.Name.ActiveLevel

Variablentyp: IVar, RVar

IN: Die Eigenschaften von Ausgangsports, die für die Steuerung von Aktoren des Werkzeugwechselsystems verwendet werden. "Name" ist die Bezeichnung des Ausgangs, dessen Parameter ermittelt werden sollen. Die Bezeichner nach dem Namen des Ausgangs haben folgende Bedeutung:

Use | Abfrage, ob dieser Ausgang verwendet wird (in der Konfiguration enabled ist)
Port | Abfrage der Portnummer des Ausgangs, die Zählweise ist ab 1
Bit | Abfrage der Bitnummer des Ausgangs, die Zählweise ist ab 1
ActiveLevel | Abfrage des Aktivpegels. Rückgabewerte sind 0 und 1, 0 bedeutet der Ausgang ist Lowaktiv, 1 bedeutet der Ausgang ist highaktiv

Übersicht der Ausgänge (Name)

OpenCover | Öffnen der Abdeckung des Werkzeugmagazins
OpenCollet | Öffnen der Spannzange der Frässpindel
BlastOff | Ventil Freiblasen
CleanCollet | Ventil Kegelreinigung
OpenExhaustUnitCover1 | Öffnen der Abdeckung der Absaugung
ExtendToolHost | Werkzeughalter in Arbeitsposition fahren
LiftToolClamp | Werkzeugklammer anheben
ToolMagazineLeft | Werkzeugmagazin links drehen
ToolMagazineRight | Werkzeugmagazin rechts drehen

Übersicht der Parameter, welche auf interne Variablen des Werkzeugwechselsystems verweisen und zur Steuerung eigener Abläufe für die Vermessung von Werkzeugen verwendet werden können Anwendungsparameter zur Verwendung bei Scripten für die Vermessung von Werkzeugen

Application.Toolmeasure.Cycle.Success

Variablentyp: IVar oder RVar

IN/OUT: Flag zur Signalisierung daß der eigene Ablauf für die scriptgesteuerte Werkzeugvermessung erfolgreich ausgeführt wurde. Dieses Flag wird von der Anwendung ausgewertet und legt fest, ob das Ergebnis der Vermessung in die Werkzeugeigenschaften der Anwendung übernommen wird oder nicht.

Application.Toolmeasure.Cycle.RequestedToolNr

Variablentyp: IVar oder RVar

IN: Angabe der Werkzeugnummer des Werkzeugs, dessen Referenzposition Z durch die eigene scriptgesteuerte Vermessung ermittelt werden soll.

Application.Toolmeasure.Cycle.ModuleOfRequestedTool

Variablentyp: IVar oder RVar

IN: Angabe des Werkzeughalters, in dem sich das Werkzeug befindet, dessen Referenzposition Z durch die eigene scriptgesteuerte Vermessung ermittelt werden soll.

Application.Toolmeasure.Cycle.ToolPlaceOfRequestedTool

Variablentyp: IVar oder RVar

IN: Angabe des Werkzeugplatzes im Werkzeughalter, an dem sich das Werkzeug befindet, dessen Referenzposition Z durch die eigene scriptgesteuerte Vermessung ermittelt werden soll.

Application.Toolmeasure.Cycle.ToolNrOfActTool

Variablentyp: IVar oder RVar

IN: Angabe der Werkzeugnummer des Werkzeuges, welches sich momentan in der Spannzange der Frässpindel befindet. Falls dies nicht der angeforderten Werkzeugnummer entspricht, muß das angeforderte Werkzeug vor der Vermessung durch einen geeigneten Zyklus eingewechselt werden.

Application.Toolmeasure.Cycle.ModuleOfActTool

Variablentyp: IVar oder RVar

IN: Angabe des Werkzeughalters, aus dem das Werkzeug, welches sich momentan in der Spannzange der Frässpindel befindet, stammt.

Application.Toolmeasure.Cycle.ToolPlaceOfActTool

Variablentyp: IVar oder RVar

IN: Angabe des Werkzeugplatzes im Werkzeughalter, von dem das Werkzeug, welches sich momentan in der Spannzange der Frässpindel befindet, stammt.

Application.Toolmeasure.Cycle.ReferencePositionZ

Variablentyp: RVar

IN/OUT: Die durch den eigenen Vermessungsablauf ermittelte Referenzposition Z des Werkzeugs. Diese Referenzposition wird nach erfolgreicher Ausführung des Scripts für die Werkzeugvermessung von der Anwendung übernommen und in die Werkzeugverwaltung übertragen.

Übersicht der Parameter, welche auf interne Variablen des Werkzeugwechselsystems verweisen und zur Steuerung eigener Abläufe für die Vermessung von Werkzeugen verwendet werden können Anwendungsparameter zur Verwendung bei Scripten für Vermessungen mit einem Messtaster

Application.Touchprobe.Parameter.Active

Variablentyp: IVar oder RVar

IN: Der aktuelle Signalzustand des Messtasters. Wenn dieser Parameter "1" (!=0) ist, dann ist der Messtaster betätigt, wenn der Parameter "0" ist, dann ist der Messtaster nicht betätigt. Bei der Ermittlung des Signalzustands werden die bei der Konfiguration des Messtasters gesetzten Werte für den Aktivpegel berücksichtigt.

Variablentyp: IVar oder RVar

Application.Touchprobe.Parameter.Model

Variablentyp: IVar oder RVar

IN: Das Modell des Messgerätes bzw. Messtasters. Die Konfiguration dieser Modellnummer für verschiedene Hardwareausführungen eines Messtasters ist frei definierbar und wird in der Konfigurationsdatei "TouchProbeTypes.INI" festgelegt. Diese Konfigurationsdatei bildet alle Messtastertypen ab, die an einer Maschine zur Anwendung kommen könnten. Sämtliche konfigurierten Messtastermodelle werden im Messtaster-Setup in einem Auswahldialog für das Messtastermodell zur Auswahl angeboten. (Dialog "Einstellungen - Steuerung - Messsysteme - Messtaster", Registerkarte "Messtaster"). Der Zugriff auf den Parameter "Application.Touchprobe.Parameter.Model" liefert den numerischen Wert für das Messtastermodell, der in der Datei "TouchProbeTypes.INI" jeweils mit dem Eintrag "Model" festgelegt wurde.

Application.Touchprobe.Parameter.Enabled

Variablentyp: IVar oder RVar

IN/OUT: Der aktuelle Zustand der Betriebsbereitschaft des Messtasters. Wenn dieser Parameter "1" (!=0) ist, dann ist der Messtaster bereit für die Durchführung einer Messfahrt. Der Zustand "Enabled" wird in der Anwendung in verschiedenen Dialogen und Bedienfeldern angezeigt bzw. verwendet.

Application.Touchprobe.Parameter.DeviceType

Variablentyp: IVar oder RVar

IN/OUT: Der grundlegende Typ des Messgerätes. Die Z-Koordinate einer Vermessung wird in Abhängigkeit des bei der Vermessung verwendeten Gerätes unterschiedlich verrechnet.

Gerätetyp 0: 3D-Messtaster (Standard)

Gerätetyp 1: Messdose

Wenn eine Vermessung der Z-Koordinate mit einer Messdose durchgeführt wird, dann muß innerhalb des Scripts der Vermessung der Gerätetyp auf 1 gesetzt werden.

Application.Touchprobe.Parameter.CalibrationType

Variablentyp: IVar oder RVar

IN/OUT: Die prinzipielle Art der ausgeführten Kalibrierung.

Momentan noch nicht verwendet!

Application.Touchprobe.Parameter.MeasureType

Variablentyp: IVar oder RVar

IN/OUT: Die prinzipielle Art der ausgeführten Vermessung

Momentan noch nicht verwendet!

Application.Touchprobe.Parameter.ToolNumber

Variablentyp: IVar oder RVar

IN: Die in der Werkzeugverwaltung zugewiesene Werkzeugnummer eines Messtasters, der sich in einem Werkzeugmagazin befindet und im Rahmen eines automatischen Werkzeugwechselzyklus verwendet werden kann.

Application.Touchprobe.Parameter.FirstToolNumber

Variablentyp: IVar oder RVar

IN: Die in der Werkzeugverwaltung zugewiesene Werkzeugnummer des ersten Messtasters, der sich in einem Werkzeugmagazin befindet und im Rahmen eines automatischen Werkzeugwechselzyklus verwendet werden kann.

Application.Touchprobe.Parameter.NextToolNumber

Variablentyp: IVar oder RVar

IN: Die zugewiesenen Werkzeugnummern weiterer Messtaster, die sich in einem Werkzeugmagazin befinden und im Rahmen eines automatischen Werkzeugwechselzyklus verwendet werden können.

Application.Touchprobe.Parameter.WorkingDirections

Variablentyp: IVar oder RVar

IN/OUT: Die möglichen Arbeitsrichtungen des Messtasters. Die einzelnen möglichen Richtungen werden als Bits in einem Integer-Wert dargestellt, die Bedeutung ist im einzelnen:

#define TPRB_WORKDIR_UNKNOWN | 0x3FFFFFFF |
#define TPRB_WORKDIR_XPLUS | 0x00000001 | ;Messung nur in Richtung X-Plus
#define TPRB_WORKDIR_XMINUS | 0x00000002 | ;Messung nur in Richtung X-Minus
#define TPRB_WORKDIR_X | 0x00000003 | ;Messung in Richtung X-Plus oder X-Minus
#define TPRB_WORKDIR_YPLUS | 0x00000010 | ;Messung nur in Richtung Y-Plus
#define TPRB_WORKDIR_YMINUS | 0x00000020 | ;Messung nur in Richtung Y-Minus
#define TPRB_WORKDIR_Y | 0x00000030 | ;Messung in Richtung Y-Plus oder Y-Minus
#define TPRB_WORKDIR_ZPLUS | 0x00000100 | ;Messung nur in Richtung Z-Plus
#define TPRB_WORKDIR_ZMINUS | 0x00000200 | ;Messung nur in Richtung Z-Minus
#define TPRB_WORKDIR_Z | 0x00000300 | ;Messung in Richtung Z-Plus oder Z-Minus

In einem allgemeinen Script für die Messung mit einem Messtaster muß diese Arbeitsrichtung entsprechend berücksichtigt werden.

Application.Touchprobe.Parameter.RelTravelLength

Variablentyp: RVar

IN/OUT: Dieser Parameter gibt die konfigurierte Länge der Suchfahrt an. Die Suchfahrt ist die Bewegung in Richtung auf das anzutastende Objekt zu.

Application.Touchprobe.Parameter.AdditionalTravelLength

Variablentyp: RVar

IN: Dieser Parameter gibt die konfigurierte Länge für eine zusätzliche Zustellbewegung in Messfahrtrichtung nach erstem Kontakt mit dem Messobjekt an. Damit soll erreicht werden, daß nach dem ersten Kontakt mit dem Messobjekt der Messtaster etwas weiter ausgelenkt wird, damit ein stabiler Signalpegel am Eingang vorliegt (Vermeiden eines "Flatterns" des Signals am Messtaster-Eingang).

Application.Touchprobe.Parameter.RelRetractionLength

Variablentyp: RVar

IN/OUT: Dieser Parameter gibt die konfigurierte Länge der Rückzugsbewegung an. Die Rückzugsbewegung ist die Bewegung vom anzutastenden Objekt weg, nachdem am Signalausgang des Messtasters während der Suchfahrt ein Pegelwechsel stattfand.

Application.Touchprobe.Parameter.BallDiameter

Variablentyp: RVar

IN/OUT: Der konfigurierte Durchmesser der Kugel an der Spitze des Taststiftes. Dieser Durchmesser wird für die Berechnung der Position einer Fläche oder Kante bezogen auf die Rotationsachse des Taststiftes verwendet. Die Konfiguration des Kugeldurchmessers erfolgt im Einstelldialog des Messtasters.

Application.Touchprobe.Parameter.Offset.X

Application.Touchprobe.Parameter.Offset.Y

Variablentyp: RVar

IN/OUT: Die Offset-Distanzen X und Y zwischen der Mittelachse des Werkzeugs und der Mittelachse des Taststiftes des Messtasters. Diese Werte werden benötigt, um aus dem Ergebnis der Messung die korrekten Daten der Werkstücknullpunktkoordinaten X und Y zu errechnen.

Application.Touchprobe.Parameter.Offset.Z

Variablentyp: RVar

Nicht verwendet!

Application.Touchprobe.Parameter.OffsetBallRadiusTriggerPos.X

Variablentyp: RVar

IN/OUT: Der Leerweg, der gefahren wird, bevor nach der Berührung eines Objektes durch die Kugel des Messtasters der tatsächliche Schaltvorgang des Tasters erfolgt. Dieser Leerweg ist der Offset zwischen Berührpunkt Tasterkugel-Objekt und dem Schaltpunkt des Tasters und muß unter Berücksichtigung der Anfahrrichtung mit einer ermittelten Position verrechnet werden.

Application.Touchprobe.Parameter.OffsetBallRadiusTriggerPos.Y

Variablentyp: RVar

Momentan nicht verwendet!

Application.Touchprobe.Parameter.ReferencePositionZ

Variablentyp: RVar

IN/OUT: Die theoretische Referenzposition Z des Schaltpunktes des Messtasters auf dem Werkzeuglängenmesstaster, die durch die Kalibrierung des Messtasters ermittelt wurde.

Application.Touchprobe.Parameter.NormalVelocity.Lin

Variablentyp: RVar

IN: Die konfigurierte Normalgeschwindigkeit für Bewegungen von Linearachsen. Damit die Bewegung mit der korrekten Geschwindigkeit ausgeführt wird, muß vor dem Start einer Bewegung mit Normalgeschwindigkeit (MoveAbs, MoveRel, CircleAbs, CircleRel, CwHlxAbs, CwHlxRel, CcwHlxAbs, CcwHlxRel) diese Geschwindigkeit unter Verwendung des entsprechenden Befehls (Vel oder F-Wort) gesetzt werden. Die Konfiguration dieser Geschwindigkeit erfolgt im Einstelldialog des Messtasters.

Application.Touchprobe.Parameter.NormalVelocity.Rot

Variablentyp: RVar

IN: Die konfigurierte Normalgeschwindigkeit für Bewegungen von Drehachsen. Damit die Bewegung mit der korrekten Geschwindigkeit ausgeführt wird, muß vor dem Start einer Bewegung mit Normalgeschwindigkeit (MoveAbs, MoveRel) diese Geschwindigkeit unter Verwendung des entsprechenden Befehls (RVel) gesetzt werden. Die Konfiguration dieser Geschwindigkeit erfolgt im Einstelldialog des Messtasters.

Application.Touchprobe.Parameter.FastVelocity.Lin

Variablentyp: RVar

IN: Die konfigurierte Eilgeschwindigkeit für Bewegungen von Linearachsen. Damit die Eilbewegung mit der korrekten Geschwindigkeit ausgeführt wird, muß vor dem Start einer Eilbewegung (FastAbs, FastRel) diese Geschwindigkeit unter Verwendung des entsprechenden Befehls (FastVel) gesetzt werden. Die Konfiguration dieser Geschwindigkeit erfolgt im Einstelldialog des Messtasters.

Application.Touchprobe.Parameter.FastVelocity.Rot

Variablentyp: RVar

IN: Die konfigurierte Eilgeschwindigkeit für Bewegungen von Drehachsen. Damit die Eilbewegung mit der korrekten Geschwindigkeit ausgeführt wird, muß vor dem Start einer Eilbewegung (FastAbs, FastRel) diese Geschwindigkeit unter Verwendung des entsprechenden Befehls (FastRVel) gesetzt werden. Die Konfiguration dieser Geschwindigkeit erfolgt im Einstelldialog des Messtasters.

Application.Touchprobe.Parameter.ApproachVelocity.Lin

Variablentyp: RVar

IN: Die konfigurierte Geschwindigkeit für Linearachsen, mit der die Suchfahrt, d.h. die Annäherung des Messtasters an das Objekt, ausgeführt wird. Damit die Suchfahrt mit der korrekten Geschwindigkeit ausgeführt wird, muß vor dem Start der Bewegung diese Geschwindigkeit unter Verwendung des entsprechenden Befehls (Vel oder F-Wort) gesetzt werden. Die Konfiguration dieser Geschwindigkeit erfolgt im Einstelldialog des Messtasters.

Application.Touchprobe.Parameter.RetractionVelocity.Lin

Variablentyp: RVar

IN: Die konfigurierte Geschwindigkeit für Linearachsen, mit der die Rückzugsbewegung des Messtasters vom Objekt weg erfolgt, nachdem bei der Suchfahrt der Kontakt des Tasters mit dem Objekt erfolgt ist. Damit die Rückzugsbewegung mit der korrekten Geschwindigkeit ausgeführt wird, muß vor dem Start der Rückzugsbewegung diese Geschwindigkeit unter Verwendung des entsprechenden Befehls (Vel oder F-Wort) gesetzt werden. Die Konfiguration dieser Geschwindigkeit erfolgt im Einstelldialog des Messtasters.

Application.Touchprobe.Parameter.MeasureBasePos

Application.Touchprobe.Parameter.MeasureBasePos.X

Application.Touchprobe.Parameter.MeasureBasePos.Y

Application.Touchprobe.Parameter.MeasureBasePos.Z

Variablentyp: QVar (bei Anweisung ohne Einzelkoordinate) oder RVar (bei Anweisung mit Einzelkoordinate .X, .Y, .Z)

IN/OUT: Die konfigurierten Koordinaten der Grundposition, die vor der eigentlichen Vermessung eingenommen wird. Die Konfiguration dieser Position erfolgt im Einstelldialog des Messtasters.

Application.Touchprobe.Parameter.MeasureBasePos.MoveOrder

Variablentyp: StrVar

IN/OUT: Die konfigurierte Anfahrreihenfolge für das Anfahren der Grundposition. Die Konfiguration der Anfahrreihenfolge erfolgt im Einstelldialog des Messtasters.

Application.Touchprobe.Parameter.LimitPos1

Application.Touchprobe.Parameter.LimitPos1.X

Application.Touchprobe.Parameter.LimitPos1.Y

Application.Touchprobe.Parameter.LimitPos1.Z

Application.Touchprobe.Parameter.LimitPos2

Application.Touchprobe.Parameter.LimitPos2.X

Application.Touchprobe.Parameter.LimitPos2.Y

Application.Touchprobe.Parameter.LimitPos2.Z

Variablentyp: QVar (bei Anweisung ohne Einzelkoordinate) oder RVar (bei Anweisung mit Einzelkoordinate .X, .Y, .Z)

IN: Die Koordinaten von Positionsgrenzwerten (i.A. LimitPos1: ein unterer Grenzwert, LimitPos2: ein oberer Grenzwert), die für verschiedene Zwecke verwendet werden können. Denkbare Anwendungen wären beispielsweise

·ein unterer Positionsgrenzwert für die Z-Achse, ab der ein pneumatisch betriebener Messtaster nicht mehr in die Arbeitslage gebracht werden kann

·untere Positionsgrenzwerte unterhalb deren eine Vermessung aufgrund Kollisionsgefahr nicht mehr möglich ist

·obere Positionsgrenzwerte ab denen eine Vermessung aufgrund Kollisionsgefahr nicht mehr möglich ist

·Positionsgrenzen, die mit einem Messtaster in Arbeitslage nicht überschritten werden dürfen

Die Konfiguration dieser Position erfolgt im Einstelldialog des Messtasters.

Application.Touchprobe.Parameter.MeasureStartPos

Application.Touchprobe.Parameter.MeasureStartPos.X

Application.Touchprobe.Parameter.MeasureStartPos.Y

Application.Touchprobe.Parameter.MeasureStartPos.Z

Variablentyp: QVar (bei Anweisung ohne Einzelkoordinate) oder RVar (bei Anweisung mit Einzelkoordinate .X, .Y, .Z)

IN/OUT: Die konfigurierten Koordinaten der Startposition vor den Messfahrten. Ab dieser Position können noch Korrekturen der Position durch den Anwender vorgenommen werden, falls dies erforderlich sein sollte. In automatisierten Abläufen starten die Messfahrten ab dieser Position. Die Konfiguration dieser Position erfolgt im Einstelldialog des Messtasters.

Application.Touchprobe.Parameter.MeasureStartPos.MoveOrder

Variablentyp: StrVar

IN/OUT: Die konfigurierte Anfahrreihenfolge für das Anfahren der Startposition der Messung. Die Konfiguration der Anfahrreihenfolge erfolgt im Einstelldialog des Messtasters.

Application.Touchprobe.Parameter.MeasureEndPos

Application.Touchprobe.Parameter.MeasureEndPos.X

Application.Touchprobe.Parameter.MeasureEndPos.Y

Application.Touchprobe.Parameter.MeasureEndPos.Z

Variablentyp: QVar (bei Anweisung ohne Einzelkoordinate) oder RVar (bei Anweisung mit Einzelkoordinate .X, .Y, .Z)

IN: Die konfigurierten Koordinaten der Endposition nach den Messfahrten. Bei Abläufen mit manueller Handhabung wird an dieser Position der Messtaster aus der Spannzange der Spindel entnommen. In automatisierten Abläufen erfolgt hier das Einziehen des Messtasters in das Schutzgehäuse. Die Konfiguration dieser Position erfolgt im Einstelldialog des Messtasters.

Application.Touchprobe.Parameter.MeasureEndPos.MoveOrder

Variablentyp: StrVar

IN/OUT: Die konfigurierte Anfahrreihenfolge für das Anfahren der Endposition nach der Messung. Die Konfiguration der Anfahrreihenfolge erfolgt im Einstelldialog des Messtasters.

Application.Touchprobe.Parameter.MeasureTestPos

Application.Touchprobe.Parameter.MeasureTestPos.X

Application.Touchprobe.Parameter.MeasureTestPos.Y

Application.Touchprobe.Parameter.MeasureTestPos.Z

Variablentyp: QVar (bei Anweisung ohne Einzelkoordinate) oder RVar (bei Anweisung mit Einzelkoordinate .X, .Y, .Z)

IN/OUT: Die konfigurierten Koordinaten der Testposition. n der Testposition erfolgt der Funktionstest des Messtasters. Je nach Ausführung des Messtasters kann dieser Funktionstest unterschiedlich ausfallen.

- Anfahren einer Position und Aufforderung an den Anwender, den Messtaster einmal zu betätigen

- Anfahren einer Referenzfläche, so daß der Messtaster betätigt ist

- bei drahtlosen Systemen: Überprüfung der Statussignale des Messtasters

Die Konfiguration dieser Position erfolgt im Einstelldialog des Messtasters.

Application.Touchprobe.Parameter.MeasureTestPos.MoveOrder

Variablentyp: StrVar

IN: Die konfigurierte Anfahrreihenfolge für das Anfahren der Testposition. Die Konfiguration der Anfahrreihenfolge erfolgt im Einstelldialog des Messtasters.

Application.Touchprobe.Parameter.Input.TouchProbe.Use

Application.Touchprobe.Parameter.Input.TouchProbe.Port

Application.Touchprobe.Parameter.Input.TouchProbe.Bit

Application.Touchprobe.Parameter.Input.TouchProbe.ActiveLevel

Application.Touchprobe.Parameter.Input.BatteryState.Use

Application.Touchprobe.Parameter.Input.BatteryState.Port

Application.Touchprobe.Parameter.Input.BatteryState.Bit

Application.Touchprobe.Parameter.Input.BatteryState.ActiveLevel

Application.Touchprobe.Parameter.Input.ConnectState.Use

Application.Touchprobe.Parameter.Input.ConnectState.Port

Application.Touchprobe.Parameter.Input.ConnectState.Bit

Application.Touchprobe.Parameter.Input.ConnectState.ActiveLevel

Application.Touchprobe.Parameter.Input.AirPressure.Use

Application.Touchprobe.Parameter.Input.AirPressure.Port

Application.Touchprobe.Parameter.Input.AirPressure.Bit

Application.Touchprobe.Parameter.Input.AirPressure.ActiveLevel

Application.Touchprobe.Parameter.Input.SpindleStandstill.Use

Application.Touchprobe.Parameter.Input.SpindleStandstill.Port

Application.Touchprobe.Parameter.Input.SpindleStandstill.Bit

Application.Touchprobe.Parameter.Input.SpindleStandstill.ActiveLevel

Application.Touchprobe.Parameter.Input.CoverOpen.Use

Application.Touchprobe.Parameter.Input.CoverOpen.Port

Application.Touchprobe.Parameter.Input.CoverOpen.Bit

Application.Touchprobe.Parameter.Input.CoverOpen.ActiveLevel

Application.Touchprobe.Parameter.Input.CoverClosed.Use

Application.Touchprobe.Parameter.Input.CoverClosed.Port

Application.Touchprobe.Parameter.Input.CoverClosed.Bit

Application.Touchprobe.Parameter.Input.CoverClosed.ActiveLevel

Application.Touchprobe.Parameter.Input.InOperatingPosition.Use

Application.Touchprobe.Parameter.Input.InOperatingPosition.Port

Application.Touchprobe.Parameter.Input.InOperatingPosition.Bit

Application.Touchprobe.Parameter.Input.InOperatingPosition.ActiveLevel

Application.Touchprobe.Parameter.Input.InParkPosition.Use

Application.Touchprobe.Parameter.Input.InParkPosition.Port

Application.Touchprobe.Parameter.Input.InParkPosition.Bit

Application.Touchprobe.Parameter.Input.InParkPosition.ActiveLevel

Application.Touchprobe.Parameter.Output.OpenCover.Use

Application.Touchprobe.Parameter.Output.OpenCover.Port

Application.Touchprobe.Parameter.Output.OpenCover.Bit

Application.Touchprobe.Parameter.Output.OpenCover.ActiveLevel

Application.Touchprobe.Parameter.Output.Connect.Use

Application.Touchprobe.Parameter.Output.Connect.Port

Application.Touchprobe.Parameter.Output.Connect.Bit

Application.Touchprobe.Parameter.Output.Connect.ActiveLevel

Application.Touchprobe.Parameter.Output.StartMeasure.Use

Application.Touchprobe.Parameter.Output.StartMeasure.Port

Application.Touchprobe.Parameter.Output.StartMeasure.Bit

Application.Touchprobe.Parameter.Output.StartMeasure.ActiveLevel

Application.Touchprobe.Parameter.Output.CloseCover.Use

Application.Touchprobe.Parameter.Output.CloseCover.Port

Application.Touchprobe.Parameter.Output.CloseCover.Bit

Application.Touchprobe.Parameter.Output.CloseCover.ActiveLevel

Application.Touchprobe.Parameter.Output.BlastOff.Use

Application.Touchprobe.Parameter.Output.BlastOff.Port

Application.Touchprobe.Parameter.Output.BlastOff.Bit

Application.Touchprobe.Parameter.Output.BlastOff.ActiveLevel

Application.Touchprobe.Parameter.Output.CleanMeasuringObject.Use

Application.Touchprobe.Parameter.Output.CleanMeasuringObject.Port

Application.Touchprobe.Parameter.Output.CleanMeasuringObject.Bit

Application.Touchprobe.Parameter.Output.CleanMeasuringObject.ActiveLevel

Application.Touchprobe.Parameter.Output.SetOperatingPosition.Use

Application.Touchprobe.Parameter.Output.SetOperatingPosition.Port

Application.Touchprobe.Parameter.Output.SetOperatingPosition.Bit

Application.Touchprobe.Parameter.Output.SetOperatingPosition.ActiveLevel

Application.Touchprobe.Parameter.Output.SetParkPosition.Use

Application.Touchprobe.Parameter.Output.SetParkPosition.Port

Application.Touchprobe.Parameter.Output.SetParkPosition.Bit

Application.Touchprobe.Parameter.Output.SetParkPosition.ActiveLevel

Abfrage von Signalkonfigurationen für verschiedene Signale, die im Zusammenhang mit dem Messtaster verwendet werden. Die Konfiguration des digitalen Eingangs bzw. Ausgangs erfolgt jeweils im Einstelldialog des Messtasters. Die Elemente des Parameters haben diese Bedeutung:

Use | Variablentyp: IVar oder RVar IN: Eine Angabe, ob der in der Konfiguration des Messtasters angegebene digitale Eingang verwendet wird oder nicht. Verwendet wird das jeweilige Signal, wenn im Einstelldialog der entsprechende Eintrag als aktiv (angehakt) gekennzeichnet ist.
Port | Variablentyp: IVar oder RVar IN: Die Portnummer (1...n) des in der Konfiguration des Messtasters angegebenen digitalen Eingangs.
Bit | Variablentyp: IVar oder RVar IN: Die Bitnummer (1...8) des in der Konfiguration des Messtasters angegebenen digitalen Eingangs.
ActiveLevel | Variablentyp: IVar oder RVar IN: Der in der Konfiguration des Messtasters festgelegte Aktivpegel des Signals. Der Wert 0 bedeutet "Lowaktiv", ein Wert ungleich 0 bedeutet "Highaktiv".

Verwendung der Eingangssignale:

TouchProbe | Aktueller Wert des Eingangssgnals des Messtasters
BatteryState | Statussignal des Batteriezustands eines drahtlos verbundenen Messtasters
ConnectState | Statussignal der Funkverbindung zu einem drahtlos verbundenen Messtaster
AirPressure | Status des Luftdrucks: "Ausreichend" oder "Zu niedrig"
SpindleStandstill | Status der Frässpindel: "Drehend" oder "Im Stillstand"
CoverOpen | Aktueller Zustand der Abdeckung/des Gehäuses des Messtasters ist "Offen"
CoverClosed | Aktueller Zustand der Abdeckung/des Gehäuses des Messtasters ist "Geschlossen"
InOperatingPosition | Der Messtaster ist in der Arbeitsposition / nicht in der Arbeitsposition
InParkPosition | Der Messtaster ist in der Parkposition / nicht in der Parkposition

Verwendung der Ausgangssignale:

Connect | Funkverbindung zu einem drahtlos verbundenen Messtaster aktivieren
StartMeasure | Betriebsart "Messen" eines drahtlos verbundenen Messtasters aktivieren
OpenCover | Steuersignal: Abdeckung / Gehäuse des Messtasters öffnen
CloseCover | Steuersignal: Abdeckung / Gehäuse des Messtasters schliessen
BlastOff | Freiblasen am Messtaster einschalten
CleanMeasuringObject | Freiblasen des Messobjektes einschalten
SetOperatingPosition | Steuersignal: Messtasters in die Arbeitsposition bringen
SetParkPosition | Steuersignal: Messtasters in die Parkposition bringen

Application.Touchprobe.MeasureCycle.Success

Variablentyp: IVar oder RVar

IN/OUT: Flag zur Signalisierung daß der eigene Ablauf für die scriptgesteuerte Messung mit dem Messtaster erfolgreich ausgeführt wurde. Bevor die Anwendung das Script zur Ausführung des Messzyklus startet, wird dieser Parameter auf den Wert 0 gesetzt. Der Wert 0 bedeutet, daß der Ablauf nicht erfolgreich war, der Wert 1 bedeutet daß der Messzyklus erfolgreich ausgeführt werden konnte. Wenn nach Beenden des Scripts dieser Parameter auf den Wert 0 gesetzt ist, dann wird das Ergebnis der Vermessung nicht in die Anwendung übernommen.

Application.Touchprobe.MeasureCycle.Result.X

Application.Touchprobe.MeasureCycle.Result.Y

Application.Touchprobe.MeasureCycle.Result.Z

Variablentyp: RVar

IN/OUT: Die Ergebnisse der scriptgesteuerten Vermessung in Form von Koordinaten. Die einzelnen Ergebnisse stellen die bei der Messung mit dem Messtaster ermittelten Positionen dar. Bevor die Anwendung das Script zur Ausführung des Messzyklus startet, werden diese Parameter auf den Wert 0x3FFFFFFF ("Kein Resultat" bzw. "Wert nicht verwenden") gesetzt. Falls eine oder mehrere dieser Koordinaten bei der Vermessung nicht ermittelt wurden oder für die gewünschte Vermessung nicht relevant waren, sollten sie auf den speziellen Wert 0x3FFFFFFF (hexadezimal) gesetzt werden, dies entspricht dem dezimalen Wert 1073741823. Diese Konstante wird anwendungsintern verwendet, um Zustände wie "Nicht verwendet", "Ungültig" oder "Nicht beachten" zu signalisieren.

Application.Touchprobe.CalibrationCycle.Success

Variablentyp: IVar oder RVar

IN/OUT: Flag zur Signalisierung daß der eigene Ablauf für die scriptgesteuerte Kalibrierung der Messtasterparameter erfolgreich ausgeführt wurde. Bevor die Anwendung das Script zur Ausführung des Messzyklus startet, wird dieser Parameter durch die Anwendung auf den Wert 0 gesetzt. Der Wert 0 bedeutet, daß der Ablauf nicht erfolgreich war, der Wert 1 bedeutet daß der Kalibrierzyklus erfolgreich ausgeführt werden konnte. Nach Ausführung des Scripts liest die Anwendung den Wert des Flags. Wenn nach Beenden des Scripts dieser Parameter auf den Wert 0 gesetzt ist, dann wird das Ergebnis der Messung nicht in die Anwendung übernommen.

Application.Touchprobe.CalibrationCycle.Result.Offset.X

Application.Touchprobe.CalibrationCycle.Result.Offset.Y

Variablentyp: RVar

IN/OUT: Die im Script für die Kalibrierung des Messtasters ermittelten Offset-Distanzen X und Y zwischen der Mittelachse des Werkzeugs und der Mittelachse des Messtaster-Stifts. Dieser Wert ist nur von Bedeutung, wenn der Messtaster parallel zur Z-Achse fest montiert ist. Wenn der Messtaster mit einer Werkzeugaufnahme in die Spannzange der Spindel eingespannt wird, sind diese Offsetwerte 0.

Application.Touchprobe.CalibrationCycle.Result.ReferencePositionZ

Variablentyp: RVar

IN/OUT: Die bei der scriptgesteuerten Kalibrierung der Messtasterparameter ermittelte theoretische Referenzposition Z des Schaltpunktes des Messtasters auf dem Schaltpunkt des Werkzeuglängenmesstasters.

Übersicht der Parameter, welche auf interne Variablen des Werkzeugwechselsystems verweisen und zur Steuerung eigener Abläufe für die Vermessung von Werkzeugen verwendet werden können Anwendungsparameter zur Verwendung bei Scripten für Vermessungen mit einer Messdose

Application.Caliper.Parameter.Active

Variablentyp: IVar oder RVar

IN: Der aktuelle Signalzustand des Messtasters. Wenn dieser Parameter "1" (!=0) ist, dann ist die Messdose betätigt, wenn der Parameter "0" ist, dann ist die Messdose nicht betätigt. Bei der Ermittlung des Signalzustands werden die bei der Konfiguration der Messdose gesetzten Werte für den Aktivpegel berücksichtigt.

Variablentyp: IVar oder RVar

Application.Caliper.Parameter.RelTravelLength

Variablentyp: RVar

IN/OUT: Dieser Parameter gibt die konfigurierte Länge der Suchfahrt in Richtung Z an. Die Suchfahrt ist die Bewegung "abwärts" in Richtung auf die Messdose zu.

Application.Caliper.Parameter.RelRetractionLength

Variablentyp: RVar

IN/OUT: Dieser Parameter gibt die konfigurierte Länge der Rückzugsbewegung an. Die Rückzugsbewegung ist die Bewegung "aufwärts" in Richtung Z von der Messdose weg, nachdem am Signalausgang der Messdose während der Suchfahrt ein Pegelwechsel stattfand.

Application.Caliper.Parameter.Offset.Z

Variablentyp: RVar

IN/OUT: Die Differenz zwischen der unteren Auflagefläche der Messdose, die auf dem Maschinentisch oder dem Werkstück aufliegt, und dem Schaltpunkt des Mikroschalters in der Messdose!

Application.Caliper.Parameter.Input.Caliper.Use

Application.Caliper.Parameter.Input.Caliper.Port

Application.Caliper.Parameter.Input.Caliper.Bit

Application.Caliper.Parameter.Input.Caliper.ActiveLevel

IN: Abfrage von Signalkonfigurationen für verschiedene Signale, die im Zusammenhang mit der Messdose verwendet werden. Die Konfiguration des digitalen Eingangs bzw. Ausgangs erfolgt jeweils im Einstelldialog der Messdose. Die Elemente des Parameters haben diese Bedeutung:

Use | Variablentyp: IVar oder RVar IN: Eine Angabe, ob der in der Konfiguration der Messdose angegebene digitale Eingang verwendet wird oder nicht. Verwendet wird das jeweilige Signal, wenn im Einstelldialog der entsprechende Eintrag als aktiv (angehakt) gekennzeichnet ist.
Port | Variablentyp: IVar oder RVar IN: Die Portnummer (1...n) des in der Konfiguration der Messdose angegebenen digitalen Eingangs.
Bit | Variablentyp: IVar oder RVar IN: Die Bitnummer (1...8) des in der Konfiguration der Messdose angegebenen digitalen Eingangs.
ActiveLevel | Variablentyp: IVar oder RVar IN: Der in der Konfiguration der Messdose festgelegte Aktivpegel des Signals. Der Wert 0 bedeutet "Lowaktiv", ein Wert ungleich 0 bedeutet "Highaktiv".

Verwendung der Eingangssignale:

TouchProbe

Aktueller Wert des Eingangssignals der Messdose

Verwendung der Ausgangssignale:

Nicht verwendet

RVar | Angabe einer R-Variablen, in welche das Ergebnis der Abfrage eingetragen wird
IVar | Angabe einer I-Variablen, in welche das Ergebnis der Abfrage eingetragen wird
StrVar | Angabe einer Str-Variablen, in welche das Ergebnis der Abfrage eingetragen wird
QVar | Angabe einer Q-Variablen, in welche das Ergebnis der Abfrage eingetragen wird

Beispiel:

;Ermitteln der Parameter des Eingangsports des

;Messtasters und Einlesen des aktuellen Pegels

;des Messtasters

GetApplicationParameter "Application.TouchProbe.Parameter.Input.TouchProbe.Use" I1

GetApplicationParameter "Application.TouchProbe.Parameter.Input.TouchProbe.Port" I2

GetApplicationParameter "Application.TouchProbe.Parameter.Input.TouchProbe.Bit" I3

GetApplicationParameter "Application.TouchProbe.Parameter.Input.TouchProbe.ActiveLevel" I4

If(I1==1)

I11=InI2.I3

If(I4==0)

I12=(I11==0) ? 1 : 0

Else

I12=(I11==0) ? 0 : 1

EndIf

Str1= (I12==0) ? "Der Taster ist nicht betätigt" : "Der Taster ist betätigt"

MessageBox INFO Str1

Else

MessageBox INFO "Der Messtastereingang wird nicht verwendet!"

EndIf

Siehe auch: SetApplicationParameter


GetAxisParam

GetAxisParam Axis=axis Rn=axisparamtype Ro=axisparamtype ....

Abfrage von Achsparametern

Dieser Befehl ermöglicht den Zugriff auf die wesentlichen Betriebsparameter einer Achse. In Verbindung mit dem Befehl SetAxisParam ist es so möglich, Achsparameter für spezielle Betriebszustände an einer Achse zu optimieren, z.B. eine Anpassung der maximalen Achsbeschleunigung nach Aufnahme einer hohen Last durch einen Greifer.

Syntax:

GetAxisParam Axis=axis Rn=axisparamtype Ro=axisparamtype Rp=axisparamtype ....

Rn, Rm usw. sind Real-Variablen (mit unterschiedlichen Indizes) welche den jeweils spezifizierten Parameter empfangen. Die Angabe der Parameterlsite ist modal, d.h. es kann entweder nur ein Parameter oder aber auch mehrere Parameter in einem einzigen Aufruf abgefragt werden.

Parameter des Befehls

axis

Angabe der Achse, deren Parameter abgefragt werden sollen. Gültige Werte sind die Achsidentifier X, Y, Z, A, B, C, U, V, W.

Rn, Ro, Rp

Eine oder mehrere Real-Variablen, die zur Aufnahme des Wertes des angegebenen Parameters dienen. Diese Variablen müssen unterschiedliche Indizes haben.

axisparamtype

Die nach Festlegung der aufnehmenden Variablen folgende Kennung spezifiziert den abzufragenden Parameter. Bei der Angabe des Parameters wird nicht zwischen Groß- und Kleinschreibung unterschieden.

Folgende Parameter sind möglich:

MAXVELO

Die maximale Fahrgeschwindigkeit der Achse.

Einheit des zurückgelieferten Wertes:

Bei Linearachsen | µm/s (Mikrometer/Sekunde)
Bei Drehachsen | ''/s (Bogensekunden/Sekunde)

MAXACCE

Die maximal mögliche Beschleunigung der Achse.

Einheit des zurückgelieferten Wertes:

Bei Linearachsen | µm/s² (Mikrometer/Sekundenquadrat)
Bei Drehachsen | ''/s² (Bogensekunden/Sekundenquadrat)

MAXJERK

Der maximale Ruck der Achse. Der Ruck stellt die Änderung der Beschleunigung pro Zeiteinheit dar. Je größer z.B: die Erhöhung der Beschleunigung beim Fahren der Startrampe einer Bewegung, desto größer die mechanische Beanspruchung der Achse.

Einheit des zurückgelieferten Wertes:

Bei Linearachsen | µm/s³ (Mikrometer/Sek.quadrat)/Sekunde
Bei Drehachsen | ''/s³ (Bogensekunden/Sek.quadrat)/Sek.

NORMVELOVERRIDE

NORMACCEOVERRIDE

NORMJERKOVERRIDE

TEACHVELOVERRIDE

TEACHACCEOVERRIDE

TEACHJERKOVERRIDE

FASTVELOVERRIDE

FASTACCEOVERRIDE

FASTJERKOVERRIDE

%Sub_Norm_Perfomance_Override

Type "Ruck von XY für MoveAbs/G01 setzen"

SetAxisParam Axis=X NORMJERKOVERRIDE=R_Norm_Perfomance_Override

SetAxisParam Axis=Y NORMJERKOVERRIDE=R_Norm_Perfomance_Override

SetAxisParam Axis=Z NORMJERKOVERRIDE=R_Norm_Perfomance_Override

SetAxisParam Axis=B NORMJERKOVERRIDE=R_Norm_Perfomance_Override

Type "ACC von XY für MoveAbs/G01 setzen"

SetAxisParam Axis=X NORMACCEOVERRIDE=R_Norm_Perfomance_Override

SetAxisParam Axis=Y NORMACCEOVERRIDE=R_Norm_Perfomance_Override

SetAxisParam Axis=Z NORMACCEOVERRIDE=R_Norm_Perfomance_Override

SetAxisParam Axis=B NORMACCEOVERRIDE=R_Norm_Perfomance_Override

RETURN

;*****************************************************************

%Sub_Fast_Perfomance_Override

Type "Ruck von XY für FastAbs/G00 setzen"

SetAxisParam Axis=X FASTJERKOVERRIDE=R_Fast_Perfomance_Override

SetAxisParam Axis=Y FASTJERKOVERRIDE=R_Fast_Perfomance_Override

SetAxisParam Axis=Z FASTJERKOVERRIDE=R_Fast_Perfomance_Override

SetAxisParam Axis=B FASTJERKOVERRIDE=R_Fast_Perfomance_Override

Type "ACC von XY für FastAbs/G00 setzen"

SetAxisParam Axis=X FASTACCEOVERRIDE=R_Fast_Perfomance_Override

SetAxisParam Axis=Y FASTACCEOVERRIDE=R_Fast_Perfomance_Override

SetAxisParam Axis=Z FASTACCEOVERRIDE=R_Fast_Perfomance_Override

SetAxisParam Axis=B FASTACCEOVERRIDE=R_Fast_Perfomance_Override

RETURN

;*****************************************************************

%Sub_Rot_Norm_Perfomance_Override

Type "Ruck von AC für MoveAbs/G01 setzen"

SetAxisParam Axis=A NORMJERKOVERRIDE=R_Norm_Perfomance_Override

SetAxisParam Axis=C NORMJERKOVERRIDE=R_Norm_Perfomance_Override

Type "ACC von AC für MoveAbs/G01 setzen"

SetAxisParam Axis=A NORMACCEOVERRIDE=R_Norm_Perfomance_Override

SetAxisParam Axis=C NORMACCEOVERRIDE=R_Norm_Perfomance_Override

RETURN

;*****************************************************************

%Sub_Rot_Fast_Perfomance_Override

Type "Ruck von AC für FastAbs/G00 setzen"

SetAxisParam Axis=A FASTJERKOVERRIDE=R_Fast_Perfomance_Override

SetAxisParam Axis=C FASTJERKOVERRIDE=R_Fast_Perfomance_Override

Type "ACC von AC für FastAbs/G00 setzen"

SetAxisParam Axis=A FASTACCEOVERRIDE=R_Fast_Perfomance_Override

SetAxisParam Axis=C FASTACCEOVERRIDE=R_Fast_Perfomance_Override

RETURN


GetBit

GetBit [Ep.b] [InIx.Iy]

Einlesen des Wertes eines Eingangs

Einlesen des Wertes des einzelnen Bits b eines Eingangsports p. Gültige Portnummern reichen von 1 ... Anzahl der verfügbaren Eingangsports, gültige Bitnummern reichen von 1 ... 8.

Zu beachten ist, daß die Eingänge bzw. Ausgänge in der Systemsteuerung sowohl als Ein-/Ausgabegerät als auch als logische Ports in der Ein-/Ausgangsverwaltung eingerichtet wurden.

Verwendung von Variablen für indexierte Eingänge

Es ist außerdem möglich, anstelle fester Angaben für Port- und Bitnummer Variablen für die Angabe des Ports zu benutzen. Die gewünschten Werte für Port- und Bitnummer werden in Integer-Variablen abgelegt und können bei der Indizierung des Eingangs verwendet werden.

Bei Verwendung von Variablen für die Angabe von Port- und Bitnummer ist zu beachten, daß die Angabe des Eingangs nur noch in der Form "InIx.Iy" zulässig ist, die Form "Ep.b" kann hier nicht verwendet werden.

Das Abfragen des Eingangs mit variabler Angabe von Port- und Bitnummer erfolgt in diesen beiden Schreibweisen:

In=GetBit InIx.Iy

oder

In=InIx.Iy

Verknüpfen von Eingängen mit Operatoren

Für die komplexe Auswertung der Zustände von mehreren Eingängen besteht die Möglichkeit, die Eingangsbezeichner direkt mit mathematischen und logischen Operatoren zu verknüpfen. Für diese Verknüpfungen können die nachstehend aufgeführten Operatoren verwendet werden.

Bei diesen Anweisungen kann für die Benennung des Eingangs auch die oben erwähnte Indizierung der Eingänge über Variablen verwendet werden.

Operator | Wirkung | Anwendung | Auswirkung
| | Bitweise Oder | I1 = In1.1 | In1.2 | I1==1, wenn E1.1 oder E1.2 oder beide Eingänge den logischen Pegel 1 haben, 0 wenn kein Eingang des Pegel 1 hat
& | Bitweise Und | I1 = In1.1 & In1.2 | I1==1, wenn E1.1 und E1.2 den logischen Pegel 1 haben, in allen anderen Fällen 0
^ | Bitweise Exklusiv-Oder | I1 = In1.1 & In1.2 | I1==1, wenn entweder I1.1 oder I1.2 den logischen Pegel 1 hat. Haben beide Eingänge den Wert 0 oder den Wert 1, so erhält I1 den Wert 0
~ | Bitweise Inversion | I1 = ~In1.1 | Wenn E1.1 den logischen Pegel 0 hat, so wird I1 der Wert -1 zugewiesen. Da Integer-Variablen ein 32-Bit-Wert sind, ist der bitweise invertierte Wert von 0 FFFFFFFF(hex), was als vorzeichenbehafteter Integer-Wert die Zahl -1 darstellt. Falls E1.1 den logischen Wert 1 hat, ist das Ergebnis dementsprechend FFFFFFFE(hex), was in der Darstellung als vorzeichenbehafteter Integer-Wert der Zahl -2 entspricht.
+ | Addition | I1 = In1.1 + InI1.2 | I1==0, wenn beide Eingänge den Wert 0 haben. I1==1, wenn entweder E1.1 oder E1.2 den Wert 1 haben. I1==2, wenn an beiden Eingängen der logische Pegel 1 anliegt.
- | Subtraktion | I1 = In1.1 - In1.2 | I1==-1, wenn an E1.1 der Pegel 0 anliegt und an E1.2 der Pegel 1 anliegt. I1==0, wenn an den beiden Eingängen E1.1 und E1.2 der Pegel 0 oder an beiden Eingängen der Pegel 1 anliegt. I1==1, wenn an E1.1 der Pegel 1 und an E1.2 der Pegel 0 anliegt.
* | Multiplikation | I1 = In1.1 * In1.2 | I1==1, wenn an beiden Eingängen der Pegel 1 anliegt. In allen anderen Fällen ist das Ergebnis der Zuweisung 0.
/ | Division | I1 = In1.1 / In1.2 | I1==0, wenn E1.1==0 und E1.2==1. I1==1, wenn an beiden Eingängen der Pegel 1 anliegt. Sonderfall: Wenn E1.1==0 oder E1.1==1 und an E1.2 der Pegel 0 anliegt (normalerweise Division durch 0), wird dem Ergebnis der Wert 0 zugewiesen.

Beispiel:

;Lesen von Bit 4 des Eingangsports 1

;und zuweisen des Wertes an die R-Variable R5

R5=GetBit E1.4

;Auswerten in einer Bedingung

If GetBit E2.7

;Aktionen wenn Eingang 2, Bit 7 aktiv ist...

...

EndIf

;Lesen eines Eingangsports mit Angabe von

;Port- und Bitnummer über Variablen

I1=1 ;Portnummer=1

I2=4 ;Bitnummer=4

I10=-1 ;Presetwert fuer Ergebnis

I10=GetBit InI1.I2 ;Eingang abfragen

oder auch

I10=InI1.I2 ;Ebenfalls zulässig...

Siehe auch: SetBit, ResBit, Ep.b, SetPort, GetPort, SetAnalog, GetAnalog, SetPWM


GetCurrentPos

Qn=GetCurrentPos as

Abfrage der aktuellen Positionen einer Motion Control

Funktion zur Abfrage der aktuellen Achspositionen einer Motion Control. Diese Funktion liefert die momentan aktuelle Achspositionen, die sich auf den momentan gesetzten Werkstücknullpunkt beziehen. Wenn kein Werkstücknullpunkt aktiv ist, beziehen sich die zurückgelieferten Positionen auf den Maschinennullpunkt.

Syntax:

Qn=GetCurrentPos as

Parameter des Befehls

Qn | Eine Q-Variable mit dem Index n, welche die aktuellen Positionen aller Achsen der Steuerung aufnimmt. Der Index n bewegt sich im Bereich von 1 ... 300.
as | Angabe des Achssystems, für dessen Achsen die aktuellen Positionen ermittelt werden sollen. Gültige Angaben sind hier 1, 2 und 3. as=1: Die Positionen werden für Achssystem 1 ermittelt und in die Q-Variable übertragen as=2: Die Positionen werden für Achssystem 2 ermittelt und in die Q-Variable übertragen as=3: Die Positionen werden für beide Achssysteme ermittelt und in die Q-Variable übertragen

Beispiel:

;*******************************************************************************************

;Anzeige der aktuellen Positionen der Achsen X,Y,Z waehrend einer Segmentbewegung

;*******************************************************************************************

%Subr100

#MoveAbs X100.0 Y120.0 F5.0

While InMotion

Q1=GetCurrentPos 1

Endwhile

While InMotion

R11=Q1:X

R12=Q1:Y

R13=Q1:Z

Display Clear 8

Display 8 1 "Position: X=%R11% Y=%R12% Z=%R13%"

Delay 100

EndWhile

Display Clear 8

Return

;--------------------------------------------------------

Siehe auch: Posn.a, GetDestinationPos


GetDate

GetDate Rj Rm Rt

Abfrage des aktuellen Datums

Dieser Befehl dient zur Abfrage des aktuellen Datums des Systems. Nach Aufruf dieser Funktion stehen in den R-Variablen Rj, Rm, Rt diese Werte zur Verfügung:

Rj = Jahr (vierstellig, z.B. 2008)

Rm = Monat (1...12)

Rt = Tag (1...31)

j,m,t = 0 … 999

Beispiel:

;angenommen, heute ist der 21. Juli 2008

R0 = GetDate R1 R2 R3

;jetzt haben R1, R2 und R3 folgende Werte:

;R1=2008, R2=7, R3=21

Siehe auch: GetTime


GetDestinationPos

Qn=GetDestinationPos as

Abfrage der aktuellen Zielpositionen einer aktiven Segmentbewegung

Funktion zur Abfrage der aktuellen Zielpositionen des zuletzt aufgerufenen Bewegungsbefehls. Im Gegensatz zur Abfrage der aktuellen Achspositionen (mit Posn.a, z.B. Pos1.X, Pos1.Y, ...) welche laufend die momentan aktuelle Achsposition liefern, werden bei Verwendung dieses Befehls die Zielpositionen der Achsen zurückgegeben, die nach vollständiger Ausführung der Segmentbewegung erreicht sind.

So kann beispielsweise bei Unterbrechung bzw. Abbruch einer Bewegung infolge eines NOT-HALT die letzte an die MotionControl gegebene Zielposition abgefragt werden. Dadurch wird es möglich, den noch nicht zurückgelegten "Restweg" des letzten Bewegungsbefehls im Behandlungs-Unterprogramm OnError oder OnEmergencyOff abzufahren, nachdem die NOT-HALT - Situation beseitigt wurde.

Syntax:

Qn=GetDestinationPos as

Parameter des Befehls

Qn | Eine Q-Variable mit dem Index n, welche die aktuellen Zielpositionen aller Achsen der Steuerung aufnimmt. Der Index n bewegt sich im Bereich von 1 ... 300.
as | Angabe des Achssystems, für dessen Achsen die Zielpositionen ermittelt werden sollen. Gültige Angaben sind hier 1, 2 und 3. as=1: Die Zielpositionen werden für Achssystem 1 ermittelt und in die Q-Variable übertragen as=2: Die Zielpositionen werden für Achssystem 2 ermittelt und in die Q-Variable übertragen as=3: Die Zielpositionen werden für beide Achssysteme ermittelt und in die Q-Variable übertragen

Beispiele:

(1)

;*******************************************************************************************

;Anzeige der Restwege der Achsen X,Y,Z waehrend einer Segmentbewegung

;*******************************************************************************************

%Subr100

Q11=GetDestinationPos 1

While InMotion

R11=FAbs(Q11:X-Pos1.X)

R12=FAbs(Q11:Y-Pos1.Y)

R13=FAbs(Q11:Z-Pos1.Z)

Display Clear 8

Display 8 1 "Restweg: X=%R11% Y=%R12% Z=%R13%"

Delay 100

EndWhile

Display Clear 8

Return

;--------------------------------------------------------

(2)

#define MCTL_STAT_POWER_FAIL 0x02000000

;*******************************************************************************************

;SubRoutine fuer die Wiederinbetriebnahme der Steuerung nach einem NOT-AUS

;-> wird im NOT-HALT-Fall innerhalb des Event-Handlers OnError oder OnEmergencyOff aufgerufen

;*******************************************************************************************

%Subr200

;die letzte Zielposition abfragen

Q31=GetDestinationPos 1

R31=Q31:X R32=Q31:Y R33=Q31:Z

Display Clear 8

Display 8 1 "Aktuelle DestPos: X=%R31% Y=%R32% Z=%R33%"

;eine u.U. noch aktive Bewegung anhalten / Stop any (just active) motion

MStop

;den aktuellen WS-Nullpunkt von der MotionControl in Achssystem 1 abfragen

Q30 = WpZeroRead 1

Display 2 1 " STOP: ein u.U. aktiver WSNP wurde gerettet"

Do

;Bediener wird aufgefordert, die POWER-Taste zu drücken:

R0=MessageBox INFO OKCANCEL "POWER-Taste drücken"

;Betriebsspannung für die Endstufen kann oder soll nicht zugeschaltet werden -> Abbruch:

If R0==IDCANCEL

Abort

EndIf

;Reset Motion Control

MReset

;Wirkung von MCTL-RESET -> mind. 2,0 sec !!

Delay 2000

Display 3 1 " RESET MotionControl durchgeführt -> WSNP gelöscht "

;erneut prüfen, ob die Motion Control noch POWER-Fail meldet:

;Argument == 1 -> Statuswort dwCommon abfragen

I1=GetStateMctl(1)

EndDo Not(I1&MCTL_STAT_POWER_FAIL)

;den aktuellen WSNP wiederherstellen (RESTORE)

R31=Q30:X

R32=Q30:Y

R33=Q30:Z

R34=Q30:A

WpZeroAbs XR31 YR32 ZR33 AR34

Display 4 1 " ein u.U. aktiver WSNP wurde wiederhergestellt"

; die letzte Zielposition anfahren:

R31=Q31:X R32=Q31:Y R33=Q31:Z

Display 5 1 " Restweg fahren: X=%R31% Y=%R32% Z=%R33%"

;Override 10%

MOverride 10

;die abgebrochene Bewegung fortsetzen

MoveFrame Q31

;Override 100%

MOverride 100

Display Clear 8

Return

;-------------------------------------------------------------------------------------------

Siehe auch: GetCurrentPos, Posn.a


GetFileType

GetFileType str_filename

Ermitteln des Dateityps

Show/Hide Hidden Text

Im Programmpaket werden einige spezifische Dateiformate für die Programmierung der CNC-Anlagen benutzt. Die Funktion GetFileType untersucht die übergebene Datei und gibt einen numerischen Wert zurück, welcher den Typ der Datei beschreibt.

Syntax:

Rn|In=GetFileType parameter

Parameter des Befehls:

In, Rn

Angabe einer I-Variablen (Integer-Variable, ganzzahlige Variable) oder R-Variablen (Real-Variable, Gleitkommawert-Variable) mit dem Index n, in welcher der ermittelte Dateityp abgelegt wird.

Diese Dateitypen sind momentan erfasst:

-1 | DOCTYPE_UNKNOWN | unbekannt, nicht erkannt
0 | DOCTYPE_PAL | PAL_Source_File Rich Text Format, Extension PAL
1 | DOCTYPE_DIN | DIN_Source_File Rich Text Format, Extension DIN
2 | DOCTYPE_NCP | NCP_Postprocessor_File ASCII Text format, Extension NCP
3 | DOCTYPE_CNC | CNC_Output_File (ASCII Text Format)
4 | DOCTYPE_TXT | Common ASCII Text Format
5 | DOCTYPE_RTF | Common Rich Text Format, Extension RTF
6 | DOCTYPE_FRA | Frame format, Extension FRA
7 | DOCTYPE_EXE | Executable format, Extension EXE

str_filename

Angabe der zu prüfenden Datei als Zeichenkette oder als Str-Variable (Zeichenkettenvariable).

Es wird empfohlen, den vollständigen Pfad und Namen der Datei als Parameter an die Funktion zu übergeben, damit die Datei eindeutig identifizierbar ist.

Definitionsblock für Dateitypen

#define DOCTYPE_UNKNOWN -1

#define DOCTYPE_PAL 0

#define DOCTYPE_DIN 1

#define DOCTYPE_NCP 2

#define DOCTYPE_CNC 3

#define DOCTYPE_TXT 4

#define DOCTYPE_RTF 5

#define DOCTYPE_FRA 6

#define DOCTYPE_EXE 7

Beispiel:

(1)

;Mehrmalige Auswahl einer Datei und Überprüfung des Dateityps

#define DOCTYPE_UNKNOWN -1

#define DOCTYPE_PAL 0

#define DOCTYPE_DIN 1

#define DOCTYPE_NCP 2

#define DOCTYPE_CNC 3

#define DOCTYPE_TXT 4

#define DOCTYPE_RTF 5

#define DOCTYPE_FRA 6

#define DOCTYPE_EXE 7

While 1==1

;zuvor die Zeichenkettenvariable R1 mit einer

;leeren Zeichenkette initialisieren

Str1=""

Str11="C:\NCProg\WorkFiles"

Str12="Alle Dateien|*.*||"

;Dateiauswahldialog aufrufen...

R1=FileDialog OpenFileDialog=1 FileMustExist=1 Result=Str1 DefaultPath=Str11 Filter=Str13

;Rueckgabewerte fuer den weiteren Verlauf auswerten

;Anwender hat "Oeffnen" gewaehlt..

If R1==1

;Die Datei existiert..

If FileExists Str1

;Variable initialisieren und Typ abfragen...

R2=-1

R2=GetFileType Str1

;Auswertung des Rueckgabewertes

Switch R2

Case DOCTYPE_PAL:

Str2="isel-PAL"

EndCase

Case DOCTYPE_DIN:

Str2="DIN-ISO"

EndCase

Case DOCTYPE_NCP:

Str2="isel-NCP"

EndCase

Case DOCTYPE_CNC:

Str2="isel-CNC"

EndCase

Case DOCTYPE_TXT:

Str2="TeXT"

EndCase

Case DOCTYPE_RTF:

Str2="RichTextFormat"

EndCase

Case DOCTYPE_FRA:

Str2="FRAme"

EndCase

Case DOCTYPE_EXE:

Str2="EXEcutable"

EndCase

Case DOCTYPE_UNKNOWN:

Str2="unknown"

EndCase

Default:

Str2="unknown"

EndCase

Endswitch

;Anzeige des Ergebnisses

MessageBox INFO "Erkannter Dateityp: "+Str2

EndIf

EndIf

R1=MessageBox YESNO QUESTION "Weiter...?"

If(R1!=IDYES)

ProgEnd

EndIf

EndWhile

Siehe auch: FileExists, FileDialog, CopyFile, MoveFile, DeleteFile, SplitPath, MakePath


GetGear

Rn=GetGear axis Rx Ry

Abfrage des aktuellen Umrechnungsfaktors für eine Achse

Der Übersetzungsfaktor einer Achse wird aus einem gemeinen Bruch errechnet, d.h. es gibt einen ganzzahligen Anteil im Zähler des Bruchs und einen ganzzahligen Anteil im Nenner des Bruchs, welche den Übersetzungsfaktor der Achse darstellen.

Der Befehl GetGear wird verwendet, um das Übersetzungsverhältnis einer Achse zur Laufzeit abzufragen.

Parameter des Befehls:

Rn | Eine R-Variable (Real-Variable) mit dem Index n, welche den Rückgabewert der Funktion erhält.
axis | Angabe der Achse, für die das Übersetzungsverhältnis abgefragt werden soll. Gültige Parameter sind X, Y, Z, A, B, C, U, V, W.
Rx | Eine R-Variable (Real-Variable) mit dem Index x, welche den Wert des Zählers des Bruchs enthält, der das aktuelle Übersetzungsverhältnis definiert.
Ry | Eine R-Variable (Real-Variable) mit dem Index x, welche den Wert des Nenners des Bruchs enthält, der das aktuelle Übersetzungsverhältnis definiert.

Rückgabewert der Funktion

Wenn während des Aufrufs des Befehls ein Fehler aufgetreten ist, ist der Rückgabewert 0. Wenn der Aufruf erfolgreich war, dann enthält Rn das Übersetzungsverhältnis als Gleitkommawert (z.B. 1.5000).

Siehe auch: SetGear


GetLanguage

GetLanguage(arg)

Abfrage der Systemsprache

Show/Hide Hidden Text

Diese Funktion dient zur Abfrage der auf dem Steuer-PC installierten Sprache.

Syntax:

I-Variable=GetLanguage(argument)

R-Variable=GetLanguage(argument)

Das an die Funktion übergebene Argument arg legt fest, welche Sprache abgefragt werden soll:

arg | Bedeutung
0 oder 1 | Aktuelle Sprache des Client-Programms (ProNC bzw. Remote) abfragen
2 | Aktuelle Sprache von der Windows-Systemeinstellung abfragen
3 | Aktuelle Sprache von der Windows-User-Einstellung abfragen

Rückgabewerte

Nach der Abfrage der Sprache werden diese Werte zurückgegeben:

Rückgabewert | Deklaration | Bedeutung
-1 | --- | Ungültiger Parameter übergeben / Fehler beim Aufruf
7 | LANG_GERMAN | Deutsch
9 | LANG_ENGLISH | Englisch
12 | LANG_FRENCH | Französisch

Mehr...

Primary language IDs aus WINNT.H.

0 LANG_NEUTRAL

54 LANG_AFRIKAANS

28 LANG_ALBANIAN

1 LANG_ARABIC

43 LANG_ARMENIAN

77 LANG_ASSAMESE

44 LANG_AZERI

45 LANG_BASQUE

35 LANG_BELARUSIAN

69 LANG_BENGALI

2 LANG_BULGARIAN

3 LANG_CATALAN

4 LANG_CHINESE

26 LANG_CROATIAN

5 LANG_CZECH

6 LANG_DANISH

19 LANG_DUTCH

9 LANG_ENGLISH

37 LANG_ESTONIAN

56 LANG_FAEROESE

41 LANG_FARSI

11 LANG_FINNISH

12 LANG_FRENCH

55 LANG_GEORGIAN

7 LANG_GERMAN

8 LANG_GREEK

71 LANG_GUJARATI

13 LANG_HEBREW

57 LANG_HINDI

14 LANG_HUNGARIAN

15 LANG_ICELANDIC

33 LANG_INDONESIAN

16 LANG_ITALIAN

17 LANG_JAPANESE

75 LANG_KANNADA

96 LANG_KASHMIRI

63 LANG_KAZAK

87 LANG_KONKANI

18 LANG_KOREAN

38 LANG_LATVIAN

39 LANG_LITHUANIAN

47 LANG_MACEDONIAN

62 LANG_MALAY

76 LANG_MALAYALAM

88 LANG_MANIPURI

78 LANG_MARATHI

97 LANG_NEPALI

20 LANG_NORWEGIAN

72 LANG_ORIYA

21 LANG_POLISH

22 LANG_PORTUGUESE

70 LANG_PUNJABI

24 LANG_ROMANIAN

25 LANG_RUSSIAN

79 LANG_SANSKRIT

26 LANG_SERBIAN

89 LANG_SINDHI

27 LANG_SLOVAK

36 LANG_SLOVENIAN

10 LANG_SPANISH

65 LANG_SWAHILI

29 LANG_SWEDISH

73 LANG_TAMIL

68 LANG_TATAR

74 LANG_TELUGU

30 LANG_THAI

31 LANG_TURKISH

34 LANG_UKRAINIAN

32 LANG_URDU

67 LANG_UZBEK

42 LANG_VIETNAMESE

Beispiele:

(1)

If GetLanguage(0) == LANG_GERMAN

Type die aktuelle Sprache ist GERMAN ...

EndIf

(2)

;Definition von Rueckgabewerten der Language-Codes

#define LANG_GERMAN 7

#define LANG_ENGLISH 9

#define LANG_FRENCH 12

While 1==1

I1= GetLanguage(1) ;1: vom Client-Programm, d.h. von ProNC / Remote

Switch I1

case LANG_GERMAN:

XType "aktuelle Sprache ist deutsch, LanguageCodeID ist: %I1% ..."

endcase

case LANG_ENGLISH:

XType "aktuelle Sprache ist englisch, LanguageCodeID ist: %I1% ..."

endcase

case LANG_FRENCH:

XType "aktuelle Sprache ist französich, LanguageCodeID ist: %I1% ..."

endcase

default:

XType "aktuelle Sprache ist nicht ger|eng|fra, LanguageCodeID ist: %I1% ..."

endcase

EndSwitch

I2= GetLanguage(2) ;2: vom System, d.h. SystemDefaultLangID von Win

I3= GetLanguage(3) ;3: vom System, d.h. UserDefaultLangID von Win

I4= GetLanguage(4) ;x: Fehler: Funktion gibt -1 zurück ...

EndWhile


GetLastErrorCode

Fehlercode des zuletzt aufgetretenen Fehlers abfragen

Show/Hide Hidden Text

Mittels dieser Funktion kann der Fehlercode des letzten Fehlers, der bei der automatischen Bearbeitung einer CNC-Datei aufgetreten ist, abgefragt werden. Diese Funktion ist insbesondere nützlich, wenn mit Hilfe der Event-Handlerfunktion "OnError" eine eigene Fehlerbehandlung implementiert werden soll.

Syntax:

In=GetLastErrorCode(arg)

Parameter des Befehls

In

Eine I-Variable mit dem Index n, welche den Rückgabewert des Funktionsaufrufs erhält. Je nach übergebenem Argument ist das entweder der gesamte Fehlercode, die Fehlergruppe oder das Loword des Fehlercodes, welches den numerischen Fehlercode innerhalb der Fehlergruppe darstellt.

arg

Mit Hilfe des übergebenen Arguments kann der Rückgabewert der Funktion definiert werden:

0 | Vollständigen Fehlercode abfragen
1 | Abfragen des Lowords des Fehlercodes, dieser Wert entspricht der Fehlerdefinition innerhalb der Fehlergruppe.
2 | Abfragen des numerischen Wertes der Fehlergruppe
3 | Abfragen der Fehlerklassifizierung

Struktur der Fehlercodes

Genereller Aufbau:

.------------- 2 Bit fuer den Typ der Fehlermeldung

| 1 Bit fuer die Kennung "User-Fehlermeldung"

| 1 Bit frei

| .-------- 3 Byte fuer die Herkunft des Fehlers

| | .--- 4 Byte fuer den Fehlercode

| | |

| | |

0x 0 000 0000

In der bitweisen Darstellung:

3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1

1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0

|---|-|-|-----------------------|-------------------------------|

|Typ|C| | Herkunft des Fehlers | Fehlercode |

---------------------------------------------------------------

Typ

ist der Typ des Fehlercodes:

0 | Kein Fehler
1 | Info
2 | Warnung
3 | Fehler

C

Reserviertes Bit

R

Reserviertes Bit

Herkunft des Fehlers

Angabe der Fehlergruppe. Die Fehlergruppe wird durch einen numerischen Wert dargestellt, der eindeutig einem funktionellen Block im Programmpaket CNCWorkbench zugeordnet ist.

Fehlercode

Ist der Fehlercode, d.h. ein numerischer Wert, der innerhalb der Fehlergruppe einem bestimmten Ereignis zugeordnet ist.

Übersicht der Fehlergruppen

Definition | Wert (hex) | Wert (dez.) | Fehlergruppe
FACILITY_NULL | 0x00000000 | 0 | Verwendet von Windows
FACILITY_RPC | 0x00010000 | 1 | Verwendet von Windows
FACILITY_DISPATCH | 0x00020000 | 2 | Verwendet von Windows
FACILITY_STORAGE | 0x00030000 | 3 | Verwendet von Windows
FACILITY_ITF | 0x00040000 | 4 | Verwendet von Windows
FACILITY_WIN32 | 0x00070000 | 7 | Verwendet von Windows
FACILITY_WINDOWS | 0x00080000 | 8 | Verwendet von Windows
FACILITY_SSPI | 0x00090000 | 9 | Verwendet von Windows
FACILITY_CONTROL | 0x000A0000 | 10 | Verwendet von Windows
FACILITY_CERT | 0x000B0000 | 11 | Verwendet von Windows
FACILITY_INTERNET | 0x000C0000 | 12 | Verwendet von Windows
FAC_USERDEFINED | 0x08000000 | 2048 | Spezifische Fehlergruppe für OEM-Anwendungen
FAC_SYSTEM | 0x08010000 | 2049 | Systemfehler des Betriebssystems (Windows-Fehler)
FAC_MATH | 0x08020000 | 2050 | Fehler bei Berechnungen allgemein oder spez. NC
FAC_UPMV4VXD | 0x09010000 | 2305 | Fehler im Steuerungskern (Windows VxD) der UPMV4/12
FAC_UPMV4DLL | 0x09020000 | 2306 | Fehler in der Motion Control DLL der UPMV4/12
FAC_INTERFACECARDCTRL | 0x09030000 | 2307 | Fehler von Steuerungen des Typs Interfacekarte
FAC_INTERFACECARDDLL | 0x09040000 | 2308 | Fehler der Interface-DLL einer Interfacekarte
FAC_IMC4CTRL | 0x09050000 | 2309 | Fehler der Steuerplatine IMC4
FAC_IMC4DLL | 0x09060000 | 2310 | Fehler der Motion Control DLL der Steuerung IMC4
FAC_IFC5CTRL | 0x09070000 | 2311 | Steuerung Interfacekarte V5.x
FAC_IFC5DLL | 0x09080000 | 2312 | Interface-DLL der Interfacekarte V5.x
FAC_IMS6DLL | 0x09090000 | 2313 | Fehler der IMS6 Motion Control DLL
FAC_IMS6CTRL | 0x090A0000 | 2314 | Fehler der Schrittmotorsteuerung IMS6
FAC_IML4DLL | 0x090B0000 | 2315 | Fehler der IML4 Motion Control DLL
FAC_IML4CTRL | 0x090C0000 | 2316 | Fehler der Steuerung/Steuerkarte IML4
FAC_PARPORT_CAN_WDM | 0x09100000 | 2320 | Fehler aus WDM-Treiber für Parallelport-Dongle CAN-Strg
FAC_PC104_CAN_WDM | 0x09110000 | 2321 | Fehler des WDM_CAN-Treibers für die PC104-Karte
FAC_PCI_CAN_WDM | 0x09120000 | 2322 | Fehler des WDM_Can_Treibers für die PCI-Karte
FAC_CAN_KERNEL | 0x09130000 | 2323 | Fehler aus dem CAN kernel driver
FAC_CAN_DLL | 0x09140000 | 2324 | Fehler in der CAN interface DLL
FAC_CANSET | 0x09150000 | 2325 | Fehler im Einstellprogramm CANSet
FAC_CAN_RESERVED1 | 0x09160000 | 2326 | Reserviert für CAN #1
FAC_CAN_RESERVED2 | 0x09170000 | 2327 | Reserviert für CAN #2
FAC_CAN_RESERVED3 | 0x09180000 | 2328 | Reserviert für CAN #3
FAC_CAN_RESERVED4 | 0x09190000 | 2329 | Reserviert für CAN #4
FAC_CAN_RESERVED5 | 0x091A0000 | 2330 | Reserviert für CAN #5
FAC_CAN_RESERVED6 | 0x091B0000 | 2331 | Reserviert für CAN #6
FAC_CAN_RESERVED7 | 0x091C0000 | 2332 | Reserviert für CAN #7
FAC_CAN_RESERVED8 | 0x091D0000 | 2333 | Reserviert für CAN #8
FAC_CAN_RESERVED9 | 0x091E0000 | 2334 | Reserviert für CAN #9
FAC_CAN_RESERVED10 | 0x091F0000 | 2335 | Reserviert für CAN #10
FAC_PICDLL | 0x09200000 | 2336 | Fehler von der PICMIC interface DLL
FAC_PICCTRL | 0x09210000 | 2337 | Fehler eines/mehrerer PICMIC-Modul(e)
FAC_MCTLDUMMY | 0x09220000 | 2338 | Fehler der MctlDummy.DLL (Motion Control simulation DLL)
FAC_LOGOSOL_DLL | 0x09710000 | 2417 | Fehler von der Logosol-Interface-DLL
FAC_LOGOSOL_CTRL | 0x09720000 | 2418 | Fehler des Logosol-Controllers
FAC_MTASC_KERNEL | 0x09730000 | 2419 | Fehler aus MTasc control kernel
FAC_MTASC_DLL | 0x09740000 | 2420 | Fehler aus der MTasc Interface-DLL (MTasc.DLL)
FAC_MCTLMTASC_DLL | 0x097B0000 | 2427 | Fehler in Motion Control Interface-DLL (Mctl_MTASC.DLL)
FAC_IOMTASC_DLL | 0x097C0000 | 2428 | Fehler in IO Interface-DLL (Io_MTASC.DLL) der MTasc-Strg
FAC_SPNMTASC_DLL | 0x097D0000 | 2429 | Fehler in MTASC Spindel Interface-DLL (Spn_MTASC.DLL)
FAC_IOWARRIOR | 0x09750000 | 2421 | Fehler in einer DLL die das IOWarrior interface verwendet
FAC_AXCTL | 0x09760000 | 2422 | Fehler von der Handlingachsen-DLL AxCtl.DLL
FAC_IMDCTL | 0x09770000 | 2423 | Fehler der DLL zur Ansteuerung der Endstufen IMDxx
FAC_IMCCOREPP_DLL | 0x09780000 | 2424 | Fehler der Interface DLL der IMC-PP Schrittmotorsteuerung
FAC_MCTLCOREPP | 0x09790000 | 2425 | Fehler der Motion Control Client-DLL für CorePPComm.DLL
FAC_MCHPFSUSB | 0x097A0000 | 2426 | Fehler aus der Microchip FullSpeed USB Interface-DLL

FAC_OTHERMCTLCTRL | 0x09FE0000 | 2558 | Allgemeiner Steuerungsfehler: Steuerungshardware
FAC_OTHERMCTLDLL | 0x09FF0000 | 2559 | Allgemeiner Steuerungsfehler: Interface-DLL
FAC_SPINDLE | 0x0A010000 | 2561 | Fehler bei der Ausführung einer Frässpindel-Funktion
FAC_IO | 0x0A020000 | 2562 | Fehler bei Ausführung einer Ein-/Ausgabeoperation (IO)
FAC_TCH | 0x0A030000 | 2563 | Fehler bei der Ausführung des Werkzeugwechsels
FAC_SECC | 0x0A040000 | 2564 | Fehler vom Sicherheitskreis-Modul
FAC_FIELDBUS | 0x0A050000 | 2565 | Allg. Fehler/Warnung/Info von (CAN)Busschnittstelle
FAC_DISTMEASDEVICE | 0x0A060000 | 2566 | Fehler eines Distanzsensors/Distanzmessgeraets
FAC_DRILLEXT | 0x0A070000 | 2567 | Fehler in der Drill Extension DLL (Implement. Bohrzyklen)
FAC_LOGOSOL_SECC | 0x0A080000 | 2568 | Logosol security circuit interface DLL
FAC_BARCODEREADER | 0x0A090000 | 2569 | Fehler in einem / von einem Barcode-Lesegerät
FAC_TEMPERATUREMEASURE | 0x0A0A0000 | 2570 | Fehler in / bei Temperatursensor, -messgeraet, -messung
FAC_MPG | 0x0A0B0000 | 2571 | Fehler in / bei MPG (Handrad allgemein)
FAC_TOUCHPROBE | 0x0A0C0000 | 2572 | Fehler bei der Verwendung des digitalen Messtasters
FAC_COUNTER | 0x0A0D0000 | 2573 | Fehler bei der Verwendung der Zählererweiterung
FAC_SPECIFICCONTROL | 0x0A300000 | 2608 | Fehler einer speziellen Steuerungskomponente
FAC_LDS_SIRIUS | 0x0A310000 | 2609 | Fehler eines Laser-Distanzsensors Sirius Fa. Dimensional
FAC_OEMCTRL1 | 0x0A700000 | 2673 | Fehler einer OEM Steuerungskomponente #1
FAC_OEMCTRL2 | 0x0A710000 | 2674 | Fehler einer OEM Steuerungskomponente #2
FAC_OEMCTRL3 | 0x0A720000 | 2675 | Fehler einer OEM Steuerungskomponente #3
FAC_OEMCTRL4 | 0x0A730000 | 2676 | Fehler einer OEM Steuerungskomponente #4
FAC_OEMCTRL5 | 0x0A740000 | 2677 | Fehler einer OEM Steuerungskomponente #5
FAC_OEMCTRL6 | 0x0A750000 | 2678 | Fehler einer OEM Steuerungskomponente #6
FAC_OEMCTRL7 | 0x0A760000 | 2679 | Fehler einer OEM Steuerungskomponente #7
FAC_OEMCTRL8 | 0x0A770000 | 2680 | Fehler einer OEM Steuerungskomponente #8
FAC_OEMCTRL9 | 0x0A780000 | 2681 | Fehler einer OEM Steuerungskomponente #9

FAC_MCTLADM | 0x0A810000 | 2689 | Fehler in der Motion Control-Verwaltung
FAC_SPNADM | 0x0A820000 | 2690 | Fehler in der Spindel-Verwaltung
FAC_IOADM | 0x0A830000 | 2691 | Fehler in der Ein-/Ausgabe-Verwaltung (IO-Verwaltung)
FAC_TCHADM | 0x0A840000 | 2692 | Fehler in der Werkzeugwechsler-Verwaltung
FAC_FRAMEADM | 0x0A850000 | 2693 | Fehler im Verwalter für Frame-Positionen
FAC_UNITADM | 0x0A860000 | 2694 | Fehler in der Einheitenverwaltung
FAC_VCIADM | 0x0A870000 | 2695 | Fehler im CAN-Feldbus-Verwaltungsmodul
FAC_SECCADM | 0x0A880000 | 2696 | Fehler in der Verwaltung des Sicherheitskreismoduls
FAC_DISTMEASDEVICEADM | 0x0A890000 | 2697 | Fehler im Verwaltungsmodul für Distanzmessgeräte
FAC_LASERADM | 0x0A8A0000 | 2698 | Fehler im Verwaltungsmodul für Laser-(Schneid-)Geräte
FAC_MPGADM | 0x0A8B0000 | 2699 | Fehler in der Handradverwaltung allgemein
FAC_DYNLOAD | 0x0AC00000 | 2752 | Fehler bei der Verwaltung dynamisch geladener Komponenten
FAC_RUNTIMEADM | 0x0AD00000 | 2753 | Verwaltung der Laufzeitmessung (Betriebsstundenzähler)
FAC_NCCTRL | 0x0AD10000 | 2769 | Fehler Steuerungsinterface_Software
FAC_COMPILER | 0x0B010000 | 2817 | Fehler im PAL-Compiler (ProNC)
FAC_INTERPRETER | 0x0B020000 | 2818 | Fehler im CNC-Interpreter (ProNC, Remote)
FAC_NCPTOPAL | 0x0B030000 | 2819 | Fehler im NCP-PAL-Konverter
FAC_OPERATORPANEL | 0x0B040000 | 2820 | Fehler von der Operator panel interface DLL
FAC_OUTPUTOFFSET | 0x0B050000 | 2821 | Fehler in der Erweiterungs-DLL für Datei-Mehrfachausgabe
FAC_PALPCCOMPILER | 0x0B060000 | 2822 | Fehler vom PALPC-Compiler
FAC_SIGNALINTERFACE | 0x0B070000 | 2823 | Fehler aus der Erweiterungs-DLL für die Signalisierung
FAC_DOWNIXXDLL | 0x0B080000 | 2824 | PALPC Download Extension DLL
FAC_NOTIFICATION | 0x0B090000 | 2825 | Notification Interface DLL (SMS, Mail)
FAC_EXECNCISCRIPT | 0x0B0A0000 | 2826 | ProNC/Remote Erweiterungs-DLL für Scriptbearbeitung
FAC_NCITRAFOEXTENSION | 0x0B0B0000 | 2827 | Interpreter Erweiterungs-DLL fuer Transformationen
FAC_CODEGEN | 0x0B110000 | 2833 | Fehler im NC_Codegenerator (CODEGEN.DLL)
FAC_RPX | 0x0B810000 | 2945 | Remote Plugin Extension
FAC_USRC | 0x0B820000 | 2946 | User Specific Remote Client
FAC_CNCWBFILTER | 0x0B830000 | 2947 | Fehler aus einer Filter-DLL für Remote/ProNC

FAC_APP_USERDEFINED | 0x0C000000 | 3072 | Spezifische Fehlergruppe für OEM-Anwendungen
FAC_APP_PRONC | 0x0C010000 | 3073 | Fehler in der Anwendung ProNC
FAC_APP_REMOTE | 0x0C020000 | 3074 | Fehler in der Anwendung Remote
FAC_APP_KNC | 0x0C030000 | 3075 | reserviert, gesperrt
FAC_APP_AXMOVE | 0x0C040000 | 3076 | reserviert, gesperrt
FAC_APP_NCD | 0x0C050000 | 3077 | Fehler in der Anwendung NCD (Graphik NCP)
FAC_APP_PALPC | 0x0C060000 | 3078 | Fehler in der Anwendung PALPC
FAC_APP_IMESMI | 0x0C100000 | 3088 | reserviert, gesperrt
FAC_APP_OTHERAPPS | 0x0CFE0000 | 3326 | reserviert, gesperrt
FAC_COMMON | 0x0F000000 | 3840 | Fehlergruppe benutzt in allgemeinen Zusammenhängen
FAC_USERSPECIFIC | 0x0FA00000 | 4000 | Benutzerspezifische Fehler / ext. Fehlersignal
FAC_REMOTEEXT | 0x0FA10000 | 4001 | Benutzerspezifischer Fehler aus Remote-Erweiterungs-DLL

Definitionsblock für die Fehlergruppen (vollständig)

;----------------------------------------------------------

#define TYPE_SUCCESS 0x00000000

#define TYPE_INFO 0x40000000

#define TYPE_WARNING 0x80000000

#define TYPE_ERROR 0xC0000000

#define FAC_USERDEFINED 0x08000000

#define FAC_SYSTEM 0x08010000

#define FAC_MATH 0x08020000

#define FAC_UPMV4VXD 0x09010000

#define FAC_UPMV4DLL 0x09020000

#define FAC_INTERFACECARDCTRL 0x09030000

#define FAC_INTERFACECARDDLL 0x09040000

#define FAC_IMC4CTRL 0x09050000

#define FAC_IMC4DLL 0x09060000

#define FAC_IFC5CTRL 0x09070000

#define FAC_IFC5DLL 0x09080000

#define FAC_IMS6DLL 0x09090000

#define FAC_IMS6CTRL 0x090A0000

#define FAC_IML4DLL 0x090B0000

#define FAC_IML4CTRL 0x090C0000

#define FAC_PARPORT_CAN_WDM 0x09100000

#define FAC_PC104_CAN_WDM 0x09110000

#define FAC_PCI_CAN_WDM 0x09120000

#define FAC_CAN_KERNEL 0x09130000

#define FAC_CAN_DLL 0x09140000

#define FAC_CANSET 0x09150000

#define FAC_CAN_RESERVED1 0x09160000

#define FAC_CAN_RESERVED2 0x09170000

#define FAC_CAN_RESERVED3 0x09180000

#define FAC_CAN_RESERVED4 0x09190000

#define FAC_CAN_RESERVED5 0x091A0000

#define FAC_CAN_RESERVED6 0x091B0000

#define FAC_CAN_RESERVED7 0x091C0000

#define FAC_CAN_RESERVED8 0x091D0000

#define FAC_CAN_RESERVED9 0x091E0000

#define FAC_CAN_RESERVED10 0x091F0000

#define FAC_PICDLL 0x09200000

#define FAC_PICCTRL 0x09210000

#define FAC_MCTLDUMMY 0x09220000

#define FAC_LOGOSOL_DLL 0x09710000

#define FAC_LOGOSOL_CTRL 0x09720000

#define FAC_MTASC_KERNEL 0x09730000

#define FAC_MTASC_DLL 0x09740000

#define FAC_MCTLMTASC_DLL 0x097B0000

#define FAC_IOMTASC_DLL 0x097C0000

#define FAC_SPNMTASC_DLL 0x097D0000

#define FAC_IOWARRIOR 0x09750000

#define FAC_AXCTL 0x09760000

#define FAC_IMDCTL 0x09770000

#define FAC_IMCCOREPP_DLL 0x09780000

#define FAC_MCTLCOREPP 0x09790000

#define FAC_MCHPFSUSB 0x097A0000

#define FAC_OTHERMCTLCTRL 0x09FE0000

#define FAC_OTHERMCTLDLL 0x09FF0000

#define FAC_SPINDLE 0x0A010000

#define FAC_IO 0x0A020000

#define FAC_TCH 0x0A030000

#define FAC_SECC 0x0A040000

#define FAC_FIELDBUS 0x0A050000

#define FAC_DISTMEASDEVICE 0x0A060000

#define FAC_DRILLEXT 0x0A070000

#define FAC_LOGOSOL_SECC 0x0A080000

#define FAC_BARCODEREADER 0x0A090000

#define FAC_TEMPERATUREMEASURE 0x0A0A0000

#define FAC_MPG 0x0A0B0000

#define FAC_TOUCHPROBE 0x0A0C0000

#define FAC_COUNTER 0x0A0D0000

#define FAC_SPECIFICCONTROL 0x0A300000

#define FAC_LDS_SIRIUS 0x0A310000

#define FAC_OEMCTRL1 0x0A700000

#define FAC_OEMCTRL2 0x0A710000

#define FAC_OEMCTRL3 0x0A720000

#define FAC_OEMCTRL4 0x0A730000

#define FAC_OEMCTRL5 0x0A740000

#define FAC_OEMCTRL6 0x0A750000

#define FAC_OEMCTRL7 0x0A760000

#define FAC_OEMCTRL8 0x0A770000

#define FAC_OEMCTRL9 0x0A780000

#define FAC_MCTLADM 0x0A810000

#define FAC_SPNADM 0x0A820000

#define FAC_IOADM 0x0A830000

#define FAC_TCHADM 0x0A840000

#define FAC_FRAMEADM 0x0A850000

#define FAC_UNITADM 0x0A860000

#define FAC_VCIADM 0x0A870000

#define FAC_SECCADM 0x0A880000

#define FAC_DISTMEASDEVICEADM 0x0A890000

#define FAC_LASERADM 0x0A8A0000

#define FAC_MPGADM 0x0A8B0000

#define FAC_DYNLOAD 0x0AC00000

#define FAC_RUNTIMEADM 0x0AD00000

#define FAC_NCCTRL 0x0AD10000

#define FAC_COMPILER 0x0B010000

#define FAC_INTERPRETER 0x0B020000

#define FAC_NCPTOPAL 0x0B030000

#define FAC_OPERATORPANEL 0x0B040000

#define FAC_OUTPUTOFFSET 0x0B050000

#define FAC_PALPCCOMPILER 0x0B060000

#define FAC_SIGNALINTERFACE 0x0B070000

#define FAC_DOWNIXXDLL 0x0B080000

#define FAC_NOTIFICATION 0x0B090000

#define FAC_EXECNCISCRIPT 0x0B0A0000

#define FAC_NCITRAFOEXTENSION 0x0B0B0000

#define FAC_CODEGEN 0x0B110000

#define FAC_RPX 0x0B810000

#define FAC_USRC 0x0B820000

#define FAC_CNCWBFILTER 0x0B830000

#define FAC_APP_USERDEFINED 0x0C000000

#define FAC_APP_PRONC 0x0C010000

#define FAC_APP_REMOTE 0x0C020000

#define FAC_APP_KNC 0x0C030000

#define FAC_APP_AXMOVE 0x0C040000

#define FAC_APP_NCD 0x0C050000

#define FAC_APP_PALPC 0x0C060000

#define FAC_APP_IMESMI 0x0C100000

#define FAC_APP_OTHERAPPS 0x0CFE0000

#define FAC_COMMON 0x0F000000

#define FAC_USERSPECIFIC 0x0FA00000

#define FAC_REMOTEEXT 0x0FA10000

;----------------------------------------------------------

Definitionsblock für die Fehlergruppen (minimal)

;----------------------------------------------------------

#define TYPE_SUCCESS 0x00000000

#define TYPE_INFO 0x40000000

#define TYPE_WARNING 0x80000000

#define TYPE_ERROR 0xC0000000

#define FAC_IMC4CTRL 0x09050000

#define FAC_IMC4DLL 0x09060000

#define FAC_IFC5CTRL 0x09070000

#define FAC_IFC5DLL 0x09080000

#define FAC_PARPORT_CAN_WDM 0x09100000

#define FAC_PC104_CAN_WDM 0x09110000

#define FAC_PCI_CAN_WDM 0x09120000

#define FAC_CAN_KERNEL 0x09130000

#define FAC_CAN_DLL 0x09140000

#define FAC_CANSET 0x09150000

#define FAC_MCTLDUMMY 0x09220000

#define FAC_LOGOSOL_DLL 0x09710000

#define FAC_LOGOSOL_CTRL 0x09720000

#define FAC_MTASC_KERNEL 0x09730000

#define FAC_MTASC_DLL 0x09740000

#define FAC_MCTLMTASC_DLL 0x097B0000

#define FAC_IOMTASC_DLL 0x097C0000

#define FAC_SPNMTASC_DLL 0x097D0000

#define FAC_AXCTL 0x09760000

#define FAC_IMDCTL 0x09770000

#define FAC_SPINDLE 0x0A010000

#define FAC_IO 0x0A020000

#define FAC_TCH 0x0A030000

#define FAC_SECC 0x0A040000

#define FAC_FIELDBUS 0x0A050000

#define FAC_DRILLEXT 0x0A070000

#define FAC_LOGOSOL_SECC 0x0A080000

#define FAC_BARCODEREADER 0x0A090000

#define FAC_TEMPERATUREMEASURE 0x0A0A0000

#define FAC_MPG 0x0A0B0000

#define FAC_TOUCHPROBE 0x0A0C0000

#define FAC_COUNTER 0x0A0D0000

#define FAC_MCTLADM 0x0A810000

#define FAC_SPNADM 0x0A820000

#define FAC_IOADM 0x0A830000

#define FAC_TCHADM 0x0A840000

#define FAC_FRAMEADM 0x0A850000

#define FAC_UNITADM 0x0A860000

#define FAC_VCIADM 0x0A870000

#define FAC_SECCADM 0x0A880000

#define FAC_MPGADM 0x0A8B0000

#define FAC_DYNLOAD 0x0AC00000

#define FAC_RUNTIMEADM 0x0AD00000

#define FAC_NCCTRL 0x0AD10000

#define FAC_COMPILER 0x0B010000

#define FAC_INTERPRETER 0x0B020000

#define FAC_NCPTOPAL 0x0B030000

#define FAC_SIGNALINTERFACE 0x0B070000

#define FAC_EXECNCISCRIPT 0x0B0A0000

#define FAC_CNCWBFILTER 0x0B830000

#define FAC_APP_USERDEFINED 0x0C000000

#define FAC_APP_PRONC 0x0C010000

#define FAC_APP_REMOTE 0x0C020000

#define FAC_APP_PALPC 0x0C060000

#define FAC_COMMON 0x0F000000

#define FAC_USERSPECIFIC 0x0FA00000

#define FAC_REMOTEEXT 0x0FA10000

;----------------------------------------------------------

Beispiel:

Verwendung in der Event-Handler-Funktion OnError

;**************************************************

;OnError

;**************************************************

OnError

;Den letzten=aktuellen Fehlercode abholen und als

;Fehlercode und Fehlertext im Display darstellen

;arg=0: den gesamten Fehler-Code abholen

I1=GetLastErrorCode(0)

I2=GetLastErrorCode(1)

I3=GetLastErrorCode(2)

;arg=Rueckgabewert von GetLastErrorCode(...)

Str1=GetLastErrorText(I1)

;alle LCD-Display-Zeilen löschen

Display Clear

;inclusive akt. ErrorCode

Display 1 1 "OnERROR: %X1% FAC=%I3% Code=%I2% "

;aktuellen Fehlertext auf Display anzeigen

Display 2 1 "%S1%"

EventReturn

;--------------------------------------------------

Siehe auch: GetLastErrorText, OnError, Display, #define


GetLastErrorText

Strn=GetLastErrorText(errorcode)

Rückgabe des Fehlermeldungstextes für einen Fehlercode

Show/Hide Hidden Text

Die Funktion GetLastErrorCode dient zur Abfrage des Fehlermeldungstextes des Fehlercodes in einer Fehlergruppe. Mit Hilfe des Fehlercodes wird der zugeordnete Klartext der Fehlermeldung ermittelt und in einer String-Variablen abgelegt.

Syntax:

Strn=GetLastErrorText(arg)

Parameter des Befehls

Strn

Eine String-Variable mit dem Index n, welche den Rückgabewert des Funktionsaufrufs erhält.

arg

Das übergebene Argument ist der Fehlercode, der mit Hilfe der Funktion GetLastErrorCode abgefragt wurde.

Alternativ kann ein eigener Fehlercode für eine eigene Fehlergruppe definiert sein, der nach den geltenden Definitionen für die Konstruktion eines Fehlercodes erstellt sein muß.

Struktur der Fehlercodes

Genereller Aufbau:

.------------- 2 Bit fuer den Typ der Fehlermeldung

| 1 Bit fuer die Kennung "User-Fehlermeldung"

| 1 Bit frei

| .-------- 3 Byte fuer die Herkunft des Fehlers

| | .--- 4 Byte fuer den Fehlercode

| | |

| | |

0x 0 000 0000

In der bitweisen Darstellung:

3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1

1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0

|---|-|-|-----------------------|-------------------------------|

|Typ|C| | Herkunft des Fehlers | Fehlercode |

---------------------------------------------------------------

Typ

ist der Typ des Fehlercodes:

0 | Kein Fehler
1 | Info
2 | Warnung
3 | Fehler

C

Reserviertes Bit

R

Reserviertes Bit

Herkunft des Fehlers

Angabe der Fehlergruppe. Die Fehlergruppe wird durch einen numerischen Wert dargestellt, der eindeutig einem funktionellen Block im Programmpaket CNCWorkbench zugeordnet ist.

Fehlercode

Ist der Fehlercode, d.h. ein numerischer Wert, der innerhalb der Fehlergruppe einem bestimmten Ereignis zugeordnet ist.

Prinzip der Ermittlung des Fehlertextes

Jeder Fehlergruppe ist eine entsprechende Fehlertextdatei zugeordnet, deren Namen sich folgendermaßen zusammensetzt:

Errxxxx[_yyy].txt

xxxx ist die Fehlergruppe als vierstellige Zahl. Namen von Fehlertextdateien, die nach dem Muster Errxxxx.txt aufgebaut sind, haben als Inhalt die deutschen Fehlermeldungstexte. Namen von Fehlertextdateien, die nach dem (optionalen) Muster Errxxxx_yyy.txt aufgebaut sind, beinhalten als weitere Information einen Ländercode, sie enthalten die Fehlermeldungstexte in einer spezifischen Sprache.

Momentan werden Fehlermeldungstextdateien für diese Sprachen verwaltet:

Errxxxx_Eng.txt Fehlermeldungen in englisch

Errxxxx_Fre.txt Fehlermeldungen in französisch

Errxxxx_Hun.txt Fehlermeldungen in ungarisch

Aus dem Code für die Fehlergruppe wird die numerische Entsprechung auf diese Weise ermittelt:

Ausgehend von der Definition für eine Fehlergruppe

#define FAC_CAN_DLL 0x09140000

mit der Angabe der Fehlergruppe in den Bits 16-27 (Byte 4, 5, und 6) werden diese 3 Bytes extrahiert und anschließend um 16 Bit nach rechts verschoben, dies entspricht einer Division durch 65536 (dezimal) bzw. 0x10000 (hexadezimal). In der Praxis werden die letzten 4 Byte des Hexadezimalwertes einfach weggelassen und die 3 übriggebliebenen Bytes (ohne das führende Byte) einfach von hexadezimal nach dezimal konvertiert. Der Wert, der sich aus dieser Operation ergibt, stellt in dezimaler Schreibweise den numerischen Wert dar, der für den Platzhalter xxxx eingetragen werden muß.

Bsp:

Bei dem Wert "0x09140000" werden die letzten 4 Byte weggelassen, das ergibt "0x0914". Nun werden die letzten 3 Byte genommen, also "914". Dieser Wert wird im Windows-Taschenrechner als Hexadezimalwert eingetragen. Nach Konfiguration der Anzeige zur Darstellung als Dezimalwert ergibt sich 2324.

Also sind die korrekten Fehlermeldungstextdateien für die Fehlergruppe 0x0914000:

Err2324.txt Deutsche Fehlermeldungen
Err2324_Eng.txt Englische Fehlermeldungen
Err2324_Fre.txt Französische Fehlermeldungen
Err2324_Hun.txt Ungarische Fehlermeldungen

Die Fehlermeldungstextdateien befinden sich nach einer Standard-Installation von ProNC bzw. Remote im Verzeichnis "C:\CNCWorkbench\Help".

Übersicht der Fehlergruppen

Definition | Wert (hex) | Wert (dez.) | Fehlergruppe
FACILITY_NULL | 0x00000000 | 0 | Verwendet von Windows
FACILITY_RPC | 0x00010000 | 1 | Verwendet von Windows
FACILITY_DISPATCH | 0x00020000 | 2 | Verwendet von Windows
FACILITY_STORAGE | 0x00030000 | 3 | Verwendet von Windows
FACILITY_ITF | 0x00040000 | 4 | Verwendet von Windows
FACILITY_WIN32 | 0x00070000 | 7 | Verwendet von Windows
FACILITY_WINDOWS | 0x00080000 | 8 | Verwendet von Windows
FACILITY_SSPI | 0x00090000 | 9 | Verwendet von Windows
FACILITY_CONTROL | 0x000A0000 | 10 | Verwendet von Windows
FACILITY_CERT | 0x000B0000 | 11 | Verwendet von Windows
FACILITY_INTERNET | 0x000C0000 | 12 | Verwendet von Windows
FAC_USERDEFINED | 0x08000000 | 2048 | Spezifische Fehlergruppe für OEM-Anwendungen
FAC_SYSTEM | 0x08010000 | 2049 | Systemfehler des Betriebssystems (Windows-Fehler)
FAC_MATH | 0x08020000 | 2050 | Fehler bei Berechnungen allgemein oder spez. NC
FAC_UPMV4VXD | 0x09010000 | 2305 | Fehler im Steuerungskern (Windows VxD) der UPMV4/12
FAC_UPMV4DLL | 0x09020000 | 2306 | Fehler in der Motion Control DLL der UPMV4/12
FAC_INTERFACECARDCTRL | 0x09030000 | 2307 | Fehler von Steuerungen des Typs Interfacekarte
FAC_INTERFACECARDDLL | 0x09040000 | 2308 | Fehler der Interface-DLL einer Interfacekarte
FAC_IMC4CTRL | 0x09050000 | 2309 | Fehler der Steuerplatine IMC4
FAC_IMC4DLL | 0x09060000 | 2310 | Fehler der Motion Control DLL der Steuerung IMC4
FAC_IFC5CTRL | 0x09070000 | 2311 | Steuerung Interfacekarte V5.x
FAC_IFC5DLL | 0x09080000 | 2312 | Interface-DLL der Interfacekarte V5.x
FAC_IMS6DLL | 0x09090000 | 2313 | Fehler der IMS6 Motion Control DLL
FAC_IMS6CTRL | 0x090A0000 | 2314 | Fehler der Schrittmotorsteuerung IMS6
FAC_IML4DLL | 0x090B0000 | 2315 | Fehler der IML4 Motion Control DLL
FAC_IML4CTRL | 0x090C0000 | 2316 | Fehler der Steuerung/Steuerkarte IML4
FAC_PARPORT_CAN_WDM | 0x09100000 | 2320 | Fehler aus WDM-Treiber für Parallelport-Dongle CAN-Strg
FAC_PC104_CAN_WDM | 0x09110000 | 2321 | Fehler des WDM_CAN-Treibers für die PC104-Karte
FAC_PCI_CAN_WDM | 0x09120000 | 2322 | Fehler des WDM_Can_Treibers für die PCI-Karte
FAC_CAN_KERNEL | 0x09130000 | 2323 | Fehler aus dem CAN kernel driver
FAC_CAN_DLL | 0x09140000 | 2324 | Fehler in der CAN interface DLL
FAC_CANSET | 0x09150000 | 2325 | Fehler im Einstellprogramm CANSet
FAC_CAN_RESERVED1 | 0x09160000 | 2326 | Reserviert für CAN #1
FAC_CAN_RESERVED2 | 0x09170000 | 2327 | Reserviert für CAN #2
FAC_CAN_RESERVED3 | 0x09180000 | 2328 | Reserviert für CAN #3
FAC_CAN_RESERVED4 | 0x09190000 | 2329 | Reserviert für CAN #4
FAC_CAN_RESERVED5 | 0x091A0000 | 2330 | Reserviert für CAN #5
FAC_CAN_RESERVED6 | 0x091B0000 | 2331 | Reserviert für CAN #6
FAC_CAN_RESERVED7 | 0x091C0000 | 2332 | Reserviert für CAN #7
FAC_CAN_RESERVED8 | 0x091D0000 | 2333 | Reserviert für CAN #8
FAC_CAN_RESERVED9 | 0x091E0000 | 2334 | Reserviert für CAN #9
FAC_CAN_RESERVED10 | 0x091F0000 | 2335 | Reserviert für CAN #10
FAC_PICDLL | 0x09200000 | 2336 | Fehler von der PICMIC interface DLL
FAC_PICCTRL | 0x09210000 | 2337 | Fehler eines/mehrerer PICMIC-Modul(e)
FAC_MCTLDUMMY | 0x09220000 | 2338 | Fehler der MctlDummy.DLL (Motion Control simulation DLL)
FAC_LOGOSOL_DLL | 0x09710000 | 2417 | Fehler von der Logosol-Interface-DLL
FAC_LOGOSOL_CTRL | 0x09720000 | 2418 | Fehler des Logosol-Controllers
FAC_MTASC_KERNEL | 0x09730000 | 2419 | Fehler aus MTasc control kernel
FAC_MTASC_DLL | 0x09740000 | 2420 | Fehler aus der MTasc Interface-DLL (MTasc.DLL)
FAC_MCTLMTASC_DLL | 0x097B0000 | 2427 | Fehler in Motion Control Interface-DLL (Mctl_MTASC.DLL)
FAC_IOMTASC_DLL | 0x097C0000 | 2428 | Fehler in IO Interface-DLL (Io_MTASC.DLL) der MTasc-Strg
FAC_SPNMTASC_DLL | 0x097D0000 | 2429 | Fehler in MTASC Spindel Interface-DLL (Spn_MTASC.DLL)
FAC_IOWARRIOR | 0x09750000 | 2421 | Fehler in einer DLL die das IOWarrior interface verwendet
FAC_AXCTL | 0x09760000 | 2422 | Fehler von der Handlingachsen-DLL AxCtl.DLL
FAC_IMDCTL | 0x09770000 | 2423 | Fehler der DLL zur Ansteuerung der Endstufen IMDxx
FAC_IMCCOREPP_DLL | 0x09780000 | 2424 | Fehler der Interface DLL der IMC-PP Schrittmotorsteuerung
FAC_MCTLCOREPP | 0x09790000 | 2425 | Fehler der Motion Control Client-DLL für CorePPComm.DLL
FAC_MCHPFSUSB | 0x097A0000 | 2426 | Fehler aus der Microchip FullSpeed USB Interface-DLL

FAC_OTHERMCTLCTRL | 0x09FE0000 | 2558 | Allgemeiner Steuerungsfehler: Steuerungshardware
FAC_OTHERMCTLDLL | 0x09FF0000 | 2559 | Allgemeiner Steuerungsfehler: Interface-DLL
FAC_SPINDLE | 0x0A010000 | 2561 | Fehler bei der Ausführung einer Frässpindel-Funktion
FAC_IO | 0x0A020000 | 2562 | Fehler bei Ausführung einer Ein-/Ausgabeoperation (IO)
FAC_TCH | 0x0A030000 | 2563 | Fehler bei der Ausführung des Werkzeugwechsels
FAC_SECC | 0x0A040000 | 2564 | Fehler vom Sicherheitskreis-Modul
FAC_FIELDBUS | 0x0A050000 | 2565 | Allg. Fehler/Warnung/Info von (CAN)Busschnittstelle
FAC_DISTMEASDEVICE | 0x0A060000 | 2566 | Fehler eines Distanzsensors/Distanzmessgeraets
FAC_DRILLEXT | 0x0A070000 | 2567 | Fehler in der Drill Extension DLL (Implement. Bohrzyklen)
FAC_LOGOSOL_SECC | 0x0A080000 | 2568 | Logosol security circuit interface DLL
FAC_BARCODEREADER | 0x0A090000 | 2569 | Fehler in einem / von einem Barcode-Lesegerät
FAC_TEMPERATUREMEASURE | 0x0A0A0000 | 2570 | Fehler in / bei Temperatursensor, -messgeraet, -messung
FAC_MPG | 0x0A0B0000 | 2571 | Fehler in / bei MPG (Handrad allgemein)
FAC_TOUCHPROBE | 0x0A0C0000 | 2572 | Fehler bei der Verwendung des digitalen Messtasters
FAC_COUNTER | 0x0A0D0000 | 2573 | Fehler bei der Verwendung der Zählererweiterung
FAC_SPECIFICCONTROL | 0x0A300000 | 2608 | Fehler einer speziellen Steuerungskomponente
FAC_LDS_SIRIUS | 0x0A310000 | 2609 | Fehler eines Laser-Distanzsensors Sirius Fa. Dimensional
FAC_OEMCTRL1 | 0x0A700000 | 2673 | Fehler einer OEM Steuerungskomponente #1
FAC_OEMCTRL2 | 0x0A710000 | 2674 | Fehler einer OEM Steuerungskomponente #2
FAC_OEMCTRL3 | 0x0A720000 | 2675 | Fehler einer OEM Steuerungskomponente #3
FAC_OEMCTRL4 | 0x0A730000 | 2676 | Fehler einer OEM Steuerungskomponente #4
FAC_OEMCTRL5 | 0x0A740000 | 2677 | Fehler einer OEM Steuerungskomponente #5
FAC_OEMCTRL6 | 0x0A750000 | 2678 | Fehler einer OEM Steuerungskomponente #6
FAC_OEMCTRL7 | 0x0A760000 | 2679 | Fehler einer OEM Steuerungskomponente #7
FAC_OEMCTRL8 | 0x0A770000 | 2680 | Fehler einer OEM Steuerungskomponente #8
FAC_OEMCTRL9 | 0x0A780000 | 2681 | Fehler einer OEM Steuerungskomponente #9

FAC_MCTLADM | 0x0A810000 | 2689 | Fehler in der Motion Control-Verwaltung
FAC_SPNADM | 0x0A820000 | 2690 | Fehler in der Spindel-Verwaltung
FAC_IOADM | 0x0A830000 | 2691 | Fehler in der Ein-/Ausgabe-Verwaltung (IO-Verwaltung)
FAC_TCHADM | 0x0A840000 | 2692 | Fehler in der Werkzeugwechsler-Verwaltung
FAC_FRAMEADM | 0x0A850000 | 2693 | Fehler im Verwalter für Frame-Positionen
FAC_UNITADM | 0x0A860000 | 2694 | Fehler in der Einheitenverwaltung
FAC_VCIADM | 0x0A870000 | 2695 | Fehler im CAN-Feldbus-Verwaltungsmodul
FAC_SECCADM | 0x0A880000 | 2696 | Fehler in der Verwaltung des Sicherheitskreismoduls
FAC_DISTMEASDEVICEADM | 0x0A890000 | 2697 | Fehler im Verwaltungsmodul für Distanzmessgeräte
FAC_LASERADM | 0x0A8A0000 | 2698 | Fehler im Verwaltungsmodul für Laser-(Schneid-)Geräte
FAC_MPGADM | 0x0A8B0000 | 2699 | Fehler in der Handradverwaltung allgemein
FAC_DYNLOAD | 0x0AC00000 | 2752 | Fehler bei der Verwaltung dynamisch geladener Komponenten
FAC_RUNTIMEADM | 0x0AD00000 | 2753 | Verwaltung der Laufzeitmessung (Betriebsstundenzähler)
FAC_NCCTRL | 0x0AD10000 | 2769 | Fehler Steuerungsinterface_Software
FAC_COMPILER | 0x0B010000 | 2817 | Fehler im PAL-Compiler (ProNC)
FAC_INTERPRETER | 0x0B020000 | 2818 | Fehler im CNC-Interpreter (ProNC, Remote)
FAC_NCPTOPAL | 0x0B030000 | 2819 | Fehler im NCP-PAL-Konverter
FAC_OPERATORPANEL | 0x0B040000 | 2820 | Fehler von der Operator panel interface DLL
FAC_OUTPUTOFFSET | 0x0B050000 | 2821 | Fehler in der Erweiterungs-DLL für Datei-Mehrfachausgabe
FAC_PALPCCOMPILER | 0x0B060000 | 2822 | Fehler vom PALPC-Compiler
FAC_SIGNALINTERFACE | 0x0B070000 | 2823 | Fehler aus der Erweiterungs-DLL für die Signalisierung
FAC_DOWNIXXDLL | 0x0B080000 | 2824 | PALPC Download Extension DLL
FAC_NOTIFICATION | 0x0B090000 | 2825 | Notification Interface DLL (SMS, Mail)
FAC_EXECNCISCRIPT | 0x0B0A0000 | 2826 | ProNC/Remote Erweiterungs-DLL für Scriptbearbeitung
FAC_NCITRAFOEXTENSION | 0x0B0B0000 | 2827 | Interpreter Erweiterungs-DLL fuer Transformationen
FAC_CODEGEN | 0x0B110000 | 2833 | Fehler im NC_Codegenerator (CODEGEN.DLL)
FAC_RPX | 0x0B810000 | 2945 | Remote Plugin Extension
FAC_USRC | 0x0B820000 | 2946 | User Specific Remote Client
FAC_CNCWBFILTER | 0x0B830000 | 2947 | Fehler aus einer Filter-DLL für Remote/ProNC

FAC_APP_USERDEFINED | 0x0C000000 | 3072 | Spezifische Fehlergruppe für OEM-Anwendungen
FAC_APP_PRONC | 0x0C010000 | 3073 | Fehler in der Anwendung ProNC
FAC_APP_REMOTE | 0x0C020000 | 3074 | Fehler in der Anwendung Remote
FAC_APP_KNC | 0x0C030000 | 3075 | reserviert, gesperrt
FAC_APP_AXMOVE | 0x0C040000 | 3076 | reserviert, gesperrt
FAC_APP_NCD | 0x0C050000 | 3077 | Fehler in der Anwendung NCD (Graphik NCP)
FAC_APP_PALPC | 0x0C060000 | 3078 | Fehler in der Anwendung PALPC
FAC_APP_IMESMI | 0x0C100000 | 3088 | reserviert, gesperrt
FAC_APP_OTHERAPPS | 0x0CFE0000 | 3326 | reserviert, gesperrt
FAC_COMMON | 0x0F000000 | 3840 | Fehlergruppe benutzt in allgemeinen Zusammenhängen
FAC_USERSPECIFIC | 0x0FA00000 | 4000 | Benutzerspezifische Fehler / ext. Fehlersignal
FAC_REMOTEEXT | 0x0FA10000 | 4001 | Benutzerspezifischer Fehler aus Remote-Erweiterungs-DLL

Definitionsblock für die Fehlergruppen (vollständig)

;----------------------------------------------------------

#define TYPE_SUCCESS 0x00000000

#define TYPE_INFO 0x40000000

#define TYPE_WARNING 0x80000000

#define TYPE_ERROR 0xC0000000

#define FAC_USERDEFINED 0x08000000

#define FAC_SYSTEM 0x08010000

#define FAC_MATH 0x08020000

#define FAC_UPMV4VXD 0x09010000

#define FAC_UPMV4DLL 0x09020000

#define FAC_INTERFACECARDCTRL 0x09030000

#define FAC_INTERFACECARDDLL 0x09040000

#define FAC_IMC4CTRL 0x09050000

#define FAC_IMC4DLL 0x09060000

#define FAC_IFC5CTRL 0x09070000

#define FAC_IFC5DLL 0x09080000

#define FAC_IMS6DLL 0x09090000

#define FAC_IMS6CTRL 0x090A0000

#define FAC_IML4DLL 0x090B0000

#define FAC_IML4CTRL 0x090C0000

#define FAC_PARPORT_CAN_WDM 0x09100000

#define FAC_PC104_CAN_WDM 0x09110000

#define FAC_PCI_CAN_WDM 0x09120000

#define FAC_CAN_KERNEL 0x09130000

#define FAC_CAN_DLL 0x09140000

#define FAC_CANSET 0x09150000

#define FAC_CAN_RESERVED1 0x09160000

#define FAC_CAN_RESERVED2 0x09170000

#define FAC_CAN_RESERVED3 0x09180000

#define FAC_CAN_RESERVED4 0x09190000

#define FAC_CAN_RESERVED5 0x091A0000

#define FAC_CAN_RESERVED6 0x091B0000

#define FAC_CAN_RESERVED7 0x091C0000

#define FAC_CAN_RESERVED8 0x091D0000

#define FAC_CAN_RESERVED9 0x091E0000

#define FAC_CAN_RESERVED10 0x091F0000

#define FAC_PICDLL 0x09200000

#define FAC_PICCTRL 0x09210000

#define FAC_MCTLDUMMY 0x09220000

#define FAC_LOGOSOL_DLL 0x09710000

#define FAC_LOGOSOL_CTRL 0x09720000

#define FAC_MTASC_KERNEL 0x09730000

#define FAC_MTASC_DLL 0x09740000

#define FAC_MCTLMTASC_DLL 0x097B0000

#define FAC_IOMTASC_DLL 0x097C0000

#define FAC_SPNMTASC_DLL 0x097D0000

#define FAC_IOWARRIOR 0x09750000

#define FAC_AXCTL 0x09760000

#define FAC_IMDCTL 0x09770000

#define FAC_IMCCOREPP_DLL 0x09780000

#define FAC_MCTLCOREPP 0x09790000

#define FAC_MCHPFSUSB 0x097A0000

#define FAC_OTHERMCTLCTRL 0x09FE0000

#define FAC_OTHERMCTLDLL 0x09FF0000

#define FAC_SPINDLE 0x0A010000

#define FAC_IO 0x0A020000

#define FAC_TCH 0x0A030000

#define FAC_SECC 0x0A040000

#define FAC_FIELDBUS 0x0A050000

#define FAC_DISTMEASDEVICE 0x0A060000

#define FAC_DRILLEXT 0x0A070000

#define FAC_LOGOSOL_SECC 0x0A080000

#define FAC_BARCODEREADER 0x0A090000

#define FAC_TEMPERATUREMEASURE 0x0A0A0000

#define FAC_MPG 0x0A0B0000

#define FAC_TOUCHPROBE 0x0A0C0000

#define FAC_COUNTER 0x0A0D0000

#define FAC_SPECIFICCONTROL 0x0A300000

#define FAC_LDS_SIRIUS 0x0A310000

#define FAC_OEMCTRL1 0x0A700000

#define FAC_OEMCTRL2 0x0A710000

#define FAC_OEMCTRL3 0x0A720000

#define FAC_OEMCTRL4 0x0A730000

#define FAC_OEMCTRL5 0x0A740000

#define FAC_OEMCTRL6 0x0A750000

#define FAC_OEMCTRL7 0x0A760000

#define FAC_OEMCTRL8 0x0A770000

#define FAC_OEMCTRL9 0x0A780000

#define FAC_MCTLADM 0x0A810000

#define FAC_SPNADM 0x0A820000

#define FAC_IOADM 0x0A830000

#define FAC_TCHADM 0x0A840000

#define FAC_FRAMEADM 0x0A850000

#define FAC_UNITADM 0x0A860000

#define FAC_VCIADM 0x0A870000

#define FAC_SECCADM 0x0A880000

#define FAC_DISTMEASDEVICEADM 0x0A890000

#define FAC_LASERADM 0x0A8A0000

#define FAC_MPGADM 0x0A8B0000

#define FAC_DYNLOAD 0x0AC00000

#define FAC_RUNTIMEADM 0x0AD00000

#define FAC_NCCTRL 0x0AD10000

#define FAC_COMPILER 0x0B010000

#define FAC_INTERPRETER 0x0B020000

#define FAC_NCPTOPAL 0x0B030000

#define FAC_OPERATORPANEL 0x0B040000

#define FAC_OUTPUTOFFSET 0x0B050000

#define FAC_PALPCCOMPILER 0x0B060000

#define FAC_SIGNALINTERFACE 0x0B070000

#define FAC_DOWNIXXDLL 0x0B080000

#define FAC_NOTIFICATION 0x0B090000

#define FAC_EXECNCISCRIPT 0x0B0A0000

#define FAC_NCITRAFOEXTENSION 0x0B0B0000

#define FAC_CODEGEN 0x0B110000

#define FAC_RPX 0x0B810000

#define FAC_USRC 0x0B820000

#define FAC_CNCWBFILTER 0x0B830000

#define FAC_APP_USERDEFINED 0x0C000000

#define FAC_APP_PRONC 0x0C010000

#define FAC_APP_REMOTE 0x0C020000

#define FAC_APP_KNC 0x0C030000

#define FAC_APP_AXMOVE 0x0C040000

#define FAC_APP_NCD 0x0C050000

#define FAC_APP_PALPC 0x0C060000

#define FAC_APP_IMESMI 0x0C100000

#define FAC_APP_OTHERAPPS 0x0CFE0000

#define FAC_COMMON 0x0F000000

#define FAC_USERSPECIFIC 0x0FA00000

#define FAC_REMOTEEXT 0x0FA10000

;----------------------------------------------------------

Struktur der Einträge in der Fehlermeldungstextdatei

Damit der Fehlermeldungstext innerhalb der Fehlermeldungstextdatei eindeutig identifiziert werden kann, ist ein spezifisches Format für eine Textzeile vorgegeben. Der Aufbau eines Eintrags, der immer nur aus einer Zeile in der ASCII-Textdatei besteht, ist wie folgt:

t-ffff-c[ccc]: Fehlermeldung[\nWeiterer Fehlermeldungstext]

t

Ein Zeichen für den Typ des Fehlers. Gültige Werte sind 0, 1, 2, 3

0 | Fehlertyp "Kein Fehler"
1 | Fehlertyp "Information"
2 | Fehlertyp "Warnung"
3 | Fehlertyp "Fehler"

ffff

Der Code der Fehlergruppe als vierstellige Zahl. Die Fehlergruppe wird dezimal angegeben, die verwendeten numerischen Werte können aus der obenstehenden Tabelle entnommen werden.

c[ccc]

Der Fehlercode als numerische Angabe, es können 1 bis 4 Zeichen verwendet werden.

Ein konkreter Eintrag für eine Fehlermeldung könnte beispielsweise so aussehen:

3-2323-15: Mindestens ein Canknoten war oder ist im fehlerhaften Zustand!

Wie aus der Fehlergruppe (Angabe in dezimaler Schreibweise) zu ersehen ist, stammt der Eintrag aus der Fehlermeldungstextdatei Err2323.txt im Verzeichnis C:\CNCWorkbench\Help. Da es sich um einen deutschen Text handelt, hat der Dateiname keinen länderspezifischen Suffix.

Der Typ "Fehler" wird durch die vorangestellte "3" angezeigt. Der Fehlercode selber ist "15". Die Fehlermeldung selber wird als einzeilige Meldung angezeigt. Soll der Text erweitert werden, so können weitere Hinweise einfach in die gleiche Zeile geschrieben werden. Zeilenumbrüche können mit der Zeichenfolge "\n" eingefügt werden, die Zeile in der Fehlermeldungstextdatei würde dann so aussehen:

3-2323-15: Mindestens ein Canknoten war oder ist im fehlerhaften Zustand!\nTun Sie etwas dagegen!

Beispiele:

(1)

Verwendung in der Event-Handler-Funktion OnError

;**************************************************

;OnError

;**************************************************

OnError

;Den letzten=aktuellen Fehlercode abholen und als

;Fehlercode und Fehlertext im Display darstellen

;arg=0: den gesamten Fehler-Code abholen

I1=GetLastErrorCode(0)

;arg=Rueckgabewert von GetLastErrorCode(...)

Str1=GetLastErrorText(I1)

;alle LCD-Display-Zeilen löschen

Display Clear

;aktuellen Fehlertext auf Display anzeigen

Display 2 1 "%S1%"

EventReturn

;--------------------------------------------------

(2)

Abholen und anzeigen einer eigenen Fehlermeldung aus der Fehlermeldungstextdatei Err4000.txt. Es soll ein selbstdefinierter Fehler mit dem Fehlercode 19 angezeigt werden.

#define TYPE_ERROR 0xC0000000

#define FAC_USERSPECIFIC 0x0FA00000

Str1=GetLastErrorText(TYPE_ERROR|FAC_USERSPECIFIC|19)

R1=MessageBox Str1

(3)

Es ist ebenfalls möglich, hexadezimale oder dezimale Werte direkt zu verwenden:

Str1=GetLastErrorText(0xC0000000|(4000*65536)|19)

R1=MessageBox Str1


GetLatchedPosition

Rn/In=GetLatchedPosition axis

Abfrage der gespeicherten Position bei Eintreten eines Portereignisses

Dieser Befehl wird in Verbindung mit den beiden Befehlen MoveAbsStopOnInput und MoveRelStopOnInput verwendet.

Diese beiden Befehle starten jeweils eine Bewegung an eine absolute bzw. relative Zielposition. Falls während der Bewegung das spezifizierte Portereignis (ein Pegelwechsel am angegebenen Eingang von 0 auf 1 oder von 1 auf 0) eintritt, wird die Bewegung sofort abgebrochen und die aktuelle Position im Moment des Eintretens des Portereignisses gespeichert.

Die Funktion GetLatchedPosition dient dazu, diese gespeicherte Position abzufragen und in eine Variable zu übertragen. Als Variablen für den Empfang der Latch-Position können R-Variablen oder I-Variablen verwendet werden.

Hinweis: Unbedingt beachten:

Die gelatchte Position wird, im Gegensatz zu anderen Funktionen, immer in der Basiseinheit der Steuerung zurückgegeben!
Die Basiseinheit ist Mikrometer für Linearachsen und Bogensekunden für Drehachsen. Das bedeutet, daß die durch die Messung ermittelte Position zuerst umgerechnet werden muß, wenn sie im weiteren Verlauf des Programms als Zielposition für nachfolgende Bewegungen dienen soll.

Parameter des Befehls

Rn / In | Eine R-Variable oder eine I-Variable mit dem Index n, welche die gespeicherte aktuelle Position bei Eintreten des Portereignisses aufnimmt. Der Index n bewegt sich im Bereich von 1 ... 999.
axis | Angabe der Achse, deren gelatchte Position abgefragt werden soll. Gültige Achs-Bezeichner sind X, Y, Z, A, B, C.

[1]

;Verwendung der CAN-Steuerung, ein 3D-Messtaster

;ist an der Endstufe X angeschlossen, der Messtaster

;ist lowaktiv, Bewegungen werden mit allen 3 Achsen

;ausgeführt

;Kante X: Heranfahren bis Taster aktiv

MoveAbsStopOnInput X100.0 E1.5==0 F5.0 INPUT_AXIS_X

;oder alternative Schreibweise bei der Koordinatenangabe

MoveAbsStopOnInput X1=100.0 E1.5==0 F5.0 INPUT_AXIS_X

;Sicherstellen dass der Taster aktiv ist (etwas weiter hineinfahren)

MoveRel X0.1 F2.0

;Herausfahren bis Taster wieder inaktiv

MoveAbsStopOnInput X95.0 E1.5==1 F1.0 INPUT_AXIS_X

;oder alternative Schreibweise bei der Koordinatenangabe

MoveAbsStopOnInput X1=95.0 E1.5==1 F1.0 INPUT_AXIS_X

;Abholen des Ergebnisses und speichern in Variable

R1=GetLatchedPosition X

;Positionieren an die Startposition fuer Achse Y

;...

;Kante Y: Heranfahren bis Taster aktiv

MoveAbsStopOnInput Y150.0 E1.5==0 F5.0 INPUT_AXIS_X

;oder alternative Schreibweise bei der Koordinatenangabe

MoveAbsStopOnInput Y1=150.0 E1.5==0 F5.0 INPUT_AXIS_X

;Sicherstellen dass der Taster aktiv ist (etwas weiter hineinfahren)

MoveRel Y0.1 F2.0

;Herausfahren bis Taster wieder inaktiv

MoveAbsStopOnInput Y1=145.0 E1.5==1 F1.0 INPUT_AXIS_X

;oder alternative Schreibweise bei der Koordinatenangabe

MoveAbsStopOnInput Y1=145.0 E1.5==1 F1.0 INPUT_AXIS_X

;Abholen des Ergebnisses und speichern in Variable

R2=GetLatchedPosition Y

;Positionieren an die Startposition fuer Achse Z

;...

;Die Geschwindigkeit kann auch vorher gesetzt werden

F5.0

;Herunterfahren bis Taster aktiv

MoveAbsStopOnInput Z-100.0 E1.5==1 INPUT_AXIS_X

;oder alternative Schreibweise bei der Koordinatenangabe

MoveAbsStopOnInput Z1=-100.0 E1.5==1 INPUT_AXIS_X

;Sicherstellen dass der Taster aktiv ist

;bevor die zweite Messfahrt gestartet wird

MoveRel Z-0.1 F2.0

;Geschwindigkeit wieder vorher (mit Vel) setzen

Vel 1.0

;Herausfahren bis Taster wieder inaktiv

MoveAbsStopOnInput Z-95.0 E1.5==0 INPUT_AXIS_X

;oder alternative Schreibweise bei der Koordinatenangabe

MoveAbsStopOnInput Z1=-95.0 E1.5==0 INPUT_AXIS_X

;Abholen des Ergebnisses und speichern in Variable

R3=GetLatchedPosition Z

Siehe auch: MoveAbsStopOnInput, MoveRelStopOnInput


GetNegSWLS

GetNegSWLS Qn

Abfragen der Koordinaten des negativen Software-Endschalters

Mit Hilfe dieses Kommandos können die Koordinaten des negativen Software-Endschalters zur Laufzeit des PAL- oder NCP-Programms abgefragt werden.

Syntax:

GetNegSWLS Qn

Parameter des Befehls:

Qn | Eine Q-Variable mit dem Index n, in welche die aktuellen Koordinaten des negativen Software-Endschalters übertragen werden.

Beispiel:

GetNegSWLS Q1 ;SW-Endschalter Koordinaten abfragen

Q1:X=Q1:X-50.0 ;SW-Endschalter-Koordinaten anpassen

SetNegSWLS Q1 ;Neue Koordinaten fuer neg. SW-Endschalter setzen

Siehe auch: SetNegSWLS, GetPosSWLS, SetPosSWLS


GetParam PathVeloFactor

GetParam PathVeloFactor MCTLn Rx

Abfragen des aktuellen Bahngeschwindigkeitsfaktors einer Motion Control

Der Bahngeschwindigkeitsfaktor bei der isel CAN-Steuerung ist folgendermaßen definiert:

Beim Übergang von zwei Bahnsegmenten wird die reale Bearbeitungsgeschwindigkeit aus dem Produkt von aktuell eingestellter Bearbeitungsgeschwindigkeit und dem Geschwindigkeitsfaktor berechnet und eingestellt. Die Bearbeitungsgeschwindigkeit im Übergang von zwei Bahnsegmenten kann also reduziert bzw. erhöht werden.

Ist der Wert des Bahngeschwindigkeitsfaktors größer 1 so erhöht sich die Bearbeitungsgeschwindigkeit beim Segmentübergang. Ist der Wert des Bahngeschwindigkeitsfaktors kleiner 1, so wird die Bearbeitungsgeschwindigkeit entsprechend reduziert.

Der Befehl GetParam PathVeloFactor wird benutzt, um den aktuell eingestellten Wert des Bahngeschwindigkeitsfaktors abzufragen und in die angegebene Variable zu übertragen.

Parameter des Befehls:

MCTLn | Angabe der Motion Control mit dem Index n, für welche der Bahngeschwindigkeitsfaktor abgefragt werden soll. Gültige Werte für den Index sind 1 und 2.
Rx | Eine R-Variable (Integer-Variable) mit dem Index x, in die der aktuelle Wert des Bahngeschwindigkeitsfaktors (im Bereich 0.01 ... 100.0) eingetragen wird.

Siehe auch: SetParam PathVeloFactor


GetParam VPO

GetParam VPO Axn Ix

Abfragen der aktuell gesetzten Parameter der Betriebsart VPO einer Handlingachse

Show/Hide Hidden Text

Die Betriebsart VPO (Velocity Proportional Operation) einer Handlingachse ist eine spezielle Funktion, welche bewirkt, daß sich die aktuelle Geschwindigkeit einer Handlingachse nach der interpolierten Geschwindigkeit der drei kartesischen Achsen X, Y und Z richtet. Je nach aktuellem Wert der führenden Geschwindigkeit Vxyz wird versucht, die aktuelle Geschwindigkeit der Handlingachse innerhalb eines gewissen Look-Ahead-Zeitraums an die Geschwindigkeitsänderungen der führenden Achsen im kartesischen System XYZ anzupassen.

Typische Anwendung: Nachführen einer Dispenser-Achse

Voraussetzungen

·Isel Can-CNC Version 01.60.00.90 auf allen Endstufen und Can-Treiber

·ProNC in der Version: ab 1.46.8.1

·ProNC-Compiler-Version: ab 1.46.8.2

Der Befehl "GetParam VPO" dient dazu, die aktuellen Betriebsparameter dieser Betriebsart abzufragen. Zurückgeliefert werden die aktuellen Parameter der VPO-Funktionalitäten VpoActive, WorkMode, MaxLookAheadTime, MaxLookAheadTimeLowerLimit, MaxLookAheadTimeUpperLimit, WorkingEnable, LookAheadTime, Velocity und Acceleration.

Von Bedeutung sind die PC-geschwindigkeitsabhängigen Werte von MaxLookAheadTimeLowerLimit und MaxLookAheadTimeUpperLimit. Die tatsächlich verwendete LookAheadTime, welche sich zwischen MaxLookAheadTimeLowerLimit und MaxLookAheadTimeUpperLimit befinden muß, wird dann mit der Funktion Activate VPO an die Endstufe übergeben.

Parameter des Befehls:

Axn

Angabe der Handlingachse, für welche der Parametersatz abgefragt werden soll. n ist der Index der Handlingachse, gültige Werte sind 1, 2, 3, ... 6.

Ix

Eine I-Variable (Integer-Variable) mit dem Index x, welche die erste Variable eines zur Datenübergabe verwendeten Variablenfeldes (bestehend aus mehreren I-Variablen mit aufeinanderfolgenden Indizes) darstellt. Das Feld besteht aus insgesamt 9 Werten, welche durch die I-Variablen mit den aufeinanderfolgenden Indizes repräsentiert werden.

Parameter

Ix | VpoActive | Zeigt den aktuellen Aktivierungszustand der Betriebsart VPO an: 0: VPO-Betriebmodus nicht aktiv 1: VPO-Betriebmodus aktiv
I(x+1) | WorkMode | Wenn VpoActive == 0 -> bWorkMode = 0 Wenn VpoActive == 1 -> bWorkMode == VPO_WORK_MODE_1 oder bWorkMode == VPO_WORK_MODE_2
I(x+2) | MaxLookAheadTimeUpperLimit | Systemintern wird die maximal vorrausschauende Zeit sowohl nach oben als auch nach unten begrenzt. Dieser Wert ist die obere Grenze [micro_sec] fur die maximal vorrausschauende Zeit. Dieser Wert wird bei der Initialisierung der Handlingachse durch den Steuerungskern ermittelt.
I(x+3) | MaxLookAheadTimeLowerLimit | Systemintern wird die maximal vorrausschauende Zeit sowohl nach oben als auch nach unten begrenzt. Dieser Wert ist die untere Grenze [micro_sec] fur die maximal vorrausschauende Zeit. Dieser Wert wird bei der Initialisierung der Handlingachse durch den Steuerungskern ermittelt.
I(x+4) | MaxLookAheadTime | Maximal vorausschauende Zeit [micro_sec]. Dieser Wert wird vom Anwender beim Aktivieren des VPO-Betriebmodus gesetzt und liegt im Bereich MaxLookAheadTimeLowerLimit ...MaxLookAheadTimeUpperLimit
I(x+5) | WorkingEnable | Aktivieren/Deaktivieren der Betriebsart VPO 0: Das eingebundene TxPDO ist gesperrt und wird nicht gesendet 1: Das eingebundene TxPDO ist freigelassen und wird regelmäßig gesendet
I(x+6) | LookAheadTime | Vorausschauende Zeit [µs]. Die Sollgeschwindigkeit zu dieser Zeit wird umgerechnet und auf den Bus geschickt.
I(x+7) | Velocity | Soll-Geschwindigkeit
I(x+8) | Acceleration | Soll-Beschleunigung

Beschreibung der Funktionsweise

Beim Aufruf der Funktion AxStart wird die Handlingsachse mit der zuvor übergebenen Beschleunigung auf die übergebene Geschwindigkeit beschleunigt. Mit Hilfe der Startgeschwindigkeit, der Sollgeschwindigkeit und der Beschleunigung kann man berechnen, wie groß die Zeit und die Distanz zwischen Startgeschwindigkeit und Sollgeschwindigkeit sind. Sobald die Achse die Sollgeschwindigkeit erreicht hat, folgt die Handlingsachse proportional der Bahngeschwindigkeit. Diese kann bis zur MaxLookAheadTime vorausberechnet werden. Diese Funktionalität kann speziell beim Dosieren abhängig von Viskosität des Materials sinnvoll sein.

Beim Aufruf der Funktion AxStop wird die Handlingsachse mit der zuletzt übergebenen Beschleunigung auf die Startgeschwindigkeit der Handlingsachse abgebremst. Das heißt, wenn die Handlingsachse sich mit einer Geschwindigkeit von 5°/s dreht und anschließend der VPO-Modus aktiviert und gestartet wird und im Anschluß der VPO-Modus gestoppt wird, dann nimmt die Handlingsachse wieder die Ausgangsgeschwindigkeit von 5°/s ein.

Gleichmäßig beschleunigte Bewegung – Geschwindigkeits-Zeit-Gesetz:

Sollgeschwindigkeit = Beschleunigung * ZeitStartSoll + Startgeschwindigkeit
ZeitStartSoll = (Sollgeschwindigkeit – Startgeschwindigkeit) / Beschleunigung

Gleichmäßig beschleunigte Bewegung - Weg-Zeit-Gesetz:

WegStartSoll = Beschleunigung / 2 * ZeitStartSoll^2 + Startgeschwindigkeit * ZeitStartSoll

Die Funktionen können in folgender Reihenfolge aufgerufen werden (EBNF):

GetParam

Activate

{

[Bewegungsdaten]

SetParam

[Bewegungsdaten]

AxStart

[Bewegungsdaten]

[SetParam]

AxStop

[Bewegungsdaten]

}

Deactivate

Zeichenerklärung:

Verwendung | Zeichen
Option | [ … ]
Optionale Wiederholung | { … }

Beispiel:

GetParam VPO Ax1 I11

; Nach Aufruf dieser Funktion sind

; in den I-Variablen I11 bis I19

; diese Werte enthalten:

I11 VPO Aktivierungsstand

I12 VPO WorkMode

I13 MaxLookAheadTimeUpperLimit

I14 MaxLookAheadTimeLowerLimit

I15 MaxLookAheadTime

I16 WorkingEnable

I17 LookAheadTime

I18 Velocity

I19 Acceleration

Siehe auch: SetParam VPO, AxStart VPO, AxStop VPO, Activate VPO, Deactivate VPO


GetPort

GetPort [Ep] | [Inp]

GetPort [Ap] | [Outp]

Wert eines Ein- oder Ausgabeportes lesen

Lesen des Wertes entweder eines logischen Eingabeports p (Parameter Ep) oder des aktuellen Wertes eines Ausgabeports p (Parameter Ap). Der ermittelte Wert wird in die angegebene R-Variable übertragen.

Das Lesen eines Eingangsports dient zur Feststellung des aktuellen Zustands der Eingänge der Anlage zur weiteren Auswertung im NC-Programm.

Das Rücklesen des aktuellen Zustands eines Ausgabeports dient zur Manipulation der Werte einzelner Bits des Ausgangsports (über binäre Verknüpfungen) oder zur Feststellung eines aktuellen Portzustandes zu Beginn eines NC-Programms.

Für die Angabe des zu lesenden Eingangs- oder Ausgangsports können die Schlüsselwörter "E" und "A" sowie "In" und "Out" verwendet werden.

Beispiel:

;Lesen von Eingangsport 1 und Ablage in R11

R11=GetPort E1

;Loeschen von Bit 1 des Ausgangsports 2:

P21=GetPort A2 ;Aktuellen Wert lesen

P21=P21&0xFE ;Bit 1 loeschen

R21=P21 ;Uebertrag in R-Variable

SetPort A2=R21 ;Ausgangsport schreiben

I1=GetPort In1 ;Verwendung des Schluesselworts "In" zur Angabe des Eingangs

I2=GetPort In2

I3=GetPort Out1 ;Verwendung des Schluesselworts "Out" zur Angabe des Ausgangs

I4=GetPort Out2

Siehe auch: SetBit, ResBit, GetBit, Ep.b, SetPort, SetAnalog, GetAnalog, SetPWM


GetPosSWLS

GetPosSWLS Qn

Abfragen der Koordinaten des positiven Software-Endschalters

Mit Hilfe dieses Kommandos können die Koordinaten des positiven Software-Endschalters zur Laufzeit des PAL-, NCP- oder ISO-Programms abgefragt werden.

Syntax:

GetPosSWLS Qn

Parameter des Befehls

Qn | Eine Q-Variable mit dem Index n, in welche die aktuellen Koordinaten des positiven Software-Endschalters übertragen werden.

Beispiel:

GetPosSWLS Q1 ;SW-Endschalter Koordinaten abfragen

Q1:X=Q1:X+50.0 ;SW-Endschalter-Koordinaten anpassen

SetPosSWLS Q1 ;Koordinaten fuer SW-Endschalter setzen

Siehe auch: SetPosSWLS, GetNegSWLS, SetNegSWLS


GetScriptExitCode

In|Rn=GetScriptExitCode Im|Rm

Abfrage des Rückgabewertes des zuletzt ausgeführten Scripts

Show/Hide Hidden Text

Beim Beenden eines Scripts kann an das aufrufende Hauptprogramm ein Rückgabewert übergeben werden. Der zurückgegebene Wert wird intern gesichert, bis erneut ein Script gestartet wird.

Hinweis: Der erneute Start eines Scripts kann entweder programmatisch erfolgen, über eine Bedienhandlung in der Bedienoberfläche der Anwendung oder automatisch über ein externes Steuersignal. Der interne Wert des Script-Exitcodes wird in jedem Fall verändert.

In einem Anwendungsprogramm kann der Rückgabewert nun mit einem nachfolgenden Aufruf der Funktion GetScriptExitCode ermittelt und ausgewertet werden.

Verwendete Parameter:

In, Rn

Eine Integer- oder Real-Variable mit dem Index n, welche nach dem Aufruf den Rückgabewert des zuletzt auisgeführten Scripts enthält.

Rückgabewert des ausgeführten Programms bzw. Scripts

Falls kein expliziter Rückgabewert angegeben wurde, wird der Standardwert 0 zurückgegeben. Für die Rückgabe eines davon abweichenden Wertes wird der gewünschte Wert in eckigen Klammern hinter dem Befehl "ProgEnd" aufgeführt:

ProgEnd [2] -> an den aufrufenden Prozess wird der Rückgabewert 2 übertragen.

Im, Rm

Eine Integer- oder Real-Variable mit der Prozess-ID eines gestarteten Scripts.

Beispiel:

(1)

Zur Info: Inhalt der Scriptdatei "Script1.NCP"

IMF_PBL_V10

;****************************************

;Script1.NCP

;Beispiel-Script im NCP-Format

;****************************************

SETBIT A1.4

DELAY 500

RESBIT A1.4

DELAY 500

IF E1.5==0 THEN PROGEND[0] ENDIF

IF E1.5==1 THEN PROGEND[1] ENDIF

PROGEND[-1]

;Ausfuehrung eines Scripts in der Betriebsart "Nichtmodal"

;mit anschließender Auswertung des Rueckgabewertes

;Uebertragen des Scriptnamens in eine String-Variable

Str1="C:\CNCWorkbench\Script\Script1.NCP"

;Presetwert fuer die Variable, die den Rueckgabewert des

;Scripts aufnimmt

I5=-1

;Pruefen ob die Datei existiert

I1=FileExists Str1

;Script nichtmodal starten, wenn die Datei existiert

;Die beiden Optionen AUTOSTART und AUTOCLOSE muessen fuer

;eine automatische Ausfuehrung des Scripts innnerhalb

;eines Bearbeitungsprogramms immer aktiviert sein

If(I1==1)

I1=StartScript Str1 AUTOSTART AUTOCLOSE NONMODAL

;Warten auf das Beenden interner Ablaeufe in der Anwendung:

;Einfuegen des nachfolgenden Befehls: Delay 500

;nach der kurzen Wartezeit wird der Befehl fuer die Abfrage

;des aktuellen Scriptstatus aufgerufen.

Delay 500

;Jetzt zyklisches Ueberpruefen des Scriptstatus:

Do

;Abbruch der Schleife wenn das Script nicht mehr aktiv ist

I301=GetScriptStatus I1

EndDo(I301==0)

;Abholen des Rueckgabewertes

I5=GetScriptExitCode I1

EndIf

;Auswerten des Rueckgabewertes

Switch I5

Case 0:

;Der Pegel an Eingang E1.5 war 0

EndCase

Case 1:

;Der Pegel an Eingang E1.5 war 1

EndCase

Case -1:

;Etwas hat nicht funktioniert...

EndCase

Default:

;alle anderen Faelle...

EndCase

EndSwitch

Siehe auch: StartScript, GetScriptStatus, AbortScript


GetScriptStatus

In|Rn=GetScriptStatus Im|Rm

Abfrage des Scriptstatus: Aktiv / nicht aktiv

Mit dieser Funktion kann festgestellt werden, ob momentan ein Script ausgeführt wird oder nicht.

Hinweis: Zusätzlich zu einem laufenden Anwendungsprogramm kann maximal ein weiterer Programmablauf als Script ausgeführt werden.

Die Abfrage des Scriptstatus wird verwendet, um in einem Programmablauf

·vor dem programmatischen Start eines Scripts zu überprüfen, ob bereits ein Script läuft

·nach dem Starten eines Scripts in der Betriebsart "nichtmodal" zu warten, bis das Script beendet ist (Innerhalb der Warteschleife können z.B. weitere Abbruchbedingungen getestet werden)

·bei asynchron gestarteten nichtmodal ausgeführten Scripts an beliebigen Stellen auf das Ende der Scriptbearbeitung synchronisieren.

·nach dem Starten eines Scripts in der Betriebsart "modal" den weiteren Programmablauf anzuhalten bis das Script beendet ist

Verwendete Parameter:

In, Rn | Eine Integer- oder Real-Variable mit dem Index n, welche nach dem Aufruf den Status enthält: 0 Es ist kein Script aktiv 1 Momentan ist ein Script aktiv
Im, Rm | Eine Integer- oder Real-Variable mit der Prozess-ID eines gestarteten Scripts.

Beispiel:

(1)

;Ausfuehrung eines Scripts in der Betriebsart "modal"

;Uebertragen des Scriptnamens in eine String-Variable

Str1="C:\CNCWorkbench\Script\Script01.NCP"

;Pruefen ob die Datei existiert

I1=FileExists Str1

;wenn das der Fall ist: Script starten

;die beiden Optionen AUTOSTART und AUTOCLOSE muessen fuer

;die automatische Ausfuehrung des Scripts innnerhalb

;eines Bearbeitungsprogramms immer aktiviert sein

If(I1==1)

I1=StartScript Str1 AUTOSTART AUTOCLOSE

;wenn an dieser Stelle im Hauptprogramm zwingend auf das Ende

;des Scripts gewartet werden soll, muessen diese beiden Befehle

;eingefuegt werden: Nach einer kurzen Wartezeit wird der Befehl fuer

;die Abfrage des aktuellen Scriptstatus aufgerufen der erst zurueckkehrt

;wenn das modal ablaufende Script beendet ist.

Delay 500

I301=GetScriptStatus I1

EndIf

(2)

;Ausfuehren eines Scripts im nichtmodalen Modus:

...

...

If(I1==1)

I1=StartScript Str1 AUTOSTART AUTOCLOSE NONMODAL

EndIf

;im nichtmodalen Modus ist im Gegensatz zur modalen Form des

;Scriptdialogs der Zugriff auf die Bedienelemente der Hauptanwendung

;moeglich, d.h. ein Programm kann z.B. auch abgebrochen werden

;wenn an dieser Stelle im Hauptprogramm zwingend auf das Ende

;des nichtmodal gestarteten Scripts gewartet werden soll, muss

eine kurze Wartezeit eingefuegt werden.

;Nach dieser Wartezeit wird die Statusabfrage fuer das aktuelle Script

;in einer Schleife aufgerufen, die beendet wird sobald der Status

;signalisiert dass das nichtmodal ablaufende Script beendet ist.

Delay 500

Do

I301=GetScriptStatus I1

;Innerhalb dieser Warteschleife koennen weitere Aktionen bzw.

;Ueberpruefungen ausgefuehrt oder weitere Abbruchbedingungen

;ausgewertet werden

EndDo(I301==0)

Siehe auch: StartScript, GetScriptExitCode, AbortScript


GetStateMctl

GetStateMctl(arg)

Aktuellen Status der Motion-Control (Bewegungssteuerung) abfragen

Show/Hide Hidden Text

Dieser Befehl wird benutzt, um Zugriff auf interne Statusinformationen der Motion Control zu erhalten. Je nach übergebenem Parameter enthält das zurückgegebene Status-Wort Informationen zur Konfiguration oder zum aktuellen Betriebszustand der Maschine bzw. der Steuerung. Der zurückgegebene Wert kann mit Hilfe des Zuweisungs-Operators (=) in eine Integer-Variable geschrieben werden. Der aktuelle Zustand einzelner Flags wird mit Hilfe des bitweisen UND-Operators bestimmt.

Argument

Bedeutung

1

Abfrage des allgemeinen Status der Motion Control.

Spezifischer Steuerungstyp: isel CAN-Steuerung

Bit | Maske | Bedeutung
1 | 0x00000001 | In Bewegung: Ein Bewegungssegment ist momentan aktiv
2 | 0x00000002 | Gestoppt: Ein aktives Bewegungssegment ist momentan angehalten
3 | 0x00000004 | Momentan ist der Teach-Modus aktiv
4 | 0x00000008 | Momentan ist der Test-Modus aktiv
5 | 0x00000010 | Die Bestromung der Achsmotoren ist ausgeschaltet
6 | 0x00000020 | Momentan ist eine Bahnbewegung aktiv
7 | 0x00000040 | Momentan ist eine Segmentbewegung aktiv
8 | 0x00000080 | Die Bearbeitung eines Bahnblocks wurde gestarted/ist aktiv
9 | 0x00000100 | Die Betriebsart "Bewegung bis Eingangsereignis" ist initialisiert
10 | 0x00000200 | Die Betriebsart "Bewegung bis Eingangsereignis" ist aktiviert
11 | 0x00000400 | Definiertes Ereignis bei "Bewegung bis Eingang" ist eingetroffen
17 | 0x00010000 | Eine Referenzfahrt ist erforderlich
18 | 0x00020000 | Die letzte Bewegung wurde mit einem Break abgebrochen
19 | 0x00040000 | Momentan ist mindestens ein Hardware-Endschalter aktiv
20 | 0x00080000 | Momentan ist mindestens ein Software-Endschalter aktiv
21 | 0x00100000 | Während einer Bewegung wurde ein Hardware-Endschalter aktiviert
22 | 0x00200000 | Nachlauffehler während der Ausführung einer Bewegung
23 | 0x00400000 | Fehler beim Laden von Bahndaten
25 | 0x01000000 | n.c. (Alte Verwendung: Schlüsselschalter während Bewegung aktiviert)
26 | 0x02000000 | Power Fail: Fehlende Spannungsversorgung der Endstufen
27 | 0x04000000 | Sicherheitskreis-Fehler
28 | 0x08000000 | Hardware-Fehler oder Gerätefehler
29 | 0x10000000 | Kommunikationsfehler zwischen Steuerung und Endstufen
30 | 0x20000000 | n.c., reserviert

2

Abfrage des erweiterten Status der Motion Control.

Spezifischer Steuerungstyp: isel CAN-Steuerung

Bit | Maske | Bedeutung
1 | 0x00000001 | Busy: Der Steuerungskern ist momentan mit einem Befehl beschäftigt
2 | 0x00000002 | reserviert
3 | 0x00000004 | Die Motion Control wurde erfolgreich initialisiert
4 | 0x00000008 | Die Motion Control ist betriebsbereit
5 | 0x00000010 | Momentan wird ein Bohrzyklus ausgeführt
6 | 0x00000020 | Ein steuerungsspezifischer Fehler liegt an
7 | 0x00000040 | Dynamischer Power-Fail-Zustand (aktueller Status Betriebsspannung)

3

Abfrage des aktuellen Zustands der Hardware-Endschalter in negativer Achsrichtung.

Bit | Maske | Bedeutung
1 | 0x00000001 | Der negative Hardware-Endschalter der Achse X ist aktiv
2 | 0x00000002 | Der negative Hardware-Endschalter der Achse Y ist aktiv
3 | 0x00000004 | Der negative Hardware-Endschalter der Achse Z ist aktiv
4 | 0x00000008 | Der negative Hardware-Endschalter der Achse A ist aktiv
5 | 0x00000010 | Der negative Hardware-Endschalter der Achse B ist aktiv
6 | 0x00000020 | Der negative Hardware-Endschalter der Achse C ist aktiv
7 | 0x00000040 | Der negative Hardware-Endschalter der Achse U ist aktiv
8 | 0x00000080 | Der negative Hardware-Endschalter der Achse V ist aktiv
9 | 0x00000100 | Der negative Hardware-Endschalter der Achse W ist aktiv

4

Abfrage des aktuellen Zustands der Hardware-Endschalter in positiver Achsrichtung.

Bit | Maske | Bedeutung
1 | 0x00000001 | Der positive Hardware-Endschalter der Achse X ist aktiv
2 | 0x00000002 | Der positive Hardware-Endschalter der Achse Y ist aktiv
3 | 0x00000004 | Der positive Hardware-Endschalter der Achse Z ist aktiv
4 | 0x00000008 | Der positive Hardware-Endschalter der Achse A ist aktiv
5 | 0x00000010 | Der positive Hardware-Endschalter der Achse B ist aktiv
6 | 0x00000020 | Der positive Hardware-Endschalter der Achse C ist aktiv
7 | 0x00000040 | Der positive Hardware-Endschalter der Achse U ist aktiv
8 | 0x00000080 | Der positive Hardware-Endschalter der Achse V ist aktiv
9 | 0x00000100 | Der positive Hardware-Endschalter der Achse W ist aktiv

5

Abfrage des aktuellen Zustands der Software-Endschalter in negativer Achsrichtung.

Bit | Maske | Bedeutung
1 | 0x00000001 | Der negative Software-Endschalter der Achse X ist aktiv
2 | 0x00000002 | Der negative Software-Endschalter der Achse Y ist aktiv
3 | 0x00000004 | Der negative Software-Endschalter der Achse Z ist aktiv
4 | 0x00000008 | Der negative Software-Endschalter der Achse A ist aktiv
5 | 0x00000010 | Der negative Software-Endschalter der Achse B ist aktiv
6 | 0x00000020 | Der negative Software-Endschalter der Achse C ist aktiv
7 | 0x00000040 | Der negative Software-Endschalter der Achse U ist aktiv
8 | 0x00000080 | Der negative Software-Endschalter der Achse V ist aktiv
9 | 0x00000100 | Der negative Software-Endschalter der Achse W ist aktiv

6

Abfrage des aktuellen Zustands der Software-Endschalter in positiver Achsrichtung.

Bit | Maske | Bedeutung
1 | 0x00000001 | Der positive Software-Endschalter der Achse X ist aktiv
2 | 0x00000002 | Der positive Software-Endschalter der Achse Y ist aktiv
3 | 0x00000004 | Der positive Software-Endschalter der Achse Z ist aktiv
4 | 0x00000008 | Der positive Software-Endschalter der Achse A ist aktiv
5 | 0x00000010 | Der positive Software-Endschalter der Achse B ist aktiv
6 | 0x00000020 | Der positive Software-Endschalter der Achse C ist aktiv
7 | 0x00000040 | Der positive Software-Endschalter der Achse U ist aktiv
8 | 0x00000080 | Der positive Software-Endschalter der Achse V ist aktiv
9 | 0x00000100 | Der positive Software-Endschalter der Achse W ist aktiv

7

Abfrage der Anzahl der aktiven Achsen der Motion Control. Das Ergebnis der Abfrage kann mit dem Zuweisungs-Operator (=) an eine Real-Variable oder an eine Integer-Variable übertragen werden.

8

Abfrage des Typs der aktiven Achsen der Motion Control. Das Ergebnis der Abfrage kann mit dem Zuweisungs-Operator (=) an eine Integer-Variable übertragen werden.

Als Ergebnis wird ein Bitfeld geliefert, dessen einzelne Bits folgende Bedeutung haben:

Bit | Maske | Bedeutung
1 | 0x00000001 | Typ der Achse X, Bit 1=0 -> Linearachse, Bit 1=1 -> Drehachse
2 | 0x00000002 | Typ der Achse Y, Bit 2=0 -> Linearachse, Bit 2=1 -> Drehachse
3 | 0x00000004 | Typ der Achse Z, Bit 3=0 -> Linearachse, Bit 3=1 -> Drehachse
4 | 0x00000008 | Typ der Achse A, Bit 4=0 -> Linearachse, Bit 4=1 -> Drehachse
5 | 0x00000010 | Typ der Achse B, Bit 5=0 -> Linearachse, Bit 5=1 -> Drehachse
6 | 0x00000020 | Typ der Achse C, Bit 6=0 -> Linearachse, Bit 6=1 -> Drehachse
7 | 0x00000040 | Typ der Achse U, Bit 7=0 -> Linearachse, Bit 7=1 -> Drehachse
8 | 0x00000080 | Typ der Achse V, Bit 8=0 -> Linearachse, Bit 8=1 -> Drehachse
9 | 0x00000100 | Typ der Achse W, Bit 9=0 -> Linearachse, Bit 9=1 -> Drehachse

9

Abfrage des Status des Referenzfahrt-Zyklus der Anwendung.

Rückgabewerte:

0 Referenzfahrtzyklus ist nicht aktiv

1 Referenzfahrt-Zyklus ist momentan aktiv

Definitionsblock für die Statusbits

;*********************************************************

;allgemeiner Status: Argument=1, GetStateMctl(1)

#define MCTL_STAT_INMOTION 0x00000001

#define MCTL_STAT_INSTOPMODE 0x00000002

#define MCTL_STAT_INTEACHMODE 0x00000004

#define MCTL_STAT_INTESTMODE 0x00000008

#define MCTL_STAT_CURRENTOFF 0x00000010

#define MCTL_STAT_INPATHMOTION 0x00000020

#define MCTL_STAT_ISMOVING 0x00000040

#define MCTL_STAT_PATHSTARTED 0x00000080

#define MCTL_STAT_NEEDREFERENCERUN 0x00010000

#define MCTL_STAT_BREAKERROR 0x00020000

#define MCTL_STAT_HWLSACTIVE 0x00040000

#define MCTL_STAT_SWLSACTIVE 0x00080000

#define MCTL_STAT_HWLSDURINGMOTION 0x00100000

#define MCTL_STAT_AFTERRUNERROR 0x00200000

#define MCTL_STAT_LOADPATHDATAERROR 0x00400000

#define MCTL_STAT_KEYSWITCHERROR 0x00800000

#define MCTL_STAT_KEYSWDURINGMOTION 0x01000000

#define MCTL_STAT_POWER_FAIL 0x02000000

#define MCTL_STAT_SC_FAIL 0x04000000

#define MCTL_STAT_HARDWARE_FAIL 0x08000000

#define MCTL_STAT_COMMUNICATION_FAIL 0x10000000

#define MCTL_STAT_RESERVED1 0x40000000

;erweiterter Status: Argument=2, GetStateMctl(2)

#define MCTL_STAT_ISBUSY 0x00000001

#define MCTL_STAT_DISABLED 0x00000002

#define MCTL_STAT_ISINITIALIZED 0x00000004

#define MCTL_STAT_READY 0x00000008

#define MCTL_STAT_DRILLCYCLEACTIVE 0x00000010

#define MCTL_STAT_CTRLSPECERROR 0x00000020

#define MCTL_STAT_DYN_POWER_FAIL 0x00000040

;---------------------------------------------------------

Beispiele

Ermittlung des aktuellen Zustands der Spannungsversorgung

;Abfrage des erweiterten Status der

;Motion Control und Uebertrag in eine

;Integer-Variable

I1=GetStateMctl(2)

;Auswertung des Bits 7 (Zaehlweise ab 1)

;mit dem entsprechenden Maskenwert

If((I1&0x00000040)==0x00000040)

MessageBox "Power Fail"

Else

MessageBox "Power OK"

EndIF

Ermittlung ob eine Referenzfahrt der Maschine erforderlich ist

;Abfrage des allgemeinen Status der

;Motion Control und Uebertrag in eine

;Integer-Variable

I1=GetStateMctl(1)

;Auswertung des Bits 17 (Zaehlweise ab 1)

;mit dem entsprechenden Maskenwert

If((I1&0x00010000)==0x00010000)

MessageBox "Referenzfahrt benötigt"

EndIF


GetStateSecc

GetStateSecc(mode)

Abfrage des aktuellen Status des Sicherheitskreismoduls

Show/Hide Hidden Text

Mit diesem Befehl können die internen Statusinformationen des Sicherheitskreismoduls ermittelt werden. Der übergebene Parameter legt fest, welche Statusinformationen zurückgegeben werden. Der abgefragte Wert kann mit Hilfe des Zuweisungs-Operators (=) in eine Integer- oder R-Variable geschrieben werden. Der aktuelle Zustand einzelner Flags wird mit Hilfe des bitweisen UND-Operators bestimmt.

mode

Bedeutung

1

Dieses Argument wird für die Abfrage des Statusworts dwCommon des Sicherheitskreismoduls verwendet. Es beinhaltet den allgemeinen Status des Sicherheitskreismoduls.

Bit | Maske | Bedeutung
1 | 0x00000001 | Der (bzw. einer der) NOT-AUS-Schalter ist momentan aktiv
2 | 0x00000002 | Die Betriebsart "Einrichtbetrieb" ist aktiviert
3 | 0x00000004 | Früher: Alle Achsen an der Homeposition, jetzt: Keine Bewegung aktiv
4 | 0x00000008 | Die (bzw. mindestens eine) Spindel ist nicht im Stillstand
5 | 0x00000010 | Die (bzw. mindestens eine) Maschinentür/Abdeckung ist geöffnet
6 | 0x00000020 | Mindestens ein Achs-Endschalter ist momentan aktiv
9 | 0x00000100 | User-Fehlereingang 1 ist aktiv
10 | 0x00000200 | User-Fehlereingang 2 ist aktiv
17 | 0x00010000 | Power Fail, Spannung nicht zugeschaltet (Rückführkreis Schütze)
18 | 0x00020000 | Kommunikationsfehler, Kommunikation mit SK-Modul nicht möglich
19 | 0x00040000 | Fehlerhafter Hardwaretest
20 | 0x00080000 | Fehler beim Selbsttest des SK-Moduls
21 | 0x00100000 | Signalisierung Modulstatus "verriegelt", Zuschalten Spannung möglich
22 | 0x00200000 | Reserviert: Status der Maschinentür/Abdeckung ist "verriegelt"
25 | 0x01000000 | Warnung aktiv

2

Abfrage des erweiterten Status des Sicherheitskreismoduls. Der Zustand des Statuswortes dwExtended wird zurückgegeben.

Bit | Maske | Bedeutung
1 | 0x00000001 | Busy: Das Sicherheitskreismodul ist mit einer Aktion beschäftigt
2 | 0x00000002 | Disabled: Das Sicherheitskreismoduls ist disabled
3 | 0x00000004 | Das Sicherheitskreismodul ist initialisiert und betriebsbereit

Definitionsblock für die Statusbits

;*********************************************************

;allgemeiner Status: Argument=1, GetStateMctl(1)

;---------------------------------------------------------

#define SEC_STAT_EMERGENCYSWITCH 0x00000001

#define SEC_STAT_SETUPMODE 0x00000002

#define SEC_STAT_ATHOMEPOS 0x00000004

#define SEC_STAT_SPINDLETURNS 0x00000008

#define SEC_STAT_COVEROPEN 0x00000010

#define SEC_STAT_LIMITSWITCH 0x00000020

#define SEC_STAT_OEM_1 0x00000100

#define SEC_STAT_OEM_2 0x00000200

#define SEC_STAT_POWER_FAIL 0x00010000

#define SEC_STAT_COMMUNICATION_FAIL 0x00020000

#define SEC_STAT_HARDWARE_FAIL 0x00040000

#define SEC_STAT_CONTROL_FAIL 0x00080000

#define SEC_STAT_LOCKED 0x00100000

#define SEC_STAT_COVERLOCKED 0x00200000

#define SEC_STAT_FLASH 0x01000000

;erweiterter Status: Argument=2, GetStateMctl(2)

;---------------------------------------------------------

#define SEC_STAT_ISBUSY 0x00000001

#define SEC_STAT_DISABLED 0x00000002

#define SEC_STAT_ISINITIALIZED 0x00000004

Beispiele

;Ermittlung des aktuellen Zustands der

;Spannungsversorgung ueber das Statusbit des

;Sicherheitskreismoduls

;Abfrage des allgemeinen Status des

;Sicherheitskreismoduls und Uebertrag in eine

;Integer-Variable

I1=GetStateSecc(1)

;Auswertung des Bits 17 mit dem

;entsprechenden Maskenwert

If((I1&0x00010000)==0x00010000)

MessageBox "Power Fail"

Else

MessageBox "Power OK"

EndIF

;Ermittlung ob der Not-AUS-Schalter aktiv ist

;Abfrage des allgemeinen Status der

;Motion Control und Uebertrag in eine

;Integer-Variable

I1=GetStateMctl(1)

;Auswertung des Bits 1 mit dem

;entsprechenden Maskenwert

If((I1&0x00000001)==0x00000001)

MessageBox "NOT-AUS-Schalter ist aktiv!"

EndIf

;alternativ mit der Definition

I1=GetStateMctl(1)

If((I1&SEC_STAT_EMERGENCYSWITCH)==SEC_STAT_EMERGENCYSWITCH)

MessageBox "NOT-AUS-Schalter ist aktiv!"

EndIf


GetStateSWLS

GetStateSWLS(arg)

Abfrage des Status der Software-Endschalter

Dieser Befehl ermöglicht die Abfrage des Status der Software-Endschalter. Durch das übergebene Argument "arg" wird festgelegt, welche Statusinformation in die zugewiesene Variable übertragen wird.

Für die übergebenen Argumente gilt: Die Werte 1, 2 und 3 greifen auf die Software-Endschalter in Motion Control 1 zu, alternativ können die Argumente 11, 12 und 13 verwendet werden. Für den Zugriff auf Motion Control 2 sind die Argumente 21, 22 und 23 vorgesehen.

Argument

Bedeutung

1, 11

Abfrage des Enable-Status der Software-Endschalter der einzelnen Achsen in Motion Control 1. Der Enable-Status zeigt an, ob die negativen und positiven Software-Endschalter einer Achse momentan aktiviert oder deaktiviert sind.

Anmerkung: Software-Endschalter können nur achsweise enabled oder disabled werden, das Aktivieren nur des negativen oder nur des positiven Software-Endschalters einer Achse ist nicht möglich.

Der zurückgegebene Wert enthält die Statusinformationen in einzelnen Bits. Durch Auswertung mit einer entsprechenden Maske erhält man den Enable-Status des Software-Endschalters für die jeweilige Achse.

Bedeutung der Bitwerte des zurückgegebenen Wertes (Wert & Maskenwert):

Bit | Maske | Bedeutung
1 | 0x00000001 | Software-Endschalter der Achse X: 1: enabled, 0: disabled
2 | 0x00000002 | Software-Endschalter der Achse Y: 1: enabled, 0: disabled
3 | 0x00000004 | Software-Endschalter der Achse Z: 1: enabled, 0: disabled
4 | 0x00000008 | Software-Endschalter der Achse A: 1: enabled, 0: disabled
5 | 0x00000010 | Software-Endschalter der Achse B: 1: enabled, 0: disabled
6 | 0x00000020 | Software-Endschalter der Achse C: 1: enabled, 0: disabled
7 | 0x00000040 | Software-Endschalter der Achse U: 1: enabled, 0: disabled
8 | 0x00000080 | Software-Endschalter der Achse V: 1: enabled, 0: disabled
9 | 0x00000100 | Software-Endschalter der Achse W: 1: enabled, 0: disabled

21

Abfrage des Enable-Status der Software-Endschalter der einzelnen Achsen in Motion Control 2. Der Enable-Status zeigt an, ob die negativen und positiven Software-Endschalter einer Achse momentan aktiviert oder deaktiviert sind.

Die Auswertung des zurückgegebenen Wertes erfolgt analog zur Auswertung in Motion Control 1 (Argumente 1, 11).

2, 12

Abfrage des aktuellen Zustands der Software-Endschalter in negativer Achsrichtung. Dieser Status signalisiert, ob eine Achse momentan im Software-Endschalter steht oder nicht. Der zurückgegebene Wert enthält die Statusinformationen in einzelnen Bits. Durch Auswertung mit einer entsprechenden Maske erhält man den Aktiv-Status des negativen Software-Endschalters für die jeweilige Achse. Wenn die Achse den negativen Software-Endschalter verletzt hat, ist das entsprechende Bit im zurückgegebenen Statuswert aktiv.

Bit | Maske | Bedeutung
1 | 0x00000001 | Der negative Software-Endschalter der Achse X ist aktiv
2 | 0x00000002 | Der negative Software-Endschalter der Achse Y ist aktiv
3 | 0x00000004 | Der negative Software-Endschalter der Achse Z ist aktiv
4 | 0x00000008 | Der negative Software-Endschalter der Achse A ist aktiv
5 | 0x00000010 | Der negative Software-Endschalter der Achse B ist aktiv
6 | 0x00000020 | Der negative Software-Endschalter der Achse C ist aktiv
7 | 0x00000040 | Der negative Software-Endschalter der Achse U ist aktiv
8 | 0x00000080 | Der negative Software-Endschalter der Achse V ist aktiv
9 | 0x00000100 | Der negative Software-Endschalter der Achse W ist aktiv

22

Abfrage des Aktiv-Status des negativen Software-Endschalters der einzelnen Achsen in Motion Control 2. Der Aktiv-Status zeigt an, ob eine Achse momentan im negativen Software-Endschalter steht oder nicht.

Die Auswertung des zurückgegebenen Wertes erfolgt analog zur Auswertung in Motion Control 1 (Argumente 2, 12).

3, 13

Abfrage des aktuellen Zustands der Software-Endschalter in positiver Achsrichtung. Dieser Status signalisiert, ob eine Achse momentan im Software-Endschalter steht oder nicht. Der zurückgegebene Wert enthält die Statusinformationen in einzelnen Bits. Durch Auswertung mit einer entsprechenden Maske erhält man den Aktiv-Status des positiven Software-Endschalters für die jeweilige Achse. Wenn die Achse den positiven Software-Endschalter verletzt hat, ist das entsprechende Bit im zurückgegebenen Statuswert aktiv.

Bit | Maske | Bedeutung
1 | 0x00000001 | Der positive Software-Endschalter der Achse X ist aktiv
2 | 0x00000002 | Der positive Software-Endschalter der Achse Y ist aktiv
3 | 0x00000004 | Der positive Software-Endschalter der Achse Z ist aktiv
4 | 0x00000008 | Der positive Software-Endschalter der Achse A ist aktiv
5 | 0x00000010 | Der positive Software-Endschalter der Achse B ist aktiv
6 | 0x00000020 | Der positive Software-Endschalter der Achse C ist aktiv
7 | 0x00000040 | Der positive Software-Endschalter der Achse U ist aktiv
8 | 0x00000080 | Der positive Software-Endschalter der Achse V ist aktiv
9 | 0x00000100 | Der positive Software-Endschalter der Achse W ist aktiv

23

Abfrage des Aktiv-Status des positiven Software-Endschalters der einzelnen Achsen in Motion Control 2. Der Aktiv-Status zeigt an, ob eine Achse momentan im positiven Software-Endschalter steht oder nicht.

Die Auswertung des zurückgegebenen Wertes erfolgt analog zur Auswertung in Motion Control 1 (Argumente 3, 13).

Siehe auch: MEnableSWLS


GetStatusEth

GetStatusEth In=NumCharsInBuffer [Ix=ErrorCode]

Abfrage des aktuellen Status einer Ethernet-Verbindung

Mit Hilfe dieses Befehls kann der aktuelle Status einer Ethernet-Verbindung abgefragt werden.

Verwendete Parameter:

In

Statusinformation: NumCharsInBuffer

Eine Integer-Variable mit dem Index n, welche die zurückgelieferte Statusinformation "NumCharsInBuffer" aufnimmt.

NumCharsInbuffer liefert die aktuelle Anzahl der Zeichen, die sich im Empfangspuffer der Verbindung befinden.

Ix

Statusinformation: ErrorCode

Eine Integer-Variable mit dem Index x, in die der Fehlercode des Aufrufs abgelegt wird.

Wenn dieser Parameter angegeben ist, wird ein Fehler beim Aufruf der Funktion GetStatusEth nicht als Laufzeitfehler angezeigt (was einen Stopp des PAL-Programms zur Folge hat), sondern in die zugewiesene Variable geschrieben. Die Auswertung des Fehlers erfolgt dann im PAL-Programm selbst.

handle

Dieser Parameter ist der Handle der Verbindung, der bei Aufruf der Funktion OpenEth zurückgegeben wurde und normalerweise in einer Integer-Variablen abgelegt wurde.

Siehe auch: OpenEth, CloseEth, RxEth, TxEth


GetStatusMctl

In/Rn=GetStatusMctl(arg)

Abfrage des aktuellen Status der Bewegungssteuerung

Mit Hilfe der Funktion GetStatusMctl kann der interne Zustand der Bewegungssteuerung ermittelt werden. Diese Informationen sind erforderlich und hilfreich für die flexible Gestaltung von PAL-Anwendungsprogrammen.

Syntax:

In=GetStateMctl(arg)

Rn=GetStateMctl(arg)

Verwendete Parameter:

arg Parameter zur Spezifizierung der Statusabfrage
arg | Bedeutung
1 | Abfrage des Elements dwCommon von Motion Control 1
2 | Abfrage des Elements dwExtended von Motion Control 1
11 | Abfrage des Elements dwCommon von Motion Control 2
12 | Abfrage des Elements dwExtended von Motion Control 2

In Eine I-Variable mit dem Index n zur Aufnahme des Ergebnisses
Rn Eine R-Variable mit dem Index n zur Aufnahme des Ergebnisses

Rückgabewert:

Wenn die Funktion nicht fehlerfrei ausgeführt werden konnte, gibt die Funktion den Wert -1 zurück. Wenn die Funktion erfolgreich ausgeführt werden konnte, ist der Rückgabewert ein 32-Bit-Wert, dessen Bits die nachstehende Bedeutung haben:

Motion Control 1, dwCommon

Flag | Bitmaske | Bedeutung
MCTL_STAT_INMOTION | 0x00000001 | Mindestens eine Achse ist in Bewegung
MCTL_STAT_INSTOPMODE | 0x00000002 | Ein Bewegungssegment ist aktiv, aber angehalten
MCTL_STAT_INTEACHMODE | 0x00000004 | Der Teachmodus ist aktiv
MCTL_STAT_INTESTMODE | 0x00000008 | Der Testmodus ist aktiv
MCTL_STAT_CURRENTOFF | 0x00000010 | Die Bestromung des Motors/der Motoren ist disabled
MCTL_STAT_INPATHMOTION | 0x00000020 | Eine Bahnbewegung ist aktiv
MCTL_STAT_ISMOVING | 0x00000040 | Es wird eine (physikalische) Bewegung ausgeführt
MCTL_STAT_PATHSTARTED | 0x00000080 | Die Bearbeitung eines Bahnblocks wurde begonnen / ist aktiv
MCTL_STAT_NEEDREFERENCERUN | 0x00010000 | Die Referenzfahrt wird benötigt
MCTL_STAT_BREAKERROR | 0x00020000 | Break-Fehler: Eine Bewegung wurde abgebrochen
MCTL_STAT_HWLSACTIVE | 0x00040000 | Mindestens ein Hardware-Endschalter ist aktiv
MCTL_STAT_SWLSACTIVE | 0x00080000 | Mindestens ein Software-Endschalter ist aktiv
MCTL_STAT_HWLSDURINGMOTION | 0x00100000 | Ein Hardware-Endschalter war während einer Bewegung aktiv
MCTL_STAT_POSLAGERROR | 0x00200000 | Ein Nachlauffehler ist aufgetreten
MCTL_STAT_LOADPATHDATAERROR | 0x00400000 | Die Bahndaten konnten nicht geladen werden
MCTL_STAT_KEYSWITCHERROR | 0x00800000 | Schlüsselschalter-Fehler (unerlaubter Zustand des Schalters)
MCTL_STAT_KEYSWDURINGMOTION | 0x01000000 | Der Schlüsselschalter wurde während einer Bewegung aktiviert
MCTL_STAT_POWER_FAIL | 0x02000000 | Power-Fail, die Spannungsversorgung der Endstufen fehlt
MCTL_STAT_SC_FAIL | 0x04000000 | Allg.: Fehler, das Sicherheitskreis-Modul ist aktiviert
MCTL_STAT_HARDWARE_FAIL | 0x08000000 | Allg.: Fehler bei der Hardware
MCTL_STAT_COMMUNICATION_FAIL | 0x10000000 | Allg.: Fehler bei der Kommunikation
MCTL_STAT_RESERVED1 | 0x40000000 | reserviert

Motion Control 1, dwExtended

Flag | Bitmaske | Bedeutung
MCTL_STAT_ISBUSY | 0x00000001 | Die Motion Control ist bereits mit einer Funktion aktiv
MCTL_STAT_DISABLED | 0x00000002 | Die Verwendung der Motion Control ist deaktiviert
MCTL_STAT_ISINITIALIZED | 0x00000004 | Die Motion Control wurde bereits initialisiert
MCTL_STAT_READY | 0x00000008 | Die Motion Control ist betriebsbereit
MCTL_STAT_DRILLCYCLEACTIVE | 0x00000010 | Ein Bohrzyklus ist aktiv
MCTL_STAT_CTRLSPECERROR | 0x00000020 | Ein steuerungsspezifischer Fehler ist aufgetreten
MCTL_STAT_DYN_POWER_FAIL | 0x00000040 | Dynamic power fail state (current status of operating voltage)

Die Flags bei Abfrage des Status der optionalen zweiten Motion Control sind identisch mit der Bedeutung der Flags bei Motion Control 1.

Beispiele:

(1)

;Anwendung: eine Referenzfahrt nur bei Notwendigkeit ausführen

#define MCTL_STAT_NEEDREFERENCERUN 0x00010000

I1=0

I1=GetStateMctl(1) ;dwCommon wird abgefragt

If(I1!=-1) AND (I1&MCTL_STAT_NEEDREFERENCERUN)

Ref XYZA

EndIf

(2)

;Anwendung: die Bedingung INMOTION "nachbilden"

#define MCTL_STAT_INMOTION 0x00000001

#MoveRel X100 F10

Repeat

I1=GetStateMctl(1)

I2=I1&MCTL_STAT_INMOTION

Until I2==0

Siehe auch: INMOTION, #define, #


GetString

GetString text

Bearbeiten einer String-Variablen (Zeichenkettenvariablen)

Anzeige eines Dialogs für die Bearbeitung des Inhalts einer String-Variablen (Zeichenkettenvariablen).

Die Anweisung GetString bietet die Möglichkeit, den Inhalt einer String-Variablen anzuzeigen und zu verändern. Im Dialog enthalten ist die Möglichkeit, der betreffenden String-Variablen über einen Dateiauswahldialog einen Dateinamen zuzuweisen.

Syntax:

Strn=GetString "text ..."

Verwendete Parameter:

Strn | Eine String-Variable (Zeichenkettenvariable) mit dem Index n, welche zur Aufnahme des zurückgelieferten Ergebnisses dient.
text | Ein Meldungstext, der im angezeigten Dialog zur Eingabe der Zeichenkette erscheint.

Beispiel:

Str1=GetString "Bitte die gewünschte Datei auswählen ..."

R1=MessageBox YESNO "Die Datei %S1% wirklich verwenden? "

If R1==IDYES

....

EndIf


GetTickCount

GetTickCount(arg)

Abfrage des System-Timers

Diese Funktion wird verwendet, um den Zählerstand des System-Timers des PC'S abzufragen. Der System-Timer liefert die fortlaufend erhöhte Zeit, die seit dem Einschalten des PC's vergangen ist.

Der Rückgabewert der Funktion kann in eine I-Variable oder in eine R-Variable übernommen werden.

Syntax:

In=GetTickCount(arg)

Rn=GetTickCount(arg)

Verwendete Parameter:

arg Angabe der Auflösung des Rückgabewertes
Argument | Rückgabe
1 | Rückgabe des Systemtimer-Wertes in ms (Millisekunden)
2 | Rückgabe des Systemtimer-Wertes in s (Sekunden)
anderer Wert | -1 bzw. -1.0

Beispiel:

;Argument ist 1 ->

;Anforderung des Wertes in Millisekunden

I1 = GetTickCount(1)

Delay 1234 ;1234 msec warten

I2 = GetTickCount(1) ;I2 enthaelt Wert in msec

I3=I2-I1

MessageBox OK "Laufzeit: %I3% ms"


GetTime

GetTime Rh Rm Rs

Abfrage der aktuellen Uhrzeit

Dieser Befehl dient zur Abfrage der aktuellen Uhr- bzw. Systemzeit. Nach Aufruf dieser Funktion stehen in den R-Variablen Variablen Rh, Rm, Rs diese Werte zur Verfügung:

Rh = Stunde (0...23)

Rm = Minute (0...60)

Rt = Sekunde (0...60)

Beispiel:

;angenommen, es ist jetzt gerade 15:12:36 (15:12 Uhr und 36 Sekunden

R0 = GetTime R1 R2 R3

;jetzt haben R1, R2 und R3 folgende Werte:

;R1=15, R2=12, R3=36

Siehe auch: GetDate


GetTool

GetTool nr

Aufruf eines Werkzeugwechselzyklus

Hinweis: Dieser Befehl wurde im Rahmen der Vereinheitlichung der Werkzeugwechselbefehle ersetzt, kann aber weiterhin verwendet werden.

Dieser Befehl dient zum Einwechseln eines neuen Werkzeugs mit der Werkzeugnummer nr. Der übergebene numerische Parameter ist eine Werkzeugnummer, die im Einrichtdialog der Steuerung in der Werkzeugliste angelegt werden muß. Gültige Werkzeugnummern sind 1...128. Wenn der Befehl mit dem Parameter 0 verwendet wird, wird das aktuelle Werkzeug nur abgelegt und kein neues Werkzeug eingewechselt.

Im Einrichtdialog der Steuerung wird im Bereich "Werkzeugwechsler" eine Werkzeugliste konfiguriert, welche einer Werkzeugnummer folgende Parameter zuweist:

- den Werkzeughalter, der das gewünschte Werkzeug enthält

- den Ablageplatz im Werkzeughalter, welcher das gewünschte Werkzeug enthält

Diese Zuordnung muß getroffen werden, bevor der Befehl für den Werkzeugwechsel verwendet werden kann.

Beim Aufruf des Werkzeugwechselzyklus wird immer die Werkzeugnummer als Parameter übergeben.

Beispiel:

GETTOOL 4

Siehe: TchGetTool


GetToolRefPos

Rn=GetToolRefPos nr

Abfrage der Referenzposition Z eines Werkzeugs

Hinweis: Dieser Befehl ist veraltet, alternativ soll der Befehl TchGetToolRefPos verwendet werden!

Dieser Befehl wurde im Rahmen der Vereinheitlichung der Werkzeugwechselbefehle ersetzt, kann aber weiterhin verwendet werden.

Abfrage der Referenzposition Z eines Werkzeugs mit der Werkzeugnummer nr.

Parameter des Befehls:

Rn | Eine R-Variable mit dem Index n, in welche die Referenzposition des angegebenen Werkzeugs übertragen wird.
nr | Angabe der Werkzeugnummer. Der übergebene numerische Parameter ist eine Werkzeugnummer, die im Einrichtdialog der Steuerung in der Werkzeugliste angelegt werden muß. Gültige Werkzeugnummern sind 1...128.

Siehe: TchGetToolRefPos


GetValue

GetValue "text"

Eingabe eines Wertes

Dieser Befehl dient zur Anzeige eines Dialogfeldes zur Eingabe eines Wertes durch den Anwender. Der im GetValue-Befehl in Anführungszeichen angegebene Text erscheint im Dialogfeld und definiert damit die technologische Bedeutung der erwarteten Werteingabe für die konkrete R-Variable.

Beispiel:

R11=GETVALUE "Anzahl der Durchläufe:"

;Nach Eingabe des Wertes und Verlassen des Dialogs

;mit OK enthält R11 den im Eingabefeld "neuer Wert der

;R-Variable" eingetragenen Wert.


GetWorkDirectory

Strn=GetWorkDirectory

Ermitteln des Verzeichnisses der aktuell bearbeiteten PAL-Programmdatei

Mit diesem Befehl kann das Verzeichnis ermittelt werden, in welchem sich die aktuell bearbeitete PAL-Quelldatei befindet. Das Ergebnis der Abfrage wird in die angegebene String-Variable übertragen.

Ausgehend vom Verzeichnis der aktuellen PAL-Quelldatei können beispielsweise weitere Verzeichnisnamen mit Programmresourcen (Bitmaps, Icons, Bearbeitungsdateien) oder einzubindenden Bearbeitungsdateien konstruiert werden.

Parameter des Befehls:

Strn

Eine Str-Variable mit dem Index n, in welche der Name des Verzeichnises eingetragen wird, in dem sich das aktuell bearbeitete PAL-Programm befindet.

Beispiel:

Gestartet wird das PAL-Programm "C:\CNCWorkbench\Control\TouchProbe\TouchProbeUni\Script\TouchProbeActivate.PAL". Im Programmablauf wird das Arbeitsverzeichnis mit dem Befehl

Str1=GetWorkDirectory

ermittelt. Nach Ausführung des Befehls steht in der Variablen Str1 die Zeichenkette

C:\CNCWorkbench\Control\TouchProbe\TouchProbeUni\Script\

Hinweis: Für die weitere Verarbeitung ist zu beachten, daß die Zeichenkette mit einem "\" abgeschlossen ist.


GoTo

GoTo label

Sprung an Sprungzielmarke

Eine Sprunganweisung oder ein Sprungbefehl ist eine Anweisung in einer Programmiersprache. In PAL-Anwendungsprogrammen dient sie dazu, die Verarbeitung nicht mit dem nachfolgenden Befehl, sondern an einer beliebigen Stelle fortzuführen.

Hinweis: Obwohl der Sprung in einen Schleifenkörper prinzipiell möglich ist, sollte auf eine Programmierung in dieser Art generell verzichtet werden, da notwendige Intialisierungen von Variablen übersprungen werden könnte (z.B. bei der Verwendung einer FOR..ENDFOR-Zählschleife):

ProgBegin

Goto Lb_Label1

while R91<10
moverel x1.000 f1.0
moverel x-1.000

Lb_Label1:

endwhile

ProgEnd

Angabe des Sprungziels

Das Sprungziel ist eine Textmarke mit einem nachfolgenden Doppelpunkt. Die Textmarke kann eine beliebige Kombination von alphanumerischen Zeichen sein.

Goto Label1 | ð | Label1:
Goto OhneVorbearbeitung | ð | OhneVorbearbeitung:
Goto LbAktion001 | ð | LbAktion001:

Unbedingter Sprung

Der Sprung an die Zielmarke wird ohne Prüfung einer Bedingung ausgeführt.

MoveAbs X... Y...

MoveAbs X...

Goto LbEnde

;...

;...

;weitere Anweisungen

;...

;...

LbEnde:

ProgEnd

Bedingter Sprung

In Kombination mit der If-Anweisung wird ein bedingter Sprung nach Prüfung einer Bedingung ausgeführt.

MoveAbs X... Y...

MoveAbs X...

If E1.5==1

Goto LbEnde

EndIf

;die nachfolgenden Anweisungen werden

;ausgeführt wenn E1.5 gleich 0 ist.

;...

;...

;weitere Anweisungen

;...

;...

LbEnde:

ProgEnd

Siehe auch: If ... Else ... EndIf


HOff

Hand-Modus ausschalten

Die CAN-Steuerung verfügt über einen speziellen Betriebszustand, in dem Motorbestromung in den Endstufen ausgeschaltet ist. Dieser Betriebszustand wird als "Handmodus" bezeichnet.

Der Befehl HOff schaltet den Handmodus aus, d.h. die Achsen werden anschließend bestromt.

Siehe auch: HOn


HOn

Hand-Modus einschalten

Die CAN-Steuerung verfügt über einen speziellen Betriebszustand, in dem Motorbestromung in den Endstufen ausgeschaltet ist. Dieser Betriebszustand wird als "Handmodus" bezeichnet.

Der Befehl HOn schaltet den Handmodus ein, d.h. die Achsen werden anschließend nicht bestromt.

Siehe auch: HOff


I (Variable)

In

Integer-Variable

I-Variablen (Integer-Variablen) besitzen den Wertebereich einer Ganzzahl (32 Bit). Der Wertebereich befindet sich in der Spanne von -2147483647....2147483647. Alle 1000 verfügbaren I-Variablen I0 bis I999 sind in ProNC/Remote als Feld (Array) angeordnet.

Eine I-Variable kann unter Verwendung arithmetischer Operatoren mit anderen I-Variablen oder mit Konstanten (ganzen Dezimalzahlen) verknüpft werden. I-Variablen ermöglichen die Wertübertragung an eine Koordinate (Achsposition), einen F-Befehl (Angabe einer Vorschubgeschwindigkeit) oder S-Befehl (Angabe einer Spindeldrehzahl). Auf I-Variablen kann indirekt zugegriffen werden, indem als Index einer I-Variablen eine weitere I-Variable angegeben wird z. B. II63. Als Index der I-Variablen sind sowohl Integer- als auch Real-Variablen zugelassen.

Syntax:

·Integer-Variable mit direkter Angabe des Index: I0 bis I999

·Integer-Variable indexiert mit einer I-Variable In: IIn (n=0...999)
I1=6
II1=456 ;I1 ist der Index der I-Variable -> I6=456

·Integer-Variable indexiert mit einer R-Variable Rn: IRn (n=0...999)
R1=5
IR1=123 ;R1 ist der Index der I-Variable -> I5=123

Datenübernahme:

Bei der Zuweisung des Wertes eines arithmetischen Ausdrucks an eine I-Variable wird der Wert automatisch gerundet:

I0=1

R0=1.6

R1 = R0+I0*5 ;R1=6.6

I1 = R0+I0*5 ;I1=7

I-Variable können mit R-Variablen als Funktionsargumente beliebig kombiniert werden:

I1=3

R2=4

I3=0

I3=Sqrt(I1*I1+R2*R2) ;I- und R-Variable als gemischte Funktionsargument(e)

Beispiele:

;Verwendung zur Steuerung des Programmablaufs:

;I-Variable können in Konstruktionen zur Steuerung des Programmablaufes

;als erlaubte arithmetische Ausdrücke oder als Teil von arithmetischen

;Ausdrücken in allen Vergleichen und damit auch in allen Bedingungen benutzt werden.

I1=1

R1=2

If I1<R1

XType "(I1=%I1%) < (R1=%R1%)"

Else

XType "(I1=%I1%) >= (R1=%R1%)"

EndIf

I1=0xFF

I1=I1&0x00

I2=0

Switch ( I1 + I2*234 + cos(I2)*2 )

Case 0x02:

Type Richtig ...

EndCase

Default:

Type Falsch ...

EndCase

EndSwitch

;Verwendung in Boole'schen Ausdrücken:

;I-Variable können sowohl in Boole'schen Ausdrücken als auch in

;bitweisen Links-/Rechts-Verschiebungen verwendet werden. Die

;Shift-Operatoren "<<" bzw. ">>" können sowohl mit P- als auch mit

;I-Variablen benutzt werden. Dabei haben die Shift-Operatoren "<<"

;bzw. ">>" Vorrang gegenüber allen anderen Boolschen Operatoren

;wie "&" (and) und "|" (or).

I1 = 1

P2 = I1 | 0x55 << 1 ; P2= 0xAB

P20 = P2 & 0xFF & I1 ; P20= 0x01

I0 = 0x55AA << 4 ; I0=0x55AA0 = 350880

I1 = 0x0001 << 7 ; I1=0x0080 = 128

I2 = 0x12345678<<16 ; I2=0x56780000 = 1450704896

I2 = 0x40000000>>30 ; I2=1

P0 = 0xFF

P2=0x0F

P4=0xF0

I3 = P0 | P2<<8 | P4<<16 ; I3=0x00F00FFF = 15732735

;Numerische Eingabe eines Wertes für eine Integer-Variable:

;Der Befehl GetValue ist auch für den Variablen-Typ I-Variable nutzbar.

;Durch den Befehl GetValue wird ein Standard-Dialog geöffnet, welcher die

;Eingabe eines Wertes für die angegebene Integer-Variable ermöglicht.

;Die Texte im Dialog werden je nach Typ der Variablen auf der

;linken Seite der Zuweisung angepaßt.

I5=GetValue "Wert für Integer-Variable ..."

;Verwendung von Integer-Variablen zur Definition von Ziel-Koordinaten

;Integer-Variablen können, ebenso wie R-Variablen, zur Angabe von

;Zielkoordinaten verwendet werden. Die Zielkoordinate kann auch über

;einen arithmetischen Ausdruck festgelegt werden. Die direkte und

;die indizierte Angabe der Variablen ist zulässig.

I1=2

I2=-5

R1=10

II1=20

FastAbs XR1+1+2 YI1*2 ZII1*2+1 ;Zielpunkt=[13,4,-9]

;Verwendung in Zählschleifen

;I-Variable können in einer For-Schleife als Anfangs-, End- und

;Inkremental-Wert stehen, weil dort überall arithmetische Ausdrücke

;zugelassen sind. Die eigentliche Zählvariable (nach dem Schlüsselwort

;FOR, links vom '='-Zeichen) muß jedoch eine R-Variable sein.

I1=1

PI1=0x55

RI1=123.456

II1=123

I12=1

I13=5

I14=1

For R0=I12,I13,I14

RR0=R0

IR0=R0

PR0=IR0

EndFor

;Verwendung von Integer-Variablen als Index eines Unterprogramm-Aufrufes

;Der indexierte UP-Aufruf ist sowohl mit I-Variablen als auch

;mit R-Variablen möglich.

R1=100

I1=200

Subr_R1 ;SubR100 wird aktiviert

Subr_I1 ;SubR200 wird aktiviert

;Verwendung als Ergebnisspeicher für Boole'sche Operationen

;Nachstehend wird eine I-Variable als "Merker" für das Ergebnis

;eines Boole'schen Ausdrucks verwendet.

;den Zustand von E1.1 und E1.2 "merken"
I0=E1.1|(E1.2<<1)

I1=0

I2=0

;den Zustand des Eingangs E1.1 "merken", entweder mit

I1=GetBit E1.1

;oder mit

I1=E1.1

;den Zustand des Ausgangs A1.1 "merken", entweder mit

I2=GetBit A1.1

;oder mit

I2=A1.1

;Kontrolle, ob mindestens ein Ausgangs gesetzt ist

I2= A1.1 | A1.2 | A1.3 | A1.4

If I2 == 1

Type A1.1 oder A1.2 oder A1.3 oder A1.4 gesetzt ...

else

Type A1.1==0

endif

;Diese beiden Zuweisungen liefern das gleiche Ergebnis:

I2= A1.1<<0 | A1.2<<1 | A1.3<<2 | A1.4<<3

I3= P0 & 0x0F


I (Adressbuchstabe)

I

Adressbuchstabe der Kreis-/Helixmittelpunktkoordinate

Adressbuchstabe einer Kreis- oder Helixmittelpunktkoordinate in der ersten Motion Control.

Siehe Adressbuchstaben I, J, K, ...


I1

Adressbuchstabe der Kreis-/Helixmittelpunktkoordinate

Adressbuchstabe einer Kreis- oder Helixmittelpunktkoordinate in der ersten Motion Control.

Siehe Adressbuchstaben I, J, K, ...


I2

Adressbuchstabe der Kreis-/Helixmittelpunktkoordinate

Adressbuchstabe einer Kreis- oder Helixmittelpunktkoordinate in der zweiten Motion Control.

Siehe Adressbuchstaben I, J, K, ...


IDOK, IDCANCEL, IDABORT, ...

Symbolische Konstanten für die Rückgabewerte eines Dialogs

Verschiedene Dialoge liefern bei ihrem Beenden einen Rückgabewert, welcher einer R-Variablen oder einer I-Variablen zugewiesen werden kann. Für die einfache programmatische Auswertung stehen symbolische Konstanten zur Verfügung.

Eine symbolische Konstante kann ein Wort sein aus der Menge

{IDOK, IDCANCEL, IDABORT, IDRETRY, IDIGNORE, IDYES, IDNO}

Diesen symbolischen Konstanten sind folgende Werte zugeordnet:

Symbolische Konstante | Wert
IDOK | 1
IDCANCEL | 2
IDABORT | 3
IDRETRY | 4
IDIGNORE | 5
IDYES | 6
IDNO | 7

Beispiel:

R11=MessageBox YESNO "Starten der Bearbeitung?"

;Nach dem Verlassen des Dialogs enthält R11 den

;Rückgabewert, welcher IDYES oder IDNO sein kann.


If ... Else ... EndIf

Bedingte Verzweigung im Programmablauf

Bedingte Verzweigung nach dem Muster:

IF Bedingung

<Anweisungen falls Bedingung wahr>

ELSE

<Anweisungen falls Bedingung unwahr>

ENDIF

Für die Auswertung der Bedingung können Kombinationen unter Zuhilfenahme der Operatoren für binäre und / oder logische Verknüpfungen (AND, OR, NOT, &, |, ^, ==, !=) erstellt werden.

Beispiele:

IF GETPORT E1 & 0x01 ;Bit 1 von E1 ist aktiv

SETBIT A1.8

ELSE

RESBIT A1.8

ENDIF

;Beispiel für einmalige Initialisierung eines Messwerts

#define FIRSTTIME R71 ;Flag zur Kennzeichnung des ersten Durchlaufs

ProgBegin

FIRSTTIME=1

...

...

If FIRSTTIME != 0

SubR_InitMesswert

FIRSTTIME=0

Else

EndIf

Siehe auch: Switch ... EndSwitch


In

Zugriff auf einen Eingang

Der Befehl In ist eine Kurzanweisung für den Zugriff auf einen Eingangskanal. Die Anweisung dient zum Einlesen des Wertes des einzelnen Bits b eines Eingangsports p bzw. des vollständigen 8-Bit-Wertes eines Eingangsports. Gültige Portnummern sind 1 ... Anzahl der verfügbaren Eingangsports, gültige Bitnummern sind 1 ... 8.

Zu beachten ist, daß die Eingänge bzw. Ausgänge in der Systemsteuerung sowohl als Ein-/Ausgabegerät als auch als logische Ports in der Ein-/Ausgangsverwaltung eingerichtet wurden.

Die Anweisung für den Zugriff auf das Eingangsbit kann in Kombination mit verschiedenen weiteren Befehlen für die Programmierung komplexer Anweisungen verwendet werden.

·Auswerten einer Bedingung für eine Verzweigung

If In1.2

MoveRel X20.0

EndIf

·Warten auf ein Signal

While NOT In1.2

Endwhile

·Warten solange ein Signal anliegt

While In1.5

Endwhile

·Bewegung ausführen bis Eingang 1 aktiv ist

MoveRel X20 In1.1

·Bewegung ausführen solange Eingang 1 aktiv ist

MoveRel X20 NOT In1.1

Indexierung mit Variablen

Die Verwendung von Indexvariablen für die Angabe von Port- und Bitnummer erlaubt einen flexiblen Zugriff auf die Eingangsports und -bits der Steuerung. Die Angabe von Eingangsport und -bit erfolgt nicht mehr nur statisch mit zuvor festgelegten Port- und Bitnummern, sondern über Indexvariablen:

WaitBit InIp.Ib

Ip ist eine I-Variable mit dem Index p (0...999), welche den Wert der zu verwendenden Portnummer enthält, Ib ist entsprechend eine I-Variable mit dem Index b (0...999) mit dem Wert der Bitnummer.

Die Anweisungsfolge

I201=2

I202=4

I203=1

WaitBit InI201.I202==I203

bewirkt also das warten bei der Anweisung "WaitBit" darauf, daß der Eingang E2.4 den Wert 1 annimmt.

Anstelle von I-Variablen können außerdem R-Variablen für die Aufnahme der Port- und Bitwerte verwendet werden.

Beispiel:

;Warten auf Bit E1.1, wenn der Eingang aktiv ist

;wird eine Fahrbewegung gestartet solange

;der Eingang aktiv bleibt

While NOT E1.1

Endwhile

MoveRel X100.0 NOT E1.1

Siehe auch: SetBit, ResBit, GetBit, SetPort, GetPort, SetAnalog, GetAnalog, SetPWM


Inch

Umschalten auf Maßeinheit Inch (Zoll) für translatorische Achsen

Festlegung der Maßeinheit INCH für die Übergabe von Koordinaten an translatorische Achsen. Der Befehl hat eine modale Wirkung, d.h. bei allen Befehlen, die als Parameter Koordinatenangaben für Linearachsen verwenden, wird ab sofort die Maßeinheit INCH verwendet.

Beispiel:

; Festlegen von Inch (Zoll) als Masseinheit

INCH

;Fährt an die absolute Position 10''

;bzw. 254 Millimeter

MoveAbs X10


INMOTION

Statusflag "Bewegung aktiv"

Statusflag zur Prüfung, ob eine Bewegung noch aktiv ist oder nicht. Diese Konstruktion kann in Verbindung mit dem Operator # zur Realisierung komplexer Bewegungsabläufe verwendet werden.

Beispiel:

;Die folgende Bewegung wird gestartet, der

;Programmablauf setzt sich nach Ende der

;Bewegung fort

MoveAbs X50.0

;Diese Bewegung wird gestartet, der

;Programmablauf setzt sich unmittelbar nach

;dem Beginn der Bewegung fort

#MoveRel X100.0

;Solange die Bewegung aktiv ist, wird geprueft

;ob Eingang A1.1 aktiv wird, wenn Ja wird

;die Bewegung angehalten und ein Ausgang gesetzt

WHILE INMOTION

IF GETPORT E1 & 0x01

MABORT

SETBIT A1.2

ENDIF

ENDWHILE

Siehe auch: MoveAbs, MoveRel, FastAbs, FastRel, MoveFrame, FastFrame, MStop, MStart, MAbort


ITFM

ITFM onoff

Inverse Time Feed Mode ein-/ausschalten

Die Betriebsart "Inverse Time Feed Mode" ist eine gebräuchliche Weise für eine Mehrachs-Simultanbearbeitung. In dieser Betriebsart werden keine Vorschubgeschwindigkeiten definiert, stattdessen wird die Zeit angegeben, die jedes einzelne Bewegungssegment dauern darf. Diese Zeiten werden für jede einzelne kombinierte Bewegung von translatorischen und rotatorischen Achsen separat durch das CAM-System berechnet.

Das bedeutet, daß in der Betriebsart "Inverse Time Feed Mode" in jeder Programmzeile ein F-Wort mit der jeweiligen Dauer der Bewegung stehen muß. Außerdem müssen die Programme auf die Kinematik der Maschine abgestimmt sein, z.B. muß bei einer 5-Achs-Bearbeitung Dreh- und Schwenkpunkt der rotatorischen Achsen sowie die Position der Dreh-/Schwenkeinheit im kartesischen Raum bekannt sein. Auch Größe und Lage des Werkstücks müssen berücksichtigt werden. In der Praxis bedeutet das, daß jedes Programm einzigartig ist und genau auf Maschine und Bearbeitungsfall abgestimmt sein muß.

Parameter des Befehls:

onoff

Argument für Ein-/Ausschalten der Betriebsart "Inverse Time Feed Mode".

on Inverse Time Feed Mode aktivieren
off Inverse Time Feed Mode deaktivieren

Beispiel:

ITFM On

...

...

ITFM Off


J

Adressbuchstabe der Kreis-/Helixmittelpunktkoordinate

Adressbuchstabe einer Kreis- oder Helixmittelpunktkoordinate in der ersten Motion Control.

Siehe Adressbuchstaben I, J, K, ...


J1

Adressbuchstabe der Kreis-/Helixmittelpunktkoordinate

Adressbuchstabe einer Kreis- oder Helixmittelpunktkoordinate in der ersten Motion Control.

Siehe Adressbuchstaben I, J, K, ...


J2

Adressbuchstabe der Kreis-/Helixmittelpunktkoordinate

Adressbuchstabe einer Kreis- oder Helixmittelpunktkoordinate in der zweiten Motion Control.

Siehe Adressbuchstaben I, J, K, ...


K

Adressbuchstabe der Kreis-/Helixmittelpunktkoordinate

Adressbuchstabe einer Kreis- oder Helixmittelpunktkoordinate in der ersten Motion Control.

Siehe Adressbuchstaben I, J, K, ...


K1

Adressbuchstabe der Kreis-/Helixmittelpunktkoordinate

Adressbuchstabe einer Kreis- oder Helixmittelpunktkoordinate in der ersten Motion Control.

Siehe Adressbuchstaben I, J, K, ...


K2

Adressbuchstabe der Kreis-/Helixmittelpunktkoordinate

Adressbuchstabe einer Kreis- oder Helixmittelpunktkoordinate in der zweiten Motion Control.

Siehe Adressbuchstaben I, J, K, ...


L

Lnr

Aufruf eines Unterprogrammes

Ruft das Unterprogramm mit der Unterprogrammnummer nr auf.

Beispiel:

%L1 (Deklaration des Unterprogrammes)

...

(Anweisungen im Unterprogramm...)

...

M17 (Ende des Unterprogramms)

%1 (Beginn des Hauptprogramms)

L1 (Aufruf des Unterprogramms mit der Nr. 1)

M30 (Ende des Hauptprogramms)


Lamp

Lamp onoff

Ein-/Ausschalten der Beleuchtung

Schaltet eine (allgemeine) Beleuchtungsvorrichtung oder Signalisierungseinrichtung ein oder aus.

Die Signalisierung für den Betrieb der Beleuchtungseinrichtung muß im entsprechenden Einstelldialog des Programms eingerichtet werden:

Einstellungen - Steuerung - Selektion: Ein-/Ausgabemodule - Schaltfläche: Erweiterte Einstellungen - Registerkarte: Peripherie

Verwendete Parameter:

ON Beleuchtung ein
OFF Beleuchtung aus

Beispiel:

LAMP ON

LAMP OFF


LN

LN w

Berechnung des natürlichen Logarithmus

Berechnet den natürlichen Logarithmus (Basis e) des übergebenen Arguments w.

Beispiel:

R22=Ln(R21) ; R-Variable als Argument

R22=Ln(1) ; Ergebnis ist 0

R22=Ln(2.718282) ; Ergebnis ist 1


LoadIVar

LoadIVar [Strn]["dateiname"] I0 I1 I2 ..... In

Laden von I-Variablen aus einer Datei

Mit diesem Befehl können eine oder mehrere I-Variablen (Integer-Variablen, ganzzahlige Variablen) aus der Variablendatei mit dem Namen "dateiname" in den Arbeitsspeicher des laufenden NC-Programmes geladen werden.

Parameter des Befehls:

Strn / "dateiname" | Angabe von Namen und Pfad der Variablendatei, aus der die I-Variablen geladen werden sollen. Der Dateiname kann entweder in einer String-Variablen mit dem Index n enthalten sein oder direkt als Zeichenkette angegeben werden. Bei der Angabe als Zeichenkette wird der Dateiname in Anführungszeichen eingeschlossen.
I0, I1, I2, ... In | Angabe der I-Variablen, für welche die Werte aus der Variablendatei gelesen werden sollen. Der Bereich der lad- und speicherbaren Variablen erstreckt sich von I0 bis zum maximal erlaubten Index für I-Variablen (999).

Beispiel:

;Aus der Datei test.var im Verzeichnis

;c:\cncworkbench\ncprog\dest werden die

;I-Variablen I21, I22, I23 und I24 gelesen

LoadIVar "c:\cncworkbench\ncprog\dest\test.var" I21 I22 I23 I24

Siehe auch: LoadIVarFile, SaveIVar, SaveIVarFile


LoadIVarFile

LoadIVarFile [Strn]["dateiname"]

Laden der Werte für die I-Variablen I0...I299 aus einer Datei

Dieser Befehl wird verwendet, um für alle I-Variablen im Bereich von I0 bis I299 neue Werte aus der Variablendatei mit dem Namen "dateiname" in den Arbeitsspeicher des laufenden NC-Programms zu laden.

Parameter des Befehls:

Strn / "dateiname"

Angabe von Namen und Pfad der Variablendatei, aus der die I-Variablen geladen werden sollen. Der Dateiname kann entweder in einer String-Variablen mit dem Index n enthalten sein oder direkt als Zeichenkette angegeben werden. Bei der Angabe als Zeichenkette wird der Dateiname in Anführungszeichen eingeschlossen.

Beispiel:

;Aus der Datei test.var im Verzeichnis

;c:\cncworkbench\ncprog\dest werden die

;Werte fuer die I-Variablen I0...I299 gelesen

LoadIVarFile "c:\cncworkbench\ncprog\dest\test.var"

Siehe auch: LoadIVar, SaveIVar, SaveIVarFile


LoadQVar

LoadQVar [Strn]["dateiname"] Q0 Q1 Q2 ..... Qn

Laden von Q-Variablen (Frame-Variablen) aus einer Datei

Dieser Befehl wird verwendet, um eine oder mehrere Q-Variablen (Frame-Variablen) aus der Variablendatei mit dem Namen "dateiname" in den Arbeitsspeicher des laufenden NC-Programmes zu laden.

Q-Variablen repräsentieren eine Struktur, bestehend aus maximal 12 Gleitkommazahlen für die Elemente X, Y, Z, A, B, C im Achssystem 1 bzw. X2, Y2, Z2, A2, B2, C2 im Achssystem 2.

Q-Variablen besitzen einen Variablenindex, welcher im Bereich von 0 bis 499 liegen kann. Das bedeutet, daß die Q-Variablen Q0 bis Q499 programmatisch verwendet werden können.

Parameter des Befehls:

Strn / "dateiname" | Angabe von Namen und Pfad der Variablendatei, aus der die Q-Variablen geladen werden sollen. Der Dateiname kann entweder in einer String-Variablen mit dem Index n enthalten sein oder direkt als Zeichenkette angegeben werden. Bei der Angabe als Zeichenkette wird der Dateiname in Anführungszeichen eingeschlossen.
Q0, Q1, Q2, ... Qn | Angabe der Q-Variablen mit Indizes im Bereich von 0 bis zum maximal erlaubten Index für Q-Variablen (499), für welche die Werte aus der Variablendatei gelesen werden sollen.

Beispiel:

;Aus der Datei qvars.var im Verzeichnis

;c:\cncworkbench\ncprog\dest werden die

;Variablen Q21, Q22, Q23 und Q24 gelesen

LoadQVar "c:\cncworkbench\ncprog\dest\qvars.var" Q21 Q22 Q23 Q24

Siehe auch: LoadQVar, LoadQVarFile, SaveQVar, SaveQVarFile


LoadQVarFile

LoadQVarFile [Strn]["dateiname"]

Laden der Werte für die Q-Variablen Q0...Q299 aus einer Datei

Dieser Befehl wird verwendet, um für alle Q-Variablen im Bereich von Q0 bis Q299 neue Werte aus der Variablendatei mit dem Namen "dateiname" in den Arbeitsspeicher des laufenden NC-Programmes zu laden.

Parameter des Befehls:

Strn / "dateiname"

Angabe von Namen und Pfad der Variablendatei, aus der die Q-Variablen geladen werden sollen. Der Dateiname kann entweder in einer String-Variablen mit dem Index n enthalten sein oder direkt als Zeichenkette angegeben werden. Bei der Angabe als Zeichenkette wird der Dateiname in Anführungszeichen eingeschlossen.

Beispiel:

;Aus der Datei qvars.var im Verzeichnis

;c:\cncworkbench\ncprog\dest werden die

;Werte fuer die Variablen Q0...Q299 gelesen

LoadQVarFile "c:\cncworkbench\ncprog\dest\qvars.var"

Siehe auch: LoadQVar, SaveQVar, SaveQVarFile


LoadRVar

LoadRVar [Strn]["dateiname"] R0 R1 R2 ..... Rn

Laden von R-Variablen aus einer Datei

Dieser Befehl wird verwendet, um eine oder mehrere R-Variablen aus der Variablendatei mit dem Namen "dateiname" in den Arbeitsspeicher des laufenden NC-Programmes zu laden.

Parameter des Befehls:

Strn / "dateiname" | Angabe von Namen und Pfad der Variablendatei, aus der die R-Variablen geladen werden sollen. Der Dateiname kann entweder in einer String-Variablen mit dem Index n enthalten sein oder direkt als Zeichenkette angegeben werden. Bei der Angabe als Zeichenkette wird der Dateiname in Anführungszeichen eingeschlossen.
R0, R1, R2, ... Rn | Angabe der R-Variablen, für welche die Werte aus der Variablendatei gelesen werden sollen. Der Bereich der lad- und speicherbaren Variablen erstreckt sich von R0 bis zum maximal erlaubten Index für R-Variablen (999).

Beispiel:

;Aus der Datei test.var im Verzeichnis

;c:\cncworkbench\ncprog\dest werden die

;Variablen R21, R22, R23 und R24 gelesen

LoadRVar "c:\cncworkbench\ncprog\dest\test.var" R21 R22 R23 R24

Siehe auch: LoadRVarFile, SaveRVar, SaveRVarFile


LoadRVarFile

LoadRVarFile [Strn]["dateiname"]

Laden der Werte für die R-Variablen R0...R299 aus einer Datei

Dieser Befehl wird verwendet, um für alle R-Variablen im Bereich von R0 bis R299 neue Werte aus der Variablendatei mit dem Namen "dateiname" in den Arbeitsspeicher des laufenden NC-Programmes zu laden.

Parameter des Befehls:

Strn / "dateiname"

Angabe von Namen und Pfad der Variablendatei, aus der die R-Variablen geladen werden sollen. Der Dateiname kann entweder in einer String-Variablen mit dem Index n enthalten sein oder direkt als Zeichenkette angegeben werden. Bei der Angabe als Zeichenkette wird der Dateiname in Anführungszeichen eingeschlossen.

Beispiel:

;Aus der Datei test.var im Verzeichnis

;c:\cncworkbench\ncprog\dest werden die

;Werte fuer die Variablen R0...R299 gelesen

LoadRVarFile "c:\cncworkbench\ncprog\dest\test.var"

Siehe auch: LoadRVar, SaveRVar, SaveRVarFile


LoadVarFile

LoadVarFile "dateiname"

Laden der Werte für die R-Variablen R0...R299 aus einer Datei

Dieser Befehl wird verwendet, um für alle R-Variablen im Bereich von R0 bis R299 neue Werte aus der Variablendatei mit dem Namen "dateiname" in den Arbeitsspeicher des laufenden NC-Programmes zu laden.

Hinweis: Dieser Befehl ist veraltet, alternativ soll der Befehl LoadRVarFile verwendet werden!


LockToolChange

LockToolChange onoff [module]

Sperren/Erlauben des Werkzeugwechselzyklus

Diese Anweisung wird verwendet, um einen Werkzeugwechselzyklus zu sperren oder freizugeben.

Gesperrt wird:

·jeglicher Hardware-WZW mit oder ohne WZ-Längenvermessung

·manueller Wechsel mit oder ohne WZ-Längenvermessung

Syntax:

LockToolChange On|Off [axis_system=n]

Parameter des Befehls:

onoff
On Der Werkzeugwechsel wird gesperrt und es erfolgt eine Fehlermeldung, wenn der Werkzeugwechsel-Befehl aufgerufen wird
Off Der Werkzeugwechsel wird wieder erlaubt

module

Optionaler Parameter zur Festlegung des Einzel-Werkzeugwechslermoduls, für das die Werkzeugwechselfunktionalität gesperrt werden soll. Mögliche Parameter: 1, 2.

Wenn dieser Parameter nicht angegeben wird, so wird die Sperrung/Freigabe für Werkzeugwechselsystem 1 ausgeführt.

Beispiel:

LockToolChange On

Delay 100

;Jetzt sollte / muss GetTool eine Warnung / einen Fehler liefern:

TchGetTool 3

LockToolChange Off

Siehe auch: TchCollet, TchCover, TchSelectToolStore, TchSlideToolMagazine, TchGetStatus, TchReset, TchGetTool, TchMeasureTool, TchGetToolRefPos, TchGetSignal, TchSetSignal


LOG

LOG w

Berechnen des dekadischen Logarithmus

Berechnet den dekadischen Logarithmus (Basis 10) des übergebenen Arguments w.

Beispiel:

R22=Log(R21) ; R-Variable als Argument

R22=Log(1) ; Ergebnis ist 0

R22=Log(10) ; Ergebnis ist 1


M0, M00

Programmende

Beendet die Ausgabe des laufenden NC-Programms. Es besteht nicht die Möglichkeit, das Programm fortzusetzen.

Beispiel:

%1

(Abbruch bei aktivem Bit 5 des Eingangs 1)

IF GETBIT E1.5

M0

ENDIF

....

M30


M1, M01

Programmhalt und Bedienerauswahl

Hält die Ausgabe des laufenden Programms an und fordert eine Auswahl des Bedieners an. Es besteht nun die Möglichkeit, das Programm fortzusetzen oder zu beenden.

Taste "Return" Weiter im Programm

Taste "ESC" Ende des Programms

Syntax:

M1 oder M01

Beispiel:

%1

(Abfrage auf Programmende oder Weiterführen

bei aktivem Bit 5 des Eingangs 1)

IF GETBIT E1.5

M1

ENDIF

....

M30


M2, M02

Beenden des CNC-Hauptprogramms ohne Ausschalten der Antriebsspindel

Kennzeichnung für das Ende eines NC-Programms. Im Gegensatz zur Anweisung M30 wird die Frässpindel nicht automatisch ausgeschaltet, sobald der Programmende-Befehl ausgeführt wird, sondern läuft mit der aktuell eingestellten Drehzahl weiter.

Syntax:

M2 oder M02

Beispiel:

%1 (Hauptprogramm Nr. 1)

G90 G01 X0 Y0 Z0

M2 (Programmende Programm Nr. 1, die Frässpindel bleibt eingeschaltet)

Siehe auch: M30, %


M3, M03

Antriebsspindel im Rechtslauf starten

Startet die Antriebsspindel im Rechtslauf.

Syntax:

M3 oder M03

Siehe auch: M4, M5


M4, M04

Antriebsspindel im Linkslauf starten

Startet die Antriebsspindel im Linkslauf.

Syntax:

M4 oder M04

Siehe auch: M3, M5


M5, M05

Ausschalten der Antriebsspindel

Schaltet die Antriebsspindel aus.

Syntax:

M5 oder M05

Siehe auch: M3, M4


M8, M08

Einschalten der Kühlmittelpumpe

Schaltet die Kühlmittelpumpe ein.

Die Signalisierung für den Betrieb der Kühlmittelpumpe muß im entsprechenden Einstelldialog des Programms eingerichtet werden:

Einstellungen - Steuerung - Selektion: Ein-/Ausgabemodule - Schaltfläche: Erweiterte Einstellungen - Registerkarte: Peripherie

Syntax:

M8 oder M08

Beispiel:

(Kühlmittelpumpe einschalten)

M8

(Wartezeit bis Kühlmittelfluss vorhanden)

(2 Sekunden warten...)

G04 2000

(Bearbeitung...)

G01 X...

G01 X... Y...

(Kühlmittelpumpe ausschalten)

M9

Siehe auch: M41, M42, M9


M9, M09

Ausschalten der Kühlmittelpumpe

Schaltet die Kühlmittelpumpe aus.

Die Signalisierung für den Betrieb der Kühlmittelpumpe muß im entsprechenden Einstelldialog des Programms eingerichtet werden:

Einstellungen - Steuerung - Selektion: Ein-/Ausgabemodule - Schaltfläche: Erweiterte Einstellungen - Registerkarte: Peripherie

Syntax:

M9 oder M09

Beispiel:

(Kühlmittelpumpe einschalten)

M8

(Wartezeit bis Kühlmittelfluss vorhanden)

(2 Sekunden warten...)

G04 2000

(Bearbeitung...)

G01 X...

G01 X... Y...

(Kühlmittelpumpe ausschalten)

M9

Siehe auch: M41, M42, M8


M17

Ende eines Unterprogramms

Beendet ein Unterprogramm und kehrt zurück an die Stelle des Hauptprogramms, an welcher der Aufruf des Unterprogramms erfolgte.

Beispiel:

%L31 (Deklaration des Unterprogrammes)

G91 G01 X20.0

G91 G01 X-20.0

M17 (Ende des Unterprogramms)

%1 (Beginn des Hauptprogramms)

L31 (Aufruf des Unterprogramms mit der Nr. 31)

M30 (Ende des Hauptprogramms)


M30

Ende des Hauptprogramms

Kennzeichnung für das Ende eines NC-Programms. Der Beginn des Hauptprogramms wird durch das Zeichen "%", gefolgt von der Programmnummer des DIN-Programms, gekennzeichnet.

Das Ende des Hauptprogramms wird durch M30 gekennzeichnet. Alle Anweisungen, die nach dem Befehl für das Programmende stehen, werden nicht bearbeitet.

Beispiel:

%1 (Hauptprogramm Nr. 1)

G90 G01 X0 Y0 Z0

M30 (Programmende Programm Nr. 1)

Siehe auch: M2, %


M41

Einschalten der Kühlmittelpumpe 2

Schaltet eine zweite Kühlmittelpumpe ein.

Die Signalisierung für den Betrieb der Kühlmittelpumpe 2 muß im entsprechenden Einstelldialog des Programms eingerichtet werden:

Einstellungen - Steuerung - Selektion: Ein-/Ausgabemodule - Schaltfläche: Erweiterte Einstellungen - Registerkarte: Peripherie

Beispiel:

(Zweite Kühlmittelpumpe einschalten)

M41

(Wartezeit bis Kühlmittelfluss vorhanden)

(2 Sekunden warten...)

G04 2000

(Bearbeitung...)

G01 X...

G01 X... Y...

(Zweite Kühlmittelpumpe ausschalten)

M42

Siehe auch: M42, M8, M9


M42

Ausschalten der Kühlmittelpumpe 2

Schaltet die zweite Kühlmittelpumpe aus.

Die Signalisierung für den Betrieb der Kühlmittelpumpe 2 muß im entsprechenden Einstelldialog des Programms eingerichtet werden:

Einstellungen - Steuerung - Selektion: Ein-/Ausgabemodule - Schaltfläche: Erweiterte Einstellungen - Registerkarte: Peripherie

Beispiel:

(Zweite Kühlmittelpumpe einschalten)

M41

(Wartezeit bis Kühlmittelfluss vorhanden)

(2 Sekunden warten...)

G04 2000

(Bearbeitung...)

G01 X...

G01 X... Y...

(Zweite Kühlmittelpumpe ausschalten)

M42

Siehe auch: M41, M8, M9


M43

Einschalten der Absaugung (1)

Schaltet die Absaugvorrichtung einer Maschine ein.

Die Signalisierung für den Betrieb der Absaugvorrichtung muß im entsprechenden Einstelldialog des Programms eingerichtet werden:

Einstellungen - Steuerung - Selektion: Ein-/Ausgabemodule - Schaltfläche: Erweiterte Einstellungen - Registerkarte: Peripherie

Beispiel:

(Programmbeginn)

%1000

(Absaugung einschalten)

M43

(Wartezeit bis volle Leistung)

(3 Sekunden warten...)

G04 3000

(Bearbeitung...)

G00 G90 X... Y...

G01 X...

G01 X... Y...

(Absaugung ausschalten)

M44

(Programmende)

M30

Siehe auch: M44, M45, M46


M44

Ausschalten der Absaugung (1)

Schaltet die Absaugvorrichtung einer Maschine aus.

Die Signalisierung für den Betrieb der Absaugvorrichtung muß im entsprechenden Einstelldialog des Programms eingerichtet werden:

Einstellungen - Steuerung - Selektion: Ein-/Ausgabemodule - Schaltfläche: Erweiterte Einstellungen - Registerkarte: Peripherie

Beispiel:

(Programmbeginn)

%1000

(Absaugung einschalten)

M43

(Wartezeit bis volle Leistung)

(3 Sekunden warten...)

G04 3000

(Bearbeitung...)

G00 G90 X... Y...

G01 X...

G01 X... Y...

(Absaugung ausschalten)

M44

(Programmende)

M30

Siehe auch: M43, M45, M46


M45

Einschalten der Absaugung (2)

Schaltet die optionale zweite Absaugvorrichtung einer Maschine ein.

Die Signalisierung für den Betrieb der zweiten Absaugvorrichtung muß im entsprechenden Einstelldialog des Programms eingerichtet werden:

Einstellungen - Steuerung - Selektion: Ein-/Ausgabemodule - Schaltfläche: Erweiterte Einstellungen - Registerkarte: Peripherie

Beispiel:

(Programmbeginn)

%1000

(Absaugung 2 einschalten)

M45

(Wartezeit bis volle Leistung)

(3 Sekunden warten...)

G04 3000

(Bearbeitung...)

G00 G90 X... Y...

G01 X...

G01 X... Y...

(Zweite Absaugung ausschalten)

M46

(Programmende)

M30

Siehe auch: M43, M44, M46


M46

Ausschalten der Absaugung (2)

Schaltet die optionale zweite Absaugvorrichtung einer Maschine aus.

Die Signalisierung für den Betrieb der zweiten Absaugvorrichtung muß im entsprechenden Einstelldialog des Programms eingerichtet werden:

Einstellungen - Steuerung - Selektion: Ein-/Ausgabemodule - Schaltfläche: Erweiterte Einstellungen - Registerkarte: Peripherie

Beispiel:

(Programmbeginn)

%1000

(Absaugung 2 einschalten)

M45

(Wartezeit bis volle Leistung)

(3 Sekunden warten...)

G04 3000

(Bearbeitung...)

G00 G90 X... Y...

G01 X...

G01 X... Y...

(Zweite Absaugung ausschalten)

M46

(Programmende)

M30

Siehe auch: M43, M44, M45


Mpbv

Mpbw

Setzen oder Löschen eines Bits eines Ausgangsports

Setzen oder Löschen eines einzelnen Bits eines Ausgabeports. Folgende Parameter werden benötigt:

p Portnummer (1...n)

b Bitnummer (1...8)

w Wertigkeit, 0 oder 1

Beispiel:

%1 (Beginn des Hauptprogramms)

M131 (Setze Port 1, Bit 3)

M211 (Setze Port 2, Bit 1)

G90 G01 X0 Y0 Z0

M130 (Lösche Port 1, Bit 3)

M30 (Programmende)


MAbort

Abbruch einer Verfahrbewegung

Dieser Befehl bricht eine aktive Verfahrbewegung ab. Der Befehl kann in Verbindung mit dem Operator # und dem Statusflag INMOTION zur Realisierung komplexer Bewegungen verwendet werden.

Beispiel:

;Die folgende Bewegung wird gestartet, der

;Programmablauf setzt sich nach Ende der

;Bewegung fort

MoveAbs X50.0

;Diese Bewegung wird gestartet, der

;Programmablauf setzt sich unmittelbar nach

;dem Beginn der Bewegung fort

#MoveRel X100.0

;Solange die Bewegung aktiv ist, wird geprueft

;ob Eingang E1.1 aktiv wird, wenn Ja wird

;die Bewegung abgebrochen

WHILE INMOTION

IF GetPort E1 & 0x01

MABORT

ENDIF

ENDWHILE


MakePath

MakePath Str_Path Str_Drive Str_Dir Str_FileName Str_Ext

Einen vollständigen Dateipfad aus den Einzelkomponenten erstellen

Der Befehl MakePath wird verwendet, um eine vollstaendige Pfadzeichenkette aus einzelnen Komponenten zu erstellen. Diese einzelnen Komponenten sind der Laufwerksbezeichner, der absolute Pfad, der Dateiname sowie die Dateinamenerweiterung.

Syntax:

MakePath str_path str_drive str_dir str_filename str_ext

Parameter des Befehls:

str_path | Eine Str-Variable (String-Variable, Zeichenkettenvariable), welche zur Aufnahme des erstellten vollständigen Dateipfades dient.
str_drive | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) welche die Komponente Laufwerk des zusammenzusetzenden vollständigen Dateipfades enthält.
str_drive | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) welche den absoluten Pfad (ohne Laufwerkbezeichner) des zusammenzusetzenden vollständigen Dateipfades enthält.
str_filename | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) welche die Komponente Dateinamen (ohne Extension) des zusammenzusetzenden vollständigen Dateipfades enthält.
str_ext | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) welche die Komponente Dateinamenerweiterung (Extension) des zusammenzusetzenden vollständigen Dateipfades enthält.

Beispiel:

(1)

;Einen festen vollstaendigen Dateipfad verwenden

Str11="C:\NCProg\Normal\Kalibrierteil1.NCP"

;Den Dateipfad zerlegen

SplitPath Str11 Str12 Str13 Str14 Str15

;In den Variablen stehen jetzt diese Werte

;Str12="C:"

;Str13="\NCProg\Normal\"

;Str14="Kalibrierteil1"

;Str15="NCP"

;Aendern der Dateinamenerweiterung

Str15="ISO"

MakePath Str11 Str12 Str13 Str14 Str15

;Der neue Dateipfad lautet nun

;C:\NCProg\Normal\Kalibrierteil1.ISO"

(2)

Str1="C:\NCProg\WorkFiles"

Str2="Auswahl der Bearbeitungsdatei"

Str3="ISO-Dateien|*.ISO|Alle Dateien|*.*||"

Str11=""

;Dateiauswahldialog aufrufen...

R1=FileDialog OpenFileDialog=1 Result=Str4 DefaultPath=Str1 Title=Str2 Filter=Str3

;Rueckgabewerte fuer den weiteren Verlauf auswerten

;Anwender hat "Oeffnen" gewaehlt..

If R1==1

;Den Dateipfad zerlegen

SplitPath Str11 Str12 Str13 Str14 Str15

;Die Dateinamenerweiterung aendern

Str15="LOG"

;Den vollstaendigen Dateipfad einer LOG-Datei erzeugen

MakePath Str11 Str12 Str13 Str14 Str15

;Oder:

;Alternativer Aufruf mit dem gleichen Resultat

MakePath Str11 Str12 Str13 Str14 "LOG"

;Oder:

;Alternativer Aufruf: Anderes Laufwerk und Pfad

MakePath Str11 "D:" "\LogFiles\" Str14 "LOG"

EndIf

Siehe auch: SplitPath, CopyFile, MoveFile, DeleteFile, FileDialog, FileExists, GetFileType


ManualMove

Manuelles Verfahren der Achsen der Maschine

Dieser Befehl öffnet den Dialog für das manuelle Verfahren der Achsen der Maschine. Mit Hilfe dieses Dialogs können die Achsen an eine beliebige Position im Arbeitsraum der Maschine gefahren werden. Der Rückgabecode des Dialogs kann für weitere Auswertungen im nachfolgenden Programmablauf an eine R-Variable zugewiesen werden. Mögliche Rückgabewerte sind IDOK und IDCANCEL.

Beispiel:

(1)

;Dialog fuer manuelles Fahren der Achsen oeffnen

;anschliessend Fraesen eines Langlochs

ManualMove

MoveRel Z-10

MoveRel Y12.5

MoveRel Z10

(2)

;Dialog fuer manuelles Fahren der Achsen oeffnen

;anschliessend Fraesen eines Langlochs, wenn der

;Dialog mit "OK" beendet wurde

R1=ManualMove

Switch R1

Case IDOK:

Type "Fraesen des Langlochs"

MoveRel Z-10

MoveRel Y12.5

MoveRel Z10

EndCase

Case IDCANCEL:

Type "Abgebrochen..."

EndCase

EndSwitch

Siehe auch: WpTeach


MessageBox

MessageBox <param> "Meldungstext"

Anzeige einer Meldung in einem Dialog

Ausgabe eines Hinweistextes in einer Dialogbox. Es können zusätzliche Parameter für die Gestaltung der Messagebox verwendet werden:

Verwendete Parameter:

INFO Anzeige mit einem Informationssymbol
WARNING Anzeige mit einem Warnungssymbol
ERROR Anzeige mit einem Fehlersymbol
OK Anzeige des Buttons OK
OKCANCEL Anzeige der Buttons OK und Abbrechen
ABORTRETRYIGNORE Buttons Abbrechen, Wiederholen, Ignorieren
RETRYCANCEL Buttons Wiederholen, Abbrechen
YESNO Buttons Ja, Nein
YESNOCANCEL Buttons Ja, Nein, Abbrechen

Rückgabewerte:

IDOK 1
IDCANCEL 2
IDABORT 3
IDRETRY 4
IDIGNORE 5
IDYES 6
IDNO 7

Beispiele:

;Meldung mit festem Text

MessageBox INFO "Achtung: START drücken!"

;Meldung mit festem Text, Buttons "Ja" und "Nein"

;Rueckgabewert wird an eine R-Variable uebergeben

R5=MessageBox YESNO "Bearbeitungsprogramms starten?"

;Meldung mit variablem Text,

;Button "OK" und Symbol "Info" (Default)

;Rueckgabewert wird an eine R-Variable uebergeben

Str1="Die Bearbeitung wurde "

Str2="erfolgreich durchgeführt"

Str3="nicht erfolgreich durchgeführt"

If R1==0

Str10=Str1+Str3

Else

Str10=Str1+Str2

EndIf

R5=MessageBox Str10

;Anzeige des Wertes einer R-Variablen:

;Ueber das Steuerzeichen "%" wird auf den Wert

;von R1 zugegriffen: %R1%

R1=12.5

Str10="Der Wert der R-Variablen R1 ist: %R1%"

MessageBox INFO Str10

;Eine Endlosschleife, Abbruch erfolgt wenn bei der

;MessageBox "Nein" gewaehlt wird

While 1==1

...

...

R1=MessageBox INFO YESNO "Weiter?"

If R1==7 ;Rueckgabewert bei "Nein"

ProgEnd

EndIf

EndWhile

Siehe auch: XType, %In%, %Pn%, %Rn%, %Sn%


MEnableSwLimitSwitch

MEnableSwLimitSwitch axiscode enabledisable

Enable/Disable der Software-Endschalter

Alias für den Befehl MEnableSWLS.

Siehe: MEnableSWLS


MEnableSWLS

Enable/Disable der Software-Endschalter

Mittels diesem Befehl werden die Software-Endschalter der Steuerung komplett oder achsenweise aktiviert bzw. deaktiviert.

Eine weitere erlaubte Schreibweise für diesen Befehl ist der Ausdruck MEnableSwLimitSwitch.

Verwendete Parameter:

axiscode | Ein Integerwert oder eine I-Variable, deren Wert ein Bitmuster für die Achsen enthält, deren Softwareendschalter aktiviert oder deaktiviert werden sollen. Wertigkeit der Bits: Bit 1: Achse X Bit 2: Achse Y Bit 3: Achse Z Bit 4: Achse A Bit 5: Achse B Bit 6: Achse C
enabledisable | Ein Integerwert oder eine I-Variable, deren Wert ein Bitmuster für den Aktivierungszustand des jeweiligen Software-Endschalters enthält. Bit 1: 0/1 Software-Endschalter Achse X deaktiviert/aktiviert Bit 2: 0/1 Software-Endschalter Achse Y deaktiviert/aktiviert Bit 3: 0/1 Software-Endschalter Achse Z deaktiviert/aktiviert Bit 4: 0/1 Software-Endschalter Achse A deaktiviert/aktiviert Bit 5: 0/1 Software-Endschalter Achse B deaktiviert/aktiviert Bit 6: 0/1 Software-Endschalter Achse C deaktiviert/aktiviert

Beispiel:

I1=0x3F ;=00111111 binaer

I2=0x0F ;=00001111 binaer

;I1: Auswahl der Achsen X, Y, Z, A, B und C

;I2: Enable fuer Achsen X, Y, Z und A,

;disable fuer die Achsen B und C

MEnableSWLS I1 I2

;...

;Disable Software-Endschalter fuer alle

;Achsen von X bis C

MEnableSWLimitSwitch 0x3F 0x00

Siehe: GetStateSWLS, MEnableSwLimitSwitch


Metric

Umschalten auf Maßeinheit Millimeter für translatorische Achsen

Dieser Befehl dient zur Festlegung der Maßeinheit MILLIMETER für die Übergabe von Koordinaten an translatorische Achsen. Der Befehl wirkt modal, d.h. bei allen Befehlen, die als Parameter Koordinatenangaben für Linearachsen verwenden, wird ab sofort die Maßeinheit MILLIMETER verwendet.

Beispiel:

;Festlegen von Millimeter als Masseinheit

METRIC

;Fährt an die absolute Position 10.0 Millimeter

MOVEABS X10

Siehe auch: FeedPerSec


Modulo

Operator für die Modulo-Division

Arithmetischer Operator für die Modulo-Division. Die Modulo-Division ist eine mathematische Funktion, die den Rest aus der Division zweier ganzer Zahlen angibt.

Beispiel:

R11 = 9 MODULO 4

; R11 hat nach der MODULO-Division den Wert 1, denn

; 9 : 4 = 2, Rest 1


MoveAbs

MoveAbs [Seq=...] X... Y... Z... F... [NOT ] [Ep.b]

Lineare Bewegung an eine Absolut-Zielposition

Show/Hide Hidden Text

Lineare Bewegung an eine Zielposition unter Verwendung der aktuell gesetzten Normalgeschwindigkeit (siehe Befehl VEL oder Operator F).

Verwendete Parameter:

X Zielkoordinate der Achse X

Y Zielkoordinate der Achse Y

Z Zielkoordinate der Achse Z

A Zielkoordinate der Achse A

B Zielkoordinate der Achse B

C Zielkoordinate der Achse C

U Zielkoordinate der Achse U

V Zielkoordinate der Achse V

W Zielkoordinate der Achse W

F Angabe der Vorschubgeschwindigkeit für die Bewegung

Seq Angabe der Bewegungsreihenfolge der Achsen

Ep.b Eingang, welcher als Abbruchbedingung für die Bewegung ausgewertet wird

p Portnummer des Eingangs

b Bitnummer des Eingangs

Die Angabe der Koordinaten erfolgt in Absolutwerten, welche sich auf den gesetzten Werkstücknullpunkt beziehen. Falls kein Werkstücknullpunkt aktiv ist, bezieht sich die Zielposition auf den Maschinennullpunkt. Der Maschinennullpunkt ist die Position, die durch die Referenzfahrt der Maschine ermittelt wird.

Beispiel:

;Fahren mit v=5 mm/s an Zielposition

Vel 5.0

MoveAbs X20.5 Y12.28 Z-21.32

;Angabe der Geschwindigkeit mit dem Befehl F

MoveAbs X20.5 Y12.28 Z-21.32 F5.0

;Ablage der Zielkoordinaten in R-Variablen

R22=R25-5.25

MoveAbs XR22 Y10

;Dynamische Berechnung der Zielkoordinaten

;und Ablage in R-Variablen

R22=R25-R26

MoveAbs YR22 F10.0

Festlegung der Bewegungsreihenfolge der Achsen

Durch die Option "SEQ" kann die Reihenfolge festgelegt werden, in der die beteiligten Achsen einer Bewegung an ihre Zielpositionen fahren. Die Angabe der Verfahrreihenfolge ist sehr nützlich, wenn z.B. die Gefahr von Kollisionen mit Aufbauten auf einem Maschinentisch besteht.

Gültige Parameter für die Option "Seq" sind:

·"Auto", "Direct", "X", "Y", "Z", "A", "B", "C", "U", "V", "W" sowie die Kombinationen hieraus ("XY,Z", "Z,XY", "Z,Auto", "A,Z,XY", ...)

Mehr....

Die Option "SEQ" kann für alle Geradenbefehle verwendet werden:

G00, FastAbs, FastRel,

G01, MoveAbs, MoveRel,

G10, FastFrame,

G11, MoveFrame

Nach Seq=... kann eine String-Konstante (Zeichenkette, eingeschlossen in Anführungszeichen " ) oder eine Str-Variable (Str1 ... Str999) folgen.

Folgende Anweisungen sind möglich:

Geradenbefehl SEQ="Auto" X... Y... Z...

Die Z-Achse wird sicher verfahren. Bezogen auf ein kartesisches Koordinatensystem bedeutet das:

·Wenn die aktuelle Position der Z-Achse "tiefer" ist als die Zielposition Z, wird zunächst die Z-Achse, anschließend die Achsen X und Y verfahren

·Wenn die aktuelle Position der Z-Achse "höher" ist als die Zielposition Z, werden zunächst die X- und Y-Achse verfahren, anschließend wird die Achse Z zugestellt

Geradenbefehl SEQ="Direct" X... Y... Z...

Alle Achsen werden synchron verfahren. Dies ist das Standard-Verhalten eines Bewegungsbefehls. Bei Angabe dieser Option verhalten sich die Achsen also so als ob die Option "SEQ" nicht angegeben wäre.

Geradenbefehl SEQ="Y,Z,X" X... Y... Z...

Die Reihenfolge des Achsfahrens erfolgt wie angegeben: Zuerst wird die Y-Achse verfahren, dann die Achse Z, zuletzt die Achse X. Falls der Befehl weitere Zielkoordinaten für beteiligte Achsen enthält, werden diese ignoriert. Verfahren werden nur die Achsen, die in der Anfahrreihenfolge angegeben werden. Gültige Trennzeichen sind ",", ";", " ".

Geradenbefehl SEQ="Z,XY" X... Y... Z...

Werden 2 oder mehr Achsen in einem Block angegeben, so verfahren diese Achsen synchron. Hier wird zunächst die Achse Z verfahren, anschließend fahren X und Y synchron an ihre Zielpositionen.

Str5="Auto"

Geradenbefehl SEQ=Str5 X... Y...

Die Zeichenkettenvariable Str5 enthält die Reihenfolge für das Fahren der Achsen. Vor Verwendung dieses Befehls muß die Variable mit einer entsprechenden Zeichenkette initialisiert werden.

Geradenbefehl SEQ FramePosition

Die Bewegungsreihenfolge erfolgt wie in der Framedefinition festgelegt. Diese Festlegung erfolgt in den Dialogen für

·das Einstellen und Verwalten von Maschinenpositionen

·das Einstellen und Verwalten von Werkstücknullpunkten

·das Einstellen und Verwalten von spezifischen Frame-Dateien für PAL-Quellprogramme

Beispiel:

(1)

;Fahren mit v=5 mm/s an Zielposition

Vel 5.0

MoveAbs Seq="Auto" X20.5 Y12.28 Z-21.32

(2)

;Zuweisung der Bewegungssequenz-Steuerzeichenkette

Str1 = "Auto"

Str2 = "Direct"

Str3 = "X,Y,Z"

;Angabe der Fahrgeschwindigkeit: Normalgeschwindigkeit 100mm/sec

Vel 100

;Fahren an Zielposition, Modus ist "Z sicher fahren"

MoveAbs Seq=Str1 X10 Y20 Z30

;Fahren an Position (0,0,0), alle Achsen synchron

MoveAbs X0 Y0 Z0

;Fahren an Zielposition, Modus ist "alle Achsen gleichzeitig"

;Geschwindigkeit (Angabe mit "F") ist 200 mm/s

MoveAbs Seq=Str2 X10 Y20 Z30 F200

;Bewegungen zurück, diesmal in der Reihenfolge

;erst X, dann Y, dann Z

MoveAbs Seq=Str3 X0 Y0 Z0

(3)

;Verwendung der Bewegungssequenz-Steuerzeichenkette

;einer Frame-Variablen

;Die Bewegungsreihenfolge ist wie in der Framedefinition festgelegt

FastFrame SEQ StartPos2

;Wird die Option "SEQ" nicht angegeben, werden alle Achsen

;synchron verfahren

FastFrame StartPos2

Fahren bis Wechsel an einem Eingang

Optional kann in einem Bewegungsbefehl für eine Absolutbewegung ein Eingang angegeben werden, der für den bedingten Abbruch einer Fahrbewegung ausgewertet werden kann. Die Angabe des Eingangs erfolgt nach der üblichen Syntax: Ep.b, wobei "p" die Portnummer (im Bereich 1...Anzahl der Ports) und b die Bitnummer (1...8) ist. Soll auf negative Logik geprüft werden, muß der Operator "NOT" vorangestellt werden.

Mehr...

Bei der Auswertung des Eingangs wird folgendermaßen verfahren:

Positive Logik, Verwendung des Operators Ep.b

·Die Bewegung wird gestartet

·Solange der Eingang Ep.b inaktiv ist (logische 0 liegt an), wird die Fahrbewegung fortgesetzt

·Sobald der Eingang aktiv wird (logische 1 liegt an), wird die Bewegung abgebrochen

Negative Logik, Verwendung des Operators NOT Ep.b

·Die Bewegung wird gestartet

·Solange der Eingang aktiv ist (logische 1 liegt an), wird die Fahrbewegung fortgesetzt

·Sobald der Eingang inaktiv wird (logische 0 liegt an), wird die Bewegung abgebrochen

Beispiel:

;Eine Bewegung wird gestartet, diese soll

;abgebrochen werden sobald Eingang E2.5

;auf den logischen Wert 1 wechselt

Vel 10.0

MoveAbs X100 E2.5

;Eine Bewegung wird gestartet, diese soll

;abgebrochen werden sobald Eingang E2.1

;auf den logischen Wert 0 wechselt

Vel 10.0

MoveAbs X100 NOT E2.1

;Referenzieren auf einen Schalter

;Eine Bewegung wird schnell gestartet, diese

;soll abgebrochen werden sobald Eingang E1.4

;von 1 auf 0 wechselt, anschliessend wird

;langsam in Gegenrichtung gefahren bis der

;Eingang wieder den logischen Wert 1 annimmt

Vel 50.0

MoveAbs X100 NOT E1.4

Vel 1.0

MoveAbs X0 E1.4

Siehe auch: MoveRel, FastAbs, FastRel, MoveFrame, FastFrame, InMotion, MStop, MStart, MAbort, Vel, F


MoveAbsStopOnInput

MoveAbsStopOnInput X... Y... Z... Ep.b==0/1 [Fvel] [INPUT_AXIS_...] [STOP_...] [USE_GLITCH_FILTER] [LATCH_ONLY]

Lineare Bewegung an eine Absolut-Zielposition, Abbruch bei Portereignis

Show/Hide Hidden Text

Startet eine Bewegung an eine absolute Zielposition. Falls während der Bewegung das angegebene Portereignis (ein Pegelwechsel am Eingang von 0 auf 1 oder von 1 auf 0) eintritt, wird die Bewegung sofort abgebrochen und die aktuelle Position im Moment des Eintretens des Portereignisses gespeichert.

Zu beachten ist, daß diese Funktion zwar einheitlich in Verbindung mit verschiedenen Steuerungen verwendet werden kann, die erzielten Ergebnisse in ihrer Genauigkeit jedoch Unterschiede aufweisen können. Die Ursache hierfür liegt darin, daß die in den verschiedenen Steuerungen erzielten Zykluszeiten zur Überwachung des Eingangs während der Bewegung unterschiedlich sind.

Steuerung | Typ des Eingangs | Überwachung des Eingangs | Erreichbare Genauigkeit
Schrittmotorsteuerung IMC (IMC4, IMC-M/P, S8...) | Digitaler Eingang des Controllers | in der Firmware des Controllers | Gut, die Genauigkeit des Ergebnisses ist jedoch von der Spindelsteigung und der Schrittauflösung des Motors abhängig
CAN-Bus Steuerung | Hinweis bei Verwendung der isel-CAN-Steuerung Für die Nutzung der Funktion MoveAbsStopOnInput ist eine Endstufe mit einer Firmware-Version ab. V1.60.00.90 erforderlich. Weiterhin müssen alle im Achssystem verwendeten Endstufen die gleiche Firmware-Version haben.
 | Universal-Eingang auf der Motorendstufe (IMD20 oder IMD40), welche die Bewegung ausführt | in der Firmware der Endstufe | Hoch, evtl. muss in stark gestörtem Umfeld der Filter verwendet werden, was die Genauigkeit etwas reduzieren würde
 | Universal-Eingang auf einer anderen Motorendstufe (IMD20 oder IMD40) als derjenigen, welche die Bewegung ausführt | in der Firmware beider Endstufen | Gut, die Genauigkeit wird jedoch durch die Laufzeiten der CAN-Bus-Kommunikation zwischen den beiden Endstufen etwas reduziert
 | Digitaler Eingang auf einem isel CAN-IO-Modul | in der Firmware des IO-Moduls und der Firmware der Endstufe, welche die Bewegung ausführt | Gut, die Genauigkeit wird jedoch durch die Laufzeiten der CAN-Bus-Kommunikation zwischen Endstufe und IO-Modul verringert
Steuerung Logosol | Hinweis bei Verwendung einer Logosol-Steuerung Bei der Logosol-Steuerung kann die Erfassung eines Ereignisses an einem Eingang nur auf der Endstufe ausgeführt werden, welche aktuell die Bewegung im aktiven Latch-Modus ausführt.
 | Digitaler Eingang auf der Endstufe bzw. dem Controller-Board | In der Firmware der Endstufe | Hoch

Verwendete Parameter:

X.., Y.., Z..,
...,
V.., W..

Angabe der Zielkoordinaten der Achse X, Y, Z, ...

Die Angabe mehrerer Zielkoordinaten ist zwar bei einigen Steuerungstypen möglich, jedoch sollte bei der Verwendung dieser Funktion mit einem Messtaster im Hinblick auf eine höchstmögliche Genauigkeit des Ergebnisses eine Messfahrt nur mit einer Einzelachse durchgeführt werden.

Ep.b==0/1

Angabe von Eingang und Abbruchbedingung

p Portnummer des Eingangs
b Bitnummer des Eingangs
0/1 Logischer Eingangspegel, welcher zum Abbruch der Bewegung führen soll

Angabe von Port- und Bitnummer

Port- und Bitnummern, die im Rahmen dieses Befehls angegeben werden, beziehen sich immer auf lokale Eingänge, die sich auf einem Controller, einer Endstufe oder einem Ein-/Ausgabemodul befinden. Port- und Bitnummern sind im Gegensatz zu den Port- und Bitnummern der Ein-/Ausgabeverwaltung in ProNC oder Remote Bezeichner für lokale Eingänge. Aus Gründen der Vereinfachung wurden diese Bezeichner analog zu den Eingängen der Ein-/Ausgabeverwaltung aufgebaut. Das führt dazu, daß ein Eingang der Ein-/Ausgabeverwaltung die gleiche Benennung wie ein hier verwendeter Bezeichner haben kann, diese beiden Eingänge sind jedoch nicht identisch!

In der nachstehenden Übersicht sind die unterschiedlichen Steuerungen und die Eingänge aufgeführt, die bei Verwendung der Funktion MoveAbsStopOnInput zur Verfügung stehen:

Steuerung | Typ/Lage des Eingangs | Mögliche Eingangsbezeichnungen
Schrittmotorsteuerung IMC (IMC4, IM-M/P, S8...) | Digitaler Eingang des Controllers | E1.1 ... E1.8 Es kann einer der User-Eingänge der Steuerung verwendet werden. Falls das lokale Eingangsport E1 als Eingangsport E1 in der Ein-/Ausgabeverwaltung konfiguriert wurde, wären hier die beiden Bezeichner identisch.
CAN-Bus-Steuerung | Universal-Eingang auf der Endstufe, welche die Bewegung ausführt | Der Universal-Eingang hat den festen Bezeichner E1.5. Zusätzlich ist die Angabe der Endstufe erforderlich, deren Eingang für die Überwachung des Signals verwendet werden soll (INPUT_AXIS_X, INPUT_AXIS_Y, INPUT_AXIS_Z)
 | Universal-Eingang auf einer anderen Endstufe als derjenigen, welche die Bewegung ausführt | Der Universal-Eingang hat den festen Bezeichner E1.5. Weiterhin ist die Angabe der Endstufe erforderlich, deren Eingang für die Überwachung des Signals verwendet werden soll (INPUT_AXIS_X, INPUT_AXIS_Y, INPUT_AXIS_Z)
 | Digitaler Eingang eines CAN-IO-Moduls | Es kann nur ein CAN-IO-Modul für die Verwendung mit der Funktion MoveAbsStopOnInput konfiguriert werden. Diese grundlegende Konfiguration findet mit Hilfe der Einstellsoftware der CAN-Steuerung statt. Nach der Konfiguration können die Bezeichner E1.1 ... E1.8 für die Angabe des Eingangs verwendet werden. Zusätzlich ist noch durch den Parameter INPUT_IO festzulegen, daß der Eingang durch das CAN-IO-Modul bereitgestellt wird.
Steuerung Logosol | Digitaler Eingang auf der Steuerungsbaugruppe | Die Logosol-Steuerungsbaugruppe bzw. die Endstufen des Typs LS174 stellen intern die Eingänge Input0 bis Input15 zur Verfügung, von denen die beiden Eingänge Input10 und Input11 für die Verwendung mit der Funktion MoveAbsStopOnInput vorgesehen sind. Da die Eingangsports der Endstufe auf virtuelle 8-Bit-Eingangsports gemappt werden, sind die Bezeichner demzufolge E2.3 und E2.4. Input10 entspricht E2.3 Input11 entspricht E2.4

F...

Angabe der Vorschubgeschwindigkeit für die Bewegung. Zu beachten ist, daß die Angabe der Geschwindigkeit nach den Achsbezeichnern und der Angabe des Eingangsports und vor den weiteren Optionen stehen soll.

INPUT_AXIS_X, INPUT_AXIS_Y,...

INPUT_AXIS_C

Parameter bei Verwendung einer Schrittmotor-Steuerung

Bei Schrittmotorsteuerungen ist der Parameter, welche die Achse spezifiziert, aus Kompatibilitätsgründen anzugeben.

Parameter bei Verwendung der isel-CAN-Steuerung

Der Bezeichner für den zu überwachenden Eingang hat den festen Wert E1.5. Mittels dieses zusätzlichen Parameters kann die Endstufe angegeben werden, deren Eingang für die Überwachung des Signals verwendet werden soll (INPUT_AXIS_X, INPUT_AXIS_Y, INPUT_AXIS_Z, INPUT_AXIS_A, INPUT_AXIS_B, INPUT_AXIS_C)

Parameter bei Verwendung der Logosol-Steuerung

Bei der Logosol-Steuerung wird ebenfalls die Achse, an deren Eingang der Signalgeber angeschlossen ist, als zusätzlicher Parameter benötigt. Im allgemeinen sollte die Achse angegeben werden, welche für die Messfahrt verwendet wird.

INPUT_IO

Optionaler Parameter bei Verwendung der isel-CAN-Steuerung

Bei Verwendung der CAN-Steuerung kann ein CAN-IO-Modul für die Verwendung mit der Funktion MoveAbsStopOnInput konfiguriert werden. Diese grundlegende Konfiguration findet mit Hilfe der Einstellsoftware der CAN-Steuerung statt.

Der Parameter INPUT_IO legt fest, daß ein Eingang dieses CAN-IO-Moduls überwacht werden soll. Die Bezeichner E1.1 ... E1.8 können nun für die Angabe des Eingangskanals verwendet werden.

STOP_SMOOTH

Dieser Parameter legt fest, daß die Bewegung nach Eintreten des Portereignisses mit der normalen Bremsrampe beendet werden soll.

STOP_ABRUPT

Dieser Parameter legt fest, daß die Bewegung nach Eintreten des erwarteten Portereignisses mit der maximalen Verzögerung beendet werden soll.

USE_GLITCH_FILTER

Optionaler Parameter bei Verwendung der isel-CAN-Steuerung

Bei Verwendung der CAN-Steuerung ist es möglich, den Universal-Eingang der Endstufe für die Funktion MoveAbsStopOnInput zu verwenden. Dieser Eingang kann zusätzlich zu einem digitalen Eingangssignal einen Analogwert erfassen und ist demzufolge störempfindlicher als ein reiner Digitaleingang. Durch die Angabe des Parameters USE_GLITCH_FILTER werden bei der Überwachung des Eingangs Störimpulse (Spikes, Rauschen, ...) nach Möglichkeit ausgefiltert.

NO_AUTO_RESET

Das Überwachen eines Eingangs während einer Bewegung erfordert eine spezielle Betriebsart der Endstufe, den sogenannten "Latch-Modus". In dieser Betriebsart gibt es einige Einschränkungen, falls Fahrbefehle nach dem Eintreten eines Portereignisses ohne vorheriges Zurücksetzen des Latch-Modus ausgeführt werden sollten. Aus diesem Grund wird der Latch-Modus nach dem Ende einer mit MoveAbsStopOnInput gestarteten Bewegung automatisch zurückgesetzt, unabhängig davon ob während der Bewegung das Portereignis eingetreten ist oder nicht. Der Parameter NO_AUTO_RESET weist nun die Software an, den Latch-Modus nach dem Ende einer mit MoveAbsStopOnInput gestarteten Bewegung nicht zurückzusetzen, sondern aktiviert zu lassen.

LATCH_ONLY

Im Gegensatz zur Standard-Ausführung der Funktion "Anhalten der Bewegung bei Eintreten des Portereignisses" wird die Verfahrbewegung nicht beendet, wenn der festgelegte Eingang aktiviert wird. Die Verfahrbewegung wird bis zu ihrer programmierten Endposition ausgeführt. Falls während der Bewegung das Portereignis eintritt, wird die in diesem Moment aktuelle Position gelatcht und kann nach dem Ende der Verfahrbewegung mit dem Befehl GetLatchedPosition abgefragt werden.

Beispiele:

[1]

;Bei Verwendung einer Schrittmotorsteuerung

;Schrittmotorsteuerung IMC (IMC4, IMC-M/P, S8...)

;E2.3 ist der Standard-Eingang an einer IMC-M/P

;Steuerung fuer den Messtaster

MoveAbsStopOnInput Z-25.0 E2.3==1 INPUT_AXIS_Z

[2]

;Verwendung der CAN-Steuerung, der Messtaster

;ist an der Endstufe X angeschlossen, der Messtaster

;ist lowaktiv, die Bewegung wird mit der X-Achse

;ausgeführt

Vel 5.0

MoveAbsStopOnInput X250.0 E1.5==0 INPUT_AXIS_X

[3]

;Verwendung der CAN-Steuerung, ein 3D-Messtaster

;ist an der Endstufe X angeschlossen, der Messtaster

;ist lowaktiv, Bewegungen werden mit allen 3 Achsen

;ausgeführt

;Kante X: Heranfahren bis Taster aktiv

MoveAbsStopOnInput X100.0 E1.5==0 F5.0 INPUT_AXIS_X

;Sicherstellen dass der Taster aktiv ist (etwas weiter hineinfahren)

MoveRel X0.1 F2.0

;Herausfahren bis Taster wieder inaktiv

MoveAbsStopOnInput X95.0 E1.5==1 F1.0 INPUT_AXIS_X

;Abholen des Ergebnisses und speichern in Variable

R1=GetLatchedPosition X

;Positionieren an die Startposition fuer Achse Y

;...

;Kante Y: Heranfahren bis Taster aktiv

MoveAbsStopOnInput Y150.0 E1.5==0 F5.0 INPUT_AXIS_X

;Sicherstellen dass der Taster aktiv ist (etwas weiter hineinfahren)

MoveRel Y0.1 F2.0

;Herausfahren bis Taster wieder inaktiv

MoveAbsStopOnInput Y145.0 E1.5==1 F1.0 INPUT_AXIS_X

;Abholen des Ergebnisses und speichern in Variable

R2=GetLatchedPosition Y

;Positionieren an die Startposition fuer Achse Z

;...

;Die Geschwindigkeit kann auch vorher gesetzt werden

F5.0

;Herunterfahren bis Taster aktiv

MoveAbsStopOnInput Z-100.0 E1.5==1 INPUT_AXIS_X

;Sicherstellen dass der Taster aktiv ist

;bevor die zweite Messfahrt gestartet wird

MoveRel Z-0.1 F2.0

;Geschwindigkeit wieder vorher (mit Vel) setzen

Vel 1.0

;Herausfahren bis Taster wieder inaktiv

MoveAbsStopOnInput Z-95.0 E1.5==0 INPUT_AXIS_X

;Abholen des Ergebnisses und speichern in Variable

R3=GetLatchedPosition Z

[4]

;Verwendung der CAN-Steuerung, ein 3D-Messtaster

;ist an Eingang E1.1 von IO-Modul 1 angeschlossen,

;welches in CanSet fuer die Verwendung mit der

;Funktion MoveAbsStopOnInput konfiguriert wurde,

;der Messtaster ist lowaktiv, die Bewegung wird

;mit der Z-Achse ausgeführt

MoveAbsStopOnInput Z-50.0 E1.1==0 INPUT_IO

[5]

;Verwendung der Logosol-Steuerung, ein 1D-Messtaster

;ist an Eingang Input10 der Endstufe Z angeschlossen,

;der Messtaster ist lowaktiv, die Bewegung muss

;mit der Z-Achse ausgeführt werden

MoveAbsStopOnInput Z-100.0 E2.3==0 INPUT_AXIS_Z

[5]

;Verwendung der Logosol-Steuerung, ein 3D-Messtaster

;wird für Messungen mit den Achsen X, Y und Z verwendet.

;Dazu ist der Taster bei jeder Endstufe an Eingang

;Input11 angeschlossen, d.h. die Eingaenge der Endstufen

;sind parallel geschaltet.

;Der Messtaster ist highaktiv, eine Bewegung kann mit

;der X-Achse oder der Y-Achse oder der Z-Achse ausgeführt

;werden.

MoveAbsStopOnInput X100.0 E2.4==1

;...

MoveAbsStopOnInput Y100.0 E2.4==1

;...

;Herunterfahren bis Taster aktiv

MoveAbsStopOnInput Z-100.0 F5.0 E2.4==1

;Sicherstellen dass der Taster aktiv ist

;bevor die zweite Messfahrt gestartet wird

MoveRel Z-0.1 F2.0

;Herausfahren bis Taster wieder inaktiv

MoveAbsStopOnInput Z-95.0 F1.0 E2.4==0

[6]

Vollständiges PAL-Programm zur Vermessung einer Rechtecktasche

;********************************************************

; Projekt: Test_MoveAbsStopOnInput2.PAL

; Messungen mit 3D-Messtaster an einer

; IMC-M/P-Schrittmotoranlage

; Bearbeiter:

; erstellt: 05.03.2018

; geändert:

;********************************************************

#define R_Result R1

#define R_Temp R2

#define R_StartPosX R11

#define R_StartPosY R12

#define R_StartPosZ R13

#define R_Pos1_X R21

#define R_Pos1_Y R22

#define R_Pos1_Z R23

#define R_Pos2_X R24

#define R_Pos2_Y R25

#define R_Pos2_Z R26

#define R_ResultX R27

#define R_ResultY R28

#define R_ResultZ R29

#define Str_Tmp1 Str11

#define Str_Tmp2 Str12

#define Str_Tmp3 Str13

#define E_CaliperInput E3.2

;********************************************************

;Hauptprogramm

;********************************************************

ProgBegin ;Kennzeichnet den Programmbeginn

Vel 5.0

FastVel 20.0

WpClear

MoveAbs Z0

MoveAbs X0 Y0

;--------------------------------------------------------

;Vorbereitung

Str_Tmp1="Anfahren der Startposition für Vermessung einer Rechtecktasche"

Str_Tmp2="Positionieren Sie die Tastspitze so, dass sie sich ungefähr in der Mitte"

Str_Tmp3="der Tasche befindet und beim Fahren in X oder Y-Richtung Kontakt herstellt."

MessageBox OKCANCEL Str_Tmp1+"\n\n"+Str_Tmp2+Str_Tmp3

R_Result=ManualMove

If(R_Result!=IDOK)

ProgAbort

EndIf

R_StartPosX=Pos1.X

R_StartPosY=Pos1.Y

R_StartPosZ=Pos1.Z

;--------------------------------------------------------

;Ausmessen in Richtung X - positiv

Vel 5.0

MoveAbsStopOnInput X(R_StartPosX+100.0) E_CaliperInput==1

Vel 1.0

MoveAbsStopOnInput X(Pos1.X-1.0) E_CaliperInput==0

R_Pos1_X=GetLatchedPosition X

R_Pos1_X=R_Pos1_X/1000.0

FastAbs XR_StartPosX

;--------------------------------------------------------

;Ausmessen in Richtung X - negativ

Vel 5.0

MoveAbsStopOnInput X(R_StartPosX-100.0) E_CaliperInput==1

Vel 1.0

MoveAbsStopOnInput X(Pos1.X+1.0) E_CaliperInput==0

R_Pos2_X=GetLatchedPosition X

R_Pos2_X=R_Pos2_X/1000.0

FastAbs XR_StartPosX

;--------------------------------------------------------

;Ausmessen in Richtung Y - positiv

Vel 5.0

MoveAbsStopOnInput Y(R_StartPosY+100.0) E_CaliperInput==1

Vel 1.0

MoveAbsStopOnInput Y(Pos1.Y-1.0) E_CaliperInput==0

R_Pos1_Y=GetLatchedPosition Y

R_Pos1_Y=R_Pos1_Y/1000.0

FastAbs YR_StartPosY

;--------------------------------------------------------

;Ausmessen in Richtung Y - negativ

Vel 5.0

MoveAbsStopOnInput Y(R_StartPosY-100.0) E_CaliperInput==1

Vel 1.0

MoveAbsStopOnInput Y(Pos1.Y+1.0) E_CaliperInput==0

R_Pos2_Y=GetLatchedPosition Y

R_Pos2_Y=R_Pos2_Y/1000.0

FastAbs YR_StartPosY

;--------------------------------------------------------

;Ausmessen in Richtung Z - Boden der Tasche

Vel 5.0

MoveAbsStopOnInput Z(R_StartPosZ-100.0) E_CaliperInput==1

Vel 1.0

MoveAbsStopOnInput Z(Pos1.Z+1.0) E_CaliperInput==0

R_Pos1_Z=GetLatchedPosition Z

R_Pos1_Z=R_Pos1_Z/1000.0

R_Temp=R_StartPosZ+50.0

If(R_Temp>0.0)

R_Temp=0.0

EndIf

FastAbs ZR_Temp

R_Temp=R_Pos1_X+2.0

FastAbs XR_Temp

Vel 5.0

MoveAbsStopOnInput Z(R_StartPosZ-100.0) E_CaliperInput==1

Vel 1.0

MoveAbsStopOnInput Z(Pos1.Z+1.0) E_CaliperInput==0

R_Pos2_Z=GetLatchedPosition Z

R_Pos2_Z=R_Pos2_Z/1000.0

R_Temp=Pos1.Z+50.0

If(R_Temp>0.0)

R_Temp=0.0

EndIf

FastAbs ZR_Temp

;--------------------------------------------------------

;Ergebnis

R_ResultX=R_Pos2_X-R_Pos1_X

R_ResultY=R_Pos2_Y-R_Pos1_Y

R_ResultZ=R_Pos1_Z-R_Pos2_Z

Str_Tmp1=StrFormat(Str_Tmp1 "Länge (X): %.3f" R_ResultX)

Str_Tmp2=StrFormat(Str_Tmp2 "Breite (Y): %.3f" R_ResultY)

Str_Tmp3=StrFormat(Str_Tmp3 "Tiefe (Z): %.3f" R_ResultZ)

MessageBox "Ergebnis:\n\n"+Str_Tmp1+"\n"+Str_Tmp2+"\n"+Str_Tmp3

ProgEnd ;Ende des Programms

;--------------------------------------------------------

Siehe auch: MoveRelStopOnInput, GetLatchedPosition


MoveFile

MoveFile [param] str_srcfile str_destfile

Verschieben einer Datei

Verschiebt eine existierende Datei an einen anderen Ort. Durch die optionale Angabe zusätzlicher Parameter kann das Laufzeitverhalten der Funktion an die jeweilige Aufgabenstellung angepasst werden.

Syntax:

MoveFile [param] str_srcfile str_destfile

Parameter des Befehls:

str_srcfile | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) welche den Namen der Quelldatei enthält, die verschoben werden soll.
str_destfile | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) welche den neuen Pfad und Namen der zu verschiebenden Quelldatei enthält.
ALLOWUNDO | Sichert, wenn möglich, alle Informationen für die Operation "Rückgängig"
FILESONLY | Die Aktion wird nur auf Dateien angewendet, wenn die Angabe des Quelldateinamens eine Wildcard ("*.*") enthält.
NOCONFIRMATION | Falls während der Dateioperation eine Benutzerabfrage erfolgt, werden alle Dialoge mit "Ja zu allem" beantwortet.
NOCONFIRMMKDIR | Falls die Dateioperation es erforderlich macht, daß ein neues Verzeichnis angelegt wird, erfolgt keine Aufforderung das Anlegen des neuen Verzeichnisses zu bestätigen.
NOERRORUI | Wenn während der Dateioperation ein Fehler auftritt, wird die Fehlermeldung unterdrückt.
RENAMEONCOLLISION | Weist der bearbeiteten Datei einen neuen Namen zu, wenn während der Dateioperation eine Namenskollision festgestellt wird, z.B. wenn die Zieldatei bereits existiert.
SILENT | Es wird keine Fortschrittsanzeige für die Dateioperation angezeigt.
SIMPLEPROGRESS | Während der Dateioperation wird ein Fortschrittsdialog angezeigt, der jedoch keine Dateinamen enthält.

Hinweis: Im Gegensatz zu vielen anderen Befehlen und Kommandos, bei denen die Reihenfolge der Parameter nicht festgelegt ist, müssen bei diesem Befehl die optionalen Parameter param vor der Angabe von Quelldatei und Zieldatei stehen.

Beispiel:

Str11="C:\NCProg\"

Str12="NCP-Dateien|*.NCP|Alle Dateien|*.*||"

;zuvor die Zeichenkettenvariable R1 mit einer

;leeren Zeichenkette initialisieren

Str1=""

;Dateiauswahldialog aufrufen...

R1=FileDialog OpenFileDialog=1 Result=Str1 DefaultPath=Str11 DefaultExtension="NCP" Filter=Str12

;einen festen Namen fuer die Zieldatei angeben...

Str2="C:\NcProg\test1.ncp"

;Verschieben starten, falls die Zieldatei bereits

;existiert wird sie ohne Nachfrage ueberschrieben,

;wenn NOCONFIRMATION weggelassen wird erscheint die

;Standardabfrage von Windows und bietet eine Auswahl

;an Moeglichkeiten an

MoveFile NOCONFIRMATION Str1 Str2

Siehe auch: CopyFile, DeleteFile, FileDialog, FileExists, SplitPath, MakePath, GetFileType


MoveFrame

MoveFrame Seq=... framename / Qn F... Ep.b

Lineare Bewegung an eine durch eine Frame-Variable angegebene Zielposition

Show/Hide Hidden Text

Lineare Bewegung an eine Zielposition, welche durch Angabe einer Framevariablen definiert wird. Die Framevariable kann entweder direkt als Name einer angelegten Framevariablen oder als eine Q-Variable übergeben werden.

Für jede NC-Quelldatei kann zur Verwendung beim Programmlauf eine entsprechende Framedatei zugeordnet werden. Dies geschieht, indem eine Framedatei mit gleichem Namen wie die NC-Quelldatei, jedoch der Extension "FRA" im Standardverzeichnis für Framedateien angelegt wird. In dieser Framedatei können die Namen der Frames festgelegt werden sowie die jeweiligen Achspositionen zugewiesen werden. Im Programm kann entweder durch Angabe des Framenamens auf die Frame-Variable zugegriffen werden oder durch Übertrag der Framevariablen in eine Q-Variable und anschließender Verwendung der Q-Variablen.

Weitere Frames werden festgelegt, indem

·eine Maschinenposition unter Verwendung des entsprechenden Dialogs angelegt wird

·ein Werkstücknullpunkt unter Verwendung des entsprechenden Dialogs angelegt wird

Frames, die als Maschinenposition oder als Werkstücknullpunkt angelegt werden, können ebenfalls unter Verwendung des Framenamens in den Befehlen MoveFrame und FastFrame verwendet werden.

Die Verfahrbewegung geschieht unter Verwendung der aktuell gesetzten Normalgeschwindigkeit (siehe Befehl VEL).

Verwendete Parameter:

framename

Angabe eines Frames mit den Zielkoordinaten

Qn

Angabe einer Q-Variablen mit den Zielkoordinaten

Seq

Angabe der Bewegungsreihenfolge der Achsen

Ep.b

Eingang, welcher als Abbruchbedingung für die Bewegung ausgewertet wird

p | Portnummer des Eingangs
b | Bitnummer des Eingangs

Hinweis: Ein Framename kann maximal 40 Zeichen lang sein. Falls ein Framename verwendet wird, der die Maximallänge überschreitet, wird ein Laufzeitfehler angezeigt.

Beispiel:

; Direkte Angabe des Namens der Framevariablen

VEL 50.0

MOVEFRAME STARTPOS1

; Zuweisen der Framevariablen an eine Q-Variable

; Verwendung der Q-Variablen für MoveFrame

;Die Frame-Variable muß in einer entsprechenden Datei

;angelegt sein (z.B. in der Liste der Maschinenpositionen,

;in der Liste der Werkstücknullpunkte

;oder in der Frame-Datei des Quellprogramms

Q1=STARTPOS2

MOVEFRAME Q1

; Zuweisen der Framevariablen an mehrere Q-Variable

; Indizierter Zugriff auf die Q-Variablen

;Die Q-Variable muß zuvor initialisiert werden

Q1=POSITION1

Q2=POSITION2

Q3=POSITION3

R1=1

MOVEFRAME QR1

R1=2

MOVEFRAME QR1

R1=3

MOVEFRAME QR1

; oder Verwendung in einer Schleife

FOR R1=1,3,1

MOVEFRAME QR1

ENDFOR

Festlegung der Bewegungsreihenfolge der Achsen

Durch die Option "SEQ" kann die Reihenfolge festgelegt werden, in der die beteiligten Achsen einer Bewegung an ihre Zielpositionen fahren. Die Angabe der Verfahrreihenfolge ist sehr nützlich, wenn z.B. die Gefahr von Kollisionen mit Aufbauten auf einem Maschinentisch besteht.

Gültige Parameter für die Option "Seq" sind:

·"Auto", "Direct", "X", "Y", "Z", "A", "B", "C", "U", "V", "W" sowie die Kombinationen hieraus ("XY,Z", "Z,XY", "Z,Auto", "A,Z,XY", ...)

Mehr...

Die Option "SEQ" kann für alle Geradenbefehle verwendet werden:

G00, FastAbs, FastRel,

G01, MoveAbs, MoveRel,

G10, FastFrame,

G11, MoveFrame

Nach Seq=... kann eine String-Konstante (Zeichenkette, eingeschlossen in Anführungszeichen " ) oder eine Str-Variable (Str1 ... Str999) folgen.

Folgende Anweisungen sind möglich:

Geradenbefehl SEQ="Auto" X... Y... Z...

Die Z-Achse wird sicher verfahren. Bezogen auf ein kartesisches Koordinatensystem bedeutet das:

·Wenn die aktuelle Position der Z-Achse "tiefer" ist als die Zielposition Z, wird zunächst die Z-Achse, anschließend die Achsen X und Y verfahren

·Wenn die aktuelle Position der Z-Achse "höher" ist als die Zielposition Z, werden zunächst die X- und Y-Achse verfahren, anschließend wird die Achse Z zugestellt

Geradenbefehl SEQ="Direct" X... Y... Z...

Ale Achsen werden synchron verfahren. Dies ist das Standard-Verhalten eines Bewegungsbefehls. Bei Angabe dieser Option verhalten sich die Achsen also so als ob die Option "SEQ" nicht angegeben wäre.

Geradenbefehl SEQ="Y,Z,X" X... Y... Z...

Die Reihenfolge des Achsfahrend erfolgt wie angegeben: Zuerst wird die Y-Achse verfahren, dann die Achse Z, zuletzt die Achse X. Falls der Befehl weitere Zielkoordinaten für beteiligte Achsen enthält, werden diese ignoriert. Verfahren werden nur die Achsen, die in der Anfahrreihenfolge angegeben werden. Gültige Trennzeichen sind ",", ";", " ".

Geradenbefehl SEQ="Z,XY" X... Y... Z...

Werden 2 oder mehr Achsen in einem Block angegeben, so verfahren diese Achsen synchron. Hier wird zunächst die Achse Z verfahren, anschließend fahren X und Y synchron an ihre Zielpositionen.

Str5="Auto"

Geradenbefehl SEQ=Str5 X... Y...

Die Zeichenkettenvariable Str5 enthält die Reihenfolge für das Fahren der Achsen. Vor Verwendung dieses Befehls muß die Variable mit einer entsprechenden Zeichenkette initialisiert werden.

Geradenbefehl SEQ FramePosition

Die Bewegungsreihenfolge erfolgt wie in der Framedefinition festgelegt. Diese Festlegung erfolgt in den Dialogen für

·das Einstellen und Verwalten von Maschinenpositionen

·das Einstellen und Verwalten von Werkstücknullpunkten

·das Einstellen und Verwalten von spezifischen Frame-Dateien für PAL-Quellprogramme

Beispiel:

(1)

;Verwendung der Bewegungssequenz-Steuerzeichenkette

;einer Frame-Variablen

;Die Frame-Variable muß in einer entsprechenden Datei

;angelegt sein (z.B. in der Liste der Maschinenpositionen, in der

;Liste der Werkstücknullpunkte oder in der Frame-Datei des Quellprogramms

;Die Bewegungsreihenfolge ist wie in der Framedefinition festgelegt

MoveFrame SEQ StartPos2

;Die Bewegungsreihenfolge wird über eine Zeichenkette festgelegt

;in diesem Fall wird die Reihenfolge aus der Framedefinition ignoriert

MoveFrame Seq="Auto" StartPos2

;Die Bewegungsreihenfolge wird über eine String-Variable festgelegt,

;die zuvor initialisiert wird

;Die Reihenfolge aus der Framedefinition wird ignoriert

Str11="Z,Auto"

MoveFrame Seq=Str11 StartPos2

;Wird die Option "SEQ" nicht angegeben, werden alle Achsen

;synchron verfahren

MoveFrame StartPos2

Siehe auch: FastFrame, MoveAbs, MoveRel, FastAbs, FastRel, InMotion, MStop, MStart, MAbort, Vel, Q-Variablen


MoveRel

MoveRel Seq=... X... Y... Z... F... Ep.b

Lineare Bewegung an relative Zielposition

Show/Hide Hidden Text

Lineare Bewegung an eine Zielposition unter Verwendung der aktuell gesetzten Normalgeschwindigkeit (siehe Befehl VEL oder Operator F).

Verwendete Parameter:

X Relative Zielkoordinate der Achse X

Y Relative Zielkoordinate der Achse Y

Z Relative Zielkoordinate der Achse Z

A Relative Zielkoordinate der Achse A

B Relative Zielkoordinate der Achse B

C Relative Zielkoordinate der Achse C

U Relative Zielkoordinate der Achse U

V Relative Zielkoordinate der Achse V

W Relative Zielkoordinate der Achse W

Seq Angabe der Bewegungsreihenfolge der Achsen

Ep.b Eingang, welcher als Abbruchbedingung für die Bewegung ausgewertet wird

p Portnummer des Eingangs

b Bitnummer des Eingangs

Die Angabe der Koordinaten erfolgt in Werten relativ zur aktuellen Position, d.h. alle übergebenen Koordinaten beziehen sich auf die aktuell erreichten Sollpositionen der jeweiligen Achsen.

Beispiel:

;3D-Bewegung an eine relative Zielposition

MoveRel X25 Y-19.78 Z2.32

;3D-Bewegung an eine relative Zielposition

;mit Angabe der Verfahrgeschwindigkeit

MoveRel X25 Y-19.78 Z2.32 F5.0

;Begrenzung des Verfahrweges

IF R22 > 2.0

R22 = 2.0

ENDIF

;Bewegung an die Zielposition

MoveRel XR22

;Bewegung an eine berechnete Zielposition

R22=R25-R26

MoveRel YR22 F10.0

Festlegung der Bewegungsreihenfolge der Achsen

Durch die Option "SEQ" kann die Reihenfolge festgelegt werden, in der die beteiligten Achsen einer Bewegung an ihre Zielpositionen fahren. Die Angabe der Verfahrreihenfolge ist sehr nützlich, wenn z.B. die Gefahr von Kollisionen mit Aufbauten auf einem Maschinentisch besteht.

Gültige Parameter für die Option "Seq" sind:

·"Auto", "Direct", "X", "Y", "Z", "A", "B", "C", "U", "V", "W" sowie die Kombinationen hieraus ("XY,Z", "Z,XY", "Z,Auto", "A,Z,XY", ...)

Mehr...

Die Option "SEQ" kann für alle Geradenbefehle verwendet werden:

G00, FastAbs, FastRel,

G01, MoveAbs, MoveRel,

G10, FastFrame,

G11, MoveFrame

Nach Seq=... kann eine String-Konstante (Zeichenkette, eingeschlossen in Anführungszeichen " ) oder eine Str-Variable (Str1 ... Str999) folgen.

Folgende Anweisungen sind möglich:

Geradenbefehl SEQ="Auto" X... Y... Z...

Die Z-Achse wird sicher verfahren. Bezogen auf ein kartesisches Koordinatensystem bedeutet das:

·Wenn die aktuelle Position der Z-Achse "tiefer" ist als die Zielposition Z, wird zunächst die Z-Achse, anschließend die Achsen X und Y verfahren

·Wenn die aktuelle Position der Z-Achse "höher" ist als die Zielposition Z, werden zunächst die X- und Y-Achse verfahren, anschließend wird die Achse Z zugestellt

Geradenbefehl SEQ="Direct" X... Y... Z...

Ale Achsen werden synchron verfahren. Dies ist das Standard-Verhalten eines Bewegungsbefehls. Bei Angabe dieser Option verhalten sich die Achsen also so als ob die Option "SEQ" nicht angegeben wäre.

Geradenbefehl SEQ="Y,Z,X" X... Y... Z...

Die Reihenfolge des Achsfahrend erfolgt wie angegeben: Zuerst wird die Y-Achse verfahren, dann die Achse Z, zuletzt die Achse X. Falls der Befehl weitere Zielkoordinaten für beteiligte Achsen enthält, werden diese ignoriert. Verfahren werden nur die Achsen, die in der Anfahrreihenfolge angegeben werden. Gültige Trennzeichen sind ",", ";", " ".

Geradenbefehl SEQ="Z,XY" X... Y... Z...

Werden 2 oder mehr Achsen in einem Block angegeben, so verfahren diese Achsen synchron. Hier wird zunächst die Achse Z verfahren, anschließend fahren X und Y synchron an ihre Zielpositionen.

Str5="Auto"

Geradenbefehl SEQ=Str5 X... Y...

Die Zeichenkettenvariable Str5 enthält die Reihenfolge für das Fahren der Achsen. Vor Verwendung dieses Befehls muß die Variable mit einer entsprechenden Zeichenkette initialisiert werden.

Geradenbefehl SEQ FramePosition

Die Bewegungsreihenfolge erfolgt wie in der Framedefinition festgelegt. Diese Festlegung erfolgt in den Dialogen für

·das Einstellen und Verwalten von Maschinenpositionen

·das Einstellen und Verwalten von Werkstücknullpunkten

·das Einstellen und Verwalten von spezifischen Frame-Dateien für PAL-Quellprogramme

Beispiele:

(1)

;Fahren mit v=5 mm/s an Zielposition

Vel 5.0

MoveRel Seq="Auto" X20.5 Y12.28 Z-21.32

(2)

;Zuweisung der Bewegungssequenz-Steuerzeichenkette

Str1 = "Auto"

Str2 = "Direct"

Str3 = "X,Y,Z"

;Angabe der Fahrgeschwindigkeit: Normalgeschwindigkeit 100mm/sec

Vel 100

;Fahren an Zielposition, Modus ist "Z sicher fahren"

MoveRel Seq=Str1 X10 Y20 Z-30

;Fahren an vorherige Position, alle Achsen synchron

;("Direct" oder keine Angabe)

MoveRel X-10 Y-20 Z30

;Fahren an Zielposition, Modus ist "alle Achsen gleichzeitig"

;Geschwindigkeit (Angabe mit "F") ist 200 mm/s

MoveRel Seq=Str2 X10 Y20 Z-30 F200

;Bewegungen zurück, diesmal in der Reihenfolge

;erst X, dann Y, dann Z

MoveRel Seq=Str3 X-10 Y-20 Z30

(3)

;Verwendung der Bewegungssequenz-Steuerzeichenkette

;einer Frame-Variablen

;Die Bewegungsreihenfolge ist wie in der Framedefinition festgelegt

MoveFrame SEQ StartPos2

;Wird die Option "SEQ" nicht angegeben, werden alle Achsen

;synchron verfahren

MoveFrame StartPos2

Fahren bis Wechsel an einem Eingang

Optional kann in einem Bewegungsbefehl für eine Relativbewegung ein Eingang angegeben werden, der für den bedingten Abbruch der Fahrbewegung ausgewertet werden kann. Die Angabe des Eingangs erfolgt nach der üblichen Syntax: Ep.b, wobei "p" die Portnummer (im Bereich 1...Anzahl der Ports) und b die Bitnummer (1...8) ist. Soll auf negative Logik geprüft werden, muß der Operator "NOT" vorangestellt werden.

Mehr...

Bei der Auswertung des Eingangs wird folgendermaßen verfahren:

Positive Logik, Verwendung des Operators Ep.b

·Die Bewegung wird gestartet

·Solange der Eingang Ep.b inaktiv ist (logische 0 liegt an), wird die Fahrbewegung fortgesetzt

·Sobald der Eingang aktiv wird (logische 1 liegt an), wird die Bewegung abgebrochen

Negative Logik, Verwendung des Operators NOT Ep.b

·Die Bewegung wird gestartet

·Solange der Eingang aktiv ist (logische 1 liegt an), wird die Fahrbewegung fortgesetzt

·Sobald der Eingang inaktiv wird (logische 0 liegt an), wird die Bewegung abgebrochen

Beispiel:

;Eine Bewegung wird gestartet, diese soll

;abgebrochen werden sobald Eingang E2.5

;auf den logischen Wert 1 wechselt

Vel 10.0

MoveRel X100 E2.5

;Eine Bewegung wird gestartet, diese soll

;abgebrochen werden sobald Eingang E2.1

;auf den logischen Wert 0 wechselt

Vel 10.0

MoveRel X100 NOT E2.1

;Referenzieren auf einen Schalter

;Eine Bewegung wird schnell gestartet, diese

;soll abgebrochen werden sobald Eingang E1.4

;von 1 auf 0 wechselt, anschliessend wird

;langsam in Gegenrichtung gefahren bis der

;Eingang wieder den logischen Wert 1 annimmt

Vel 50.0

MoveRel X100 NOT E1.4

Vel 1.0

MoveRel X-10 E1.4

Siehe auch: MoveAbs, FastAbs, FastRel, MoveFrame, FastFrame, InMotion, MStop, MStart, MAbort, Vel, F


MoveRelStopOnInput

Lineare Bewegung an eine relative Zielposition, Abbruch bei Portereignis

Show/Hide Hidden Text

Startet eine Bewegung an eine relative Zielposition. Falls während der Bewegung das angegebene Portereignis (ein Pegelwechsel am Eingang von 0 auf 1 oder von 1 auf 0) eintritt, wird die Bewegung sofort abgebrochen und die aktuelle Position im Moment des Eintretens des Portereignisses gespeichert.

Zu beachten ist, daß diese Funktion zwar einheitlich in Verbindung mit verschiedenen Steuerungen verwendet werden kann, die erzielten Ergebnisse in ihrer Genauigkeit jedoch Unterschiede aufweisen können. Die Ursache hierfür liegt darin, daß die in den verschiedenen Steuerungen erzielten Zykluszeiten zur Überwachung des Eingangs während der Bewegung unterschiedlich sind.

Steuerung | Typ des Eingangs | Überwachung des Eingangs | Erreichbare Genauigkeit
Schrittmotorsteuerung IMC (IMC4, IMC-M/P, S8...) | Digitaler Eingang des Controllers | in der Firmware des Controllers | Gut, die Genauigkeit des Ergebnisses ist jedoch von der Spindelsteigung und der Schrittauflösung des Motors abhängig
CAN-Bus Steuerung | Hinweis bei Verwendung der isel-CAN-Steuerung Für die Nutzung der Funktion MoveAbsStopOnInput ist eine Endstufe mit einer Firmware-Version ab. V1.60.00.90 erforderlich. Weiterhin müssen alle im Achssystem verwendeten Endstufen die gleiche Firmware-Version haben.
 | Universal-Eingang auf der Motorendstufe (IMD20 oder IMD40), welche die Bewegung ausführt | in der Firmware der Endstufe | Hoch, evtl. muss in stark gestörtem Umfeld der Filter verwendet werden, was die Genauigkeit etwas reduzieren würde
 | Universal-Eingang auf einer anderen Motorendstufe (IMD20 oder IMD40) als derjenigen, welche die Bewegung ausführt | in der Firmware beider Endstufen | Gut, die Genauigkeit wird jedoch durch die Laufzeiten der CAN-Bus-Kommunikation zwischen den beiden Endstufen etwas reduziert
 | Digitaler Eingang auf einem isel CAN-IO-Modul | in der Firmware des IO-Moduls und der Firmware der Endstufe, welche die Bewegung ausführt | Gut, die Genauigkeit wird jedoch durch die Laufzeiten der CAN-Bus-Kommunikation zwischen Endstufe und IO-Modul verringert
Steuerung Logosol | Hinweis bei Verwendung einer Logosol-Steuerung Bei der Logosol-Steuerung kann die Erfassung eines Ereignisses an einem Eingang nur auf der Endstufe ausgeführt werden, welche aktuell die Bewegung im aktiven Latch-Modus ausführt.
 | Digitaler Eingang auf der Endstufe bzw. dem Controller-Board | In der Firmware der Endstufe | Hoch

Verwendete Parameter:

X.., Y.., Z..,
...,
V.., W..

Angabe der relativen Zielkoordinaten der Achse X, Y, Z, ...

Die Angabe mehrerer Zielkoordinaten ist zwar bei einigen Steuerungstypen möglich, jedoch sollte bei der Verwendung dieser Funktion mit einem Messtaster im Hinblick auf eine höchstmögliche Genauigkeit des Ergebnisses eine Messfahrt nur mit einer Einzelachse durchgeführt werden.

Ep.b==0/1

Angabe von Eingang und Abbruchbedingung

p Portnummer des Eingangs
b Bitnummer des Eingangs
0/1 Logischer Eingangspegel, welcher zum Abbruch der Bewegung führen soll

Angabe von Port- und Bitnummer

Port- und Bitnummern, die im Rahmen dieses Befehls angegeben werden, beziehen sich immer auf lokale Eingänge, die sich auf einem Controller, einer Endstufe oder einem Ein-/Ausgabemodul befinden. Port- und Bitnummern sind im Gegensatz zu den Port- und Bitnummern der Ein-/Ausgabeverwaltung in ProNC oder Remote Bezeichner für lokale Eingänge. Aus Gründen der Vereinfachung wurden diese Bezeichner analog zu den Eingängen der Ein-/Ausgabeverwaltung aufgebaut. Das führt dazu, daß ein Eingang der Ein-/Ausgabeverwaltung die gleiche Benennung wie ein hier verwendeter Bezeichner haben kann, diese beiden Eingänge sind jedoch nicht identisch!

In der nachstehenden Übersicht sind die unterschiedlichen Steuerungen und die Eingänge aufgeführt, die für die Verwendung der Funktion MoveAbsStopOnInput stehen:

Steuerung | Typ/Lage des Eingangs | Mögliche Eingangsbezeichnungen
Schrittmotorsteuerung IMC (IMC4, IM-M/P, S8...) | Digitaler Eingang des Controllers | E1.1 ... E1.8 Es kann einer der User-Eingänge der Steuerung verwendet werden. Falls das lokale Eingangsport E1 als Eingangsport E1 in der Ein-/Ausgabeverwaltung konfiguriert wurde, wären hier die beiden Bezeichner identisch.
CAN-Bus-Steuerung | Universal-Eingang auf der Endstufe, welche die Bewegung ausführt | Der Universal-Eingang hat den festen Bezeichner E1.5. Zusätzlich ist die Angabe der Endstufe erforderlich, deren Eingang für die Überwachung des Signals verwendet werden soll (INPUT_AXIS_X, INPUT_AXIS_Y, INPUT_AXIS_Z)
 | Universal-Eingang auf einer anderen Endstufe als derjenigen, welche die Bewegung ausführt | Der Universal-Eingang hat den festen Bezeichner E1.5. Weiterhin ist die Angabe der Endstufe erforderlich, deren Eingang für die Überwachung des Signals verwendet werden soll (INPUT_AXIS_X, INPUT_AXIS_Y, INPUT_AXIS_Z)
 | Digitaler Eingang eines CAN-IO-Moduls | Es kann nur ein CAN-IO-Modul für die Verwendung mit der Funktion MoveAbsStopOnInput konfiguriert werden. Diese grundlegende Konfiguration findet mit Hilfe der Einstellsoftware der CAN-Steuerung statt. Nach der Konfiguration können die Bezeichner E1.1 ... E1.8 für die Angabe des Eingangs verwendet werden. Zusätzlich ist noch durch den Parameter INPUT_IO fesulegen, daß der Eingang durch das CAN-IO-Modul bereitgestellt wird.
Steuerung Logosol | Digitaler Eingang auf der Steuerungsbaugruppe | Die Logosol-Steuerungsbaugruppe bzw. die Endstufen des Typs LS174 stellen intern die Eingänge Input0 bis Input15 zur Verfügung, von denen die beiden Eingänge Input10 und Input11 für die Verwendung mit der Funktion MoveAbsStopOnInput vorgesehen sind. Da die Eingangsports der Endstufe auf virtuelle 8-Bit-Eingangsports gemappt werden, sind die Bezeichner demzufolge E2.3 und E2.4. Input10 entspricht E2.3 Input11 entspricht E2.4

F...

Angabe der Vorschubgeschwindigkeit für die Bewegung. Zu beachten ist, daß die Angabe der Geschwindigkeit nach den Achsbezeichnern und der Angabe des Eingangsports und vor den weiteren Optionen stehen soll.

INPUT_AXIS_X, INPUT_AXIS_Y,...

INPUT_AXIS_C

Optionaler Parameter bei Verwendung der isel-CAN-Steuerung

Der Bezeichner für den zu überwachenden Eingang hat den festen Wert E1.5. Mittels dieses zusätzlichen Parameters kann die Endstufe angegeben werden, deren Eingang für die Überwachung des Signals verwendet werden soll (INPUT_AXIS_X, INPUT_AXIS_Y, INPUT_AXIS_Z, INPUT_AXIS_A, INPUT_AXIS_B, INPUT_AXIS_C)

INPUT_IO

Optionaler Parameter bei Verwendung der isel-CAN-Steuerung

Bei Verwendung der CAN-Steuerung kann ein CAN-IO-Modul für die Verwendung mit der Funktion MoveAbsStopOnInput konfiguriert werden. Diese grundlegende Konfiguration findet mit Hilfe der Einstellsoftware der CAN-Steuerung statt.

Der Parameter INPUT_IO legt fest, daß ein Eingang dieses CAN-IO-Moduls überwacht werden soll. Die Bezeichner E1.1 ... E1.8 können nun für die Angabe des Eingangskanals verwendet werden.

STOP_SMOOTH

Dieser Parameter legt fest, daß die Bewegung nach Eintreten des Portereignisses mit der normalen Bremsrampe beendet werden soll.

STOP_ABRUPT

Dieser Parameter legt fest, daß die Bewegung nach Eintreten des erwarteten Portereignisses mit der maximalen Verzögerung beendet werden soll.

USE_GLITCH_FILTER

Optionaler Parameter bei Verwendung der isel-CAN-Steuerung

Bei Verwendung der CAN-Steuerung ist es möglich, den Universal-Eingang der Endstufe für die Funktion MoveAbsStopOnInput zu verwenden. Dieser Eingang kann zusätzlich zu einem digitalen Eingangssignal einen Analogwert erfassen und ist demzufolge störempfindlicher als ein reiner Digitaleingang. Durch die Angabe des Parameters USE_GLITCH_FILTER werden bei der Überwachung des Eingangs Störimpulse (Spikes, Rauschen, ...) nach Möglichkeit ausgefiltert.

NO_AUTO_RESET

Das Überwachen eines Eingangs während einer Bewegung erfordert eine spezielle Betriebsart der Endstufe, den sogenannten "Latch-Modus". In dieser Betriebsart gibt es einige Einschränkungen, falls Fahrbefehle nach dem Eintreten eines Portereignisses ohne vorheriges Zurücksetzen des Latch-Modus ausgeführt werden sollten. Aus diesem Grund wird der Latch-Modus nach dem Ende einer mit MoveAbsStopOnInput gestarteten Bewegung automatisch zurückgesetzt, unabhängig davon ob während der Bewegung das Portereignis eingetreten ist oder nicht. Der Parameter NO_AUTO_RESET weist nun die Software an, den Latch-Modus nach dem Ende einer mit MoveAbsStopOnInput gestarteten Bewegung nicht zurückzusetzen, sondern aktiviert zu lassen.

Beispiele:

[1]

;Bei Verwendung einer Schrittmotorsteuerung

;Schrittmotorsteuerung IMC (IMC4, IMC-M/P, S8...)

;E2.3 ist der Standard-Eingang an einer IMC-M/P

;Steuerung fuer den Messtaster

MoveRelStopOnInput Z-25.0 E2.3==1

[2]

;Verwendung der CAN-Steuerung, der Messtaster

;ist an der Endstufe X angeschlossen, der Messtaster

;ist lowaktiv, die Bewegung wird mit der X-Achse

;ausgeführt

Vel 5.0

MoveRelStopOnInput X250.0 E1.5==0 INPUT_AXIS_X

[3]

;Verwendung der CAN-Steuerung, ein 3D-Messtaster

;ist an der Endstufe X angeschlossen, der Messtaster

;ist lowaktiv, Bewegungen werden mit allen 3 Achsen

;ausgeführt

;Kante X: Heranfahren bis Taster aktiv

MoveRelStopOnInput X100.0 E1.5==0 F5.0 INPUT_AXIS_X

;Sicherstellen dass der Taster aktiv ist (etwas weiter hineinfahren)

MoveRel X0.1 F2.0

;Herausfahren bis Taster wieder inaktiv

MoveRelStopOnInput X-5.0 E1.5==1 F1.0 INPUT_AXIS_X

;Abholen des Ergebnisses und speichern in Variable

R1=GetLatchedPosition X

;Positionieren an die Startposition fuer Achse Y

;...

;Kante Y: Heranfahren bis Taster aktiv

MoveRelStopOnInput Y=150.0 E1.5==0 F5.0 INPUT_AXIS_X

;Sicherstellen dass der Taster aktiv ist (etwas weiter hineinfahren)

MoveRel Y0.1 F2.0

;Herausfahren bis Taster wieder inaktiv

MoveRelStopOnInput Y-5.0 E1.5==1 F1.0 INPUT_AXIS_X

;Abholen des Ergebnisses und speichern in Variable

R2=GetLatchedPosition Y

;Positionieren an die Startposition fuer Achse Z

;...

;Die Geschwindigkeit kann auch vorher gesetzt werden

F5.0

;Herunterfahren bis Taster aktiv

MoveRelStopOnInput Z-100.0 E1.5==1 INPUT_AXIS_X

;Sicherstellen dass der Taster aktiv ist

;bevor die zweite Messfahrt gestartet wird

MoveRel Z-0.1 F2.0

;Geschwindigkeit wieder vorher (mit Vel) setzen

Vel 1.0

;Herausfahren bis Taster wieder inaktiv

MoveRelStopOnInput Z-5.0 E1.5==0 INPUT_AXIS_X

;Abholen des Ergebnisses und speichern in Variable

R3=GetLatchedPosition Z

[4]

;Verwendung der CAN-Steuerung, ein 3D-Messtaster

;ist an Eingang E1.1 von IO-Modul 1 angeschlossen,

;welches in CanSet fuer die Verwendung mit der

;Funktion MoveAbsStopOnInput konfiguriert wurde,

;der Messtaster ist lowaktiv, die Bewegung wird

;mit der Z-Achse ausgeführt

MoveRelStopOnInput Z-50.0 E1.1==0 INPUT_IO

[5]

;Verwendung der Logosol-Steuerung, ein 1D-Messtaster

;ist an Eingang Input10 der Endstufe Z angeschlossen,

;der Messtaster ist lowaktiv, die Bewegung muss

;mit der Z-Achse ausgeführt werden

MoveRelStopOnInput Z-100.0 E2.3==0

[5]

;Verwendung der Logosol-Steuerung, ein 3D-Messtaster

;wird für Messungen mit den Achsen X, Y und Z verwendet.

;Dazu ist der Taster bei jeder Endstufe an Eingang

;Input11 angeschlossen, d.h. die Eingaenge der Endstufen

;sind parallel geschaltet.

;Der Messtaster ist highaktiv, eine Bewegung kann mit

;der X-Achse oder der Y-Achse oder der Z-Achse ausgeführt

;werden.

MoveRelStopOnInput X100.0 E2.4==1

;...

MoveRelStopOnInput Y100.0 E2.4==1

;...

;Herunterfahren bis Taster aktiv

MoveRelStopOnInput Z-100.0 F5.0 E2.4==1

;Sicherstellen dass der Taster aktiv ist

;bevor die zweite Messfahrt gestartet wird

MoveRel Z-0.1 F2.0

;Herausfahren bis Taster wieder inaktiv

MoveRelStopOnInput Z-5.0 F1.0 E2.4==0

[6]

Vollständiges PAL-Programm zur Vermessung einer Rechtecktasche

;********************************************************

; Projekt: Test_MoveAbsStopOnInput2.PAL

; Messungen mit 3D-Messtaster an einer

; IMC-M/P-Schrittmotoranlage

; Bearbeiter:

; erstellt: 05.03.2018

; geändert:

;********************************************************

#define R_Result R1

#define R_Temp R2

#define R_StartPosX R11

#define R_StartPosY R12

#define R_StartPosZ R13

#define R_Pos1_X R21

#define R_Pos1_Y R22

#define R_Pos1_Z R23

#define R_Pos2_X R24

#define R_Pos2_Y R25

#define R_Pos2_Z R26

#define R_ResultX R27

#define R_ResultY R28

#define R_ResultZ R29

#define Str_Tmp1 Str11

#define Str_Tmp2 Str12

#define Str_Tmp3 Str13

#define E_CaliperInput E3.2

;********************************************************

;Hauptprogramm

;********************************************************

ProgBegin ;Kennzeichnet den Programmbeginn

Vel 5.0

FastVel 20.0

WpClear

MoveAbs Z0

MoveAbs X0 Y0

;--------------------------------------------------------

;Vorbereitung

Str_Tmp1="Anfahren der Startposition für Vermessung einer Rechtecktasche"

Str_Tmp2="Positionieren Sie die Tastspitze so, dass sie sich ungefähr in der Mitte"

Str_Tmp3="der Tasche befindet und beim Fahren in X oder Y-Richtung Kontakt herstellt."

MessageBox OKCANCEL Str_Tmp1+"\n\n"+Str_Tmp2+Str_Tmp3

R_Result=ManualMove

If(R_Result!=IDOK)

ProgAbort

EndIf

R_StartPosX=Pos1.X

R_StartPosY=Pos1.Y

R_StartPosZ=Pos1.Z

;--------------------------------------------------------

;Ausmessen in Richtung X - positiv

Vel 5.0

MoveAbsStopOnInput X(R_StartPosX+100.0) E_CaliperInput==1

Vel 1.0

MoveAbsStopOnInput X(Pos1.X-1.0) E_CaliperInput==0

R_Pos1_X=GetLatchedPosition X

R_Pos1_X=R_Pos1_X/1000.0

FastAbs XR_StartPosX

;--------------------------------------------------------

;Ausmessen in Richtung X - negativ

Vel 5.0

MoveAbsStopOnInput X(R_StartPosX-100.0) E_CaliperInput==1

Vel 1.0

MoveAbsStopOnInput X(Pos1.X+1.0) E_CaliperInput==0

R_Pos2_X=GetLatchedPosition X

R_Pos2_X=R_Pos2_X/1000.0

FastAbs XR_StartPosX

;--------------------------------------------------------

;Ausmessen in Richtung Y - positiv

Vel 5.0

MoveAbsStopOnInput Y(R_StartPosY+100.0) E_CaliperInput==1

Vel 1.0

MoveAbsStopOnInput Y(Pos1.Y-1.0) E_CaliperInput==0

R_Pos1_Y=GetLatchedPosition Y

R_Pos1_Y=R_Pos1_Y/1000.0

FastAbs YR_StartPosY

;--------------------------------------------------------

;Ausmessen in Richtung Y - negativ

Vel 5.0

MoveAbsStopOnInput Y(R_StartPosY-100.0) E_CaliperInput==1

Vel 1.0

MoveAbsStopOnInput Y(Pos1.Y+1.0) E_CaliperInput==0

R_Pos2_Y=GetLatchedPosition Y

R_Pos2_Y=R_Pos2_Y/1000.0

FastAbs YR_StartPosY

;--------------------------------------------------------

;Ausmessen in Richtung Z - Boden der Tasche

Vel 5.0

MoveAbsStopOnInput Z(R_StartPosZ-100.0) E_CaliperInput==1

Vel 1.0

MoveAbsStopOnInput Z(Pos1.Z+1.0) E_CaliperInput==0

R_Pos1_Z=GetLatchedPosition Z

R_Pos1_Z=R_Pos1_Z/1000.0

R_Temp=R_StartPosZ+50.0

If(R_Temp>0.0)

R_Temp=0.0

EndIf

FastAbs ZR_Temp

R_Temp=R_Pos1_X+2.0

FastAbs XR_Temp

Vel 5.0

MoveAbsStopOnInput Z(R_StartPosZ-100.0) E_CaliperInput==1

Vel 1.0

MoveAbsStopOnInput Z(Pos1.Z+1.0) E_CaliperInput==0

R_Pos2_Z=GetLatchedPosition Z

R_Pos2_Z=R_Pos2_Z/1000.0

R_Temp=Pos1.Z+50.0

If(R_Temp>0.0)

R_Temp=0.0

EndIf

FastAbs ZR_Temp

;--------------------------------------------------------

;Ergebnis

R_ResultX=R_Pos2_X-R_Pos1_X

R_ResultY=R_Pos2_Y-R_Pos1_Y

R_ResultZ=R_Pos1_Z-R_Pos2_Z

Str_Tmp1=StrFormat(Str_Tmp1 "Länge (X): %.3f" R_ResultX)

Str_Tmp2=StrFormat(Str_Tmp2 "Breite (Y): %.3f" R_ResultY)

Str_Tmp3=StrFormat(Str_Tmp3 "Tiefe (Z): %.3f" R_ResultZ)

MessageBox "Ergebnis:\n\n"+Str_Tmp1+"\n"+Str_Tmp2+"\n"+Str_Tmp3

ProgEnd ;Ende des Programms

;--------------------------------------------------------

Siehe auch: MoveAbsStopOnInput, GetLatchedPosition


MOverride

MOverride ovr

Programmatische Änderung des Override

Dieser Befehl ändert den Geschwindigkeitsoverride für eine aktive Verfahrbewegung. Die Angabe des Override erfolgt in % (Prozent). Der aktuelle Override wird sofort auf den Wert ovr gesetzt, auch wenn momentan eine Bewegung aktiv ist.

In Verbindung mit dem Operator # (Starte Bewegung, kehre sofort zurück) können komplexe Bewegungsabläufe realisiert werden.

Beispiel:

;Die folgende Bewegung wird gestartet, der

;Programmablauf setzt sich nach Ende der

;Bewegung fort

MoveAbs X50.0

;Diese Bewegung wird gestartet, der

;Programmablauf setzt sich unmittelbar nach

;dem Beginn der Bewegung fort

#MoveRel X100.0

;Solange die Bewegung aktiv ist, wird geprueft

;ob Eingang E1.1 aktiv ist, wenn Ja wird

;der Geschwindigkeits-Override auf 20% gesetzt,

;sonst wird der Override auf 100% gesetzt

WHILE INMOTION

IF GETPORT E1 & 0x01

MOVERRIDE 20

ELSE

MOVERRIDE 100

ENDIF

ENDWHILE


MReset

Ausführen eines Reset der Motion Control

Dieser Befehl dient dazu, programmatisch einen Reset der Motion Control auszuführen. Ein Reset ist insbesondere dann erforderlich, wenn sich die Anlage in einem nicht definierten Zustand befindet.

Zu beachten ist, daß bei verschiedenen Steuerungstypen nach einem Reset auf jeden Fall eine Referenzfahrt erforderlich ist, bevor Fahrbewegungen der Achsen durchgeführt werden können.

Diese Steuerungen benötigen eine Referenzfahrt nach einem Reset:

·IMC4

·IFC5 (Interfacekarten-Serie)

·IT116 / IT116 flash

Beispiel:

;Wenn Bit 1 von Eingangsport 2 aktiv ist:

;Reset der Steuerung mit anschliessender

;Referenzfahrt

If E2.1

MReset

Ref XYZ

EndIf


MResetReferenceFlag

MResetReferenceFlag [axis_system] axis_code

Rücksetzen des Flags "Achse ist referenziert"

Befehl zum Rücksetzen des Flags "Achsen sind referenziert", d.h. mit Hilfe dieses Kommandos wird das Flag "NEED_REFERENCE_RUN" (Referenzfahrt benötigt) im Statuswort der Motion Control gesetzt.

Die unmittelbare Folge des Aufrufs ist, dass erneut referenziert werden muss.

Syntax:

MResetReferenceFlag [axis_system] axis_code

Parameter des Befehls:

axis_system | Optionaler Parameter: Angabe des Achssystems, für welches das Flag "Achse referenziert" zurückgesetzt werden soll. Mögliche Werte des Parameters sind: 1 (Achssystem 1), 2 (Achssystem 2), 3 (Achssystem 1 und 2)
axis_code | Angabe der Achsen, für welche das Flag "Achse ist referenziert" zurückgesetzt werden soll. Die Angabe der Achse erfolgt über einen Integer-Wert, dessen einzelnen Bits die folgende Bedeutung haben: Bit 1: Achse X Bit 2: Achse Y Bit 3: Achse Z Bit 4: Achse A usw.

Beispiel:

(1)

;Im Achssstem 1 wird das Flag "Achse ist referenziert"

;jeweils für die Achsen X, Y und Z zurückgesetzt, d.h.

;Diese Achsen können jetzt nicht mehr mit einer Bewegung

;beauftragt werden, sondern müssen erneut referenziert

;werden

MResetReferenceFlag 1 0x07


MStart

Weiterführen einer angehaltenen Bewegung

Dieser Befehl führt eine angehaltene Verfahrbewegung weiter. In Verbindung mit dem Operator # (Starte Bewegung, kehre sofort zurück) können komplexe Bewegungen ausgeführt werden.

Beispiel:

;Die folgende Bewegung wird gestartet, der

;Programmablauf setzt sich nach Ende der

;Bewegung fort

MoveAbs X50.0

;Diese Bewegung wird gestartet, der

;Programmablauf setzt sich unmittelbar nach

;dem Beginn der Bewegung fort

#MoveRel X100.0

;Solange die Bewegung aktiv ist, wird geprueft

;ob Eingang E1.1 aktiv ist, wenn Ja wird

;die Bewegung angehalten,

;wenn Bit aktiv ist wird die Bewegung weitergeführt

WHILE INMOTION

IF GETPORT E1 & 0x01

MSTOP

SETBIT A1.2

ENDIF

IF GETPORT E1 & 0x02

MSTART

RESBIT A1.2

ENDIF

ENDWHILE


MStop

Anhalten einer laufenden Bewegung

Dieser Befehl hält eine aktive Verfahrbewegung an. In Verbindung mit dem Operator # (Starte Bewegung, kehre sofort zurück) können komplexe Bewegungen ausgeführt werden.

Beispiel:

;Die folgende Bewegung wird gestartet, der

;Programmablauf setzt sich nach Ende der

;Bewegung fort

MoveAbs X50.0

;Diese Bewegung wird gestartet, der

;Programmablauf setzt sich unmittelbar nach

;dem Beginn der Bewegung fort

#MoveRel X100.0

;Solange die Bewegung aktiv ist, wird geprueft

;ob Eingang E1.1 aktiv ist, wenn Ja wird

;die Bewegung angehalten,

;wenn

WHILE INMOTION

IF GETPORT E1 & 0x01

MSTOP

SETBIT A1.2

ENDIF

IF GETPORT E1 & 0x02

MSTART

RESBIT A1.2

ENDIF

ENDWHILE


NOT

Operator für die logische Negation einer Bedingung

Logische Negation einer Bedingung. Der Operator NOT kann in Zusammenhang mit der Prüfung von Bedingungen für Schleifen, Verzweigungen u. ä. eingesetzt werden

Beispiel:

;Wenn Bit 1 Eingang 1 nicht aktiv ist, wird in negativer

;Richtung gefahren, sonst in positiver Richtung

If NOT GetPort E1 & 0x01

MoveRel X-10.0

ELSE

MoveRel X10.0

ENDIF


NotifyError

NotifyError errorcode [Param1=Strn|text] [Param2=Strn|text]

Übertragen eines Fehlercodes aus dem CNC-Programm in den Fehlerspeicher der Steuerung

Mit Hilfe dieses Befehls kann ein (benutzerspezifischer) Fehlercode aus dem CNC-Programm in den Fehlerspeicher der Anwendung geschrieben werden. Der Übertrag in den Fehlerspeicher führt nicht zu einer Anzeige des Fehlers mit dem Standard-Fehlermeldungsdialog der Anwendung, der Programmablauf wird auch nicht angehalten.

Der Fehlercode kann nach der erfolgten CNC-Bearbeitung bei der Kontrolle des Fehlerspeichers jederzeit angezeigt und bewertet werden.

Parameter

errorcode | Der Fehlercode als nicht vorzeichenbehafteter 32-Bit-Wert.
Strn | Eine String-Variable, deren Inhalt zusätzlich in der Fehlermeldung angezeigt wird.
text | Eine Zeichenkette, welche zusätzlich in der Fehlermeldung angezeigt wird.

Zusammensetzung des Fehlercodes

Der Fehlercode wird aus diversen Bits bzw. Bytes zusammengesetzt, welche den Typ, die Fehlergruppe sowie den spezifischen Fehlercode bescheiben:

.------------- 2 Bit für den Typ der Fehlermeldung

| 1 Bit für die Kennung "User-Fehlermeldung"

| 1 Bit frei

| .----------- 3 Byte für die Herkunft/Fehlergruppe des Fehlers

| | .------- 4 Byte für den Fehlercode

| | |

| | |

0x 0 000 00 00

Darstellung aufgelöst nach den einzelnen Bits:

3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1

1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0

|---|-|-|-----------------------|-------------------------------|

|Typ|C| | Herkunft des Fehlers | Fehlercode |

---------------------------------------------------------------

In den Anwendungen Remote und ProNC sind bereits eine Vielzahl von Fehlercodes und Fehlergruppen definiert, die sich in einem eingegrenzten Wertebereich befinden. Für die Programmierung durch den Anwender ist die Fehlergruppe ab 4000 (dezimal) reserviert, das entspricht absolut

in hexadezimaler Notation | 0x0FA00000
in dezimaler Notation | (4000*65536) -> 4000 (dez) um 16 Bit nach links geschoben

Die unteren 16 Bit können vollständig für eigene Fehlercodes verwendet werden, diese bewegen sich demzufolge im Bereich von 0 ... 65535.

Die höchstwertigen 2 Bit des Fehlercodes geben den Typ des Codes an:

in hexadezimaler Notation

0x00000000 | Kein Fehler, Erfolg
0x40000000 | Info, Hinweis
0x80000000 | Warnung
0xC0000000 | Fehler

in dezimaler Notation

0 | Kein Fehler, Erfolg
1073741824 | Info, Hinweis
2147483648 | Warnung
3221225472 | Fehler

Es empfiehlt sich, aus Gründen der Übersichtlichkeit mit hexadezimalen Notationen für den Fehlertyp und die Fehlerherkunft zu arbeiten.

#define ERRTYPE_SUCCESS 0x00000000

#define ERRTYPE_INFO 0x40000000

#define ERRTYPE_WARNING 0x80000000

#define ERRTYPE_ERROR 0xC0000000

#define ERRFAC_USER 0x0FA00000

Der Fehlercode läßt sich durch bitweise Veroderung sehr einfach zusammensetzen, z.B. würde der Befehl

NotifyError (ERRTYPE_WARNING|ERRFAC_USER|2)

die anwenderspezifische Warnung mit dem Code 2 in den Fehlerspeicher eintragen.

Weitere Verarbeitung

Für jeden anwenderspezifischen Fehlercode kann in einer korrespondierenden Fehlertextdatei ein Fehlertext hinterlegt werden. Die Benennung der Datei richtet sich dabei nach dem numerischen Identifier der Fehlergruppe.

Prinzipiell ist der Dateiname so aufgebaut:

ErrXXXX.txt | deutsche Fehlertexte
ErrXXXX_Eng.txt | englische Fehlertexte
ErrXXXX_Fre.txt | französische Fehlertexte
ErrXXXX_Hun.txt | ungarische Fehlertexte

XXXX steht dabei für den numerischen Wert der Fehlergruppe, d.h. wenn als Code für die Fehlergruppe 4000 gewählt wäre, würde der Dateiname entsprechend Err4000.txt sein.

In der Fehlertextdatei sind die Einträge zeilenweise zu erstellen, eine Zeile hat diesen Aufbau:

3-4000-21: \nAchtung: Die Anzahl der Teile im Vorratsbehälter ist sehr gering!\n\nBitte auffüllen!

Der Code der Fehlermeldung ist nach dem Muster "Typ-Fehlergruppe-Fehlercode" aufgebaut:

Typ | entspricht dem Wert der beiden höchstwertigen Bits des Fehlercodes und gibt den Typ des Fehlers an 0 Kein Fehler 1 Info 2 Warnung 3 Fehler
Fehlergruppe | entspricht dem Wert der Bytes 5, 6 und 7 des Fehlercodes, die Fehlergruppe kann für die anwenderspezifischen Fehlercodes ein Wert ab 4000 sein.
Fehlercode | ein beliebiger Wert zwischen 0 und 65535

Ein Zeilenumbruch in der Anzeige des Fehlers mit dem Standard-Fehlermeldungsdialog kann durch einfügen der Zeichenfolge "\n" im Fehlermeldungstext erreicht werden.

Falls bei Ausführung des Befehls NotifyError ein oder zwei zusätzliche Infotexte oder Zeichenkettenvariablen übergeben wurden, müssen in der Fehlertextzeile dafür Platzhalter eingefügt werden. Diese Platzhalter bestehen aus der Zeichenfolge "%s". Eine Fehlermeldungszeile mit Anzeige der übergebenen Texte würde also so aussehen:

3-4000-21: \nFehler: Die Datei %s ist nicht vorhanden

Beispiel:

(1)

#define ERRTYPE_SUCCESS 0x00000000

#define ERRTYPE_INFO 0x40000000

#define ERRTYPE_WARNING 0x80000000

#define ERRTYPE_ERROR 0xC0000000

#define ERRFAC_USER 0x0FA00000

#define ERR_EXTERROR1 1

#define ERR_EXTERROR2 2

#define ERR_EXTERROR3 3

#define ERR_EXTERROR4 4

#define ERR_FEWPARTS 21

#define ERR_COOLANTLEVEL 51

ProgBegin

;Ueberpruefungen zu Beginn des Programms

;Eingang 1.5 signalisiert einen externen Fehler,

;es darf nicht weitergearbeitet werden.

If(E1.5==1)

NotifyError (ERRTYPE_ERROR|ERRFAC_USER|ERR_EXTERROR1)

ProgAbort

EndIf

;Eingang 1.6 signalisiert ebenfalls einen Fehler,

;die weitere Bearbeitung ist moeglich.

If(E1.6==1)

NotifyError (ERRTYPE_ERROR|ERRFAC_USER|ERR_EXTERROR2)

EndIf

;Analogeingang 2 repraesentiert den Fuellstand eines

;Materialbehaelters, es ist wenig Material vorhanden

;Eine Warnung wird in den Fehlerspeicher uebertragen

R1=GetAnalog E2

If(R1<2.5)

NotifyError (ERRTYPE_WARNING|ERRFAC_USER|ERR_FEWPARTS)

EndIf

;Der Kuehlmittelstand ist zu niedrig, Hinweis an den Anwender

If(E2.8==0)

MessageBox ERROR "Der Kühlmittelstand ist zu gering, bitte auffüllen...!"

EndIf

;Der Anwender hat nicht aufgefuellt, also Programm abbrechen

If(E2.8==0)

NotifyError (ERRTYPE_ERROR|ERRFAC_USER|ERR_COOLANTLEVEL)

ProgAbort

EndIf

(2)

#define ERRTYPE_SUCCESS 0x00000000

#define ERRTYPE_INFO 0x40000000

#define ERRTYPE_WARNING 0x80000000

#define ERRTYPE_ERROR 0xC0000000

#define ERRFAC_USER 0x0FA00000

#define ERR_OVERHEAT 11

ProgBegin

Str1=""

Str2=""

Str3=""

Str4=""

;Ueberpruefung diverser Hardwarekomponenten

If(E2.1==1)

Str1="Warpkern 1"

EndIf

If(E2.2==1)

I1=StrGetLength(Str1)

If(I1>0)

Str1=Str1+", "

EndIf

Str1=Str1+"Warpkern 2"

EndIf

If(E2.3==1)

I1=StrGetLength(Str1)

If(I1>0)

Str1=Str1+", "

EndIf

Str1=Str1+"Phaserbank 1"

EndIf

If(E2.4==1)

I1=StrGetLength(Str1)

If(I1>0)

Str1=Str1+", "

EndIf

Str1=Str1+"Phaserbank 2"

EndIf

If(E2&0x0F)

NotifyError (ERRTYPE_ERROR|ERRFAC_USER|ERR_OVERHEAT) Param1=Str1

ProgAbort

EndIf

...

ProgEnd

Siehe auch: SignalError


OnEmergencyOff

Event-Handler für das Ereignis "Not-Aus-Schalter wurde aktiviert"

In ProNC ab Version 1.45.x besteht die Möglichkeit, auf verschiedene Ereignisse, die während einer Programmbearbeitung stattfinden können, programmatisch mit sogenannten Event-Handlern zu reagieren.

Bei jedem Auftreten des Ereignisses, für welches eine Eventhandler-Routine hinterlegt wurde, wird in die entsprechende Subroutine gesprungen und der darin enthaltene Code ausgeführt. Nach Abschluß der Subroutine mit dem Befehl "EventReturn" wird im normalen Programmablauf fortgefahren.

Der Befehl OnEmergencyOff kennzeichnet die Eventhandler-Routine, die ausgeführt wird, wenn der NOT-AUS-Schalter der Maschine betätigt wurde bzw. einer der Schalter der NOT-AUS-Kette aktiviert wurde. Hier kann nun auf das Auftreten des Ereignisses geeignet reagiert werden, z.B. mit einem Abschalten des Kühlmittelflusses, dem Ausschalten der Frässpindel usw.

Die Deklaration der Subroutine des Eventhandlers muß vor der Deklaration des Hauptprogramms erfolgen. Die Subroutine des Eventhandlers muß mit dem Befehl "EventReturn" abgeschlossen werden.

Beispiel:

;*****************************

;EventHandler fuer das

;Auftreten des Ereignisses

;NOT-AUS-Schalter betätigt

;Ausgang 1.1 wird zurueckgesetzt

;Kühlmittelpumpe und Fraesspindel

;werden ausgeschaltet

;*****************************

OnEmergencyOff

ResBit A1.1

Spindle OFF

Coolant OFF

EventReturn

;-----------------------------

;*****************************

;Hauptprogramm

;*****************************

ProgBegin

...

ProgEnd

;-----------------------------

Siehe auch: EventReturn, OnProgBegin, OnProgEnd, OnProcessStop, OnProcessStart, OnError, OnTimer


OnError

Event-Handler für das Ereignis "Ein Fehler ist aufgetreten"

In ProNC ab Version 1.45.x besteht die Möglichkeit, auf verschiedene Ereignisse, die während einer Programmbearbeitung stattfinden können, programmatisch mit sogenannten Event-Handlern zu reagieren.

Bei jedem Auftreten des Ereignisses, für welches eine Eventhandler-Routine hinterlegt wurde, wird in die entsprechende Subroutine gesprungen und der darin enthaltene Code ausgeführt. Nach Abschluß der Subroutine mit dem Befehl "EventReturn" wird im normalen Programmablauf fortgefahren.

Der Befehl OnError deklariert die Eventhandler-Routine, die bei jedem Auftreten eines Programmfehlers ausgeführt wird. An dieser Stelle kann auf das Auftreten des Fehlers geeignet reagiert werden, z.B. mit einem Abschalten des Kühlmittelflusses, dem Ausschalten der Frässpindel usw.

Die Deklaration der Subroutine des Eventhandlers muß vor der Deklaration des Hauptprogramms erfolgen. Die Subroutine des Eventhandlers muß mit dem Befehl "EventReturn" abgeschlossen werden.

Beispiel:

;*****************************

;EventHandler fuer das

;Auftreten eines Fehlers

;Bei einem Fehler wird

;Ausgang 1.1 geloescht und

;Kühlmittelpumpe und Fraesspindel

;ausgeschaltet

;*****************************

OnError

ResBit A1.1

Spindle OFF

Coolant OFF

EventReturn

;-----------------------------

;*****************************

;Hauptprogramm

;*****************************

ProgBegin

...

ProgEnd

;-----------------------------

Siehe auch: EventReturn, OnProgBegin, OnProgEnd, OnProcessStop, OnProcessStart, OnEmergencyOff, OnTimer


OnProcessStart

Event-Handler für das Ereignis "Bearbeitung wird gestarted"

In ProNC ab Version 1.45.x besteht die Möglichkeit, auf verschiedene Ereignisse, die während einer Programmbearbeitung stattfinden können, programmatisch mit sogenannten Event-Handlern zu reagieren.

Bei jedem Auftreten des Ereignisses, für welches eine Eventhandler-Routine hinterlegt wurde, wird in die entsprechende Subroutine gesprungen und der darin enthaltene Code ausgeführt. Nach Abschluß der Subroutine mit dem Befehl "EventReturn" wird im normalen Programmablauf fortgefahren.

Der Befehl OnProcessStart kennzeichnet die Eventhandler-Routine, die ausgeführt wird, wenn eine Bearbeitung nach einem Stop der Bearbeitung (z.B. durch eine Bedienerhandlung) weitergeführt wird. In der Eventhandler-Routine können alle notwendigen Aktionen ausgeführt werden, die für die Weiterführung der Bearbeitung erforderlich sind.

Die Deklaration der Subroutine des Eventhandlers muß vor der Deklaration des Hauptprogramms erfolgen. Die Subroutine des Eventhandlers muß mit dem Befehl "EventReturn" abgeschlossen werden.

Beispiel:

;*****************************

;EventHandler fuer die Aus-

;fuehrung von Aktionen bei

;einem STOP der Bearbeitung

;*****************************

OnProcessStop

Spindle OFF

Coolant OFF

EventReturn

;-----------------------------

;*****************************

;EventHandler fuer die Aus-

;fuehrung von Aktionen bei

;einer Weiterfuehrung der

;Bearbeitung nach einem Stop

;*****************************

OnProcessStart

Spindle ON

Coolant ON

EventReturn

;-----------------------------

;*****************************

;Hauptprogramm

;*****************************

ProgBegin

...

ProgEnd

;-----------------------------

Siehe auch: EventReturn, OnProgBegin, OnProgEnd, OnProcessStop, OnError, OnEmergencyOff, OnTimer


OnProcessStop

Event-Handler für das Ereignis "Bearbeitung wird gestoppt"

In ProNC ab Version 1.45.x besteht die Möglichkeit, auf verschiedene Ereignisse, die während einer Programmbearbeitung stattfinden können, programmatisch mit sogenannten Event-Handlern zu reagieren.

Bei jedem Auftreten des Ereignisses, für welches eine Eventhandler-Routine hinterlegt wurde, wird in die entsprechende Subroutine gesprungen und der darin enthaltene Code ausgeführt. Nach Abschluß der Subroutine mit dem Befehl "EventReturn" wird im normalen Programmablauf fortgefahren.

Der Befehl OnProcessStop kennzeichnet die Eventhandler-Routine, die ausgeführt wird, wenn eine Bearbeitung angehalten wird. Das Anhalten der Bearbeitung ist im allgemeinen eine Bedienhandlung in der Programmoberfläche. In der Eventhandler-Routine für den Stop der Bearbeitung können alle Aktionen ausgeführt werden, die im Zusammenhang mit dem STOP-Zustand erforderlich sind oder gewünscht werden.

Die Deklaration der Subroutine des Eventhandlers muß vor der Deklaration des Hauptprogramms erfolgen. Die Subroutine des Eventhandlers muß mit dem Befehl "EventReturn" abgeschlossen werden.

Beispiel:

;*****************************

;EventHandler fuer die Aus-

;fuehrung von Aktionen bei

;einem STOP der Bearbeitung

;*****************************

OnProcessStop

Spindle OFF

Coolant OFF

EventReturn

;-----------------------------

;*****************************

;EventHandler fuer die Aus-

;fuehrung von Aktionen bei

;einer Weiterfuehrung der

;Bearbeitung nach einem Stop

;*****************************

OnProcessStart

Spindle ON

Coolant ON

EventReturn

;-----------------------------

;*****************************

;Hauptprogramm

;*****************************

ProgBegin

...

ProgEnd

;-----------------------------

Siehe auch: EventReturn, OnProgBegin, OnProgEnd, OnProcessStart, OnError, OnEmergencyOff, OnTimer


OnProgBegin

Event-Handler für das Ereignis "Bearbeitung beginnt"

In ProNC ab Version 1.45.x besteht die Möglichkeit, auf verschiedene Ereignisse, die während einer Programmbearbeitung stattfinden können, programmatisch mit sogenannten Event-Handlern zu reagieren.

Bei jedem Auftreten des Ereignisses, für welches eine Eventhandler-Routine hinterlegt wurde, wird in die entsprechende Subroutine gesprungen und der darin enthaltene Code ausgeführt. Nach Abschluß der Subroutine mit dem Befehl "EventReturn" wird im normalen Programmablauf fortgefahren.

Der Befehl OnProgBegin deklariert die Eventhandler-Routine, die bei jedem Beginn der Bearbeitung einer Programmdatei ausgeführt wird. Es ist hierbei nicht von Bedeutung, ob der Beginn der Bearbeitung durch Drücken der Schaltfläche "Start", einen automatischen Start, das Betätigen eines Shortkeys, durch ein externes Signal oder auf andere Weise erreicht wurde.

Die Deklaration der Subroutine des Eventhandlers muß vor der Deklaration des Hauptprogramms erfolgen. Die Subroutine des Eventhandlers muß mit dem Befehl "EventReturn" abgeschlossen werden.

Beispiel:

;*****************************

;EventHandler fuer den

;Beginn der Bearbeitung

;Bei jedem Programmstart wird

;Ausgang 1.4 geloescht und

;Ausgang 1.1 gesetzt

;*****************************

OnProgBegin

ResBit A1.4

SetBit A1.1

EventReturn

;-----------------------------

;*****************************

;Hauptprogramm

;*****************************

ProgBegin

...

ProgEnd

;-----------------------------

Siehe auch: EventReturn, OnProgEnd, OnProcessStop, OnProcessStart, OnError, OnEmergencyOff, OnTimer


OnProgEnd

Event-Handler für das Ereignis "Bearbeitung wird beendet"

In ProNC ab Version 1.45.x besteht die Möglichkeit, auf verschiedene Ereignisse, die während einer Programmbearbeitung stattfinden können, programmatisch mit sogenannten Event-Handlern zu reagieren.

Bei jedem Auftreten des Ereignisses, für welches eine Eventhandler-Routine hinterlegt wurde, wird in die entsprechende Subroutine gesprungen und der darin enthaltene Code ausgeführt. Nach Abschluß der Subroutine mit dem Befehl "EventReturn" wird im normalen Programmablauf fortgefahren.

Der Befehl OnProgEnd deklariert die Eventhandler-Routine, die bei jedem Beenden der Bearbeitung einer Programmdatei ausgeführt wird. Es ist hierbei nicht von Bedeutung, ob das Ende der Bearbeitung durch Drücken der Schaltfläche "Ende", ein programmatisches Programmende, einen Programmabbruch, das Betätigen eines Shortkeys, durch ein externes Signal oder auf andere Weise erreicht wurde.

Die Deklaration der Subroutine des Eventhandlers muß vor der Deklaration des Hauptprogramms erfolgen. Die Subroutine des Eventhandlers muß mit dem Befehl "EventReturn" abgeschlossen werden.

Beispiel:

;*****************************

;EventHandler fuer das

;Ende der Bearbeitung

;Bei Ende der Bearbeitung wird

;Ausgang 1.1 geloescht und

;die Fraesspindel ausgeschaltet

;*****************************

OnProgEnd

ResBit A1.1

Spindle OFF

EventReturn

;-----------------------------

;*****************************

;Hauptprogramm

;*****************************

ProgBegin

...

ProgEnd

;-----------------------------

Siehe auch: EventReturn, OnProgBegin, OnProcessStop, OnProcessStart, OnError, OnEmergencyOff, OnTimer


OnTimer

OnTimer time

Eventhandler für ein Timer-Ereignis

In ProNC ab Version 1.45.x besteht die Möglichkeit, auf verschiedene Ereignisse, die während einer Programmbearbeitung stattfinden können, programmatisch mit sogenannten Event-Handlern zu reagieren.

Bei jedem Auftreten des Ereignisses, für welches eine Eventhandler-Routine hinterlegt wurde, wird in die entsprechende Subroutine gesprungen und der darin enthaltene Code ausgeführt. Nach Abschluß der Subroutine mit dem Befehl "EventReturn" wird im normalen Programmablauf fortgefahren.

Der Befehl OnTimer kennzeichnet eine Eventhandler-Routine, die zyklisch ausgeführt wird. Die Zykluszeit für das Timer-Ereignis wird mit dem übergebenen Parameter "time" festgelegt.

Verwendete Parameter:

time

Angabe der Zykluszeit für das Timer-Ereignis in Millisekunden

Die Deklaration der Subroutine des Eventhandlers muß vor der Deklaration des Hauptprogramms erfolgen. Die Subroutine des Eventhandlers muß mit dem Befehl "EventReturn" abgeschlossen werden.

Beispiel:

;=============================

;Eventhandler fuer ein Timer-

;Ereignis. Diese Funktion wird

;alle 1000 Millisekunden

;aufgerufen

;Im Ergebnis wechselt Ausgang

;2.1 sekündlich den Ausgangs-

;pegel von 0 auf 1 und

;umgekehrt.

;=============================

OnTimer 1000

I499=$I1&0x01

SetBit Out2.1=I499

$I1=$I1+1

EventReturn

;-----------------------------

;*****************************

;Hauptprogramm

;*****************************

ProgBegin

$I1=0

...

ProgEnd

;-----------------------------

Siehe auch: EventReturn, OnProgBegin, OnProgEnd, OnProcessStop, OnProcessStart, OnError, OnEmergencyOff


OpenCom

OpenCom nr baudrate

Öffnen einer seriellen Schnittstelle

Für das Senden und Empfangen von Zeichen über eine serielle Schnittstelle des PC's ist es erforderlich, die gewünschte Schnittstelle mit Hilfe des Befehls "OpenCom" zu öffnen und auf die geforderten Übertragungsparameter einzustellen.

Hinweis:

Die Befehle zum Senden (Tx) bzw. Empfangen (Rx) von Zeichen über eine serielle Schnittstelle COMx beziehen sich immer auf die jeweilige, für eine bestimmte Übertragungsrate geöffnete Schnittstelle COMn (n=1...Anzahl der Schnittstellen). Es ist also nicht erforderlich, in den Befehlen für das Senden und Empfangen von Zeichen die Nummer der geöffneten Schnittstelle anzugeben. Falls innerhalb eines ISO- oder PAL-Anwendungsprogrammes z.B. von der Schnittstelle COM1 zur Schnittstelle COM3 gewechselt werden soll, so ist COM1 zu schließen und danach COM3 zu öffnen.

Verwendete Parameter:

nr Angabe der Nummer der zu öffnenden seriellen Schnittstelle

baudrate Angabe der Übertragungsrate, die für die zu öffnende Schnittstelle eingestellt werden soll. Mögliche Werte für die Übertragungsrate sind:

110
150
300
1200
2400
4800
9600
19200
38400
57600
115200
230400

Sollte bei der Verwendung des Befehls OpenCom keine Übertragungsrate angegeben werden, wird der Default-Wert 19200 Bit/sec verwendet.

Beispiele:

;Oeffnen der Schnittstelle COM1

;Definition der Baudrate 19200 Bit/sec

OpenCom 1 19200

;Senden von 6 Bytes über die serielle Schnittstelle COM1

I10=6

I1=0x31 I2=0x32 I3=0x33 I4=0x34 I5=0x35

;Steuerzeichen CR=13 dez am Ende

I6=0x0d

;6 Byte ab I1 senden

TxCom I10 I1

;Ueberpruefung des Sendevorgangs

;I10 enthaelt die Anzahl gesendeter Zeichen

If I10!=6

MessageBox OK "Fehler bei Tx: zu wenig Zeichen gesendet ..."

EndIf

;Senden des Inhaltes der STR-Variable Str1 als

;Zeichenkette über die serielle Schnittstelle COM1

;Anzahl der zu sendenden Zeichen

I10=40

;Initialisierung der String-Variablen

Str1="Hello how are you ?! 1234567890 =&/() ,;.ÄÖÜ"

;Die ersten 40 Zeichen der Str-Variable Str1 werden gesendet

TxCom I10 Str1

;1 Sekunde warten

Delay 1000

;Empfang von 6 Bytes über die COM1

;6 Byte sollen empfangen werden

I10=6

I11=0 I12=0 I13=0 I14=0 I15=0 I16=0

;Die 6 Rx-Bytes ab I11 abspeichern in I11, I12, I13 ...

RxCom I10 I11

;I10 enthaelt die Anzahl empfangener Zeichen

If I10==6

Display 1 1 "Rx: %I10% Zeichen -> %I11% %I12% %I13% %I14% %I15% %I16% "

Else

MessageBox ERROR OK "Fehler bei Rx: Es wurden nur %I10% Zeichen empfangen..."

EndIf

; 44 Byte sollen als Zeichenkette empfangen werden

I10=44

Str2="..."

;44 Byte werden in Str2 uebertragen...

RxCom I10 Str2

;Geöffnete Schnittstelle COM1 schließen:

CloseCom

Siehe auch: CloseCom, RxCom, TxCom


OpenEth

In/Rn=OpenEth ipadr portadr ErrorCode=Im

Aufbau einer Ethernet-Verbindung zum IP-Host

Show/Hide Hidden Text

Dieser Befehl wird verwendet, um die Ethernet-Kommunikation mit einem Server aufzubauen.

Der Rückgabewert der Funktion ist ein Handle, der bei nachfolgenden Aufrufen der Funktionen RxEth, TxEth, GetStatus Eth und CloseEth zur Identifikation der geöffneten Verbindung dient.

Verwendete Parameter:

ipadr | Die IP-Adresse des Hostrechners bzw. über Ethernet erreichbaren Geräts. Die Angabe der IP-Adresse erfolgt in Form einer Zeichenkette (z.B. "192.168.32.123", in Anführungszeichen) oder als Zeichenkettenvariable (Str-Variable).
portadr | Angabe eines offenen Ports auf dem Zielgerät mit der IP-Adresse ipadr. Die Portadresse kann durch eine Integer-Variable oder direkt als numerischer Wert angegeben werden.
ErrorCode | Dieser Parameter dient zur Angabe einer Integer-Variablen mit dem Index m, in welcher der Fehlercode des Aufrufs abgelegt wird.
In | Eine Integer-Variable mit dem Index n, in der das Ergebnis des Befehlsaufrufs, der Handle der Verbindung, zugewiesen wird.
Rn | Alternativ: Eine Real-Variable mit dem Index n, an die das Ergebnis des Befehlsaufrufs (der Handle der Verbindung) zugewiesen wird.

Herstellung einer Verbindung zu einem IP-Host

Zunächst muß dem Computer oder dem Gerät, welches über eine Netzwerkverbindung erreichbar sein soll, eine IP-Adresse im Netzwerk zugewiesen werden. Dies ist abhängig von der Netzwerkadministration und erfolgt entweder automatisch oder manuell. Einzelne Clients händisch in ein IP-Netzwerk einzubinden ist möglich, aber aufwendig und fehleranfällig. Ein DHCP-Server automatisiert diesen Vorgang und weist in einem Netzwerk-System IP-Adressen automatisch zu.

Für die Kommunikation in IP-Netzen spielen weiterhin die Ports eine wichtige Rolle. Anwendungen oder Geräte, die einen Service im Netzwerk anbietet, öffnen dazu einen Port. Dieser Port geht dabei zunächst in den Status "Listen" (bzw. "Abhören") und wartet auf Verbindungsversuche. Nach dem Herstellen einer Verbindung wechselt der Status in "Connected" (bzw. "Hergestellt"). Nun ist eine Kommunikation zwischen Client und Server möglich.

Konfigurieren Sie also das Gerät, zu dem eine Ethernet-Verbindung hergestellt werden soll, so daß es über eine IP-Adresse verfügt und ein Port für die Kommunikation geöffnet hat. Dies kann auf unterschiedliche Weisen erfolgen, im allgemeinen ist ein Vorgehen nach der Beschreibung im Handbuch des Geräts sinnvoll.

Hinweis: Zu Testzwecken kann auch auf dem Client-Rechner unter der Localhost-Adresse (127.0.0.1) ein offenes Port angesprochen werden, dazu muß ein geeignetes Terminal-Programm als TCP-Server gestartet und das gewünschte Port geöffnet werden.

Verwenden Sie auf dem Client-Rechner in der Eingabeaufforderung den Befehl "cmd", um den Kommandozeileninterpreter von Windows zu öffnen. Mit dem Befehl "ping ipadresse" in der Kommandozeile kann überprüft werden, ob das Host-Gerät erreichbar ist:

Es ist zu sehen, daß das Gerät mit einer Reaktionszeit von weniger als 1ms antwortet.

Mit einem Portscannner (wie z.B. Nmap oder PortScan) kann nun getestet werden, ob das konfigurierte Port unter der festgelegten IP-Adresse geöffnet ist.

Hinweis: Die Verwendung von Portscannern ist nur auf eigenen Systemen legal. Bei einem Einsatz gegen fremde Systeme und Netzwerke ist die Rechtslage unklar.

Wenn unter der für den IP-Host IP-Adresse in der Liste der geöffneten Ports der auf dem Host geöffnete Port auftaucht, kann die Verbindung nun mit dem Befehl "OpenEth" hergestellt werden.

Beispiel:

;Verbindungsaufbau zwischen Client und Server:

;Verbindungsdaten IP-Adresse und Port-Nummer initialisieren

Str1="127.0.0.1" I1=23 ;IP-Adresse des Localhost

;oder

Str1="192.160.12.77" I1=23 ;IP-Adresse im lokalen Netzwerk

Display Add "Oeffne IP host %S1%, port=%I1% ..."

I0=0 ;Integer-Variable fuer den Handle der Verbindung

I11=0 ;Integer-Variable fuer den ErrorCode

I0=OpenEth Str1 I1 ErrorCode=I11

;"offener Port" ? -> Portadresse in I1

If I0==0

Display Add "FEHLER=%X11% beim Verbindungsaufbau (Open) zum IP-Host %S1%, Abbruch ..."

Abort

Else

Display Add "Verbindung mit IP host %S1% port=%I1% erfolgreich hergestellt..."

EndIf

Siehe auch: CloseEth, RxEth, TxEth, GetStatusEth


OR

Operator für die logische ODER-Verknüpfung

Operator für die logische ODER-Verknüpfung mehrerer Bedingungen. Der Operator OR kann in Zusammenhang mit der Prüfung von Bedingungen für Schleifen, Verzweigungen u. ä. eingesetzt werden.

Beispiel 1:

;Nur wenn R3 kleiner als 5 oder größer als 10 ist,

;wird die Fahrbewegung ausgeführt

IF (R3<5) OR (R3>10)

MOVEREL X-10.0

ENDIF

Beispiel 2:

;Wenn Bit 2 oder Bit 3 von Eingang 2 aktiv ist,

;wird in negativer Richtung gefahren,

;sonst in positiver Richtung

IF E2.2 OR E2.3

MOVEREL X-10.0

ELSE

MOVEREL X10.0

ENDIF


P (Variable)

Pn

Prozess-Variable

Prozess-Variablen besitzen den Wertebereich 0 bis 255 (hexadezimal: 0x00 bis 0xFF). P-Variablen können als Register für ganzzahlige werte im Bereich von 0...255 angesehen werden und eignen sich daher für Operationen mit Werten, die von einem Eingangsport gelesen werden oder in ein Ausgangsport geschrieben werden sollen. Eine P-Variable kann mit Hilfe Bool'scher Verknüpfungen mit anderen P-Variablen oder mit Konstanten (natürliche Zahlen von 0 bis 255 oder Hexadezimalzahlen von 0x00 bis 0xFF) verknüpft werden.

P-Variablen können über einen Index angesprochen werden, welcher im Bereich von 0 bis 99 liegen kann. Das bedeutet, daß die P-Variablen P0 bis P99 programmatisch verwendet werden können.

Die Prozessvariablen mit ungeradem Index (P1, P3, P5 bis P15) repräsentieren zu jeder Zeit die aktuellen Eingabeports E1, E2, E3 bis E8:

P1 = E1

P3 = E2

P5 = E3

P7 = E4

P9 = E5

P11 = E6

P13 = E7

P15 = E8

Allgemein:

P-Index für Eingabeport = Nummer_des_Eingangs * 2 - 1

(mit E-Nummer_des_Eingangs von 1 ... 8)

Die Prozessvariablen mit geradem Index (P0, P2, P4 bis P14) repräsentieren zu jeder Zeit die aktuellen Ausgabeports A1, A2, A3 bis A8:

P0 = A1

P2 = A2

P4 = A3

P6 = A4

P8 = A5

P10 = A6

P12 = A7

P14 = A8

Allgemein:

P-Index für Ausgabeport := Nummer_des_Ausgangs * 2 - 2

(mit Nummer_des_Ausgangs von 1 ... 8)

Initialisierung von P-Variablen mit Konstanten

Für die Initialisierung von P-Variablen können verschiedene Datentypen verwendet werden:

·Angabe von Initialisierungswerten als ganze Zahl
P21=16 ;P21=00010000b

·Angabe von Initialisierungswerten in hexadezimaler Form
P21=0x10 ;P21=00010000b

·Angabe von Initialisierungswerten als binärer Wert
P21=10000b

Beispiele:

P33 {die P-Variable mit dem Index 33}

P66 {die P-Variable mit dem Index 66}

P99 {die P-Variable mit dem Index 99}

;Ausgabeport A1 schreiben

P0=11110000B

;Ausgabeport A2 schreiben

P2=0xF0

;UND-Verknüpfung der Eingange E1 und E2

;und schreiben des Ergebnisses auf Ausgang A1

P20=P1&P3

P0=P20

;Komplexe Verknüpfung der Eingange E1 und E2

;mit P-Variable und Konstante

P21=11000011B

P20=((P1|P3)&0x0F)^P21

P0=P20

;Auswerten eines Eingangs im Programmablauf

If P1&0x02

MoveRel X2.0

EndIf

If P1&0x04

MoveRel X-2.0

EndIf


Parameter

Eingabe von R-Variablen

Mit dem Befehl G98 kann im Anwenderprogramm die Dialogbox "Eingabe von R-Variablen" zur Laufzeit des Programmes aktiviert werden. Damit können die Anfangsbedingungen für einen Programmlauf dynamisch je nach vorliegender Situation angepaßt werden. Um die geänderten Werte der R-Variablen zu übernehmen, wird die Schaltfläche "Übernahme" betätigt. Die Dialogbox wird mit der Taste ESC verlassen, danach wird das CNC-Programm mit dem unmittelbar nach Parameter folgenden Befehl fortgesetzt.

Beispiel:

MoveAbs X10.0

; Bearbeiten von R5 im Dialog

Parameter

For R1=1,R5,1

MoveRel X1.0

EndFor


Path

Bahnfahrt einschalten

Show/Hide Hidden Text

Der Bahnmodus in ProNC ist eine spezielle Betriebsart der Motion-Control, bei der versucht wird, die Segmentübergänge von Einzelvektoren möglichst ohne Absenken der Fahrgeschwindigkeit zu realisieren. Dies hat eine wesentlich glattere, kontinuierliche Bewegung der Werkzeugspitze zur Folge, welche die Qualität der Anwendung (Fräsen, Applizieren, ...) erheblich erhöht.

Der Befehl "Path" dient dazu, die Betriebsart "Bahnfahrt" programmatisch einzuschalten. Bewegungssegmente, die sich innerhalb des Textblocks zwischen "Path" und "PathEnd" befinden, werden durch die Steuerung zusammengefaßt und möglichst kontinuierlich und ohne Segmentübergänge abgefahren.

Mehr...

Zur Realisierung des Bahnbetriebes (Bahnfahrt) in ProNC hat der Anwender zwei Möglichkeiten:

1.Ein aktivierter Button im Dialogfeld Dateiausgabe bewirkt unter der Voraussetzung, dass die konfigurierte Bewegungssteuerung über die Fähigkeit eines Online-Bahnbetriebes verfügt, den gewünschten Bahnbetrieb. Das heißt, alle im Anwenderprogramm aufeinanderfolgenden Bewegungssegmente (G1, G2, G3, G11 | MOVEABS, MOVEREL, CWABS, CWREL, CCWABS, CCWREL, MOVEFRAME)werden automatisch durch den Interpreter in einer kontinuierlichen Bahn zusammengefasst.

2.Sollen in einem ProNC-Anwenderprogramm bei nicht aktivierten Button bestimmte aufeinanderfolgende Bewegungssegmente als kontinuierliche Bahn abgefahren werden, sind diese Bewegungssegmente mit den Befehlen "PATH" / "PATHEND" zu „klammern". Alle zwischen "PATH" und "PATHEND" programmierten Bewegungssegmente werden zur aktuellen Bahn zusammengefasst. Der Befehl "PATH" leitet die Bahnfahrt ein. Ein programmierter F-Befehl definiert die Bahngeschwindigkeit für das gesamte Bahnsegment, mehrere F-Befehle in verschiedenen Segmenten bewirken verschiedene Bahngeschwindigkeiten während einer „zusammenhängenden" Bahnfahrt. Der Befehl "PATHEND" definiert im Quellprogramm das Ende einer Bahn (Trajektorie).

Die Berechnung des Geschwindigkeitsprofils über alle zur Bahn zusammenzufassenden Bewegungssegmente erfolgt durch die Bewegungssteuerung zur Laufzeit des CNC-Zielprogramms in Echtzeit (look ahead), dadurch bleibt das Variablenkonzept voll nutzbar, weil die Werte der R-Variablen immer richtig verarbeitet werden.

Beispiel:

;Die in den Q-Variablen Q1 bis Q4 gespeicherten

;Ziel-Punkte werden zu einer Bahn zusammengefasst:

;Ausgabe der Information "Beginn" in der Statuszeile

XTYPE "Bahnfahrt einschalten ..."

Path

MoveFrame Q1 F10.0

MoveFrame Q2

MoveFrame Q3

MoveFrame Q4

PathEnd

;Ausgabe der Information "Ende" in der Statuszeile

XTYPE "Bahnfahrt beendet ..."

Siehe auch: PathEnd, G60, G64


PathEnd

Bahnfahrt ausschalten

Show/Hide Hidden Text

Der Bahnmodus in ProNC ist eine spezielle Betriebsart der Motion-Control, bei der versucht wird, die Segmentübergänge von Einzelvektoren möglichst ohne Absenken der Fahrgeschwindigkeit zu realisieren. Dies hat eine wesentlich glattere, kontinuierliche Bewegung der Werkzeugspitze zur Folge, welche die Qualität Anwendung (Fräsen, Applizieren, ...) erheblich erhöht.

Der Befehl "PathEnd" dient dazu, die Betriebsart "Bahnfahrt" programmatisch auszuschalten. Alle Bewegungssegmente werden nun wieder einzeln ausgeführt, d.h. die Achse kommt nach jedem Bewegungssegment zum Stillstand bevor das nächste Bewegungssegment gestartet wird.

Mehr...

Zur Realisierung des Bahnbetriebes (Bahnfahrt) in ProNC hat der Anwender zwei Möglichkeiten:

1.Ein aktivierter Button im Dialogfeld Dateiausgabe bewirkt unter der Voraussetzung, dass die konfigurierte Bewegungssteuerung über die Fähigkeit eines Online-Bahnbetriebes verfügt, den gewünschten Bahnbetrieb. Das heißt, alle im Anwenderprogramm aufeinanderfolgenden Bewegungssegmente (G1, G2, G3, G11 | MOVEABS, MOVEREL, CWABS, CWREL, CCWABS, CCWREL, MOVEFRAME)werden automatisch durch den Interpreter in einer kontinuierlichen Bahn zusammengefasst.

2.Sollen in einem ProNC-Anwenderprogramm bei nicht aktivierten Button bestimmte aufeinanderfolgende Bewegungssegmente als kontinuierliche Bahn abgefahren werden, sind diese Bewegungssegmente mit den Befehlen "PATH" / "PATHEND" zu „klammern". Alle zwischen "PATH" und "PATHEND" programmierten Bewegungssegmente werden zur aktuellen Bahn zusammengefasst. Der Befehl "PATH" leitet die Bahnfahrt ein. Ein programmierter F-Befehl definiert die Bahngeschwindigkeit für das gesamte Bahnsegment, mehrere F-Befehle in verschiedenen Segmenten bewirken verschiedene Bahngeschwindigkeiten während einer „zusammenhängenden" Bahnfahrt. Der Befehl "PATHEND" definiert im Quellprogramm das Ende einer Bahn (Trajektorie).

Die Berechnung des Geschwindigkeitsprofils über alle zur Bahn zusammenzufassenden Bewegungssegmente erfolgt durch die Bewegungssteuerung zur Laufzeit des CNC-Zielprogramms in Echtzeit (look ahead), dadurch bleibt das Variablenkonzept voll nutzbar, weil die Werte der R-Variablen immer richtig verarbeitet werden.

Beispiel:

;Die in den Q-Variablen Q1 bis Q4 gespeicherten

;Ziel-Punkte werden zu einer Bahn zusammengefasst:

;Ausgabe der Information "Beginn" in der Statuszeile

TYPE Bahnfahrt einschalten ...

Path

MoveFrame Q1 F10.0

MoveFrame Q2

MoveFrame Q3

MoveFrame Q4

PathEnd

;Ausgabe der Information "Ende" in der Statuszeile

TYPE Bahnfahrt beendet ...

Siehe auch: Path, G60, G64


PI

Konstante für die Kreiszahl Pi (3.1415926....)

Konstante zur Verwendung der Kreiszahl PI.

PI=3,1415926535897932384626433832795....

Beispiel:

;Berechnung des Umfangs eines Kreises

;Der Durchmesser ist in R1 gespeichert

;Der Umfang ist in R2 gespeichert

ProgBegin

R1 = 20

R2 = R1 * PI

MessageBox "Der Durchmesser ist %R2% mm"

ProgEnd


Plane

Plane ebene

Ebenenauswahl für Kreis- und Helixinterpolation

Setzen der Interpolationsebene für die Kreisinterpolation bzw. Helixinterpolation. Die Interpolationsebene gibt an, in welcher Ebene der Kreis bzw. die Helix liegt.

Mögliche Werte des Parameters ebene:

XY Ausführen in der XY-Ebene

XZ Ausführen in der XZ-Ebene

YZ Ausführen in der YZ-Ebene

Beispiel:

PLANE XY

PLANE XZ

PLANE YZ

Siehe auch: CircleAbs, CircleRel, CcwHlxAbs, CcwHlxRel, CwHlxAbs, CwHlxRel


POption1

POption1 onoff

Schalten der Schaltfunktion 1

Schaltet eine optionale Schalteinrichtung ein oder aus. Je nach Art der an den entsprechenden Ausgang angeschlossenen Hardware hat dieser Befehl eine spezifische Wirkung.

Die Signalisierung für den Betrieb der optionalen Vorrichtung 1 muß im entsprechenden Einstelldialog des Programms eingerichtet werden:

Einstellungen - Steuerung - Selektion: Ein-/Ausgabemodule - Schaltfläche: Erweiterte Einstellungen - Registerkarte: Peripherie

Verwendete Parameter:

ON Schaltvorrichtung ein

OFF Schaltvorrichtung aus

Beispiel:

POPTION1 ON

POPTION1 OFF


POption2

POption2 onoff

Schalten der Schaltfunktion 2

Schaltet eine optionale Schalteinrichtung ein oder aus. Je nach Art der an den entsprechenden Ausgang angeschlossenen Hardware hat dieser Befehl eine spezifische Wirkung.

Die Signalisierung für den Betrieb der optionalen Vorrichtung 2 muß im entsprechenden Einstelldialog des Programms eingerichtet werden:

Einstellungen - Steuerung - Selektion: Ein-/Ausgabemodule - Schaltfläche: Erweiterte Einstellungen - Registerkarte: Peripherie

Verwendete Parameter:

ON Schaltvorrichtung ein

OFF Schaltvorrichtung aus

Beispiel:

POPTION2 ON

POPTION2 OFF


Pos.Axn

Aktuelle Ist-Position einer Handlingachse

Variable zur Abfrage der aktuellen Position der Handlingachse n. Über den Index n kann eine der verfügbaren Handlingachsen indexiert werden. Der Index n bewegt sich im Bereich von 1...6.

Der zurückgelieferte Wert stellt eine reelle Zahl dar und kann wie jede reelle Konstante oder R-Variable verwendet werden.

Beispiel:

R11=POS.Ax2 ;Position der Handlingachse 2

R12=Pos.Ax3 ;Position der Handlingachse 3

R21=pos.ax5 ;Position der Handlingachse 5

R1=Pos.Ax1+Pos.Ax2

R2=Pos.Ax2+5.0

If Pos.Ax1 > 100.0

...

EndIf

Hinweis: Die Ist-Positionsabfrage kann nur bei Handlingachsen im Positionsmodus ausgeführt werden, anderenfalls erzeugt der Interpreter / die Steuerungssoftware einen Laufzeitfehler.

Siehe auch: Handlingachsen, AxnPA, AxnPI, FAx, AxnV, AxStop, AxStart, AxAbort, WaitMove, AxnInMotion, SetOpMode, AxOverride, AxReset


Posn.a

Aktuelle Achsposition

Befehl zur Abfrage der aktuellen Position einer Achse a des Achssystems n. Es sind die Achssysteme 1 und 2 indexierbar.

Parameter des Befehls:

Used parameters

n Angabe der Motion Control, in der sich die Achse befindet, deren Position abgefragt werden soll. Gültige Werte für diese Angabe sind 1 und 2.
a Angabe des Achse, deren aktuelle Position abgefragt wird. Hier sind die Achsbezeichner X, Y, Z, A, ... erlaubt.

Beispiel:

R11=POS1.X ;Achssystem 1, Position X

R12=POS1.Y ;Achssystem 1, Position Y

R21=POS2.X ;Achssystem 2, Position X


POW

Berechnen der Potenz

Funktion zum Berechnen einer Potenzfunktion. Der Operator POW wird in der folgenden Form verwendet:

Ergebnis = Basis POW Exponent

Beispiel:

R1=2 POW 2 ;Ergebnis ist 4

R22=R23 POW R24 ;Mit R-Variable

R22=R23 POW 3 ;Konstante als Exponent

R22=3 POW R23 ;Konstante Basis

R22=R5 POW 2 ;Quadrieren eines Wertes

Siehe auch: SQR


ProgBegin

Kennzeichnung des Beginns des Hauptprogramms

Schlüsselwort für den Beginn eines CNC-Programms. Falls innerhalb des CNC-Programms Subroutinen verwendet werden, müssen die Deklarationen der Subroutinen vor dem Hauptprogrammblock erfolgen. Der Hauptprogrammblock wird mit dem Befehl ProgEnd beendet.

Beispiel:

ProgBegin

MoveAbs X0 Y0 Z0

ProgEnd

Siehe auch: ProgEnd, Abort, Quit


ProgEnd

Kennzeichnung des Endes des Hauptprogramms

Schlüsselwort für das normale Ende eines CNC-Programms.

Beispiel 1:

PROGBEGIN

MOVEABS X0 Y0 Z0

PROGEND

ProgEnd kann außerdem an unterschiedlichen Stellen im Programm verwendet werden, um den bedingten Abbruch eines CNC-Programmes zu erreichen.

Beispiel 2:

PROGBEGIN

MOVEABS X100.0 Y20.0 Z-2.0

IF GETBIT E1.4

PROGEND ;Bedingtes Ende des Hauptprogramms

ENDIF

MOVEABS X0 Y0 Z0

PROGEND

Rückgabe eines Exit-Codes an eine aufrufende Instanz

Durch die Angabe eines Exit-Codes, der in eckigen Klammern hinter die Anweisung ProgEnd gesetzt wird, kann einer aufrufenden Instanz (das ist z.B. die Anwendung in der ein Script gestartet wird) ein Code übergeben werden, welcher eine erfolgreiche oder fehlerhafte Bearbeitung signalisiert.

Dabei werden Fehlercodes unterhalb von 65535 als einfacher Rückgabewert weiterverarbeitet, Fehlercodes oberhalb dieser Grenze werden als Fehlercode mit Fehlertyp, Fehlergruppe und Fehlercode weiterverarbeitet, z.B. als Standard-Fehlermeldung in der Anwendung zur Anzeige gebracht.

Auswerten dieses Rückgabewertes als benutzerspezifischer Wert:

ProgEnd[0]

ProgEnd[5]

Auswerten dieses Rückgabewertes als Fehlercode, hier als Fehler (0xC0000000) der Fehlergruppe 4000 (0x0FA00000) mit dem Fehlercode 4 (0x00000004). Die hexadezimale Werte bitweise verodert ergeben den Wert 0xCFA00004:

ProgEnd[0xCFA00004]

Siehe auch: ProgBegin, Abort, Quit


Pump

Pump onoff

Ein-/Ausschalten einer Pumpe, Pumpvorrichtung

Schaltet eine Absaugvorrichtung, Flüssigkeitspumpe, Vakuumpumpe o. ä. ein oder aus. Welches Gerät genau durch diesen Befehl geschaltet wird, ist benutzerspezifisch und abhängig von der Konstruktion der Maschine.

Die Signalisierung für den Betrieb der Pumpe bzw. Vorrichtung muß im Einstelldialog "Peripheriekomponenten" der Anwendung eingerichtet werden:

Einstellungen - Steuerung - Selektion: Ein-/Ausgabemodule - Schaltfläche: Erweiterte Einstellungen - Registerkarte: Peripherie

Verwendete Parameter:

ON Pumpe ein

OFF Pumpe aus

Beispiel:

PUMP ON

PUMP OFF


Q

Qn

Q-Variable

Q-Variablen repräsentieren eine Struktur, bestehend aus maximal 12 Gleitkommazahlen für die Elemente X, Y, Z, A, B, C im Achssystem 1 bzw. X2, Y2, Z2, A2, B2, C2 im Achssystem 2. Auf die Elemente der Q-Variable (d.h. die Koordinatenwerte der Achsen) kann mit folgender Konstruktion zugegriffen werden:

Qvariablen_index:achs_adressbuchstabe

z.B.: Q1:X, Q5:Z, QR3:Y, QI1:X2

Q-Variablen besitzen einen Variablenindex, welcher im Bereich von 0 bis 499 liegen kann. Das bedeutet, daß die Q-Variablen Q0 bis Q499 programmatisch verwendet werden können.

Jede Komponente einer Q-Variablen kann mit Hilfe des Achsbezeichners (Adressbuchstabe) isoliert werden:

Adressbuchstabe | Bedeutung
X | bezeichnet die X-Koordinate im Achssystem 1
Y | bezeichnet die Y-Koordinate im Achssystem 1
Z | bezeichnet die Z-Koordinate im Achssystem 1
A | bezeichnet die A-Koordinate im Achssystem 1
B | bezeichnet die B-Koordinate im Achssystem 1
C | bezeichnet die C-Koordinate im Achssystem 1
U | bezeichnet die U-Koordinate im Achssystem 1
V | bezeichnet die V-Koordinate im Achssystem 1
W | bezeichnet die W-Koordinate im Achssystem 1
X2 | bezeichnet die X-Koordinate im Achssystem 2
Y2 | bezeichnet die Y-Koordinate im Achssystem 2
Z2 | bezeichnet die Z-Koordinate im Achssystem 2
A2 | bezeichnet die A-Koordinate im Achssystem 2
B2 | bezeichnet die B-Koordinate im Achssystem 2
C2 | bezeichnet die C-Koordinate im Achssystem 2
U2 | bezeichnet die U-Koordinate im Achssystem 2
V2 | bezeichnet die V-Koordinate im Achssystem 2
W2 | bezeichnet die W-Koordinate im Achssystem 2

Weitere Elemente

Zusätzlich zu den Achskoordinaten sind weitere Informationen der Framevariablen abrufbar, die für besondere Aufgabenstellungen verwendet werden können.

RefPosZInMctl1

Die Referenzposition der Achse Z auf dem Werkzeuglängen-Referenztaster in Achssystem 1 (Motion Control 1). Diese Information wird für die Verrechnung von Werkzeuglängen-Differenzen verwendet.

RefPosZInMctl2

Wie RefPosZInMctl1, jedoch für Achssystem 2.

ToolNumberOfRefToolInMctl1

Die Werkzeugnummer des Werkzeugs, mit dem die Referenzposition der Z-Achse auf dem Werkzeuglängen-Referenztaster in Achssystem 1 ermittelt wurde.

Hinweis: Diese Werkzeugnummer ist nur dann sinnvoll verwendbar, wenn die Werkzeug einem festen Referenzwerkzeug zugewiesen wurde, dessen Eigenschaft "Referenzposition der Achse Z auf dem Werkzeuglängen-Referenztaster" sich nicht verändert.

ToolNumberOfRefToolInMctl2

Wie ToolNumberOfRefToolInMctl1, jedoch für Achssystem 2.

Q-Variablen können mit Daten aus einer sogenannten Frame-Datei initialisiert werden, jeder Frame aus der Frame-Datei hat einen eindeutigen Namen. Für jede NC-Quelldatei kann zur Verwendung beim Programmlauf eine entsprechende Frame-Datei zugeordnet werden. Dies geschieht, indem eine Framedatei mit gleichem Namen wie die NC-Quelldatei, jedoch der Extension "FRA" im Standardverzeichnis für Framedateien angelegt wird. In dieser Framedatei können die Namen der Frames festgelegt werden sowie die jeweiligen Achspositionen zugewiesen werden. Im Programm kann eine Zuweisung des Frames an eine Q-Variable in der Form

Qn=Framename

erfolgen.

Hinweis zum Anlegen von Frame-Dateien: Nach dem Erstellen der Nc-Programmdatei den Menüeintrag "Datei - Framedatei bearbeiten" auswählen. In der Dialogbox zur Dateiauswahl wird anschließend der Name der Framedatei in der Form "Name_des_NC_Programms.FRA" eingetragen. Die Frage, ob die Datei erstellt werden soll, muß mit JA beantwortet werden. Daraufhin wird die leere Frame-Datei erstellt.

Auf die Koordinatenwerte von Q-Variablen kann indirekt zugegriffen werden. Das heißt, der Index der gewünschten Q-Variable kann mit Hilfe einer R-Variablen angegeben werden.

Rn=Gewünschter_Index
QRn=Framename

Alle Elemente von Q-Variablen (Q1:X) werden auch als Bestandteil eines arithmetischen Ausdrucks akzeptiert, d.h. ein Element einer Q-Variablen kann direkt in Zuweisungen oder Rechenoperationen oser als Argument verwendet werden:

Q1=Punkt1

I2=QI1:X+5+Punkt1:Z

I1=1

R1=QI1:X+Punkt1:Y+Punkt1:Z+I2+P20-P21+500-500+333-333+0x1234-0x1234-4.567

Beispiele:

;Initialisieren einer Q-Variablen mit einem Frame

;Startpunkt muß in der Framedatei des NC-Programms

;entsprechend angelegt sein.

Q1=STARTPUNKT

;Fahren an eine Absolutposition

MoveFrame Q1

;Diskrete Verwendung von Elementen der Q-Variable

;Zuerst anfahren der Xy-Position, dann Zustellung Z

R1=Q1:X

R2=Q1:Y

R3=Q1:Z

FastAbs XR1 YR2

MoveAbs XR3

;oder

Q1=PUNKT1

R1=Q1:Z+2.0

MoveAbs XQ1:X YQ1:Y ZR1

;Indizierter Zugriff

R1=2

MoveFrame QR1

;Indizierter Zugriff für das Anfahren

;mehrerer Framepositionen

For R1=1,5,1

MoveFrame QR1

EndFor

;Bearbeitung der Framedatei waehrend des

;Programmlaufs, anschliessend werden

;5 Framepositionen an Q-Variablen zugewiesen

;und nacheinander angefahren

Teach

Q1=Startposition

Q2=PositionLinksOben

Q3=PositionLinksUnten

Q4=PositionRechtsUnten

Q5=EndPosition

For R1=1,5,1

MoveFrame QR1

EndFor


Quit

Programmende nach Bedienerauswahl

Hält die Ausgabe des laufenden Programms an und fordert eine Bedienerquittung an. Es besteht nun die Möglichkeit, das Programm fortzusetzen oder zu beenden.

Mit der Taste "ESC" wird die Dialogbox beendet und das NC-Programm abgebrochen.

Mit der Taste "Return" wird die Dialogbox beendet und das NC-Programm weitergeführt.

Beispiel:

IF GETBIT E1.5

QUIT

ENDIF

Siehe auch: ProgBegin, ProgEnd, Abort


R (Variable)

Rn

Real-Variable

R-Variablen (Real-Variablen) besitzen den Wertebereich einer Gleitkommazahl (doppelte Genauigkeit: 64 Bit). Alle 1000 verfügbaren R-Variablen R0 bis R999 sind in ProNC/Remote als Feld (Array) angeordnet.

Eine R-Variable kann unter Verwendung arithmetischer Operatoren mit anderen R-Variablen oder mit Konstanten (Dezimalzahlen) verknüpft werden. R-Variablen ermöglichen die Wertübertragung an eine Koordinate, einen F-Befehl (Angabe einer Vorschubgeschwindigkeit) oder S-Befehl (Angabe der Drehzahl). R-Variablen können eine Komponente einer Q-Variable (X, Y, Z, A, B, C bzw. X2, Y2, Z2, A2, B2, C2) aufnehmen. Auf R-Variablen kann indirekt zugegriffen werden, indem als Index der R-Variablen eine weitere R-Variable angegeben wird z. B. RR6l.

Spezielle R-Variablen

Die R-Variablen R1101 bis R1106 repräsentieren zu jeder Zeit die aktuellen Istwerte der Achsen 1 bis 6 im Achssystem 1

1. Achse: R1101

2. Achse: R1102

3. Achse: R1103

4. Achse: R1104

5. Achse: R1105

6. Achse: R1106

bzw. im Achssystem 2:

1. Achse: R1201

2. Achse: R1202

3. Achse: R1203

4. Achse: R1204

5. Achse: R1205

6. Achse: R1206

Hinweis: Bitte beachten Sie, dass in Ihrem Anwenderprogramm diese R-Variablen (R1101 bis R1106 bzw. R1201 bis R1206) nicht beschrieben werden dürfen.

Initialisierung von R-Variablen mit Konstanten

Zur Erhöhung der Flexibilität bei der Initialisierung von Variablen können R-Variablen mit verschiedenen Datentypen initialisiert werden:

·Angabe von Initialisierungswerten als Gleitkommawert
R2=16.00

·Angabe von Initialisierungswerten als ganze Zahl
R2=16 ;R2=16.00

·Angabe von Initialisierungswerten in hexadezimaler Form
R2=0x10 ;R2=16.00

Initialisierung von R-Variablen mit Werten aus der spezifischen Variablendatei

ProNC verfügt über die Fähigkeit, die aktuellen Werte der R-Variablen R0 bis R299 in eine spezielle Variablendatei "*.var" zu schreiben, wenn das konkrete Anwenderprogramm beendet oder abgebrochen wird. In der Praxis werden nach dem Abbruch des Anwenderprogramms "beispiel.pal" die aktuellen Werte der R-Variablen R0 bis R299 in die Datei beispiel.var (im Verzeichnis \CNCWorkbench\NCProg\Dest) geschrieben.

Beim nächsten Start werden dann diese Variablen wieder aus der Variablendatei gelesen, konvertiert und indexrichtig im Arbeitsspeicher abgelegt.

Wollen Sie Ihr Anwenderprogramm starten, ohne dass die Variablen R0 bis R299 mit den Werten aus der Datei *.var initialisiert werden, können Sie das entsprechende Kontrollkästchen im Dialog NC Interpreter Setup ausschalten:

Einstellungen - Interpreter

Initialisierung von R-Variablen mit Werten aus einer beliebigen Variablendatei

Mit Hilfe der Befehle LoadRVar und LoadVarFile sowie SaveRVar und SaveVarFile können die Werte von R-Variablen zu jedem beliebigen Zeitpunkt bei der Ausführung des NC-Programms geladen oder gespeichert werden.

LoadRVar lädt die Werte für eine oder mehrere R-Variablen aus einer beliebigen Datei

LoadVarFile lädt die Werte für die R-Variablen R0...R299 aus einer beliebigen Datei

LoadRVar schreibt die Werte für eine oder mehrere R-Variablen in eine beliebige Datei

LoadVarFile schreibt die Werte für die R-Variablen R0...R299 in eine beliebige Datei

Beispiele:

;Zuweisungen an R-Variablen

R23=12.5

R12=PI

R1=R2

;Indirekter Zugriff auf R-Variable

R1=1.11

R2=2.22

R3=3.33

R4=4.44

R5=5.55

R10=4 ;den gewünschten Index in R10 schreiben

R11=RR10 ;R11 wird mit dem Wert 4.44 initialisiert

R10=5 ;neuen Index in R10 schreiben

R11=RR10 ;R11 wird mit dem Wert 5.55 initialisiert

;Laden von R-Variablen aus einer beliebigen Datei

LoadRVar "C:\CNCWorkbench\Daten\Test.var" R1 R2 R3

;Speichern von R-Variablen in eine beliebige Datei

SaveRVar "C:\CNCWorkbench\Daten\Test.var" R1 R2 R3


ReadExcelFile

ReadExcelFile"dateiname" "blattname" zeile spalte variable

ReadExcelFile"dateiname" "blattname" zeile begin_spalte Until end_spalte variable

Lesen des Inhalts einer Zelle aus einer Excel-Datei

Der Befehl ReadExcelFile wird verwendet, um den Inhalt einer Zelle bzw. mehrerer Zellen einer Excel-Datei zu lesen und in eine Variable bzw. mehrere aufeinanderfolgende Variablen zu übertragen.

Verwendete Parameter:

dateiname Angabe von Namen und Pfad der Excel-Datei, aus welcher die Variable gelesen werden soll. Die Angabe des Dateinamens erfolgt in Anführungszeichen.

blattname Angabe des Namens des Arbeitsblattes innerhalb der Excel-Datei, von welchem die Variable gelesen werden soll. Die Angabe des Namens des Arbeitsblattes erfolgt in Anführungszeichen.

zeile Dieser Parameter beinhaltet die Zeilennummer der Zelle, auf die zugegriffen werden soll. Gültige Werte für Zeilennummern befinden sich im Bereich von 1 ... Max. Anzahl der Zeilen in der Excel-Datei.

spalte Dieser Parameter beinhaltet die Spaltennummer der Zelle, auf die zugegriffen werden soll. Gültige Werte für Spaltennummern befinden sich im Bereich von 1 ... Max. Anzahl der Spalten in der Excel-Datei.
begin_spalte Angabe der Startspalte für einen zu lesenden Bereich innerhalb der angegebenen Zeile. Die aus den einzelnen Zellen ausgelesenen Werte werden in die angegebene und die unmittelbar darauffolgenden Variablen geschrieben.
Until Schlüsselwort für das Lesen mehrerer Spalten aus der angegebenen Zeile des Arbeitsblatts. Das Schlüsselwort "Until" grenzt die Angabe der Startspalte von der Angabe der Endspalte des zu lesenden Bereichs ab.

end_spalte Angabe der Endspalte für einen zu lesenden Bereich innerhalb der angegebenen Zeile. Die aus den einzelnen Zellen ausgelesenen Werte werden in die angegebene und die unmittelbar darauffolgenden Variablen geschrieben.
variable Angabe der R-Variablen, in welche der gelesene Inhalt der Zelle übertragen werden soll. Falls ein Bereich aus mehr aus einer Spalte innerhalb der Zeile gelesen werden soll, gibt die angegebene Variable die Startvariable an, ab der die gelesenen Werte abgelegt werden.

Rückgabewerte:

Die Funktion ReadExcelFile liefert einen Rückgabewert, welcher einer R-Variablen zugewiesen werden kann. Der Rückgabewert hat folgende Bedeutung:

0 | OK | Fehlerfreie Ausführung des Befehls
1 | ERR_READ_EXCELFILE_NOT_FOUND | Die angegebene Excel-Datei wurde nicht gefunden
2 | ERR_READ_EXCELFILE_OPEN_FAILED | Die angegebene Excel-Datei konnte nicht geöffnet werden
3 | ERR_READ_EXCELFILE_INVALID_ROW_INDEX | Ungültiger Zeilenindex
4 | ERR_READ_EXCELFILE_INVALID_COL_INDEX | Ungültiger Spaltenindex
5 | ERR_READ_EXCELFILE_INVALID_CELL_FORMAT | Ungültiges Format der angegebenen Zelle

Beispiele:

(1)

;Aus der Datei test.xls im Verzeichnis

;C:\CNCWorkbench\NCProg\PAL wird der Inhalt

;der Zelle 3,2 des Blattes Tabelle1

;gelesen und in die Variable R11 uebertragen

ReadExcelFile "C:\CNCWorkbench\NCProg\PAL\test.xls" "Tabelle1" 3 2 R11

(2)

;Uebergabe der Zeilennummer und Spaltennummer mit

;einer Variablen

R5=3

R6=2

ReadExcelFile "C:\CNCWorkbench\NCProg\PAL\test.xls" "Tabelle1" R5 R6 R11

(3)

;Indizierter Zugriff, variable Zeilennummer

;Der Inhalt der Zellen [11,2] bis [21,2] des

;Arbeitsblattes "Tabelle1" der Excel-Datei test.xls

;im Verzeichnis C:\CNCWorkbench\NCProg\PAL wird

;gelesen und in die R-Variablen R11 bis R21 geschrieben

For R1=11,1,21

ReadExcelFile "C:\CNCWorkbench\NCProg\PAL\test.xls" "Tabelle1" R1 2 RR1

EndFor

(4)

;Verwendung von Variablen fuer die Parameter

;Der Inhalt der Zelle [1,3] des

;Arbeitsblattes "Tabelle1" der Excel-Datei test.xls

;im Verzeichnis C:\CNCWorkbench\NCProg\PAL wird

;gelesen und in die R-Variablen R13 geschrieben

Str1="C:\CNCWorkbench\NCProg\PAL\test.xls"

Str2="Tabelle1"

R1=1

R2=3

ReadExcelFile Str1 Str2 R1 R2 R13

(5)

;Lesen eines Bereichs aus einer Zeile des Arbeitsblatts

;Der Bereich ab Zelle [1,3] bis Zelle [1,8] des

;Arbeitsblattes "Tabelle1" der Excel-Datei test.xls

;im Verzeichnis C:\CNCWorkbench\NCProg\PAL wird

;gelesen und in die R-Variablen R13 bis R18 geschrieben

Str1="C:\CNCWorkbench\NCProg\PAL\test.xls"

Str2="Tabelle1"

R1=1

R2=3

R3=8

ReadExcelFile Str1 Str2 R1 R2 Until R3 R13

;Schreibweise dieses Befehls ohne Variablen fuer Indizes

ReadExcelFile Str1 "Tabelle1" 1 3 Until 8 R13

Siehe auch: WriteExcelFile


ReadInitFile

In|Rn=ReadInitFile filename section entry [Strx] [Ix] [Rx]

Lesen eines Eintrags aus einer Initialisierungsdatei

Funktion für das Lesen eines Eintrags aus einer Initialisierungsdatei. Das Format der Initialisierungsdatei entspricht dem Format der Windows-Initialisierungsdateien.

Eine Windows-Initialisierungsdatei (auch INI-Datei) ist eine Textdatei, die Schlüssel-Wert-Paare enthält, die zusätzlich durch Sektionen gegliedert werden. Als einfach aufgebautes und zugleich von Menschen leicht lesbares Format ist es weit verbreitet, um Einstellungen von Programmen dauerhaft zu speichern.

Aufbau

Die Initialisierungsdaten werden zeilenweise abgelegt: Ein Gleichheitszeichen trennt den Eintrag von seinem Wert.

Eintrag=Wert

Um Einträge in sog. Sektionen zu gruppieren, ist eine (pro Datei) eindeutige Bezeichnung in eckigen Klammern über der jeweiligen Sektion anzugeben. Benannte Sektionen sind nicht verpflichtend, je Sektion müssen die Schlüssel eindeutig sein.

[Sektion1]

Schlüssel=Wert

[Sektion2]

Schlüssel=Wert

Schlüssel2=Wert

Außerdem sind Kommentarzeilen erlaubt, welche mit einem Semikolon beginnen.

; Das ist ein Kommentar

Beim Erstellen einer INI-Datei sind folgende Regeln zu beachten:

·Jede Sektion darf nur einmal vorkommen.

·Jeder Schlüssel darf nur einmal je Sektion vorkommen.

·Auf Werte wird mittels Sektion und Schlüssel zugegriffen.

·Kommentare werden mit einem ";" eingeleitet.

·Kommentare dürfen nur auf separaten Zeilen (nicht hinter Sektionsüberschriften oder Schlüsseln) stehen.

·Leerzeichen und Anführungszeichen werden von verschiedenen Programmen teilweise unterschiedlich behandelt.

·Groß- und Kleinschreibung wird nicht unterschieden

Parameter des Befehls:

In | Eine I-Variable (Integer-Variable) mit dem Index n, welche den Rückgabewert der Funktion erhält.
Rn | Eine R-Variable (Real-Variable) mit dem Index n, welche den Rückgabewert der Funktion erhält.
filename | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable), welche den vollständigen Pfad und Namen der Initialisierungsdatei enthält.
section | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable), welche den Namen der Sektion enthält, aus welcher der Eintrag "entry" gelesen werden soll.
entry | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable), welche den Namen der Eintrags enthält, der aus der Sektion "section" gelesen werden soll.
Strx | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index x, welche zur Aufnahme des angegebenen Eintrags "entry" als Zeichenkette dient.
Ix | Eine I-Variable (Integer-Variable) mit dem Index x, die zur Aufnahme des angegebenen Eintrags als Integer-Wert (ganzzahliger Wert) dient.
Rx | Eine R-Variable (Real-Variable, Gleitkommavariable) mit dem Index x, die zur Aufnahme des angegebenen Eintrags als Real-Wert (Gleitkommawert) dient.

Hinweis: Wird im Befehl ReadInitFile als Parameter eine Variable (Str-Variable)angegeben, wird die hinter dem Eintrag "entry" stehende Zeichenkette unverändert auf die Str-Variable übertragen. Wird im Befehl ReadInitFile als Parameter eine I-Variable oder R-Variable angegeben, wird die hinter "entry" stehende Zeichenkette in einen entsprechenden Wert (Integer- oder Realwert) konvertiert und auf die I-Variable bzw. R-Variable übertragen.

Beispiel:

;Lesen der Namen der vier zuletzt verwendeten

;Dateien aus der MRU-Liste von ProNC

ProgBegin

;Name der ProNC-Initialisierungsdatei

Str0="C:\CNCWorkbench\Bin\ProNC.INI"

;Sektionsname der MRU-Liste

Str1="Recent File List"

Str2=""

For I0=1,4,1

;Formatieren des Namens des Eintrags

StrFormat(Str2 "File%d" I0)

;Lesen des Eintrags

I1=ReadInitFile Str0 Str1 Str2 Str3

R3=10+I0

;Fehlerfrei gelesen ->

;Zeile in Strx-Array ab Str mit Index 11 übernehmen

If I1==0

StrR3=Str3

Else

StrR3="---"

EndIf

EndFor

;Anzeige der Namen in einer MessageBox

Str1="Zuletzt verwendete Dateien in ProNC:\n\n"

Str1+=Str11+"\n"+Str12+"\n"+Str13+"\n"+Str14

MessageBox INFO Str1

ProgEnd


ReadTextFile

In|Rn=ReadTextFile filename line dest

Lesen einer Zeile aus einer Textdatei

Funktion für das Lesen einer mit CR/LF (Carriage Return/Linefeed) abgeschlossenen Textzeile aus einer ASCII-Textdatei.

Parameter des Befehls:

In

Eine I-Variable (Integer-Variable) mit dem Index n, welche den Rückgabewert der Funktion erhält.

Rn

Eine R-Variable (Real-Variable) mit dem Index n, welche den Rückgabewert der Funktion erhält.

Strn

Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index n, welche den Namen der Zieldatei enthält.

line

Angabe der zu lesenden Zeilennummer der Datei. Die Zählweise der Zeilen in der Datei beginnt bei 1.

Wert von line | Funktion
<= 0 | Fehler, keine Funktion
>= 1 | Die Textdatei wird im Modus READ (Lesemodus) geöffnet und die Zeile mit der gewünschten Zeilennummer gelesen. Die gelesene Zeile wird in die mit dem Parameter "dest" angegebene Str-Variable übertragen.

dest

Eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index n, die zur Aufnahme der gelesenen Zeile dient.

Zeilenumbruch

Beim Lesen einer Textzeile aus der Textdatei werden die Steuerzeichen für den Zeilenumbruch, CR/LF (Carriage Return, Linefeed) nicht an die empfangende Zeichenkettenvariable übertragen. Falls diese Steuerzeichen in der Str-Variablen enthalten sein sollen, müssen sie explizit an die Str-Variable angehängt werden.

Dateinamenerweiterung

Die Dateinamenerweiterung der Textdatei ist frei wählbar, z.B. "TXT" oder "CFG".

Rückgabewert der Funktion

Bei fehlerfreier Ausführung des Kommandos ist der Rückgabewert 0, anderenfalls ist der Wert ungleich 0.

Beispiel:

;In einer Textdatei enthaltene Positionen werden gelesen

;und dienen als Zielpositionen für eine Verfahrbewegung

;Inhalt der Textdatei mit den Positionen

{

;Kopfzeile

;Diese Kommentarzeilen werden ignoriert

;----------------------------------------

01: 12.493 22.5 -17.45 0

02: 12.493 22.5 -22.5 0

03: 12.493 22.5 -24.0 1

04: 12.493 62.5 -24.0 1

05: 72.493 62.5 -24.0 1

06: 72.493 22.5 -24.0 1

07: 12.493 22.5 -24.0 1

08: 12.493 22.5 -1 0

09: 42.493 42.5 -1 0

10: 42.493 42.5 -21.5 0

11: 42.493 42.5 -25.5 1

12: 42.493 42.5 -1.0 0

13: 0.00 0.00 0.00 0

;----------------------------------------

;Ende der Datei

}

;Das PAL-Programm fuer die Verarbeitung

ProgBegin

Str1="C:\CNCWorkbench\Temp\TargetPos.txt"

Str2=""

R1=0

I2=1

While(R1==0)

R1=ReadTextFile Str1 I2 Str2

I11=StrFind(Str2 0 ";")

If(I11>=0)

Str2=StrLeft(Str2 I11)

EndIf

I11=StrScan(Str2 "%ld: %lf %lf %lf %ld" I12 R11 R12 R13 I13)

If(I11==5)

If(I13==0)

FastAbs XR11 YR12 ZR13

EndIf

If(I13==1)

MoveAbs XR11 YR12 ZR13

EndIf

EndIf

I2+=1

EndWhile

ProgEnd


Ref

Ref X Y Z ...

Referenzfahrt einer oder mehrerer Achsen

Ausführung einer Referenzfahrt unter Angabe der gewünschten Achse. Wird der Befehl REF ohne Argument benutzt, werden alle Achsen in einer Standard-Reihenfolge, im Allgemeinen Z, Y, X, A, B, C, U, V, W referenziert.

Mögliche Achsbezeichner:

X, Y, Z, A, B, C, U, V, W

In ProNC können ab Version 1.45.0.2 die sechs Handlingachsen Ax1 bis Ax6 programmiert werden. Die Referenzfahrt für die Handlingachsen ist entsprechend der Referenzfahrt für die Achsen des Achssystems 1 oder 2 zu programmieren.

Hinweis: Die Referenzierung einer Handlingachse ist nur in der Betriebsart Positions-Modus erforderlich.

Mögliche Achsbezeichner für Handlingachsen:

Ax1, Ax2, Ax3, Ax4, Ax5, Ax6

Beispiel:

;Referenzfahrt der Achsen X, Y und Z

REF XYZ

;Referenzfahrt nur Achse X

REF X

;Referenzfahrt nur Achse A

REF A

;Referenzfahrt der Handlingachse Ax1

REF Ax1

;Referenzfahrt der Handlingachsen Ax1 und Ax2

REF Ax1 Ax2

Siehe auch: RefCycle


RefCycle

RefCycle axiscode

Ausführen des komplexen Referenzfahrt-Zyklus der Anwendung

Im Gegensatz zum Kommando "Ref", welches die atomaren Referenzfahrtfunktionen des Steuerungskerns verwendet, bietet der Befehl RefCycle die Möglichkeit, den Referenzfahrtzyklus der Anwendung (ProNC, Remote) zu starten.

Bei der Durchführung einer Referenzfahrt mit dem Befehl "REF" besteht keine Möglichkeit, während der Durchführung der Referenzfahrt eine Bedienhandlung vorzunehmen.

Der komplexe Referenzfahrtzyklus der Anwendung zeigt während seiner Ausführung ein Dialogfeld mit der Schaltfläche "Abbrechen" an, so das die Möglichkeit besteht, die Referenzfahrt zu jeder Zeit abbrechen zu können.

Parameter des Befehls

axiscode

Angabe der an der Referenzfahrt beteiligten Achsen. Wird der Befehl REF ohne Argument benutzt, werden alle Achsen in der Reihenfolge, welche für den Referenzfahrtzyklus der Anwendung festgelegt wurde, ausgeführt.

Mögliche Achsbezeichner:

X, Y, Z, A, B, C, U, V, W

Zu beachten ist, das mit der Angabe der Achsen nur festgelegt wird, welche Achsen bei der Ausführung des Referenzfahrtzyklus berücksichtigt werden sollen, die Reihenfolge der Ausführung ist immer die Reihenfolge, welche in den Einstellungen für den Referenzfahrtzyklus (Einstellungen - Steuerung - Motion Control Module - Erweiterte Einstellungen - Referenzfahrt) festgelegt wurde.

Beispiel:

;Referenzfahrtzyklus aufrufen,

;alle Achsen werden referenziert

;Referenzierung kann abgebrochen werden

RefCycle

;Referenzfahrtzyklus aufrufen,

;nur Achse X wird referenziert,

;Referenzierung kann abgebrochen werden

RefCycle X

Siehe auch: Ref


Repeat ... Until

Wiederholschleife solange Bedingung nicht erfüllt ist

Die Repeat Until-Schleife ist eine annehmende Schleife, da die Laufbedingung erst nach mindestens einem Durchlauf überprüft wird und somit immer mindestens eine Bearbeitung der Anweisungen erfolgt. Sie wird eingesetzt wenn man bei Schleifenbeginn noch nicht weiß wieviele Durchläufe erfolgen sollen, wie z.B. beim Fahren auf einen Begrenzungsschalter.

Beispiele:

;Schrittweise fahren bis ein Eingang aktiv wird

Repeat

MoveRel Z-0.5

Until E1.4

;Mehrfache Wiederholung einer Bearbeitung

Repeat

SubR2

R1=MessageBox YESNO "Bearbeitung wiederholen?"

Until R1==7 ;7=Rueckgabewert bei "Nein"

;Mehrfache Wiederholung einer Bearbeitung

;Die Steuerung erfolgt durch ein Bit, welches

;nach dem Setzen eines Anforderungssignals

;innerhalb von 1 Sekunde gesetzt werden muss

Repeat

SubR1

SetBit A1.1

Delay 1000

ResBit A1.1

Until NOT E1.1


ResBit

ResBit Ap.b

Setzen eines 1-Bit-Ausgangs auf den Wert "0"

Setzen des Bits b des Ausgabeports p auf den Wert "0". Zum Setzen des Bits auf den Ausgabewert "1" wird der Befehl SetBit verwendet.

Gültige Werte für die Kanalnummer p reichen von 1...Anzahl_der_Ausgangsports, die Werte für die Bitnummer b laufen von 1...8.

Beispiel:

SetBit A1.4 ;Setzt Bit 4 des Ausgangs 1 auf den Wert "1"

ResBit A1.4 ;Setzt Bit 4 des Ausgangs 1 auf den Wert "0"

Siehe auch: SetBit, GetBit, Ep.b, SetPort, GetPort, SetAnalog, GetAnalog, SetPWM


RVel

RVel v

Angabe der Normalgeschwindigkeit für Drehachsen

Gibt die Sollgeschwindigkeit für die aktuelle und alle weiteren Verfahrbewegungen von Drehachsen mit Normalgeschwindigkeit an. Die zuletzt gesetzte Geschwindigkeit wird verwendet, bis eine neue Normalgeschwindigkeit mit dem Befehl RVel eingestellt wird. Die Angabe der Geschwindigkeit erfolgt in °/s (Grad/Sekunde).

Beispiel:

RVel 3.0

MoveAbs A10.0

Umrechnung von °/s in U/min:

v[°/s] * 60

v[u/min] =

360

Umrechnung von U/min in °/s:

v[u/min] * 360

v[°/s] =

60

Siehe auch: Vel, FastVel, FastRVel, F


RxCAN

RxCAN node_id i_var sdo_parameter_1 sdo_parameter_2 i_var

Lesen eines Eintrags im Objektverzeichnis eines CAN-Knotens

Show/Hide Hidden Text

Der Befehl RxCAN dient zum Lesen eines Eintrags im Objektverzeichnis (Object Dictionary, OD) eines CAN-Knotens. Für die Übertragung der Informationen werden Servicedatenobjekte verwendet (Service Data Objects, SDO). Diese Servicedatenobjekte stellen einen Dienst zum Zugriff auf das Objektverzeichnis bereit.

Hinweise:

Die Befehle zum Empfangen (RxCAN) bzw. Senden (TxCAN) sind nur bei einer PC-Steuerung mit CAN-Interface von isel (isel-CAN-Dongle oder isel-CAN-PCI-Karte) nutzbar, es werden keine OEM-CAN-Schnittstellen unterstützt.

Das Empfangen von Daten per SDO bzw. Senden von Daten per SDO erfolgt stets mit der aktuellen Übertragungsgeschwindigkeit des CAN-Bus (i.A. 1 MBit/sec). Diese Übertragungsrate wird durch die CAN-Motion Control eingestellt und muss deshalb nicht im Befehl TxCAN oder RxCAN angegeben werden.

Verwendete Parameter:

node_id Die Knotenadresse des anzusprechenden Geräts im Bereich 1...127

i_var vor Befehlsausführung: Der Steuercode für die Art der SDO-Kommunikation (BYTE)
nach Befehlsausführung: Der Returncode (Ergebnis) des Zugriffs

sdo_parameter1/2 Die SDO-Parameter geben an, welcher Eintrag im Objektverzeichnis gelesen werden soll. Dies erfolgt durch die Angabe von Index (ein Parameter des Typs WORD) und Subindex (ein Parameter des Typs BYTE). Die Angabe dieser Parameter kann in dezimaler oder hexadezimaler Form erfolgen.
I_variable In dieser Variablen werden die vom CAN-Knoten empfangenen Daten (max. 4 Byte) gespeichert.

Steuercodes für die SDO-Kommunikation

Für die SDO-Kommunikation werden die Lese- und Schreibanforderungen durch einen Steuercode im "SDO command specifier" festgelegt (Bezug: "CANopen high-level protocol for CAN-bus" -> SDO-Kommunikation -> SDO Command specifier "Initiate Domain Download" / "Initiate Domain Upload").

Für die einfachere Implementierung in ProNC kann eine Liste von Definitionen verwendet werden. Diese Liste kann mit Copy-And-Paste direkt in den PAL-Quellcode übernommen werden.

Mehr...

Die Liste der Definitionen für die Steuercodes der SDO-Zugriffe kann im PAL-Programm im Programmabschnitt mit den Definitionen von Textersatz eingefügt werden. Bei Verwendung der Befehle RxCAN und TxCAN können die Steuercodes dann "im Klartext" angegeben werden.

;--------------------------------------------------------------------------

; defines für SDO-Kommunikation : Initiate Domain Download Protocol

; e.g. Write Request vom Master->Slave bzw. Write Response Slave->Master

; Ref.: CiA DS 202-2 page 15

;--------------------------------------------------------------------------

#define SDO_WRQLONG 0x23 ; SDO Write ReQuest Typ "long"

#define SDO_WRQWORD 0x2B ; SDO Write ReQuest Typ "word"

#define SDO_WRQBYTE 0x2F ; SDO Write ReQuest Typ "byte"

#define SDO_WRPLONG 0x60 ; SDO Write ResPonse Typ "long"

#define SDO_WRPWORD 0x68 ; SDO Write ResPonse Typ "word"

#define SDO_WRPBYTE 0x6C ; SDO Write ResPonse Typ "byte"

;--------------------------------------------------------------------------

; defines für SDO-Kommunikation : Initiate Domain Upload Protocol

; e.g. Read Request vom Master->Slave bzw. Read Response Sl->Master

; Ref.: CiA DS 202-2 p. 18

;--------------------------------------------------------------------------

#define SDO_RRQLONG 0x40 ; SDO Read ReQuest Typ "long"

#define SDO_RRQWORD 0x48 ; SDO Read ReQuest Typ "word"

#define SDO_RRQBYTE 0x4C ; SDO Read ReQuest Typ "byte"

#define SDO_RRPLONG 0x43 ; SDO Read ResPonse Typ "long"

#define SDO_RRPWORD 0x4B ; SDO Read ResPonse Typ "word"

#define SDO_RRPBYTE 0x4F ; SDO Read ResPonse Typ "byte"

;--------------------------------------------------------------------------

; defines für SDO-Kommunikation : Rueckgabewert fuer Fehler

;--------------------------------------------------------------------------

#define SDO_ERP 0x80 ; SDO Error ResPonse

Beispiel:

#define SDO_WRQLONG 0x23 ; SDO Write ReQuest Typ "long"

#define SDO_WRQWORD 0x2B ; SDO Write ReQuest Typ "word"

#define SDO_WRQBYTE 0x2F ; SDO Write ReQuest Typ "byte"

#define SDO_WRPLONG 0x60 ; SDO Write ResPonse Typ "long"

#define SDO_WRPWORD 0x68 ; SDO Write ResPonse Typ "word"

#define SDO_WRPBYTE 0x6C ; SDO Write ResPonse Typ "byte"

#define SDO_RRQLONG 0x40 ; SDO Read ReQuest Typ "long"

#define SDO_RRQWORD 0x48 ; SDO Read ReQuest Typ "word"

#define SDO_RRQBYTE 0x4C ; SDO Read ReQuest Typ "byte"

#define SDO_RRPLONG 0x43 ; SDO Read ResPonse Typ "long"

#define SDO_RRPWORD 0x4B ; SDO Read ResPonse Typ "word"

#define SDO_RRPBYTE 0x4F ; SDO Read ResPonse Typ "byte"

#define SDO_ERP 0x80 ; SDO Error ResPonse

;Eine Endlosschleife wird durchlaufen, solange

;der Eingang E1.1 gesetzt ist

;Lesen der Objektverzeichnisse der CAN-Endstufen 1 ... 3,

;dort jeweils den Index 0x100B = Knotenadresse

;code = SDO_RRQLONG = 0x40

For R1=1,3,1 ;3 Endstufen, Knoten 1 bis 3

I1= SDO_RRQLONG ;Variable fuer SDO-code bzw. Returncode

I2= 0 ;Variable fuer Aufnahme der Daten

;RxCAN node_id I_variable sdo_parameter I_variable ;Lesen des Objektverz.-Eintrages

RxCAN R1 I1 0x100B 0x00 I2 ;SDO_parameter: OD_index=0x100B OD_subindex=0x00

If I1!=SDO_ERP

;es wurde fehlerfrei gelesen, die Knotenadresse steht jetzt in I2

MessageBox OK "Von Node %R1% wurde Knotenadresse %I2% gelesen"

EndIf

EndFor

;Schreiben von Objektverzeichnis-Eintraegen mehrerer Knoten

For R1=0,255,1

;Schreiben des Ports A1 eines CAN-IO-Moduls vom Typ

;CAN-I/O 16 16 mit der Knotenadresse 16

;Hinweis: Subindex=0x01 -> lokaler Ausgabeport 1 des CAN-I/O-Modules

; Subindex=0x02 -> lokaler Ausgabeport 2 des CAN-I/O-Modules

I3=SDO_WRQBYTE ;Variable fuer SDO-code bzw. Returncode

I4=R1 ;Variable mit den einzutragenden Daten

;TxCAN node_id I_variable sdo_parameter I_variable ;Schreiben des Objektverz.-Eintrages

TxCAN 16 I3 0x6200 0x01 I4 ;SDO_parameter: OD_index=0x6200 OD_subindex=0x01

;Schreiben des Ports A2 des CAN-I/O 16 16 (Knoten 16) -> SubIndex=2

I3=SDO_WRQBYTE ;Variable fuer SDO-code bzw. Returncode

I4=-R1 ;Variable mit den einzutragenden Daten

;TxCAN node_id I_variable sdo_parameter I_variable ;Schreiben des Objektverz.-Eintrages

TxCAN 16 I3 0x6200 0x02 I4 ;SDO_parameter: OD_index=0x6200 OD_subindex=0x01

;Schreiben des Ports A2 des CAN-I/O 8/12-4/1 (Knoten 16) -> SubIndex=3

I3= SDO_WRQBYTE ;Variable fuer SDO-code bzw. Returncode

I5=R1

;TxCAN node_id I_variable sdo_parameter I_variable ;Schreiben des Objektverz.-Eintrages

TxCAN 16 I3 0x6200 0x03 I5 ;SDO_parameter: OD_index=0x6200 OD_subindex=0x03

EndFor

Siehe auch: TxCan


RxCom

RxCom anz i/r_var

Empfang von Zeichen über die serielle Schnittstelle

Für den Empfang eines oder mehrerer Zeichen über eine geöffnete serielle Schnittstelle wird der Befehl "RxCom" verwendet.

Für das Empfangen oder Senden von Zeichen über eine serielle Schnittstelle des PC's ist es erforderlich, zuvor die gewünschte Schnittstelle mit Hilfe des Befehls "OpenCom" zu öffnen und auf die geforderten Übertragungsparameter einzustellen. Nach Abschluß aller Empfangs- bzw. Sendeaktivitäten muß die serielle Schnittstelle mit dem Befehl "CloseCom" geschlossen werden.

Hinweis:

Die Befehle zum Senden (Tx) bzw. Empfangen (Rx) von Zeichen über eine serielle Schnittstelle COMx beziehen sich immer auf die jeweilige, für eine bestimmte Übertragungsrate geöffnete Schnittstelle COMn (n=1...Anzahl der Schnittstellen). Es ist also nicht erforderlich, in den Befehlen für das Senden und Empfangen von Zeichen die Nummer der geöffneten Schnittstelle anzugeben. Falls innerhalb eines ISO- oder PAL-Anwendungsprogrammes z.B. von der Schnittstelle COM1 zur Schnittstelle COM3 gewechselt werden soll, so ist COM1 zu schließen und danach COM3 zu öffnen.

Verwendete Parameter:

anz Anzahl der Zeichen, die mit dem aktuellen Befehl empfangen werden sollen

i_var Angabe einer I-Variablen als Beginn des I-Variablenbereichs, in welche die jeweils empfangenen Zeichen übertragen werden sollen. Beim Empfang mehrerer Zeichen wird das erste empfangene Zeichen in die I-Variable mit dem angegebenen Index übertragen. Die weiteren empfangenen Zeichen werden in die I-Variablen mit den unmittelbar folgenden Indizes übertragen. Sollen beispielsweise 6 Zeichen empfangen werden und als Index für die I-Variable wird I5 angegeben, so werden mit dem Befehl "RxCom 6 I5" die 6 empfangenen Zeichen in die I-Variablen I5 - I10 übertragen.

Allgemein gilt: Beim Empfangen von n Zeichen und Angabe der I-Variablen Ii werden die empfangenen Zeichen in den Bereich der I-Variablen mit den Indizes i bis i+(n-1) übertragen.

r_var Angabe einer String-Variablen, in welcher die empfangenen Zeichen als Zeichenkette abgespeichert werden.

Beispiele:

;Oeffnen der Schnittstelle COM1

;Definition der Baudrate 19200 Bit/sec

OpenCom 1 19200

;Senden von 6 Bytes über die serielle Schnittstelle COM1

I10=6

I1=0x31 I2=0x32 I3=0x33 I4=0x34 I5=0x35

;Steuerzeichen CR=13 dez am Ende

I6=0x0d

;6 Byte ab I1 senden

TxCom I10 I1

;Ueberpruefung des Sendevorgangs

;I10 enthaelt die Anzahl gesendeter Zeichen

If I10!=6

MessageBox OK "Fehler bei Tx: zu wenig Zeichen gesendet ..."

EndIf

;Senden des Inhaltes der STR-Variable Str1 als

;Zeichenkette über die serielle Schnittstelle COM1

;Anzahl der zu sendenden Zeichen

I10=40

;Initialisierung der String-Variablen

Str1="Hello how are you ?! 1234567890 =&/() ,;.ÄÖÜ"

;Die ersten 40 Zeichen der Str-Variable Str1 werden gesendet

TxCom I10 Str1

;1 Sekunde warten

Delay 1000

;Empfang von 6 Bytes über die COM1

;6 Byte sollen empfangen werden

I10=6

I11=0 I12=0 I13=0 I14=0 I15=0 I16=0

;Die 6 Rx-Bytes ab I11 abspeichern in I11, I12, I13 ...

RxCom I10 I11

;I10 enthaelt die Anzahl empfangener Zeichen

If I10==6

Display 1 1 "Rx: %I10% Zeichen -> %I11% %I12% %I13% %I14% %I15% %I16% "

Else

MessageBox ERROR OK "Fehler bei Rx: Es wurden nur %I10% Zeichen empfangen..."

EndIf

; 44 Byte sollen als Zeichenkette empfangen werden

I10=44

Str2="..."

;44 Byte werden in Str2 uebertragen...

RxCom I10 Str2

;Geöffnete Schnittstelle COM1 schließen:

CloseCom

Siehe auch: OpenCom, CloseCom, TxCom


RxEth

RxEth handle maxnum [Strn][In] ErrorCode=Im

Empfangen von Daten über eine Ethernet-Verbindung

Der Befehl dient zum Empfang von Daten über eine mit dem Befehl "OpenEth" hergestellte Ethernet-Kommunikation.

Verwendete Parameter:

handle | Dieser Parameter ist der Handle der Verbindung, der bei Aufruf der Funktion OpenEth zurückgegeben wurde und normalerweise in einer Integer-Variablen abgelegt wurde.
maxnum | Eine Integer-Variable, welche die maximale Anzahl der zu empfangenden Zeichen enthält. Nach dem erfolgreichen Aufruf der Funktion enthält diese Variable die tatsächliche Anzahl der empfangenen Zeichen.
ErrorCode | Dieser Parameter dient zur Angabe einer Integer-Variablen mit dem Index m, in welcher der Fehlercode des Aufrufs abgelegt wird.
Strn | Bei der Übertragung von Zeichenketten: Eine String-Variable mit dem Index n, in welche die empfangenen Zeichen abgelegt werden.
In | Bei der Übertragung von Binärdaten: Eine Integer-Variable mit dem Index n, welche die erste von mehreren aufeinanderfolgenden Integer-Variablen benennt, in denen die empfangenen Zeichen abgelegt werden. Die maximale Anzahl der zu empfangenden Zeichen wird durch den Parameter maxnum festgelegt. Es ist zu beachten, daß die Anzahl der frei verfügbaren aufeinanderfolgen Integer-Variablen mindestens der Anzahl entspricht, die in maxnum festgelegt wurde.

Beispiel (1):

;Empfang einer Zeichenkette

ProgBegin

;Verbindungsaufbau zwischen Client und Server:

;Verbindungsdaten IP-Adresse und Port-Nummer initialisieren

Str1="127.0.0.1" I1=23 ;IP-Adresse des Localhost

;oder

Str1="192.160.12.77" I1=23 ;IP-Adresse im lokalen Netzwerk

Display Add "Oeffne IP host %S1%, port=%I1% ..."

I0=0 ;Integer-Variable fuer den Handle der Verbindung

I11=0 ;Integer-Variable fuer den ErrorCode

I0=OpenEth Str1 I1 ErrorCode=I11

If(I0==0)

Display Add "Verbindung konnte nicht hergestellt werden..."

ProgEnd

EndIf

I3 = 500 ;max xx Zeichen empfangen

Str3=""

Delay 1000 ;Warten bis Rx-Datenpaket komplett eingetroffen ist

;RxETH: Empfang vom IP-Host:

RxEth I0 I3 Str3 ;Anzahl der tatsächlich empfangenen Zeichen ist in I3

If I3==0

Display Add "Keine Zeichen empfangen..."

EndIf

If I3 >0

Display Add "Empfangen: %S3% "

EndIf

CloseEth I0

Beispiel (2):

;Empfang von 6 Byte Binaerdaten, die empfangenen Bytes

;werden in 6 aufeinanderfolgenden globalen Integer-Variablen

;uebertragen

ProgBegin

;Verbindungsaufbau zwischen Client und Server:

;Verbindungsdaten IP-Adresse und Port-Nummer initialisieren

Str1="127.0.0.1" I1=23 ;IP-Adresse des Localhost

;oder

Str1="192.160.12.77" I1=23 ;IP-Adresse im lokalen Netzwerk

Display Add "Oeffne IP host %S1%, port=%I1% ..."

I0=0 ;Integer-Variable fuer den Handle der Verbindung

I11=0 ;Integer-Variable fuer den ErrorCode

I0=OpenEth Str1 I1 ErrorCode=I11

If(I0==0)

Display Add "Verbindung konnte nicht hergestellt werden..."

ProgEnd

EndIf

I3=6 ;max 6 Zeichen empfangen

$I1=0x00 ;empfangende Integer-Variablen initialisieren

$I2=0x00

$I3=0x00

$I4=0x00

$I5=0x00

$I6=0x00

Delay 1000 ;Warten bis Rx-Datenpaket komplett eingetroffen ist

;RxETH: Empfang vom IP-Host:

RxEth I0 I3 $I1 ;Anzahl der tatsächlich empfangenen Zeichen ist in I3

If(I3==0)

Display Add "Keine Zeichen empfangen..."

EndIf

If(I3>0)

If(I3==6)

Display Add "Empfangen: $I1=%$I1% $I2=%$I2% $I3=%$I3% $I4=%$I4% $I5=%$I5% $I6=%$I6% "

Else

Display Add "Empfang unvollständig..."

EndIf

EndIf

CloseEth I0

Siehe auch: OpenEth, CloseEth, TxEth, GetStatusEth


S

Sn=rpm

Angabe der Spindeldrehzahl

Dieser Befehl wird zur Einstellung der Drehzahl einer Frässpindel verwendet. In Remote bzw. ProNC können bis zu vier Frässpindeln verwendet werden, dementsprechend laufen die gültigen Werte für den Index n von 1...4.

Falls mehrere Spindelantriebe verwendet werden, muß die gewünschte Spindel durch einen Index n adressiert werden: S1=rpm1, S2=rpm2, .... , S4=rpm4. Wird kein Index und kein Zuweisungsoperator ("=") verwendet, bezieht sich der Befehl immer auf Spindelantrieb 1: Srpm. Mögliche Werte für den Spindelindex sind 1...4.

Wenn der Drehzahlwert über den Befehl mit dem Zuweisungsoperator ("=") Sn=rpm angegeben wird, so ist immer die Angabe des Index erforderlich, auch wenn die Drehzahl für die Spindel 1 festgelegt werden soll.

Das Festlegen der Drehzahl für eine Frässpindel bewirkt noch nicht den Start der Frässpindel, dazu wird einer der Befehle für das Einschalten der Spindel verwendet, z.B. SCLW, SCCLW oder Spindle ON.

Beispiele:

;Ohne Index: Für Spindel 1

S1000 ; Drehzahl 1000Upm

SCLW ; Einschalten Rechtslauf

TIME 2000 ; Verzögerung 2Sek.

MOVEABS X50.3 ...

SOFF ;Spindel 1 ausschalten

;Verwendung mit Index

S1=1000 ; Drehzahl Spindel 1 = 1000U/min.

SCCLW 1 ; Spindel 1 ein, Gegen-Uhrzeigersinn

SOFF 1 ; Spindel 1 ausschalten

S2=2000 ; Drehzahl Spindel 2 = 1000U/min.

SCLW 2 ; Spindel 2 ein, Uhrzeigersinn

SOFF 2 ; Spindel 2 ausschalten

Siehe auch: SCLW, SCCLW, SOFF, Spindle


SaveIVar

SaveIVar [Strn]["dateiname"] I0 I1 I2 ... In

Speichern von I-Variablen in einer Datei

Dieser Befehl wird verwendet, um die Werte einer oder mehrerer I-Variablen des laufenden NC-Programms in die Variablendatei mit dem Namen "Dateiname" zu speichern.

Parameter des Befehls:

Strn / "dateiname" | Angabe von Namen und Pfad der Variablendatei, in welche die I-Variablen gespeichert werden sollen. Der Dateiname kann entweder in einer String-Variablen mit dem Index n enthalten sein oder direkt als Zeichenkette angegeben werden. Bei der Angabe als Zeichenkette wird der Dateiname in Anführungszeichen eingeschlossen.
I0, I1, I2, ... In | Angabe der I-Variablen, für welche die Werte in die Variablendatei geschrieben werden sollen. Der Bereich der lad- und speicherbaren Variablen erstreckt sich von I0 bis zum maximal erlaubten Index für I-Variablen (999). Falls Sie in Ihrem Programm I-Variablen speichern und laden möchten, müssen Sie dazu Variablen innerhalb dieses Bereichs verwenden.

Beispiel:

; In die Datei test.var im Verzeichnis

; c:\cncworkbench\ncprog\dest werden die

; I-Variablen I21, I22, I23 und I24 gespeichert

SaveIVar "c:\cncworkbench\ncprog\dest\test.var" I21 I22 I23 I24

Siehe auch: SaveIVarFile, LoadIVar, LoadIVarFile


SaveIVarFile

SaveIVarFile [Strn]["dateiname"]

Speichern von I-Variablen in einer Datei

Dieser Befehl wird verwendet, um die aktuellen Werte aller I-Variablen im Bereich I0 bis I299 in der Variablendatei mit dem Namen "dateiname" zu speichern.

Parameter des Befehls:

Strn / "dateiname"

Angabe von Namen und Pfad der Variablendatei, in welche die I-Variablen gespeichert werden sollen. Der Dateiname kann entweder in einer String-Variablen mit dem Index n enthalten sein oder direkt als Zeichenkette angegeben werden. Bei der Angabe als Zeichenkette wird der Dateiname in Anführungszeichen eingeschlossen.

Beispiel:

; In die Datei test.var im Verzeichnis

; c:\cncworkbench\ncprog\dest werden die

; Werte fuer die Variablen I0...I299 geschrieben

SaveIVarFile "c:\cncworkbench\ncprog\dest\test.var"

Siehe auch: SaveIVar, LoadIVar, LoadIVarFile


SaveQVar

SaveQVar [Strn]["dateiname"] Q0 Q1 Q2 ... Qn

Speichern von einzelnen Q-Variablen in einer Datei

Dieser Befehl wird verwendet, um die Werte einer oder mehrerer Q-Variablen des laufenden NC-Programms in die Variablendatei mit dem Namen "Dateiname" zu speichern.

Parameter des Befehls:

Strn / "dateiname" | Angabe von Namen und Pfad der Variablendatei, in welche die Q-Variablen gespeichert werden sollen. Der Dateiname kann entweder in einer String-Variablen mit dem Index n enthalten sein oder direkt als Zeichenkette angegeben werden. Bei der Angabe als Zeichenkette wird der Dateiname in Anführungszeichen eingeschlossen.
Q0, Q1, Q2, ... Qn | Angabe der Q-Variablen, für welche die Werte in die Variablendatei geschrieben werden sollen. Der Bereich der lad- und speicherbaren Variablen erstreckt sich von Q0 bis zum maximal erlaubten Index für Q-Variablen (499). Falls Sie in Ihrem Programm Q-Variablen speichern und laden möchten, müssen Sie dazu Variablen innerhalb dieses Bereichs verwenden.

Beispiel:

; In die Datei qvars.var im Verzeichnis

; c:\cncworkbench\ncprog\dest werden die

; Variablen Q21, Q22, Q23 und Q24 gespeichert

SaveQVar "c:\cncworkbench\ncprog\dest\qvars.var" Q21 Q22 Q23 Q24

Siehe auch: LoadQVar, LoadQVarFile, SaveQVarFile


SaveQVarFile

SaveQVarFile [Strn]["dateiname"]

Speichern der Werte für die Q-Variablen Q0...Q299 in einer Datei

Dieser Befehl wird verwendet, um die aktuellen Werte aller Q-Variablen im Bereich Q0 bis Q299 in die Variablendatei mit dem Namen "dateiname" zu speichern.

Parameter des Befehls:

Strn / "dateiname"

Angabe von Namen und Pfad der Variablendatei, in welche die Q-Variablen gespeichert werden sollen. Der Dateiname kann entweder in einer String-Variablen mit dem Index n enthalten sein oder direkt als Zeichenkette angegeben werden. Bei der Angabe als Zeichenkette wird der Dateiname in Anführungszeichen eingeschlossen.

Beispiel:

; In die Datei qvars.var im Verzeichnis

; c:\cncworkbench\ncprog\dest werden die

; Werte fuer die Variablen Q0...Q299 geschrieben

SaveQVarFile "c:\cncworkbench\ncprog\dest\qvars.var"

Siehe auch: LoadQVar, LoadQVarFile, SaveQVar


SaveRVar

SaveRVar [Strn]["dateiname"] R0 R1 R2 ... Rn

Speichern von R-Variablen in einer Datei

Dieser Befehl wird verwendet, um die Werte einer oder mehrerer R-Variablen des laufenden NC-Programms in die Variablendatei mit dem Namen "Dateiname" zu speichern.

Parameter des Befehls:

Strn / "dateiname" | Angabe von Namen und Pfad der Variablendatei, in welche die R-Variablen gespeichert werden sollen. Der Dateiname kann entweder in einer String-Variablen mit dem Index n enthalten sein oder direkt als Zeichenkette angegeben werden. Bei der Angabe als Zeichenkette wird der Dateiname in Anführungszeichen eingeschlossen.
R0, R1, R2, ... Rn | Angabe der R-Variablen, für welche die Werte in die Variablendatei geschrieben werden sollen. Der Bereich der lad- und speicherbaren Variablen erstreckt sich von R0 bis zum maximal erlaubten Index für R-Variablen (999). Falls Sie in Ihrem Programm Variablen speichern und laden möchten, müssen Sie dazu Variablen innerhalb dieses Bereichs verwenden.

Beispiel:

; In die Datei test.var im Verzeichnis

; c:\cncworkbench\ncprog\dest werden die

; Variablen R21, R22, R23 und R24 gespeichert

SaveRVar "c:\cncworkbench\ncprog\dest\test.var" R21 R22 R23 R24

Siehe auch: LoadRVar, LoadRVarFile, SaveRVarFile


SaveRVarFile

SaveRVarFile [Strn]["dateiname"]

Speichern von R-Variablen in einer Datei

Dieser Befehl wird verwendet, um die aktuellen Werte aller R-Variablen im Bereich R0 bis R299 in der Variablendatei mit dem Namen "dateiname" zu speichern.

Parameter des Befehls:

Strn / "dateiname"

Angabe von Namen und Pfad der Variablendatei, in welche die R-Variablen gespeichert werden sollen. Der Dateiname kann entweder in einer String-Variablen mit dem Index n enthalten sein oder direkt als Zeichenkette angegeben werden. Bei der Angabe als Zeichenkette wird der Dateiname in Anführungszeichen eingeschlossen.

Beispiel:

; In die Datei test.var im Verzeichnis

; c:\cncworkbench\ncprog\dest werden die

; Werte fuer die Variablen R0...R299 geschrieben

SaveRVarFile "c:\cncworkbench\ncprog\dest\test.var"

Siehe auch: LoadRVar, LoadRVarFile, SaveRVar


SaveVarFile

SaveVarFile "dateiname"

Speichern von R-Variablen in einer Datei

Dieser Befehl wird verwendet, um die aktuellen Werte aller R-Variablen im Bereich R0 bis R299 in der Variablendatei mit dem Namen "dateiname" zu speichern.

Hinweis: Dieser Befehl ist veraltet, alternativ soll der Befehl SaveRVarFile verwendet werden!


SCCLW

SCCLW n

Einschalten der Frässpindel mit Drehrichtung "Links"

Schaltet eine Frässpindel mit der Drehrichtung LINKS (Counter Clockwise, CCLW) ein.

Falls mehrere Spindelantriebe verwendet werden, muß die gewünschte Spindel durch einen Index n adressiert werden: SCCLW 1, SCCLW2, .... SCCLW4. Wird kein Index verwendet, bezieht sich der Befehl auf Spindelantrieb 1. Mögliche Werte für den Spindelindex sind 1...4.

Wenn zuvor ein Drehzahlwert über den Zuweisungsoperator ("=") Sn=rpm angegeben wird, so ist immer die Angabe des Index erforderlich, auch wenn die Drehzahl für die Spindel 1 festgelegt werden soll. Der Befehl SCCLW kann dagegen wahlweise ohne die Angabe des Index 1 erfolgen, wenn die erste Spindel eingeschaltet werden soll.

Beispiele:

;Ohne Index: Für Spindel 1

S1000 ; Drehzahl 1000Upm

SCCLW ; Einschalten Linkslauf

TIME 2000 ; Verzögerung 2Sek.

MOVEABS X50.3 ...

SOFF ;Spindel 1 ausschalten

;Verwendung mit Index

S1=1000 ; Drehzahl Spindel 1 = 1000U/min.

SCCLW 1 ; Spindel 1 ein, Gegen-Uhrzeigersinn

SOFF 1 ; Spindel 1 ausschalten

S2=2000 ; Drehzahl Spindel 2 = 1000U/min.

SCCLW 2 ; Spindel 2 ein, Gegen-Uhrzeigersinn

SOFF 2 ; Spindel 2 ausschalten

Siehe auch: S, SCLW, SOFF, Spindle


SCLW

SCLW n

Einschalten der Frässpindel mit Drehrichtung "Rechts"

Schaltet eine Frässpindel mit der Drehrichtung RECHTS (Clockwise, CLW) ein.

Falls mehrere Spindelantriebe verwendet werden, muß die gewünschte Spindel durch einen Index n adressiert werden: SCLW 1, SCLW2, .... SCLW4. Wird kein Index verwendet, bezieht sich der Befehl auf Spindelantrieb 1. Mögliche Werte für den Spindelindex sind 1...4.

Wenn zuvor ein Drehzahlwert über den Zuweisungsoperator ("=") Sn=rpm angegeben wird, so ist immer die Angabe des Index erforderlich, auch wenn die Drehzahl für die Spindel 1 festgelegt werden soll. Der Befehl SCLW kann dagegen wahlweise ohne die Angabe des Index 1 erfolgen, wenn die erste Spindel eingeschaltet werden soll.

Beispiele:

;Ohne Index: Für Spindel 1

S1000 ; Drehzahl 1000Upm

SCLW ; Einschalten Rechtslauf

TIME 2000 ; Verzögerung 2Sek.

MOVEABS X50.3 ...

SOFF ;Spindel 1 ausschalten

;Verwendung mit Index

S1=1000 ; Drehzahl Spindel 1 = 1000U/min.

SCLW 1 ; Spindel 1 ein, Uhrzeigersinn

SOFF 1 ; Spindel 1 ausschalten

S2=2000 ; Drehzahl Spindel 2 = 1000U/min.

SCLW 2 ; Spindel 2 ein, Uhrzeigersinn

SOFF 2 ; Spindel 2 ausschalten

Siehe auch: S, SCCLW, SOFF, Spindle


Selection

Selection [index] [Clear] Entry=[Strn]["infotext"] Tooltip=[Strn] ["tooltip"] Image=[Strn]["image"] Result=[In]

[Rn][Strn] RegisteredValue=[In][Rn][Strn]

Festlegen einer Auswahlmöglichkeit für den Befehl "Select"

Mit Hilfe des Befehlspaares Selection / Select können 1-aus-n-Auswahlen auf mehrere Arten realisiert werden. Diese frei programmierbaren Auswahlmöglichkeiten dienen dazu, dem Benutzer des Programms bei komplexen Programmabläufen funktionale Verzweigungen anzubieten.

Die Konfiguration der Auswahlmöglichkeiten erfolgt mit Hilfe der Anweisung "Selection". Für jede Auswahlmöglichkeit des Dialogs wird eine eigene Konfiguration durch eine entsprechende Selection-Anweisung getroffen. Der Aufruf der Funktion zur Konfiguration einer Einzelauswahlmöglichkeit bewirkt noch nicht die Anzeige des Dialogs.

Der eigentliche Aufruf zur Anzeige des Auswahldialogs ist der Aufruf der Funktion Select. Diese Funktion verwendet die zuvor mit den Aufrufen von Selection festgelegten Auswahlmöglichkeiten und stellt sie je nach festgelegtem Typ des Dialogs unterschiedlich dar.

Anzeige des Auswahldialogs mit der Anweisung "Select"

Parameter des Befehls Selection

index

Der Index (Zählweise ab 1) der Auswahlmöglichkeit, für welche diese Konfiguration einer Einzelauswahlmöglichkeit festgelegt wird.

Gültige Werte sind

·Für Dialogtyp 1: 1...50

·Für Dialogtyp 2: 1...8

·Für Dialogtyp 3: 1...100

·Für Dialogtyp 4: 1

·Für Dialogtyp 5: 1

Clear

Die Angabe der Anweisung "Clear" bedeutet, daß entweder die mit dem Index spezifizierte Konfiguration oder, falls kein Index angegeben wird, die Konfiguration aller Selektionen gelöscht wird:

Selection Clear | Die Konfigurationen aller Auswahlmöglichkeiten werden gelöscht
Selection index Clear | Die Konfiguration der Auswahlmöglichkeit mit dem Index index wird gelöscht

Entry = Strn / "infotext"

Angabe einer Zeichenkettenvariablen (Strn) mit dem Index n oder einer Zeichenkette ("infotext")für die Benennung der Auswahlmöglichkeit. Je nach gewähltem Typ des Auswahldialogs wird der Text als Aufschrift einer Schaltfläche oder als Text eines Listeneintrags dargestellt.

Tooltip = Strn / "tooltip"

Angabe eines Textes, der als Tooltip auf einer Auswahlmöglichkeit dargestellt wird. Je nach Typ des Auswahldialogs erscheint der Tooltip nach dem Positionieren des Mauszeigers auf einer Schaltfläche (Dialogtyp 1 oder 2) oder als Hinweistext unterhalb der Liste mit den verschiedenen Auswahlmöglichkeiten (Dialogtyp 3).

Tooltip bei Typ 1, 2

Tooltip als Info bei Typ 3

Image = Strn / "image"

Dieser Parameter dient zur Angabe einer Bitmap- oder einer Icon-Datei mit einem spezifischen Bild für die jeweilige Auswahlmöglichkeit. Dazu wird der vollständige Dateiname (Pfad und Name der Bitmap- bzw. Icon-Datei) entweder mit einer String-Variablen mit dem Index n oder als Zeichenkette übergeben. Dieses Bild wird bei den Dialogtypen 2 und 3 auf den Auswahlschaltflächen bzw. in den einzelnen Zeilen der Liste dargestellt.

Hinweis zur Gestaltung der Bitmap

Im Unterschied zu Icons, bei denen ein Hintergrund transparent festgelegt werden kann, ist ein transparenter Hintergrund bei Bitmaps nicht definierbar. Es kann in der Bitmap aber eine Transparenzfarbe festgelegt werden, welche dann bei der Darstellung auf einer Schaltfläche oder in der Auswahlliste transparent dargestellt wird. Diese Transparenzfarbe ist die Farbe des ersten Pixels in der Bitmap, also des Pixels in der linken oberen Ecke der Bitmap. Alle Pixel, welche die gleiche Farbe wie das erste Pixel der Bitmap haben, werden bei der Darstellung auf der Schaltfläche oder in einem Listenelement transparent dargestellt, d.h. sie werden durch die jeweilige Hintergrundfarbe ersetzt.

Die dazugehörigen Bitmap-Dateien mit der Transparentfarbe Blau (RGB=0,0,255)

Die dazugehörigen Bitmap-Dateien mit der Transparentfarbe Blau (RGB=0,0,255)

Result =

In / Rn / result

Der Parameter result stellt einen numerischen Wert dar, welcher als Rückgabewert des Dialogs für diese Selektion verwendet wird. Wenn die aktuelle Selektion im Moment des Beenden des Dialogs auf der Auswahlmöglichkeit steht, für das dieser Rückgabewert festgelegt wurde, so wird der Wert von "Result" der im Befehl "Select" festgelegten empfangenden Integer- oder Real-Variablen zugewiesen.

Der Rückgabewert result kann entweder in einer Integer- oder Real-Variablen übergeben oder direkt als numerischer Wert angegeben werden.

Wenn der Parameter Result bei der Verwendung der Anweisung "Selection" nicht angegeben wird, so erhält er den Wert des Parameters Index als Defaultwert.

RegisteredValue

WorkMode 5 (Eingabe von Werten durch den Anwender)

Der Parameter RegisteredValue benennt eine R-, I- oder Str-Variable, in die das Ergebnis einer bzw. mehrerer Benutzereingaben eingetragen wird. Die Eingabe im Eingabefeld bzw. den Eingabefeldern des Dialogs wird nach Typ der angegebenen Variablen ausgewertet und in die angegebene Variable übernommen.

Einschränkung: Die eingetragenen Werte können nur in lokale Variablen übertragen werden. Eine Übertragung in globale Variablen ist nicht möglich.

Beispiel für die Festlegung mehrerer Auswahlmöglichkeiten

Direkte Angabe von Zeichenketten und numerischen Werten:

Selection Clear

Selection 1 Entry="Eintrag 1" ToolTip="Tooltip für Eintrag 1" Image=Str1+"Nr_1.BMP" Result=1

Selection 2 Entry="Eintrag 2" ToolTip="Tooltip für Eintrag 2" Image=Str1+"Nr_2.BMP" Result=2

Selection 3 Entry="Eintrag 3" ToolTip="Tooltip für Eintrag 3" Image=Str1+"Nr_3.BMP" Result=3

Selection 4 Entry="Eintrag 4" ToolTip="Tooltip für Eintrag 4" Image=Str1+"Nr_4.BMP" Result=4

Selection 5 Entry="Eintrag 5" ToolTip="Tooltip für Eintrag 5" Image=Str1+"Nr_5.BMP" Result=5

Selection 6 Entry="Eintrag 6" ToolTip="Tooltip für Eintrag 6" Image=Str1+"Nr_6.BMP" Result=6

oder alternativ unter Verwendung von Variablen:

Str1="F:\NcProg\PAL\Select\"

Selection Clear

Str11="Eintrag 1" Str21="Tooltip für Eintrag 1" Str31=Str1+"Nr_1.BMP" I11=1

Str12="Eintrag 2" Str22="Tooltip für Eintrag 2" Str32=Str1+"Nr_2.BMP" I12=2

Str13="Eintrag 3" Str23="Tooltip für Eintrag 3" Str33=Str1+"Nr_3.BMP" I13=3

Str14="Eintrag 4" Str24="Tooltip für Eintrag 4" Str34=Str1+"Nr_4.BMP" I14=4

Str15="Eintrag 5" Str25="Tooltip für Eintrag 5" Str35=Str1+"Nr_5.BMP" I15=5

Str16="Eintrag 6" Str26="Tooltip für Eintrag 6" Str36=Str1+"Nr_6.BMP" I16=6

Selection 1 Entry=Str11 ToolTip=Str21 Image=Str31 Result=I11

Selection 2 Entry=Str12 ToolTip=Str22 Image=Str32 Result=I12

Selection 3 Entry=Str13 ToolTip=Str23 Image=Str33 Result=I13

Selection 4 Entry=Str14 ToolTip=Str24 Image=Str34 Result=I14

Selection 5 Entry=Str15 ToolTip=Str25 Image=Str35 Result=I15

Selection 6 Entry=Str16 ToolTip=Str26 Image=Str36 Result=I16

Der abschließende Aufruf für die Anzeige des Dialogs:

I1 = Select DlgType=2 Title="Dialogtitel" Default=1 Result=I2

Darstellung bei Dialogtyp 2

Darstellung bei Dialogtyp 3

Beispiel für mehrere Auswahlmöglichkeiten bei Minimalkonfiguration

Dialogtyp 1 (Auswahl 1-aus-50 mit kleinen Schaltflächen)

Angabe der mindestens benötigten Daten für eine Minimalkonfiguration der einzelnen Auswahlmöglichkeiten. Die Darstellung erfolgt ohne zugeordnete Bilder und ohne Tooltips:

Selection Clear

Selection 1 Entry="T01"

Selection 2 Entry="T02"

Selection 3 Entry="T03"

Selection 4 Entry="T04"

Selection 5 Entry="T05"

Selection 6 Entry="T06"

oder alternativ unter Verwendung von Variablen:

Str1="F:\NcProg\PAL\Select\"

Str11="T01"

Str12="T02"

Str13="T03"

Str14="T04"

Str15="T05"

Str16="T06"

Selection Clear

Selection 1 Entry=Str11

Selection 2 Entry=Str12

Selection 3 Entry=Str13

Selection 4 Entry=Str14

Selection 5 Entry=Str15

Selection 6 Entry=Str16

Der abschließende Aufruf für die Anzeige des Dialogs:

I1 = Select DlgType=1 Result=I2

Die Darstellung des Dialogs stellt sich bei der oben dargestellten Minimalkonfiguration so dar:

Dialogtyp 2 (Auswahl 1-aus-8 mit großen Schaltflächen),

Dialogtyp 3 (Auswahl 1-aus-100 mittels einer Liste)

Angabe der mindestens benötigten Daten für eine Minimalkonfiguration der einzelnen Auswahlmöglichkeiten. Die Darstellung erfolgt ohne zugeordnete Bilder und ohne Tooltips:

Selection Clear

Selection 1 Entry="9783936337303"

Selection 2 Entry="9783936337501"

Selection 3 Entry="9783936337563"

Selection 4 Entry="9783936337624"

Selection 5 Entry="9783936337778"

Selection 6 Entry="9783936337815"

Der Aufruf für die Anzeige des Dialogs für Typ 2:

I1 = Select DlgType=2 Result=I2

Die Darstellung des Dialogs stellt sich bei der oben dargestellten Minimalkonfiguration so dar:

Der Aufruf für die Anzeige des Dialogs für Typ 3:

I1 = Select DlgType=3 Result=I2

In der Listenansicht stellt sich der Dialog bei Minimalkonfiguration so dar:

Siehe auch: Select


Select

Ix|Rx=Select DlgType=[In][Rn][type] Title=[Strn]["title"] Default=[In][Rn][default] RetValueIfTimeout=[In][Rn][defretval] TimeOut=[In][Rn][timeouttime] Result=[In][Rn]

Auswahl einer von mehreren Optionen mit einem allgemeinen Auswahldialog

Mit Hilfe des Befehlspaares Selection / Select können 1-aus-n-Auswahlen auf mehrere Arten realisiert werden. Diese frei programmierbaren Auswahlmöglichkeiten dienen dazu, dem Benutzer des Programms bei komplexen Programmabläufen funktionale Verzweigungen anzubieten.

Die Konfiguration der Auswahlmöglichkeiten erfolgt mit Hilfe der Anweisung "Selection". Für jede Auswahlmöglichkeit des Dialogs wird eine eigene Konfiguration durch eine entsprechende Selection-Anweisung getroffen. Der Aufruf der Funktion zur Konfiguration einer Einzelauswahlmöglichkeit bewirkt noch nicht die Anzeige des Dialogs.

Konfiguration von Auswahlmöglichkeiten mit der Anweisung "Selection"

Der eigentliche Aufruf zur Anzeige des Auswahldialogs ist der Aufruf der Funktion Select. Diese Funktion verwendet die zuvor mit den Aufrufen von Selection festgelegten Auswahlmöglichkeiten und stellt sie je nach festgelegtem Typ des Dialogs unterschiedlich dar.

Parameter des Befehls Select

Ix

Rx

Angabe einer I-Variablen (Integer-Variablen) oder einer R-Variablen (Real-Variablen, Gleitkommavariablen), an die der Rückgabewert des Aufrufs übergeben wird. Der Rückgabewert ist je nach Konfiguration des Select-Aufrufs eine der symbolischen Konstanten IDOK, IDCANCEL, IDABORT, IDRETRY, IDIGNORE, IDYES, IDNO.

DlgType = In / Rn / type

Angabe des Typs des anzuzeigenden Auswahldialogs als numerischer Wert. Es sind mehrere Auswahlmöglichkeiten verfügbar:

1: | Anzeige des Dialogs mit bis zu 50 kleinen Schaltflächen, selbstsortierend
2: | Anzeige des Dialogs mit bis zu 8 großen Schaltflächen, selbstskalierend
3: | Anzeige des Dialogs mit einer Liste mit bis zu 100 Einträgen, selbstskalierend
4: | Anzeige des Dialogs mit Icon, Bitmap und Text für die erste Auswahl (festgelegt mit "Selection 1"), selbstskalierend, die Anzeige des Dialogs kann als erweiterte MessageBox verwendet werden
5: | Anzeige des Dialogs mit Icon, Bitmap und Text, selbstskalierend, zur Eingabe einer R-, I- oder STR-Variablen. Die Auswahl wird mit "Selection 1", "Selection 2", ... festgelegt. Wird nur eine Auswahlmöglichkeit definiert, erscheint der Dialog in Form einer Meldung mit Eingabemöglichkeit. Werden mehr als eine Auswahlmöglichkeit festgelegt, enthält der Dialog eine Liste mit einer Eingabemöglichkeit in jeder Zeile der Liste.

Der Wert für DlgType kann entweder in einer Integer- oder Real-Variablen übergeben oder direkt als numerischer Wert angegeben werden.

Title = Strn / "title"

Angabe einer Zeichenkettenvariablen mit dem Titel des Dialogs. Alternativ kann der Titel des Dialogs direkt als Zeichenkette (eingefasst in Anführungsstrichen) zugewiesen werden.

Default = In / Rn / default

Der Parameter default stellt einen numerischen Wert dar, welcher die Selektion des Dialogs auf einen Voreinstellwert setzt.

Der Defaultwert der Selektion kann entweder in einer Integer- oder Real-Variablen übergeben oder direkt als numerischer Wert angegeben werden.

RetValueIfTimeout =

In / Rn / retvaliftimeout

Der Parameter retvalueiftimeout stellt einen numerischen Wert dar, welcher als Rückgabewert des Dialogs verwendet wird, wenn eine Timeout-Zeit angegeben wurde und diese Zeit verstrichen ist, ohne daß eine Aktion des Benutzers stattgefunden hat.

Der Default-Rückgabewert bei Timeout kann entweder in einer Integer- oder Real-Variablen übergeben oder direkt als numerischer Wert angegeben werden.

TimeOut = In / Rn / timeouttime

Angabe einer Timeout-Zeit in Millisekunden. Nach Ablauf der Timeout-Zeit wird, falls innerhalb dieses Zeitraums keine Bedienhandlung stattgefunden hat, der Dialog automatisch beendet. Der Rückgabewert des Dialogs (indiziert die Auswahl von OK oder Abbrechen) ist in diesem Fall der mit "RetValueIfTimeout" festgelegte Default-Rückgabewert.

Die Zeitspanne für den Timeout kann entweder in einer Integer- oder Real-Variablen übergeben oder direkt als numerischer Wert angegeben werden.

Result=In / Rn

Der Parameter "Result" spezifiziert eine Integer- oder Real-Variable, die nach Beenden des Auswahldialogs die aktuelle Selektion des Dialogs erhält. Die Selektion ist ein numerischer Wert im Bereich 1 ... n (n=maximale Anzahl der Auswahlmöglichkeiten des Dialogs).

Die Darstellung der Auswahl bei den verschiedenen Dialogtypen

Je nach eingestelltem Dialogtyp (1, 2 oder 3) wird die Auswahl unterschiedlich dargestellt. Nachfolgend sind die drei unterschiedlichen Erscheinungsbilder jeweils für eine 1-aus-6-Auswahl dargestellt:

·Darstellung bei Dialogtyp 1

Bei Änderung der Größe bzw. des Seitenverhältnisses des Dialogs passt sich das Erscheinungsbild der Schaltflächen an und sortiert sich eigenständig so, daß die Schaltflächen in aufsteigender Reihenfolge innerhalb des Dialogs angeordnet werden.

·Darstellung bei Dialogtyp 2

Bei Änderung der Größe bzw. des Seitenverhältnisses des Dialogs werden die Schaltflächen bis zu einem gewissen Grad skaliert und in der Größe an die Größe des Dialogs angepasst. Wird der Dialog zu klein, so werden die Schaltflächen nach und nach ausgeblendet, so daß noch eine Bedienbarkeit der Schaltfläche gegeben ist.

·Darstellung bei Dialogtyp 3

Bei Änderung der Größe bzw. des Seitenverhältnisses des Dialogs wird die Liste skaliert, bis die minimalen Abmessungen erreicht sind. Die Höhe der einzelnen Listeneinträge richtet sich nach der Höhe des Bildes, genauer nach der Höhe der Bitmap bzw. des Icons in Pixeln. Texteinträge können mehrzeilig angelegt werden, wenn im angegebenen Text für den Eintrag das Steuerzeichen für den Zeilenumbruch, "\n", eingetragen wird.

·Darstellung bei Dialogtyp 4

Dialogtyp 4 zeigt im Dialog nur Texte oder / und Bilder an. Dieser Dialogtyp kann für Mitteilungen, Hinweise und Aufforderungen an den Bediener der Maschine verwendet werden. Es gibt keine Auswahlmöglichkeiten außer dem Betätigen der Tasten "Abbrechen", "OK", "Ja", "Nein" usw.

·Darstellung bei Dialogtyp 5

Der Dialogtyp 5 wird verwendet, um Eingaben des Bedieners zu erfassen. Die eingegebenen Werte können in lokale R-, I- oder Str-Variablen übertragen werden. Das Erscheinungsbild des Dialogs richtet sich nach der Anzahl der einzugebenden Werte, die bei der Konfiguration mit dem Befehl "Selection" festgelegt werden.

Darstellung bei der Konfiguration für die Eingabe mehrerer Werte.

Darstellung bei der Konfiguration für die Eingabe eines Einzelwertes

Rückgabewerte des Dialogs

Der Dialog kann mit den beiden Schaltflächen "OK" bzw. "Abbrechen" beendet werden. Der Rückgabewert ist ein numerischer Wert, falls "OK" gewählt wurde ist der Rückgabewert 1, falls Abbrechen gewählt wurde ist der Rückgabewert 2.

Wenn der Dialog mit der Option TimeOut gestartet wurde und mit Hilfe der Anweisung "RetValueIfTimeout" ein Default-Rückgabewert angegeben wurde, so wird nach Ablauf der Timeout-Zeit und wenn keine weitere Bedienhandlung vorgenommen wurde, der hier festgelegte Default-Rückgabewert zurückgegeben.

Beispiel für die Festlegung mehrerer Auswahlmöglichkeiten

Direkte Angabe von Zeichenketten und numerischen Werten:

Selection Clear

Selection 1 Entry="Eintrag 1" ToolTip="Tooltip für Eintrag 1" Image=Str1+"Nr_1.BMP" Result=1

Selection 2 Entry="Eintrag 2" ToolTip="Tooltip für Eintrag 2" Image=Str1+"Nr_2.BMP" Result=2

Selection 3 Entry="Eintrag 3" ToolTip="Tooltip für Eintrag 3" Image=Str1+"Nr_3.BMP" Result=3

Selection 4 Entry="Eintrag 4" ToolTip="Tooltip für Eintrag 4" Image=Str1+"Nr_4.BMP" Result=4

Selection 5 Entry="Eintrag 5" ToolTip="Tooltip für Eintrag 5" Image=Str1+"Nr_5.BMP" Result=5

Selection 6 Entry="Eintrag 6" ToolTip="Tooltip für Eintrag 6" Image=Str1+"Nr_6.BMP" Result=6

oder alternativ unter Verwendung von Variablen:

Str1="F:\NcProg\PAL\Select\"

Str11="Eintrag 1" Str21="Tooltip für Eintrag 1" Str31=Str1+"Nr_1.BMP" I11=1

Str12="Eintrag 2" Str22="Tooltip für Eintrag 2" Str32=Str1+"Nr_2.BMP" I12=2

Str13="Eintrag 3" Str23="Tooltip für Eintrag 3" Str33=Str1+"Nr_3.BMP" I13=3

Str14="Eintrag 4" Str24="Tooltip für Eintrag 4" Str34=Str1+"Nr_4.BMP" I14=4

Str15="Eintrag 5" Str25="Tooltip für Eintrag 5" Str35=Str1+"Nr_5.BMP" I15=5

Str16="Eintrag 6" Str26="Tooltip für Eintrag 6" Str36=Str1+"Nr_6.BMP" I16=6

Selection Clear

Selection 1 Entry=Str11 ToolTip=Str21 Image=Str31 Result=I11

Selection 2 Entry=Str12 ToolTip=Str22 Image=Str32 Result=I12

Selection 3 Entry=Str13 ToolTip=Str23 Image=Str33 Result=I13

Selection 4 Entry=Str14 ToolTip=Str24 Image=Str34 Result=I14

Selection 5 Entry=Str15 ToolTip=Str25 Image=Str35 Result=I15

Selection 6 Entry=Str16 ToolTip=Str26 Image=Str36 Result=I16

Der abschließende Aufruf für die Anzeige des Dialogs:

I1 = Select DlgType=2 Title="Dialogtitel" Default=1 Result=I2

Darstellung bei Dialogtyp 2

Darstellung bei Dialogtyp 3

Beispiel für mehrere Auswahlmöglichkeiten bei Minimalkonfiguration

Dialogtyp 1 (Auswahl 1-aus-50 mit kleinen Schaltflächen)

Angabe der mindestens benötigten Daten für eine Minimalkonfiguration der einzelnen Auswahlmöglichkeiten. Die Darstellung erfolgt ohne zugeordnete Bilder und ohne Tooltips:

Selection Clear

Selection 1 Entry="T01"

Selection 2 Entry="T02"

Selection 3 Entry="T03"

Selection 4 Entry="T04"

Selection 5 Entry="T05"

Selection 6 Entry="T06"

oder alternativ unter Verwendung von Variablen:

Str1="F:\NcProg\PAL\Select\"

Str11="T01"

Str12="T02"

Str13="T03"

Str14="T04"

Str15="T05"

Str16="T06"

Selection Clear

Selection 1 Entry=Str11

Selection 2 Entry=Str12

Selection 3 Entry=Str13

Selection 4 Entry=Str14

Selection 5 Entry=Str15

Selection 6 Entry=Str16

Der abschließende Aufruf für die Anzeige des Dialogs:

I1 = Select DlgType=1 Result=I2

Die Darstellung des Dialogs stellt sich bei der oben dargestellten Minimalkonfiguration so dar:

Dialogtyp 2 (Auswahl 1-aus-8 mit großen Schaltflächen),

Dialogtyp 3 (Auswahl 1-aus-100 mittels einer Liste)

Angabe der mindestens benötigten Daten für eine Minimalkonfiguration der einzelnen Auswahlmöglichkeiten. Die Darstellung erfolgt ohne zugeordnete Bilder und ohne Tooltips:

Selection Clear

Selection 1 Entry="9783936337303"

Selection 2 Entry="9783936337501"

Selection 3 Entry="9783936337563"

Selection 4 Entry="9783936337624"

Selection 5 Entry="9783936337778"

Selection 6 Entry="9783936337815"

Der Aufruf für die Anzeige des Dialogs für Typ 2:

I1 = Select DlgType=2 Result=I2

Die Darstellung des Dialogs stellt sich bei der oben dargestellten Minimalkonfiguration so dar:

Der Aufruf für die Anzeige des Dialogs für Typ 3:

I1 = Select DlgType=3 Result=I2

In der Listenansicht stellt sich der Dialog bei Minimalkonfiguration so dar:

Siehe auch: Selection


SetAcce

SetAcce AccelLin AccelRot JerkLin JerkRot

Setzt neue Beschleunigungs- und Ruckwerte für alle Achsen

Mit diesem Befehl werden die Werte für Beschleunigung und maximalen Ruck aller Achsen der Steuerung geändert. Die neuen Werte der Parameter werden zunächst in die 4 abgegebenen R-Variablen übertragen und mit dem Aufruf der Funktion aus den Variablen an die Steuerung übertragen.

SetAcce rvar1 rvar2 rvar3 rvar4

rvar1 ... rvar4 sind R-Variablen, die als Parameter dieses Befehls verwendet werden. Die R-Variablen können sowohl mit ihrem Klartextnamen als auch als Aliasname (mit #define festgelegte Bezeichnung) angegeben werden.

AccelLin | Der erste angegebene Parameter enthält die Beschleunigung für Linearachsen. Der neue Wert für die Beschleunigung von Linearachsen kann über eine R-Variable oder direkt als numerischer Wert angegeben werden. Die Angabe der Beschleunigung erfolgt in µm/s² (Mikrometer/Sekunde²).
AccelRot | Der zweite angegebene Parameter enthält den neuen Sollwert für die Beschleunigung von Drehachsen. Der neue Wert für die Beschleunigung von Drehachsen kann über eine R-Variable oder direkt als numerischer Wert angegeben werden. Die Angabe dieses diesen Wert erfolgt in ''/s² (Bogensekunden/Sekunde²).
JerkLin | Der dritte Parameter enthält den neuen Wert des maximalen Rucks für Linearachsen. Der Ruck ist die Änderung der Beschleunigung pro Zeiteinheit, wenn die Bewegung mit nichtlinearen Rampenprofilen begonnen oder beendet wird. Der neue Wert für den maximalen Ruck von Linearachsen kann über eine R-Variable oder direkt als numerischer Wert angegeben werden. Die Angabe des Wertes erfolgt in µm/s³ (Mikrometer/Sekunde³).
JerkRot | In diesem Parameter steht der neue Wert des maximalen Rucks für Drehachsen. Der neue Wert für den maximalen Ruck von Drehachsen kann über eine R-Variable oder direkt als numerischer Wert angegeben werden. Die Angabe des Wertes erfolgt in ''/s³ (Bogensekunden/Sekunde³).

Modalität

Falls ein oder mehrere Parameter nicht bei Aufruf des Kommandos angegeben werden, so werden die vorhandenen Parameter in der oben beschriebenen Reihenfolge angewendet. Falls nur ein Parameter angegeben wird, so wird dieser als Beschleunigungswert für Linearachsen angesehen. Werden 2 Parameter angegeben, so wird der erste Parameter als Beschleunigung für Linearachsen, der zweite Parameter als Beschleunigung für Drehachsen interpretiert.

Beispiel:

;Angabe der Variablen in Klartextschreibweise

MReset ;Reset Motion Control

R11=200*1000 ;Linearbeschleunigung 200 mm/Sek2

R12=72*3600 ;Rotative Beschleunigung 72 grad/Sek2

R13=50*1000000 ;Ruck bei Linearachsen 50000 mm/Sek³

R14=90*3600000 ;Ruck bei Linearachsen 90000 grad/Sek³

SetAcce R11 R12 R13 R14

;Angabe der Variablen mit Aliasnamen

#define R_AcceLin R11

#define R_AcceRot R12

#define R_JerkLin R13

#define R_JerkRot R14

MReset ;Reset Motion Control

R_AcceLin=200*1000 ;Linearbeschleunigung 200 mm/Sek2

R_AcceRot=72*3600 ;Rotative Beschleunigung 72 grad/Sek2

R_JerkLin=50*1000000 ;Ruck bei Linearachsen 50000 mm/Sek³

R_JerkRot=90*3600000 ;Ruck bei Linearachsen 90000 grad/Sek³

SetAcce R_AcceLin R_AcceRot R_JerkLin R_JerkRot

;Nur die Beschleunigung für Linearachsen ändern

R11=250*1000 ;Linearbeschleunigung 250 mm/Sek2

SetAcce R11 ;Nur einen Wert angeben -> Beschleunigung Linearachsen

Siehe auch: GetAcce, Acce, Acce.Axn


SetAnalog

SetAnalog Ak=w

Einstellen des Wertes eines Analogausgangs

Setzen eines Wertes w für den Analogausgang k. Die Kanalnummer k gibt an, welcher Analogausgang gesetzt werden soll. Der Wert w wird in Millivolt angegeben und liegt üblicherweise im Bereich von 0....10000mV. Falls ein Analogausgang mit einer von der Standardausführung abweichenden Konfiguration verwendet wird, sind auch die Bereiche von 0....5000 mV, -5000mV...+5000mV oder -10000mV...+10000mV möglich. Der Wertebereich für die Kanalnummer k läuft von 1...Anzahl_der_Analogausgänge.

Hinweis: Der angesprochene Analogkanal muß in der erweiterten IO-Verwaltung deklariert sein.

Beispiel 1:

;Setzt den Ausgabewert 5000 mV fuer den Analogausgang 1

SetAnalog A1=5000

Beispiel 2:

;Indexierter Zugriff

;R1 enthaelt die Kanalnummer des Analogausgangs

;R11 enthaelt den Ausgabewert in V

;R12 enthalet das Ergebnis der Berechnung des Ausgabewertes in mV

;Setzt den Ausgabewert 2300 mV fuer den Analogausgang 1

R1=2

R11=2.3

R12=(R11*10000)/10

SetAnalog AR1=R12

;Indexierter Zugriff auf mehrere Kanaele

;R1 enthaelt die Kanalnummer des Analogausgangs

;R10 enthaelt einen Basis-Ausgabewert in Millivolt

;R11, R12, R13 und R14 enthalten verschiedene Teilerwerte

R10=10000 ;Basiswert

R11=2.0 ;Teilerwert 1 fuer Verrechnung mit Basiswert

R12=3.0 ;Teilerwert 2

R13=5.0 ;Teilerwert 3

R14=10.0 ;Teilerwert 4

For R1=1,4,1 ;Fuer Kanal 1...4

R2=R1+10 ;Index der Teilerwertvariable

R3=R10/RR2 ;Ausgabewert errechnen

SetAnalog AR1=R3 ;Analogausgang setzen

EndFor

Siehe auch: GetAnalog, SetBit, ResBit, GetBit, Ep.b, SetPort, GetPort


SetApplicationParameter

SetApplicationParameter parameter [RVar] | [IVar] | [StrVar] | [QVar] | value

Setzen von anwendungsinternen Parametern

Show/Hide Hidden Text

Diese Funktion ermöglicht den Zugriff auf interne Parameter der Anwendungen ProNC bzw. Remote. Diese Parameter werden sonst im Rahmen interner Abläufe verwendet, der Zugriff aus einem CNC-Programm heraus ist normalerweise nicht möglich und auch nicht erforderlich.

Eine Ausnahme ergibt sich, falls Scripte zur Erweiterung bzw. Ergänzung dieser internen Abläufe benutzt werden sollen. Dies ist bei den User-Scripten, bei den Werkzeugwechselfunktionen oder der Vermessung mit Hilfe eines 3D-Messtasters der Fall. Gewisse anwendungsinterne Zustände, Parameter oder Einstellungen müssen dann in einem PAL- oder NCP-Programm bekannt sein oder relevante Ergebnisse nach der Ausführung eines Scripts an die Anwendung übergeben werden, um einen korrekten Programmablauf in Script und Anwendung zu gewährleisten.

Der Befehl SetApplicationParameter dient zum Setzen von internen Parametern der Anwendung. Die Anzahl der Parameter ist geringer als beim Abholen von Werten der anwendungsinternen Parameter.

Syntax:

SetApplicationParameter parameter [RVar]|[IVar]|[StrVar][QVar]

Verwendete Parameter

parameter

Eine Zeichenkette, welche den anwendungsinternen Parameter definiert, in den der Wert aus der angegebenen Variable übertragen werden soll. Die Zeichenkette setzt sich aus mehreren mit einem Punkt verbundenen Teilzeichenketten zusammen, was die interne Klassifizierung der Parameter widerspiegelt.

Festlegung des Informationsflusses:

IN | Der Parameter wird vor dem Aufruf eines Standard-Scripts mit dem aktuellen anwendungsinternen Wert initialisiert. Im Script kann dieser Parameter mit Hilfe der Funktion GetApplicationParameter abgerufen werden und im weiteren Ablauf des Scripts verwendet werden.
OUT | Die Anwendung erwartet nach Beenden eines Standard-Scripts ein Ergebnis in diesem Parameter, liest den Wert und verwendet ihn in den nachfolgenden anwendungsinternen Aktionen. Dazu muß der Parameter mit Hilfe der Funktion SetApplicationParameter vor dem Ende des Scripts auf den im Script ermittelten Wert gesetzt werden.

Liste der Parameter, die mit der Anweisung SetApplicationParameter geschrieben werden können:

Übersicht der Parameter, welche auf interne Variablen des Werkzeugwechselsystems verweisen und zur Steuerung eigener Wechselzyklen angewendet werden können Anwendungsparameter von Werkzeugwechselabläufen

Application.Toolchange.Cycle.Success

Variablentyp: IVar oder RVar

OUT: Flag zur Signalisierung daß der eigene scriptgesteuerte Werkzeugwechsel erfolgreich ausgeführt wurde. Dieses Flag wird von der Anwendung für die Festlegung des neuen Werkzeugstatus nach dem Werkzeugwechselscript ausgewertet.

Application.Toolchange.Cycle.ToolNrOfNewTool

Variablentyp: IVar oder RVar

OUT: Angabe der Werkzeugnummer des Werkzeuges, welches sich nach der Ausführung des Werkzeugwechsels aktuell in der Spannzange der Frässpindel befindet. Dieser Parameter spiegelt den aktuellen Istzustand des Werkzeugwechselsystems nach erfolgtem Wechsel wieder und wird nach erfolgreicher Ausführung des Werkzeugwechsel-Scripts in die Werkzeugverwaltung der Anwendung übertragen.

Application.Toolchange.Cycle.ModuleOfNewTool

Variablentyp: IVar oder RVar

OUT: Angabe des Werkzeughalters, aus dem das Werkzeug stammt, welches sich nach der Ausführung des Werkzeugwechsels aktuell in der Spannzange der Frässpindel befindet. Dieser Parameter spiegelt den aktuellen Istzustand des Werkzeugwechselsystems nach erfolgtem Wechsel wieder und wird nach erfolgreicher Ausführung des Werkzeugwechsel-Scripts in die Werkzeugverwaltung der Anwendung übertragen.

Application.Toolchange.Cycle.ToolPlaceOfNewTool

Variablentyp: IVar oder RVar

OUT: Angabe des Werkzeugplatzes im Werkzeughalter, aus dem das Werkzeug stammt, welches sich nach der Ausführung des Werkzeugwechsels aktuell in der Spannzange der Frässpindel befindet. Dieser Parameter spiegelt den aktuellen Istzustand des Werkzeugwechselsystems nach erfolgtem Wechsel wieder und wird nach erfolgreicher Ausführung des Werkzeugwechsel-Scripts in die Werkzeugverwaltung der Anwendung übertragen.

Übersicht der Parameter, welche auf interne Variablen des Werkzeugwechselsystems verweisen und zur Steuerung eigener Abläufe für die Vermessung von Werkzeugen verwendet werden können Anwendungsparameter zur Verwendung bei Scripten für die Vermessung von Werkzeugen

Application.Toolmeasure.Cycle.Success

Variablentyp: IVar oder RVar

OUT: Flag zur Signalisierung daß der eigene Ablauf für die scriptgesteuerte Werkzeugvermessung erfolgreich ausgeführt wurde. Dieses Flag wird von der Anwendung ausgewertet und legt fest, ob das Ergebnis der Vermessung in die Werkzeugeigenschaften der Anwendung übernommen wird oder nicht.

Application.Toolmeasure.Cycle.ReferencePositionZ

Variablentyp: RVar

OUT: Die durch den eigenen Vermessungsablauf ermittelte Referenzposition Z des Werkzeugs. Diese Referenzposition wird nach erfolgreicher Ausführung des Scripts für die Werkzeugvermessung von der Anwendung übernommen und in die Werkzeugverwaltung übertragen.

Übersicht der Parameter, welche auf interne Variablen des Werkzeugwechselsystems verweisen und zur Steuerung eigener Abläufe für die Vermessung von Werkzeugen verwendet werden können Anwendungsparameter zur Verwendung bei Scripten für Vermessungen mit einem Messtaster

Application.Touchprobe.Parameter.Enabled

Variablentyp: IVar oder RVar

IN/OUT: Der aktuelle Zustand der Betriebsbereitschaft des Messtasters. Wenn dieser Parameter "1" (!=0) ist, dann ist der Messtaster bereit für die Durchführung einer Messfahrt. Der Zustand "Enabled" wird in der Anwendung in verschiedenen Dialogen und Bedienfeldern angezeigt bzw. verwendet.

Application.Touchprobe.Parameter.DeviceType

Variablentyp: IVar oder RVar

IN/OUT: Der grundlegende Typ des Messgerätes. Die Z-Koordinate einer Vermessung wird in Abhängigkeit des bei der Vermessung verwendeten Gerätes unterschiedlich verrechnet.

Gerätetyp 0: 3D-Messtaster (Standard)

Gerätetyp 1: Messdose

Wenn eine Vermessung der Z-Koordinate mit einer Messdose durchgeführt wird, dann muß innerhalb des Scripts der Vermessung der Gerätetyp auf 1 gesetzt werden.

Application.Touchprobe.Parameter.CalibrationType

Variablentyp: IVar oder RVar

IN/OUT: Die prinzipielle Art der ausgeführten Kalibrierung.

Momentan noch nicht verwendet!

Application.Touchprobe.Parameter.MeasureType

Variablentyp: IVar oder RVar

IN/OUT: Die prinzipielle Art der ausgeführten Vermessung

Momentan noch nicht verwendet!

Application.Touchprobe.Parameter.WorkingDirections

IN/OUT: Die möglichen Arbeitsrichtungen des Messtasters. Die einzelnen möglichen Richtungen werden als Bits in einem Integer-Wert dargestellt, die Bedeutung ist im einzelnen:

#define TPRB_WORKDIR_UNKNOWN | 0x3FFFFFFF |
#define TPRB_WORKDIR_XPLUS | 0x00000001 | ;Messung nur in Richtung X-Plus
#define TPRB_WORKDIR_XMINUS | 0x00000002 | ;Messung nur in Richtung X-Minus
#define TPRB_WORKDIR_X | 0x00000003 | ;Messung in Richtung X-Plus oder X-Minus
#define TPRB_WORKDIR_YPLUS | 0x00000010 | ;Messung nur in Richtung Y-Plus
#define TPRB_WORKDIR_YMINUS | 0x00000020 | ;Messung nur in Richtung Y-Minus
#define TPRB_WORKDIR_Y | 0x00000030 | ;Messung in Richtung Y-Plus oder Y-Minus
#define TPRB_WORKDIR_ZPLUS | 0x00000100 | ;Messung nur in Richtung Z-Plus
#define TPRB_WORKDIR_ZMINUS | 0x00000200 | ;Messung nur in Richtung Z-Minus
#define TPRB_WORKDIR_Z | 0x00000300 | ;Messung in Richtung Z-Plus oder Z-Minus

In einem allgemeinen Script für die Messung mit einem Messtaster muß diese Arbeitsrichtung entsprechend berücksichtigt werden.

Application.Touchprobe.Parameter.RelTravelLength

Variablentyp: RVar

IN/OUT: Dieser Parameter gibt die konfigurierte Länge der Suchfahrt an. Die Suchfahrt ist die Bewegung in Richtung auf das anzutastende Objekt zu.

Application.Touchprobe.Parameter.RelRetractionLength

Variablentyp: RVar

IN/OUT: Dieser Parameter gibt die konfigurierte Länge der Rückzugsbewegung an. Die Rückzugsbewegung ist die Bewegung vom anzutastenden Objekt weg, nachdem am Signalausgang des Messtasters während der Suchfahrt ein Pegelwechsel stattfand.

Application.Touchprobe.Parameter.BallDiameter

Variablentyp: RVar

IN/OUT: Der konfigurierte Durchmesser der Kugel an der Spitze des Taststiftes. Dieser Durchmesser wird für die Berechnung der Position einer Fläche oder Kante bezogen auf die Rotationsachse des Taststiftes verwendet. Die Konfiguration des Kugeldurchmessers erfolgt im Einstelldialog des Messtasters.

Application.Touchprobe.Parameter.Offset.X

Application.Touchprobe.Parameter.Offset.Y

Variablentyp: RVar

IN/OUT: Falls der Messtaster nicht in der Spannzange der Frässpindel eingespannt, sondern parallel zur Frässpindel montiert ist: Die Offset-Distanzen X und Y zwischen der Mittelachse des Werkzeugs und der Mittelachse des Taststiftes des Messtasters. Diese Werte werden benötigt, um aus dem Ergebnis der Messung die korrekten Daten der Werkstücknullpunktkoordinaten X und Y zu errechnen.

Application.Touchprobe.Parameter.Offset.Z

Variablentyp: RVar

Nicht verwendet!

Application.Touchprobe.Parameter.OffsetBallRadiusTriggerPos.X

Variablentyp: RVar

IN/OUT: Der Leerweg, der gefahren wird, bevor nach der Berührung eines Objektes durch die Kugel des Messtasters der tatsächliche Schaltvorgang des Tasters erfolgt. Dieser Leerweg ist der Offset zwischen Berührpunkt Tasterkugel-Objekt und dem Schaltpunkt des Tasters und muß unter Berücksichtigung der Anfahrrichtung mit einer ermittelten Position verrechnet werden.

Application.Touchprobe.Parameter.OffsetBallRadiusTriggerPos.Y

Variablentyp: RVar

Momentan nicht verwendet!

Application.Touchprobe.Parameter.ReferencePositionZ

Variablentyp: RVar

IN/OUT: Die berechnete theoretische Referenzposition Z des Schaltpunktes des Messtasters auf dem Schaltpunkt des Werkzeuglängenmesstasters, die durch die Kalibrierung des Messtasters ermittelt wurde.

Application.Touchprobe.Parameter.MeasureBasePos

Application.Touchprobe.Parameter.MeasureBasePos.X

Application.Touchprobe.Parameter.MeasureBasePos.Y

Application.Touchprobe.Parameter.MeasureBasePos.Z

Variablentyp: QVar (bei Anweisung ohne Einzelkoordinate) oder RVar (bei Anweisung mit Einzelkoordinate .X, .Y, .Z)

IN/OUT: Die konfigurierten Koordinaten der Grundposition, die vor der eigentlichen Vermessung eingenommen wird. Die Konfiguration dieser Position erfolgt im Einstelldialog des Messtasters.

Application.Touchprobe.Parameter.MeasureBasePos.MoveOrder

Variablentyp: StrVar

IN/OUT: Die konfigurierte Anfahrreihenfolge für das Anfahren der Grundposition. Die Konfiguration der Anfahrreihenfolge erfolgt im Einstelldialog des Messtasters.

Application.Touchprobe.Parameter.MeasureStartPos

Application.Touchprobe.Parameter.MeasureStartPos.X

Application.Touchprobe.Parameter.MeasureStartPos.Y

Application.Touchprobe.Parameter.MeasureStartPos.Z

Variablentyp: QVar (bei Anweisung ohne Einzelkoordinate) oder RVar (bei Anweisung mit Einzelkoordinate .X, .Y, .Z)

IN/OUT: Die konfigurierten Koordinaten der Startposition vor den Messfahrten. Ab dieser Position können noch Korrekturen der Position durch den Anwender vorgenommen werden, falls dies erforderlich sein sollte. In automatisierten Abläufen starten die Messfahrten ab dieser Position. Die Konfiguration dieser Position erfolgt im Einstelldialog des Messtasters.

Application.Touchprobe.Parameter.MeasureStartPos.MoveOrder

Variablentyp: StrVar

IN/OUT: Die konfigurierte Anfahrreihenfolge für das Anfahren der Startposition der Messung. Die Konfiguration der Anfahrreihenfolge erfolgt im Einstelldialog des Messtasters.

Application.Touchprobe.Parameter.MeasureEndPos

Application.Touchprobe.Parameter.MeasureEndPos.X

Application.Touchprobe.Parameter.MeasureEndPos.Y

Application.Touchprobe.Parameter.MeasureEndPos.Z

Variablentyp: QVar (bei Anweisung ohne Einzelkoordinate) oder RVar (bei Anweisung mit Einzelkoordinate .X, .Y, .Z)

IN: Die konfigurierten Koordinaten der Endposition nach den Messfahrten. Bei Abläufen mit manueller Handhabung wird an dieser Position der Messtaster aus der Spannzange der Spindel entnommen. In automatisierten Abläufen erfolgt hier das Einziehen des Messtasters in das Schutzgehäuse. Die Konfiguration dieser Position erfolgt im Einstelldialog des Messtasters.

Application.Touchprobe.Parameter.MeasureEndPos.MoveOrder

Variablentyp: StrVar

IN/OUT: Die konfigurierte Anfahrreihenfolge für das Anfahren der Endposition nach der Messung. Die Konfiguration der Anfahrreihenfolge erfolgt im Einstelldialog des Messtasters.

Application.Touchprobe.Parameter.MeasureTestPos

Application.Touchprobe.Parameter.MeasureTestPos.X

Application.Touchprobe.Parameter.MeasureTestPos.Y

Application.Touchprobe.Parameter.MeasureTestPos.Z

Variablentyp: QVar (bei Anweisung ohne Einzelkoordinate) oder RVar (bei Anweisung mit Einzelkoordinate .X, .Y, .Z)

IN/OUT: Die konfigurierten Koordinaten der Testposition. An der Testposition erfolgt der Funktionstest des Messtasters. Je nach Ausführung des Messtasters kann dieser Funktionstest unterschiedlich ausfallen.

- Anfahren einer Position und Aufforderung an den Anwender, den Messtaster einmal zu betätigen

- Anfahren einer Referenzfläche, so daß der Messtaster betätigt ist

- bei drahtlosen Systemen: Überprüfung der Statussignale des Messtasters

Die Konfiguration dieser Position erfolgt im Einstelldialog des Messtasters.

Application.Touchprobe.Parameter.MeasureTestPos.MoveOrder

Variablentyp: StrVar

IN: Die konfigurierte Anfahrreihenfolge für das Anfahren der Testposition. Die Konfiguration der Anfahrreihenfolge erfolgt im Einstelldialog des Messtasters.

Application.Touchprobe.MeasureCycle.Success

Variablentyp: IVar oder RVar

OUT: Flag zur Signalisierung daß der eigene Ablauf für die scriptgesteuerte Messung mit dem Messtaster erfolgreich ausgeführt wurde. Bevor die Anwendung das Script zur Ausführung des Messzyklus startet, wird dieser Parameter auf den Wert 0 gesetzt. Der Wert 0 bedeutet, daß der Ablauf nicht erfolgreich war, der Wert 1 bedeutet daß der Messzyklus erfolgreich ausgeführt werden konnte. Wenn nach Beenden des Scripts dieser Parameter auf den Wert 0 gesetzt ist, dann wird das Ergebnis der Vermessung nicht in die Anwendung übernommen.

Application.Touchprobe.MeasureCycle.Result.X

Application.Touchprobe.MeasureCycle.Result.Y

Application.Touchprobe.MeasureCycle.Result.Z

Variablentyp: RVar

IN/OUT: Die Ergebnisse der scriptgesteuerten Vermessung in Form von Koordinaten. Die einzelnen Ergebnisse stellen die bei der Messung mit dem Messtaster ermittelten Positionen dar. Bevor die Anwendung das Script zur Ausführung des Messzyklus startet, werden diese Parameter auf den Wert 0x3FFFFFFF ("Kein Resultat" bzw. "Wert nicht verwenden") gesetzt. Falls eine oder mehrere dieser Koordinaten bei der Vermessung nicht ermittelt wurden oder für die gewünschte Vermessung nicht relevant waren, sollten sie auf den speziellen Wert 0x3FFFFFFF (hexadezimal) gesetzt werden, dies entspricht dem dezimalen Wert 1073741823. Diese Konstante wird anwendungsintern verwendet, um Zustände wie "Nicht verwendet", "Ungültig" oder "Nicht beachten" zu signalisieren.

Application.Touchprobe.CalibrationCycle.Success

Variablentyp: IVar oder RVar

IN/OUT: Flag zur Signalisierung daß der eigene Ablauf für die scriptgesteuerte Kalibrierung der Messtasterparameter erfolgreich ausgeführt wurde. Bevor die Anwendung das Script zur Ausführung des Messzyklus startet, wird dieser Parameter auf den Wert 0 gesetzt. Der Wert 0 bedeutet, daß der Ablauf nicht erfolgreich war, der Wert 1 bedeutet daß der Kalibrierzyklus erfolgreich ausgeführt werden konnte. Wenn nach Beenden des Scripts dieser Parameter auf den Wert 0 gesetzt ist, dann wird das Ergebnis der Messung nicht in die Anwendung übernommen.

Application.Touchprobe.CalibrationCycle.Result.Offset.X

Application.Touchprobe.CalibrationCycle.Result.Offset.Y

Variablentyp: RVar

IN/OUT: Die im Script für die Kalibrierung des Messtasters ermittelten Offset-Distanzen X und Y zwischen der Mittelachse des Werkzeugs und der Mittelachse des Messtaster-Stifts. Dieser Wert ist nur von Bedeutung, wenn der Messtaster parallel zur Z-Achse fest montiert ist. Wenn der Messtaster mit einer Werkzeugaufnahme in die Spannzange der Spindel eingespannt wird, sind diese Offsetwerte 0.

Application.Touchprobe.CalibrationCycle.Result.ReferencePositionZ

Variablentyp: RVar

IN/OUT: Die bei der scriptgesteuerten Kalibrierung der Messtasterparameter ermittelte theoretische Referenzposition Z des Schaltpunktes des Messtasters auf dem Schaltpunkt des Werkzeuglängenmesstasters.

Übersicht der Parameter, welche auf interne Variablen des Werkzeugwechselsystems verweisen und zur Steuerung eigener Abläufe für die Vermessung von Werkzeugen verwendet werden können Anwendungsparameter zur Verwendung bei Scripten für Vermessungen mit einer Messdose

Application.Caliper.Parameter.RelTravelLength

Variablentyp: RVar

IN/OUT: Dieser Parameter gibt die konfigurierte Länge der Suchfahrt in Richtung Z an. Die Suchfahrt ist die Bewegung "abwärts" in Richtung auf die Messdose zu.

Application.Caliper.Parameter.RelRetractionLength

Variablentyp: RVar

IN/OUT: Dieser Parameter gibt die konfigurierte Länge der Rückzugsbewegung an. Die Rückzugsbewegung ist die Bewegung "aufwärts" in Richtung Z von der Messdose weg, nachdem am Signalausgang der Messdose während der Suchfahrt ein Pegelwechsel stattfand.

Application.Caliper.Parameter.Offset.Z

Variablentyp: RVar

IN/OUT: Die Differenz zwischen der unteren Auflagefläche der Messdose, die auf dem Maschinentisch oder dem Werkstück aufliegt, und dem Schaltpunkt des Mikroschalters in der Messdose!

Übersicht der Parameter, welche auf interne Variablen des Werkzeugwechselsystems verweisen und zur Steuerung eigener Abläufe für die Vermessung von Werkzeugen verwendet werden können Weitere Anwendungsparameter

Application.Stacklight.Yellow

Application.Stacklight.Blue

Application.Stacklight.White

Variablentyp: IVar oder RVar

IN: Diese Parameter werden verwendet, um den aktuellen Zustands eines Elementes der Signalsäule der Maschine festzulegen. Der programmatische Zugriff ist auf das gelbe (.Yellow), das blaue (.Blue) und das weiße (.White) Element der Signalsäule möglich. Das rote und das grüne Element der Signalsäule werden ausschließlich intern aus der Anwendung heraus gesteuert.

Den einzelnen Bits des Parameters für den Schaltzustand der Signalleuchte sind hierbei folgende Bedeutungen zugeordnet:

Bit | Bedeutung
xxx1 | Bit 1 (LSB) des Parameters: Signalleuchte einschalten (Bit=1) oder ausschalten (Bit=0)
xx1x | Bit 2 des Parameters: Blinken, wenn eingeschaltet (Leuchte ist mit gleicher Dauer aus- und eingeschaltet)
x1xx | Bit 3 des Parameters: Flashen (blitzen), wenn eingeschaltet (Leuchte ist längere Zeit aus- und kurzzeitig eingeschaltet)
1xxx | Bit 4 des Parameters: Den automatisch ermittelten Signalzustand überschreiben

Diese Bit-Kombinationen bzw. numerische Werte des Parameters sind möglich:

Parameter | Bitweise | Wirkung
0 | 0000 | Signalleuchte ausschalten, der zuvor automatisch ermittelte Signalzustand wird weiterhin über eine ODER-Funktion berücksichtigt.
1 | 0001 | Signalleuchte einschalten, der zuvor automatisch ermittelte Signalzustand wird weiterhin über eine ODER-Funktion berücksichtigt. Die Leuchte leuchtet stetig, wenn nicht Bit 2 oder 3 gesetzt.
3 | 0011 | Signalleuchte blinkend einschalten, der zuvor automatisch ermittelte Signalzustand wird weiterhin über eine ODER-Funktion berücksichtigt. D.h. wenn ein automatisch erzeugter Signalzustand aktiv ist, leuchtet die Signalleuchte stetig, auch wenn "Blinkend" über das zweite Bit (xx1x) gesetzt ist.
5 | 0101 | Signalleuchte blitzend einschalten, der zuvor automatisch ermittelte Signalzustand wird weiterhin über eine ODER-Funktion berücksichtigt. D.h. wenn ein automatisch erzeugter Signalzustand aktiv ist, leuchtet die Signalleuchte stetig, auch wenn "Blitzend" über das dritte Bit (x1xx) gesetzt ist.
8 | 1000 | Signalleuchte ausschalten, der zuvor automatisch ermittelte Signalzustand wird überschrieben.
9 | 1001 | Signalleuchte einschalten, der zuvor automatisch ermittelte Signalzustand wird überschrieben.
11 | 1011 | Signalleuchte blinkend einschalten, der zuvor automatisch ermittelte Signalzustand wird überschrieben.
13 | 1101 | Signalleuchte blitzend einschalten, der zuvor automatisch ermittelte Signalzustand wird überschrieben.

RVar | Angabe einer R-Variablen, welche den Wert des einzustellenden Parameters enthält
IVar | Angabe einer I-Variablen, welche den Wert des einzustellenden Parameters enthält
StrVar | Angabe einer Str-Variablen, welche den Wert des einzustellenden Parameters enthält
QVar | Angabe einer Q-Variablen, welche den Wert des einzustellenden Parameters enthält
value | Angabe des neuen numerischen Wertes für den einzustellenden Parameter (ganze Zahl, Gleitkommazahl oder eine in Anführungszeichen " eingefasste Zeichenkette)

Beispiel:

;In einem Script fuer die Durchführung eines Messzyklus zur Ermittlung

;eines Werkstuecknullpunktes wird festgelegt, dass zur Ermittlung der

;Z-Koordinate des Werkstuecknullpunktes eine Messdose verwendet wird.

;Dieser Sachverhalt muß der Anwendung mitgeteilt werden, damit der

;Werkzeuglaengenbezug in der Anwendung richtig zugewiesen werden kann.

;....

;Ermittlung der Z-Koordinate

;Setzen des Typs des verwendeten Geraetes, was fuer die Ermittlung der

;Z-Koordinate verwendet wurde

;Der numerische Wert, welcher die Verwendung einer Messdose signalisiert

;ist 1.

SetApplicationParameter "Application.TouchProbe.Parameter.DeviceType" 1

SetApplicationParameter "Application.Touchprobe.MeasureCycle.Success" 1

SetApplicationParameter "Application.Touchprobe.MeasureCycle.Result.Z" R121

;....

ProgEnd

;Der Standard-Wert fuer den DeviceType ist 0, dieser Wert wird durch die

;Anwendung vor jedem Aufruf des Scripts fuer die Ermittlung des

;Werkstuecknullpunktes gesetzt.

;Wird fuer die Ermittlung der Z-Koordinate ein kalibrierter 3D-Messtaster

;verwendet, kann zur Sicherheit der entsprechende Wert zurueckgegeben

;werden. Dies ist aber nicht zwingend erforderlich.

;Der numerische Wert, welcher die Verwendung eines 3D-Messtasters kennzeichnet

;ist 0.

SetApplicationParameter "Application.TouchProbe.Parameter.DeviceType" 0

;....

ProgEnd

Siehe auch: GetApplicationParameter


SetBit

SetBit Ap.b

Setzen des Wertes eines Ausgangs auf den Wert "1"

Setzen des Bits b des Ausgabeports p auf den Wert "1". Zum Löschen des Bits (Setzen auf den Ausgabewert "0") wird der Befehl ResBit verwendet.

Gültige Werte für die Kanalnummer p reichen von 1...Anzahl_der_Ausgangsports, die Werte für die Bitnummer b laufen von 1...8.

Verwendung von Variablen für indexierte Ausgänge

Es ist außerdem möglich, anstelle fester Angaben für Port- und Bitnummer Variablen für die Angabe des Ports zu benutzen. Die gewünschten Werte für Port- und Bitnummer werden in Integer-Variablen abgelegt und können bei der Indizierung des Eingangs verwendet werden.

Hinweis: Bei Verwendung von Variablen für die Angabe von Port- und Bitnummer ist zu beachten, daß die Angabe des Eingangs nur in der Form "OutIx.Iy" zulässig ist, die Form "Ap.b" kann hier nicht verwendet werden.

Das Setzen des Ausgangs mit variabler Angabe von Port- und Bitnummer erfolgt in diesen beiden Schreibweisen:

SetBit OutIx.Iy

oder

OutIx.Iy=0/1

Beispiel:

SetBit A1.4 ;Setzt Bit 4 des Ausgangs 1 auf den Wert "1"

ResBit A1.4 ;Setzt Bit 4 des Ausgangs 1 auf den Wert "0"

I1=1

I2=7

I3=1

SetBit OutI1.I2=I3 ;Setzt Bit 7 von Port 1 auf den Wert 1

Siehe auch: ResBit, GetBit, Ep.b, SetPort, GetPort, SetAnalog, GetAnalog, SetPWM


SetGear

In | Rn=SetGear axis [Rx] | [Ix] | [numerator] [Ry] | [Iy] | [denominator]

Setzen des Umrechnungsfaktors für eine Achse

Der Übersetzungsfaktor einer Achse wird aus einem gemeinen Bruch errechnet, d.h. es gibt einen ganzzahligen Anteil im Zähler des Bruchs und einen ganzzahligen Anteil im Nenner des Bruchs, welche den Übersetzungsfaktor der Achse darstellen.

Der Befehl SetGear wird verwendet, um das Übersetzungsverhältnis einer Achse zur Laufzeit neu einzustellen.

Parameter des Befehls:

Rn | Eine R-Variable (Real-Variable) mit dem Index n, welche den Rückgabewert der Funktion erhält.
In | Eine R-Variable (Integer-Variable) mit dem Index n, welche den Rückgabewert der Funktion erhält. Wenn der Rückgabewert ein Dezimalbruch mit Nachkommastellen ist, wird nur der gerundete ganzzahlige Wert in die I-Variable übertragen. Auch wenn die Zuweisung des Rückgabewertes an eine I-Variable möglich ist, sollte die Verwendung einer R-Variablen werden.
axis | Angabe der Achse, für die das Übersetzungsverhältnis eingestellt werden soll. Gültige Parameter sind X, Y, Z, A, B, C, U, V, W.
Rx, Ix | Eine R-Variable (Real-Variable) oder eine I-Variable (Integer-Variable) mit dem Index x, welche den Wert des Zählers des Bruchs enthält, der das neue Übersetzungsverhältnis definiert.
Ry, Iy | Eine R-Variable (Real-Variable) oder eine I-Variable (Integer-Variable) mit dem Index y, welche den Wert des Nenners des Bruchs enthält, der das neue Übersetzungsverhältnis definiert.
numerator | Eine Zahl, die den Zähler des Bruchs darstellt, der das neue Übersetzungsverhältnis definiert.
denominator | Eine Zahl, die den Nenner des Bruchs darstellt, der das neue Übersetzungsverhältnis definiert.

Rückgabewert der Funktion

Wenn während des Aufrufs des Befehls ein Fehler aufgetreten ist, ist der Rückgabewert 0. Wenn der Aufruf erfolgreich war, dann enthält Rn das Übersetzungsverhältnis als Gleitkommawert (z.B. 1.5000).

Siehe auch: GetGear


SetNegSWLS

SetNegSWLS [Qn] [XRx] [YRy] [ZRz].... [X2=Rx2] [Y2=Ry2] [Z2=Rz2]....

Neue Koordinaten für den negativen Software-Endschalter setzen

Mit Hilfe dieses Kommandos können die Koordinaten des negativen Software-Endschalters zur Laufzeit des PAL- oder NCP-Programms geändert werden.

Syntax:

SetNegSWLS Qn

SetNegSWLS XRx YRy ZRz

SetNegSWLS X2=Rx2 Y2=Ry2 ZRz2

Modalität:

Der Befehl wirkt modal, das bedeutet wenn unter Verwendung der Parameter X, Y, Z usw. nur Koordinaten für eine Einzelachse bzw. mehrere Einzelachsen übergeben werden, bleiben die Softwareendschalter-Koordinaten aller übrigen aktiven Achsen unverändert.

Parameter des Befehls

Qn | Eine Q-Variable mit dem Index n, welche die neuen Koordinaten des negativen Software-Endschalters enthält.
Rx, Ry, Rz | R-Variablen mit unterschiedlichen Indizes, welche Softwareendschalter-Koordinaten für die jeweilige Achse enthält.
Rx2, Ry2, Rz2 | Bei Verwendung einer Steuerungskonfiguration mit 2 aktiven Achssystemen: R-Variablen mit unterschiedlichen Indizes, welche die Softwareendschalter-Koordinaten für die jeweilige Achse im Achssystem 2 enthält.
numerischer Wert | Ebenfalls zulässig: Angabe einer Koordinate als numerischer Wert. Diese Koordinaten beziehen sich immer auf den Maschinennullpunkt.

Beispiel 1:

GetNegSWLS Q1 ;SW-Endschalter Koordinaten abfragen

Q1:X=Q1:X+50.0 ;SW-Endschalter-Koordinaten anpassen

SetNegSWLS Q1 ;Koordinaten fuer SW-Endschalter setzen

Beispiel 2:

;alternativ moeglich:

GetNegSWLS Q1 ;SW-Endschalter Koordinaten abfragen

R1=Q1:X-25.0 ;SW-Endschalter-Koordinaten anpassen

R2=Q1:Y-25.0

SetNegSWLS XR1 YR2 ;Koordinaten fuer SW-Endschalter setzen

Beispiel 3:

;alternativ moeglich:

GetNegSWLS Q1 ;SW-Endschalter Koordinaten abfragen

R11=Q1:Z ;Aktuellen Wert von Z sichern

SetNegSWLS Z-55.1 ;Koordinaten fuer SW-Endschalter Achse Z setzen

;.....

;Bearbeitungen

SetNegSWLS ZR11 ;Ehemalige Position SW-Endschalter Z setzen

Siehe auch: GetNegSWLS, GetPosSWLS, SetPosSWLS


SetOpMode

SetOpMode opmode Axn

Setzen der Betriebsart für eine Handlingachse

Einstellen der Betriebsart einer Handlingachse. Es kann der Positions-Modus oder der Geschwindigkeits-Modus eingestellt werden.

Verwendete Parameter

Für den Parameter opmode sind folgende Werte zulässig:

P, V

opmode = P Setzen des Positions-Modus

opmode = V Setzen des Geschwindigkeits-Modus

Ax1, Ax2, ... Ax6

Bezeichner der Handlingachse, gültige Werte sind Ax1, Ax2, Ax3, Ax4, Ax5, Ax6

Falls eine Achse in den Positions-Modus gesetzt wird, muß anschliessend eine Referenzfahrt dieser Achse durchgeführt werden. (Der Befehl zum Umschalten des Operationsmodus beinhaltet einen Software-RESET der jeweiligen Achse).

Beispiel:

;Setze die Handlingachse 1 in den Position-Modus

SetOpMode P Ax1

;Setze die Handlingachse 2 in den Geschwindigkeits-Modus

SetOpMode V Ax2

Siehe auch: Handlingachsen, AxnPA, AxnPI, FAx, AxnV, AxStop, AxStart, AxAbort, WaitMove, AxnInMotion, Pos.Axn, AxOverride, AxReset


SetParam PathVeloFactor

SetParam PathVeloFactor MCTLn [Rx] [rwert]

Setzen des aktuellen Bahngeschwindigkeitsfaktors einer Motion Control

Der Bahngeschwindigkeitsfaktor bei der isel CAN-Steuerung ist folgendermaßen definiert:

Beim Übergang von zwei Bahnsegmenten wird die reale Bearbeitungsgeschwindigkeit aus dem Produkt von aktuell eingestellter Bearbeitungsgeschwindigkeit und dem Geschwindigkeitsfaktor berechnet und eingestellt. Die Bearbeitungsgeschwindigkeit im Übergang von zwei Bahnsegmenten kann also reduziert bzw. erhöht werden.

Ist der Wert des Bahngeschwindigkeitsfaktors größer 1 so erhöht sich die Bearbeitungsgeschwindigkeit beim Segmentübergang. Ist der Wert des Bahngeschwindigkeitsfaktors kleiner 1, so wird die Bearbeitungsgeschwindigkeit entsprechend reduziert.

Der Befehl SetParam PathVeloFactor wird benutzt, um einen neuen Wert für den Bahngeschwindigkeitsfaktor der Motion Control zu setzen.

Parameter des Befehls:

MCTLn | Angabe der Motion Control mit dem Index n, für welche ein neuer Wert für den Bahngeschwindigkeitsfaktor gesetztwerden soll. Gültige Werte für den Index sind 1 und 2.
Rx | Eine R-Variable (Real-Variable) mit dem Index x, welche den neuen Wert des Bahngeschwindigkeitsfaktors (im Bereich 0.01 ... 100.0) enthält.
rwert | Ein Gleitkommawert, welcher den neuen Wert für den Bahngeschwindigkeitsfaktor (im Bereich 0.01 ... 100.0) darstellt.

Siehe auch: GetParam PathVeloFactor


SetParam VPO

SetParam VPO Axn Ix

Festlegen der Parameter für die Betriebsart VPO einer Handlingachse

Show/Hide Hidden Text

Die Betriebsart VPO (Velocity Proportional Operation) einer Handlingachse ist eine spezielle Funktion, welche bewirkt, daß sich die aktuelle Geschwindigkeit einer Handlingachse nach der interpolierten Geschwindigkeit der drei kartesischen Achsen X, Y und Z richtet. Je nach aktuellem Wert der führenden Geschwindigkeit Vxyz wird versucht, die aktuelle Geschwindigkeit der Handlingachse innerhalb eines gewissen Look-Ahead-Zeitraums an die Geschwindigkeitsänderungen der führenden Achsen im kartesischen System XYZ anzupassen.

Typische Anwendung: Nachführen einer Dispenser-Achse

Voraussetzungen

·Isel Can-CNC Version 01.60.00.90 auf allen Endstufen und Can-Treiber

·ProNC in der Version: ab 1.46.8.1

·ProNC-Compiler-Version: ab 1.46.8.2

Der Befehl "SetParam VPO" dient dazu, die Betriebsparameter für diese Betriebsart zu konfigurieren. Die Funktion übergibt die Werte LookAheadTime [µs], Geschwindigkeit [1/1000 °/s] und Beschleunigung [1/1000 °/s²] für den nächsten Start der Handlingsachse. Diese Funktion kann mehrfach hintereinander aufgerufen werden, um z.B. den LookAheadTime-Wert oder die Geschwindigkeit bahnsynchron zu ändern. Hier ist allerdings wichtig, dass jeweils neue I-Variablen verwendet werden, da diese sonst mit dem letzten Wert überschrieben werden. Die LookAheadTime muss zwischen 0 und dem Wert von MaxLookAheadTime liegen.

Beim Aufruf der Funktion werden die Werte WorkingEnable, LookAheadTime, Velocity und Acceleration an die Achse übertragen. Das bedeutet, das die gewünschten Werte vor Aufruf der Funktion in die Variablen I(x+5), I(x+6), I(x+7) und I(x+8) eingetragen werden müssen.

Parameter des Befehls:

Axn

Angabe der Handlingachse, an die der Parametersatz übergeben werden soll. n ist der Index der Handlingachse, gültige Werte sind 1, 2, 3, ... 6.

Ix

Eine I-Variable (Integer-Variable) mit dem Index x, welche die erste Variable eines zur Datenübergabe verwendeten Variablenfeldes (bestehend aus mehreren I-Variablen mit aufeinanderfolgenden Indizes) darstellt. Das Feld besteht aus insgesamt 9 Werten, welche durch die I-Variablen mit den aufeinanderfolgenden Indizes repräsentiert werden.

Parameter

Ix | VpoActive | Zeigt den aktuellen Aktivierungszustand der Betriebsart VPO an: 0: VPO-Betriebmodus nicht aktiv 1: VPO-Betriebmodus aktiv
I(x+1) | WorkMode | Wenn VpoActive == 0 -> bWorkMode = 0 Wenn VpoActive == 1 -> bWorkMode == VPO_WORK_MODE_1 oder bWorkMode == VPO_WORK_MODE_2
I(x+2) | MaxLookAheadTimeUpperLimit | Systemintern wird die maximal vorausschauende Zeit sowohl nach oben als auch nach unten begrenzt. Dieser Wert ist die obere Grenze [micro_sec] fur die maximal vorrausschauende Zeit. Dieser Wert wird bei der Initialisierung der Handlingachse durch den Steuerungskern ermittelt.
I(x+3) | MaxLookAheadTimeLowerLimit | Systemintern wird die maximal vorrausschauende Zeit sowohl nach oben als auch nach unten begrenzt. Dieser Wert ist die untere Grenze [micro_sec] fur die maximal vorrausschauende Zeit. Dieser Wert wird bei der Initialisierung der Handlingachse durch den Steuerungskern ermittelt.
I(x+4) | MaxLookAheadTime | Maximal vorausschauende Zeit [micro_sec]. Dieser Wert wird vom Anwender beim Aktivieren des VPO-Betriebmodus gesetzt und liegt im Bereich MaxLookAheadTimeLowerLimit ...MaxLookAheadTimeUpperLimit
I(x+5) | WorkingEnable | Aktivieren/Deaktivieren der Betriebsart VPO 0: Das eingebundene TxPDO ist gesperrt und wird nicht gesendet 1: Das eingebundene TxPDO ist freigelassen und wird regelmäßig gesendet
I(x+6) | LookAheadTime | Vorausschauende Zeit [µs]. Die Sollgeschwindigkeit zu dieser Zeit wird umgerechnet und auf den Bus geschickt.
I(x+7) | Velocity | Soll-Geschwindigkeit
I(x+8) | Acceleration | Soll-Beschleunigung

Beschreibung der Funktionsweise

Beim Aufruf der Funktion AxStart wird die Handlingsachse mit der zuvor übergebenen Beschleunigung auf die übergebene Geschwindigkeit beschleunigt. Mit Hilfe der Startgeschwindigkeit, der Sollgeschwindigkeit und der Beschleunigung kann man berechnen, wie groß die Zeit und die Distanz zwischen Startgeschwindigkeit und Sollgeschwindigkeit sind. Sobald die Achse die Sollgeschwindigkeit erreicht hat, folgt die Handlingsachse proportional der Bahngeschwindigkeit. Diese kann bis zur MaxLookAheadTime vorausberechnet werden. Diese Funktionalität kann speziell beim Dosieren abhängig von der Viskosität des Materials sinnvoll sein.

Beim Aufruf der Funktion AxStop wird die Handlingsachse mit der zuletzt übergebenen Beschleunigung auf die Startgeschwindigkeit der Handlingsachse abgebremst. Das heißt, wenn die Handlingsachse sich mit einer Geschwindigkeit von 5°/s dreht und anschließend der VPO-Modus aktiviert und gestartet wird und im Anschluß der VPO-Modus gestoppt wird, dann nimmt die Handlingsachse wieder die Ausgangsgeschwindigkeit von 5°/s ein.

Gleichmäßig beschleunigte Bewegung – Geschwindigkeits-Zeit-Gesetz:

Sollgeschwindigkeit = Beschleunigung * ZeitStartSoll + Startgeschwindigkeit
ZeitStartSoll = (Sollgeschwindigkeit – Startgeschwindigkeit) / Beschleunigung

Gleichmäßig beschleunigte Bewegung - Weg-Zeit-Gesetz:

WegStartSoll = Beschleunigung / 2 * ZeitStartSoll^2 + Startgeschwindigkeit * ZeitStartSoll

Die Funktionen können in folgender Reihenfolge aufgerufen werden (EBNF):

GetParam

Activate

{

[Bewegungsdaten]

SetParam

[Bewegungsdaten]

AxStart

[Bewegungsdaten]

[SetParam]

AxStop

[Bewegungsdaten]

}

Deactivate

Zeichenerklärung:

Verwendung | Zeichen
Option | [ … ]
Optionale Wiederholung | { … }

Beispiel:

; Bedeutung der I-Variablen I11 bis I19

I11 VPO Aktivierungsstand

I12 VPO WorkMode

I13 MaxLookAheadTimeUpperLimit

I14 MaxLookAheadTimeLowerLimit

I15 MaxLookAheadTime

I16 WorkingEnable

I17 LookAheadTime

I18 Velocity

I19 Acceleration

I16=0 ;Nicht aktiv

I17=1000 ;1000 ms LookAhead-Zeit

I18=10000 ;v=10000*1/1000 °/s = 10 °/s

I19=100000 ;a=100000*1/1000 °/s² = 100 °/s²

SetParam VPO Ax1 I11 ;Erste I-Variable des Feldes angeben

Siehe auch: GetParam VPO, AxStart VPO, AxStop VPO, Activate VPO, Deactivate VPO


SetPort

SetPort [Ap]|[Outp]=[w] | [In] | [Rn]

Setzen des Wertes eines Ausgangsports (8 Bit)

Setzen des Ausgabeports p auf den angegebenen Wert w. Der als Parameter angegebene Ausgabewert kann in dezimaler, hexadezimaler oder binärer Schreibweise angegeben werden. Ausserdem können die aktuellen Werte von R-Variablen oder i-Variablen in diesem Befehl ausgegeben werden.

Gültige Werte für die Portnummer p reichen von 1...Anzahl_der_Ausgangsports.

Die Nummer des Ausgangsports kann mit den Schlüsselwörtern "A" oder "Out" festgelegt werden.

Parameter des Befehls

k | Angabe der Kanalnummer des Ausgangsports, dessen Ausgabewert eingestellt werden soll. Gültige Portnummern sind 1 ... Anzahl_der_Ausgänge. Für die Angabe der Portnummer kann auch eine I-Variable oder eine R-Variable verwendet werden.
t | Angabe des Ausgabewertes, der am angegebenen Ausgang eingestellt werden soll. Gültige Werte für den Ausgabewert sind 0...255.
In | Eine I-Variable mit dem Index n, welche den neuen Ausgabewert enthält.
Rn | Eine R-Variable mit dem Index n, welche den neuen Ausgabewert enthält.

Beispiel:

SetPort A1=0xF4 ;Ausgabe eines Hexadezimalwertes

SetPort A1=10011010B ;Ausgabe eines Binärwertes

SetPort A1=128 ;Ausgabe eines Dezimalwertes

SetPort A1=R3 ;Ausgabe über eine R-Variable

SetPort Out1=0xF4 ;Verwendung des Schluesselwortes "Out"

SetPort Out1=10011010B

SetPort Out1=128

I1=2 ;Verwendung von Variablen

I2=0xC2

SetPort OutI1=I2

Siehe auch: SetBit, ResBit, GetBit, Ep.b, GetPort, SetAnalog, GetAnalog, SetPWM


SetPosSWLS

SetPosSWLS [Qn] [XRx] [YRy] [ZRz].... [X2=Rx2] [Y2=Ry2] [Z2=Rz2]....

Neue Koordinaten für den positiven Software-Endschalter setzen

Mit Hilfe dieses Kommandos können die Koordinaten des positiven Software-Endschalters zur Laufzeit des PAL- oder NCP-Programms geändert werden.

Syntax:

SetPosSWLS Qn

SetPosSWLS XRx YRy ZRz

SetPosSWLS X2=Rx2 Y2=Ry2 ZRz2

Modalität:

Der Befehl wirkt modal, das bedeutet wenn unter Verwendung der Parameter X, Y, Z usw. nur Koordinaten für eine Einzelachse bzw. mehrere Einzelachsen übergeben werden, bleiben die Softwareendschalter-Koordinaten aller übrigen aktiven Achsen unverändert.

Parameter des Befehls

Qn | Eine Q-Variable mit dem Index n, welche die neuen Koordinaten des positiven Software-Endschalters enthält.
Rx, Ry, Rz | R-Variablen mit unterschiedlichen Indizes, welche Softwareendschalter-Koordinaten für die jeweilige Achse enthält.
Rx2, Ry2, Rz2 | Bei Verwendung einer Steuerungskonfiguration mit 2 aktiven Achssystemen: R-Variablen mit unterschiedlichen Indizes, welche die Softwareendschalter-Koordinaten für die jeweilige Achse im Achssystem 2 enthält.
numerischer Wert | Ebenfalls zulässig: Angabe einer Koordinate als numerischer Wert. Diese Koordinaten beziehen sich immer auf den Maschinennullpunkt.

Beispiel 1:

GetPosSWLS Q1 ;SW-Endschalter Koordinaten abfragen

Q1:X=Q1:X+50.0 ;SW-Endschalter-Koordinaten anpassen

SetPosSWLS Q1 ;Koordinaten fuer SW-Endschalter setzen

Beispiel 2:

;alternativ moeglich:

GetPosSWLS Q1 ;SW-Endschalter Koordinaten abfragen

R1=Q1:X+25.0 ;SW-Endschalter-Koordinaten anpassen

R2=Q1:Y+25.0

SetPosSWLS XR1 YR2 ;Koordinaten fuer SW-Endschalter setzen

Beispiel 3:

;alternativ moeglich, z.B. falls bei einer Bearbeitung

;Z nicht hoeher als an eine feste Hoehe fahren darf

MoveAbs Z-25.0 ;Sicherheitsposition Z einnehmen

GetPosSWLS Q1 ;SW-Endschalter Koordinaten abfragen

R11=Q1:Z ;Aktuellen Wert von Z sichern

SetPosSWLS Z-16.5 ;Koordinaten fuer SW-Endschalter Achse Z setzen

;.....

;Bearbeitungen

SetPosSWLS ZR11 ;Ehemalige Position SW-Endschalter Z setzen

Siehe auch: GetPosSWLS, GetNegSWLS, SetNegSWLS


SetPWM

SetPWM [Ak] | [Outk] = [t] | [In] | [Rn]

Einstellen des Tastverhältnisses an einemPWM-Ausgang

Setzen des Wertes des PWM-Ausgangskanals mit der übergebenen Kanalnummer k auf das Tastverhältnis t. Die Angabe des Tastverhältnisses t erfolgt in Promille. Ausserdem können die aktuellen Werte von R-Variablen oder i-Variablen für die Angabe des Tastverhältnisses verwendet werden.

Gültige Werte für den PWM-Kanal k reichen von 1...Anzahl_der_PWM_Kanäle.

Der angesprochene PWM-Kanal muß in der erweiterten IO-Verwaltung deklariert sein.

Die Nummer des PWM-Kanals kann mit den Schlüsselwörtern "A" oder "Out" festgelegt werden.

Parameter des Befehls

k | Angabe der Kanalnummer des PWM-Ausgangs, dessen Ausgabewert eingestellt werden soll. Gültige Kanalnummern sind 1 ... Anzahl_der_PWM-Ausgänge. Für die Angabe des PWM-Kanals kann auch eine I-Variable oder eine R-Variable verwendet werden.
t | Angabe des Tastverhältnisses, das für den angegebenen PWM-Ausgang eingestellt werden soll. Gültige Werte für das Tastverhältnis sind 0 ... 1000‰ (Promille).
In | Eine I-Variable mit dem Index n, welche den neuen Wert des Tastverhältnisses enthält.
Rn | Eine R-Variable mit dem Index n, welche den neuen Wert des Tastverhältnisses enthält.

Beispiel:

SetPWM A1=500 ;Setzt das Tastverhältnis 500‰ an PWM-Kanal 1

SetPWM Out2=735 ;Setzt das Tastverhältnis 735‰ an PWM-Kanal 2

I1=2

I2=825

SetPWM OutI1=I2 ;Setzen des Tastverhaeltnisses mit Verwendung von Variablen

Siehe auch: SetBit, ResBit, GetBit, Ep.b, SetPort, GetPort, SetAnalog, GetAnalog


SignalError

SignalError errorcode [Param1=Strn|text] [Param2=Strn|text]

Anzeige einer (Standard-)Fehlermeldung aus dem Anwenderprogramm heraus

Mit Hilfe dieses Befehls kann ein (benutzerspezifischer) Fehlercode aus dem CNC-Programm mit Hilfe des Standard-Fehlermeldungsdialogs der Anwendung angezeigt werden. Zugleich mit der Anzeige des Fehlers werden der Fehlercode und, sofern angegeben, die zusätzlichen Zeichenketten im Fehlerspeicher der Anwendung eingetragen.

Bei Aufruf des Kommandos SignalError wird der Programmablauf automatisch angehalten. Das bedeutet, daß direkt nach Anzeige des Fehlers eine direkte Bedienhandlung erforderlich ist. Das Programm kann je nach Ermessen des Bedieners weitergeführt oder abgebrochen werden. Programmatisch auszuführende Aktionen, die zur Fehlerbehandlung erforderlich sind, müssen also vor Anzeige der Fehlermeldung durchgeführt werden.

Parameter

errorcode | Der Fehlercode als nicht vorzeichenbehafteter 32-Bit-Wert.
Strn | Eine String-Variable, deren Inhalt zusätzlich in der Fehlermeldung angezeigt wird.
text | Eine Zeichenkette, welche zusätzlich in der Fehlermeldung angezeigt wird.

Zusammensetzung des Fehlercodes

Der Fehlercode wird aus diversen Bits bzw. Bytes zusammengesetzt, welche den Typ, die Fehlergruppe sowie den spezifischen Fehlercode bescheiben:

.------------- 2 Bit für den Typ der Fehlermeldung

| 1 Bit für die Kennung "User-Fehlermeldung"

| 1 Bit frei

| .----------- 3 Byte für die Herkunft/Fehlergruppe des Fehlers

| | .------- 4 Byte für den Fehlercode

| | |

| | |

0x 0 000 00 00

Darstellung aufgelöst nach den einzelnen Bits:

3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1

1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0

|---|-|-|-----------------------|-------------------------------|

|Typ|C| | Herkunft des Fehlers | Fehlercode |

---------------------------------------------------------------

In den Anwendungen Remote und ProNC sind bereits eine Vielzahl von Fehlercodes und Fehlergruppen definiert, die sich in einem eingegrenzten Wertebereich befinden. Für die Programmierung durch den Anwender ist die Fehlergruppe ab 4000 (dezimal) reserviert, das entspricht absolut

in hexadezimaler Notation | 0x0FA00000
in dezimaler Notation | (4000*65536) -> 4000 (dez) um 16 Bit nach links geschoben

Die unteren 16 Bit können vollständig für eigene Fehlercodes verwendet werden, diese bewegen sich demzufolge im Bereich von 0 ... 65535.

Die höchstwertigen 2 Bit des Fehlercodes geben den Typ des Codes an:

in hexadezimaler Notation

0x00000000 | Kein Fehler, Erfolg
0x40000000 | Info, Hinweis
0x80000000 | Warnung
0xC0000000 | Fehler

in dezimaler Notation

0 | Kein Fehler, Erfolg
1073741824 | Info, Hinweis
2147483648 | Warnung
3221225472 | Fehler

Es empfiehlt sich, aus Gründen der Übersichtlichkeit mit hexadezimalen Notationen für den Fehlertyp und die Fehlerherkunft zu arbeiten.

#define ERRTYPE_SUCCESS 0x00000000

#define ERRTYPE_INFO 0x40000000

#define ERRTYPE_WARNING 0x80000000

#define ERRTYPE_ERROR 0xC0000000

#define ERRFAC_USER 0x0FA00000

Der Fehlercode läßt sich durch bitweise Veroderung sehr einfach zusammensetzen, z.B. würde der Befehl

SignalError (ERRFAC_USER|ERRTYPE_WARNING|2)

die anwenderspezifische Warnung mit dem Code 2 in den Fehlerspeicher eintragen.

Weitere Verarbeitung

Für jeden anwenderspezifischen Fehlercode kann in einer korrespondierenden Fehlertextdatei ein Fehlertext hinterlegt werden. Die Benennung der Datei richtet sich dabei nach dem numerischen Identifier der Fehlergruppe.

Prinzipiell ist der Dateiname so aufgebaut:

ErrXXXX.txt | deutsche Fehlertexte
ErrXXXX_Eng.txt | englische Fehlertexte
ErrXXXX_Fre.txt | französische Fehlertexte
ErrXXXX_Hun.txt | ungarische Fehlertexte

XXXX steht dabei für den numerischen Wert der Fehlergruppe, d.h. wenn als Code für die Fehlergruppe 4000 gewählt wäre, würde der Dateiname entsprechend Err4000.txt sein.

In der Fehlertextdatei sind die Einträge zeilenweise zu erstellen, eine Zeile hat diesen Aufbau:

3-4000-21: \nAchtung: Die Anzahl der Teile im Vorratsbehälter ist sehr gering!\n\nBitte auffüllen!

Der Code der Fehlermeldung ist nach dem Muster "Typ-Fehlergruppe-Fehlercode" aufgebaut:

Typ | entspricht dem Wert der beiden höchstwertigen Bits des Fehlercodes und gibt den Typ des Fehlers an 0 Kein Fehler 1 Info 2 Warnung 3 Fehler
Fehlergruppe | entspricht dem Wert der Bytes 5, 6 und 7 des Fehlercodes, die Fehlergruppe kann für die anwenderspezifischen Fehlercodes ein Wert ab 4000 sein.
Fehlercode | ein beliebiger Wert zwischen 0 und 65535

Ein Zeilenumbruch in der Anzeige des Fehlers mit dem Standard-Fehlermeldungsdialog kann durch einfügen der Zeichenfolge "\n" im Fehlermeldungstext erreicht werden.

Falls bei Ausführung des Befehls SignalError ein oder zwei zusätzliche Infotexte oder Zeichenkettenvariablen übergeben wurden, müssen in der Fehlertextzeile dafür Platzhalter eingefügt werden. Diese Platzhalter bestehen aus der Zeichenfolge "%s". Eine Fehlermeldungszeile mit Anzeige der übergebenen Texte würde also so aussehen:

3-4000-21: \nFehler: Die Datei %s ist nicht vorhanden

Beispiel:

#define ERRTYPE_SUCCESS 0x00000000

#define ERRTYPE_INFO 0x40000000

#define ERRTYPE_WARNING 0x80000000

#define ERRTYPE_ERROR 0xC0000000

#define ERRFAC_USER 0x0FA00000

#define ERR_OVERHEAT 11

ProgBegin

Str1=""

Str2=""

Str3=""

Str4=""

;Ueberpruefung diverser Hardwarekomponenten

If(E2.1==1)

Str1="Warpkern 1"

EndIf

If(E2.2==1)

I1=StrGetLength(Str1)

If(I1>0)

Str1=Str1+", "

EndIf

Str1=Str1+"Warpkern 2"

EndIf

If(E2.3==1)

I1=StrGetLength(Str1)

If(I1>0)

Str1=Str1+", "

EndIf

Str1=Str1+"Phaserbank 1"

EndIf

If(E2.4==1)

I1=StrGetLength(Str1)

If(I1>0)

Str1=Str1+", "

EndIf

Str1=Str1+"Phaserbank 2"

EndIf

If(E2&0x0F)

SignalError (ERRTYPE_ERROR|ERRFAC_USER|ERR_OVERHEAT) Param1=Str1

EndIf

...

ProgEnd

Siehe auch: NotifyError


SIN

SIN w

Operator für die trigonometrische Funktion SINUS

Operator für die trigonometrische Funktion SINUS. Als Argument wird ein Winkel w in Radiant (0...2*Pi => 0°...360°) erwartet.

Beispiel:

R11=PI/2

R12=SIN(R11) ;Ergibt 1.0

R13=SIN(2*R11) ;Ergibt 0

Umrechnung von Radiant in Grad:

winkel_in_rad * 180

winkel_in_grad = —————————————————

Pi

Umrechnung von Grad in Radiant :

winkel_in_grad * Pi

winkel_in_rad = —————————————————

180

Siehe auch: COS, TAN


SMax

SMax [ dev= ] maxrpm

Einstellen der Maximaldrehzahl der Antriebsspindel

Angabe der Maximaldrehzahl des Spindelmotors. Diese Funktion ist nützlich, wenn zur Laufzeit des CNC-Programms bekannt ist, daß beim aktuell in der Frässpindel eingespannten Werkzeug eine bestimmte Maximaldrehzahl nicht überschritten werden darf.

Hinweis: Diese Funktion ist eine Komfort-Funktion, d.h. die Maximaldrehzahl wird softwareseitig begrenzt. Sicherheitstechnisch handelt es sich jedoch um eine "nicht sichere" Funktion. Das bedeutet, daß die Begrenzung der Drehzahl zusätzlich durch eine geeignete Hardware (Sicherheits-SPS mit geeignetem sicheren Drehzahlsensor) überwacht werden muß, sofern dies im Rahmen der Anwendung erforderlich ist.

Parameter der Funktion

dev | Angabe der Gerätenummer, wenn nicht die Standard-Frässpindel (Gerätenummer=1) angesprochen werden soll. Nur erforderlich, wenn mit mehr als 1 Frässpindel gearbeitet wird.
Strn | Die zu beachtende Maximaldrehzahl der Frässpindel.

Anzeige in der Bedienoberfläche

Die aktive Begrenzung der Spindeldrehzahl wird in der Bedienoberfläche der Steuerung durch ein entsprechendes Symbol, z.B. im Bedienfeld der Frässpindel, angezeigt.

Beispiel:

; Soll-Drehzahl ist eine vorzeichenlose Konstante

; Maximale Drehzahl ist eine vorzeichenlose Konstante

S1234

SMAX 4567

Spindle On

Delay 1000

Spindle Off

; Soll-Drehzahl ist ein arithmetischer Ausdruck/Konstante

; Maximale Drehzahl ist ein arithmetischer Ausdruck/Konstante

S12345.0

SMAX 45678.0

;auch mittels Variable moeglich

R1=45678

SMAX R1

Spindle On

Delay 1000

Spindle Off

;Verwendung einer zweiten Frässpindel

;Bei Angabe der Spindel-Gerätenummer wird der

;Geräteindex mit '=' vom Drehzahl-Wert getrennt

S2=2345

SMAX 2=4567

Spindle On

Delay 250

Spindle Off


SOFF

SOFF n

Ausschalten einer Frässpindel

Schaltet die Frässpindel mit dem Index n aus. Falls mehrere Spindelantriebe verwendet werden, muß die gewünschte Spindel durch einen Index adressiert werden: SOFF 1, SOFF 2, .... SOFF 4.

Wird kein Index verwendet, bezieht sich der Befehl immer auf Spindelantrieb 1.

Beispiel:

SOFF ; Spindel 1 ausschalten

SOFF 1 ; Spindel 1 ausschalten

SOFF 2 ; Spindel 2 ausschalten

Siehe auch: S, SCLW, SCCLW, Spindle


Spindle

Spindle n onoff dir RPMrpm TIMEtime

Ein- bzw. Ausschalten einer Frässpindel

Schaltet die Frässpindel ein oder aus. Durch die Übergabe zusätzlicher Parameter können Drehrichtung, Drehzahl sowie die Hochlaufverzögerung eingestellt werden.

Verwendete Parameter

n

Index der Spindel (1...4). Falls kein Index für die Spindel angegeben wird, dann bezieht sich der Befehl immer auf Spindel 1.

onoff

ON Spindel einschalten (alternativ CW oder CCW)

OFF Spindel ausschalten

dir

CW Drehrichtung rechts

CCW Drehrichtung links

RPM

xxx Angabe der Drehzahl in Upm

TIME

xxx Angabe der Hochlaufzeit in ms

Der Parameter ON bedeutet immer, daß die Spindel im Uhrzeigersinn dreht. Wird der Parameter CCW angegeben, so wird ebenfalls angenommen, daß die Spindel eingeschaltet werden soll. Die Kommandos [CW | CCW | ON | OFF] stehen VOR den Angaben für die Drehzahl (RPMrpm) und die Hochlaufwartezeit (TIMEtime).

Beispiel:

Spindle ON

Spindle CW RPM2000

Spindle CW RPM5000 TIME2000

Spindle OFF

Spindle 2 ON RPM3000

Spindle 2 OFF

Siehe auch: S, SCLW, SCCLW, SOFF


SplitPath

SplitPath Str_Path Str_Drive Str_Dir Str_FileName Str_Ext

Bestandteile eines Dateipfades extrahieren

Bei der Arbeit mit Dateinamen ist es gelegentlich notwendig, aus diesen die einzelnen Bestandteile wie Laufwerk, Pfad oder Namen zu extrahieren. Diese Funktionalität wird durch den Befehl SplitPath bereitgestellt.

Syntax:

SplitPath str_path str_drive str_dir str_filename str_ext

Parameter des Befehls:

str_path | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) welche den Namen des vollständigen Dateipfades enthält, der zerlegt werden soll. Der 1. Parameter kann weiterhin ein String-Ausdruck (z.B. Str1+Str2+".abc") sein.
str_drive | Eine Str-Variable (String-Variable, Zeichenkettenvariable) welche nach Ausführung des Befehls den Laufwerkbezeichner des vollständigen Dateipfades enthält.
str_drive | Eine Str-Variable (String-Variable, Zeichenkettenvariable) welche nach Ausführung des Befehls den absoluten Pfad (ohne Laufwerkbezeichner) des übergebenen vollständigen Dateipfades enthält.
str_filename | Eine Str-Variable (String-Variable, Zeichenkettenvariable) welche nach Ausführung des Befehls den Dateinamen (ohne Extension) des übergebenen vollständigen Dateipfades enthält.
str_ext | Eine Str-Variable (String-Variable, Zeichenkettenvariable) welche nach Ausführung des Befehls die Dateinamenerweiterung (Extension) des übergebenen vollständigen Dateipfades enthält.

Beispiel:

(1)

;Einen festen vollstaendigen Dateipfad verwenden

Str11="C:\NCProg\Normal\Kalibrierteil1.NCP"

;Den Dateipfad zerlegen

SplitPath Str11 Str12 Str13 Str14 Str15

;In den Variablen stehen jetzt diese Werte

;Str12="C:"

;Str13="\NCProg\Normal\"

;Str14="Kalibrierteil1"

;Str15="NCP"

(2)

Str1="C:\NCProg\WorkFiles"

Str2="Auswahl der Bearbeitungsdatei"

Str3="ISO-Dateien|*.ISO|Alle Dateien|*.*||"

Str11=""

;Dateiauswahldialog aufrufen...

R1=FileDialog OpenFileDialog=1 Result=Str4 DefaultPath=Str1 Title=Str2 Filter=Str3

;Rueckgabewerte fuer den weiteren Verlauf auswerten

;Anwender hat "Oeffnen" gewaehlt..

If R1==1

;Den Dateipfad zerlegen

SplitPath Str11 Str12 Str13 Str14 Str15

;Die Dateinamenerweiterung aendern

Str15="LOG"

;Den vollstaendigen Dateipfad einer LOG-Datei erzeugen

MakePath Str11 Str12 Str13 Str14 Str15

;Oder:

;Alternativer Aufruf mit dem gleichen Resultat

MakePath Str11 Str12 Str13 Str14 "LOG"

;Oder:

;Alternativer Aufruf: Anderes Laufwerk und Pfad

MakePath Str11 "D:" "\LogFiles\" Str14 "LOG"

EndIf

Siehe auch: MakePath, CopyFile, MoveFile, DeleteFile, FileDialog, FileExists, GetFileType


SQR

SQR(w)

Quadrieren einer Zahl

Funktion für das Quadrieren des numerischen Wertes w. Als Parameter kann eine Konstante, eine Variable oder das Ergebnis einer weiteren Funktion an die Funktion übergeben werden.

Beispiel:

R1=4

R2=SQR(R1) ;Ergibt R1^2 (R1*R1): 16

R2=SQR(9.0) ;Ergibt 81

Siehe auch: SQRT, POW


SQRT

SQRT(w)

Ermitteln der Quadratwurzel einer Zahl

Funktion für die Ermittlung der Quadratwurzel (Square Root) eines numerischen Wertes w. Als Parameter kann eine Konstante, eine Variable oder arithmetischer Ausdruck an die Funktion übergeben werden.

Beispiel:

R1=16

R2=SQRT(R1) ;Ergibt die Wurzel aus R1: 4

R2=SQRT(9.0) ;Ergibt 3

R1=SQRT(R2*12.0) ;Ergibt 6

Siehe auch: SQR


StartScript

In|Rn=StartScript [Strn]|[str_filename] [options]

Startet ein NCP-, PAL- oder CNC-Script in einem eigenen Dialog

Mit Hilfe dieses Befehls wird ein Script (das ist ein eigenständiges Hilfsprogramm im NCP-, PAL- oder CNC-Format) in einem eigenen Dialog gestartet.

Zu beachten: Einschränkung bei der Beauftragung von Bewegungsbefehlen

Die Ausführung des Scripts erfolgt quasi parallel zu einem laufenden Hauptprogramm. Trotzdem sollte hier beachtet werden, daß z.B. bei Bewegungsbefehlen keine wahlfreie Programmierung innerhalb eines Achssystems möglich ist. So ist beispielsweise im Script die Ausführung eines Bewegungsbefehls für die Achse Z im Achssystem 1 nicht möglich, wenn im Hauptprogramm bereits eine Bewegung einer beliebigen anderen Achse des Achssystems 1 läuft. Der Aufruf des Bewegungsbefehls erzeugt in diesem Fall eine Fehlermeldung. Die Beauftragung einer Bewegung für eine Achse des Achssystems 2 oder einer Handlingachse ist jedoch möglich.

Zu beachten: Verwendung des Dialogs in den Betriebsarten "Modal" und "Nichtmodal"

Die Standard-Betriebsart des Dialogs ist die modale Dialogausführung. Folgende Details sind bei den beiden Betriebsarten zu beachten:

·Die Bedienelemente des Anwenderprogramms (ProNC) sind in der Betriebsart "Modal" nicht mehr erreichbar, der Zugriff ist durch den im Vordergrund liegenden Scriptdialog blockiert.

·In der Betriebsart "Nichtmodal" sind die Bedienelemente der Anwendung weiterhin erreichbar und können für die Steuerung des Programmablaufs benutzt werden.

·In beiden Betriebsarten läuft das Hauptprogramm, aus dem heraus der Scriptdialog mit dem Befehl "StartScript" gestartet wurde, trotzdem weiter. Alle Befehle, die nicht auf den Scriptdialog zugreifen, werden weiterhin ausgeführt. In der Betriebsart "Modal" werden jedoch die Befehle, die auf den Scriptdialog zugreifen (GetScriptStatus, AbortScript, GetScriptExitCode) bei Aufruf solange blockiert, bis der modale Scriptdialog beendet ist. Alle Abbruchbedingungen, die zu einem vorzeitigen Beenden eines modal gestarteten Scripts führen sollen, müssen also innerhalb des Scripts überwacht werden.

·Zur Synchronisation interner Abläufe ist nach dem Aufruf des Befehls "StartScript", egal ob die Betriebsart "Modal" oder "Nichtmodal" festgelegt wurde, eine kurze Wartezeit erforderlich, bevor der Programmablauf im Hauptprogramm weitergeführt wird. Diese Wartezeit sollte im Bereich von 500ms bis 1000ms liegen. Falls nach dem Start der Scriptbearbeitung nicht unmittelbar auf Scriptbefehle zugegriffen wird oder falls im Programmablauf nach dem Start des Scripts nicht an genau dieser Programmstelle auf das Ende der Scriptbearbeitung gewartet werden muß, ist keine Wartezeit erforderlich.

Syntax:

StartScript [str_filepath]|[Strn] | [options]

Parameter des Befehls:

In, Rn

Eine Integer (Ganzzahl)- oder Real (Gleitkomma)-Variale, welche die Prozess-ID des gestarteten Scripts aufnimmt.

Hinweis: Die Prozess-ID ist momentan redundant, muss aber hinsichtlich einer späteren Erweiterung des Befehlsumfangs der Scriptbearbeitung zwingend an eine entsprechende Variable übergeben werden.

str_filepath

Eine Zeichenkette, welche den vollständigen Dateipfad der Datei im NCP-, PAL- oder CNC-Format enthält, die als Script gestartet werden soll.

Strn

Eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index n (n: 0...500) welche den vollständigen Dateipfad der Datei im NCP-, PAL- oder CNC-Format enthält, die als Script gestartet werden soll.

options

Optionen für die Ausführung des Scripts. Die Art des Dialogs, der Ausführung des Scripts sowie das Verhalten des Script-Interpreters können über diese Steuerwörter festgelegt werden.

Die Optionen im einzelnen:

AUTOSTART

Nach Öffnen des Scriptdialogs wird die Bearbeitung der Scriptdatei automatisch gestartet.

AUTOCLOSE

Nach Erreichen des Programmendes des Scripts wird der Scriptdialog automatisch geschlossen.

SYMBOLIC

In der Standardansicht des Scriptdialogs wird der Programmcode des ablaufenden Scripts in einem Fenster dargestellt. Mit Hilfe dieses Steuerwortes wird der Scriptdialog in einer symbolischen Ansicht ohne Animation des ablaufenden Programmcodes des Scripts geöffnet. Textausgaben im Script (im Programmcode des Scripts z.B. mit der Anweisung "XTYPE" erstellt), werden in der symbolischen Darstellung angezeigt.

Der Scriptdialog in der Standarddarstellung

Der Scriptdialog in einer symbolischen Darstellung

SENDTOTRAY

Diese Option bewirkt, daß der Scriptdialog nach dem Start des Scripts nicht im Vordergrund geöffnet wird, sondern in den Systembereich minimiert wird und somit für den Anwender unsichtbar ist. Im Systembereich wird ein Symbol für das momentan ablaufende Script angezeigt.

Nach Positionieren des Mauszeigers auf das Symbol erscheint ein Tooltip-Fenster, in dem der Name des momentan laufenden Scripts angezeigt wird. Ein Doppelklick auf das Script-Symbol öffnet den verborgenen Scriptdialog, dieser kann nun über die normalen Bedienfunktionen des Dialogs gesteuert werden.

NONMODAL

Der Script-Dialog wird als nichtmodaler Dialog gestartet. In der modalen Betriebsart liegt das Dialogfenster im Vordergrund, eine Bedienung der dahinterliegenden Hauptanwendung ist in diesem Fall nicht möglich. In der nichtmodalen Betriebsart ist die Bedienung der Hauptanwendung möglich, das Dialogfenster wird zwar im Vordergrund eingeblendet, blockiert jedoch nicht den Zugriff auf die Bedienelemente der Hauptanwendung.

ONERRORSHOWMESSAGE

Bei Auftreten eines Fehlers während der Ausführung des Scripts wird der aufgetretene Fehler in einer Fehlermeldung angezeigt, das Script wird nicht beendet.

ONERRORCLOSESCRIPT

Bei Auftreten eines Fehlers während der Ausführung des Scripts wird das Script beendet und der Scriptdialog geschlossen.

USEPATH

Bei der Ausführung des Scripts ist die Option "Bahnbearbeitung" aktiviert, d.h. zusammenhängende Bewegungssegmente werden mit der bestmöglichen Übergangsgeschwindigkeit gefahren. Im Standard-Betrieb ist das Bahnsteuerungsverhalten deaktiviert, die einzelnen Bewegungssegmente werden als Einzelbewegungen ausgeführt.

SETSKIP

Aktivieren der Betriebsart "Ausblendsätze überlesen". In dieser Betriebsart werden NC-Befehlssätze, die mit einem vorangestellten "/" gekennzeichnet sind, überlesen (d.h. nicht ausgeführt).

RAPIDTRAVERSE

Aktivieren der Betriebsart "Eilgangüberlagerung". In dieser Betriebsart werden alle Bewegungen mit programmiertem Vorschub (ISO-Format: G1, G2, G3, G11; PAL-Format: MOVEABS, CLWABS, CCLWABS, MOVEFRAME) mit den Eilganggeschwindigkeiten gefahren.

Beispiel:

(1)

;Standard-Ausfuehrung eines Scripts

;Uebertragen des Scriptnamens in eine String-Variable

Str1="C:\CNCWorkbench\Script\HandlingAchseAnPosition01.NCP"

;Pruefen ob die Datei existiert

I1=FileExists Str1

;wenn das der Fall ist: Script starten

;die beiden Optionen AUTOSTART und AUTOCLOSE muessen fuer

;die automatische Ausfuehrung des Scripts innnerhalb

;eines Bearbeitungsprogramms immer aktiviert sein

If(I1==1)

I1=StartScript Str1 AUTOSTART AUTOCLOSE

;wenn an dieser Stelle im Hauptprogramm zwingend auf das Ende

;des Scripts gewartet werden soll, muessen diese beiden Befehle

;eingefuegt werden: Nach einer kurzen Wartezeit wird der Befehl fuer

;die Abfrage des aktuellen Scriptstatus aufgerufen der erst zurueckkehrt

;wenn das modal ablaufende Script beendet ist.

Delay 500

I301=GetScriptStatus I1

EndIf

(2)

;Alternativ kann das Script im nichtmodalen Modus gestartet werden:

...

...

If(I1==1)

I1=StartScript Str1 AUTOSTART AUTOCLOSE NONMODAL

EndIf

;im nichtmodalen Modus ist im Gegensatz zur modalen Form des

;Scriptdialogs der Zugriff auf die Bedienelemente der Hauptanwendung

;moeglich, d.h. ein Programm kann z.B. auch abgebrochen werden

;wenn an dieser Stelle im Hauptprogramm zwingend auf das Ende

;des nichtmodal gestarteten Scripts gewartet werden soll, muss

eine kurze Wartezeit eingefuegt werden.

;Nach dieser Wartezeit wird die Statusabfrage fuer das aktuelle Script

;in einer Schleife aufgerufen, die beendet wird sobald der Status

;signalisiert dass das nichtmodal ablaufende Script beendet ist.

Delay 500

Do

I301=GetScriptStatus I1

EndDo(I301==0)

Siehe auch: GetScriptExitCode, GetScriptStatus, AbortScript


StopWatch

StopWatch [Start][Stop][Reset][GetElapsedTime]

Zeitmessung mit der Stoppuhr der Anwendung

Die Anwendung ProNC verfügt über einen Dialog zur Zeitmessung ähnlich einer Stoppuhr.

Der Dialog "Stoppuhr"

Über die vier Schaltflächen können die Funktionen zur Zeitmessung gesteuert werden: Die Schaltfläche "Start" [image] dient dazu, die Zeitmessung zu beginnen, mit der Schaltfläche "Stop" [image] wird eine laufende Zeitmessung angehalten, die Schaltfläche "Reset" [image] beendet die Zeitmessung.

Die Schaltfläche "Preset" [image] wird verwendet, um den Countdown-Modus der Stoppuhr zu aktivieren und eine Startzeit für den Countdown einzustellen.

Mit jedem Betätigen der Schaltfläche "Stop" wird die Zwischenzeit registriert, die seit dem letzten Betätigen der Schaltfläche "Start" vergangen ist, und in der Liste der Zwischenzeiten eingetragen.

Die Messung der Gesamtzeit pausiert nach jedem Betätigen der Schaltfläche "Stop", die Gesamtzeit wird weitergezählt, nachdem die Schaltfläche "Start" erneut betätigt wurde.

Das Betätigen der Schaltfläche "Reset" beendet die Zeitmessung, die aktuelle Gesamtzeit sowie alle aufgenommenen Zwischenzeiten werden gelöscht.

Programmatischer Zugriff auf die Stoppuhr

Durch Angabe verschiedener weiterer Parameter in Verbindung mit dem Kommando "StopWatch" können verschiedene Funktionen der Zeitmessung gesteuert werden.

Start

Die Zeitmessung wird gestartet, indem dieser Parameter zusammen mit dem Befehl StopWatch angegeben wird. Fall die Zeitmessung zuvor zurückgesetzt wurde, beginnt die Zeitmessung nun ab 0:00:00. Falls die Zeitmessung zuvor aktiv war und sich im gestoppten Zustand befindet, wird ab der aktuell vorliegenden Zwischenzeit weitergezählt.

Befehl vergleichbar zum Betätigen der Schaltfläche "Start":

StopWatch Start

Stop

Eine aktive Zeitmessung wird angehalten. Die aktuelle Zwischenzeit seit der Ausführung des letzten Zurücksetzens der Zeitmessung (Parameter "Reset") wird aktualisiert. Die Zwischenzeit seit dem letzten Start der Zeitmessung wird ermittelt und in der Liste der Zwischenzeiten an der ersten Stelle dargestellt.

Kommando vergleichbar zum Betätigen der Schaltfläche "Stop":

StopWatch Stop

Reset

Falls eine Zeitmessung aktiv ist, wird diese beendet. Die Zähler der Stoppuhr werden auf 0:00:00 gesetzt. Die Liste mit den aufgelaufenen Zwischenzeiten wird gelöscht.

Falls der Dialog mit der Stoppuhr sichtbar ist, wird die Anzeige entsprechend aktualisiert.

Kommando vergleichbar zum Betätigen der Schaltfläche "Reset":

StopWatch Reset

GetElapsedTime i

Dieser Parameter wird verwendet, um Zugriff auf die in der Stoppuhr vorhandenen aktuellen und gespeicherten Zeiten zu bekommen. Der Parameter GetElapsedTime wird zusammen mit einem Index ("i") verwendet, welcher die zurückzugebende Zeit definiert:

0 | Der Index 0 definiert, daß die momentan aktuelle Gesamtzeit seit dem letzten Reset der Zeitmessung zurückgegeben wird. Es ist hierbei unerheblich, ob momentan eine Zeitmessung läuft oder nicht, es wird in jedem Fall die aktuell aufgelaufene Zeit zurückgegeben.
1...8 | Die Angabe eines Indexwertes im Bereich 1 bis 8 bewirkt, daß das entsprechende Element aus der Liste der Zwischenzeiten zurückgegeben wird. Die Liste der Zwischenzeiten arbeitet nach dem LIFO-Prinzip, d.h. das zuletzt in die Liste aufgenommene Element wird bei Angabe des Index 1 zurückgeliefert, bei Angabe des Index 2 das vorletzte aufgenommene Element usw..

Das Ergebnis der Abfrage kann an eine Real-Variable oder an eine Integer-Variable mit Hilfe des Zuweisungs-Operators (=) übertragen werden.

Hinweis

Wenn nach Anwendung eines der Befehle "StopWatch Start", "StopWatch Stop" und "StopWatch Reset" der Befehl "StopWatch GetElapsedTime i" verwendet werden soll, so ist es erforderlich, eine kurze Wartezeit vor der Abfrage der Zwischenzeiten einzufügen. Dies ist dem Umstand geschuldet, daß die oben erwähnten Befehle Laufzeiten haben und die internen Zähler noch nicht aktualisiert sind, wenn unmittelbar nach Aufruf des Stoppuhr-Befehls sofort die Abfrage der Zeiten erfolgt.

Hinweis:

Bei der Verwendung des Befehl sowie der Parameter ist Groß-/Kleinschreibung nicht vorgeschrieben. Es werden also gleichermaßen die folgenden Befehle akzeptiert:

StopWatch Start

StopWatch START

STOPWATCH START

stopwatch start

Beispiel

(Dieser Quellcode kann direkt in ein PAL.Programm kopiert und ausgeführt werden)

ProgBegin

R1=0

R2=0

R3=0

R11=0

I1=0

;Reset der Zeitmessung

StopWatch Reset

;Start der Zeitmessung,

;die Zeitmessung startet ab 0:00:00

StopWatch Start

;...eine Wartezeit

Delay 1000

;Anhalten der Messung,

;eine Zwischenzeit wird uebertragen

StopWatch Stop

;...eine Wartezeit

Delay 1000

;Erneuter Start der Zeitmessung,

;die Zeit zaehlt ab der letzten Zwischenzeit

StopWatch Start

Delay 2000

;Abfrage der insgesamt aufgelaufenen Zeit

;Zuweisung an eine Real-Variable

R11=StopWatch GetElapsedTime 0

Delay 1500

R11=StopWatch GetElapsedTime 0

Delay 2500

R11=StopWatch GetElapsedTime 0

;Anhalten der Messung,

;erneut Zwischenzeit uebertragen

StopWatch Stop

;Wartezeit wegen der internen Laufzeit

;des Befehls Stop

Delay 50

;Abfrage der insgesamt aufgelaufenen Zeit

;Zuweisung an eine Integer-Variable

I1=StopWatch GetElapsedTime 0

;Zuweisung an eine Real-Variable

R11=StopWatch GetElapsedTime 0

;Abfrage einer Zwischenzeit aus der Liste,

;mit Index 1 wird die letzte Zeit zurueckgegeben

;das ist die Zeit beim 2. Stop

R1=StopWatch GetElapsedTime 1

;mit Index 2 wird die vorletzte Zeit zurueckgegeben

;das ist die Zeit beim 1. Stop

R2=StopWatch GetElapsedTime 2

Delay 2000

;Reset der Zeitmessung

StopWatch Reset

;Laufzeitbedingte Wartezeit

Delay 50

;Abfrage der insgesamt aufgelaufenen Zeit

;diese ist jetzt 0

I1=StopWatch GetElapsedTime 0

ProgEnd


Str

Strn

Zeichenketten-Variable

Eine Zeichenketten- oder String-Variable STRn (n=0 … 499) kann eine Zeichenkette mit maximal 500 ASCII-Zeichen speichern. Zeichenkettenvariablen können für die Gestaltung von Meldungstexten oder zur Anzeige von Variablenwerten während des Programmlaufs verwendet werden.

Folgende Operationen können mit String-Variablen ausgeführt werden:

Zuweisung einer Zeichenkette (Text) an eine String-Variable:

Str1 = "Heute ist " ; der erste Text
Str2 = "schoenes Wetter. " ; der zweite Text
Str3= "Das ist wunderbar !" ; der dritte Text

Verketten von zwei oder mehr String-Variablen zu einer neuen String-Variablen:

Str0 = Str1 + Str2 + Str3

Eine String-Variable kann als Parameter in einem MessageBox-Befehl benutzt werden:

MessageBox INFO Str0

Zeichenketten mit Steuerzeichen:

Um den aktuellen Wert einer P- oder R-Variablen zur Laufzeit des Anwenderprogrammes in einem Meldungsfenster anzuzeigen, können Zeichenketten mit Steuerzeichen genutzt werden.

Steuerzeichen für R-Variable:

%Rx% mit: x=0...999

Steuerzeichen P-Variable:

%Py% mit: y=0… 99

Hinweis: Ein Zeilenumbruch für die Darstellung in der MessageBox wird durch das Symbol "\n" erzwungen.

Beispiele:

Str0 = " abc 123 "

MessageBox INFO Str0

;Zuweisung von beliebig vielen Einzelstrings an einen Ergebnisstring:

Str1 = "Hallo ... " + "einen " + "guten " + "Tag !"

Str4 = Str1

MessageBox INFO Str4

Str1 = "11" Str2 = "22" Str3 = "33" Str4="44"

Str5 = Str1 + Str2 + Str3 + Str4 + "55" + "66"

MessageBox INFO Str5

Str6 = "abc" + Str5

MessageBox INFO Str6

; Initialisierung aller benötigten R-Variablen:

N05 R1=1.111

N10 R111=111.123 R112=112.234 R113=113.345

STR1 = "Der Wert von R1=%R1% und R111=%R111% "

STR2 = "Der Wert von R112=%R112% "

STR3 = "Der Wert von R113=%R113% "

STR4 = Str1 + Str2

STR5 = Str1 + Str2 + Str3 + "-----------------"

; Steuerzeichen in einer Zeichenkette:

R1 = 123.456

; das Steuerzeichen %R1%

Str10 = "der Wert der R-Variablen R1 ist: %R1%"

MessageBox INFO Str10

;im Text der MessageBox erscheint:

;der Wert der R-Variablen R1 ist: 123.456

Str6 = "aktuelle P-Variable (Eingänge): %P1% %P3% %P5% %P7% "

Str7 = "%P9% %P11% %P13% %P15%\n"

Str8 = "aktuelle P-Variable (Ausgänge): %P0% %P2% %P4% %P6% "

Str9 = "%P8% %P10% %P12% %P14% "

Str10= Str6 + Str7 + Str8 + Str9

Str11= "P-Variable: P20=%P20% P21=%P21% P22=%P22% "


StrCompare

In=StrCompare(str1 str2)

Vergleich zweier Zeichenketten, Case-sensitiv

Mit Hilfe dieser Funktion können zwei Zeichenketten verglichen werden. Der Vergleich erfolgt unter Berücksichtigung der Groß-/Kleinschreibung.

Wenn beide Zeichenketten gleich sind, gibt die Funktion den Wert 0 zurück. Der Rückgabewert ist kleiner als 0, wenn Argument 1 kleiner als Argument 2 ist. Falls Argument 1 größer als Argument 2 ist, gibt die Funktion einen Wert größer 0 zurück.

Parameter des Befehls:

str1 | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) welche Argument 1 der Funktion darstellt.
str2 | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) welche Argument 2 der Funktion darstellt.
In | Eine I-Variable mit dem Index n, welche den Rückgabewert der Funktion aufnimmt.

Der Ergebniswert des Vergleichs richtet sich nach folgenden Kriterien:

·Falls die beiden Argumente identisch sind, ist der Rückgabewert 0

·Falls die Anzahl der Zeichen in Argument 1 geringer ist als die Anzahl der Zeichen in Argument 2, ist der Rückgabewert -1

·Falls die Anzahl der Zeichen in Argument 1 größer ist als die Anzahl der Zeichen in Argument 2, ist der Rückgabewert 1

·Falls die Anzahl der Zeichen in beiden Argumenten gleich ist und in Argument 1 und Argument 2 an gleicher Stelle in der Zeichenkette ein Unterschied zwischen Groß- und Kleinschreibung vorliegt, ist der Rückgabewert -1.

·Falls die Anzahl der Zeichen in beiden Argumenten gleich ist und in Argument 1 und Argument 2 an gleicher Stelle in der Zeichenkette ein Unterschied vorliegt, dann gilt:
Der Rückgabewert ist -1, wenn das Zeichen in Argument 1 im Alphabet vor dem Zeichen an entsprechender Stelle in Argument 2 steht.
Der Rückgabewert ist 1, wenn das Zeichen in Argument 1 im Alphabet nach dem Zeichen an entsprechender Stelle in Argument 2 steht.

Beispiel:

Str1="ABC"

I1 = StrCompare(Str1 "ABCD") ; Return-Wert: -1, Argument1 < Argument2 (weniger Zeichen in Argument 1)

I1 = StrCompare(Str1 "abc") ; Return-Wert: -1, Argument1 < Argument2 (Kleinschreibung)

I1 = StrCompare(Str1 "AB" ) ; Return-Wert: 1, Argument1 > Argument2 (mehr Zeichen in Argument 1)

I1 = StrCompare(Str1 "ABC") ; Return-Wert: 0, Argument1 ist gleich Argument2

I1 = StrCompare(Str1 "ABc") ; Return-Wert: -1, Unterschied Groß-/Kleinschreibung in Argument1 und Argument2

Str1="ABc"

I1 = StrCompare(Str1 "ABC") ; Return-Wert: -1, Unterschied Groß-/Kleinschreibung in Argument1 und Argument2

Str1="ABC"

I1 = StrCompare(Str1 "ABc") ; Return-Wert: -1, Unterschied Groß-/Kleinschreibung in Argument1 und Argument2

Str1="ABC"

I1 = StrCompare(Str1 "ABX") ; Return-Wert: -1, Zeichen 'C' in Argument 1 im Alphabet vor Zeichen 'X'

I1 = StrCompare(Str1 "ABB") ; Return-Wert: 1, Zeichen 'C' in Argument 1 im Alphabet nach Zeichen 'B'

Siehe auch: StrCompareNoCase


StrCompareNoCase

In=StrCompareNoCase(str1 str2)

Vergleich zweier Zeichenketten, nicht Case-sensitiv

Mit Hilfe dieser Funktion können zwei Zeichenketten verglichen werden. Der Vergleich erfolgt ohne Berücksichtigung der Groß-/Kleinschreibung.

Wenn beide Zeichenketten gleich sind, gibt die Funktion den Wert 0 zurück. Der Rückgabewert ist kleiner als 0, wenn Argument 1 kleiner als Argument 2 ist. Falls Argument 1 größer als Argument 2 ist, gibt die Funktion einen Wert größer 0 zurück.

Parameter des Befehls:

str1 | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) welche Argument 1 der Funktion darstellt.
str2 | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) welche Argument 2 der Funktion darstellt.
In | Eine I-Variable mit dem Index n, welche den Rückgabewert der Funktion aufnimmt.

Der Ergebniswert des Vergleichs richtet sich nach folgenden Kriterien:

·Falls die beiden Argumente identisch sind, ist der Rückgabewert 0

·Falls die Anzahl der Zeichen in Argument 1 geringer ist als die Anzahl der Zeichen in Argument 2, ist der Rückgabewert -1

·Falls die Anzahl der Zeichen in Argument 1 größer ist als die Anzahl der Zeichen in Argument 2, ist der Rückgabewert 1

·Falls die Anzahl der Zeichen in beiden Argumenten gleich ist und in Argument 1 und Argument 2 an gleicher Stelle in der Zeichenkette ein Unterschied vorliegt, dann gilt:
Der Rückgabewert ist -1, wenn das Zeichen in Argument 1 im Alphabet vor dem Zeichen an entsprechender Stelle in Argument 2 steht.
Der Rückgabewert ist 1, wenn das Zeichen in Argument 1 im Alphabet nach dem Zeichen an entsprechender Stelle in Argument 2 steht.

Beispiel:

Str1="ABC" |
I1 = StrCompareNoCase(Str1 "ABCD") | ; Return-Wert: -1, Argument1 < Argument2 (weniger Zeichen in Argument 1)
I1 = StrCompareNoCase(Str1 "abc") | ; Return-Wert: 0, Argument1 ist gleich Argument2 (unbeachtet Kleinschreibung)
I1 = StrCompareNoCase(Str1 "Ab" ) | ; Return-Wert: 1, Argument1 > Argument2 (mehr Zeichen in Argument 1)
I1 = StrCompareNoCase(Str1 "ABC") | ; Return-Wert: 0, Argument1 ist gleich Argument2
Str1="aBc" |
I1 = StrCompareNoCase(Str1 "ABc") | ; Return-Wert: 0, Groß-/Kleinschreibung nicht beruecksichtigt
Str1="abc" |
I1 = StrCompareNoCase(Str1 "abX") | ; Return-Wert: -1, Zeichen 'c' in Argument 1 im Alphabet vor Zeichen 'X'
I1 = StrCompareNoCase(Str1 "ABB") | ; Return-Wert: 1, Zeichen 'C' in Argument 1 im Alphabet nach Zeichen 'B'

Siehe auch: StrCompare


StrDelete

In = StrDelete(str1 istart ianzahl)

Löschen eines oder mehrerer Zeichen in einer Zeichenkette

Die Funktion StrDelete ermöglicht es, ein oder mehrere Zeichen gezielt aus einer Zeichenkette zu entfernen. Entstehende Lücken in der Zeichenkette werden aufgefüllt, indem die nachfolgenden Zeichen den Platz der entfernten Zeichen einnehmen.

Parameter des Befehls:

str1 | Eine Str-Variable (String-Variable, Zeichenkettenvariable), aus der eine Teilzeichenkette entfernt werden soll.
istart | Ein ganzzahliger Wert oder eine I-Variable (Integer-Variable), welcher den Startindex (gezählt ab 0) der Teilzeichenkette enthält, die entfernt werden soll.
ianzahl | Ein ganzzahliger Wert oder eine I-Variable (Integer-Variable), welcher die Anzahl der Zeichen enthält, die ab dem Startindex entfernt werden sollen.

Beispiel:

;Vorbereitung der Zeichenkette

Str1= "Eingang 1.1 ist nicht aktiv!"

;Wenn Bedingung erfuellt: Text anpassen

If(E1.1!=0)

I1=StrDelete(Str1 16 6)

EndIf

;Anzeige des Ergebnisses

MessageBox Str1

Siehe auch: StrInsert


StrEmpty

Strx=StrEmpty(Strn)

Den Inhalt einer String-Variablen löschen

Diese Funktion löscht den Inhalt der indizierten String-Variablen.

Parameter des Befehls:

Strn | Eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index n, deren Inhalt gelöscht werden soll.
Strx | Eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index x, Welche das Ergebnis der vorhergehenden Zeichenkettenoperation aufnimmt. Da die vorherige Operation das Löschen des Inhalts der Zeichenkette Strn war, ist Strx nach der Zuweisung also ebenfalls leer.

Beispiel:

(1)

Str1="1234567890" ; Str1 enthaelt "1234567890"

StrEmpty(Str1) ; Str1 enthaelt ""

(2)

Str1="1234567890" ; Str1 enthaelt "1234567890"

Str2="Hello world" ; Str2 enthaelt "Hello world"

; Str1 wird geloescht und das Ergebnis an Str2 zugewiesen

Str2=StrEmpty(Str1)

; Str1 enthaelt jetzt ""

; Str2 enthaelt ebenfalls ""


StrFind

In = StrFind(Strn Ix Strx)

Suchen eines Zeichens oder einer Teilzeichenkette in einer Zeichenkette

Diese Funktion sucht nach dem ersten Auftreten einer Teilzeichenkette in einer Zeichenkette. Es kann nach einem einzelnen Zeichen oder nach einer aus mehreren Zeichen bestehenden Zeichenkette gesucht werden.

Parameter des Befehls:

In | Eine I-Variable (Integer-Variable) mit dem Index n, welche das Ergebnis der Suche aufnimmt.
Strn | Eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index n, die nach dem ersten Auftreten der Teilzeichenkette durchsucht werden soll.
Ix | Ein ganzzahliger (Integer-)Wert oder eine I-Variable (Integer-Variable) mit dem Index x, welche den Start-Index für die Suche in der Zeichenkette angibt.
Strx | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index x, welche die zu suchende Teilzeichenkette bzw. das zu suchende einzelne Zeichen enthält.

Der Rückgabewert der Funktion ist der Index (ab 0 zählend) des ersten Auftretens der Teilzeichenkette in der zu prüfenden Zeichenkette. Zu beachten ist, daß der Index ab 0 gezählt wird (das bedeutet, daß das erste Zeichen in der Zeichenkette den Index 0 hat).

Falls die Teilzeichenkette nicht in der zu überprüfenden Zeichenkette enthalten ist, wird der Wert -1 zurückgegeben.

Beispiel:

(1)

Str1="111 222 333 444"

I1=StrFind(Str1 0 "44")

; Return-Wert in I1: 12

(2)

Str1="111 222 333 444"

Str2="33"

I1=StrFind(Str1 0 Str2)

; Return-Wert in I1: 8

(3)

Str1="1234567890" ; Str1 enthaelt "1234567890"

Str2="Hello world" ; Str2 enthaelt "Hello world"

I1=StrFind(Str1 0 Str2)

; Return-Wert in I1: -1

Siehe auch: StrFindOneOf


StrFindOneOf

In = StrFindOneOf(Strn Strx)

Erstes Auftreten eines beliebigen Zeichens einer Zeichenmenge in der Zeichenkette finden

Diese Funktion sucht nach dem ersten Auftreten eines beliebigen, mittels einer Teilzeichenkette festgelegten Zeichens in einer Zeichenkette. Die Suche ist beendet, sobald in der zu durchsuchenden Zeichenkette ein Zeichen auftritt, welches in der Teilzeichenkette enthalten ist.

Parameter des Befehls:

In | Eine I-Variable (Integer-Variable) mit dem Index n, welche das Ergebnis der Suche aufnimmt.
Strn | Eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index n, die nach dem ersten Auftreten eines in der Teilzeichenkette Strx enthaltenen Zeichens durchsucht werden soll.
Strx | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index x, welche die Teilzeichenkette mit den zu findenden Zeichen enthält.

Der Rückgabewert der Funktion ist der Index (ab 0 zählend) des ersten Auftretens eines Zeichens aus der Teilzeichenkette in der zu prüfenden Zeichenkette. Zu beachten ist, daß der Index ab 0 gezählt wird (das bedeutet, daß das erste Zeichen in der Zeichenkette den Index 0 hat).

Falls kein Zeichen aus der Teilzeichenkette in der zu überprüfenden Zeichenkette enthalten ist, wird der Wert -1 zurückgegeben.

Beispiel:

(1)

Str1="111 222 333 444"

I1=StrFindOneOf(Str1 "345")

; Return-Wert in I1: 8

(2)

Str1="Vorratsbehaelter zu 89 Prozent gefuellt"

Str2="1234567890"

I1=StrFindOneOf(Str1 Str2)

; Return-Wert in I1: 20

Siehe auch: StrFind


StrFormat

Strn = StrFormat(Strx Strf [param1] [param2] [param3] ... [paramn] )

Bedingte Formatierung einer Zeichenkette

Mit Hilfe dieser Funktion wird eine Zeichenkette formatiert, d.h. aus einer Vorlage-Zeichenkette mit unterschiedlichen Formatierungsanweisungen sowie verschiedenen weiteren zu übergebenden Parametern wird eine resultierende Zeichenkette erstellt.

Parameter des Befehls:

Strn | Eine Str-Variable (String-Variable, Zeichenkettenvariable), welche das Ergebnis der Formatierung durch eine Zuweisung erhält.
Strx | Eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index x, in welche das Ergebnis der Formatierungsanweisung übertragen wird.
Strf | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index f, welche die Teilzeichenkette mit den Formatierungsanweisungen enthält.
param1, param2, ... paramn | Weitere Parameter, deren Typ sich nach den in der Formatierungsanweisung enthaltenen Typspezifikationen richtet.

Zuordnung der Argumente zu den Typspezifikationen in der Formatierungsanweisung

Wie zu sehen ist, wird der ersten Typspezifikation das erste Argument, der zweiten Typspezifikation das zweite Argument usw. zugeordnet. Es ist unbedingt darauf zu achten, das der Typ des Argument zu dem über die Typspezifikation festgelegten Typ passt.

Platzhalter für die verschiedenen Datentypen

Integer, ganzzahlige Werte | %d, %ld | Formatierung als ganzzahliger Wert ohne Nachkommastellen
Character, Zeichen | %c | Formatierung als einzelnes Zeichen
Real-Werte, Gleitkommawerte | %f | Formatierung als Gleitkommawert, 6 Nachkommastellen
 | %.nf %1.nf | mit Angabe der Anzahl Nachkommastellen, n=1,2,3,4,...
Real-Werte, e-Format | %e | Standardformatierung mit 6 Nachkommastellen, z.B. 1.000000e+000
 | %.ne, %1.ne | Formatierung mit Angabe der Nachkommastellen, n=1,2,3,4,...
Real-Werte, E-Format | %E | Standardformatierung mit 6 Nachkommastellen, z.B. 1.000000E+000
 | %.nE, %1.nE | Formatierung mit Angabe der Nachkommastellen, n=1,2,3,4,...
String, Zeichenkette | %s |
Hexadezimal, Kleinschreibung | %x | a...f werden in Kleinschreibung angezeigt
Hexadezimal, Großschreibung | %X | A...F werden in Großschreibung angezeigt
 | %0nx, %0nX | Anzahl der Stellen, Nullen werden vorangestellt, n=1,2,3,4,...
Darstellung als Oktalwert | %o | Oktalwerte nur in Kleinschreibung, %O ist undefiniert
 | %0no | Anzahl der Stellen, Nullen werden vorangestellt, n=1,2,3,4,...

Beispiel:

R1=1

R2=2

R3=123.45

R4=123.456

R5=0.000123456

I1=11

I2=22

I3=123456

Str1=StrFormat(Str2 "R-Vars: %.1f %.2f %.6f %f" R1 R2 R3 R4)

; Ausgabe: R-Vars: 1.0 2.00 123.450000 123.456000

Str1=StrFormat(Str2 "R-Vars: %.1f %.2f %.6f %1.9f %1.9lf %f" R5 R5 R5 R5 R5 R5)

; Ausgabe: R-Vars: 0.0 0.00 0.000123 0.000123000 0.000123000 0.000123

Str1=StrFormat(Str2 "R-Vars: %1.1f %04.2f %06.6f " R1 R2 R3)

; Ausgabe: R-Vars: 1.0 2.00 123.450000

Str1=StrFormat(Str2 "R-Vars: %e %6.2e %.6e " R1 R4 R4)

; Ausgabe: R-Vars: 1.000000e+000 1.23e+002 1.234560e+002

Str1=StrFormat(Str2 "R-Vars: %1.1e %04.2e %06.6e " R1 R2 R3)

; Ausgabe: R-Vars: 1.0e+000 2.00e+000 1.234500e+002

Str1=StrFormat(Str2 "R-Vars: %e %1.1e %04.2e %.9e " R5 R5 R5 R5)

; Ausgabe: R-Vars: 1.230000e-004 1.2e-004 1.23e-004 1.230000000e-004

Str1=StrFormat(Str2 "I-Vars decimal: %d %ld" I1 I1 )

; Ausgabe: I-Vars decimal: 11 11

Str1=StrFormat(Str2 "Character: %c %c" I1 I2 )

; Ausgabe: Character: 1122ô l

Str1=StrFormat(Str2 "I-Vars Hex: %x %X %02x %02X" I1 I2 I1 I2 )

; Ausgabe: I-Vars Hex: b 16 0b 16

Str1=StrFormat(Str2 "Oktal: %o %04o" I1 I2)

; Ausgabe: Oktal: 13 0026

Siehe auch: StrScan


StrGetAt

In = StrGetAt(Strn Ix)

Ein Zeichen aus einer Zeichenkette extrahieren

Diese Funktion extrahiert ein einzelnes Zeichen aus einer Zeichenkette.

Parameter des Befehls:

In | Eine I-Variable (Integer-Variable) mit dem Index n, welche das Ergebnis der Funktion aufnimmt.
Strn | Eine Zeichenkette oder Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index n, aus der das Zeichen mit dem Index Ix extrahiert werden soll.
Ix | Eine I-Variable (Integer-Variable) mit dem Index x, welche den Index des aus der Zeichenkette Strn zu extrahierenden Zeichens enthält. Der Index wird ab 0 gezählt, d.h. der Index des ersten Zeichens in der Zeichenkette Strn ist 0.

Nach Ausführung des Befehls enthält die aufnehmende Integervariable den ASCII-Wert des Zeichens, welches extrahiert wurde. Falls der Index des zu extrahierenden Zeichens größer als oder gleich der Länge der Zeichenkette ist, wird als Rückgabewert -1 zurückgegeben.

Die Zählweise der Indizes beginnt ab 0, d.h. das erste Zeichen in der Zeichenkette hat den Index 0.

Beispiel:

Str1="ABCDEF"

I2=0

I2=StrGetAt(Str1 3)

;Rueckgabewert ist dezimal 68,

;das entspricht dem ASCII-Zeichen 'D'

Siehe auch: StrSetAt


StrGetLength

In=StrGetLength(Strn)

Abfrage der Länge einer Zeichenkette

Diese Funktion dient zur Ermittlung der Anzahl der Zeichen in einer Zeichenkette.

Parameter des Befehls:

In | Eine I-Variable (Integer-Variable) mit dem Index n, welche das Ergebnis der Funktion aufnimmt.
Strn | Eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index n, deren Länge, d.h. die Anzahl der Zeichen in der Zeichenkette, ermittelt werden soll.

Nach Ausführung des Befehls enthält die aufnehmende Integervariable die Anzahl der Zeichen in der Zeichenkette.

Beispiel:

Str1="ABCDEF"

I2=0

I2 = StrGetLength(Str1)

;Rueckgabewert ist 6

I2 = StrGetLength("ABCDEF")

;Rueckgabewert ist ebenfalls 6

I2 = StrGetLength("")

;Rueckgabewert ist 0


StrInsert

In=StrInsert(Strn Ix Strx)

Ein einzelnes Zeichen oder eine Teilzeichenkette in eine Zeichenkette einfügen

Mit diesem Befehl wird ein Zeichen oder eine Zeichenkette an einer beliebigen Position in eine vorhandene Zeichenkette eingefügt.

Parameter des Befehls:

In | Eine I-Variable (Integer-Variable) mit dem Index n, welche das zurückgelieferte Ergebnis der Funktion aufnimmt.
Strn | Eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index n, in welche das Zeichen oder die Zeichenkette an der Position Ix eingefügt werden soll.
Ix | Eine I-Variable (Integer-Variable) mit dem Index x, welche den Index des Zeichens in der Zeichenkette Strn enthält, vor dem die Zeichenfolge Strx eingefügt werden soll.
Strx | Ein Zeichen oder eine Zeichenkette, die in der Zeichenkette Strn vor dem Zeichen mit dem Index Ix eingefügt werden soll.

Als Rückgabewert wird die neue Anzahl der Zeichen in der Zeichenkette in die angegebene I-Variable übertragen.

Zu beachten ist, daß alle Indizes jeweils ab 0 gezählt werden.

Beispiel:

Str1="ABCDEF"

I2=0

Str2="x"

I1=StrInsert(Str1 3 Str2)

;I1 enthaelt jetzt den Wert 7

;Die Zeichenkette Str1 enthaelt jetzt "ABCxDEF"

;"x" wurde vor dem Zeichen mit dem

;Index 3, "D", eingefuegt

I1=StrInsert(Str1 4 "yz")

;I1 enthaelt jetzt den Wert 9

;Die Zeichenkette Str1 enthaelt jetzt "ABCxyzDEF"

;"yz" wurde vor dem Zeichen mit dem

;Index 4, wiederum "D", eingefuegt

Siehe auch: StrDelete


StrIsEmpty

In=StrIsEmpty(Str1)

Prüfen ob eine Zeichenkette leer ist

Der Befehl dient zur Feststellung, ob eine Zeichenkette leer ist, d.h. es sind keine Zeichen in der Zeichenkette vorhanden.

Parameter des Befehls:

In | Eine I-Variable (Integer-Variable) mit dem Index n, welche das zurückgelieferte Ergebnis der Funktion aufnimmt.
Strn | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index n, für die ermittelt werden soll, ob sie leer ist oder nicht.

Wenn die Zeichenkette leer ist, gibt die Funktion den Wert 1 zurück. Wenn die Zeichenkette mindestens ein Zeichen enthält, ist der Rückgabewert 0.

Beispiel:

Str1="ABCDEF"

Str2=""

I1=-1

I1=StrIsEmpty(Str1)

;I1 enthaelt den Rueckgabewert 0

I1=StrIsEmpty("abc")

;I1 enthaelt den Rueckgabewert 0

I1=StrIsEmpty(Str2)

;I1 enthaelt den Rueckgabewert 1

I1=StrIsEmpty("")

;I1 enthaelt den Rueckgabewert 1


StrLeft

Strx=StrLeft(Strn In)

Extrahieren aller Zeichen ab Beginn einer Zeichenkette bis Index

Diese Funktion wird verwendet um den linken Teil einer Zeichenkette bis zu und ausschließlich des Zeichens mit dem übergebenen Index zu extrahieren. Anders ausgedrückt, wird die mit dem Parameter In angegebene Anzahl Zeichen ab Beginn der Zeichenkette Strx in die Ergebniszeichenkette Strn übertragen.

Parameter des Befehls:

Strx | Eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index x, in welche das Ergebnis der Funktion übertragen wird.
Strn | Die Zeichenkette oder eine String-Variable (Zeichenkettenvariable) mit dem Index n, aus welcher ein linker Anteil extrahiert werden soll.
In | Ein Integer-Wert oder eine I-Variable (Integer-Variable) mit dem Index n, welche den Index des Zeichens in der Zeichenkette Strn darstellt, bis zu dem die Teilzeichenkette übertragen werden soll. Das Zeichen mit dem angegebenen Index wird nicht mehr übertragen.

Beispiel:

Str1="Hello World ..."

I1=5

Str2=StrLeft(Str1 I1)

;Rueckgabewert: Kopie der String-Variable Str1

;bis Zeichen mit Index (5) in Integer-Variable I1

;Inhalt von Str2 nach Aufruf: "Hello"

Str2=StrLeft("1234567890" 3)

;Inhalt von Str2 nach Aufruf: "123"

Siehe auch: StrMid, StrMiddlePart, StrRight


StrMakeLower

[Strn=]StrMakeLower(Strx)

Den Inhalt einer Zeichenkette in Kleinschreibung konvertieren

Diese Funktion konvertiert den Inhalt einer Zeichenkette in eine Zeichenkette in Kleinschreibung. Das Ergebnis der Konvertierung kann außerdem als Rückgabewert einer weiteren String-Variablen zugewiesen werden.

Parameter des Befehls:

Strn | Eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index n, an welche das Ergebnis der Konvertierung zugewiesen wird.
Strx | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index x, deren Inhalt in Kleinschreibung konvertiert werden soll.

Beispiel:

Str1="ABCXYZ"

StrMakeLower(Str1)

;Str1 enthaelt nun die Zeichenfolge "abcxyz"

Str2=StrMakeLower(Str1)

;Str1 enthaelt nun die Zeichenfolge "abcxyz"

;Str2 enthaelt aufgrund der Zuweisung die

;gleiche Zeichenfolge

Siehe auch: StrMakeUpper, StrMakeReverse


StrMakeReverse

[Strn=]StrMakeReverse(Strx)

Inhalt einer Zeichenkette umkehren

Diese Funktion kehrt die Reihenfolge der Zeichen einer Zeichenkette um.

Parameter des Befehls:

Strn | Eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index n, an welche das Ergebnis der Konvertierung zugewiesen wird.
Strx | Eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index x, deren Inhalt in eine Zeichenkette mit umgekehrter Zeichenreihenfolge konvertiert werden soll.

Beispiel:

Str1="ABC DEF XYZ"

Str2=""

StrMakeReverse(Str1)

;Str1 enthaelt nun die Zeichen "ZYX FED CBA"

Str2=StrMakeReverse(Str1)

;Str1 enthaelt nun wieder die Zeichen "ABC DEF XYZ"

;Str2 hat aufgrund der Zuweisung den gleichen Inhalt

Siehe auch: StrMakeLower, StrMakeUpper


StrMakeUpper

[Strn=]StrMakeUpper(Strx)

Den Inhalt einer Zeichenkette in Großschreibung konvertieren

Diese Funktion konvertiert den Inhalt einer Zeichenkette in eine Zeichenkette in Großschreibung. Das Ergebnis der Konvertierung kann außerdem als Rückgabewert einer weiteren String-Variablen zugewiesen werden.

Parameter des Befehls:

Strn | Eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index n, an welche das Ergebnis der Konvertierung zugewiesen wird.
Strx | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index x, deren Inhalt in Großschreibung konvertiert werden soll.

Beispiel:

Str1="abcxyz"

StrMakeUpper(Str1)

;Str1 enthaelt nun die Zeichenfolge "ABCXYZ"

Str1="abcxyz"

Str2=StrMakeUpper(Str1)

;Str1 enthaelt nun die Zeichenfolge "ABCXYZ"

;Str2 enthaelt aufgrund der Zuweisung die

;gleiche Zeichenfolge

Siehe auch: StrMakeLower, StrMakeReverse


StrMid

Strx=StrMid(Strn [index]|[Ix])

Extrahieren einer Teilzeichenkette aus einer Zeichenkette ab Index

Diese Funktion wird verwendet um den rechten Teil einer Zeichenkette ab dem und einschließlich des Zeichens mit dem übergebenen Index zu extrahieren.

Parameter des Befehls:

Strx | Eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index x, in welche das Ergebnis der Funktion übertragen wird.
Strn | Die Zeichenkette oder eine String-Variable (Zeichenkettenvariable) mit dem Index n, aus welcher der rechte Anteil ab übergebenem Index extrahiert werden soll.
index Ix | Ein Integer-Wert oder eine I-Variable (Integer-Variable) mit dem Index x, welche den Index des Zeichens in der Zeichenkette Strn darstellt, ab dem die Teilzeichenkette übertragen werden soll. Das Zeichen mit dem angegebenen Index wird ebenfalls übertragen.

Die Zählweise der Indizes beginnt ab 0, d.h. das erste Zeichen in der Zeichenkette hat den Index 0.

Beispiel:

Str1="Hello World ..."

I1=6

Str2=StrMid(Str1 I1)

;Rueckgabewert: Kopie der String-Variable Str1

;ab dem Zeichen mit Index (5) in Integer-Variable I1

;Inhalt von Str2 nach Aufruf: "World ..."

Str2=StrMid("1234567890" 3)

;Inhalt von Str2 nach Aufruf: "4567890"

Siehe auch: StrMiddlePart, StrLeft, StrRight


StrMiddlePart

Strx=StrMiddlePart(Strn [index]|[Ix] [anzahl]|[In])

Extrahieren von n Zeichen einer Zeichenkette ab Index

Diese Funktion wird verwendet um eine festgelegte Anzahl Zeichen aus einer Zeichenkette (den "mittleren Teil") ab dem und einschließlich des Zeichens mit dem übergebenen Index zu extrahieren.

Parameter des Befehls:

Strx | Eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index x, in welche das Ergebnis der Funktion übertragen wird.
Strn | Die Zeichenkette oder eine String-Variable (Zeichenkettenvariable) mit dem Index n, aus welcher der rechte Anteil ab übergebenem Index extrahiert werden soll.
index Ix | Ein Integer-Wert oder eine I-Variable (Integer-Variable) mit dem Index x, welche den Index des Zeichens in der Zeichenkette Strn darstellt, ab dem die Teilzeichenkette übertragen werden soll. Das Zeichen mit dem angegebenen Index wird ebenfalls übertragen.
anzahl In | Ein Integer-Wert oder eine I-Variable (Integer-Variable) mit dem Index n, welche die Anzahl der Zeichen festlegt, die einschließlich des indizierten Zeichens kopiert werden sollen.

Die Zählweise der Indizes beginnt ab 0, d.h. das erste Zeichen in der Zeichenkette hat den Index 0.

Beispiel:

Str1="Hello World ..."

I1=6

Str2=StrMiddlePart(Str1 I1 5)

;Rueckgabewert: Kopie der String-Variable Str1

;ab dem Zeichen mit Index (6) in Integer-Variable

;I1 und der Angabe 5 fuer die Anzahl der zu

;kopierenden Zeichen

;Inhalt von Str2 nach Aufruf: "World"

Str2=StrMiddlePart("1234567890" 5 1)

;Inhalt von Str2 nach Aufruf: "6"

Siehe auch: StrLeft, StrRight, StrMid


StrRemove

In=StrRemove(Strn ichar)

Entfernen eines Zeichens aus einer Zeichenkette

Mit Hilfe dieser Funktion kann ein spezifisches Zeichen vollständig aus einer Zeichenkette entfernt werden.

Parameter des Befehls:

In | Eine I-Variable (Integer-Variable) mit dem Index n, in welche der Rückgabewert der Funktion übertragen wird.
Strn | Eine String-Variable (Zeichenkettenvariable) mit dem Index n, aus welcher ein bestimmtes Zeichen entfernt werden soll.
ichar | Ein Zeichen oder der Integer-Wert (ASCII Code) eines Zeichens, welches aus der Zeichenkette Strn entfernt werden soll.

Die Funktion StrRemove beachtet bei der Entfernung der Zeichen die Groß- und Kleinschreibung, d.h. wenn alle Zeichen mit gleicher Bedeutung (z.B. 'A' und 'a') entfernt werden sollen, muß die Funktion insgesamt zweimal aufgerufen werden.

Der Rückgabewert der Funktion ist die Anzahl der Zeichen, die insgesamt aus der Zeichenkette entfernt wurden.

Beispiel:

Str1="ABCabcABCabcABCabc"

I1 = StrRemove(Str1 'A')

;Nach diesem Aufruf enthaelt Str1

;die Zeichenkette "BCabcBCabcBCabc"

;I1 hat den Wert 3, d.h. es wurden

;drei Zeichen 'A' entfernt

I1 = StrRemove(Str1 66)

;66 ist der ASCII-Code von 'B'

;Nach diesem Aufruf enthaelt Str1

;die Zeichenkette "CabcCabcCabc"

;I1 hat wieder den Wert 3, d.h. es

;wurden drei Zeichen 'B' entfernt


StrReplace

In=StrReplace(Strn Strx Stry)

Ersetzen eines Zeichens oder einer Teilzeichenkette in einer Zeichenkette

Mit Hilfe dieses Befehls werden einzelne Zeichen oder auch Teilzeichenketten durch eine andere Zeichenfolge ersetzt.

Parameter des Befehls:

In | Eine I-Variable (Integer-Variable) mit dem Index n, in welche der Rückgabewert der Funktion übertragen wird.
Strn | Eine String-Variable (Zeichenkettenvariable) mit dem Index n, in der ein bestimmtes Zeichen bzw. eine spezifische Teilzeichenfolge ersetzt werden soll.
Strx | Eine Zeichenfolge oder eine String-Variable (Zeichenkettenvariable) mit dem Index x, welche die spezifische Teilzeichenfolge enthält, die ersetzt werden soll.
Stry | Eine Zeichenfolge oder eine String-Variable (Zeichenkettenvariable) mit dem Index y, welche die Teilzeichenfolge enthält, die eingesetzt werden soll.

Der Rückgabewert der Funktion entspricht der Anzahl der Ersetzungen, d.h. wieviel mal ein Vorkommen der Zeichenfolge Strx durch die Zeichenfolge Stry ersetzt wurde.

Beispiel:

Str1="ABC DEF GHI JKL"

Str2="ABC"

Str3="123"

I1=StrReplace(Str1 "DEF" "uvw")

;Str1 hat jetzt den Inhalt "ABC uvw GHI JKL"

I1=StrReplace(Str1 "GHI" "xyz")

;Str1 hat jetzt den Inhalt "ABC uvw xyz JKL"

I1=StrReplace(Str1 Str2 Str3)

;Str1 hat jetzt den Inhalt "123 uvw xyz JKL"


StrReverseFind

In=StrReverseFind(Strn Ix)

Suchen eines Zeichens in einer Zeichenkette, inverse Suchreihenfolge

Diese Funktion sucht nach dem ersten Auftreten eines Zeichens in einer Zeichenkette. Die Suchreihenfolge ist beginnend ab Ende bis zum Beginn der Zeichenkette, also eine umgekehrte Suchreihenfolge.

Parameter des Befehls:

In | Eine I-Variable (Integer-Variable) mit dem Index n, welche das Ergebnis der Suche aufnimmt.
Strn | Eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index n, die nach dem ersten Auftreten der Teilzeichenkette durchsucht werden soll.
Ix | Ein Zeichen (Integerwert) oder eine I-Variable (Integer-Variable) mit dem Index x, welche das zu suchende Zeichen beinhaltet.

Der Rückgabewert der Funktion ist der Index (ab 0 zählend) des letzten Auftretens des angegebenen Zeichens in der zu prüfenden Zeichenkette. Zu beachten ist, daß der Index ab 0 gezählt wird (das bedeutet, daß das erste Zeichen in der Zeichenkette den Index 0 hat).

Falls das Zeichen nicht in der zu überprüfenden Zeichenkette enthalten ist, wird der Wert -1 zurückgegeben.

Beispiel:

(1)

Str1="ABC DEF GHI JKL"

I1=StrReverseFind(Str1 'E')

;Return-Wert in I1: 5

;(Zaehlweise: 0 ab Zeichenkettenbeginn)

(2)

;Das zu suchende Zeichen wird einer

;Variablen zugewiesen

I2='J'

I1=StrReverseFind(Str1 I2)

;Return-Wert in I1: 12

;(Zaehlweise: 0 ab Zeichenkettenbeginn)

Siehe auch: StrFind, StrFindOneOf


StrRight

Strx=StrRight(Strn In)

Extrahieren einer Anzahl Zeichen ab Ende einer Zeichenkette

Dieser Befehl kopiert die angegebene Anzahl Zeichen ab Ende einer Zeichenkette in die empfangende Zeichenkettenvariable.

Parameter des Befehls:

Strx | Eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index x, in welche das Ergebnis der Funktion übertragen wird.
Strn | Die Zeichenkette oder eine String-Variable (Zeichenkettenvariable) mit dem Index n, aus welcher ein rechter Anteil (ab Ende der Zeichenkette) extrahiert werden soll.
In | Ein Integer-Wert oder eine I-Variable (Integer-Variable) mit dem Index n, welche die Anzahl der Zeichen ab dem Ende der Zeichenkette Strn enthält, die in die Teilzeichenkette Strx übertragen werden sollen.

Wenn die angegebene Anzahl zu kopierender Zeichen die Gesamtlänge der Zeichenkette überschreitet, wird die gesamte Quell-Zeichenkette in die Ziel-Zeichenkette kopiert.

Beispiel:

Str1="ABC DEF GHI JKL"

Str2=""

Str2=StrRight(Str1 3)

;Str2 enthaelt nun "JKL"

I2=7

Str2=StrRight(Str1 I2)

;Str2 enthaelt nun "GHI JKL"

Siehe auch: StrLeft, StrMid, StrMiddlePart


StrScan

In=StrScan(Strn Strf [param1] [param2] [param3] ... [paramn] )

Auswerten von Zeichen oder Teilzeichenketten einer Zeichenkette

Die Funktion StrScan wird verwendet, um in einer Zeichenkette in Textform vorliegende formatierte Daten zu lesen, mittels einer geeigneten Konvertierung in einen anderen Datentyp zu konvertieren und ggfs. einer Variablen des jeweiligen Datentyps zuzuweisen.

Parameter des Befehls:

Strn | Eine Str-Variable (String-Variable, Zeichenkettenvariable), welche das Ergebnis der Formatierung durch eine Zuweisung erhält.
Strx | Eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index x, in welche das Ergebnis der Formatierungsanweisung übertragen wird.
Strf | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index f, welche die Teilzeichenkette mit den Formatierungsanweisungen enthält.
param1, param2, ... paramn | Weitere Parameter, deren Typ sich nach den in der Formatierungsanweisung enthaltenen Typspezifikationen richtet.

Die Festlegung des jeweiligen Datentyps erfolgt durch entsprechende Typspezifierer im Parameter Strf, analog sollten nachfolgend die dazu passenden Variablen als Parameter in der richtigen Reihenfolge aufgelistet werden.

Die einzelnen Token (hier: Token = zusammengehörende Folge von Zeichen) sind im allgemeinen durch sogenannte Whitespaces getrennt. Whitespaces sind Leerzeichen oder Tabulatorzeichen.

Zuordnung der Argumente zu den Typspezifikationen

Beispiel für eine empfangene und auszuwertende Zeichenkette:

"Received: 0x2FA49B 27.344 524.002 -81.334 1775"

Der Befehl für die Auswertung der Zeichenkette würde also so aussehen:

I1=StrScan(Str1 "%s %X %f %f %f %ld" Str11 I11 R11 R12 R13 I12)

Wie zu sehen ist, wird der ersten Typspezifikation das erste Argument nach der Formatanweisung, der zweiten Typspezifikation das zweite Argument nach der Formatanweisung usw. zugeordnet. Es ist unbedingt darauf zu achten, das der Typ des Argument zu dem über die Typspezifikation festgelegten Typ passt.

Platzhalter für die verschiedenen Datentypen (Typspezifizierer)

Integer, ganzzahlige Werte | %d, %ld | Lesen als ganzzahligen Wert ohne Nachkommastellen
Real-Werte, Gleitkommawerte | %f | Lesen als Gleitkommawert
String, Zeichenkette | %s | Lesen als Zeichenkette
Hexadezimal | %x, %X | Lesen als Hexadezimalwert
Oktalwert | %o | Lesen als Oktalwert

Lesen von Gleitkommawerten in der wissenschaftlichen Schreibweise

Gleitkommazahlen, die in der wissenschaftlichen Schreibweise mit Exponent und Mantisse vorliegen, können mit dem Typspezifizierer "%f" bzw. "%lf" gelesen werden.

Lesen von Hexadezimalwerten

Zeichenketten, die einen Hexadezimalwert darstellen, können folgende Schreibweisen in der zu lesenden Zeichenkette aufweisen: "0xABCDE" mit führenden Spezifizierern "0x" oder als reine Hexadezimalzahl "ABCDE". Falls die Schreibweise "0xABCDE" verwendet wird, kann entweder der Typspezifizierer "0x%X" (bzw. auch "0x%x") oder der Typspezifizierer "%X" (bzw. auch "%x") verwendet werden. Falls die Schreibweise "ABCDE" vorliegt, ist nur der Typspezifizierer "%X" (bzw. auch "%x") zulässig.

Lesen von Hexadezimalwerten und Zuweisung an eine P-Variable

Ein in hexadezimaler Schreibweise vorliegender Wert kann eine Breite von 32 Bit haben (z.B. der Wert "0x12345678"), das Scannen und Lesen dieser Zeichenkette erfolgt fehlerfrei. Wenn das Ergebnis einer P-Variable zugewiesen wird, erfolgt bei dieser Zuweisung jedoch automatisch eine Begrenzung des Wertebereichs auf (0...255), das entspricht einer VerUNDung des gelesenen Wertes mit 0xFF. Dies geschieht aufgrund des eingeschränkten Wertebereiches von P-Variablen, die nur Werte von 0 ... 255 annehmen können.

Lesen von Hexadezimalwerten und Zuweisung an eine I-Variable

Ein in hexadezimaler Schreibweise vorliegender Wert kann eine größere Breite als 32 Bit haben (z.B. der Wert "0x123456789"), das Scannen und Lesen dieser Zeichenkette erfolgt fehlerfrei. Wenn das Ergebnis einer I-Variable (Integer-Variable) zugewiesen wird, erfolgt bei dieser Zuweisung jedoch automatisch eine Begrenzung des Wertebereichs auf (-2147483648...2147483647), das entspricht einer VerUNDung des gelesenen Wertes mit 0xFFFFFFFF. Dies geschieht aufgrund des eingeschränkten Wertebereiches von I-Variablen, die nur Werte von -2147483648...2147483647 annehmen können.

Lesen von ganzzahligen Werten und Zuweisung an eine R-Variable

Falls eine Zeichenkette Felder mit ganzzahligen Werten enthält, können diese entweder als Integerwert oder als Gleitkommawert gelesen werden. Falls ein ganzzahliger Wert als Gleitkommawert gelesen werden soll, genügt es, als Typspezifizierer für das entsprechende Feld "%f" bzw. "%lf" anzugeben und als korrespondierenden Parameter eine R-Variable (Real-Variable) anzugeben.

Beispiele:

Str1="0x0F"

I1=-1

I2=0

P20=0

I1=StrScan(Str1 "0x%X" P20)

;I1 ist 1 (1 Wert uebertragen)

;P20 enthaelt den Wert 0x0F

Str1="0xFFFFFFFFF"

P20=0

I1=StrScan(Str1 "%x" P20)

;I1 ist 1 (1 Wert uebertragen)

;P20 enthaelt den Wert 0xFF

I2=0

I1=StrScan(Str1 "0x%X" I2)

;I1 ist 1 (1 Wert uebertragen)

;I2 enthaelt den Wert -1 (0xFFFFFFFF)

I2=0

I1=StrScan(Str1 "%x" I2)

;I1 ist 1 (1 Wert uebertragen)

;I2 enthaelt den Wert -1 (0xFFFFFFFF)

Str1="12.345e+001"

I1=StrScan(Str1 "%f" R1)

;I1 ist 1 (1 Wert uebertragen)

;R1 enthaelt den Wert 123.45 (12.345*10^1)

Str1="Received: 0x2FA49B 27.344 524.002 -81.334 1775"

I1=StrScan(Str1 "%s %X %f %f %f %ld" Str2 I2 R1 R2 R3 I3)

;I1 ist 6 (6 Werte uebertragen)

;Str2 enthaelt die Zeichenkette "Received:"

;I2 ist 3122331 (0x2FA49B)

;R1 enthaelt den Wert 27.344

;R2 enthaelt den Wert 524.002

;R3 enthaelt den Wert -81.334

Str1="111222.333 2 3"

I1=-1

R1=-1.0

R2=-2.0

R3=-3.0

I1=StrScan(Str1 "%lf %lf %lf" R1 R2 R3)

;I1 ist 3 (3 Werte uebertragen)

;R1 enthaelt den Wert 111222.333

;R2 enthaelt den Wert 2.0

;R3 enthaelt den Wert 3.0

Siehe auch: StrFormat


StrSetAt

Strx=StrSetAt(Strn In)

Ein Zeichen einer Zeichenkette an Indexposition ersetzen

Dieser Befehl ersetzt ein Zeichen an einer beliebigen Stelle in einer Zeichenkettenvariable durch ein anderes Zeichen.

Parameter des Befehls:

Strx | Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index x, welche eine Kopie des Ergebnisses der Operation zugewiesen bekommt.
Strn | Eine Zeichenkette oder Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index n, in der das Zeichen mit dem Index Ix ersetzt werden soll.
In | Eine Integerwert (numerisch oder Zeichen-Literal) oder eine I-Variable (Integer-Variable) mit dem Index n, welche das neue Zeichen für den Zeichenersatz enthält.

Die Zählweise der Indizes beginnt ab 0, d.h. das erste Zeichen in der Zeichenkette hat den Index 0.

Beispiel:

Str1="ABCabc"

StrSetAt(Str1 0 'X')

;Str1 enthaelt jetzt "XBCabc"

Str2=StrSetAt(Str1 5 'Z')

;Str1 enthaelt jetzt "XBCabZ"

;Str2 enthaelt ebenfalls "XBCabZ"

Siehe auch: StrGetAt


StrSpanExcluding

Strn=StrSpanExcluding(Strx Stry)

Extrahieren aller Zeichen einer Zeichenkette, die nicht in einem Zeichenvorrat enthalten sind

Mit Hilfe dieses Kommandos werden alle Zeichen einer Zeichenkette in eine Zeichenkettenvariable kopiert, die nicht in einem Zeichenvorrat enthalten sind. Beim ersten Auftreten eines Zeichens aus der Steuer-Zeichenkette wird der Kopiervorgang abgebrochen.

Parameter des Befehls:

Strn | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index n, in welche das Ergebnis des Kopiervorgangs übertragen wird.
Strx | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index x, aus welcher die Ergebniszeichenkette kopiert werden soll.
Stry | Die Steuer-Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index y, welche die Steuer-Zeichenmenge enthält, die den Kopiervorgang beendet, sobald eines dieser Zeichen in der Quell-Zeichenkette auftritt.

Beispiel:

Str1="ABCabc"

Str2=""

Str2=StrSpanExcluding(Str1 "xyz")

;Str2 ist "ABCabc", da in Str1 keins der

;Zeichen aus der Ausschlußmenge enthalten ist

Str2=StrSpanExcluding(Str1 "xyza")

;Str2 ist jetzt "ABC", der Kopiervorgang wird

;beim ersten Auftreten eines Zeichens aus

;der Ausschlußmenge ('a') abgebrochen

Str2=StrSpanExcluding(Str1 "a")

;liefert das gleiche Resultat: "ABC"

Str2=StrSpanExcluding(Str1 "B")

;Die Ergebnis-Zeichenkette ist jetzt "A"

Siehe auch: StrSpanIncluding


StrSpanIncluding

Strn=StrSpanIncluding(Strx Stry)

Extrahieren aller Zeichen einer Zeichenkette, die in einem Zeichenvorrat enthalten sind

Mit Hilfe dieses Kommandos können alle Zeichen aus einer Zeichenkette in eine Zeichenkettenvariable kopiert werden, die in einem Zeichenvorrat enthalten sind.

Parameter des Befehls:

Strn | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index n, in welche das Ergebnis des selektiven Kopierens übertragen wird.
Strx | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index x, aus welcher die Ergebniszeichenkette selektiv kopiert werden soll.
Stry | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index y, welche die Menge der Zeichen enthält, die beim selektiven kopieren berücksichtigt werden sollen.

Die Reihenfolge der Zeichen in der Steuer-Zeichenkette ist ohne Bedeutung für die Funktion, entscheidend ist das Vorhandensein des Zeichens. Solange ein Zeichen der Quell-Zeichenkette in der Steuer-Zeichenkette enthalten ist, wird der Kopiervorgang fortgesetzt.

Beispiel:

Str1="ABCabc"

Str2=""

Str2=StrSpanIncluding(Str1 "ABCabc")

;Str2 ist "ABCabc", da alle Zeichen in Str1

;in der Steuer-Zeichenmenge enthalten sind

Str2=StrSpanIncluding(Str1 "BAC")

;Str2 ist jetzt "ABC", der Kopiervorgang wird

;beim ersten Auftreten eines Zeichens in der

;Quell-Zeichenkette, das nicht in der Steuer-

;Zeichenkette enthalten ist ('a'), abgebrochen.

;Die Reihenfolge der Zeichen in der Steuer-

;Zeichenkette nicht von Bedeutung.

Str3=StrSpanIncluding(Str1 "BA")

;liefert das Resultat "AB"

Str2=StrSpanIncluding(Str1 "B")

;Die Ergebnis-Zeichenkette ist jetzt ""

;'A' kommt nicht in der Steuer-Zeichenkette vor

Siehe auch: StrSpanExcluding


StrTrimLeft

StrTrimLeft(Strn Strx)

Zeichenkette am Anfang trimmen

Diese Funktion entfernt aus einer Zeichenkette alle führenden Zeichen, die durch eine Zeichenmenge definiert wurden.

Parameter des Befehls:

Strn | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index n, deren Beginn von den angegebenen Zeichen bereinigt werden soll.
Strx | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index x, welche die Menge der Zeichen enthält, die vom Beginn der Zeichenkette Strn entfernt werden sollen.

Beispiel:

Str1="ABC ---DEF XYZ...."

StrTrimLeft(Str1 "ABC")

;Str1 enthaelt " ---DEF XYZ...."

StrTrimLeft(Str1 "ABC")

;Str1 bleibt unveraendert

StrTrimLeft(Str1 "-")

;Str1 bleibt unveraendert,

;erstes Zeichen ist " "

StrTrimLeft(Str1 " -")

;Str1 enthaelt "DEF XYZ...."

Str1="AAA ---DEF XYZ...."

StrTrimLeft(Str1 "A")

;Str1 enthaelt " ---DEF XYZ...."

Siehe auch: StrTrimRight


StrTrimRight

Zeichenkette am Ende trimmen

Diese Funktion entfernt aus einer Zeichenkette alle nachfolgenden Zeichen (die Zeichen am Ende der Zeichenkette), die durch eine Zeichenmenge definiert wurden.

Parameter des Befehls:

Strn | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index n, deren Ende von den angegebenen Zeichen bereinigt werden soll.
Strx | Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index x, welche die Menge der Zeichen enthält, die vom Ende der Zeichenkette Strn entfernt werden sollen.

Beispiel:

Str1="ABC ---DEF.... XYZ"

StrTrimRight(Str1 "ABC")

;Str1 enthaelt "ABC ---DEF.... "

StrTrimRight(Str1 "ABC")

;Str1 bleibt unveraendert

StrTrimRight(Str1 ".")

;Str1 bleibt unveraendert,

;letztes Zeichen ist " "

StrTrimRight(Str1 ". ")

;Str1 enthaelt "ABC ---DEF"

Str1="AAA ---DEF XYZ....ZZZ"

StrTrimRight(Str1 "Z")

;Str1 enthaelt "AAA ---DEF XYZ...."

Siehe auch: StrTrimLeft


SubR ... Return

%SubRnr ... Return

SubRnr

SubR_Rx

Deklaration und Aufruf eines Unterprogramms

Deklaration eines Unterprogramms bzw. Aufruf eines Unterprogramms.

Die Deklaration eines Unterprogramms mit der Nummer nr erfolgt mit dem vorangestellten Zeichen "%". Unterprogramme werden normalerweise vor dem Block des Hauptprogramms (gekennzeichnet durch die Schlüsselwörter ProgBegin und ProgEnd) deklariert. Der Aufruf des Unterprogramms erfolgt innerhalb des Hauptprogramms bzw. in einem weiteren Unterprogramm.

Wenn ein Unterprogramm in einem anderen Unterprogramm verwendet werden soll, so ist die Reihenfolge der Deklarationen zu beachten: Wenn das Unterprogramm SubRn im Unterprogramm SubRm aufgerufen wird, so ist beim Anlegen der Unterprogramme die Deklaration von Unterprogramm SubRn vor der Deklaration von Unterprogramm SubRm zwingend erforderlich.

Das Ende eines Unterprogramms wird mit dem Schlüsselwort "Return" bekanntgegeben.

Indizierter Aufruf eines Unterprogrammes

Normalerweise steht die Unterprogrammnummer unmittelbar hinter dem Schlüsselwort SubR. Zur Unterscheidung von direktem Unterprogrammaufruf und indiziertem Unterprogrammaufruf wird bei indiziertem Unterprogrammaufruf ein Unterstrich ("_") vor der R-Variablen, welche als Indexvariable dient, erwartet.

Beispiele:

(1)

;Deklaration des Unterprogramms 4

%SubR4

MoveRel Z-20.0

MoveRel Z20.0

Return

;Verwendung des Unterprogramms 4

;im Hauptprogramm

ProgBegin

MoveAbs x20.0 Y20.0

MoveAbs Z-20

; Aufruf des Unterprogramms 4

SubR4

MoveAbs x30.0

; Aufruf des Unterprogramms 4

SubR4

MoveAbs x40.0

; Aufruf des Unterprogramms 4

SubR4

ProgEnd

(2)

; Aufruf von Unterprogrammen

; mit Hilfe einer Indexvariablen

%SubR1

MessageBox INFO "Unterprogramm 1 wurde aufgerufen!"

Return

%SubR2

MessageBox INFO "Unterprogramm 2 wurde aufgerufen!"

Return

%SubR3

MessageBox INFO "Unterprogramm 3 wurde aufgerufen!"

Return

;Hauptprogramm

;Im Hauptprogramm werden innerhalb der For-Schleife

;nacheinander die Unterprogramme SubR1, SubR2 und

;SubR3 aufgerufen

ProgBegin

For R99=1,3,1

SubR_R99

EndFor

ProgEnd

(3)

;Mehrfache Schachtelung, dazu werden

;zwei Unterprogramme angelegt

;Deklaration des Unterprogramms 1

%SubR1

MoveRel Z-5.0

MoveRel Z5.0

Return

;Deklaration des Unterprogramms 2, welches

;Unterprogramm 1 verwendet

%SubR2

For R1=1,5,1

MoveRel X12.5

SubR1

Return

;Hauptprogramm

ProgBegin

MoveAbs x20.0 Y20.0

; Aufruf des Unterprogramms 2

SubR2

ProgEnd

(4)

;Uebersichtliches Anlegen von Unterprogrammen

;mit Hilfe des Befehls #define

#define SubR_Bohren SubR1

#define SubR_Bearbeitung SubR2

;Deklaration des Unterprogramms

;SubR_Bohren (SubR1)

%SubR_Bohren

MoveRel Z-5.0

MoveRel Z5.0

Return

;Deklaration des Unterprogramms

;SubR_Bearbeitung (SubR2)

%SubR_Bearbeitung

For R1=1,5,1

MoveRel X12.5

SubR_Bohren

Return

;Hauptprogramm

ProgBegin

MoveAbs x20.0 Y20.0

SubR_Bearbeitung

ProgEnd


Suction, Suction1

Suction(1) onoff

Absaugung 1 ein-/ausschalten

Ein- oder Ausschalten einer Absaugvorrichtung, eines Gebläses oder eines anderen vergleichbaren Gerätes. Es können maximal 2 Absaugvorrichtungen direkt über das Kommando "Suction" angesprochen werden, dazu dienen die Befehle "SUCTION" bzw. "SUCTION1" und "SUCTION2".

Die Signalisierung für den Betrieb der Absaugvorrichtung muß im Einstelldialog "Peripheriekomponenten" des Programms eingerichtet werden:

Einstellungen - Steuerung - Selektion: Ein-/Ausgabemodule - Schaltfläche: Erweiterte Einstellungen - Registerkarte: Peripherie

Verwendete Parameter:

ON Erste Absaugvorrichtung ein

OFF Erste Absaugvorrichtung aus

Beispiel:

SUCTION1 ON

SUCTION1 OFF

;SUCTION bewirkt das gleiche

;wie der Befehl SUCTION1

SUCTION ON


Suction2

Absaugung 2 ein-/ausschalten

Ein- oder Ausschalten einer Absaugvorrichtung, eines Gebläses oder eines anderen vergleichbaren Gerätes. Es können maximal 2 Absaugvorrichtungen direkt über das Kommando "Suction" angesprochen werden, dazu dienen die Befehle "SUCTION" bzw. "SUCTION1" und "SUCTION2".

Die Signalisierung für den Betrieb der Absaugvorrichtung muß im Einstelldialog "Peripheriekomponenten" des Programms eingerichtet werden:

Einstellungen - Steuerung - Selektion: Ein-/Ausgabemodule - Schaltfläche: Erweiterte Einstellungen - Registerkarte: Peripherie

Verwendete Parameter:

ON Zweite Absaugvorrichtung ein

OFF Zweite Absaugvorrichtung aus

Beispiel:

SUCTION2 ON

SUCTION2 OFF


Switch ...Case ... EndSwitch

Switch ...Case ... EndCase ... EndSwitch

Mehrfachverzweigung

Mit einer Switch-Anweisung kann eine Vielzahl von Auswahlen getroffen werden. Die Bedingung wird zuerst ausgewertet. Falls ihr Wert in einer der Case-Klauseln auftaucht, werden die entsprechenden Anweisungen ausgeführt. Falls keine der möglichen Bedingungen erfüllt ist, kann eine "Default"-Anweisung bearbeitet werden.

Beispiel:

P99=GetPort E1

Switch P99

Case 0x01: ;Portwert ist binaer 00000001

MOVEREL X10.0

EndCase

Case 0x02: ;Portwert ist binaer 00000010

MOVEREL X20.0

EndCase

Case 0x04: ;Portwert ist binaer 00000100

MOVEREL X30.0

EndCase

Default: ;Anderer Portwert

MOVEABS X0

EndCase

EndSwitch

Siehe auch: If ... Else ... Endif


T

T nr

Werkzeug einwechseln

Dieser Befehl dient zum Einwechseln eines neuen Werkzeugs mit der Werkzeugnummer nr. Der übergebene numerische Parameter ist eine Werkzeugnummer, die im Einrichtdialog des Werkzeugwechslers in der Werkzeugliste angelegt werden muß. Gültige Werkzeugnummern sind 1...128. Wenn der Befehl mit dem Parameter 0 verwendet wird, wird das aktuelle Werkzeug nur abgelegt und kein neues Werkzeug eingewechselt.

Im Einrichtdialog der Steuerung wird im Bereich "Werkzeugwechsler" eine Werkzeugliste konfiguriert, welche einer Werkzeugnummer folgende Parameter zuweist:

- den Werkzeughalter, der das gewünschte Werkzeug enthält

- den Ablageplatz im Werkzeughalter, welcher das gewünschte Werkzeug enthält

Diese Zuordnung muß getroffen werden, bevor der Befehl für den Werkzeugwechsel verwendet werden kann.

Beim Aufruf des Werkzeugwechselzyklus wird immer die Werkzeugnummer als Parameter übergeben.

Beispiel:

(Einwechseln von Werkzeug 4)

T 4


TAN

TAN(w)

Operator für die trigonometrische Funktion TANGENS

Operator für die trigonometrische Funktion TANGENS. Als Argument wird ein Wert w in Radiant erwartet. Der Definitionsbereich der Tangens-Funktion erstreckt sich von -Pi/2 bis Pi/2, vor und hinter diesem Intervall wiederholt sich die Funktion zyklisch.

Verlauf der Funktion tan(x)

Beispiel:

R13=TAN(R11/R12)

R14=TAN(Pi)

R15=TAN(10.5)

Umrechnung von Radiant in Grad:

winkel_in_rad * 180

winkel_in_grad = —————————————————

Pi

Umrechnung von Grad in Radiant :

winkel_in_grad * Pi

winkel_in_rad = —————————————————

180

Siehe auch: SIN, COS


TchCollet

TchCollet [device] function

Öffnen/Schließen der Werkzeug-Spannzange eines Werkzeugwechselsystems

Dieser Befehl dient dazu, einzelne Komponenten des Werkzeugwechsel-Systems aus dem CNC-Programm oder aus benutzerdefinierten Skripten heraus zu steuern.

Mit Hilfe des Befehls TchCollet kann die Spannzange der Frässpindel geöffnet bzw. geschlossen werden.

Hinweis: Diese Funktion ermöglicht den direkten Zugriff auf die Steuerung der Spannzange. Der Befehl darf auf keinen Fall ausgeführt werden während die Frässpindel in Betrieb ist.

Verwendete Parameter

device Angabe des Werkzeugwechselsystems, für welches der aktuelle Befehl ausgeführt werden soll. Insgesamt können zwei Werkzeugwechslereinheiten indiziert werden, die Parameter hierfür lauten TC1 für Wechslersystem 1 (Standard-Werkzeugwechsler) und TC2 für Wechslersystem 2 (Wechsler-Erweiterung).
Die Angabe dieses Parameters ist optional: Wenn weder TC1 noch TC2 angegeben werden, wird die gewünschte Operation für Werkzeugwechselsystem 1 durchgeführt.

function Angabe der gewünschten Operation. Gültige Parameter sind "Open" um die Spannzange zu öffnen sowie "Close" um die Spannzange zu schliessen. Alternativ können die Parameter "1" für "Open" bzw. "0" für "Close" verwendet werden.

Die Parameter können ohne Berücksichtigung von Groß-/Kleinschreibung angegeben werden.

Hinweis: Bei der Übersetzung der Quelldatei erfolgt keine Überprüfung auf Sinnhaftigkeit. Falls für einen oder alle Parameter ungültige Werte angegeben werden, wird während der Bearbeitung ein Laufzeitfehler erzeugt.

Beispiel:

...

;Spannzange der Frässpindel an Wechslersystem 1 öffnen

TchCollet tc1 open

;Sinnvolle Funktionen...

Delay 1000

;Spannzange der Frässpindel an Wechslersystem 1 wieder schließen

TchCollet TC1 CLOSE

...

Siehe auch: TchCover, TchSelectToolStore, TchSlideToolMagazine, TchGetStatus, TchReset, TchGetTool, TchMeasureTool, TchGetToolRefPos, TchGetSignal, TchSetSignal
LockToolChange


TchCover

TchCover [device] function

Öffnen/Schließen der Abdeckung des Werkzeugmagazins eines Werkzeugwechselsystems

Dieser Befehl dient dazu, einzelne Komponenten des Werkzeugwechsel-Systems aus dem CNC-Programm oder aus benutzerdefinierten Skripten heraus zu steuern.

Mit Hilfe des Befehls TchCover kann die Abdeckung / Abdeckhaube des Werkzeugmagazins geöffnet bzw. geschlossen werden.

Hinweis: Diese Funktion bietet direkten Zugriff auf die Steuerung des Werkzeugmagazins. Der Befehl sollte z.B. nicht in Skripten ausgeführt werden, während eine automatische Bearbeitung aktiv ist.

Syntax:

TchCover device function

Verwendete Parameter

device Angabe des Werkzeugwechselsystems, für welches der aktuelle Befehl ausgeführt werden soll. Insgesamt können zwei Werkzeugwechslereinheiten indiziert werden, die Parameter hierfür lauten TC1 für Wechslersystem 1 (Standard-Werkzeugwechsler) und TC2 für Wechslersystem 2 (Wechsler-Erweiterung).
Die Angabe dieses Parameters ist optional: Wenn weder TC1 noch TC2 angegeben werden, wird die gewünschte Operation für Werkzeugwechselsystem 1 durchgeführt.

function Angabe der gewünschten Operation. Gültige Parameter sind "Open" um die Abdeckhaube zu öffnen sowie "Close" um die Abdeckhaube zu schliessen. Alternativ können die Parameter "1" für "Open" bzw. "0" für "Close" verwendet werden.

Die Parameter können ohne Berücksichtigung von Groß-/Kleinschreibung angegeben werden.

Hinweis: Bei der Übersetzung der Quelldatei erfolgt keine Überprüfung auf Sinnhaftigkeit. Falls für einen oder alle Parameter ungültige Werte angegeben werden, wird während der Bearbeitung ein Laufzeitfehler erzeugt.

Beispiel:

...

;Abdeckhaube an Wechslersystem 1 öffnen

TchCover tc1 open

;Sinnvolle Funktionen...

Delay 1000

;Abdeckhaube an Wechslersystem 1 wieder schließen

TchCover TC1 CLOSE

...

Siehe auch: TchCollet, TchSelectToolStore, TchSlideToolMagazine, TchGetStatus, TchReset, TchGetTool, TchMeasureTool, TchGetToolRefPos, TchGetSignal, TchSetSignal
LockToolChange


TchGetSignal

In = TchGetSignal [device] operationcode [Im] [Rx]

Zugriff auf diverse Sensoren des Werkzeugwechselsystems

Show/Hide Hidden Text

Mit Hilfe der Befehle TchGetSignal und TchSetSignal kann auf die diversen Komponenten eines Werkzeugwechselsystems zugegriffen werden. Diese Komponenten können entweder Aktoren oder Sensoren sein, somit kann also entweder der Schaltzustand von Aktoren beeinflusst oder der aktuelle Eingangswert eines Sensors erfasst werden. Die übergebenen Werte für die jeweiligen Betriebszustände eines Aktors bzw. die jeweiligen Istwerte von Sensoren berücksichtigen dabei schon die im Setup des Werkzeugwechselsystems festgelegten Aktivpegel der jeweiligen Signale.

Der Befehl TchGetSignal dient zur Erfassung der aktuellen Zustände der Sensoren des Werkzeugwechselsystems.

Zugriff auf Sensoren des Werkzeugwechselsystems

Syntax:

In = TchGetSignal [device] operationcode [Im] [Rx]

Verwendete Parameter

In Eine Integervariable mit dem Index n, welche den Fehlercode der durchgeführten Aktion erhält. Der Fehlercode entspricht den Standard-Fehlercodes der Anwendung und kann, falls gewünscht, nach Erhalt mit Hilfe der Befehle SignalError oder NotifyError weiterverarbeitet werden.

device Angabe des Werkzeugwechselsystems, für welches der aktuelle Befehl ausgeführt werden soll. Insgesamt können zwei Werkzeugwechslereinheiten indiziert werden, die Parameter hierfür lauten TC1 für Wechslersystem 1 (Standard-Werkzeugwechsler) und TC2 für Wechslersystem 2 (Wechsler-Erweiterung).
Die Angabe dieses Parameters ist optional: Wenn weder TC1 noch TC2 angegeben werden, wird die gewünschte Operation für Werkzeugwechselsystem 1 durchgeführt.

Im Eine I-Variable (Integervariable) mit dem Index m, an welche der Rückgabewert der durchgeführten Aktion zugewiesen wird. Der Rückgabewert ist entweder 0 (das Signal ist inaktiv) oder 1 (das Signal ist aktiv).

Rx Eine R-Variable (Realvariable, Gleitkommavariable) mit dem Index x, an welche der Rückgabewert der durchgeführten Aktion zugewiesen wird. Der Rückgabewert ist entweder 0.0 (das Signal ist inaktiv) oder 1.0 (das Signal ist aktiv).

operationcode Angabe eines Codes, der die gewünschte Aktion festlegt. Gültige Parameter sind numerische ganzzahlige Werte, die als arithmetischer Ausdruck übergeben werden. Ein arithmetischer Ausdruck ist entweder ein numerischer hexadezimaler bzw. dezimaler Wert oder eine R-Variable oder I-Variable oder auch das Ergebnis einer Berechnung.
Nachfolgend eine Aufstellung der Codes für den Zugriff auf die Sensoren des Werkzeugwechselsystems. Die Codes werden in hexadezimaler Schreibweise dargestellt.
Der Rückgabewert wird in die übergebene Variable (eine I-Variable oder eine R-Variable) übertragen.

Operationscode

Funktion

0x1101

Messtaster

Abfragen des aktuellen Schaltzustandes des Messtasters, welcher für die Längenreferenzierung des Werkzeugs verwendet wird.

Rückgabewert = 0: Der Messtaster ist nicht betätigt.

Rückgabewert = 1: Der Messtaster ist betätigt.

0x1102

Abdeckhaube des Werkzeugmagazins geöffnet

Abfragen des Schaltzustandes des Sensors, welcher signalisiert daß die Abdeckhaube des Werkzeugmagazins vollständig geöffnet ist.

Rückgabewert = 0: Die Abdeckung ist nicht vollständig geöffnet.

Rückgabewert = 1: Die Abdeckung ist vollständig geöffnet.

0x1103

Abdeckhaube des Werkzeugmagazins geschlossen

Abfragen des Schaltzustandes des Sensors, welcher signalisiert daß die Abdeckhaube des Werkzeugmagazins vollständig geschlossen ist.

Rückgabewert = 0: Die Abdeckung ist nicht vollständig geschlossen.

Rückgabewert = 1: Die Abdeckung ist vollständig geschlossen.

0x1104

Werkzeug in Spannzange

Abfragen des Schaltzustandes des Sensors, welcher signalisiert daß sich ein Werkzeug in der Spannzange der Frässpindel befindet.

Rückgabewert = 0: Es ist kein Werkzeug in der Spannzange.

Rückgabewert = 1: Es ist ein Werkzeug in der Spannzange.

0x1105

Werkzeug in Spannzange (2)

Nur bei Systemen mit mehreren parallel verwendeten Frässpindeln!

Abfragen des Schaltzustandes des Sensors, welcher signalisiert daß sich ein Werkzeug in der Spannzange der Frässpindel 2 befindet.

Rückgabewert = 0: Es ist kein Werkzeug in der Spannzange von Spindel 2.

Rückgabewert = 1: Es ist ein Werkzeug in der Spannzange von Spindel 2.

0x1106

Werkzeug in Spannzange (3)

Nur bei Systemen mit mehreren parallel verwendeten Frässpindeln!

Abfragen des Schaltzustandes des Sensors, welcher signalisiert daß sich ein Werkzeug in der Spannzange der Frässpindel 3 befindet.

Rückgabewert = 0: Es ist kein Werkzeug in der Spannzange von Spindel 3.

Rückgabewert = 1: Es ist ein Werkzeug in der Spannzange von Spindel 3.

0x1107

Werkzeug in Spannzange (4)

Nur bei Systemen mit mehreren parallel verwendeten Frässpindeln!

Abfragen des Schaltzustandes des Sensors, welcher signalisiert daß sich ein Werkzeug in der Spannzange der Frässpindel 4 befindet.

Rückgabewert = 0: Es ist kein Werkzeug in der Spannzange von Spindel 4.

Rückgabewert = 1: Es ist ein Werkzeug in der Spannzange von Spindel 4.

0x1108

Spannzange geöffnet

Abfragen des Schaltzustandes des Sensors, welcher signalisiert daß die Spannzange der Frässpindel geöffnet ist.

Rückgabewert = 0: Die Spannzange der Frässpindel ist geschlossen.

Rückgabewert = 1: Die Spannzange der Frässpindel ist geöffnet.

0x1109

Spannzange geöffnet (Spindel 2)

Nur bei Systemen mit mehreren parallel verwendeten Frässpindeln!

Abfragen des Schaltzustandes des Sensors, welcher signalisiert daß die Spannzange der Frässpindel 2 geöffnet ist.

Rückgabewert = 0: Die Spannzange der Frässpindel 2 ist geschlossen.

Rückgabewert = 1: Die Spannzange der Frässpindel 2 ist geöffnet.

0x110A

Spannzange geöffnet (Spindel 3)

Nur bei Systemen mit mehreren parallel verwendeten Frässpindeln!

Abfragen des Schaltzustandes des Sensors, welcher signalisiert daß die Spannzange der Frässpindel 3 geöffnet ist.

Rückgabewert = 0: Die Spannzange der Frässpindel 3 ist geschlossen.

Rückgabewert = 1: Die Spannzange der Frässpindel 3 ist geöffnet.

0x110B

Spannzange geöffnet (Spindel 4)

Nur bei Systemen mit mehreren parallel verwendeten Frässpindeln!

Abfragen des Schaltzustandes des Sensors, welcher signalisiert daß die Spannzange der Frässpindel 4 geöffnet ist.

Rückgabewert = 0: Die Spannzange der Frässpindel 4 ist geschlossen.

Rückgabewert = 1: Die Spannzange der Frässpindel 4 ist geöffnet.

0x110C

Luftdruck OK

Abfragen des Drucksensors an der Luftdruck-Wartungseinheit. Der Drucksensor wird im allgemeinen auf den mindestens benötigten Druck eingestellt und liefert ein Schaltsignal, solange der Luftdruck ausreichend ist.

Rückgabewert = 0: Der Luftdruck ist zu gering.

Rückgabewert = 1: Der Luftdruck ist ausreichend.

0x110D

Spindelstillstand

Abfragen des Spindelstillstand-Signals der Frässpindel.

Rückgabewert = 0: Die Spindel dreht.

Rückgabewert = 1: Die Spindel ist im Stillstand.

0x1111

Halter des Werkzeugmagazins in Arbeitsposition

Abfragen des Sensors, welcher signalisiert daß sich das Werkzeugmagazin an der Arbeitsposition (die Position des Werkzeugmagazins, die beim Wechselzyklus benötigt wird) befindet.

Rückgabewert = 0: Das Werkzeugmagazin befindet sich nicht an der Arbeitsposition.

Rückgabewert = 1: Das Werkzeugmagazin befindet sich an der Arbeitsposition.

0x1112

Halter des Werkzeugmagazins in Ruheposition

Abfragen des Sensors, welcher signalisiert daß sich das Werkzeugmagazin an der Ruheposition (die Parkposition des Werkzeugmagazins, wenn kein Werkzeugwechsel ausgeführt wird) befindet.

Rückgabewert = 0: Das Werkzeugmagazin befindet sich nicht an der Ruheposition.

Rückgabewert = 1: Das Werkzeugmagazin befindet sich an der Ruheposition.

0x1113

Halter des Werkzeugmagazins in Arbeitsposition (2)

Nur bei schweren Ausführungen des Werkzeughalters!

Abfragen des Sensors, welcher signalisiert daß sich der zweite durch einen Hubzylinder bewegte Halter des Werkzeugmagazins an der Arbeitsposition (die Position des Werkzeugmagazins, die beim Wechselzyklus benötigt wird) befindet.

Rückgabewert = 0: Zylinder 2 befindet sich nicht an der Arbeitsposition.

Rückgabewert = 1: Zylinder 2 befindet sich an der Arbeitsposition.

0x1114

Halter des Werkzeugmagazins in Ruheposition (2)

Nur bei schweren Ausführungen des Werkzeughalters!

Abfragen des Sensors, welcher signalisiert daß sich der zweite durch einen Hubzylinder bewegte Halter des Werkzeugmagazins an der Ruheposition (die Parkposition des Werkzeugmagazins, wenn kein Werkzeugwechsel ausgeführt wird) befindet.

Rückgabewert = 0: Zylinder 2 befindet sich nicht an der Ruheposition.

Rückgabewert = 1: Zylinder 2 befindet sich an der Ruheposition.

0x1121

Haube der Absaugung der Frässpindel ist geöffnet

Abfrage des Sensors, welcher signalisiert daß die Abdeckhaube der Absaugung an der Frässpindel vollständig geöffnet ist.

Rückgabewert = 0: Die Abdeckhaube der Absaugung ist nicht vollständig geöffnet.

Rückgabewert = 1: Die Abdeckhaube der Absaugung ist vollständig geöffnet.

0x1122

Haube der Absaugung der Frässpindel ist geschlossen

Abfrage des Sensors, welcher signalisiert daß die Abdeckhaube der Absaugung an der Frässpindel vollständig geschlossen ist.

Rückgabewert = 0: Die Abdeckhaube der Absaugung ist nicht vollständig geschlossen.

Rückgabewert = 1: Die Abdeckhaube der Absaugung ist vollständig geschlossen.

0x1123

Haube der Absaugung der Frässpindel 2 ist geöffnet

Nur bei Systemen mit mehreren parallel verwendeten Frässpindeln!

Abfrage des Sensors, welcher signalisiert daß die Abdeckhaube der Absaugung an der Frässpindel 2 vollständig geöffnet ist.

Rückgabewert = 0: Die Haube der Absaugung an Spindel 2 ist nicht vollständig geöffnet.

Rückgabewert = 1: Die Haube der Absaugung an Spindel 2 ist vollständig geöffnet.

0x1124

Haube der Absaugung der Frässpindel 2 ist geschlossen

Nur bei Systemen mit mehreren parallel verwendeten Frässpindeln!

Abfrage des Sensors, welcher signalisiert daß die Abdeckhaube der Absaugung an der Frässpindel 2 vollständig geschlossen ist.

Rückgabewert = 0: Die Haube der Absaugung an Spindel 2 ist nicht vollständig geschlossen.

Rückgabewert = 1: Die Haube der Absaugung an Spindel 2 ist vollständig geschlossen.

0x1125

Haube der Absaugung der Frässpindel 3 ist geöffnet

Nur bei Systemen mit mehreren parallel verwendeten Frässpindeln!

Abfrage des Sensors, welcher signalisiert daß die Abdeckhaube der Absaugung an der Frässpindel 3 vollständig geöffnet ist.

Rückgabewert = 0: Die Haube der Absaugung an Spindel 3 ist nicht vollständig geöffnet.

Rückgabewert = 1: Die Haube der Absaugung an Spindel 3 ist vollständig geöffnet.

0x1126

Haube der Absaugung der Frässpindel 3 ist geschlossen

Nur bei Systemen mit mehreren parallel verwendeten Frässpindeln!

Abfrage des Sensors, welcher signalisiert daß die Abdeckhaube der Absaugung an der Frässpindel 3 vollständig geschlossen ist.

Rückgabewert = 0: Die Haube der Absaugung an Spindel 3 ist nicht vollständig geschlossen.

Rückgabewert = 1: Die Haube der Absaugung an Spindel 3 ist vollständig geschlossen.

0x1127

Haube der Absaugung der Frässpindel 4 ist geöffnet

Nur bei Systemen mit mehreren parallel verwendeten Frässpindeln!

Abfrage des Sensors, welcher signalisiert daß die Abdeckhaube der Absaugung an der Frässpindel 4 vollständig geöffnet ist.

Rückgabewert = 0: Die Haube der Absaugung an Spindel 4 ist nicht vollständig geöffnet.

Rückgabewert = 1: Die Haube der Absaugung an Spindel 4 ist vollständig geöffnet.

0x1128

Haube der Absaugung der Frässpindel 4 ist geschlossen

Nur bei Systemen mit mehreren parallel verwendeten Frässpindeln!

Abfrage des Sensors, welcher signalisiert daß die Abdeckhaube der Absaugung an der Frässpindel 4 vollständig geschlossen ist.

Rückgabewert = 0: Die Haube der Absaugung an Spindel 4 ist nicht vollständig geschlossen.

Rückgabewert = 1: Die Haube der Absaugung an Spindel 4 ist vollständig geschlossen.

0x1131

2. Haube der Absaugung der Frässpindel ist geöffnet

Nur bei anwendungsspezifischen Sonderformen der Abdeckhaube!

Abfrage des Sensors, welcher signalisiert daß die zweite Abdeckhaube der Absaugung an der Frässpindel vollständig geöffnet ist.

Rückgabewert = 0: Die zweite Abdeckhaube der Absaugung ist nicht vollständig geöffnet.

Rückgabewert = 1: Die zweite Abdeckhaube der Absaugung ist vollständig geöffnet.

0x1132

2. Haube der Absaugung der Frässpindel ist geschlossen

Nur bei anwendungsspezifischen Sonderformen der Abdeckhaube!

Abfrage des Sensors, welcher signalisiert daß die zweite Abdeckhaube der Absaugung an der Frässpindel vollständig geschlossen ist.

Rückgabewert = 0: Die zweite Abdeckhaube der Absaugung ist nicht vollständig geschlossen.

Rückgabewert = 1: Die zweite Abdeckhaube der Absaugung ist vollständig geschlossen.

0x1133

2. Haube der Absaugung der Frässpindel 2 ist geöffnet

Nur bei Systemen mit mehreren parallel verwendeten Frässpindeln und einer anwendungsspezifischen Sonderform der Abdeckhaube!

Abfrage des Sensors, welcher signalisiert daß die zweite Abdeckhaube der Absaugung an der Frässpindel 2 vollständig geöffnet ist.

Rückgabewert = 0: Die zweite Haube der Absaugung an Spindel 2 ist nicht vollständig geöffnet.

Rückgabewert = 1: Die zweite Haube der Absaugung an Spindel 2 ist vollständig geöffnet.

0x1134

2. Haube der Absaugung der Frässpindel 2 ist geschlossen

Nur bei Systemen mit mehreren parallel verwendeten Frässpindeln und einer anwendungsspezifischen Sonderform der Abdeckhaube!

Abfrage des Sensors, welcher signalisiert daß die zweite Abdeckhaube der Absaugung an der Frässpindel 2 vollständig geschlossen ist.

Rückgabewert = 0: Die zweite Haube der Absaugung an Spindel 2 ist nicht vollständig geschlossen.

Rückgabewert = 1: Die zweite Haube der Absaugung an Spindel 2 ist vollständig geschlossen.

0x1135

2. Haube der Absaugung der Frässpindel 3 ist geöffnet

Nur bei Systemen mit mehreren parallel verwendeten Frässpindeln und einer anwendungsspezifischen Sonderform der Abdeckhaube!

Abfrage des Sensors, welcher signalisiert daß die zweite Abdeckhaube der Absaugung an der Frässpindel 3 vollständig geöffnet ist.

Rückgabewert = 0: Die zweite Haube der Absaugung an Spindel 3 ist nicht vollständig geöffnet.

Rückgabewert = 1: Die zweite Haube der Absaugung an Spindel 3 ist vollständig geöffnet.

0x1136

2. Haube der Absaugung der Frässpindel 3 ist geschlossen

Nur bei Systemen mit mehreren parallel verwendeten Frässpindeln und einer anwendungsspezifischen Sonderform der Abdeckhaube!

Abfrage des Sensors, welcher signalisiert daß die zweite Abdeckhaube der Absaugung an der Frässpindel 3 vollständig geschlossen ist.

Rückgabewert = 0: Die zweite Haube der Absaugung an Spindel 3 ist nicht vollständig geschlossen.

Rückgabewert = 1: Die zweite Haube der Absaugung an Spindel 3 ist vollständig geschlossen.

0x1137

2. Haube der Absaugung der Frässpindel 4 ist geöffnet

Nur bei Systemen mit mehreren parallel verwendeten Frässpindeln und einer anwendungsspezifischen Sonderform der Abdeckhaube!

Abfrage des Sensors, welcher signalisiert daß die zweite Abdeckhaube der Absaugung an der Frässpindel 4 vollständig geöffnet ist.

Rückgabewert = 0: Die zweite Haube der Absaugung an Spindel 4 ist nicht vollständig geöffnet.

Rückgabewert = 1: Die zweite Haube der Absaugung an Spindel 4 ist vollständig geöffnet.

0x1138

2. Haube der Absaugung der Frässpindel 4 ist geschlossen

Nur bei Systemen mit mehreren parallel verwendeten Frässpindeln und einer anwendungsspezifischen Sonderform der Abdeckhaube!

Abfrage des Sensors, welcher signalisiert daß die zweite Abdeckhaube der Absaugung an der Frässpindel 4 vollständig geschlossen ist.

Rückgabewert = 0: Die zweite Haube der Absaugung an Spindel 4 ist nicht vollständig geschlossen.

Rückgabewert = 1: Die zweite Haube der Absaugung an Spindel 4 ist vollständig geschlossen.

0x1141

Werkzeughalter ist angehoben

Bei manchen Ausführungen eines Werkzeugwechselsystems ist es erforderlich, den Halter mit dem Werkzeug entweder vor oder nach dem Wechselzyklus aus einer Ruhelage in eine Arbeitsposition (angehoben) und wieder zurück (abgesenkt) zu bringen. Diese Funktion dient zur Abfrage des Sensors, welcher signalisiert daß sich der Werkzeughalters an seiner Arbeitsposition befindet.

Rückgabewert = 0: Der Werkzeughalter befindet sich nicht an der Arbeitsposition.

Rückgabewert = 1: Der Werkzeughalter befindet sich an der Arbeitsposition.

0x1142

Werkzeughalter ist abgesenkt

Bei manchen Ausführungen eines Werkzeugwechselsystems ist es erforderlich, den Halter mit dem Werkzeug entweder vor oder nach dem Wechselzyklus aus einer Ruhelage in eine Arbeitsposition (angehoben) und wieder zurück (abgesenkt) zu bringen. Diese Funktion dient zur Abfrage des Sensors, welcher signalisiert daß sich der Werkzeughalters in seiner Ruheposition befindet.

Rückgabewert = 0: Der Werkzeughalter befindet sich nicht in der Ruheposition.

Rückgabewert = 1: Der Werkzeughalter befindet sich in der Ruheposition.

0x1151

Pneumatikzylinder der Frässpindel 1 ist angehoben

Nur für Pneumatische Doppelhubwechsler bzw. Pneumatische Dreifachhubwechsler!

Eine Sonderbauform eines Wechslersystems ist eine Anordnung von mehreren, parallel zur Z-Achse montierten Frässpindeln, die mit Hilfe von Präzisions-Pneumatikzylindern in eine Arbeitslage gefahren werden können. Die jeweils in Arbeitslage (abgesenkte Position) befindliche Frässpindel wird für die Bearbeitung verwendet, die andere(n) Spindel(n) befindet sich / befinden sich in Ruhelage (angehobene Lage).

Diese Funktion dient zur Abfrage, ob sich die Frässpindel 1 in der Ruhelage (angehobene Position) befindet.

Rückgabewert = 0: Frässpindel 1 ist nicht angehoben (nicht in Ruheposition).

Rückgabewert = 1: Frässpindel 1 ist angehoben (in Ruheposition).

0x1152

Pneumatikzylinder der Frässpindel 1 ist abgesenkt

Nur für Pneumatische Doppelhubwechsler bzw. Pneumatische Dreifachhubwechsler!

Eine Sonderbauform eines Wechslersystems ist eine Anordnung von mehreren, parallel zur Z-Achse montierten Frässpindeln, die mit Hilfe von Präzisions-Pneumatikzylindern in eine Arbeitslage gefahren werden können. Die jeweils in Arbeitslage (abgesenkte Position) befindliche Frässpindel wird für die Bearbeitung verwendet, die andere(n) Spindel(n) befindet sich / befinden sich in Ruhelage (angehobene Lage).

Diese Funktion dient zur Abfrage, ob sich die Frässpindel 1 in der Arbeitsposition (abgesenkte Position) befindet.

Rückgabewert = 0: Frässpindel 1 ist nicht abgesenkt (nicht in Arbeitsposition).

Rückgabewert = 1: Frässpindel 1 ist abgesenkt (in Arbeitsposition).

0x1153

Pneumatikzylinder der Frässpindel 2 ist angehoben

Nur für Pneumatische Doppelhubwechsler bzw. Pneumatische Dreifachhubwechsler!

Diese Funktion dient zur Abfrage, ob sich die Frässpindel 2 in der Ruhelage (angehobene Position) befindet.

Rückgabewert = 0: Frässpindel 2 ist nicht angehoben (nicht in Ruheposition).

Rückgabewert = 1: Frässpindel 2 ist angehoben (in Ruheposition).

0x1154

Pneumatikzylinder der Frässpindel 2 ist abgesenkt

Nur für Pneumatische Doppelhubwechsler bzw. Pneumatische Dreifachhubwechsler!

Diese Funktion dient zur Abfrage, ob sich die Frässpindel 2 in der Arbeitsposition (abgesenkte Position) befindet.

Rückgabewert = 0: Frässpindel 2 ist nicht abgesenkt (nicht in Arbeitsposition).

Rückgabewert = 1: Frässpindel 2 ist abgesenkt (in Arbeitsposition).

0x1155

Pneumatikzylinder der Frässpindel 3 ist angehoben

Nur für Pneumatische Doppelhubwechsler bzw. Pneumatische Dreifachhubwechsler!

Diese Funktion dient zur Abfrage, ob sich die Frässpindel 3 in der Ruhelage (angehobene Position) befindet.

Rückgabewert = 0: Frässpindel 3 ist nicht angehoben (nicht in Ruheposition).

Rückgabewert = 1: Frässpindel 3 ist angehoben (in Ruheposition).

0x1156

Pneumatikzylinder der Frässpindel 3 ist abgesenkt

Nur für Pneumatische Doppelhubwechsler bzw. Pneumatische Dreifachhubwechsler!

Diese Funktion dient zur Abfrage, ob sich die Frässpindel 3 in der Arbeitsposition (abgesenkte Position) befindet.

Rückgabewert = 0: Frässpindel 3 ist nicht abgesenkt (nicht in Arbeitsposition).

Rückgabewert = 1: Frässpindel 3 ist abgesenkt (in Arbeitsposition).

0x1157

definiert, aber nicht verwendet

0x1158

definiert, aber nicht verwendet

0x1201

Belegungskontrolle von Werkzeugklammer (Werkzeugplatz) 1 des Werkzeugmagazins

Nur für Werkzeugmagazine mit Sensoren zur Anwesenheitskontrolle des Werkzeugs in der Klammer!

Falls die Werkzeugklammern des Werkzeugmagazins mit Sensoren zur Anwesenheitskontrolle des Werkzeugs ausgerüstet sind, können die Werte dieser Sensoren mit diesem und den darauffolgenden 127 Operationscodes abgefragt werden. Der Operationscode ergibt sich aus der Summe des hexadezimalen Wertes 0x1200 und der Nummer der Werkzeugklammer bzw. des Werkzeugplatzes (1, 2, 3, ...).

Rückgabewert = 0: Die angegebene Werkzeugklammer ist nicht belegt.

Rückgabewert = 1: Die angegebene Werkzeugklammer ist belegt.

0x1202

Belegungskontrolle von Werkzeugklammer (Werkzeugplatz) 2 des Werkzeugmagazins

0x1203

Belegungskontrolle von Werkzeugklammer (Werkzeugplatz) 3 des Werkzeugmagazins

...

...

0x127E

Belegungskontrolle von Werkzeugklammer (Werkzeugplatz) 126 des Werkzeugmagazins

0x127F

Belegungskontrolle von Werkzeugklammer (Werkzeugplatz) 127 des Werkzeugmagazins

0x1280

Belegungskontrolle von Werkzeugklammer (Werkzeugplatz) 128 des Werkzeugmagazins

0x1301

Abfrage Steuersignal Abdeckhaube

Mit dem Steuersignal 'Abdeckhaube' wird die Abdeckhaube des Werkzeugmagazins geöffnet oder geschlossen. Mit diesem Operationscode kann der aktuelle Zustand dieses Steuersignals abgefragt werden.

Rückgabewert = 0: Das Steuersignal 'Abdeckhaube' ist nicht aktiv.

Rückgabewert = 1: Das Steuersignal 'Abdeckhaube' ist aktiv.

0x1302

Abfrage Steuersignal Freiblasen

Das Freiblasen dient zum einen dazu, den Schaft eines Werkzeugs während des Wechselzyklus zu reinigen, zum anderen wird während einer Werkzeuglängenvermessung der Messtaster gereinigt.

Mit diesem Operationscode kann der aktuelle Zustand dieses Steuersignals abgefragt werden.

Rückgabewert = 0: Das Steuersignal 'Freiblasen' ist nicht aktiv.

Rückgabewert = 1: Das Steuersignal 'Freiblasen' ist aktiv.

0x1303

Abfrage Steuersignal Kegelreinigung / Reinigung der Spannzange

Mit diesem Steuersignal wird die Druckluft, die je nach Ausführung des Werkzeugwechselsystems für das Reinigen der Kegel der Werkzeugaufnahmen bzw. der Spannzange der Frässpindel verwendet wird, aktiviert / deaktiviert.

Anm.: Diese Funktion ist bei einigen Ausführungen der Werkzeugwechselsysteme vorhanden, bei anderen nicht.

Mit diesem Operationscode kann der aktuelle Zustand dieses Steuersignals abgefragt werden.

Rückgabewert = 0: Das Steuersignal 'Kegelreinigung' ist nicht aktiv.

Rückgabewert = 1: Das Steuersignal 'Kegelreinigung' ist aktiv.

0x1304

Abfrage Steuersignal Abdeckung der Absaugung

Mit dem Steuersignal 'Abdeckung der Absaugung' wird der Abdeckrahmen der Absaugung (im allgemeinen ein Rahmen mit Kohlefaserbürsten, der verhindern soll daß während der Bearbeitung Staub nach außen dringt) geöffnet oder geschlossen.

Mit diesem Operationscode kann der aktuelle Zustand dieses Steuersignals abgefragt werden.

Rückgabewert = 0: Das Steuersignal 'Abdeckung der Absaugung' ist nicht aktiv.

Rückgabewert = 1: Das Steuersignal 'Abdeckung der Absaugung' ist aktiv.

0x1305

Abfrage Steuersignal Werkzeugmagazin positionieren

Das Steuersignal 'Werkzeugmagazin positionieren' bringt das Werkzeugmagazin aus der Ruhelage in die Arbeitslage und umgekehrt. Dies ist bei Ausführungen des Werkzeugwechselsystems erforderlich, bei denen das Werkzeugmagazin aufgrund seiner Größe während der Bearbeitung den Arbeitsraum der Maschine blockieren würde.

Mit diesem Operationscode kann der aktuelle Zustand dieses Steuersignals abgefragt werden.

Rückgabewert = 0: Das Steuersignal 'Werkzeugmagazin positionieren' ist nicht aktiv.

Rückgabewert = 1: Das Steuersignal 'Werkzeugmagazin positionieren' ist aktiv.

0x1306

Abfrage Steuersignal Werkzeughalter positionieren

Dieses Steuersignal bringt den Werkzeughalter aus der Ruhelage in die Arbeitslage und umgekehrt. Bei einigen Ausführungen eines Werkzeugwechselsystems ist es erforderlich, den Halter mit dem Werkzeug für den Wechselzyklus aus einer Ruhelage in eine Arbeitsposition zu bringen, z.B. bei einigen Rundwechslermagazinen aufgrund der Erreichbarkeit des Werkzeugschafts.

Mit diesem Operationscode kann der aktuelle Zustand dieses Steuersignals abgefragt werden.

Rückgabewert = 0: Das Steuersignal 'Werkzeughalter positionieren' ist nicht aktiv.

Rückgabewert = 1: Das Steuersignal 'Werkzeughalter positionieren' ist aktiv.

0x1307

Abfrage Steuersignal Spannzange

Mit dem Steuersignal 'Spannzange' wird die Spannzange der Frässpindel geöffnet oder geschlossen.

Mit diesem Operationscode kann der aktuelle Zustand dieses Steuersignals abgefragt werden.

Rückgabewert = 0: Das Steuersignal 'Spannzange' ist nicht aktiv.

Rückgabewert = 1: Das Steuersignal 'Spannzange' ist aktiv.

0x1321

Abfrage Steuersignal Frässpindel 1 positionieren

Nur für Pneumatische Doppelhubwechsler bzw. Pneumatische Dreifachhubwechsler!

Diese Sonderbauform eines Wechslersystems ist eine Anordnung von mehreren, parallel zur Z-Achse montierten Frässpindeln, die mit Hilfe von Präzisions-Pneumatikzylindern in eine Arbeitslage gefahren werden können. Die jeweils in Arbeitslage befindliche Frässpindel wird für die Bearbeitung verwendet, die andere(n) Spindel(n) befindet sich / befinden sich in Ruhelage. Durch aktivieren dieses Steuersignals wird die Frässpindel 1 in die Arbeitslage gebracht.

Mit diesem Operationscode kann der aktuelle Zustand dieses Steuersignals abgefragt werden.

Rückgabewert = 0: Das Steuersignal 'Frässpindel 1 positionieren' ist nicht aktiv.

Rückgabewert = 1: Das Steuersignal 'Frässpindel 1 positionieren' ist aktiv.

0x1322

Abfrage Steuersignal Frässpindel 2 positionieren

Mit diesem Operationscode kann der aktuelle Zustand des Steuersignals 'Frässpindel 2 positionieren' abgefragt werden.

Rückgabewert = 0: Das Steuersignal 'Frässpindel 2 positionieren' ist nicht aktiv.

Rückgabewert = 1: Das Steuersignal 'Frässpindel 2 positionieren' ist aktiv.

0x1323

Abfrage Steuersignal Frässpindel 3 positionieren

Mit diesem Operationscode kann der aktuelle Zustand des Steuersignals 'Frässpindel 3 positionieren' abgefragt werden.

Rückgabewert = 0: Das Steuersignal 'Frässpindel 3 positionieren' ist nicht aktiv.

Rückgabewert = 1: Das Steuersignal 'Frässpindel 3 positionieren' ist aktiv.

Die Parameter können ohne Berücksichtigung von Groß-/Kleinschreibung angegeben werden.

Definitionen der Operationscodes ...

#define TCH_OPERATE_GET_SENSOR_TOOLMEASURINGSWITCH 0x1101

#define TCH_OPERATE_GET_SENSOR_HOODOPENED 0x1102

#define TCH_OPERATE_GET_SENSOR_HOODCLOSED 0x1103

#define TCH_OPERATE_GET_SENSOR_TOOLINCOLLET1 0x1104

#define TCH_OPERATE_GET_SENSOR_TOOLINCOLLET2 0x1105

#define TCH_OPERATE_GET_SENSOR_TOOLINCOLLET3 0x1106

#define TCH_OPERATE_GET_SENSOR_TOOLINCOLLET4 0x1107

#define TCH_OPERATE_GET_SENSOR_COLLET1ISOPEN 0x1108

#define TCH_OPERATE_GET_SENSOR_COLLET2ISOPEN 0x1109

#define TCH_OPERATE_GET_SENSOR_COLLET3ISOPEN 0x110A

#define TCH_OPERATE_GET_SENSOR_COLLET4ISOPEN 0x110B

#define TCH_OPERATE_GET_SENSOR_AIRPRESSUREOK 0x110C

#define TCH_OPERATE_GET_SENSOR_SPINDLESTANDSTILL 0x110D

#define TCH_OPERATE_GET_SENSOR_TOOLHOST1EXTENDED 0x1111

#define TCH_OPERATE_GET_SENSOR_TOOLHOST1RETRACTED 0x1112

#define TCH_OPERATE_GET_SENSOR_TOOLHOST2EXTENDED 0x1113

#define TCH_OPERATE_GET_SENSOR_TOOLHOST2RETRACTED 0x1114

#define TCH_OPERATE_GET_SENSOR_EXHAUSTUNITHOOD11ISOPEN 0x1121

#define TCH_OPERATE_GET_SENSOR_EXHAUSTUNITHOOD11ISCLOSED 0x1122

#define TCH_OPERATE_GET_SENSOR_EXHAUSTUNITHOOD12ISOPEN 0x1123

#define TCH_OPERATE_GET_SENSOR_EXHAUSTUNITHOOD12ISCLOSED 0x1124

#define TCH_OPERATE_GET_SENSOR_EXHAUSTUNITHOOD13ISOPEN 0x1125

#define TCH_OPERATE_GET_SENSOR_EXHAUSTUNITHOOD13ISCLOSED 0x1126

#define TCH_OPERATE_GET_SENSOR_EXHAUSTUNITHOOD14ISOPEN 0x1127

#define TCH_OPERATE_GET_SENSOR_EXHAUSTUNITHOOD14ISCLOSED 0x1128

#define TCH_OPERATE_GET_SENSOR_EXHAUSTUNITHOOD21ISOPEN 0x1131

#define TCH_OPERATE_GET_SENSOR_EXHAUSTUNITHOOD21ISCLOSED 0x1132

#define TCH_OPERATE_GET_SENSOR_EXHAUSTUNITHOOD22ISOPEN 0x1133

#define TCH_OPERATE_GET_SENSOR_EXHAUSTUNITHOOD22ISCLOSED 0x1134

#define TCH_OPERATE_GET_SENSOR_EXHAUSTUNITHOOD23ISOPEN 0x1135

#define TCH_OPERATE_GET_SENSOR_EXHAUSTUNITHOOD23ISCLOSED 0x1136

#define TCH_OPERATE_GET_SENSOR_EXHAUSTUNITHOOD24ISOPEN 0x1137

#define TCH_OPERATE_GET_SENSOR_EXHAUSTUNITHOOD24ISCLOSED 0x1138

#define TCH_OPERATE_GET_SENSOR_TOOLCLAMPISLIFTED 0x1141

#define TCH_OPERATE_GET_SENSOR_TOOLCLAMPISLOWERED 0x1142

#define TCH_OPERATE_GET_SENSOR_PNEUMATICCYLSPINDLE1ISUP 0x1151

#define TCH_OPERATE_GET_SENSOR_PNEUMATICCYLSPINDLE1ISDOWN 0x1152

#define TCH_OPERATE_GET_SENSOR_PNEUMATICCYLSPINDLE2ISUP 0x1153

#define TCH_OPERATE_GET_SENSOR_PNEUMATICCYLSPINDLE2ISDOWN 0x1154

#define TCH_OPERATE_GET_SENSOR_PNEUMATICCYLSPINDLE3ISUP 0x1155

#define TCH_OPERATE_GET_SENSOR_PNEUMATICCYLSPINDLE3ISDOWN 0x1156

#define TCH_OPERATE_GET_SENSOR_PNEUMATICCYLSPINDLE4ISUP 0x1157

#define TCH_OPERATE_GET_SENSOR_PNEUMATICCYLSPINDLE4ISDOWN 0x1158

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP1 0x1201

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP2 0x1202

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP3 0x1203

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP4 0x1204

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP5 0x1205

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP6 0x1206

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP7 0x1207

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP8 0x1208

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP9 0x1209

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP10 0x120A

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP11 0x120B

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP12 0x120C

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP13 0x120D

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP14 0x120E

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP15 0x120F

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP16 0x1210

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP17 0x1211

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP18 0x1212

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP19 0x1213

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP20 0x1214

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP21 0x1215

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP22 0x1216

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP23 0x1217

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP24 0x1218

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP25 0x1219

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP26 0x121A

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP27 0x121B

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP28 0x121C

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP29 0x121D

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP30 0x121E

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP31 0x121F

#define TCH_OPERATE_GET_SENSOR_ISTOOLINTOOLCLAMP32 0x1220

#define TCH_OPERATE_GET_ACTUATOR_COVER 0x1301

#define TCH_OPERATE_GET_ACTUATOR_BLASTOFF 0x1302

#define TCH_OPERATE_GET_ACTUATOR_CLEANCOLLET 0x1303

#define TCH_OPERATE_GET_ACTUATOR_EXHAUSTUNITHOOD 0x1304

#define TCH_OPERATE_GET_ACTUATOR_EXTENTTOOLHOST 0x1305

#define TCH_OPERATE_GET_ACTUATOR_LIFTTOOLCLAMP 0x1306

#define TCH_OPERATE_GET_ACTUATOR_COLLET 0x1307

#define TCH_OPERATE_GET_ACTUATOR_COLLET2 0x1308

#define TCH_OPERATE_GET_ACTUATOR_COLLET3 0x1309

#define TCH_OPERATE_GET_ACTUATOR_COLLET4 0x130A

#define TCH_OPERATE_GET_ACTUATOR_PNEUMATICCYLSPINDLE1 0x1321

#define TCH_OPERATE_GET_ACTUATOR_PNEUMATICCYLSPINDLE2 0x1322

#define TCH_OPERATE_GET_ACTUATOR_PNEUMATICCYLSPINDLE3 0x1323

#define TCH_OPERATE_GET_ACTUATOR_PNEUMATICCYLSPINDLE4 0x1324

Beispiel:

...

;Check ob Abdeckhaube an Wechslersystem 1 offen

TchGetSignal tc1 0x1102 I11

If(I11!=0)

MessageBox OK "Abdeckung des Wechslers ist offen"

EndIf

...

Siehe auch: TchSetSignal, TchCollet, TchCover, TchSelectToolStore, TchSlideToolMagazine, TchGetStatus, TchReset, TchGetTool, TchMeasureTool, TchMeasureTool, TchGetToolRefPos
NotifyError, SignalError
LockToolChange


TchGetStatus

TchGetStatus [device] param

Abfrage des aktuellen Status eines Werkzeugwechselsystems

Show/Hide Hidden Text

Dieser Befehl dient dazu, den Status einzelner Komponenten des Werkzeugwechsel-Systems aus dem CNC-Programm oder aus benutzerdefinierten Skripten heraus anzufragen.

Mit Hilfe des Befehls TchGetStatus, der Angabe des Geräteindex sowie der Angabe eines weiteren Parameters kann gezielt der aktuelle Zustand verschiedener Komponenten des Werkzeugwechslersystems ermittelt werden.

Syntax:

In/Rn=TchGetStatus [device] param

Verwendete Parameter

In/Rn In diese I- oder R-Variable wird das Ergebnis der Abfrage übertragen.

device Angabe des Werkzeugwechselsystems, für welches der aktuelle Befehl ausgeführt werden soll. Insgesamt können zwei Werkzeugwechslereinheiten indiziert werden, die Parameter hierfür lauten TC1 für Wechslersystem 1 (Standard-Werkzeugwechsler) und TC2 für Wechslersystem 2 (Wechsler-Erweiterung).
Die Angabe dieses Parameters ist optional: Wenn weder TC1 noch TC2 angegeben werden, wird die gewünschte Operation für Werkzeugwechselsystem 1 (entspricht TC1) durchgeführt.

param Parameter zur Angabe der gewünschten Statusinformation, die ermittelt und zugewiesen werden soll.

ColletOpen /

ColletClosed

Abfrage ob die Spannzange vollständig geöffnet oder vollständig geschlossen ist. In der Regel ist die Auswertung dieser Statusinformation sinnvoll, wenn die Spannzange über eine entsprechende Hardware-Signalisierung verfügt. Bei fehlender Hardware-Signalisierung wird die Statusinformation aus dem aktuellen Schaltzustand der Spannzange abgeleitet.

ColletOpen=0 Die Spannzange ist nicht geöffnet

ColletOpen=1 Die Spannzange ist geöffnet
ColletClosed=0 Die Spannzange ist nicht geschlossen
ColletClosed=1 Die Spannzange ist geschlossen

CoverOpen / CoverClosed

Abfrage ob die Abdeckung des Werkzeugmagazins vollständig geöffnet oder vollständig geschlossen ist. Auch hier ist die Auswertung dieser Statusinformation sinnvoll, wenn die Abdeckhaube über eine entsprechende Hardware-Signalisierung verfügt. Bei fehlender Signalisierung wird die Statusinformation aus dem aktuellen Schaltzustand des Steuersignals für die Abdeckung abgeleitet.

CoverOpen=0 Die Abdeckung ist nicht geöffnet

CoverOpen=1 Die Abdeckung ist geöffnet
CoverClosed=0 Die Abdeckung ist nicht geschlossen
CoverClosed=1 Die Abdeckung ist geschlossen

AirPressure

Diese Statusinformation repräsentiert das Kontrollsignal der Luftdruck-Wartungseinheit. Es gibt an, ob der eingestellte Betriebs-Luftdruck erreicht ist.

AirPRessure=0 Luftdruck ist nicht ausreichend

AirPRessure=1 Luftdruck ist ausreichend

BlastOff

Abfrage, ob die Funktion "Freiblasen" momentan eingeschaltet ist oder nicht.

BlastOff=0 Freiblasen ist momentan ausgeschaltet

BlastOff=1 Freiblasen ist momentan eingeschaltet

ExhaustCoverOpen /

ExhaustCoverClosed

Einige Sonderformen von Maschinen verfügen über eine Absaugeinrichtung mit einer Werkzeugabdeckung, die für den Werkzeugwechsel pneumatisch in eine Wechselposition gefahren wird. Mittels dieser beiden Statusinformationen kann festgestellt werden, ob die Abdeckung der Absaugvorrichtung vollständig geöffnet oder vollständig geschlossen ist.

ExhaustCoverOpen=0 Abdeckung ist nicht vollständig offen

ExhaustCoverOpen=1 Abdeckung ist vollständig offen
ExhaustCoverClosed=0 Abd. ist nicht vollständig geschlossen
ExhaustCoverClosed=1 Abdeckung ist vollständig geschlossen

ToolMagazineIn / ToolMagazineOut

Bei einigen Sonderbauformen von Werkzeugwechselsystemen wird das Werkzeugmagazin vor der Durchführung des Werkzeugwechselzyklus aus einer Parkposition in eine Arbeitsposition gefahren. Nach der Ausführung des Werkzeugwechsels wird das Werkzeugmagazin wieder in die Parkposition gefahren.

Die aktuelle Position des Werkzeugmagazins kann mit Hilfe dieser Statusabfrage ermittelt werden.

ToolMagazineIn=0 Das Magazin ist nicht vollständig eingefahren

ToolMagazineIn=1 Das Magazin ist vollständig eingefahren

ToolMagazineOut=0 Das Magazin ist nicht vollständig ausgefahren

ToolMagazineOut=1 Das Magazin ist vollständig ausgefahren

NumberOfToolInCollet

Abfrage der (Werkzeugplatz-)Nummer des momentan in der Spannzange befindlichen Werkzeugs. Als Ergebnis der Abfrage wird die Nummer des Werkzeugplatzes des jeweiligen Werkzeugmagazins (Tc1, Tc2) geliefert, aus dem das aktuelle Werkzeug stammt.

Achtung: Die zurückgelieferte Nummer entspricht nicht der Werkzeugnummer, über die im Programmablauf mit dem Befehl "GetTool" das gewünschte Werkzeug indiziert wird.

Die Parameter können ohne Berücksichtigung von Groß-/Kleinschreibung angegeben werden.

Beispiele:

(1)

;NumberOfToolInCollet

;Abfrage des Werkzeugplatzes im Werkzeugmagazin TC1

;oder TC2, aus welchem das aktuelle Werkzeug stammt

I1=-1

I1=TchGetStatus TC1 NumberOfToolInCollet

Vollständiges Beispiel für 1 Wechselsystem, 1 Werkzeugmagazin

;********************************************************

;Hauptprogramm

;********************************************************

ProgBegin ;Kennzeichnet den Programmbeginn

;Variante 1:

;Ein Werkzeugwechselsystem (1 Motion Control, 1 Spindel)

;welches 1 Werkzeugmagazin benutzt

I1=-1

I1=TchGetStatus TC1 NumberOfToolInCollet

If(I1<1)

Str2="Es befindet sich kein Werkzeug in der Spannzange"

Else

Str1="In der Spannzange befindet sich Werkzeug %d von Werkzeugmagazin 1"

StrFormat(Str2 Str1 I1)

EndIf

MessageBox OK Str2

ProgEnd ;Ende des Programms

;--------------------------------------------------------

Vollständiges Beispiel für 1 Wechselsystem, 2 Werkzeugmagazine

;********************************************************

;Hauptprogramm

;********************************************************

ProgBegin ;Kennzeichnet den Programmbeginn

;Variante 2:

;Ein Werkzeugwechselsystem (1 Motion Control, 1 Spindel)

;welches 2 Werkzeugmagazine benutzt

I1=-1

I2=-1

I1=TchGetStatus TC1 NumberOfToolInCollet

I2=TchGetStatus TC2 NumberOfToolInCollet

If((I1>0)AND(I2>0))

Str2="Fehlerhafte Werkzeugstatusabfrage, es können nicht 2 Werkzeuge in einer Spannzange sein"

Else

I3=I1

I4=1

If(I3<1)

I3=I2

I4=2

EndIf

If(I3<1)

Str2="Es befindet sich kein Werkzeug in der Spannzange"

Else

Str1="In der Spannzange befindet sich Werkzeug %d von Werkzeugmagazin %d"

StrFormat(Str2 Str1 I3 I4)

EndIf

EndIf

MessageBox OK Str2

ProgEnd ;Ende des Programms

;--------------------------------------------------------

Vollständiges Beispiel für 2 Wechselsysteme mit jeweils 1 Werkzeugmagazin

;********************************************************

;Hauptprogramm

;********************************************************

ProgBegin ;Kennzeichnet den Programmbeginn

;Variante 3:

;Zwei unabhängige Wechselsysteme in 2 Motion Controls

;mit jeweils einer eigenen Spindel und einem

;eigenen Werkzeugmagazin

I1=-1

I2=-1

I1=TchGetStatus TC1 NumberOfToolInCollet

I2=TchGetStatus TC2 NumberOfToolInCollet

If(I1<1)

Str2="Es befindet sich kein Werkzeug in der Spannzange von Spindel 1"

Else

Str1="In der Spannzange von Spindel 1 befindet sich Werkzeug %d von Werkzeugmagazin 1"

StrFormat(Str2 Str1 I1)

EndIf

Str3=Str2

If(I2<1)

Str2="Es befindet sich kein Werkzeug in der Spannzange von Spindel 2"

Else

Str1="In der Spannzange von Spindel 2 befindet sich Werkzeug %d von Werkzeugmagazin 2"

StrFormat(Str2 Str1 I2)

EndIf

Str3=Str3+"\n\n"+Str2

MessageBox OK Str3

ProgEnd ;Ende des Programms

;--------------------------------------------------------

(2)

;ColletOpen / ColletClosed

;Spannzange der Frässpindel an Wechslersystem 1 öffnen

TchCollet tc1 open

;Warten auf das Oeffnen der Spannzange...

While(I1!=1)

I1=TchGetStatus TC1 ColletOpen

Delay 200

EndWhile

;2 Sekunden warten

Delay 2000

;Spannzange der Frässpindel an Wechslersystem 1 wieder schließen

TchCollet TC1 CLOSE

;Warten auf das Schließen der Spannzange...

I1=0

While(I1!=1)

I1=TchGetStatus TC1 ColletClosed

Delay 200

EndWhile

(3)

;CoverOpen / CoverClosed

;Abdeckhaube des Werkzeugmagazins an Wechslersystem 1 öffnen

TchCover Tc1 Open

;Warten auf das Oeffnen der Abdeckhaube...

I1=0

While(I1!=1)

I1=TchGetStatus TC1 CoverOpen

Delay 200

EndWhile

;2 Sekunden warten

Delay 2000

;Abdeckhaube des Werkzeugmagazins an Wechslersystem 1 wieder schließen

TchCover TC1 CLOSE

;Warten auf das Schließen der Abdeckhaube...

I1=0

While(I1!=1)

I1=TchGetStatus TC1 COVERCLOSED

Delay 200

EndWhile

(4)

;AirPressure

;Ist der Luftdruck am Werkzeugwechsler ausreichend?

I1=0

;Warten solange der Luftdruck als "nicht ausreichend"

;signalisiert wird

While(I1!=1)

I1=TchGetStatus TC1 AirPressure

Delay 200

EndWhile

(5)

;BlastOff

;********************************************************

;Die Timer-Funktion OnTimer 500 wird alle 500 ms aufgerufen

;********************************************************

OnTimer 500

;Zyklische Abfrage des Zustands der Funktion "Freiblasen"

;und Anzeige im Display

I1=TchGetStatus TC1 BlastOff

If(I1!=I2)

Display Clear 4

If(I1==1)

Display 4 1 "Freiblasen EIN"

Else

Display 4 1 "Freiblasen AUS"

EndIf

I2=I1

EndIf

EventReturn

;--------------------------------------------------------

;********************************************************

;Hauptprogramm

;********************************************************

ProgBegin

I1=0

I2=-1

Display Clear

Display 1 1 "Das Display sollte jetzt den aktuellen Zustand"

Display 2 1 "des Freiblasens anzeigen..."

Display 6 1 "Programmende mit Schaltfläche 'Beenden'"

While 1==1

Delay 99

EndWhile

ProgEnd

;--------------------------------------------------------

Siehe auch: TchCollet, TchCover, TchSelectToolStore, TchSlideToolMagazine, TchSetStatus, TchReset, TchGetTool, TchMeasureTool, TchGetToolRefPos, TchGetSignal, TchSetSignal
LockToolChange


TchGetTool

TchGetTool [device] toolnr

Einwechseln eines Werkzeugs

Dieser Befehl dient zum Einwechseln eines neuen Werkzeugs mit der Werkzeugnummer toolnr.

Der übergebene numerische Parameter ist je nach Formulierung des Befehls eine Werkzeugnummer (die im Einrichtdialog der Steuerung in der Werkzeugliste eingerichtet sein muß) oder die Nummer eines Werkzeugplatzes in einem Werkzeughalter.

Parameter des Befehls:

device

Angabe der Gerätenummer. Falls diese optionale Angabe verwendet wird, bezieht sich die angegebene Werkzeugnummer auf einen Werkzeugplatz im Werkzeughalter mit der angegebenen Gerätenummer.

Gültige Werte: TC1, TC2

toolnr

·Wenn der Parameter "Gerätenummer" (TC1 oder TC2) verwendet wird:
Angabe des Werkzeugplatzes, aus dem das Werkzeug in die Frässpindel eingewechselt werden soll.
Gültige Werkzeugplatznummern sind 1 ... 'Anzahl der konfigurierten Werkzeugplätze des Werkzeughalters'. Wenn als Werkzeugplatz 0 angegeben wird, dann wird das in der Frässpindel enthaltene Werkzeug in den Platz abgelegt, aus dem es entnommen wurde.

·Wenn der Parameter "Gerätenummer (TC1 oder TC2) nicht verwendet wird:
Angabe der Werkzeugnummer des Werkzeugs, das eingewechselt werden soll. Dazu wird im Einrichtdialog der Steuerung im Bereich "Werkzeugwechsler" eine Werkzeugliste konfiguriert, welche einer Werkzeugnummer folgende Parameter zuweist:

- den Werkzeughalter, der das gewünschte Werkzeug enthält
- den Ablageplatz des Werkzeugs im Werkzeughalter

Diese Zuordnung muß getroffen werden, bevor der Befehl für den Werkzeugwechsel ohne Angabe der Gerätenummer verwendet werden kann. Gültige Werkzeugnummern sind 1...128. Wenn der Befehl mit dem Parameter 0 verwendet wird, wird das aktuelle Werkzeug nur abgelegt und kein neues Werkzeug eingewechselt.

Hinweis: Die Verwendung von Werkzeughalter-Gerätenummer und Werkzeugplatz ist für die Verwendung in eigenen Werkzeugwechsel-Abläufen vorgesehen. Im Regelfall sollte der Befehl TchGetTool unter Angabe der Werkzeugnummer ohne Angabe des Parameters "TCn" erfolgen.

Beispiel:

;Keine Angabe der DeviceNr

;-> die uebergebene ToolNr wird als Werkzeugnummer

;interpretiert und intern nach Gerät und Werkzeugplatz

;aufgelöst

TchGetTool 4

;Angabe der DeviceNr

;-> die uebergebene ToolNr wird als Werkzeugplatz

;im durch die DeviceNr festgelegten Gerät interpretiert

;Angabe der DeviceNr und WzPlatz-Nr fuer

;zukuenftige eigene Wechselscripte

;Werkzeug von Werkzeugplatz 2 in der Wechslerstation 1

TchGetTool TC1 2

;Werkzeug von Werkzeugplatz 5 in der Wechslerstation 2

TchGetTool TC2 5

Siehe auch: TchCollet, TchCover, TchSelectToolStore, TchSlideToolMagazine, TchGetStatus, TchSetStatus, TchReset, TchMeasureTool, TchGetToolRefPos, TchGetSignal, TchSetSignal
LockToolChange


TchGetToolCuttingTime

TchGetToolCuttingTime [device] toolnr

Abfrage der aktuellen Schnittzeit eines Werkzeugs

Dieser Befehl wird verwendet, um die aktuelle Schnittzeit eines Werkzeugs abzufragen. Die aktuelle Schnittzeit ist die gemessene Zeit eines Werkzeugs, die es bisher Zerspanarbeit geleistet hat. Die maximale Schnittzeit eines Werkzeugs ist die Standzeit, solange kann das Werkzeug maximal genutzt werden bevor es ausgetauscht oder nachgeschliffen werden muß.

Kriterien für das Weiterzählen der Schnittzeit:

·Das Werkzeug ist das aktuelle Werkzeug in der Spannzange der Frässpindel

·Die Frässpindel ist eingeschaltet und hat eine Drehzahl > 0

·Es findet gerade eine Bewegung mit Normalgeschwindigkeit statt (G01-Bewegung)

Der aktuelle Wert der Schnittzeit des Werkzeuges wird in Sekunden zurückgegeben.

Syntax:

Rn=TchGetToolCuttingTime [device] toolnr

Verwendete Parameter

device Angabe des Werkzeugwechselsystems, für welches der aktuelle Befehl ausgeführt werden soll. Insgesamt können zwei Werkzeugwechslereinheiten indiziert werden, die Parameter hierfür lauten TC1 für Wechslersystem 1 (Standard-Werkzeugwechsler) und TC2 für Wechslersystem 2 (Wechsler-Erweiterung).
Die Angabe dieses Parameters ist optional: Wenn weder TC1 noch TC2 angegeben werden, wird die gewünschte Operation über die Werkzeugverwaltung aufgelöst. Das bedeutet, daß die übergebene Nummer als Werkzeugnummer (und nicht als Werkzeugplatz) interpretiert wird. Werkzeugmagazin und Werkzeugplatz werden intern über die Werkzeugliste ermittelt, anschließend wird die aufgelaufene Schnittzeit für das entsprechende Werkzeug zurückgegeben.

toolnr Falls ein Werkzeugmagazin (device, TC1 oder TC2) angegeben wurde, enthält dieser Parameter die Nummer des Werkzeug- bzw. Magazinplatzes, in dem das Werkzeug normalerweise abgelegt ist. Falls kein Werkzeugmagazin angegeben ist, wird der Parameter toolnr als Werkzeugnummer interpretiert. Dieser Werkzeugnummer muß in der Werkzeugverwaltung ein Werkzeugmagazin und eine Werkzeugplatznummer zugewiesen worden sein.

Beispiel:

...

;Vor dem Start einer Bearbeitung soll geprueft werden ob die

;restliche Schnittzeit eines Werkzeugs ausreichend ist.

;R1=Max. Schnittzeit, Stundenanteil

;R2=Max. Schnittzeit, Minutenanteil

;R3=Max. Schnittzeit, Sekundenanteil

;Errechnen der maximalen Schnittzeit in Sekunden

R1=1.0

R2=0.0

R3=0.0

R11=R1*60.0*60.0 + R2*60.0 + R3

;Abfragen der aktuellen Schnittzeit des Werkzeugs

R12=TchGetToolCuttingTime tc1 1

If((R12-R11)<80.0)

;Die Restzeit reicht nicht aus, es werden noch

;mindestens 80.0 Sekunden benötigt

MessageBox "Das Werkzeug hat die Standzeit überschritten"

ProgAbort

EndIf

;oder auch:

I1=1

R12=TchGetToolCuttingTime TC1 I1

Siehe auch: TchCollet, TchCover, TchSelectToolStore, TchSlideToolMagazine, TchGetStatus, TchReset, TchGetTool, TchMeasureTool, TchSetToolRefPos, TchGetSignal, TchSetSignal, TchSetToolCuttingTime, TchGetToolRunTime, TchSetToolRunTime
LockToolChange


TchGetToolRefPos

TchGetToolRefPos [device] toolnr

Abfrage der Referenzposition Z eines Werkzeugs

Mit Hilfe dieses Befehls kann für das angegebene Werkzeug die Referenzposition der Z-Achse ermittelt werden.

Der Vermessungszyklus für die Referenzposition Z hat folgenden Ablauf: Zunächst wird (mit einer höheren Geschwindigkeit) die Z-Achse mit dem Werkzeug in Richtung des Messtasters gefahren, bis die Werkzeugspitze den Messtaster betätigt und das Umschalten des Signalpegels bewirkt. Um die Messung möglichst präzise durchzuführen, wird anschließend mit einer geringen Geschwindigkeit in entgegengesetzter Richtung gefahren, bis der Messtaster erneut umschaltet. Als Referenzposition Z ist nun die Position der Z-Achse definiert, die beim Herausfahren aus dem Messtaster im Moment des erneuten Umschaltens erreicht ist.

Sofern alle Werkzeuge vermessen sind, kann mit Hilfe der ermittelten Referenzpositionen eine Längendifferenz für die einzelnen Werkzeuge errechnet werden, die für die Realisierung einer eigenen Werkzeuglängenkorrektur verwendet werden kann.

Der aktuelle Wert der Längenreferenz des Werkzeuges wird in Millimetern zurückgegeben.

Syntax:

Rn=TchGetToolRefPos [device] param

Verwendete Parameter

device Angabe des Werkzeugwechselsystems, für welches der aktuelle Befehl ausgeführt werden soll. Insgesamt können zwei Werkzeugwechslereinheiten indiziert werden, die Parameter hierfür lauten TC1 für Wechslersystem 1 (Standard-Werkzeugwechsler) und TC2 für Wechslersystem 2 (Wechsler-Erweiterung).
Die Angabe dieses Parameters ist optional: Wenn weder TC1 noch TC2 angegeben werden, wird die gewünschte Operation über die Werkzeugverwaltung aufgelöst. Das bedeutet, daß die übergebene Nummer als Werkzeugnummer (und nicht als Werkzeugplatz) interpretiert wird. Werkzeugmagazin und Werkzeugplatz werden intern über die Werkzeugliste ermittelt, anschließend wird die Referenzposition Z für das entsprechende Werkzeug zurückgegeben.

toolnr Falls ein Werkzeugmagazin (devicenr, TC1 oder TC2) angegeben wurde, enthält dieser Parameter die Nummer des Werkzeug- bzw. Magazinplatzes, in dem das Werkzeug normalerweise abgelegt ist. Falls kein Werkzeugmagazin angegeben ist, enthält dieser Parameter eine Werkzeugnummer. Dieser Werkzeugnummer muß in der Werkzeugverwaltung ein Werkzeugmagazin und eine Werkzeugplatznummer zugewiesen worden sein.

Siehe auch: TchCollet, TchCover, TchSelectToolStore, TchSlideToolMagazine, TchGetStatus, TchReset, TchGetTool, TchMeasureTool, TchSetToolRefPos, TchGetSignal, TchSetSignal
LockToolChange


TchGetToolRunTime

TchGetToolRunTime [device] toolnr

Abfrage der aktuellen Laufzeit eines Werkzeugs

Dieser Befehl wird verwendet, um die aktuelle Laufzeit eines Werkzeugs abzufragen. Die aktuelle Laufzeit ist die gemessene Zeit eines Werkzeugs, die es bisher bei laufender Frässpindel in Verwendung war.

Kriterien für das Weiterzählen der Laufzeit:

·Das Werkzeug ist das aktuelle Werkzeug in der Spannzange der Frässpindel

·Die Frässpindel ist eingeschaltet und hat eine Drehzahl > 0

Der aktuelle Wert der Laufzeit des Werkzeuges wird in Sekunden zurückgegeben.

Syntax:

Rn=TchGetToolRunTime [device] toolnr

Verwendete Parameter

device Angabe des Werkzeugwechselsystems, für welches der aktuelle Befehl ausgeführt werden soll. Insgesamt können zwei Werkzeugwechslereinheiten indiziert werden, die Parameter hierfür lauten TC1 für Wechslersystem 1 (Standard-Werkzeugwechsler) und TC2 für Wechslersystem 2 (Wechsler-Erweiterung).
Die Angabe dieses Parameters ist optional: Wenn weder TC1 noch TC2 angegeben werden, wird die gewünschte Operation über die Werkzeugverwaltung aufgelöst. Das bedeutet, daß die übergebene Nummer (toolnr) als Werkzeugnummer (und nicht als Werkzeugplatz) interpretiert wird. Werkzeugmagazin und Werkzeugplatz werden intern über die Werkzeugliste ermittelt, anschließend wird die aufgelaufene Schnittzeit für das entsprechende Werkzeug zurückgegeben.

toolnr Falls ein Werkzeugmagazin (device, TC1 oder TC2) angegeben wurde, enthält dieser Parameter die Nummer des Werkzeug- bzw. Magazinplatzes, in dem das Werkzeug normalerweise abgelegt ist. Falls kein Werkzeugmagazin angegeben ist, wird der Parameter toolnr als Werkzeugnummer interpretiert. Dieser Werkzeugnummer muß in der Werkzeugverwaltung ein Werkzeugmagazin und eine Werkzeugplatznummer zugewiesen worden sein.

Beispiel:

...

;Vor dem Start einer Bearbeitung soll geprueft werden ob die

;restliche Laufzeit eines Werkzeugs ausreichend ist.

;R1=Max. Laufzeit, Stundenanteil

;R2=Max. Laufzeit, Minutenanteil

;R3=Max. Laufzeit, Sekundenanteil

;Errechnen der maximalen Schnittzeit in Sekunden

; -> 06:30:00

R1=6.0

R2=30.0

R3=0.0

R11=R1*60.0*60.0 + R2*60.0 + R3

;Abfragen der aktuellen Laufzeit des Werkzeugs

R12=TchGetToolRunTime tc1 1

If((R12-R11)<240.0)

;Die Restzeit reicht nicht aus, es werden noch

;mindestens 240.0 Sekunden (4 Minuten) benötigt

MessageBox "Werkzeug 1 hat die max. Laufzeit überschritten"

ProgAbort

EndIf

;oder auch:

I1=1

R12=TchGetToolRunTime TC1 I1

Siehe auch: TchCollet, TchCover, TchSelectToolStore, TchSlideToolMagazine, TchGetStatus, TchReset, TchGetTool, TchMeasureTool, TchSetToolRefPos, TchGetSignal, TchSetSignal, TchGetToolCuttingTime, TchSetToolCuttingTime, TchSetToolRunTime
LockToolChange


TchMeasureTool

TchMeasureTool [device] toolnr

Vermessung eines Werkzeugs durchführen

Aufruf des Zyklus für die Längenreferenzierung eines Werkzeuges.

Der übergebene numerische Parameter toolnr ist je nach Formulierung des Befehls eine Werkzeugnummer (die im Einrichtdialog der Steuerung in der Werkzeugliste eingerichtet sein muß) oder die Nummer eines Werkzeugplatzes in einem Werkzeughalter.

Parameter des Befehls:

device

Angabe der Gerätenummer. Falls diese optionale Angabe verwendet wird, bezieht sich die angegebene Werkzeugnummer 'toolnr' auf einen Werkzeugplatz im Werkzeughalter mit der angegebenen Gerätenummer.

Gültige Werte: TC1, TC2

toolnr

·Wenn der Parameter "Gerätenummer" (TC1 oder TC2) verwendet wird:
Angabe des Werkzeugplatzes, aus dem das zu vermessende Werkzeug entnommen werden soll.
Gültige Werkzeugplatznummern sind 1 ... 'Anzahl der konfigurierten Werkzeugplätze des Werkzeughalters'.

·Wenn der Parameter "Gerätenummer (TC1 oder TC2) nicht verwendet wird:
Angabe der Werkzeugnummer des Werkzeugs, das vermessen werden soll. Dazu wird im Einrichtdialog der Steuerung im Bereich "Werkzeugwechsler" eine Werkzeugliste konfiguriert, welche einer Werkzeugnummer folgende Parameter zuweist:

- den Werkzeughalter, der das gewünschte Werkzeug enthält
- den Ablageplatz des Werkzeugs im Werkzeughalter

Diese Zuordnung muß getroffen werden, bevor der Befehl für die Längenreferenzierung eines Werkzeugs ohne Angabe der Gerätenummer verwendet werden kann. Gültige Werkzeugnummern sind 1...128.

·Wenn das aktuelle, in der Spannzange der Frässpindel befindliche Werkzeug vermessen werden soll, so kann dies durch Angabe des Parameters "ACTTOOL" erreicht werden:

TchMeasureTool ACTTOOL

Das Ergebnis der Längenreferenzierung wird intern im Werkzeugwechslermodul abgelegt. Der aktuelle Wert der Werkzeuglängenreferenz kann jederzeit mit dem Befehl TchGetToolRefPos ermittelt werden. Der aktuelle Wert der Längenreferenz des Werkzeuges wird hierbei in Millimetern zurückgegeben.

Beispiel:

;Keine Angabe der DeviceNr

;-> die uebergebene ToolNr wird als Werkzeugnummer

;interpretiert und intern nach Gerät und Werkzeugplatz

;aufgelöst

TchMeasureTool 4

;Angabe der DeviceNr

;-> die uebergebene ToolNr wird als Werkzeugplatz

;im durch die DeviceNr festgelegten Gerät interpretiert

;Angabe der DeviceNr und WzPlatz-Nr fuer

;zukuenftige eigene Wechselscripte

;Vermessen von:

;Werkzeug von Werkzeugplatz 2 in der Wechslerstation 1

TchMeasureTool TC1 2

;Vermessen von:

;Werkzeug von Werkzeugplatz 5 in der Wechslerstation 2

TchMeasureTool TC2 5

Siehe auch: TchMeasureTool, TchCollet, TchCover, TchSelectToolStore, TchSlideToolMagazine, TchGetStatus, TchReset, TchGetTool, TchGetToolRefPos, TchGetSignal, TchSetSignal
LockToolChange


TchReset

Reset einer Werkzeugwechslersteuerung

Aufruf des Reset-Zyklus des Werkzeugwechslermoduls.

Abhängig vom Typ des verwendeten Werkzeugwechselsystems werden Aktionen ausgeführt, die das Werkzeugwechsler nach Möglichkeit in einen betriebsbereiten Grundzustand versetzen.

Siehe auch: TchCollet, TchCover, TchSelectToolStore, TchSlideToolMagazine, TchGetStatus, TchReset, TchGetTool, TchMeasureTool, TchGetToolRefPos, TchGetSignal, TchSetSignal
LockToolChange


TchSelectToolStore

TchSelectToolStore [device] toolstore

Den Werkzeughalter eines Wechslermagazins an die Arbeitsposition positionieren

Dieser Befehl dient dazu, einzelne Komponenten des Werkzeugwechsel-Systems aus dem CNC-Programm oder aus benutzerdefinierten Skripten heraus zu steuern.

Bei einigen Sonderbauformen von Werkzeugwechselsystemen, den sogenannten Rundwechslern, ist das Werkzeugmagazin ein Tellermagazin mit Antrieb, bei dem die Magazinklammern im Wechselablauf für Entnahme oder Ablegen eines Werkzeuges an die jeweils benötigte Arbeitsposition gefahren werden. Die Positionierung des Tellermagazins erfolgt dabei für jede Werkzeugplatznummer an die jeweils in den Einstellungen hinterlegte Tellerposition.

Mit Hilfe des Befehls TchSelectToolStore kann das Tellermagazin programmatisch an die Arbeitsposition für die übergebene Werkzeugplatznummer gefahren werden.

Hinweis: Diese Funktion bietet direkten Zugriff auf die Steuerung des Werkzeugwechselsystems. Der Befehl sollte nicht in programmierten Abläufen oder über ein Script ausgeführt werden, wenn zusätzlich noch der automatische Werkzeugwechselzyklus verwendet wird.
Weiterhin sollte vor jedem Aufruf kontrolliert werden, ob aktuell Kollisionsgefahr mit anderen Komponenten der Maschine (Z-Achse, Frässpindel, angebrachte Vorrichtungen etc.) besteht.

Syntax:

TchSelectToolStore [device] toolstore

Verwendete Parameter

device Angabe des Werkzeugwechselsystems, für welches der aktuelle Befehl ausgeführt werden soll. Insgesamt können zwei Werkzeugwechslereinheiten indiziert werden, die Parameter hierfür lauten TC1 für Wechslersystem 1 (Standard-Werkzeugwechsler) und TC2 für Wechslersystem 2 (Wechsler-Erweiterung).
Die Angabe dieses Parameters ist optional: Wenn weder TC1 noch TC2 angegeben werden, wird die gewünschte Operation für Werkzeugwechselsystem 1 durchgeführt.

toolstore Angabe des Werkzeugplatzes, der an die Arbeitsposition für Entnahme oder Ablage gefahren werden soll. Gültige Parameter sind numerische ganzzahlige Werte (1, 2, 3, ...) um das Werkzeugmagazin zu indizieren. Welche Position des Drehtellers eingenommen wird, richtet sich nach den Positionen, die bei der Einrichtung des Werkzeugwechselsystem für den jeweiligen Werkzeugplatz vergeben wurden.

Die Parameter können ohne Berücksichtigung von Groß-/Kleinschreibung angegeben werden.

Beispiel:

...

;Drehteller von Wechslersystem 1 an die Position von Werkzeugplatz 1 fahren

TchSelectToolStore tc1 1

;oder

TchSelectToolStore TC1 1

;oder

TchSelectToolStore 1

...

Siehe auch: TchCollet, TchCover, TchSlideToolMagazine, TchGetStatus, TchReset, TchGetTool, TchMeasureTool, TchGetToolRefPos, TchGetSignal, TchSetSignal
LockToolChange


TchSetSignal

In = TchSetSignal [device] operationcode [Im] [Rx]

Zugriff auf diverse Sensoren des Werkzeugwechselsystems

Show/Hide Hidden Text

Mit Hilfe der Befehle TchGetSignal und TchSetSignal kann auf die diversen Komponenten eines Werkzeugwechselsystems zugegriffen werden. Diese Komponenten können entweder Aktoren oder Sensoren sein, somit kann also entweder der Schaltzustand von Aktoren beeinflusst oder der aktuelle Eingangswert eines Sensors erfasst werden. Die übergebenen Werte für die jeweiligen Betriebszustände eines Aktors bzw. die jeweiligen Istwerte von Sensoren berücksichtigen dabei schon die im Setup des Werkzeugwechselsystems festgelegten Aktivpegel der jeweiligen Signale.

Der Befehl TchSetSignal wird verwendet, um die Aktoren des Werkzeugwechselsystems zu steuern.

Zugriff auf die Aktoren des Werkzeugwechselsystems

Hinweis: Die Verwendung der Befehle für die Verwendung der Aktoren bietet direkten Zugriff auf die Steuerung des Werkzeugwechselsystems. Der Befehl sollte sicherheitshalber nicht in programmierten Abläufen oder über ein Script ausgeführt werden, wenn zusätzlich noch der automatische Werkzeugwechselzyklus verwendet wird.
Weiterhin sollte vor jedem Aufruf und zu jeder Zeit kontrolliert werden, ob eine Kollisionsgefahr mit anderen Komponenten der Maschine (Z-Achse, Frässpindel, angebrachte Vorrichtungen etc.) besteht.

Syntax:

In = TchSetSignal [device] operationcode [ON|OFF]|[0|1]|[Im]|[Rx]

Verwendete Parameter

In Eine Integervariable mit dem Index n, welche den Fehlercode der durchgeführten Aktion erhält. Der Fehlercode entspricht den Standard-Fehlercodes der Anwendung und kann, falls gewünscht, nach Erhalt mit Hilfe der Befehle SignalError oder NotifyError weiterverarbeitet werden.

device Angabe des Werkzeugwechselsystems, für welches der aktuelle Befehl ausgeführt werden soll. Insgesamt können zwei Werkzeugwechslereinheiten indiziert werden, die Parameter hierfür lauten TC1 für Wechslersystem 1 (Standard-Werkzeugwechsler) und TC2 für Wechslersystem 2 (Wechsler-Erweiterung).
Die Angabe dieses Parameters ist optional: Wenn weder TC1 noch TC2 angegeben werden, wird die gewünschte Operation für Werkzeugwechselsystem 1 durchgeführt.

ON|OFF|0|1|Im|Rx Angabe eines Parameters, der festlegt ob das Signal aktiviert (ON, 1) oder deaktiviert (OFF, 0)wird.
Der Wert kann ebenso als I-Variable oder als R-Variable übergeben werden, z.B. als Ergebnis einer vorausgehenden Statusprüfung oder Berechnung .

operationcode Angabe eines Codes, der die gewünschte Aktion festlegt. Gültige Parameter sind numerische ganzzahlige Werte. Nachfolgend eine Aufstellung der Codes für den Zugriff auf die Aktoren des Werkzeugwechselsystems. Die Codes werden in hexadezimaler Schreibweise dargestellt.

0x1001

Abdeckhaube

Bedienung der Abdeckhaube des Werkzeugmagazins. Bei der Übergabe des Wertes für den logischen Ein-Zustand (ON, 1) wird die Abdeckhaube geöffnet, bei Übergabe des Wertes für den logischen Aus-Zustand (OFF, 0) wird die Abdeckhaube geschlossen.

0x1002

Freiblasen

Ein- bzw. Ausschalten der Funktion Freiblasen. Das Freiblasen dient zum einen dazu, den Schaft eines Werkzeugs während des Wechselzyklus zu reinigen, zum anderen wird während einer Werkzeuglängenvermessung der Messtaster gereinigt.

Übergabe von ON, 1: Die Funktion Freiblasen wird aktiviert.
Übergabe von OFF, 0: Die Funktion Freiblasen wird deaktiviert.

0x1003

Kegelreinigung / Reinigung der Spannzange

Ein- bzw. Ausschalten der Druckluft, die je nach Ausführung des Werkzeugwechselsystems für das Reinigen der Kegel der Werkzeugaufnahmen bzw. der Spannzange der Frässpindel verwendet wird. Diese Funktion ist bei diversen Ausführungen des Werkzeugwechselsystems vorhanden, bei anderen nicht.

Übergabe von ON, 1: Die Funktion wird aktiviert.
Übergabe von OFF, 0: Die Funktion wird deaktiviert.

0x1004

Abdeckung der Absaugung

Öffnen oder Schließen des Abdeckrahmens der Absaugeinheit (im allgemeinen ein Rahmen mit Kohlefaserbürsten, der verhindern soll daß während der Bearbeitung Staub nach außen dringt). Bei manchen Ausführungen einer Frässpindel mit Absaugeinheit ist es erforderlich, diesen Abdeckrahmen vor dem automatischen Werkzeugwechsel zu öffnen, damit der Wechselzyklus ausgeführt werden kann.

Übergabe von ON, 1: Die Abdeckung der Absaugung wird geöffnet.
Übergabe von OFF, 0: Die Abdeckung der Absaugung wird geschlossen.

0x1005

Werkzeugmagazin positionieren

Das Werkzeugmagazin aus der Ruhelage in die Arbeitslage fahren und umgekehrt. Bei manchen Ausführungen des Werkzeugwechselsystems ist es erforderlich, das Magazin mit den diversen Werkzeugen entweder vor oder während eines Wechselzyklus aus einer Ruhelage in eine Arbeitsposition und wieder zurück zu bringen. Diese Funktion ermöglicht die Positionierung des Werkzeughalters.

Übergabe von ON, 1: Das Werkzeugmagazin wird in die Arbeitsposition gefahren.
Übergabe von OFF, 0: Das Werkzeugmagazin wird in die Ruhelage gebracht.

0x1006

Werkzeughalter positionieren

Den Werkzeughalter aus der Ruhelage in die Arbeitslage fahren und umgekehrt. Bei manchen Ausführungen eines Werkzeugwechselsystems ist es erforderlich, den Halter mit dem Werkzeug entweder vor oder nach dem Wechselzyklus aus einer Ruhelage in eine Arbeitsposition und wieder zurück zu bringen. Diese Funktion ermöglicht die Positionierung des Werkzeughalters.

Übergabe von ON, 1: Der Werkzeughalter wird in die Arbeitsposition gefahren.
Übergabe von OFF, 0: Der Werkzeughalter wird in die Ruhelage gebracht.

0x1007

Spannzange

Öffnen oder Schließen der Spannzange des Frässpindel.

Übergabe von ON, 1: Die Spannzange wird geöffnet.
Übergabe von OFF, 0: Die Spannzange wird geschlossen.

0x1021

Pneumatikzylinder der Frässpindel 1 positionieren

Nur für Pneumatische Doppelhubwechsler bzw. Pneumatische Dreifachhubwechsler!

Eine Sonderbauform eines Wechslersystems ist eine Anordnung von mehreren, parallel zur Z-Achse montierten Frässpindeln, die mit Hilfe von Präzisions-Pneumatikzylindern in eine Arbeitslage gefahren werden können. Die jeweils in Arbeitslage befindliche Frässpindel wird für die Bearbeitung verwendet, die andere(n) Spindel(n) befindet sich / befinden sich in Ruhelage.

Durch aktivieren dieses Steuersignals wird die Frässpindel 1 in die Arbeitslage gebracht.

Übergabe von ON, 1: Die Frässpindel 1 wird in die Arbeitsposition gefahren.
Übergabe von OFF, 0: Die Frässpindel 1 wird in die Ruhelage gebracht.

0x1022

Pneumatikzylinder der Frässpindel 2 positionieren

Nur für Pneumatische Doppelhubwechsler bzw. Pneumatische Dreifachhubwechsler!

Durch aktivieren dieses Steuersignals wird die Frässpindel 2 in die Arbeitslage gebracht.

Übergabe von ON, 1: Die Frässpindel 2 wird in die Arbeitsposition gefahren.
Übergabe von OFF, 0: Die Frässpindel 2 wird in die Ruhelage gebracht.

0x1023

Pneumatikzylinder der Frässpindel 3 positionieren

Nur für Pneumatische Doppelhubwechsler bzw. Pneumatische Dreifachhubwechsler!

Durch aktivieren dieses Steuersignals wird die Frässpindel 3 in die Arbeitslage gebracht.

Übergabe von ON, 1: Die Frässpindel 3 wird in die Arbeitsposition gefahren.
Übergabe von OFF, 0: Die Frässpindel 3 wird in die Ruhelage gebracht.

Die Parameter können ohne Berücksichtigung von Groß-/Kleinschreibung angegeben werden.

Definitionen der Operationscodes ...

#define TCH_OPERATE_SET_ACTUATOR_COVER 0x1001

#define TCH_OPERATE_SET_ACTUATOR_BLASTOFF 0x1002

#define TCH_OPERATE_SET_ACTUATOR_CLEANCOLLET 0x1003

#define TCH_OPERATE_SET_ACTUATOR_EXHAUSTUNITHOOD 0x1004

#define TCH_OPERATE_SET_ACTUATOR_EXTENTTOOLHOST 0x1005

#define TCH_OPERATE_SET_ACTUATOR_LIFTTOOLCLAMP 0x1006

#define TCH_OPERATE_SET_ACTUATOR_COLLET 0x1007

#define TCH_OPERATE_SET_ACTUATOR_COLLET2 0x1008

#define TCH_OPERATE_SET_ACTUATOR_COLLET3 0x1009

#define TCH_OPERATE_SET_ACTUATOR_COLLET4 0x100A

#define TCH_OPERATE_SET_ACTUATOR_PNEUMATICCYLSPINDLE1 0x1021

#define TCH_OPERATE_SET_ACTUATOR_PNEUMATICCYLSPINDLE2 0x1022

#define TCH_OPERATE_SET_ACTUATOR_PNEUMATICCYLSPINDLE3 0x1023

#define TCH_OPERATE_SET_ACTUATOR_PNEUMATICCYLSPINDLE4 0x1024

Beispiel:

...

;Schliessen der Abdeckung des Werkzeugmagazins

TchSetSignal tc1 0x1001 OFF

...

;oder mit einer entsprechenden Definition

#define TCH_OPERATE_SET_ACTUATOR_COVER 0x1001

...

...

TchSetSignal tc1 TCH_OPERATE_SET_ACTUATOR_COVER OFF

...

Siehe auch: TchGetSignal, TchCollet, TchCover, TchSelectToolStore, TchSlideToolMagazine, TchGetStatus, TchReset, TchGetTool, TchMeasureTool, TchMeasureTool, TchGetToolRefPos
NotifyError, SignalError
LockToolChange


TchSetStatus

TchSetStatus [device] param toolnumber

Den aktuellen Status des Werkzeugwechselsystems korrigieren

Mit Hilfe dieses Befehls kann der aktuelle Status des Werkzeugwechsel-Systems manipuliert werden. Diese Funktion findet z.B. Verwendung, wenn nach der Ausführung eines eigenen Scripts für einen Werkzeugwechsel bei Auftreten eines Fehlers der aktuelle Zustand des Werkzeugwechselsystems korrigiert werden muß.

Syntax:

In/Rn=TchSetStatus [device] param toolnumber

Verwendete Parameter

device Angabe des Werkzeugwechselsystems, für welches der Befehl ausgeführt werden soll. Insgesamt können zwei Werkzeugwechslereinheiten indiziert werden, die Parameter hierfür lauten TC1 für Wechslersystem 1 (Standard-Werkzeugwechsler) und TC2 für Wechslersystem 2 (Wechsler-Erweiterung).
Die Angabe dieses Parameters ist optional: Wenn weder TC1 noch TC2 angegeben werden, wird die gewünschte Operation für Werkzeugwechselsystem 1 (entspricht TC1) durchgeführt.

param Parameter zur Angabe der gewünschten Statusinformation, die korrigiert werden soll.

NumberOfToolInCollet

Setzen der Werkzeugplatz-Nummer des momentan in der Spannzange befindlichen Werkzeugs. Dem Wechslermodul wird auf diese Weise mitgeteilt, von welchem Werkzeugplatz im Halter das aktuell in der Spannzange der Spindel befindliche Werkzeug stammt.

Achtung: Die zu setzende Werkzeug(platz)nummer entspricht nicht der Werkzeugnummer, über die im Programmablauf mit dem Befehl "GetTool" das gewünschte Werkzeug indiziert wird. Es handelt sich vielmehr um die Nummer des Werkzeugplatzes des Werkzeugmagazins, in welches das Werkzeug abgelegt wird.

toolnumber

Angabe der Nummer des Werkzeugplatzes, aus dem das Werkzeug entnommen wurde, welches sich aktuell in der Spannzange der Frässpindel befindet.

Die Parameter können ohne Berücksichtigung von Groß-/Kleinschreibung angegeben werden.

Beispiele:

(1)

;NumberOfToolInCollet

;Mitteilung an das Werkzeugwechselsystem, daß aktuell

;das Werkzeug von Werkzeugplatz 5 des Werkzeugmagazins 1

;in der Frässpindel eingespannt ist.

TchSetStatus TC1 NumberOfToolInCollet 5

Siehe auch: TchCollet, TchCover, TchSelectToolStore, TchSlideToolMagazine, TchGetStatus, TchReset, TchGetTool, TchMeasureTool, TchGetToolRefPos, TchGetSignal, TchSetSignal
LockToolChange


TchSetToolCuttingTime

TchSetToolCuttingTime [device] toolnr time

Zuweisen eines neuen Wertes für die Schnittzeit eines Werkzeugs

Dieser Befehl wird verwendet, um für die aktuelle Schnittzeit eines Werkzeugs programmatisch einen neuen Wert einzutragen. Die Schnittzeit ist die gemessene Zeit eines Werkzeugs, die es bisher Zerspanarbeit geleistet hat. Die maximale Schnittzeit eines Werkzeugs ist die Standzeit, solange kann das Werkzeug maximal genutzt werden bevor es ausgetauscht oder nachgeschliffen werden muß.

Kriterien für das Weiterzählen der Schnittzeit:

·Das Werkzeug ist das aktuelle Werkzeug in der Spannzange der Frässpindel

·Die Frässpindel ist eingeschaltet und hat eine Drehzahl > 0

·Es findet gerade eine Bewegung mit Normalgeschwindigkeit statt (G01-Bewegung)

Das programmatische Zuweisen eines Wertes für die aktuelle Schnittzeit kann beispielsweise verwendet werden, um in einem Programm nach Ausführung eines Werkzeugwechselablaufs dem neuen Werkzeug automatisch die Schnittzeit 0:00:00 zuzuweisen.

Der neue Wert für die Schnittzeit des Werkzeuges wird in Sekunden übergeben.

Syntax:

Rn=TchSetToolCuttingTime [device] toolnr time

Verwendete Parameter

device Angabe des Werkzeugwechselsystems, für welches der aktuelle Befehl ausgeführt werden soll. Insgesamt können zwei Werkzeugwechslereinheiten indiziert werden, die Parameter hierfür lauten TC1 für Wechslersystem 1 (Standard-Werkzeugwechsler) und TC2 für Wechslersystem 2 (Wechsler-Erweiterung).
Die Angabe dieses Parameters ist optional: Wenn weder TC1 noch TC2 angegeben werden, wird die gewünschte Operation über die Werkzeugverwaltung aufgelöst. Das bedeutet, daß die übergebene Nummer als Werkzeugnummer (und nicht als Werkzeugplatz) interpretiert wird. Werkzeugmagazin und Werkzeugplatz werden intern über die Werkzeugliste ermittelt, anschließend wird die neue Schnittzeit für das entsprechende Werkzeug eingetragen.

toolnr Falls ein Werkzeugmagazin (device, TC1 oder TC2) angegeben wurde, enthält dieser Parameter die Nummer des Werkzeug- bzw. Magazinplatzes, in dem das Werkzeug normalerweise abgelegt ist. Falls kein Werkzeugmagazin angegeben ist, wird der Parameter toolnr als Werkzeugnummer interpretiert. Dieser Werkzeugnummer muß in der Werkzeugverwaltung ein Werkzeugmagazin und eine Werkzeugplatznummer zugewiesen worden sein. Es kann sowohl ein konstanter Wert als auch eine R- oder I-Variable übergeben werden.

time Die neue Schnittzeit, die für das angegebene Werkzeug in der Werkzeugverwaltung eingetragen werden soll. Die Angabe der Schnittzeit erfolgt in Sekunden. Es kann sowohl eine R-Variable als auch ein konstanter Wert angegeben werden.

Beispiel:

...

;Im Halter 1 des Werkzeugmagazins 1 wurde das Werkzeug erneuert.

;Die Schnittzeit wird programmatisch auf 0:00:00 gesetzt

TchSetToolCuttingTime tc1 1 0

;oder

R1=0.0

TchSetToolCuttingTime TC1 1 R1

;oder

I1=1

R1=0.0

TchSetToolCuttingTime TC1 I1 R1

;oder wenn in der Werkzeugverwaltung der Werkzeugnummer 1

;das Werkzeug von Platz 1 in Halter 1 zugeordnet wurde

TchSetToolCuttingTime 1 0

;bzw.

R1=0.0

TchSetToolCuttingTime 1 R1

Siehe auch: TchCollet, TchCover, TchSelectToolStore, TchSlideToolMagazine, TchGetStatus, TchReset, TchGetTool, TchMeasureTool, TchSetToolRefPos, TchGetSignal, TchSetSignal, TchGetToolCuttingTime, TchGetToolRunTime, TchSetToolRunTime
LockToolChange


TchSetToolRefPos

TchSetToolRefPos [device] toolnr refposz

Programmatischer Eintrag der Referenzposition Z eines Werkzeugs

Dieser Befehl wird verwendet, um für das angegebene Werkzeug die Referenzposition der Z-Achse in der Werkzeugverwaltung einzutragen.

Die Ermittlung der Referenzposition Z geschieht in ProNC oder Remote auf folgende Weise: Zunächst wird (mit einer höheren Geschwindigkeit) die Z-Achse mit dem Werkzeug in Richtung des Werkzeug-Messtasters gefahren, bis die Werkzeugspitze den Messtaster betätigt und das Umschalten des Signalpegels bewirkt. Um die Messung möglichst präzise durchzuführen, wird anschließend mit einer geringen Geschwindigkeit in entgegengesetzter Richtung gefahren, bis der Messtaster erneut umschaltet. Als Referenzposition Z des aktuellen Werkzeugs ist nun die Position der Z-Achse definiert, die beim Herausfahren aus dem Messtaster im Moment des erneuten Umschaltens erreicht ist.

Wenn alle in einem CNC-Programm verwendeten Werkzeuge auf diese Weise vermessen sind, kann mit Hilfe der ermittelten Referenzpositionen eine Längendifferenz für die einzelnen Werkzeuge errechnet werden, die für die Realisierung einer eigenen Werkzeuglängenkorrektur verwendet werden kann.

In manchen Fällen, z.B. wenn das zu vermessende Werkzeug eine unregelmäßige Schneidengeometrie hat oder ein Werkzeug "On-the-fly" mittels durchfahren einer Lichtschranke vermessen werden soll, kann dieses Standardverfahren mit dem Werkzeug-Messtaster nicht angewendet werden. Die Ermittlung der Referenzposition Z des Werkzeugs kann mit einem eigenen, auf die jeweilige Situation zugeschnittenen Programm und mit Verwendung des Befehls "TchSetToolRefPos" dennoch automatisiert erfolgen.

Syntax:

In/Rn=TchSetToolRefPos [device] param refposz

Verwendete Parameter

device Angabe des Werkzeugwechselsystems, für welches der aktuelle Befehl ausgeführt werden soll. Insgesamt können zwei Werkzeugwechslereinheiten indiziert werden, die Parameter hierfür lauten TC1 für Wechslersystem 1 (Standard-Werkzeugwechsler) und TC2 für Wechslersystem 2 (Wechsler-Erweiterung).
Die Angabe dieses Parameters ist optional: Wenn weder TC1 noch TC2 angegeben werden, wird die gewünschte Operation über die Werkzeugverwaltung aufgelöst. Das bedeutet, daß die übergebene Nummer als Werkzeugnummer (und nicht als Werkzeugplatz) interpretiert wird. Werkzeugmagazin und Werkzeugplatz werden intern über die Werkzeugliste ermittelt, anschließend wird die Referenzposition Z für das entsprechende Werkzeug eingetragen.

toolnr Falls ein Werkzeugmagazin (device: TC1 oder TC2) angegeben wurde, enthält dieser Parameter die Nummer des Werkzeug- bzw. Magazinplatzes, in dem das Werkzeug normalerweise abgelegt ist. Falls kein Werkzeugmagazin angegeben ist, enthält dieser Parameter eine Werkzeugnummer. Dieser Werkzeugnummer muß in der Werkzeugverwaltung ein Werkzeugmagazin und eine Werkzeugplatznummer zugewiesen worden sein.

refposz Angabe der Referenzposition Z, welche für das mittels "device" (optional) und "toolnr" angegebene Werkzeug eingetragen werden soll.

Siehe auch: TchGetToolRefPos, TchCollet, TchCover, TchSelectToolStore, TchSlideToolMagazine, TchGetStatus, TchReset, TchGetTool, TchMeasureTool, TchGetSignal, TchSetSignal
LockToolChange


TchSetToolRunTime

TchSetToolRunTime [device] toolnr

Zuweisen eines neuen Wertes für die Laufzeit eines Werkzeugs

Dieser Befehl wird verwendet, um für die aktuelle Laufzeit eines Werkzeugs programmatisch einen neuen Wert zu übergeben. Die aktuelle Laufzeit ist die gemessene Zeit eines Werkzeugs, die es bisher bei laufender Frässpindel in Verwendung war.

Kriterien für das Weiterzählen der Laufzeit:

·Das Werkzeug ist das aktuelle Werkzeug in der Spannzange der Frässpindel

·Die Frässpindel ist eingeschaltet und hat eine Drehzahl > 0

Der neue Wert für die Laufzeit des Werkzeuges wird in Sekunden übergeben.

Syntax:

Rn=TchSetToolRunTime [device] toolnr

Verwendete Parameter

device Angabe des Werkzeugwechselsystems, für welches der aktuelle Befehl ausgeführt werden soll. Insgesamt können zwei Werkzeugwechslereinheiten indiziert werden, die Parameter hierfür lauten TC1 für Wechslersystem 1 (Standard-Werkzeugwechsler) und TC2 für Wechslersystem 2 (Wechsler-Erweiterung).
Die Angabe dieses Parameters ist optional: Wenn weder TC1 noch TC2 angegeben werden, wird die gewünschte Operation über die Werkzeugverwaltung aufgelöst. Das bedeutet, daß die übergebene Nummer als Werkzeugnummer (und nicht als Werkzeugplatz) interpretiert wird. Werkzeugmagazin und Werkzeugplatz werden intern über die Werkzeugliste ermittelt, anschließend wird die neue Laufzeit für das entsprechende Werkzeug eingetragen.

toolnr Falls ein Werkzeugmagazin (device, TC1 oder TC2) angegeben wurde, enthält dieser Parameter die Nummer des Werkzeug- bzw. Magazinplatzes, in dem das Werkzeug normalerweise abgelegt ist. Falls kein Werkzeugmagazin angegeben ist, wird der Parameter toolnr als Werkzeugnummer interpretiert. Dieser Werkzeugnummer muß in der Werkzeugverwaltung ein Werkzeugmagazin und eine Werkzeugplatznummer zugewiesen worden sein.

time Die neue Laufzeit, die für das angegebene Werkzeug in der Werkzeugverwaltung eingetragen werden soll. Die Angabe der Laufzeit erfolgt in Sekunden. Es kann sowohl eine R-Variable als auch ein konstanter Wert angegeben werden.

Beispiel:

...

;Im Halter 1 des Werkzeugmagazins 1 wurde das Werkzeug erneuert.

;Die Laufzeit wird programmatisch auf 0:00:00 gesetzt

TchSetToolRunTime tc1 1 0

;oder

R1=0.0

TchSetToolRunTime TC1 1 R1

;oder

I1=1

R1=0.0

TchSetToolRunTime TC1 I1 R1

;oder wenn in der Werkzeugverwaltung der Werkzeugnummer 1

;das Werkzeug von Platz 1 in Halter 1 zugeordnet wurde

TchSetToolRunTime 1 0

;bzw.

R1=0.0

TchSetToolRunTime 1 R1

Siehe auch: TchCollet, TchCover, TchSelectToolStore, TchSlideToolMagazine, TchGetStatus, TchReset, TchGetTool, TchMeasureTool, TchSetToolRefPos, TchGetSignal, TchSetSignal, TchGetToolCuttingTime, TchSetToolCuttingTime, TchGetToolRunTime
LockToolChange


TchSlideToolMagazine

TchSlideToolMagazine [device] function

Ein-/Ausfahren des Werkzeugmagazins eines Werkzeugwechselsystems

Dieser Befehl dient dazu, einzelne Komponenten des Werkzeugwechsel-Systems aus dem CNC-Programm oder aus benutzerdefinierten Skripten heraus zu steuern.

Bei einigen Sonderbauformen von Werkzeugwechselsystemen wird das Werkzeugmagazin vor der Durchführung des Werkzeugwechselzyklus aus einer Parkposition in eine Arbeitsposition gefahren. Nach der Ausführung des Werkzeugwechsels wird das Werkzeugmagazin wieder in die Parkposition gefahren.

Mit Hilfe des Befehls TchSlideToolMagazine kann das Werkzeugmagazin programmatisch in die Arbeits- bzw. Parkposition gefahren werden.

Hinweis: Diese Funktion bietet direkten Zugriff auf die Steuerung des Werkzeugwechselsystems. Der Befehl darf auf keinen Fall durch einen manuellen Aufruf während einer laufenden Bearbeitung ausgeführt werden.
Weiterhin sollte vor jedem Aufruf kontrolliert werden, ob Kollisionsgefahr mit anderen Komponenten der Maschine (Z-Achse, Frässpindel, angebrachte Vorrichtungen etc.) besteht.

Syntax:

TchSlideToolMagazine [device] function

Verwendete Parameter

device Angabe des Werkzeugwechselsystems, für welches der aktuelle Befehl ausgeführt werden soll. Insgesamt können zwei Werkzeugwechslereinheiten indiziert werden, die Parameter hierfür lauten TC1 für Wechslersystem 1 (Standard-Werkzeugwechsler) und TC2 für Wechslersystem 2 (Wechsler-Erweiterung).
Die Angabe dieses Parameters ist optional: Wenn weder TC1 noch TC2 angegeben werden, wird die gewünschte Operation für Werkzeugwechselsystem 1 durchgeführt.

function Angabe der gewünschten Operation. Gültige Parameter sind "Out" um das Werkzeugmagazin in die Arbeitsposition zu fahren sowie "In" um das Werkzeugmagazin in die Parkposition zu fahren. Alternativ können die Parameter "1" für "Out" bzw. "0" für "In" verwendet werden.

Die Parameter können ohne Berücksichtigung von Groß-/Kleinschreibung angegeben werden.

Beispiel:

...

;Werkzeugmagazin von Wechslersystem 1 in die Arbeitsposition fahren

TchSlideToolMagazine tc1 out

;oder

TchSlideToolMagazine Tc1 1

;oder

TchSlideToolMagazine Out

;oder

TchSlideToolMagazine 1

;Sinnvolle Funktionen...

Delay 1000

;Werkzeugmagazin von Wechslersystem 1 wieder in die Parkposition fahren

TchSlideToolMagazine tc1 IN

;oder

TchSlideToolMagazine Tc1 0

;oder

TchSlideToolMagazine In

;oder

TchSlideToolMagazine 0

...

Siehe auch: TchCollet, TchCover, TchSelectToolStore, TchGetStatus, TchReset, TchGetTool, TchMeasureTool, TchGetToolRefPos, TchGetSignal, TchSetSignal
LockToolChange


Teach

Aufruf des Dialogs "Geometriedatei" zur Bearbeitung von Framepositionen

Mit dem Befehl TEACH kann im Anwenderprogramm die Dialogbox "Geometriedatei" zur Laufzeit des CNC-Programmes aktiviert werden.

Mit Hilfe dieses Dialogfeldes können Korrekturen von Framepositionen online vorgenommen werden, ohne den Automatikbetrieb verlassen zu müssen. Das Dialogfeld kann mit den Funktionen "OK" bzw. "Abbrechen" verlassen werden, danach wird das CNC-Programm mit dem unmittelbar nach TEACH folgenden Befehl fortgesetzt. Falls das Dialogfeld mit "OK" beendet wird, werden alle vorgenommenen Änderungen der Framepositionen übernommen, anderenfalls verworfen.

Beispiel:

MoveAbs X10.0

;Bearbeiten der Framepositionen im Dialog

Teach

;Anfahren einer Frameposition, die im

;Dialog modifizieret werden konnte

Q4=POSITION1

MoveFrame Q4


TeachOff

Teach-Modus der Steuerung ausschalten

Der Teach-Modus ist eine besondere Betriebsart der Steuerung, die je nach Typ der vorliegenden Steuerung unterschiedliche Auswirkungen hat. Es ist in seltenen Fällen sinnvoll, während einer laufenden Bearbeitung den Teach-Modus der Steuerung zu aktivieren, z.B. um ein spontaneres Ansprechverhalten beim Start und Beenden von Bewegungen zu erreichen.

Steuerung | Auswirkung des Teach-Modus
Schrittmotorsteuerung IMC (IMC4, IMC-M/P, S8...) | Keine
CAN-Bus Steuerung | Für die Ausführung einer Bewegung wird die für die Option "TeachModeBuffer" festgelegte Buffergröße für die Stützpunkte einer Segmentbewegung verwendet.
Steuerung Logosol | Keine

Der Befehl TeachOff deaktiviert den Teach-Modus der Steuerung.

Siehe auch: TeachOn


TeachOn

Teach-Modus der Steuerung einschalten

Der Teach-Modus ist eine besondere Betriebsart der Steuerung, die je nach Typ der vorliegenden Steuerung unterschiedliche Auswirkungen hat. Es ist in seltenen Fällen sinnvoll, während einer laufenden Bearbeitung den Teach-Modus der Steuerung zu aktivieren, z.B. um ein spontaneres Ansprechverhalten beim Start und Beenden von Bewegungen zu erreichen.

Steuerung | Auswirkung des Teach-Modus
Schrittmotorsteuerung IMC (IMC4, IMC-M/P, S8...) | Keine
CAN-Bus Steuerung | Für die Ausführung einer Bewegung wird die für die Option "TeachModeBuffer" festgelegte Buffergröße für die Stützpunkte einer Segmentbewegung verwendet.
Steuerung Logosol | Keine

Der Befehl TeachOff aktiviert den Teach-Modus der Steuerung.

Siehe auch: TeachOff


Time

Time t

Angabe einer Wartezeit im Programm

Angabe einer Wartezeit. Die Verweilzeit t wird in Millisekunden angegeben. Im Programmlauf wird eine Dialogbox mit einer Anzeige der verbleibenden Restzeit eingeblendet.

Während des Ablaufs der Wartezeit und damit der Dialogbox ist die Programmbedienung blockiert, aus diesem Grund empfiehlt sich der Einsatz des Befehls Time nur an Stellen im Programm, wo die Wartezeit nicht zyklisch durchlaufen wird. In zyklischen Operationen wie Wiederholschleifen, Endlosausgaben usw. sollte stattdessen der Befehl Delay verwendet werden.

Beispiel:

Time 2000

Siehe auch: Wait, Delay


TOff

Ausschalten des Testmodus der Steuerung

Der Testmodus der Steuerung ist ein spezieller Betriebszustand des Steuerungskerns bzw. der Endstufen, in dem die eigentlich erforderliche Referenzierung der Achsen umgangen werden kann und die Betriebsbereitschaft der Achse(n) durch Setzen der aktuellen Achsposition als Referenzposition hergestellt werden kann.

Der Ablauf

·Testmodus einschalten

·Referenzieren aller Achsen

·Testmodus ausschalten

bringt die Maschine in einen Zustand, in dem alle Achsen fehlerfrei verfahren werden können. Dies ist insbesondere im Fall eines defekten Referenzschalters hilfreich, in dem das Positionieren der Achsen an die Serviceposition zum Tausch des Referenzschalters sonst nicht ohne weiteres möglich wäre.

Hinweis: Der Testmodus sollte nicht zur Herstellung der Betriebsbereitschaft verwendet werden, um anschließend ein Bearbeitungsprogramm zu starten. Diese Vorgehensweise ist nur zulässig, wenn im Bearbeitungsprogramm selbst alle Achsen programmatisch referenziert werden.

Beispiel:

TOn ;Testmodus einschalten

Ref XYZ ;alle 3 Achsen referenzieren

TOff ;Testmodus ausschalten

Siehe auch: TOn


TOn

Einschalten des Testmodus der Steuerung

Der Testmodus der Steuerung ist ein spezieller Betriebszustand des Steuerungskerns bzw. der Endstufen, in dem die eigentlich erforderliche Referenzierung der Achsen umgangen werden kann und die Betriebsbereitschaft der Achse(n) durch Setzen der aktuellen Achsposition als Referenzposition hergestellt werden kann.

Der Ablauf

·Testmodus einschalten

·Referenzieren aller Achsen

·Testmodus ausschalten

bringt die Maschine in einen Zustand, in dem alle Achsen fehlerfrei verfahren werden können. Dies ist insbesondere im Fall eines defekten Referenzschalters hilfreich, in dem das Positionieren der Achsen an die Serviceposition zum Tausch des Referenzschalters sonst nicht ohne weiteres möglich wäre.

Hinweis: Der Testmodus sollte nicht zur Herstellung der Betriebsbereitschaft verwendet werden, um anschließend ein Bearbeitungsprogramm zu starten. Diese Vorgehensweise ist nur zulässig, wenn im Bearbeitungsprogramm selbst alle Achsen programmatisch referenziert werden.

Beispiel:

TOn ;Testmodus einschalten

Ref XYZ ;alle 3 Achsen referenzieren

TOff ;Testmodus ausschalten

Siehe auch: TOff


ToolRefPos

Abfrage der Referenzposition Z eines Werkzeugs

Alias für den Befehl TchGetToolRefPos.

Siehe TchGetToolRefPos


TRP

Abfrage der Referenzposition Z eines Werkzeugs

Alias für den Befehl TchGetToolRefPos.

Siehe TchGetToolRefPos


Type

Type "text"

Ausgabe eines Hinweistextes

Ausgabe eines Hinweistextes text in den Dialog "Display" oder/und den Dialog "Bearbeitungsfortschritt" (ProNC oder Remote).

Hinweis: Dieser Befehl ist veraltet, stattdessen sollte der Befehl "XTYPE" verwendet werden.

Siehe: XType


TxCAN

TxCAN node_id i_var1 sdo_parameter_1 sdo_parameter_2 i_var2

Schreiben eines Eintrags im Objektverzeichnis eines CAN-Knotens

Show/Hide Hidden Text

Der Befehl TxCAN dient zum Beschreiben eines Eintrags im Objektverzeichnis (Object Dictionary, OD) eines CAN-Knotens. Für die Übertragung der Informationen werden Servicedatenobjekte verwendet (Service Data Objects, SDO). Diese Servicedatenobjekte stellen einen Dienst zum Zugriff auf das Objektverzeichnis bereit.

Hinweise:

Die Befehle zum Senden (TxCAN) bzw. Empfangen (RxCAN) sind nur bei einer PC-Steuerung mit CAN-Interface von isel (isel-CAN-Dongle oder isel-CAN-PCI-Karte) nutzbar, es werden keine OEM-CAN-Schnittstellen unterstützt.

Das Senden von Daten per SDO bzw. Empfangen von Daten per SDO erfolgt stets mit der aktuellen Übertragungsgeschwindigkeit des CAN-Bus (i.A. 1 MBit/sec). Diese Übertragungsrate wird durch die CAN-Motion Control eingestellt und muss deshalb nicht im Befehl TxCAN oder RxCAN angegeben werden.

Verwendete Parameter:

node_id Die Knotenadresse des anzusprechenden Geräts im Bereich 1...127

i_var1 vor Befehlsausführung: Der Steuercode für die Art der SDO-Kommunikation (BYTE)
nach Befehlsausführung: Der Returncode (Ergebnis) des Zugriffs

sdo_parameter1/2 Die SDO-Parameter geben an, welcher Eintrag im Objektverzeichnis gelesen werden soll. Dies erfolgt durch die Angabe von Index (ein Parameter des Typs WORD) und Subindex (ein Parameter des Typs BYTE). Die Angabe dieser Parameter kann in dezimaler oder hexadezimaler Form erfolgen.
i_var2 Diese Variable enthält die in das Objektverzeichnis des CAN-Knotens zu übertragenden Daten (max. 4 Byte).

Steuercodes für die SDO-Kommunikation

Für die SDO-Kommunikation werden die Schreib- und Leseanforderungen durch einen Steuercode im "SDO command specifier" festgelegt (Bezug: "CANopen high-level protocol for CAN-bus" -> SDO-Kommunikation -> SDO Command specifier "Initiate Domain Download" / "Initiate Domain Upload").

Für die einfachere Implementierung in ProNC kann eine Liste von Definitionen verwendet werden. Diese Liste kann mit Copy-And-Paste direkt in den PAL-Quellcode übernommen werden.

Mehr...

Die Liste der Definitionen für die Steuercodes der SDO-Zugriffe kann im PAL-Programm im Programmabschnitt mit den Definitionen von Textersatz eingefügt werden. Bei Verwendung der Befehle RxCAN und TxCAN können die Steuercodes dann "im Klartext" angegeben werden.

;--------------------------------------------------------------------------

; defines für SDO-Kommunikation : Initiate Domain Download Protocol

; e.g. Write Request vom Master->Slave bzw. Write Response Slave->Master

; Ref.: CiA DS 202-2 page 15

;--------------------------------------------------------------------------

#define SDO_WRQLONG 0x23 ; SDO Write ReQuest Typ "long"

#define SDO_WRQWORD 0x2B ; SDO Write ReQuest Typ "word"

#define SDO_WRQBYTE 0x2F ; SDO Write ReQuest Typ "byte"

#define SDO_WRPLONG 0x60 ; SDO Write ResPonse Typ "long"

#define SDO_WRPWORD 0x68 ; SDO Write ResPonse Typ "word"

#define SDO_WRPBYTE 0x6C ; SDO Write ResPonse Typ "byte"

;--------------------------------------------------------------------------

; defines für SDO-Kommunikation : Initiate Domain Upload Protocol

; e.g. Read Request vom Master->Slave bzw. Read Response Sl->Master

; Ref.: CiA DS 202-2 p. 18

;--------------------------------------------------------------------------

#define SDO_RRQLONG 0x40 ; SDO Read ReQuest Typ "long"

#define SDO_RRQWORD 0x48 ; SDO Read ReQuest Typ "word"

#define SDO_RRQBYTE 0x4C ; SDO Read ReQuest Typ "byte"

#define SDO_RRPLONG 0x43 ; SDO Read ResPonse Typ "long"

#define SDO_RRPWORD 0x4B ; SDO Read ResPonse Typ "word"

#define SDO_RRPBYTE 0x4F ; SDO Read ResPonse Typ "byte"

;--------------------------------------------------------------------------

; defines für SDO-Kommunikation : Rueckgabewert fuer Fehler

;--------------------------------------------------------------------------

#define SDO_ERP 0x80 ; SDO Error ResPonse

Beispiel:

#define SDO_WRQLONG 0x23 ; SDO Write ReQuest Typ "long"

#define SDO_WRQWORD 0x2B ; SDO Write ReQuest Typ "word"

#define SDO_WRQBYTE 0x2F ; SDO Write ReQuest Typ "byte"

#define SDO_WRPLONG 0x60 ; SDO Write ResPonse Typ "long"

#define SDO_WRPWORD 0x68 ; SDO Write ResPonse Typ "word"

#define SDO_WRPBYTE 0x6C ; SDO Write ResPonse Typ "byte"

#define SDO_RRQLONG 0x40 ; SDO Read ReQuest Typ "long"

#define SDO_RRQWORD 0x48 ; SDO Read ReQuest Typ "word"

#define SDO_RRQBYTE 0x4C ; SDO Read ReQuest Typ "byte"

#define SDO_RRPLONG 0x43 ; SDO Read ResPonse Typ "long"

#define SDO_RRPWORD 0x4B ; SDO Read ResPonse Typ "word"

#define SDO_RRPBYTE 0x4F ; SDO Read ResPonse Typ "byte"

#define SDO_ERP 0x80 ; SDO Error ResPonse

(1)

;Eine Endlosschleife wird durchlaufen, solange

;der Eingang E1.1 gesetzt ist

;Lesen der Objektverzeichnisse der CAN-Endstufen 1 ... 3,

;dort jeweils den Index 0x100B = Knotenadresse

;code = SDO_RRQLONG = 0x40

For R1=1,3,1 ;3 Endstufen, Knoten 1 bis 3

I1= SDO_RRQLONG ;Variable fuer SDO-code bzw. Returncode

I2= 0 ;Variable fuer Aufnahme der Daten

;RxCAN node_id i_var1 sdo_parameter i_var2 ;Lesen des Objektverz.-Eintrages

RxCAN R1 I1 0x100B 0x00 I2 ;SDO_parameter: OD_index=0x100B OD_subindex=0x00

If I1!=SDO_ERP

;es wurde fehlerfrei gelesen, die Knotenadresse steht jetzt in I2

MessageBox OK "Von Node %R1% wurde Knotenadresse %I2% gelesen"

EndIf

EndFor

(2)

;Schreiben von Objektverzeichnis-Eintraegen mehrerer Knoten

For R1=0,255,1

;Schreiben des Ports A1 eines CAN-IO-Moduls vom Typ

;CAN-I/O 16 16 mit der Knotenadresse 16

;Hinweis: Subindex=0x01 -> lokaler Ausgabeport 1 des CAN-I/O-Modules

; Subindex=0x02 -> lokaler Ausgabeport 2 des CAN-I/O-Modules

I3=SDO_WRQBYTE ;Variable fuer SDO-code bzw. Returncode

I4=R1 ;Variable mit den einzutragenden Daten

;TxCAN node_id I_variable sdo_parameter I_variable ;Schreiben des Objektverz.-Eintrages

TxCAN 16 I3 0x6200 0x01 I4 ;SDO_parameter: OD_index=0x6200 OD_subindex=0x01

;Schreiben des Ports A2 des CAN-I/O 16 16 (Knoten 16) -> SubIndex=2

I3=SDO_WRQBYTE ;Variable fuer SDO-code bzw. Returncode

I4=-R1 ;Variable mit den einzutragenden Daten

;TxCAN node_id I_variable sdo_parameter I_variable ;Schreiben des Objektverz.-Eintrages

TxCAN 16 I3 0x6200 0x02 I4 ;SDO_parameter: OD_index=0x6200 OD_subindex=0x01

;Schreiben des Ports A2 des CAN-I/O 8/12-4/1 (Knoten 16) -> SubIndex=3

I3= SDO_WRQBYTE ;Variable fuer SDO-code bzw. Returncode

I5=R1

;TxCAN node_id I_variable sdo_parameter I_variable ;Schreiben des Objektverz.-Eintrages

TxCAN 16 I3 0x6200 0x03 I5 ;SDO_parameter: OD_index=0x6200 OD_subindex=0x03

EndFor

Siehe auch: RxCan


TxCom

TxCom anz i/str_var

Senden von Zeichen über die serielle Schnittstelle

Dieser Befehl wird für das Senden von Zeichen über eine geöffnete serielle Schnittstelle verwendet.

Für das Senden und Empfangen von Zeichen über eine serielle Schnittstelle des PC's ist es erforderlich, zuvor die gewünschte Schnittstelle mit Hilfe des Befehls "OpenCom" zu öffnen und auf die geforderten Übertragungsparameter einzustellen. Nach Abschluß aller Sende- bzw. Empfangsaktivitäten muß die serielle Schnittstelle mit dem Befehl "CloseCom" geschlossen werden.

Hinweis:

Die Befehle zum Senden (Tx) bzw. Empfangen (Rx) von Zeichen über eine serielle Schnittstelle COMx beziehen sich immer auf die jeweilige, für eine bestimmte Übertragungsrate geöffnete Schnittstelle COMn (n=1...Anzahl der Schnittstellen). Es ist also nicht erforderlich, in den Befehlen für das Senden und Empfangen von Zeichen die Nummer der geöffneten Schnittstelle anzugeben. Falls innerhalb eines ISO- oder PAL-Anwendungsprogrammes z.B. von der Schnittstelle COM1 zur Schnittstelle COM3 gewechselt werden soll, so ist COM1 zu schließen und danach COM3 zu öffnen.

Verwendete Parameter:

anz Anzahl der Zeichen, die mit dem aktuellen Befehl übertragen werden sollen.

i_var Angabe einer I-Variablen als Beginn des I-Variablenbereichs, deren Inhalt jeweils über sie serielle Schnittstelle gesendet werden soll. Beim Senden mehrerer Zeichen wird der Inhalt der I-Variablen mit dem angegebenen Index sowie den unmittelbar folgenden Indizes übertragen. Sollen beispielsweise 6 Zeichen übertragen werden und als Index für die R-Variable wird I5 angegeben, so wird mit dem Befehl "TxCom 6 I5" der Inhalt der I-Variablen I5 - I10 übertragen.

Allgemein gilt: Beim Senden des Inhalts von n I-Variablen und Angabe der I-Variablen Ii wird der Bereich der I-Variablen mit den Indizes i bis i+(n-1) übertragen.
str_var Angabe einer String-Variablen, welche die zu übertragenden Zeichen als Zeichenkette enthält.

Sonderzeichen:

Escape-Sequencen (z.B. \n oder \r oder \t oder \v) in der zu sendenden Zeichenkette erkannt und als das entsprechende ASCII-Byte gesendet

- Bell = "\a" = 0x07
- Backspace = "\b" = 0x08
- H-TAB = "\t" = 0x09
- V-TAB = "\v" = 0x0B
- LineFeed = "\n" = 0x0A
- FormFeed = "\f" = 0x0C
- CR = "\r" = 0x0D
- HexaConstant = "\xHH = 0xHH = hexa value

Beispiele:

;Oeffnen der Schnittstelle COM1

;Definition der Baudrate 19200 Bit/sec

OpenCom 1 19200

;Senden von 6 Bytes über die serielle Schnittstelle COM1

I10=6

I1=0x31 I2=0x32 I3=0x33 I4=0x34 I5=0x35

;Steuerzeichen CR=13 dez am Ende

I6=0x0d

;6 Byte ab I1 senden

TxCom I10 I1

;Ueberpruefung des Sendevorgangs

;I10 enthaelt die Anzahl gesendeter Zeichen

If I10!=6

MessageBox OK "Fehler bei Tx: zu wenig Zeichen gesendet ..."

EndIf

;Senden des Inhaltes der STR-Variable Str1 als

;Zeichenkette über die serielle Schnittstelle COM1

;Anzahl der zu sendenden Zeichen

I10=40

;Initialisierung der String-Variablen

Str1="Hello how are you ?! 1234567890 =&/() ,;.ÄÖÜ"

;Die ersten 40 Zeichen der Str-Variable Str1 werden gesendet

TxCom I10 Str1

;1 Sekunde warten

Delay 1000

;Empfang von 6 Bytes über die COM1

;6 Byte sollen empfangen werden

I10=6

I11=0 I12=0 I13=0 I14=0 I15=0 I16=0

;Die 6 Rx-Bytes ab I11 abspeichern in I11, I12, I13 ...

RxCom I10 I11

;I10 enthaelt die Anzahl empfangener Zeichen

If I10==6

Display 1 1 "Rx: %I10% Zeichen -> %I11% %I12% %I13% %I14% %I15% %I16% "

Else

MessageBox ERROR OK "Fehler bei Rx: Es wurden nur %I10% Zeichen empfangen..."

EndIf

; 44 Byte sollen als Zeichenkette empfangen werden

I10=44

Str2="..."

;44 Byte werden in Str2 uebertragen...

RxCom I10 Str2

;Geöffnete Schnittstelle COM1 schließen:

CloseCom

Siehe auch: OpenCom, CloseCom, RxCom


TxEth

TxEth handle maxnum [Strn][In] ErrorCode=Im

Senden von Daten über eine Ethernet-Verbindung

Dieser Befehl dient zum Senden von Daten über eine zuvor mit dem Befehl "OpenEth" hergestellte Ethernet-Verbindung.

Verwendete Parameter:

handle | Dieser Parameter ist der Handle der Verbindung, der bei Aufruf der Funktion OpenEth zurückgegeben wurde und normalerweise in einer Integer-Variablen abgelegt wurde.
maxnum | Eine Integer-Variable, welche die maximale Anzahl der zu sendenden Zeichen enthält. Nach dem erfolgreichen Aufruf der Funktion enthält diese Variable die tatsächliche Anzahl der gesendeten Zeichen.
ErrorCode | Dieser Parameter dient zur Angabe einer Integer-Variablen mit dem Index m, in welcher der Fehlercode des Aufrufs abgelegt wird.
Strn | Bei der Übertragung von Zeichenketten: Eine String-Variable mit dem Index n, welche die zu sendenden Zeichen enthält.
In | Bei der Übertragung von Binärdaten: Eine Integer-Variable mit dem Index n, welche die erste von mehreren aufeinanderfolgenden Integer-Variablen benennt, welche die zu sendenden ASCII-Zeichen enthalten. Die Anzahl der zu sendenden Zeichen wird durch den Parameter maxnum (eine Integer-Variable, welche die Anzahl enthält) festgelegt.

Beispiel (1):

;Senden einer Zeichenkette

ProgBegin

;Verbindungsaufbau zwischen Client und Server:

;Verbindungsdaten IP-Adresse und Port-Nummer initialisieren

Str1="127.0.0.1" I1=23 ;IP-Adresse des Localhost

;oder

Str1="192.160.12.77" I1=23 ;IP-Adresse im lokalen Netzwerk

Display Add "Oeffne IP host %S1%, port=%I1% ..."

I0=0 ;Integer-Variable fuer den Handle der Verbindung

I11=0 ;Integer-Variable fuer den ErrorCode

I0=OpenEth Str1 I1 ErrorCode=I11

If(I0==0)

Display Add "Verbindung konnte nicht hergestellt werden..."

ProgEnd

EndIf

Str3="Zu sendende Zeichenkette"

I3=StrGetLength(Str3) ;Anzahl der Zeichen im Str3 ermitteln

;TxETH: Senden an IP-Host

TxEth I0 I3 Str3 ErrorCode=I11 ;Anzahl der zu sendenden Zeichen ist in I3

CloseEth I0

Beispiel (2):

;Senden von 6 Byte Binaerdaten, die zu sendenden Bytes

;befinden sich in 6 aufeinanderfolgenden globalen Integer-Variablen

ProgBegin

;Verbindungsaufbau zwischen Client und Server:

;Verbindungsdaten IP-Adresse und Port-Nummer initialisieren

Str1="127.0.0.1" I1=23 ;IP-Adresse des Localhost

;oder

Str1="192.160.12.77" I1=23 ;IP-Adresse im lokalen Netzwerk

Display Add "Oeffne IP host %S1%, port=%I1% ..."

I0=0 ;Integer-Variable fuer den Handle der Verbindung

I11=0 ;Integer-Variable fuer den ErrorCode

I0=OpenEth Str1 I1 ErrorCode=I11

If(I0==0)

Display Add "Verbindung konnte nicht hergestellt werden..."

ProgEnd

EndIf

I3=6 ;6 Zeichen senden

$I1=GetPort E1 ;Zu sendende Integer-Variablen initialisieren

$I2=GetPort A1

$I3=GetPort E2

$I4=GetPort A2

$I5=GetPort E3

$I6=GetPort A3

;TxETH: Senden an IP-Host:

TxEth I0 I3 $I1 ;Anzahl der zu sendenden Zeichen ist in I3

CloseEth I0

Siehe auch: OpenEth, CloseEth, RxEth, GetStatusEth


U

Adressbuchstabe der Achse U

Adressbuchstabe der Achse U in der ersten Motion Control.

Siehe Adressbuchstaben


U1

Adressbuchstabe der Achse U

Adressbuchstabe der Achse U in der ersten Motion Control.

Siehe Adressbuchstaben


U2

Adressbuchstabe der Achse U

Adressbuchstabe der Achse U in der zweiten Motion Control.

Siehe Adressbuchstaben


User, UserBat

User( R1 R2 ... Rn Pos1.x ... Pos1.c )

UserBat( R1 R2 ... Rn Pos1.x ... Pos1.c )

Aufruf einer benutzerspezifischen Batch-Datei

In ProNC ist es möglich, zur Programmlaufzeit des ISO/PAL- Anwenderprogramms kundenspezifische Batch-Dateien zu aktivieren. Zu diesem Zweck muss im Verzeichnis \CNCWorkbench\BIN die aufzurufende Datei user.bat vorhanden sein. Diese Datei kann der Anwender entsprechend seiner konkreten Aufgabenstellung beliebig gestalten.

Folgende Parameter finden Verwendung:

RX, Ix Eine I-Variable oder eine R-Variable mit dem Index x, die den Rückgabewert der Funktion erhält. Das Binden des Rückgabewertes an eine Variable ist zwingend erforderlich.

R1 ... Rn Angabe von R-Variablen, die als Parameter an die Batchdatei übergeben werden sollen.

Pos1.x, Pos1.y,... Angabe der aktuellen Achsposition der Achse (Pos1.x, Pos1.y, Pos1.z, Pos1.a, Pos1.b, Pos1.c) als Parameter für die Batchdatei. Um die aktuellen Positionen von Achssystem 2 zu übergeben, ist die Benennung als Pos2.x, Pos2.y, ... Pos2.c erforderlich.

Hinweis: Es können maximal 9 Parameter an die Batchdatei übergeben werden.

Beispiele:

;Aktivierung der User-Batch-Datei user.bat

;mit Übergabe der drei Parameter

;(Istwerte der Achsen X, Y und Z):

R1 = UserBat( POS1.X POS1.Y POS1.Z )

;Aktivierung der User-Batch-Datei user.bat

;mit Übergabe der Variablen R1 bis R5

;als Parameter:

R11 = User( R1 R2 R3 R4 R5 )

Siehe auch: UserDLL, UserExe


UserDLL

UserDLL dllname funktionsname

Aufruf einer Funktion in einer benutzerspezifischen Bibliothek (DLL)

In ProNC ist es möglich, zur Programmlaufzeit des ISO/PAL- Anwenderprogramms Funktionen aus kundenspezifischen Bibliotheken aufzurufen. Diese Bibliotheken sind DLL's (Dynamic Link Libraries), welche nach bestimmten Regeln erstellt sein müssen. Die DLL muss sich im gleichen Verzeichnis wie die Applikation ProNC.EXE befinden, das wäre das Verzeichnis Lw\CNCWorkbench\Bin (Lw=Installationslaufwerk). Zur Übergabe von Parametern greift die DLL auf die R-Variablen zu, Ergebnisse von Operationen innerhalb der aufgerufenen Funktionen der Bibliothek werden in die R-Variablen geschrieben.

Folgende Parameter finden Verwendung:

dllname

Name der Bibliothek, die verwendet werden soll. Die Angabe des Bibliotheknamens erfolgt ohne die Extension "DLL".

funktionsname

Name der Funktion in der Bibliothek, die ausgeführt werden soll.

Beispiel:

; Aktivierung der Funktion "fn_ResetDrucker"

; in der User-Dll LabelPrinter.DLL

R2=UserDll LabelPrinter fn_ResetDrucker

Siehe auch: User, UserExe


UserExe

UserExe programmname

Aufruf einer externen Applikation

In ProNC ist es möglich, zur Programmlaufzeit des ISO/PAL- Anwenderprogramms kundenspezifische Anwenderprogramme zu aktivieren. Zu diesem Zweck muss das zu startende Programm im Verzeichnis Lw\CNCWorkbench\BIN vorhanden sein (Lw=Installationslaufwerk). Diese Applikation kann der Anwender entsprechend seiner konkreten Aufgabenstellung beliebig gestalten.

Folgende Parameter finden Verwendung:

programmname

Name des externen Programms, welches gestartet werden soll.

Beispiel:

;Aktivierung der Applikation Wordpad.exe

;Anm.: Dazu wurde WordPad.exe in das

;Programmverzeichnis kopiert

R0 = UserExe Wordpad

Siehe auch: User, UserDLL


V

Adressbuchstabe der Achse V

Adressbuchstabe der Achse V in der ersten Motion Control.

Siehe Adressbuchstaben


V1

Adressbuchstabe der Achse V

Adressbuchstabe der Achse V in der ersten Motion Control.

Siehe Adressbuchstaben


V2

Adressbuchstabe der Achse V

Adressbuchstabe der Achse V in der zweiten Motion Control.

Siehe Adressbuchstaben


Vel

Vel v

Angabe der Normalgeschwindigkeit für Linearachsen

Gibt die Sollgeschwindigkeit für die aktuelle und alle weiteren Verfahrbewegungen von Linearachsen mit Normalgeschwindigkeit an. Die zuletzt gesetzte Geschwindigkeit wird verwendet, bis eine neue Normalgeschwindigkeit (entweder mit Vel oder F) eingestellt wird. Die Angabe der Geschwindigkeit erfolgt in Millimeter / Sekunde.

Beispiel:

Vel25.0

MoveAbs X10.0 Y10.0 Z0.0

Siehe auch: FastVel, RVel, FastRVel, F


VelPropPwm

VelPropPwm [VpP] kanal WorkMode=workmode MinVelLin=minvellin MaxVelLin=maxvellin RefVelLin=refvellin MinVelRot=minvelrot MaxVelRot=maxvelrot RefVelRot=refvelrot MinPwm=minpwm MaxPwm=maxpwm RefPwm=refpwm GainFactor=gainfactor On|Off

Erweiterter Befehl für die Erzeugung eines geschwindigkeitsproportionalen PWM-Signals

Show/Hide Hidden Text

Mit Hilfe dieser Anweisung wird die kontinuierliche Erzeugung eines geschwindigkeitsproportionalen PWM-Signals gesteuert. Der ermittelte Ausgabewert wird an einem PWM-Kanal der Steuerung ausgegeben.

Hinweis: Anstelle der Anweisung VelPropPwm kann auch die Kurzform VpP verwendet werden.

Beispiel für den Programmcode im Script "Script1.NCP" Weitere Informationen zur Pulsweitenmodulation (PWM)

PWM ist die Abkürzung für Pulsweitenmodulation, oder auch in englisch Pulse Width Modulation. Das Verfahren wird auch als Pulsbreitenmodulation (PBM), Pulsdauermodulation (PDM) oder Pulslängenmodulation (PLM) bezeichnet.

Die Pulsweitenmodulation ist eine digitale Modulationsart, bei der die Spannung am Signalausgang zwischen zwei Werten (hier: 0V und 24 V) wechselt. Bei gleichbleibender Frequenz wird ein Rechteckimpuls moduliert, dessen Weite bzw. Länge variiert. Das Verhältnis zwischen Impuls und Pause wird als Tastverhältnis oder Tastgrad bezeichnet.

Das Erzeugen eines PWM-Signals mit einem geschwindigkeitsproportionalen Tastverhältnis kann typischerweise für Anwendungen genutzt werden, bei denen eine Ausgangsgröße mit einem kalibrierten PWM-Steuersignal in Abhängigkeit von der Geschwindigkeit gesteuert werden muß. Beispiele hierfür sind: Steuern des Materialflusses einer Dosiereinheit, Nachführen eines Schweißdrahtes oder Regelung einer Laserleistung.

Verwendete Parameter:

VelPropPwm kanal onoff WorkMode MinVelLin MaxVelLin MinVelRot MaxVelRot MinPwm RefPwm MaxPwm GainFactor

kanal

Angabe der Kanalnummer des PWM-Kanals, an welchem das PWM-Signal bereitgestellt werden soll.

Gültige Bezeichner bewegen sich im Bereich von A1...An (n=Anzahl der verfügbaren PWM-Ausgänge).

WorkMode

Ansteuerungs-Modus des PWM-Ausgangs. Je nach eingestelltem Modus verhält sich die Erzeugung des geschwindigkeitsabhängigen PWM-Signals unterschiedlich.

1

T=MinPwm+(MaxPwm-MinPwm)*(ActVelLin/(MaxVelLin-MinVelLin))

ActVelLin ist die momentane Interpolationsgeschwindigkeit für Linearbewegungen im Achssystem XYZ bzw. bei Einzelbewegung die Geschwindigkeit der aktiven Linearachse.

Das Ausgabesignal wird durch den Parameter MaxPwm nach oben begrenzt. Wenn keine Begrenzung erfolgen soll, muß der Parameter MaxPwm auf den Wert 0x3FFFFFFF (dezimal 1073741823) gesetzt werden (oder einfach weggelassen werden). Die Begrenzung erfolgt dann durch das maximal mögliche Tastverhältnis (1000‰).

2

T=RefPwm+(ActVelLin-RefVelLin)*GainFactor

ActVelLin ist die momentane Interpolationsgeschwindigkeit für Linearbewegungen im Achssystem XYZ bzw. bei Einzelbewegung die Geschwindigkeit der aktiven Linearachse.

Der Parameter MinPwm gibt ein Sockel-Tastverhältnis für das Ausgabesignal an, d.h. das errechnete geschwindigkeitsabhängige Ausgabe-Tastverhältnis wird nicht kleiner als MinPwm. Wenn kein Sockelwert verwendet werden soll, muß der Parameter MinPwm auf den Wert 0x3FFFFFFF (dezimal 1073741823) gesetzt werden (oder einfach weggelassen werden).

Der Ausgabewert wird durch den Parameter MaxPwm nach oben begrenzt. Wenn keine Begrenzung erfolgen soll, muß der Parameter MaxPwm auf den Wert 0x3FFFFFFF (dezimal 1073741823) gesetzt werden (oder einfach weggelassen werden).

3

T=ActOutPwm+(ActVelLin-RefVelLin)*GainFactor

ActOutPwm ist das zuletzt für den angegebenen PWM-Kanal (mit dem Befehl "SetPwm") gesetzte Tastverhältnis.

ActVelLin ist die momentane Interpolationsgeschwindigkeit für Linearbewegungen im Achssystem XYZ bzw. bei Einzelbewegung die Geschwindigkeit der aktiven Linearachse.

Der Parameter MinPwm gibt ein Sockel-Tastverhältnis für das Ausgabesignal an, d.h. das errechnete geschwindigkeitsabhängige Ausgabe-Tastverhältnis wird nicht kleiner als MinPwm. Wenn kein Sockelwert verwendet werden soll, muß der Parameter MinPwm auf den Wert 0x3FFFFFFF (dezimal 1073741823) gesetzt werden (oder einfach weggelassen werden).

Das Ausgabe-Tastverhältnis wird durch den Parameter MaxPwm nach oben begrenzt. Wenn keine Begrenzung erfolgen soll, muß der Parameter MaxPwm auf den Wert 0x3FFFFFFF (dezimal 1073741823) gesetzt werden (oder einfach weggelassen werden).

11

T=MinPwm+(MaxPwm-MinPwm)*(ActVelRot/(MaxVelRot-MinVelRot))

ActVelRot ist die momentane Geschwindigkeit einer Drehachse.

Das Ausgabe-Tastverhältnis wird durch den Parameter MaxPwm nach oben begrenzt. Wenn keine Begrenzung erfolgen soll, muß der Parameter MaxPwm auf den Wert 0x3FFFFFFF (dezimal 1073741823) gesetzt werden (oder einfach weggelassen werden).

12

T=RefPwm+(ActVelRot-RefVelRot)*GainFactor

ActVelRot ist die momentane Fahrgeschwindigkeit der Drehachse.

Der Parameter MinPwm gibt ein Sockel-Tastverhältnis für das Ausgabesignal an, d.h. das errechnete geschwindigkeitsabhängige Ausgabe-Tastverhältnis wird nicht kleiner als MinPwm. Wenn kein Sockelwert verwendet werden soll, muß der Parameter MinPwm auf den Wert 0x3FFFFFFF (dezimal 1073741823) gesetzt werden (oder einfach nicht weggelassen werden).

Das Ausgabe-Tastverhältnis wird durch den Parameter MaxPwm nach oben begrenzt. Wenn keine Begrenzung erfolgen soll, muß der Parameter MaxPwm auf den Wert 0x3FFFFFFF (dezimal 1073741823) gesetzt werden (oder einfach weggelassen werden).

13

T=ActOutPwm+(ActVelRot-RefVelRot)*GainFactor

ActOutPwm ist das zuletzt für den angegebenen PWM-Kanal (mit dem Befehl "SetPwm") gesetzte Tastverhältnis.

ActVelRot ist die momentane Fahrgeschwindigkeit der Drehachse.

Der Parameter MinPwm gibt ein Sockel-Tastverhältnis für das Ausgabesignal an, d.h. das errechnete geschwindigkeitsabhängige Ausgabe-Tastverhältnis wird nicht kleiner als MinPwm. Wenn kein Sockelwert verwendet werden soll, muß der Parameter MinPwm auf den Wert 0x3FFFFFFF (dezimal 1073741823) gesetzt werden (oder einfach weggelassen werden).

Das Ausgabe-Tastverhältnis wird durch den Parameter MaxPwm nach oben begrenzt. Wenn keine Begrenzung erfolgen soll, muß der Parameter MaxPwm auf den Wert 0x3FFFFFFF (dezimal 1073741823) gesetzt werden (oder einfach weggelassen werden).

MinVelLin

Verwendet in WorkMode 1

Angabe der Minimal- oder Sockelgeschwindigkeit für die Berechnung des Ausgabewertes. Für die Berechnung wird die aktuelle Lineargeschwindigkeit verwendet. Falls nur eine Linearachse in Bewegung ist, wird die aktuelle Geschwindigkeit dieser Einzelachse verwendet. Falls eine interpolierte Bewegung im Koordinatensystem XYZ stattfindet, wird die interpolierte Geschwindigkeit an der Werkzeugspitze verwendet.

MaxVelLin

Verwendet in WorkMode 1

Angabe der Maximal- oder Grenzgeschwindigkeit für die Berechnung des Ausgabewertes. Für die Berechnung wird die aktuelle Lineargeschwindigkeit verwendet. Falls nur eine Linearachse in Bewegung ist, wird die aktuelle Geschwindigkeit dieser Einzelachse verwendet. Falls eine interpolierte Bewegung im Koordinatensystem XYZ stattfindet, wird die interpolierte Geschwindigkeit an der Werkzeugspitze verwendet.

RefVelLin

Verwendet in WorkMode 2, 3

Dieser Wert gibt die Referenzgeschwindigkeit an, bei welcher der Wert des Tastverhältnisses dem übergebenen Parameter RefPwm (WorkMode 2) bzw. dem zuletzt (mit SetPwm) gesetzten Tastverhältnis (WorkMode 3) entspricht.

MinVelRot

Verwendet in WorkMode 11, 12, 13

Angabe der minimalen oder Sockel-Drehgeschwindigkeit für die Berechnung des Tastverhältnisses.

Anmerkung: Für WorkMode 11, 12 und 13 sollten sinnvollerweise nur isolierte Drehbewegungen einer einzelnen Drehachse ausgeführt werden, kombinierte Bewegungen Drehachse-Drehachse oder Drehachse-Linearachse führen zu verfälschten Ergebnissen.

MaxVelRot

Verwendet in WorkMode 11, 12, 13

Angabe der maximalen oder Grenz-Drehgeschwindigkeit für die Berechnung des Tastverhältnisses. Für die Berechnung wird die aktuelle Drehgeschwindigkeit der Drehachse verwendet.

Anmerkung: Für WorkMode 11, 12 und 13 sollten sinnvollerweise nur isolierte Drehbewegungen einer einzelnen Drehachse ausgeführt werden, kombinierte Bewegungen Drehachse-Drehachse oder Drehachse-Linearachse führen zu verfälschten Ergebnissen.

RefVelRot

Verwendet in WorkMode 12, 13

Dieser Wert gibt die Referenz-Drehgeschwindigkeit an, bei welcher der Wert des Tastverhältnisses dem übergebenen Parameter RefPwm (WorkMode 12) bzw. dem zuletzt (mit SetPwm) gesetzten Tastverhältnis (WorkMode 13) entspricht.

MinPwm

Verwendet in WorkMode 1, 2, 3, 11, 12, 13

Angabe des Sockel-Tastverhältnisses, das für die Berechnung des ausgegebenen Tastverhältnisses (WorkMode 1, 11) bzw. zur Begrenzung eines berechneten Tastverhältnisses nach unten (WorkMode 2, 3, 12, 13) verwendet wird.

MaxPwm

Verwendet in WorkMode 1, 2, 3, 11, 12, 13

Angabe des maximalen Tastverhältnisses, das für die Berechnung des Ausgabe-Tastverhältnisses (WorkMode 1, 11) bzw. zur Begrenzung des berechneten Tastverhältnisses nach oben (WorkMode 2, 3, 12, 13) verwendet wird.

RefPwm

Verwendet in WorkMode 2, 3, 12, 13

Das Referenz-Tastverhältnis ist das Tastverhältnis, welches eingestellt wird wenn die momentane Linear- oder Drehgeschwindigkeit der angegebenen Referenzgeschwindigkeit (RefVelLin bzw. RefVelRot) entspricht. Geschwindigkeitsdifferenzen werden mit dem Verstärkungsfaktor (GainFactor) multipliziert und als Tastverhältnis-Differenz zum Referenz-Tastverhältnis addiert.

GainFactor

Verwendet in WorkMode 2, 3, 12, 13

Der Verstärkungsfaktor ist ein Wert, der mit der Differenz zwischen aktueller Geschwindigkeit und Referenzgeschwindigkeit multipliziert wird. Das Ergebnis der Multiplikation ist ein Tastverhältnis-Differenzwert. Der Verstärkungsfaktor legt somit fest, wie stark sich das Ausgangs-Tastverhältnis in Abhängigkeit von der Geschwindigkeitsdifferenz zwischen aktueller Geschwindigkeit und Referenzgeschwindigkeit ändert.

Die Angabe des Verstärkungsfaktors erfolgt in ‰/(µm/s) bzw. 1/(mm/s).

onoff

on, On, ON Kontinuierliche Ausgabe des PWM-Signals starten

off, Off, OFF Ausgabe des PWM-Signals beenden

Verhalten des geschwindigkeitsabhängigen Tastverhältnisses in verschiedenen WorkModes

WorkMode 1

Ausgabewerte

MinVel=20 mm/s

MaxVel=80 mm/s

MinPwm=100 [‰]

MaxPwm=900 [‰]

ActVel | T
0 | 100 ‰
10 mm/s | 233 ‰
20 mm/s | 367 ‰
30 mm/s | 500 ‰
40 mm/s | 633 ‰
50 mm/s | 767 ‰
60 mm/s | 900 ‰
70 mm/s | 900 ‰
80 mm/s | 900 ‰

WorkMode 2, (3)

Ausgabewerte

RefVel=50 mm/s

RefPwm=500 ‰

MinPwm=100 ‰

MaxPwm=900 ‰

GainFactor=0.01 1/(mm/s) bzw. 0.01 ‰/(µm/s)

ActVel | GainFactor 0.1 1/(mm/s) T | GainFactor 0.2 1/(mm/s) T
0 mm/s | 100 ‰ | 100 ‰
10 mm/s | 100 ‰ | 100 ‰
20 mm/s | 200 ‰ | 100 ‰
30 mm/s | 300 ‰ | 100 ‰
40 mm/s | 400 ‰ | 300 ‰
50 mm/s | 500 ‰ | 500 ‰
60 mm/s | 600 ‰ | 700 ‰
70 mm/s | 700 ‰ | 900 ‰
80 mm/s | 800 ‰ | 900 ‰
90 mm/s | 900 ‰ | 900 ‰
100 mm/s | 900 ‰ | 900 ‰

Beispiele zur Verwendung des Parametersatzes:

(1)

;Starten der Ausgabe eines

;geschwindigkeitsproportionalen Tastverhaeltnisses:

;Bei einer Geschwindigkeit von 120 mm/s soll der

;Maximalwert des Tastverhaeltnisses an PWM-Ausgangs 2

;anliegen

VelPropPwm A2 WorkMode=1 MaxVelLin=120.0 ON

...

MoveAbs ...

...

;Ausgabe des PWM-Signals beenden

VelPropPwm OFF

(2)

;WorkMode 2: Starten der Ausgabe eines

;geschwindigkeitsproportionalen PWM-Signals:

;Die Geschwindigkeit von 50 mm/s wird als Referenzwert

;verwendet bei der ein Tastverhaeltnis von 500 ‰ ausgegeben

;wird. Der Verstärkungsfaktor wird auf 0.01 1/(mm/s)

;(das entspricht 10‰ pro mm/s Geschwindigkeitsaenderung)

;gesetzt. Eine Geschwindigkeitsaenderung von +/-1mm/s

;hat nun eine Aenderung des Tastverhaeltnisses von

;+/-10‰ zur Folge. Das Tastverhaeltnis des PWM-Signals

;wird nach unten auf 200‰ und nach oben auf 800‰ begrenzt.

VelPropPwm A1 WorkMode=2 RefVelLin=50 RefPwm=500 MinPwm=200 MaxPwm=800 GainFactor=0.01 On

(3)

;WorkMode 3: Starten der Ausgabe eines

;geschwindigkeitsproportionalen PWM-Signals:

;In diesem Modus wird das aktuelle Tastverhaeltnis

;des angegebenen PWM-Kanals als Referenz-Tastverhaeltnis

;verwendet.

;Die Geschwindigkeit von 50 mm/s wird als Referenzwert

;verwendet bei welcher das Referenz-Tastverhaeltnis eingestellt

;wird. Der Verstärkungsfaktor wird auf 0.01 1/(mm/s)

;gesetzt (das entspricht 10‰ pro mm/s Geschwindigkeitsaenderung)

;Eine Geschwindigkeitsaenderung von +/-1mm/s hat jetzt eine

;Aenderung des Ausgabe-Tastverhaeltnisses von +/-10‰ zur Folge.

;Das Tastverhaeltnis des PWM-Signals wird nach unten

;auf 200‰ und nach oben auf 800‰ begrenzt.

;Setzen des Tastverhaeltnisses des PWM-Ausgangs auf den

;Ausgabewert 400‰

SetPwm A1=400

;Aktivieren der Ausgabe eines

;geschwindigkeitsproportionalen PWM-Signals

;Das aktuelle Tastverhaeltnis an PWM-Ausgang 1

;wird als Ausgabe-Tastverhaeltnis bei Referenzgeschwindigkeit

;(50mm/s) verwendet

VelPropPwm A1 WorkMode=3 RefVelLin=50 MinPwm=200 MaxPwm=800 GainFactor=0.01 On

Siehe auch: VppOn, VppOff


VelPropVoltage

VelPropVoltage [VpV] Akanal WorkMode=workmode MinVelLin=minvellin MaxVelLin=maxvellin RefVelLin=refvellin MinVelRot=minvelrot MaxVelRot=maxvelrot RefVelRot=refvelrot MinVolt=minvolt MaxVolt=maxvolt RefVolt=refvolt GainFactor=gainfactor On|Off

Erweiterter Befehl für die Erzeugung einer geschwindigkeitsproportionalen Spannung

Dieser Befehl startet bzw. stoppt die kontinuierliche Erzeugung eines geschwindigkeitsproportionalen Spannungswertes. Dieser Spannungswert wird an einem Analogausgang der Steuerung ausgegeben.

Hinweis: Anstelle der Anweisung VelPropVoltage kann auch die Kurzform VpV verwendet werden.

Das Erzeugen eines geschwindigkeitsproportionalen Analogwertes, z.B. einer Spannung, kann für verschiedene Zwecke genutzt werden. Typische Anwendungen sind z.B.: Steuern des Materialflusses einer Dosiereinheit, Anpassung der Werkzeug-Schnittgeschwindigkeit, Nachführen eines Schweißdrahtes, Regelung einer Laserleistung usw.

Hinweis: Im Rahmen einer Erweiterung des VpvOn-Befehls wurden neue Parameter sowie der Befehl VelPropVoltage eingeführt. In der nachfolgenden Übersicht der Parameter werden die Parameter des neuen Parametersatzes beschrieben.

Verwendete Parameter des erweiterten Parametersatzes:

Vpv k onoff WorkMode MinVelLin MaxVelLin MinVelRot MaxVelRot MinVolt RefVolt MaxVolt GainFactor

kanal

Angabe der Kanalnummer des Analogausgangs, an welchem die Ausgabespannung bereitgestellt werden soll.

Gültige Bezeichner bewegen sich im Bereich von A1...An (n=Anzahl der verfügbaren Analogausgänge).

WorkMode

Modus der Ausgangssteuerung. Je nach eingestelltem Modus verhält sich die Erzeugung des geschwindigkeitsabhängigen Analogsignals unterschiedlich.

1

V=MinVolt+(MaxVolt-MinVolt)*(ActVelLin/(MaxVelLin-MinVelLin))

ActVelLin ist die momentane Interpolationsgeschwindigkeit im Achssystem XYZ bzw. bei Einzelbewegung die Geschwindigkeit der Linearachse.

Die Ausgabespannung wird durch den Parameter MaxVolt nach oben begrenzt. Wenn keine Begrenzung erfolgen soll, muß der Parameter MaxVolt auf den Wert 0x3FFFFFFF (dezimal 1073741823) gesetzt werden (oder einfach weggelassen werden).

2

V=RefVolt+(ActVelLin-RefVelLin)*GainFactor

ActVelLin ist die momentane Interpolationsgeschwindigkeit im Achssystem XYZ bzw. bei Einzelbewegung die Geschwindigkeit der Linearachse.

Der Parameter MinVolt gibt eine Sockelspannung für die Ausgabespannung an, d.h. der errechnete geschwindigkeitsabhängige Ausgabewert wird nicht kleiner als MinVolt. Wenn keine Sockel verwendet werden soll, muß der Parameter MinVolt auf den Wert 0x3FFFFFFF (dezimal 1073741823) gesetzt werden (oder einfach weggelassen werden).

Die Ausgabespannung wird durch den Parameter MaxVolt nach oben begrenzt. Wenn keine Begrenzung erfolgen soll, muß der Parameter MaxVolt auf den Wert 0x3FFFFFFF (dezimal 1073741823) gesetzt werden (oder einfach weggelassen werden).

3

V=ActOutVolt+(ActVelLin-RefVelLin)*GainFactor

ActOutVolt ist die zuletzt für den angegebenen Analogausgang (mit dem Befehl "SetAnalog") gesetzte Ausgangsspannung.

ActVelLin ist die momentane Interpolationsgeschwindigkeit im Achssystem XYZ bzw. bei Einzelbewegung die Geschwindigkeit der Linearachse.

Der Parameter MinVolt gibt eine Sockelspannung für die Ausgabespannung an, d.h. der errechnete geschwindigkeitsabhängige Ausgabewert wird nicht kleiner als MinVolt. Wenn keine Sockel verwendet werden soll, muß der Parameter MinVolt auf den Wert 0x3FFFFFFF (dezimal 1073741823) gesetzt werden (oder einfach weggelassen werden).

Die Ausgabespannung wird durch den Parameter MaxVolt nach oben begrenzt. Wenn keine Begrenzung erfolgen soll, muß der Parameter MaxVolt auf den Wert 0x3FFFFFFF (dezimal 1073741823) gesetzt werden (oder einfach weggelassen werden).

11

V=MinVolt+(MaxVolt-MinVolt)*(ActVelRot/(MaxVelRot-MinVelRot))

ActVelRot ist die momentane Geschwindigkeit einer Drehachse.

Die Ausgabespannung wird durch den Parameter MaxVolt nach oben begrenzt. Wenn keine Begrenzung erfolgen soll, muß der Parameter MaxVolt auf den Wert 0x3FFFFFFF (dezimal 1073741823) gesetzt werden (oder einfach weggelassen werden).

12

V=RefVolt+(ActVelRot-RefVelRot)*GainFactor

ActVelRot ist die momentane Fahrgeschwindigkeit der Drehachse.

Der Parameter MinVolt gibt eine Sockelspannung für die Ausgabespannung an, d.h. der errechnete geschwindigkeitsabhängige Ausgabewert wird nicht kleiner als MinVolt. Wenn keine Sockel verwendet werden soll, muß der Parameter MinVolt auf den Wert 0x3FFFFFFF (dezimal 1073741823) gesetzt werden (oder einfach weggelassen werden).

Die Ausgabespannung wird durch den Parameter MaxVolt nach oben begrenzt. Wenn keine Begrenzung erfolgen soll, muß der Parameter MaxVolt auf den Wert 0x3FFFFFFF (dezimal 1073741823) gesetzt werden (oder einfach weggelassen werden).

13

V=ActOutVolt+(ActVelRot-RefVelRot)*GainFactor

ActOutVolt ist die zuletzt für den angegebenen Analogausgang (mit dem Befehl "SetAnalog") gesetzte Ausgangsspannung.

ActVelRot ist die momentane Fahrgeschwindigkeit der Drehachse.

Der Parameter MinVolt gibt eine Sockelspannung für die Ausgabespannung an, d.h. der errechnete geschwindigkeitsabhängige Ausgabewert wird nicht kleiner als MinVolt. Wenn keine Sockel verwendet werden soll, muß der Parameter MinVolt auf den Wert 0x3FFFFFFF (dezimal 1073741823) gesetzt werden (oder einfach weggelassen werden).

Die Ausgabespannung wird durch den Parameter MaxVolt nach oben begrenzt. Wenn keine Begrenzung erfolgen soll, muß der Parameter MaxVolt auf den Wert 0x3FFFFFFF (dezimal 1073741823) gesetzt werden (oder einfach weggelassen werden).

MinVelLin

Verwendet in WorkMode 1

Angabe der Minimal- oder Sockelgeschwindigkeit für die Berechnung des Ausgabewertes. Für die Berechnung wird die aktuelle Lineargeschwindigkeit verwendet. Falls nur eine Linearachse in Bewegung ist, wird die aktuelle Geschwindigkeit dieser Achse verwendet. Falls eine interpolierte Bewegung im Koordinatensystem XYZ stattfindet, wird die interpolierte Geschwindigkeit an der Werkzeugspitze verwendet.

MaxVelLin

Verwendet in WorkMode 1

Angabe der Maximal- oder Grenzgeschwindigkeit für die Berechnung des Ausgabewertes. Für die Berechnung wird die aktuelle Lineargeschwindigkeit verwendet. Falls nur eine Linearachse in Bewegung ist, wird die aktuelle Geschwindigkeit dieser Achse verwendet. Falls eine interpolierte Bewegung im Koordinatensystem XYZ stattfindet, wird die interpolierte Geschwindigkeit an der Werkzeugspitze verwendet.

RefVelLin

Verwendet in WorkMode 2, 3

Dieser Wert gibt die Referenzgeschwindigkeit an, bei welcher der Wert der Ausgangsspannung dem übergebenen Parameter RefVolt (WorkMode 2) bzw. dem zuletzt (mit SetAnalog) gesetzten Analogwert (WorkMode 3) entspricht.

MinVelRot

Verwendet in WorkMode 11, 12, 13

Angabe der minimalen oder Sockel-Drehgeschwindigkeit für die Berechnung des Ausgabewertes.

Anmerkung: Für WorkMode 11, 12 und 13 sollten sinnvollerweise nur isolierte Drehbewegungen ausgeführt werden, kombinierte Bewegungen Drehachse-Drehachse oder Drehachse-Linearachse führen zu verfälschten Ergebnissen.

MaxVelRot

Verwendet in WorkMode 11, 12, 13

Angabe der maximalen oder Grenz-Drehgeschwindigkeit für die Berechnung des Ausgabewertes. Für die Berechnung wird die aktuelle Drehgeschwindigkeit der Drehachse verwendet.

Anmerkung: Für WorkMode 11, 12 und 13 sollten sinnvollerweise nur isolierte Drehbewegungen ausgeführt werden, kombinierte Bewegungen Drehachse-Drehachse oder Drehachse-Linearachse führen zu verfälschten Ergebnissen.

RefVelRot

Verwendet in WorkMode 12, 13

Dieser Wert gibt die Referenz-Drehgeschwindigkeit an, bei welcher der Wert der Ausgangsspannung dem übergebenen Parameter RefVolt (WorkMode 12) bzw. dem zuletzt (mit SetAnalog) gesetzten Analogwert (WorkMode 13) entspricht.

MinVolt

Verwendet in WorkMode 1, 2, 3, 11, 12, 13

Angabe der Sockelspannung, die für die Berechnung der Ausgabespannung (WorkMode 1, 11) bzw. zur Begrenzung einer berechneten Ausgabespannung nach unten (WorkMode 2, 3, 12, 13) verwendet wird.

MaxVolt

Verwendet in WorkMode 1, 2, 3, 11, 12, 13

Angabe der Maximalspannung, die für die Berechnung der Ausgabespannung (WorkMode 1, 11) bzw. zur Begrenzung der berechneten Ausgabespannung nach oben (WorkMode 2, 3, 12, 13) verwendet wird.

RefVolt

Verwendet in WorkMode 2, 3, 12, 13

Die Referenzspannung ist der Spannungswert, welcher ausgegeben wird wenn die momentane Linear- oder Drehgeschwindigkeit der angegebenen Referenzgeschwindigkeit (RefVelLin bzw. RefVelRot) entspricht. Geschwindigkeitsdifferenzen werden mit dem Verstärkungsfaktor multipliziert und als Spannungsdifferenz zur Referenzspannung addiert.

GainFactor

Verwendet in WorkMode 2, 3, 12, 13

Der Verstärkungsfaktor ist ein Wert, der mit der Differenz zwischen aktueller Geschwindigkeit und Referenzgeschwindigkeit multipliziert wird und somit eine Spannungsdifferenz darstellt. Der Verstärkungsfaktor legt somit fest, wie stark sich die Ausgangsspannung in Abhängigkeit von der Geschwindigkeitsdifferenz zwischen aktueller Geschwindigkeit und Referenzgeschwindigkeit ändert.

Die Angabe des Verstärkungsfaktors erfolgt in mV/(µm/s) bzw. V/(mm/s).

onoff

on, On, ON Kontinuierliche Ausgabe der Spannung starten

off, Off, OFF Ausgabe der Spannung anhalten

Verhalten des geschwindigkeitsabhängigen Spannungswertes in verschiedenen WorkModes

WorkMode 1

Ausgabewerte

MinVel=20 mm/s

MaxVel=80 mm/s

MinVolt=1.0 V

MaxVolt=9.0 V

ActVel | Volt
0 | 1 V
10 mm/s | 2.33 V
20 mm/s | 3.67 V
30 mm/s | 5.0 V
40 mm/s | 6.33 V
50 mm/s | 7.67 V
60 mm/s | 9.0 V
70 mm/s | 9.0 V
80 mm/s | 9.0 V

WorkMode 2, (3)

Ausgabewerte

RefVel=50 mm/s

RefVolt=5.0 V

MinVolt=1.0 V

MaxVolt=9.0 V

GainFactor=0.1 V/(mm/s) bzw. 0.1 mV/(µm/s)

ActVel | GainFactor 0.1 V/(mm/s) Volt | GainFactor 0.2 V/(mm/s) Volt
0 mm/s | 1 V | 1 V
10 mm/s | 1 V | 1 V
20 mm/s | 2 V | 1 V
30 mm/s | 3 V | 1 V
40 mm/s | 4 V | 3 V
50 mm/s | 5 V | 5 V
60 mm/s | 6 V | 7 V
70 mm/s | 7 V | 9 V
80 mm/s | 8 V | 9 V
90 mm/s | 9 V | 9 V
100 mm/s | 9 V | 9V

Beispiele zur Verwendung des Parametersatzes:

(1)

;Starten der Ausgabe eines

;geschwindigkeitsproportionalen Spannungswertes:

;Bei einer Geschwindigkeit von 120 mm/s soll der

;Maximalwert des Analogausgangs 2 anliegen

VelPropVoltage A2 WorkMode=1 MaxVelLin=120.0 ON

...

MoveAbs ...

...

;Ausgabe des Spannungswertes beenden

VelPropVoltage OFF

(2)

;WorkMode 2: Starten der Ausgabe eines

;geschwindigkeitsproportionalen Spannungswertes:

;Die Geschwindigkeit von 50 mm/s wird als Referenzwert

;verwendet bei der ein Analogwert von 5.0 V ausgegeben

;wird. Der Verstärkungsfaktor wird auf 0.1 V/(mm/s)

;gesetzt, das bedeutet dass eine Geschwindigkeitsaenderung

;von +/-1mm/s eine Aenderung der Ausgabespannung von

;+/-0.1V zur Folge hat.

;Die Ausgabespannung wird nach unten auf 2V und nach oben

;auf 8V begrenzt.

VelPropVoltage A1 WorkMode=2 RefVelLin=50 RefVolt=5000 MinVolt=2000 MaxVolt=8000 GainFactor=0.1 On

(3)

;WorkMode 3: Starten der Ausgabe eines

;geschwindigkeitsproportionalen Spannungswertes:

;In diesem Modus wird die aktuelle Ausgangsspannung

;des angegebenen Analogkanals als Referenzspannung

;verwendet.

;Die Geschwindigkeit von 50 mm/s wird als Referenzwert

;verwendet bei welcher der Referenz-Analogwert ausgegeben

;wird. Der Verstärkungsfaktor wird auf 0.1 V/(mm/s)

;gesetzt, das bedeutet dass eine Geschwindigkeitsaenderung

;von +/-1mm/s eine Aenderung der Ausgabespannung von

;+/-0.1V zur Folge hat.

;Die Ausgabespannung wird nach unten auf 2V und nach oben

;auf 8V begrenzt.

;Setzen des Analogausgangs auf den Ausgabewert 3.5V

SetAnalog A1=3500

;Aktivieren der Ausgabe eines

;geschwindigkeitsproportionalen Spannungswertes

;Die aktuelle Ausgangsspannung an Analogausgang 1

;wird als Ausgabe-Spannungswert bei Referenzgeschwindigkeit

;(50mm/s) verwendet

VelPropVoltage A1 WorkMode=3 RefVelLin=50 MinVolt=2000 MaxVolt=8000 GainFactor=0.1 On

Siehe auch: VpvOn, VpvOff


VppOn, VppOff

VppOn [k] [vmax]

VppOff

Grundbefehle für die Erzeugung eines PWM-Signals mit geschwindigkeitsproportionalem Tastverhältnis

Show/Hide Hidden Text

Diese Befehle starten bzw. stoppen die kontinuierliche Erzeugung eines geschwindigkeitsproportionalen PWM-Signals. Das ermittelte Tastverhältnis wird an einem PWM-Kanal der Steuerung eingestellt.

Beispiel für den Programmcode im Script "Script1.NCP" Weitere Informationen zur Pulsweitenmodulation (PWM)

PWM ist die Abkürzung für Pulsweitenmodulation, oder auch in englisch Pulse Width Modulation. Das Verfahren wird auch als Pulsbreitenmodulation (PBM), Pulsdauermodulation (PDM) oder Pulslängenmodulation (PLM) bezeichnet.

Die Pulsweitenmodulation ist eine digitale Modulationsart, bei der die Spannung am Signalausgang zwischen zwei Werten (hier: 0V und 24 V) wechselt. Bei gleichbleibender Frequenz wird ein Rechteckimpuls moduliert, dessen Weite bzw. Länge variiert. Das Verhältnis zwischen Impuls und Pause wird als Tastverhältnis oder Tastgrad bezeichnet.

Das Erzeugen eines PWM-Signals mit einem geschwindigkeitsproportionalen Tastverhältnis kann typischerweise für Anwendungen genutzt werden, bei denen eine Ausgangsgröße mit einem kalibrierten PWM-Steuersignal in Abhängigkeit von der Geschwindigkeit gesteuert werden muß. Beispiele hierfür sind: Steuern des Materialflusses einer Dosiereinheit, Nachführen eines Schweißdrahtes oder Regelung einer Laserleistung.

Besonderheiten dieser Befehle

·Die Befehle VppOn und VppOff stellen einen vereinfachten Befehlsumfang für das Erzeugen eines PWM-Signals mit geschwindigkeitsproportionalem Tastverhältnis dar.

·wenn der Befehl VppOn alleinstehend ohne Parameter verwendet wird, werden als Standardparameter diese Werte angenommen:
-Kanalnummer: 1
-Tastverhältnis bei Maximalgeschwindigkeit: 1000 ‰
-Geschwindigkeit bei der das maximale Tastverhältnis eingestellt wird: 100 mm/s

·Die Angabe nur eines Parameters ist nicht zulässig, die gültige Anzahl Parameter ist 0 oder 2 (2 Parameter in der festgelegten Reihenfolge kanal vmax)

Befehle und Parameter

VppOn

Start der Erzeugung eines PWM-Signals mit geschwindigkeitsproportionalem Tastverhältnis. Die PWM-Ausgabe erfolgt nur, wenn programmatisch beauftragte Bewegungen aktiv sind. Bei Stillstand beträgt das Tastverhältnis 0‰. Das geschwindigkeitsproportionale PWM-Signal wird nicht generiert, wenn Bewegungen über eine andere Methode erzeugt werden, z.B. im Teachdialog für das manuelle Verfahren von Achsen.

Der Aufruf dieses Befehls kann optional 2 Parameter enthalten:

k

Angabe der Kanalnummer des PWM-Ausgangs, an welchem das Ausgabesignal bereitgestellt werden soll.

Gültige Kanalnummern bewegen sich im Bereich von 1 ... Anzahl_der_PWM-Ausgänge.

vmax

Angabe der maximalen Geschwindigkeit. Auf diese Geschwindigkeit wird der Ausgabewert normiert, d.h. wenn die Geschwindigkeit vmax vorliegt, wird der Maximalwert des Tastverhältnisses eingestellt. Die Angabe der maximalen Geschwindigkeit erfolgt in mm/s (Millimeter/Sekunde).

Nachfolgend wird der Zusammenhang zwischen vmax und dem eingestellten Tastverhältnis tabellarisch dargestellt:

Das maximale Tastverhältnis des PWM-Ausgangs beträgt 1000‰.

Die Geschwindigkeit, bei der dieses Tastverhältnis eingestellt werden soll, beträgt 100 mm/s.

Geschwindigkeit | Tastverhältnis
0 mm/s | 0 ‰
10 mm/s | 100 ‰
25 mm/s | 250 ‰
50 mm/s | 500 ‰
75 mm/s | 750 ‰
100 mm/s | 1000 ‰
120 mm/s | 1000 ‰

VppOff

Beenden der Erzeugung des geschwindigkeitsproportionalen Tastverhältnisses.

Beispiele zur Verwendung des Grundbefehls

(1)

;Starten der Ausgabe eines

;geschwindigkeitsproportionalen PWM-Signals

;mit Default-Parametern: Bei einer Geschwindigkeit

;von 100 mm/s wird ein PWM-Signal mit dem

;Tastverhaeltnis 1000‰ ausgegeben

VppOn

...

MoveAbs ...

MoveAbs ...

MoveAbs ...

...

;Ausgabe des PWM-Signals beenden

VppOff

(2)

;Starten der Ausgabe eines

;geschwindigkeitsproportionalen PWM-Signals:

;Bei einer Geschwindigkeit von 120 mm/s soll der

;Maximalwert des Tastverhaeltnisses (1000‰) an

PWM-Ausgang 2 anliegen

VppOn 2 120.0

...

MoveAbs ...

MoveAbs ...

MoveAbs ...

...

;Ausgabe des PWM-Signals beenden

VppOff

(3)

;Bei einer Geschwindigkeit von 50 mm/s soll der

;Maximalwert des Tastverhaeltnisses (1000‰) an

PWM-Ausgang 1 anliegen

VppOn 1 50

...

MoveAbs ...

MoveAbs ...

MoveAbs ...

...

;Ausgabe des PWM-Signals beenden

VppOff

Siehe auch: VelPropPwm


VpvOn, VpvOff

VpvOn [k] [vmax]

VpvOff

Grundbefehle für die Erzeugung einer geschwindigkeitsproportionalen Spannung

Diese Befehle starten bzw. stoppen die kontinuierliche Erzeugung eines geschwindigkeitsproportionalen Spannungswertes. Der Spannungswert wird an einem Analogausgang der Steuerung ausgegeben.

Das Erzeugen eines geschwindigkeitsproportionalen Analogwertes, z.B. einer Spannung, kann für verschiedene Zwecke genutzt werden. Typische Anwendungen sind z.B.: Steuern des Materialflusses einer Dosiereinheit, Anpassung der Werkzeug-Schnittgeschwindigkeit, Nachführen eines Schweißdrahtes, Regelung einer Laserleistung usw.

Besonderheiten dieser Befehle

·Die Befehle VpvOn und VpvOff stellen einen vereinfachten Befehlsumfang für das Erzeugen einer geschwindigkeitsproportionalen Spannung dar.

·wenn der Befehl VpvOn alleinstehend ohne Parameter verwendet wird, werden als Standardparameter diese Werte angenommen:
-Kanalnummer: 1
-Spannung bei Maximalgeschwindigkeit: 10V
-Geschwindigkeit bei der die Maximalspannung ausgegeben wird: 100 mm/s

·Die Angabe nur eines Parameters ist nicht zulässig, die gültige Anzahl Parameter ist 0 oder 2 (2 Parameter in der festgelegten Reihenfolge kanal vmax)

Befehle und Parameter

VpvOn

Start der Erzeugung einer geschwindigkeitsproportionalen Spannung. Die Spannung wird nur dann generiert wenn programmatisch beauftragte Bewegungen aktiv sind. Die geschwindigkeitsproportionale Spannung wird nicht generiert, wenn Bewegungsbefehle über eine andere Methode erzeugt werden, z.B. im Teachdialog für das manuelle Verfahren von Achsen.

Der Aufruf dieses Befehls kann optional 2 Parameter enthalten:

k

Angabe der Kanalnummer des Analogausgangs, an welchem die Ausgabespannung bereitgestellt werden soll.

Gültige Kanalnummern bewegen sich im Bereich von 1 ... Anzahl_der_Analogausgänge.

vmax

Angabe der maximalen Geschwindigkeit. Auf diese Geschwindigkeit wird der Ausgabewert normiert, d.h. wenn die Geschwindigkeit vmax vorliegt, wird der Maximalwert des Analogausgangs bereitgestellt. Die Angabe der maximalen Geschwindigkeit erfolgt in mm/s (Millimeter/Sekunde). Nachfolgend wird der Zusammenhang zwischen vmax und der Spannung tabellarisch dargestellt:

Die maximale Ausgangsspannung des Analogausgangs beträgt 10V.

Die Geschwindigkeit, bei der 10V ausgegeben werden sollen, beträgt 100 mm/s.

Geschwindigkeit | Spannung
10 mm/s | 1 V
25 mm/s | 2.5 V
50 mm/s | 5 V
75 mm/s | 7.5 V
100 mm/s | 10 V
120 mm/s | 10 V

VpvOff

Beenden der Erzeugung einer geschwindigkeitsproportionalen Spannung.

Beispiele zur Verwendung des Grundbefehls

(1)

;Starten der Ausgabe eines

;geschwindigkeitsproportionalen Spannungswertes

;mit Default-Parametern: Bei einer Geschwindigkeit

;von 100 mm/s wird der Spannungswert 10V ausgegeben

VpVOn

...

MoveAbs ...

MoveAbs ...

...

;Ausgabe des Spannungswertes beenden

VpV OFF

(2)

;Starten der Ausgabe eines

;geschwindigkeitsproportionalen Spannungswertes:

;Bei einer Geschwindigkeit von 120 mm/s soll der

;Maximalwert des Analogausgangs 2 (10V) anliegen

VpvOn 2 120.0

...

MoveAbs ...

MoveAbs ...

...

;Ausgabe des Spannungswertes beenden

VpvOff

(3)

;Bei einer Geschwindigkeit von 50 mm/s soll der

;Maximalwert des Analogausgangs 1 (10V) anliegen

VpvOn 1 50

...

MoveAbs ...

MoveAbs ...

...

;Ausgabe des Spannungswertes beenden

VpvOff

Siehe auch: VelPropVoltage


W

Adressbuchstabe der Achse W

Adressbuchstabe der Achse W in der ersten Motion Control.

Siehe Adressbuchstaben


W1

Adressbuchstabe der Achse W

Adressbuchstabe der Achse W in der ersten Motion Control.

Siehe Adressbuchstaben


W2

Adressbuchstabe der Achse W

Adressbuchstabe der Achse W in der zweiten Motion Control.

Siehe Adressbuchstaben


Wait

Wait t

Ausführen einer Wartezeit im NC-Programm

Führt eine Zeitverzögerung aus. Die Angabe der Zeitverzögerung t erfolgt in Millisekunden.

Im Gegensatz zur Funktion TIME wird die laufende Zeitverzögerung nur in der Statuszeile eingeblendet, das Programm bleibt bedienbar.

Diese Funktion entspricht in ihrem Verhalten auch der Funktion Delay und wurde aus Kompatibilitätsgründen bereitgestellt.

Beispiel:

WAIT 2000 ;2 Sekunden Zeitverzögerung

Siehe auch: Delay, Time


WaitMove

WaitMove Ax1 Ax2 ... Axn

Warten auf das Bewegungsende einer Handlingachse

In ProNC können ab Version 1.45.0.2 die sechs Handlingachsen Ax1 bis Ax6 programmiert werden. Die Bezeichner für die Handlingachsen setzen sich aus der Bezeichnung Ax und der nachfolgenden Achsennummer zusammen.

Mit Hilfe des Befehls WaitMove kann auf das Ende der Bewegung einer oder mehrerer Handlingachsen gewartet werden. Welche Achsen beim Warten auf das Bewegungsende berücksichtigt werden sollen, wird mit den übergebenen Parametern festgelegt.

Verwendete Parameter

Ax1, Ax2, ... Ax6

Bezeichner der Handlingachse, gültige Werte sind Ax1, Ax2, Ax3, Ax4, Ax5, Ax6

Beispiele:

;Starte die Handlingachse 1 (z.B. Linearachse) im Position Mode mit der

;aktuellen Geschwindigkeit (Vorschub) in mm/sec

;die Zielposition ist 10 mm (absolute Positionierung)

Ax1PA=10

;Warten auf das Ende dieser Bewegung

WaitMove Ax1

;Starte die Handlingachse 1 (z.B. Linearachse) und 2

Ax1PA=35.0 FAx1=30.0

Ax2PA=180 FAx2=90

;Warten bis beide Achsen die Bewegung beendet haben

WaitMove Ax1 Ax2

Siehe auch: Handlingachsen, AxnPA, AxnPI, FAx, AxnV, AxStop, AxStart, AxAbort, AxnInMotion, Pos.Axn, SetOpMode, AxOverride, AxReset


WaitBit

WaitBit Ep.b == w TIMEOUT time

Warten auf das Auftreten eines Wertes eines Eingangsbits

Mit Hilfe dieses Befehls kann eine Bearbeitung angehalten werden, bis ein vorgegebener logischer Pegel an einem Eingangskanal auftritt.

Verwendete Parameter

p | Portnummer des Eingangskanals, der überprüft werden soll. Gültige Werte für die Portnummer p reichen von 1...Anzahl_der_Eingangsports.
b | Bitnummer des Eingangskanals, der überprüft werden soll. Gültige Werte für die Bitnummer b laufen von 1...8.
w | Logischer Pegel, auf dessen Eintreten gewartet werden soll. Zulässige Werte sind 0 und 1.
time | Durch die Anweisung TIMEOUT und der nachfolgenden Zahl time ist die Angabe einer Wartezeit in Millisekunden möglich, nach deren verstreichen die Aktion "Warten auf den Eingangspegel" abgebrochen wird.

Indikation in ProNC

In ProNC wird der aktive Befehl durch eine Anzeige in der Statuszeile des Programms sowie eine animierte Fortschrittsanzeige signalisiert.

Die Fortschrittsanzeige läuft dabei zyklisch von 0 bis 100%.

Hinweis: Das Warten auf das Eintreten des Bitwertes kann mit der Funktionstaste F8 abgebrochen werden

Bei zusätzlicher Verwendung einer Timeout-Zeit wird in der Statusleiste der Anwendung die verbleibende Wartezeit bis zum Abbruch der Funktion angezeigt:

Beispiele:

(1)

;Warten auf den logischen Pegel "1" an Eingang 1.1

WaitBit E1.1 == 1

(2)

;Warten auf den logischen Pegel "1" an einem Eingang,

;der Zugriff auf den Eingang erfolgt mit einem Textersatz

#define E_Start E1.8

WaitBit E_Start == 1

(3)

;Warten auf den logischen Pegel "1" an einem Eingang,

;die maximale Wartezeit ist 15 Sekunden

WaitBit E1.3==1 TIMEOUT 15000

Siehe auch: WaitPort


WaitPort

WaitPort Ep == w TIMEOUT time

Warten auf das Auftreten eines Bitmusters an einem Eingangsport

Mit Hilfe dieses Befehls kann eine Bearbeitung angehalten werden, bis ein vorgegebenes Bitmuster an einem 8-Bit-Eingangsport auftritt.

Verwendete Parameter

p | Portnummer des 8-Bit-Eingangsports, das überprüft werden soll. Gültige Werte für die Portnummer p reichen von 1...Anzahl_der_Eingangsports.
w | Das Bitmuster, auf dessen Eintreten gewartet werden soll. Zulässige Werte liegen zwischen 0 und 255. Die Angabe des Bitmusters ist sowohl in dezimaler Schreibweise (0...255), in binärer (00000000B ... 11111111B) als auch in hexadezimaler Schreibweise (0x00 ... 0xFF) möglich.
time | Durch die Anweisung TIMEOUT und der nachfolgenden Zahl time ist die Angabe einer Wartezeit in Millisekunden möglich, nach deren verstreichen die Aktion "Warten auf das Eingangsbitmuster" abgebrochen wird.

Indikation in ProNC

In ProNC wird der aktive Befehl durch eine Anzeige in der Statuszeile des Programms sowie eine animierte Fortschrittsanzeige signalisiert.

Die Fortschrittsanzeige läuft dabei zyklisch von 0 bis 100%.

Hinweis: Das Warten auf das Eintreten des Bitwertes kann mit der Funktionstaste F8 abgebrochen werden.

Bei zusätzlicher Verwendung einer Timeout-Zeit wird in der Statusleiste der Anwendung die verbleibende Wartezeit bis zum Abbruch der Funktion angezeigt:

Beispiele:

(1)

;Warten auf ein Bitmuster an einem Eingangsport

;Die Angabe des Bitmusters erfolgt binaer

WaitPort E1 == 00001111B

(2)

;Warten auf ein Bitmuster an einem Eingangsport

;Die Angabe des Bitmusters erfolgt hexadezimal

WaitPort E1 == 0x0A

(3)

;Warten auf ein Bitmuster an einem Eingangsport

;Die Angabe von Port und Bitmuster erfolgt ueber

;die Definition eines Textersatzes

#define Start_Port E1

#define Start_Muster 0x03

WaitPort Start_Port == Start_Muster

Siehe auch: WaitBit


While ... EndWhile

Abweisende Wiederholschleife

Die While-Schleife ist eine abweisende Schleife, da die Laufbedingung vor dem Durchlauf überprüft wird und somit theoretisch auch kein Durchgang erfolgen kann.

While Bedingung

<Anweisungen falls Bedingung WAHR>

EndWhile

Für die Auswertung der Bedingung können Kombinationen unter Zuhilfenahme der Operatoren für binäre und / oder logische Verknüpfungen (AND, OR, NOT, &, |, ^, ==, !=) erstellt werden.

Die Abarbeitung der Schleife beginnt mit einem Test der Bedingung. Ergibt dieser Test UNWAHR, so wird die Schleife abgebrochen. Das bedeutet, daß die Anweisungen im Schleifenkörper gar nicht ausgeführt werden, wenn die Bedingung beim Eintritt in die While-Schleife nicht erfüllt ist. Liefert der Test WAHR, so wird der Anweisungsblock der While-Schleife ausgeführt. Danach wird die Bedingung wieder geprüft. Die Anweisungen im Anweisungsblock werden ausgeführt solange die Bedingung erfüllt ist.

Beispiele:

;Solange E1.4 aktiv (logisch 1) ist, wird eine Relativbewegung ausgefuehrt

WHILE GETBIT E1.4

MOVEREL X1.0

ENDWHILE

;Solange E1.4 oder E1.6 aktiv (logisch 1) sind, wird eine Relativbewegung ausgefuehrt

While GetBit E1.4 OR GetBit E1.6

MOVEREL X1.0

EndWhile

;Solange E1.3 inaktiv (logisch 0) ist, wird eine Relativbewegung ausgefuehrt

While NOT GetBit E1.3

MoveRel X0.2

EndWhile

;Eine Endlosschleife, Abbruch erfolgt wenn bei der

;MessageBox "Nein" gewaehlt wird

While 1==1

...

...

R1=MessageBox INFO YESNO "Weiter?"

If R1==7 ;Rueckgabewert bei "Nein"

ProgEnd

EndIf

EndWhile

Siehe auch: Do...EndDo, For...EndFor, Continue, Break


WpClamp

WpClamp onoff

Spannen / Lösen der Werkstückspannvorrichtung

Aktiviert / deaktiviert eine (pneumatisch o. ä.) betriebene Werkstück-Spannvorrichtung (z.B. pneumatisch betriebener Schraubstock, Vakuumtisch, ...).

Die Signalisierung für den Betrieb der Werkstück-Spannvorrichtung muß im entsprechenden Einstelldialog des Programms eingerichtet werden:

Einstellungen - Steuerung - Selektion: Ein-/Ausgabemodule - Schaltfläche: Erweiterte Einstellungen - Registerkarte: Peripherie

Verwendete Parameter:

ON Werkstück spannen

OFF Werkstück freigeben

Beispiel:

WpClamp ON ;Werkstück spannen

WpClamp OFF ;Werkstück freigeben


WpClear

Löschen einer Nullpunktverschiebung / eines Werkstücknullpunktes

Deaktivieren einer Nullpunktverschiebung. Der aktuelle Nullpunkt des Werkstück-Koordinatenssystems wird auf den Nullpunkt des Maschinen-Koordinatensystems gelegt. Alle nachfolgend übergebenen Koordinaten beziehen sich nun auf den Maschinen-Nullpunkt.

Beispiel:

WpClear ;Nullpunkt löschen

MoveAbs X0 Y0 Z0 ;Fährt an den Referenzpunkt der Maschine

Siehe auch: WpReg1Write, WpReg1, WpReg2Write, WpReg2, WpZero, WpZeroAbs, WpZeroRead


WpReg1

Aktivieren von Werkstücknullpunkt-Register 1

Dieser Befehl entspricht funktional dem Befehl WpReg1Act.

Nullpunktverschiebung 1 aktivieren: Der aktuelle Nullpunkt des Werkstück-Koordinatenssystems wird gegenüber dem Nullpunkt des Maschinen-Koordinatensystems absolut um die aktuellen Werte im Nullpunkt-Register 1 verschoben. Das Nullpunktregister 1 wird mit dem Befehl WpReg1Write beschrieben.

Beispiel:

;Beschreiben des Nullpunktregisters 1

;mit neuen Koordinaten

WpReg1Write X10.0 Y20.0 Z-25.0

;Aktivieren von Nullpunktregister 1

WpReg1

Siehe auch: WpReg1Write, WpReg2Write, WpReg2, WpClear, WpZero, WpReg1Act, WpZeroAbs, WpZeroRead


WpReg1Act

Aktivieren von Werkstücknullpunkt-Register 1

Dieser Befehl entspricht funktional dem Befehl WpReg1.

Nullpunktverschiebung 1 aktivieren: Der aktuelle Nullpunkt des Werkstück-Koordinatenssystems wird gegenüber dem Nullpunkt des Maschinen-Koordinatensystems absolut um die aktuellen Werte im Nullpunkt-Register 1 verschoben. Das Nullpunktregister 1 wird mit dem Befehl WpReg1Write beschrieben.

Beispiel:

;Beschreiben des Nullpunktregisters 1

;mit neuen Koordinaten

WpReg1Write X10.0 Y20.0 Z-25.0

;Aktivieren von Nullpunktregister 1

WpReg1Act

Siehe auch: WpReg1Write, WpReg2Write, WpReg2, WpClear, WpZero, WpReg1, WpZeroAbs, WpZeroRead


WpReg1Write

WpReg1Write [Name="name"] [Frame] [Q-Var] [X... Y... Z...]

Beschreiben von Werkstücknullpunkt-Register 1

Nullpunktverschieberegister 1 beschreiben. Mit dem nachfolgenden Befehl WPREG1 kann diese Nullpunktverschiebung aktiviert werden. Die Absolutwerte für jede Koordinate des neuen Werkstücknullpunktes werden zunächst in das Nullpunkt-Register geschrieben und erst mit dem Befehl WPREG1 aktiviert.

Die Koordinaten können auf unterschiedliche Weise übergeben werden:

·Übergabe einer Q-Variablen

·Übergabe eines Frame-Namens aus einer Liste mit Maschinenpositionen

·Übergabe diskreter Positionen für die Achsen X, Y, Z, ...

Der optionale Parameter Name ermöglicht es, den Werkstücknullpunkt zu benennen. Der vergebene Name wird in der Remote bzw. ProNC in verschiedenen Anzeigen der jeweiligen Anwendung dargestellt.

Parameter des Befehls:

name | Mit dem Parameter "name" kann dem Werkstücknullpunkt eine Benennung zugewiesen werden. Diese Benennung erscheint als Name des aktuellen Werkstücknullpunktes, wenn das Werkstücknullpunktregister mit dem Befehl WpReg1 aktiviert wird.
Frame | Angabe des Namens eines Frames, dessen Koordinaten in das Werkstücknullpunktregister übertragen werden soll. Der Frame muss in der Liste der Werkstücknullpunkte, in der Liste der Maschinenpositionen oder in der spezifischen Frameliste der Bearbeitungsdatei angelegt sein.
Q-Var | Angabe einer Q-Variablen, deren Koordinaten in das Werkstücknullpunktregister übertragen werden soll.
X, Y, Z, ... | Angabe von Einzelkoordinaten, die in die entsprechenden Achskoordinaten des Werkstücknullpunktregisters übernommen werden sollen. Nach dem jeweiligen Achsbezeichner kann die direkte Angabe eines numerischen Wertes oder eine R- bzw. I-Variable folgen.

Beispiele:

(1)

;Beschreiben des Nullpunktregisters 1

;mit neuen Koordinaten

WpReg1Write X10.0 Y20.0 Z-25.0

;Aktivieren von Nullpunktregister 1

WpReg1

(2)

;Beschreiben des Nullpunktregisters 1

;mit Koordinaten aus Variablen, die aus einer

;R-Var-Datei geladen wurden

LoadRVar "C:\CNCWorkbench\Koordinaten\WS1.var" R1 R2 R3

WpReg1Write XR1 YR2 ZR3

;Aktivieren von Nullpunktregister 1

WpReg1

(3)

;Beschreiben des Nullpunktregisters 1

;mit den Koordinaten einer Frame-Variablen,

;die in einer Liste von Maschinenpositionen

;angelegt wurde

WpReg1Write FRAESWSNULL1

;Aktivieren von Nullpunktregister 1

WpReg1Act

(4)

;Initialisieren mehrerer Q-Variablen mit

;den Koordinaten von Frame-Variablen aus

;einer Liste von Maschinenpositionen

;anschließend Zugriff über eine Index-Variable

Q11=FRAESWSNULL1 ;Initialisieren von Q11

Q12=FRAESWSNULL2 ;Initialisieren von Q12

Q13=FRAESWSNULL3 ;Initialisieren von Q13

Q14=FRAESWSNULL4 ;Initialisieren von Q14

R1=12 ;Initialisieren der Indexvariablen

WpReg1Write QR1 ;Indizierter Zugriff, verwendet wird Q12

;Aktivieren von Nullpunktregister 1

WpReg1Act

(5)

;Laden eines Werkstücknullpunktes aus der

;Liste der Werkstücknullpunkte, anschließend

;Korrektur der Z-Koordinate und registrieren

;des modifizierten Werkstücknullpunktes mit

;neuem Namen

;Zuweisen über den Befehl für das Schreiben

;des Werkstücknullpunktregisters, hier werden

;alle Informationen übertragen, auch die

;Referenzposition Z des Werkzeugs

WpReg1Write WSNull_Std

;Korrektur der Z-Koordinate und Vergabe eines

;neuen Namens

WpReg1Write Name="WsNullKorrigiert" Z(WSNull_Std:Z+1.5)

;Aktivieren von Nullpunktregister 1

WpReg1Act

;In der Anwendung wird der aktivierte Nullpunkt

;nun so dargestellt

Ansicht - Bedienfeld Werkstücknullpunkt

Siehe auch: WpReg1, WpReg1Act, WpReg2Write, WpReg2, WpReg2Act, WpClear, WpZero, WpZeroAbs, WpZeroRead


WpReg2

Aktivieren von Werkstücknullpunkt-Register 2

Nullpunktverschiebung 2 aktivieren: Der aktuelle Nullpunkt des Werkstück-Koordinatenssystems wird gegenüber dem Nullpunkt des Maschinen-Koordinatensystems absolut um die aktuellen Werte im Nullpunkt-Register 2 verschoben. Das Nullpunktregister 2 wird mit dem Befehl WpReg2Write beschrieben.

Beispiel:

;Beschreiben des Nullpunktregisters 2

;mit neuen Koordinaten

WpReg2Write X10.0 Y20.0 Z-25.0

;Aktivieren von Nullpunktregister 2

WpReg2

Siehe auch: WpReg1Write, WpReg1, WpReg2Write, WpClear, WpZero, WpReg2Act, WpZeroAbs, WpZeroRead


WpReg2Act

Aktivieren von Werkstücknullpunkt-Register 2

Dieser Befehl entspricht funktional dem Befehl WpReg2.

Nullpunktverschiebung 2 aktivieren: Der aktuelle Nullpunkt des Werkstück-Koordinatenssystems wird gegenüber dem Nullpunkt des Maschinen-Koordinatensystems absolut um die aktuellen Werte im Nullpunkt-Register 2 verschoben. Das Nullpunktregister 2 wird mit dem Befehl WpReg2Write beschrieben.

Beispiel:

;Beschreiben des Nullpunktregisters 2

;mit neuen Koordinaten

WpReg2Write X10.0 Y20.0 Z-25.0

;Aktivieren von Nullpunktregister 2

WpReg2

Siehe auch: WpReg1Write, WpReg1, WpReg2Write, WpClear, WpZero, WpZeroAbs, WpZeroRead


WpReg2Write

WpReg2Write X... Y... Z...

Beschreiben von Werkstücknullpunkt-Register 2

Nullpunktverschieberegister 2 beschreiben. Mit dem nachfolgenden Befehl WpReg2 kann diese Nullpunktverschiebung aktiviert werden. Die Absolutwerte für jede Koordinate des neuen Werkstücknullpunktes werden zunächst in das Nullpunkt-Register geschrieben und erst mit dem Befehl WpReg2 aktiviert.

Die Koordinaten können auf unterschiedliche Weise übergeben werden:

·Übergabe einer Q-Variablen

·Übergabe eines Frame-Namens aus einer Liste mit Maschinenpositionen

·Übergabe diskreter Positionen für die Achsen X, Y, Z, ...

Der optionale Parameter Name ermöglicht es, den Werkstücknullpunkt zu benennen. Der vergebene Name wird in der Remote bzw. ProNC in verschiedenen Anzeigen der jeweiligen Anwendung dargestellt.

Parameter des Befehls:

name | Mit dem Parameter "name" kann dem Werkstücknullpunkt eine Benennung zugewiesen werden. Diese Benennung erscheint als Name des aktuellen Werkstücknullpunktes, wenn das Werkstücknullpunktregister mit dem Befehl WpReg1 aktiviert wird.
Frame | Angabe des Namens eines Frames, dessen Koordinaten in das Werkstücknullpunktregister übertragen werden soll. Der Frame muss in der Liste der Werkstücknullpunkte, in der Liste der Maschinenpositionen oder in der spezifischen Frameliste der Bearbeitungsdatei angelegt sein.
Q-Var | Angabe einer Q-Variablen, deren Koordinaten in das Werkstücknullpunktregister übertragen werden soll.
X, Y, Z, ... | Angabe von Einzelkoordinaten, die in die entsprechenden Achskoordinaten des Werkstücknullpunktregisters übernommen werden sollen. Nach dem jeweiligen Achsbezeichner kann die direkte Angabe eines numerischen Wertes oder eine R- bzw. I-Variable folgen.

Beispiele:

;Beschreiben des Nullpunktregisters 2

;mit neuen Koordinaten

WpReg2Write X10.0 Y20.0 Z-25.0

;Aktivieren von Nullpunktregister 2

WpReg2

;Beschreiben des Nullpunktregisters 2

;mit Koordinaten aus Variablen

LoadRVar "C:\CNCWorkbench\Koordinaten\WS1.var" R1 R2 R3

WpReg2Write XR1 YR2 ZR3

;Aktivieren von Nullpunktregister 2

WpReg2

;Beschreiben des Nullpunktregisters 2

;mit den Koordinaten einer Frame-Variablen,

;die in einer Liste von Maschinenpositionen

;angelegt wurde

WpReg2Write FRAESWSNULL1

;Aktivieren von Nullpunktregister 2

WpReg2Act

;Initialisieren mehrerer Q-Variablen mit

;den Koordinaten von Frame-Variablen aus

;einer Liste von Maschinenpositionen

;anschließend Zugriff über eine Index-Variable

Q11=FRAESWSNULL1 ;Initialisieren von Q11

Q12=FRAESWSNULL2 ;Initialisieren von Q12

Q13=FRAESWSNULL3 ;Initialisieren von Q13

Q14=FRAESWSNULL4 ;Initialisieren von Q14

R1=12 ;Initialisieren der Indexvariablen

WpReg2Write QR1 ;Indizierter Zugriff, verwendet wird Q12

;Aktivieren von Nullpunktregister 2

WpReg2Act

Siehe auch: WpReg1Write, WpReg1, WpReg1Act, WpReg2, WpReg2Act, WpClear, WpZero, WpZeroAbs, WpZeroRead


WpTeach

Teachen eines neuen Werkstücknullpunktes

Dieser Befehl öffnet den Dialog für das manuelle Verfahren der Achsen der Maschine. Mit Hilfe dieses Dialogs können die Achsen an die Position des gewünschten Werkstück-Nullpunktes gefahren werden. Wird der Dialog durch die Auswahl von "OK" beendet, erfolgt das Aktivieren des Werkstücknullpunktes an der aktuellen Position. Wird der Dialog mit der Auswahl von "Abbrechen" beendet, erfolgt keine weitere Aktion.

Beispiel:

;Neuen Werkstücknullpunkt teachen

WpTeach

Siehe auch: ManualMove


WpZero

WpZero [STANDARD] [as]

Aktivieren der aktuellen Position als neuen Werkstücknullpunkt

Setzt die aktuelle erreichte Position der Maschine als neuen Werkstücknullpunkt. Die zukünftig übergebenen Koordinaten beziehen sich ab jetzt auf die aktuell erreichte Position.

Parameter des Befehls:

keine Parameterangabe

Die aktuelle Position, an denen sich die Achsen momentan befinden, wird als Werkstücknullpunkt aktiviert.

Standard

In der Liste der Maschinenpositionen kann ein Standard-Werkstücknullpunkt deklariert werden, der automatisch beim Start einer CNC-Bearbeitung aktiviert wird. Der momentan aktive Standard-Werkstücknullpunkt wird durch das aktiv dargestellte Nullpunkt-Symbol gekennzeichnet.

WpZero1 ist hier als Standard-Werkstücknullpunkt markiert

Die Anweisung "WpZero Standard" bewirkt in einem CNC-Programm das Aktivieren dieses in der Liste der Werkstücknullpunkte ausgewiesenen Standard-Werkstücknullpunktes.

Sollte während einer Bearbeitung die Notwendigkeit bestehen, verschiedene lokale Werkstücknullpunkte zu verwenden, so kann der Standard-Werkstücknullpunkt jederzeit wieder durch Verwendung der Anweisung "WpZero" mit dem Parameter "Standard" wiederhergestellt werden, z.B. um allgemeine Positionierbewegungen auszuführen oder Standard-Positionen anzufahren.

as

Optionale Angabe des Achssystems, für das der Werkstücknullpunkt aktiviert werden soll.

Mögliche Werte: 1, 2

Beispiel:

;Aktivieren des Werkstücknullpunktes an der aktuellen

;Position der Achsen

WpClear ;Löschen des Nullpunktes

MoveAbs X30.0 ;Fahren an Position

WpZero ;Setzen als Werkstücknullpunkt

;Aktivieren des Standard-Werkstücknullpunktes,

;der in der Liste der Maschinenpositionen

;deklariert wurde

WpZero Standard

Siehe auch: WpReg1Write, WpReg1, WpReg2Write, WpReg2, WpClear, WpZeroAbs, WpZeroRead


WpZeroAbs

WpZeroAbs [X...] [Y...] [Z...] [A...] [framename] [Qn] [Strn]

Aktivieren eines neuen Werkstücknullpunktes

Der Befehl WpZeroAbs wird verwendet, um einen Werkstücknullpunkt zu aktivieren. Die Koordinaten des neuen Werkstücknullpunkts können entweder einzeln nach ihren jeweiligen Achsbezeichnern, als Q-Variable oder durch die Angabe des Namens einer Frame-Variablen angegeben werden. Der Name der Frame-Variablen kann direkt, als Zeichenkette oder als String-Variable angegeben werden.

Verwendete Parameter:

X..., Y..., ... W... | Angabe der Werkstücknullpunktkoordinaten für die Achsen X, Y, Z, A, B, C, U, V, W. Die Angabe der Koordinaten erfolgt nach dem Achsbezeichner als numerischer Wert oder in Form einer R- bzw. I-Variablen.
framename | Angabe eines Frames mit den Werkstücknullpunktkoordinaten der Achsen. Der Frame kann in der Liste der Werkstücknullpunkte, in der Liste der Maschinenpositionen oder in der spezifischen Framedatei der aktuellen Bearbeitungsdatei enthalten sein. Der Name des Frames kann direkt oder als Zeichenkette (in Anführungszeichen) angegeben werden. Bei der Angabe des Framenamens wird nicht zwischen Gross- und Kleinschreibung unterschieden.
Qn | Angabe einer Q-Variablen (Frame-Variablen) mit dem Index n, welche die einzelnen Koordinaten des Werkstücknullpunktes enthält. Die Q-Variable kann entweder über die Zuweisung eines Framenamens oder über die Zuweisung von Einzelkoordinaten an die einzelnen Elemente X, Y, ... des Frames initialisiert werden.
Strn | Angabe einer STR-Variablen (String-Variablen, Zeichenkettenvariablen) mit dem Index n, welche den Namen des Frames mit den Werkstücknullpunktkoordinaten enthält.

Wenn bereits ein Werkstücknullpunkt aktiv ist, werden die Nullpunktkoordinaten für die angegebenen Achsen überschrieben. Die Werkstücknullpunktkoordinaten von Achsen, die nicht im aktuellen Befehl angegeben werden, werden unverändert beibehalten.

Falls kein Werkstücknullpunkt aktiv ist, werden die neuen Werkstücknullpunktkoordinaten für die angegebenen Achsen übernommen. Achsen, für die keine Werkstücknullpunktkoordinate angegeben wird, erhalten als neue Werkstücknullpunktkoordinate den Wert 0 (dies entspricht dem Maschinennullpunkt dieser Achse).

Hinweis: Verwendete Suchreihenfolge in den Frame-Dateien bei Angabe eines Framenamens. Die Framedateien für die Werkstücknullpunkte, die Framedateien für die Maschinenpositionen sowie die zum PAL-Quellprogramm gehörende spezifische Frame-Datei werden in dieser Reihenfolge durchsucht:

1. die zum Anwenderprogramm gehörende Frame-Datei, z.B. Test.FRA bei Quelldatei Test.PAL
2. die Frame-Datei der Maschinenpositionen StdFrame.FRA im Bin-Verzeichnis
3. die Frame-Datei der Werkstücknullpunkte StdWnp.FRA im Bin-Verzeichnis

Beispiele:

;Setzen des Werkstücknullpunktes für die Achsen

;X, Y und Z durch direkte Angabe von Koordinaten

WpZeroAbs X10 Y-20 Z-30

;Ändern eines aktiven Werkstücknullpunkts.

;nicht angegebene Koordinaten werden vom gerade

;aktiven Werkstücknullpunkt übernommen

WpZeroAbs X100

;Setzen des Werkstücknullpunkt für die Achsen

;X, Y und Z, die Koordinaten wurden zuvor

;in R-Variablen abgelegt

R11=25.0

R12=-50

R13=-12.5

WpZeroAbs XR11 YR12 ZR13

;Setzen des Werkstücknullpunktes durch Übergabe

;der Koordinaten in einem Frame

;WSNP_1 wurde in den Werkstuecknullpunkten, in den

;Maschinenpositionen oder in der spezifischen

;Framedatei des PAL-Programms angelegt

WpZeroAbs WSNP_1

;Setzen des Werkstücknullpunktes durch Übergabe

;der Koordinaten in einer Q-Variablen

;WSNP_2 wurde in den Werkstuecknullpunkten, in den

;Maschinenpositionen oder in der spezifischen

;Framedatei des PAL-Programms angelegt

Q11=WSNP_2

WpZeroAbs Q11

;Modifikation einer einzelnen Koordinate der Framevariablen

Q11=WSNP_1

Q11:Y=27.5

WpZeroAbs Q11

;Zuweisen des Namens ueber eine Zeichenkettenvariable

Str11="WSNP_1"

WpZeroAbs Str11

Siehe auch: WpReg1Write, WpReg1, WpReg2Write, WpReg2, WpClear, WpZero, WpZeroRead


WpZeroRead

Qn=WpZeroRead [as]

Abfrage des aktuellen Werkstücknullpunktes

Abfrage des aktuell verwendeten Werkstücknullpunktes und Übertrag der Koordinaten in eine Q-Variable (Frame-Variable).

Parameter des Befehls:

Qn | Eine Q-Variable (Frame-Variable) mit dem Index n, in welche das Ergebnis der Abfrage der Werkstücknullpunkt-Koordinaten übertragen wird.
as | Optionale Angabe des Achssystems, für das die Koordinaten des Werkstücknullpunktes abgefragt werden sollen. Mögliche Werte: 1, 2

Beispiel:

;Abfrage der Koordinaten des

;Werkstuecknullpunktes fuer

;Achssystem 1

Q1 = WpZeroRead 1

;Jetzt Abfrage fuer Achssystem 2

Q2 = WpZeroRead 2

;Ohne Angabe des Achssystems:

;Abfrage fuer Achssystem 1

Q1 = WpZeroRead

Siehe auch: WpReg1Write, WpReg1, WpReg2Write, WpReg2, WpClear, WpZero, WpZeroAbs


WriteExcelFile

WriteExcelFile [FAST|COMMIT] "dateiname" "blattname" zeile spalte variable

WriteExcelFile [FAST|COMMIT] "dateiname" "blattname" zeile begin_spalte Until end_spalte variable

Schreiben eines Wertes in eine Zelle einer Excel-Datei

Der Befehl WriteExcelFile wird verwendet, um einen Wert in eine Zelle eines Blattes einer Excel-Datei zu schreiben. Die Verwendung des Schlüsselwortes "Until" ermöglicht das Beschreiben eines Bereichs, bestehend aus mehreren Spalten, innerhalb der angegebenen Zeile des Arbeitsblatts.

Verwendete Parameter:

FAST Optional: Schlüsselwort für das "schnelle" Schreiben von Excel-Dateien. Bei Verwendung dieses Parameters wird der Inhalt der Excel-Tabelle im Arbeitsspeicher des PC's gehalten und dort beschrieben. Änderungen in der Datei werden noch nicht vorgenommen.
COMMIT Optional: Schlüsselwort für das Schreiben der im Arbeitsspeicher des PC's gehaltenen Daten der Excel-Tabelle in die physikalische Excel-Datei. Bei Verwendung des Parameters "FAST" werden Zellinhalte zunächst im Arbeitsspeicher des PC's gehalten und noch nicht in der Datei abgelegt. Um die Daten aus dem Arbeitsspeicher in die Datei zu schreiben, ist der Aufruf des Befehls WriteExcelFile mit dem Parameter "COMMIT" erforderlich.

Hinweis:

Wenn der Parameter "COMMIT" verwendet und die Angabe für die Parameter "zeile" und "spalte" jeweils 0 sind, wird nur der Inhalt des arbeitsblattes aus dem Speicher in die Datei geschrieben.
dateiname Angabe von Namen und Pfad der Excel-Datei, in die geschrieben werden soll. Die Angabe des Dateinamens erfolgt in Anführungszeichen. Als Parameter kann eine Zeichenkette oder eine String-Variable verwendet werden.

blatt Angabe des Namens des Arbeitsblattes innerhalb der Excel-Datei, in welchem sich die Zelle befindet, die beschrieben werden soll. Die Angabe des Namens des Arbeitsblattes erfolgt in Anführungszeichen. Als Parameter kann eine Zeichenkette oder eine String-Variable verwendet werden.

zeile Dieser Parameter beinhaltet die Zeilennummer der Zelle, die beschrieben werden soll. Gültige Werte für Zeilennummern befinden sich im Bereich von 1 ... Max. Anzahl der Zeilen in der Excel-Datei. Als Parameter kann eine ganze Zahl oder eine R-Variable verwendet werden.

spalte Dieser Parameter beinhaltet die Spaltennummer der Zelle, die beschrieben werden soll. Gültige Werte für Spaltennummern befinden sich im Bereich von 1 ... Max. Anzahl der Spalten in der Excel-Datei. Als Parameter kann eine ganze Zahl oder eine R-Variable verwendet werden.

begin_spalte Angabe der Startspalte für einen zu beschreibenden Bereich innerhalb der angegebenen Zeile. Die Werte welche in den Bereich geschrieben werden, stammen aus der angegebenen Variablen sowie deren unmittelbar nachfolgen Variablen. Als Parameter kann eine ganze Zahl oder eine R-Variable verwendet werden.
Until Schlüsselwort für das schreiben in mehrere Spalten aus der angegebenen Zeile des Arbeitsblatts. Das Schlüsselwort "Until" grenzt die Angabe der Startspalte von der Angabe der Endspalte des zu schreibenden Bereichs ab.

end_spalte Angabe der Endspalte für einen zu beschreibenden Bereich innerhalb der angegebenen Zeile. Die Werte welche in den Bereich geschrieben werden, stammen aus der angegebenen Variablen sowie deren unmittelbar nachfolgen Variablen. Als Parameter kann eine ganze Zahl oder eine R-Variable verwendet werden.
variable Angabe des Wertes, welcher in die Zelle geschrieben werden soll. Der Wert kann als statischer Text oder als Variable angegeben werden. Es können R-Variablen, I-Variablen oder Str-Variablen angegeben werden.

Rückgabewerte:

Die Funktion WriteExcelFile liefert einen Rückgabewert, welcher einer R-Variablen zugewiesen werden kann. Der Rückgabewert hat folgende Bedeutung:

0 | OK | Fehlerfreie Ausführung des Befehls
10 | ERR_WRITE_EXCELFILE_NOT_FOUND | Die angegebene Excel-Datei wurde nicht gefunden
11 | ERR_WRITE_EXCELFILE_PROTECTED | Die angegebene Excel-Datei ist schreibgeschützt
12 | ERR_WRITE_EXCELFILE_OPEN_FAILED | Die Excel-Datei konnte nicht geöffnet werden
13 | ERR_WRITE_EXCELFILE_INVALID_ROW_INDEX | Ungültiger Zeilenindex
14 | ERR_WRITE_EXCELFILE_INVALID_COL_INDEX | Ungültiger Spaltenindex
15 | ERR_WRITE_EXCELFILE_SHEET_MISSING | Das angegebene Arbeitsblatt wurde nicht gefunden
16 | ERR_WRITE_EXCELFILE_WRITE_FAILED | Fehler beim Schreiben in die Excel-Datei
17 | ERR_WRITE_EXCELFILE_LOCKED_BY_PROCESS | Die Excel-Datei ist von einem anderen Prozess blockiert

Beispiele:

(1)

;In die Zelle [2,2] des Arbeitsblattes "Tabelle1"

;der Excel-Datei test.xls im Verzeichnis

;C:\CNCWorkbench\NCProg\PAL wird der Wert 1

;geschrieben

WriteExcelFile "C:\CNCWorkbench\NCProg\PAL\test.xls" "Tabelle1" 2 2 1

(2)

;In die Zelle [3,2] des Arbeitsblattes "Tabelle1"

;der Excel-Datei test.xls im Verzeichnis

;C:\CNCWorkbench\NCProg\PAL wird der Inhalt

;der Variablen R21 geschrieben

R21=45.5

WriteExcelFile "C:\CNCWorkbench\NCProg\PAL\test.xls" "Tabelle1" 3 2 R21

(3)

;Indizierter Zugriff

;In die Zelle [4,2] des Arbeitsblattes "Tabelle1"

;der Excel-Datei test.xls im Verzeichnis

;C:\CNCWorkbench\NCProg\PAL wird der Inhalt

;der R-Variablen geschrieben, die mit R1 indiziert wird

R1=3

R3=12.9

;Der Inhalt der R-Variablen R3 wird geschrieben

WriteExcelFile "C:\CNCWorkbench\NCProg\PAL\test.xls" "Tabelle1" 4 2 RR1

(4)

;Indizierter Zugriff, variable Zeilennummer

;In die Zellen [5,2], [6,2] und [7,2] des Arbeitsblattes

;"Tabelle1" der Excel-Datei test.xls im Verzeichnis

;C:\CNCWorkbench\NCProg\PAL wird der Inhalt

;der R-Variablen R5, R6 und R7 geschrieben

R5=50.0

R6=60.0

R7=70.0

;Der Inhalt der R-Variablen wird geschrieben

For R1=5,1,7

WriteExcelFile "C:\CNCWorkbench\NCProg\PAL\test.xls" "Tabelle1" R1 2 RR1

EndFor

(5)

;Schnelles Beschreiben von Zellen mit abschliessendem

;Uebertragen in die Excel-Datei

;In die Zellen [5,2] bis [5,12], [6,2] bis [6,12]

;und [7,2] bis [7,12] des Arbeitsblattes

;"Tabelle1" der Excel-Datei test.xls im Verzeichnis

;C:\CNCWorkbench\NCProg\PAL wird der Inhalt

;der R-Variablen R502 bis R512, R602 bis R612 und

;R702 bis R712 geschrieben

Str1="C:\CNCWorkbench\NCProg\PAL\test.xls"

WriteExcelFile FAST Str1 "Tabelle1" 5 2 Until 12 R502

WriteExcelFile FAST Str1 "Tabelle1" 6 2 Until 12 R602

WriteExcelFile FAST Str1 "Tabelle1" 7 2 Until 12 R702

;Die Angabe von Zeile=0, Spalte=0 uebertraegt den Inhalt

;aus dem Arbeitsspeicher in die Excel-Datei. Der Inhalt

der R-Variablen R0 wird nicht beruecksichtigt.

WriteExcelFile COMMIT Str1 "Tabelle1" 0 0 R0

Siehe auch: ReadExcelFile


WriteInitFile

In|Rn=WriteInitFile filename section entry Strx|Ix|Rx

Schreiben eines Eintrags in eine Initialisierungsdatei

Funktion für das Schreiben eines Eintrags in eine Sektion einer Initialisierungsdatei. Das Format der Initialisierungsdatei entspricht dem Format der Windows-Initialisierungsdateien.

Eine Windows-Initialisierungsdatei (auch INI-Datei) ist eine Textdatei, die Schlüssel-Wert-Paare enthält, die zusätzlich durch Sektionen gegliedert werden. Als einfach aufgebautes und zugleich von Menschen leicht lesbares Format ist es weit verbreitet, um Einstellungen von Programmen dauerhaft zu speichern.

Aufbau

Die Initialisierungsdaten werden zeilenweise abgelegt: Ein Gleichheitszeichen trennt den Eintrag von seinem Wert.

Eintrag=Wert

Um Einträge in sog. Sektionen zu gruppieren, ist eine (pro Datei) eindeutige Bezeichnung in eckigen Klammern über der jeweiligen Sektion anzugeben. Benannte Sektionen sind nicht verpflichtend, je Sektion müssen die Schlüssel eindeutig sein.

[Sektion1]

Schlüssel=Wert

[Sektion2]

Schlüssel=Wert

Schlüssel2=Wert

Außerdem sind Kommentarzeilen erlaubt, welche mit einem Semikolon beginnen.

; Das ist ein Kommentar

Beim Erstellen einer INI-Datei sind folgende Regeln zu beachten:

·Jede Sektion darf nur einmal vorkommen.

·Jeder Schlüssel darf nur einmal je Sektion vorkommen.

·Auf Werte wird mittels Sektion und Schlüssel zugegriffen.

·Kommentare werden mit einem ";" eingeleitet.

·Kommentare dürfen nur auf separaten Zeilen (nicht hinter Sektionsüberschriften oder Schlüsseln) stehen.

·Leerzeichen und Anführungszeichen werden von verschiedenen Programmen teilweise unterschiedlich behandelt.

·Groß- und Kleinschreibung wird nicht unterschieden

Parameter des Befehls:

In

Eine I-Variable (Integer-Variable) mit dem Index n, welche den Rückgabewert der Funktion erhält.

Rn

Eine R-Variable (Real-Variable) mit dem Index n, welche den Rückgabewert der Funktion erhält.

filename

Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable), welche den vollständigen Pfad und Namen der Initialisierungsdatei enthält.

section

Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable), welche den Namen der Sektion enthält, in die der Eintrag "entry" geschrieben werden soll.

entry

Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable), welche den Namen der Eintrags enthält, der in die Sektion "section" geschrieben werden soll.

Strx

Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index x, welche den Text des zu speichernden Eintrags enthält.

Ix

Ein ganzzahliger Wert bzw. eine I-Variable (Integer-Variable) mit dem Index x, welche einen zu speichernden ganzzahligen Wert repräsentiert.

Weitere Formatspezifizierer

Sofern als abzuspeichender Parameter eine I-Variable angegeben ist, kann das Format des gespeicherten Wertes durch Angabe einer weiteren Formatanweisung hinter dem Parameter Ix festgelegt werden:

keine Angabe | Der Wert wird als Dezimalwert gespeichert
H | Der Wert wird als Hexadezimalwert gespeichert
B | Der Wert wird als Binärwert gespeichert

Rx

Ein Gleitkommawert bzw. eine R-Variable (Real-Variable) mit dem Index x, welche einen zu speichernden Gleitkommawert repräsentiert.

Hinweis: Wird im Befehl WriteInitFile als Parameter eine Variable (Str-Variable)angegeben, wird der Inhalt dieser Str-Variablen unverändert in den Eintrag "entry" geschrieben. Wird im Befehl WriteInitFile als Parameter eine I-Variable oder R-Variable angegeben, wird der jeweilige Wert in eine entsprechende Zeichenkette konvertiert und in den Eintrag "entry" geschrieben.

Beispiel:

;In der R-Variablen R21 und R22 befinden sich

;die zuletzt vom Bediener eingegebenen Maße

;eines Werkstuecks. Diese sollen beim Beenden

;des Programms gesichert und beim naechsten

;Programmstart wiederhergestellt werden

ProgBegin

;Aktionen des Programmlaufs

;...

;...

;Schreiben der Eintraege

I1=WriteInitFile "C:\CNCWorkbench\Bin\ProNC.INI" "User Specific Settings" "Length" R21

I1=WriteInitFile "C:\CNCWorkbench\Bin\ProNC.INI" "User Specific Settings" "Width" R22

;oder alternativ mit Verwendung von Str-Variablen

;Name der ProNC-Initialisierungsdatei

Str0="C:\CNCWorkbench\Bin\ProNC.INI"

;Sektionsname fuer die Eintraege

Str1="User Specific Settings"

I1=WriteInitFile Str0 Str1 "Length" R21

I1=WriteInitFile Str0 Str1 "Width" R22

ProgEnd


WriteTextFile

In|Rn=WriteTextFile filename line text

Schreiben einer Textzeile in eine Textdatei

Funktion für das Schreiben einer Textzeile in eine ASCII-Textdatei.

Parameter des Befehls:

In

Eine I-Variable (Integer-Variable) mit dem Index n, welche den Rückgabewert der Funktion erhält.

Rn

Eine R-Variable (Real-Variable) mit dem Index n, welche den Rückgabewert der Funktion erhält.

Strn

Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index n, welche den Namen der Zieldatei enthält.

line

Angabe einer Zeilennummer bzw. eines Steuercodes für die verwendete Strategie beim Schreiben der Zeile.

Wert von line

Funktion

< -1

Fehler, keine Funktion

-1

Die Textdatei wird im Modus WRITE (Schreibmodus) geöffnet. Der aktuelle Inhalt der Datei wird gelöscht, d.h. ab diesem Moment ist die neue Größe der Datei 0 Byte. Falls der Parameter "text" eine Zeichenkette mit einer Länge > 0 Zeichen darstellt, wird diese Zeichenkette in die erste Zeile der Datei ab Offset 0 geschrieben.

0

Die Textdatei wird im Modus APPEND (Anhängen) geöffnet. Der Inhalt des Parameters "text" wird an das aktuelle Dateiende angehangen.

> 0

Die Textdatei wird im Modus WRITE (Schreibmodus) geöffnet. Der Inhalt des Parameters "text" ersetzt den Inhalt der Zeile "line" in der Datei, d.h. die entsprechende Zeile der Datei wird mit dem neuen Inhalt aus "text" überschrieben.

Falls die angegebene Zeilennummer größer als die Anzahl der Zeilen in der Textdatei ist, wird ein Fehler gemeldet.

text

Eine Zeichenkette oder eine Str-Variable (String-Variable, Zeichenkettenvariable) mit dem Index n, deren Inhalt in die Zieldatei geschrieben werden soll.

Zeilenumbruch

Beim Scheiben einer Textzeile in die Textdatei werden die Steuerzeichen für den Zeilenumbruch, CR/LF (Carriage Return, Linefeed) nicht automatisch an den Inhalt des Parameters "text" angehangen. Diese Steuerzeichen müssen explizit z.B. im Rahmen einer Formatierungsanweisung an die zu schreibende Zeile angehängt werden.

Dateinamenerweiterung

Die Dateinamenerweiterung der Textdatei ist frei wählbar, z.B. "TXT" oder "CSV".

Schreiben von CSV-Dateien

Das Dateiformat CSV steht für englisch Comma-separated values (seltener Character-separated values) und beschreibt den Aufbau einer Textdatei zur Speicherung oder zum Austausch einfach strukturierter Daten. Die Dateinamenserweiterung lautet ".csv". In CSV-Dateien können, vereinfacht ausgedrückt, Tabellen abgebildet werden, die z.B. in einem Tabellenkalkulationsprogramm (MS Excel, Open Office, ...) weiterverarbeitet werden können. Eine typische Anwendung ist das Erfassen und Schreiben von Messwerten, Positionen, usw. in eine CSV-Datei.

Innerhalb der Textdatei haben einige Zeichen eine Sonderfunktion zur Strukturierung der Daten.

·Ein Zeichen wird zur Trennung der Datensätze benutzt. Dies ist normalerweise der Zeilenumbruch des Betriebssystems – bei Windows sind es die zwei Zeichen CR/LF (Carriage Return / Linefeed).

·Ein Zeichen wird zur Trennung der Datenfelder (Spalten) innerhalb der Datensätze benutzt. Allgemein ist dafür das Komma (USA) vorgesehen. Weitere gebräuchliche Zeichen sind auch Semikolon (Deutschland, Österreich, Schweiz, Frankreich, ...), Doppelpunkt, Tabulatorzeichen, Leerzeichen oder andere Zeichen.

·In der ersten Zeile kann das Trennzeichen der Datenfelder auch mit der Anweisung "sep=<Trennzeichen>" explizit angegeben werden, z. B. "sep=," für Komma oder "sep=;" für das Semikolon etc.

·Um Sonderzeichen innerhalb der Daten nutzen zu können (z. B. das Komma in Dezimalzahlwerten), wird ein Feld- oder Textbegrenzungszeichen benutzt. Normalerweise ist dieser Feldbegrenzer das Anführungszeichen ". Wenn der Feldbegrenzer selbst in den Daten enthalten ist, wird dieser im Datenfeld verdoppelt.

·Der erste Datensatz kann ein Kopfdatensatz sein, der die Spaltennamen definiert.

Rückgabewert der Funktion

Bei fehlerfreier Ausführung des Kommandos ist der Rückgabewert 0, anderenfalls ist der Wert ungleich 0.

Beispiel:

(1)

Str1="C:\CNCWorkbench\Temp\TextDatei.txt"

;Oeffnen der Datei im Modus WRITE,

;aktueller Inhalt wird geloescht

R1=WriteTextFile Str1 -1 "Kopfzeile\n"

;eine Zeile zur Abgrenzung

;Modus ist jetzt APPEND (anhaengen)

R1=WriteTextFile Str1 0 "----------------------------------------\n"

;10 Zeilen mit Inhalt schreiben

For I2=1,10,1

Str3=StrFormat(Str3 "Das ist Zeile %ld" I2)

R1=WriteTextFile Str1 0 Str3+"\n"

EndFor

;wieder eine Zeile zur Abgrenzung

R1=WriteTextFile Str1 0 "----------------------------------------\n"

;letzter Eintrag

R1=WriteTextFile Str1 0 "Ende der Datei\n"

Die geschriebene Datei sieht im Ergebnis so aus:

Kopfzeile

----------------------------------------

Das ist Zeile 1

Das ist Zeile 2

Das ist Zeile 3

Das ist Zeile 4

Das ist Zeile 5

Das ist Zeile 6

Das ist Zeile 7

Das ist Zeile 8

Das ist Zeile 9

Das ist Zeile 10

----------------------------------------

Ende der Datei

(2)

Loggen eines Temperaturverlaufs in einer CSV-Datei

;*********************************************************

;Test_TempMeas_Cleware_1.PAL

;Testprogramm fuer den Zugriff auf den Cleware Temperatursensor

;und loggen des Verlaufs in einer CSV-Datei

;erstellt: 01.08.2018

;*********************************************************

#define Str_TempMeas_Param Str1

#define Str_CsvDatei Str2

#define Str_Buf Str101

#define I_TempMeas_WorkMode I1

#define I_TempMeas_DeviceIndex I2

#define I_TempMeas_ErrorCode I3

#define I_Count I101

#define I_ErrorType I102

#define I_ErrorFacility I103

#define I_ErrorCode I104

#define R_TempMeas_Result R1

#define R_UserDll R101

#define R_TempMinWert R102

#define R_TempMaxWert R103

#define R_Count R104

;*********************************************************

OnProgEnd

R_UserDll=UserDLL "F:\CNCWorkbench_D\Bin\TempMeas_Cleware.DLL" "usr_Exit"

EventReturn

;---------------------------------------------------------

;*********************************************************

;Hauptprogramm

;*********************************************************

ProgBegin

Display BACKCOL 0,88,176

Display TEXTCOL 185,220,255

Display CLEAR

Display LEFT

Display 1 1 "Test Cleware Temperatursensor"

Display 2 1 "-----------------------------------------"

Display 3 1 " Messung:"

Display 4 1 "Temperatur:"

Display 5 1 " Min:"

Display 6 1 " Max:"

Display 7 1 "FehlerCode:"

I_TempMeas_WorkMode=0

I_TempMeas_DeviceIndex=0

I_TempMeas_ErrorCode=0

R_TempMinWert=99999.0

R_TempMaxWert=-99999.0

Str_TempMeas_Param=""

R_UserDll=UserDLL "F:\CNCWorkbench_D\Bin\TempMeas_Cleware.DLL" "usr_Initialize"

R_UserDll=UserDLL "F:\CNCWorkbench_D\Bin\TempMeas_Cleware.DLL" "usr_Reset"

;Dateiname der Log-Datei

Str_CsvDatei="C:\CNCWorkbench\Temp\CsvDatei.csv"

;Dateikopf im Modus WRITE erstellen

WriteTextFile Str_CsvDatei -1 "sep=;\n"

;Header mit den Spaltennamen

WriteTextFile Str_CsvDatei 0 "Messung;\tZeit;\tTemperatur;\tMin;\tMax;\tFehler;\n"

I_Count=1

While I_Count<100 ;Schleife 100 mal durchlaufen

R_UserDll=UserDLL "F:\CNCWorkbench_D\Bin\TempMeas_Cleware.DLL" "usr_GetTemperatureValue" EXTENDED

If(R_TempMeas_Result>R_TempMaxWert)

R_TempMaxWert=R_TempMeas_Result

EndIf

If(R_TempMeas_Result<R_TempMinWert)

R_TempMinWert=R_TempMeas_Result

EndIf

Str_Buf=StrFormat(Str_Buf "%ld" I_Count)

Display 3 13 Str_Buf

Str_Buf=StrFormat(Str_Buf "%lf" R_TempMeas_Result)

Display 4 13 Str_Buf

Str_Buf=StrFormat(Str_Buf "%lf" R_TempMinWert)

Display 5 13 Str_Buf

Str_Buf=StrFormat(Str_Buf "%lf" R_TempMaxWert)

Display 6 13 Str_Buf

I_ErrorType=(I_TempMeas_ErrorCode&0xC0000000)/0x3FFFFFFF

I_ErrorFacility=(I_TempMeas_ErrorCode&0x0FFF0000)/0x0000FFFF

I_ErrorCode=(I_TempMeas_ErrorCode&0x0000FFFF)

Str_Buf=StrFormat(Str_Buf "%ld-%ld-%ld" I_ErrorType I_ErrorFacility I_ErrorCode)

Display 7 13 Str_Buf

;Ergebnis fuer den Eintrag formatieren

StrFormat(Str11 "%02d" I_Count)

R0=GetTime I11 I12 I13

StrFormat(Str12 "%02d:%02d:%02d" I11 I12 I13)

StrFormat(Str13 "%1.2lf" R_TempMeas_Result)

StrFormat(Str14 "%1.2lf" R_TempMinWert)

StrFormat(Str15 "%1.2lf" R_TempMaxWert)

StrFormat(Str16 "%ld-%ld-%ld" I_ErrorType I_ErrorFacility I_ErrorCode)

Str_Buf=Str11+";\t"+Str12+";\t"+Str13+";\t"+Str14+";\t"+Str15+";\t"+Str16+"\n"

;Formatiertes Ergebnis in die CSV-Datei schreiben

WriteTextFile Str_CsvDatei 0 Str_Buf

I_Count+=1

Delay 5000

EndWhile ;Ende While R1<100000

TYPE "Ende des Programms"

ProgEnd

;---------------------------------------------------------

Das Ergebnis in der CSV-Datei sieht so aus:

sep=;

Messung; Zeit; Temperatur; Min; Max; Fehler;

01; 09:47:09; 25.13; 25.13; 25.13; 0-2570-0

02; 09:47:14; 25.13; 25.13; 25.13; 0-2570-0

03; 09:47:19; 25.13; 25.13; 25.13; 0-2570-0

04; 09:47:24; 25.13; 25.13; 25.13; 0-2570-0

05; 09:47:29; 26.63; 25.13; 26.63; 0-2570-0

06; 09:47:34; 27.44; 25.13; 27.44; 0-2570-0

07; 09:47:39; 27.88; 25.13; 27.88; 0-2570-0

08; 09:47:44; 28.31; 25.13; 28.31; 0-2570-0

09; 09:47:49; 28.69; 25.13; 28.69; 0-2570-0

10; 09:47:54; 28.94; 25.13; 28.94; 0-2570-0

11; 09:47:59; 29.25; 25.13; 29.25; 0-2570-0

12; 09:48:04; 29.44; 25.13; 29.44; 0-2570-0

13; 09:48:09; 29.63; 25.13; 29.63; 0-2570-0

14; 09:48:14; 29.88; 25.13; 29.88; 0-2570-0

15; 09:48:19; 30.06; 25.13; 30.06; 0-2570-0

16; 09:48:24; 30.31; 25.13; 30.31; 0-2570-0

17; 09:48:29; 30.81; 25.13; 30.81; 0-2570-0

18; 09:48:34; 31.00; 25.13; 31.00; 0-2570-0

19; 09:48:39; 31.00; 25.13; 31.00; 0-2570-0

20; 09:48:44; 30.94; 25.13; 31.00; 0-2570-0

21; 09:48:49; 30.81; 25.13; 31.00; 0-2570-0

22; 09:48:54; 30.81; 25.13; 31.00; 0-2570-0

23; 09:48:59; 30.75; 25.13; 31.00; 0-2570-0

24; 09:49:04; 30.75; 25.13; 31.00; 0-2570-0

25; 09:49:09; 30.75; 25.13; 31.00; 0-2570-0

26; 09:49:14; 30.75; 25.13; 31.00; 0-2570-0

27; 09:49:19; 30.75; 25.13; 31.00; 0-2570-0

28; 09:49:24; 30.69; 25.13; 31.00; 0-2570-0

29; 09:49:29; 30.69; 25.13; 31.00; 0-2570-0

30; 09:49:34; 30.63; 25.13; 31.00; 0-2570-0

31; 09:49:39; 30.63; 25.13; 31.00; 0-2570-0

32; 09:49:44; 30.56; 25.13; 31.00; 0-2570-0

33; 09:49:49; 30.63; 25.13; 31.00; 0-2570-0

34; 09:49:54; 30.56; 25.13; 31.00; 0-2570-0

35; 09:49:59; 30.56; 25.13; 31.00; 0-2570-0

36; 09:50:04; 30.50; 25.13; 31.00; 0-2570-0

37; 09:50:09; 30.56; 25.13; 31.00; 0-2570-0

38; 09:50:14; 30.50; 25.13; 31.00; 0-2570-0

39; 09:50:19; 30.50; 25.13; 31.00; 0-2570-0

40; 09:50:25; 30.44; 25.13; 31.00; 0-2570-0

41; 09:50:30; 30.44; 25.13; 31.00; 0-2570-0

42; 09:50:35; 30.38; 25.13; 31.00; 0-2570-0

43; 09:50:40; 30.31; 25.13; 31.00; 0-2570-0

44; 09:50:45; 30.31; 25.13; 31.00; 0-2570-0

45; 09:50:50; 30.31; 25.13; 31.00; 0-2570-0

46; 09:50:55; 30.31; 25.13; 31.00; 0-2570-0

47; 09:51:00; 30.31; 25.13; 31.00; 0-2570-0

48; 09:51:05; 30.25; 25.13; 31.00; 0-2570-0

49; 09:51:10; 30.19; 25.13; 31.00; 0-2570-0

50; 09:51:15; 30.19; 25.13; 31.00; 0-2570-0

51; 09:51:20; 30.19; 25.13; 31.00; 0-2570-0

52; 09:51:25; 30.19; 25.13; 31.00; 0-2570-0

53; 09:51:30; 30.19; 25.13; 31.00; 0-2570-0

54; 09:51:35; 30.13; 25.13; 31.00; 0-2570-0

55; 09:51:40; 30.13; 25.13; 31.00; 0-2570-0

56; 09:51:45; 30.13; 25.13; 31.00; 0-2570-0

57; 09:51:50; 30.13; 25.13; 31.00; 0-2570-0

58; 09:51:55; 30.13; 25.13; 31.00; 0-2570-0

59; 09:52:00; 30.06; 25.13; 31.00; 0-2570-0

60; 09:52:05; 30.06; 25.13; 31.00; 0-2570-0

61; 09:52:10; 30.00; 25.13; 31.00; 0-2570-0

62; 09:52:15; 30.00; 25.13; 31.00; 0-2570-0

63; 09:52:20; 30.00; 25.13; 31.00; 0-2570-0

64; 09:52:25; 30.00; 25.13; 31.00; 0-2570-0

65; 09:52:30; 29.94; 25.13; 31.00; 0-2570-0

66; 09:52:35; 29.94; 25.13; 31.00; 0-2570-0

67; 09:52:40; 29.94; 25.13; 31.00; 0-2570-0

68; 09:52:45; 29.88; 25.13; 31.00; 0-2570-0

69; 09:52:50; 29.94; 25.13; 31.00; 0-2570-0

70; 09:52:55; 29.88; 25.13; 31.00; 0-2570-0

71; 09:53:00; 29.81; 25.13; 31.00; 0-2570-0

72; 09:53:05; 29.81; 25.13; 31.00; 0-2570-0

73; 09:53:10; 29.81; 25.13; 31.00; 0-2570-0

74; 09:53:15; 29.81; 25.13; 31.00; 0-2570-0

75; 09:53:20; 29.81; 25.13; 31.00; 0-2570-0

76; 09:53:25; 29.75; 25.13; 31.00; 0-2570-0

77; 09:53:30; 29.75; 25.13; 31.00; 0-2570-0

78; 09:53:35; 29.75; 25.13; 31.00; 0-2570-0

79; 09:53:40; 29.69; 25.13; 31.00; 0-2570-0

80; 09:53:45; 29.69; 25.13; 31.00; 0-2570-0

81; 09:53:50; 29.63; 25.13; 31.00; 0-2570-0

82; 09:53:55; 29.69; 25.13; 31.00; 0-2570-0

83; 09:54:00; 29.63; 25.13; 31.00; 0-2570-0

84; 09:54:05; 29.63; 25.13; 31.00; 0-2570-0

85; 09:54:10; 29.63; 25.13; 31.00; 0-2570-0

86; 09:54:16; 29.63; 25.13; 31.00; 0-2570-0

87; 09:54:21; 29.63; 25.13; 31.00; 0-2570-0

88; 09:54:26; 29.56; 25.13; 31.00; 0-2570-0

89; 09:54:31; 29.63; 25.13; 31.00; 0-2570-0

90; 09:54:36; 29.56; 25.13; 31.00; 0-2570-0

91; 09:54:41; 29.50; 25.13; 31.00; 0-2570-0

92; 09:54:46; 29.50; 25.13; 31.00; 0-2570-0

93; 09:54:51; 29.50; 25.13; 31.00; 0-2570-0

94; 09:54:56; 29.50; 25.13; 31.00; 0-2570-0

95; 09:55:01; 29.50; 25.13; 31.00; 0-2570-0

96; 09:55:06; 29.50; 25.13; 31.00; 0-2570-0

97; 09:55:11; 29.50; 25.13; 31.00; 0-2570-0

98; 09:55:16; 29.50; 25.13; 31.00; 0-2570-0

99; 09:55:21; 29.50; 25.13; 31.00; 0-2570-0

Das ist die CSV-Datei in Excel eingelesen:


X

Adressbuchstabe der Achse X

Adressbuchstabe der Achse X in der ersten Motion Control.

Siehe Adressbuchstaben


X1

Adressbuchstabe der Achse X

Adressbuchstabe der Achse X in der ersten Motion Control.

Siehe Adressbuchstaben


X2

Adressbuchstabe der Achse X

Adressbuchstabe der Achse X in der zweiten Motion Control.

Siehe Adressbuchstaben


XType

XType "text"

Ausgabe eines formatierten Textes in die Statusanzeige(n)

Ausgabe eines Hinweistextes "text" in die Statusanzeigen des laufenden Bearbeitungsprogramms (ProNC oder Remote). Diese Statusanzeigen befinden sich im Dialog "Display" und im Dialog "Bearbeitungsfortschritt". Für die Formatierung des Textes können die gleichen Formatierungsanweisungen wie bei der Formatierung einer Zeichenkettenvariablen verwendet werden.

Steuerzeichenketten:

Hinweis: "n" bezeichnet einen numerischen Index, z.B. ist Rn eine R-Variable mit einem Index im Bereich 1...999. Wenn sich der Wert für einen Index n nicht im erlaubten Bereich befindet, wird kein Ersatz der entsprechenden Steuerzeichenkette (z.B. %S4000%) vorgenommen!

·%Rn%
Der Inhalt der R-Variablen mit dem Index n wird als Text in die Zeichenkette eingefügt

·%In%
Der Inhalt der I-Variablen mit dem Index n wird als Text in die Zeichenkette eingefügt

·%Pn%
Der Inhalt der P-Variablen mit dem Index n wird als Text in die Zeichenkette eingefügt

·%Sn%
Der Inhalt der String-Variablen mit dem Index n wird als Text in die Zeichenkette eingefügt

Beispiel:

(1)

;In der Integer-Variablen I1 wird der

;aktuelle Programmdurchlauf gezählt

I1=I1+1

XType "Start des Programms, aktueller Durchlauf: %I1%"

(1)

;Ausgabe verschiedener formatierter Texte

P20=0xAA R2=123.456 I3=123 Str4="das ist eine Zeichenkette"

XType "Textausgabe mit Steuerzeichen: P20=%P20%, R2=%R2%, I3=%I3%, Str4=%S4% ..."

Siehe auch: Type


Y

Adressbuchstabe der Achse Y

Adressbuchstabe der Achse Y in der ersten Motion Control.

Siehe Adressbuchstaben


Y1

Adressbuchstabe der Achse Y

Adressbuchstabe der Achse Y in der ersten Motion Control.

Siehe Adressbuchstaben


Y2

Adressbuchstabe der Achse Y

Adressbuchstabe der Achse Y in der zweiten Motion Control.

Siehe Adressbuchstaben


Z

Adressbuchstabe der Achse Z

Adressbuchstabe der Achse Z in der ersten Motion Control.

Siehe Adressbuchstaben


Z1

Adressbuchstabe der Achse Z

Adressbuchstabe der Achse Z in der ersten Motion Control.

Siehe Adressbuchstaben


Z2

Adressbuchstabe der Achse Z

Adressbuchstabe der Achse Z in der zweiten Motion Control.

Siehe Adressbuchstaben


X, Y, Z, ...

X, Y, Z, A, B, C, U, V, W

X1, Y1, Z1, A1, B1, C1, U1, V1, W1

X2, Y2, Z2, A2, B2, C2, U2, V2, W2

Adressbuchstaben

Angabe der Adressbuchstaben für Achsen im Achssystem 1 oder im Achssystem 2.

Adressbuchstaben werden in den Bewegungsbefehlen zur Angabe von Ziel-, Mittelpunkt- oder Endpunktkoordinaten verwendet. In manchen Befehlen dienen sie zur Identifikation der Achse, für die eine spezifische Operation ausgeführt werden soll.

Adressbuchstaben, die ohne Index (z.B. X1, X2) verwendet werden, gelten generell für Achssystem 1. Die Verwendung von X und X1 benennt also die Achse X in der ersten Motion Control. Gleiches gilt sinngemäß für Y/Y1, Z/Z1 usw.

Der Befehl

MoveAbs X10 Y20 Z-25

bewirkt also das gleiche wie der Befehl

MoveAbs X1=10 Y1=20 Z1=-25

Bei Verfahrbewegungen, die nur in Achssystem 2 stattfinden, werden die Adressbuchstaben immer mit Indizes versehen:

MoveAbs X2=150.0 Y2=-55.2

R1=-39.2

MoveAbs Z2=R1

Bei Systemen, die für die Verwendung von 2 parallel benutzten Motion Controls konfiguriert sind, können in einigen Bewegungsbefehlen die Adressbuchstaben für Achssystem 1 und Achssystem 2 übergeben werden, z.B. bei linearen Bewegungen:

R1=25.7

R2=-12.4

MoveAbs X1=300.0 A1=90 X2=R1 Y2=125.0 Z1=-100.0 Z2=R2

Die Adressbuchstaben werden in diesen Befehlen verwendet:

·MoveAbs, MoveRel

·FastAbs, FastRel

·CircleAbs, CircleRel

·CwHlxAbs, CwHlxRel, CcwHlxAbs, CcwHlxRel

·MoveAbsStopOnInput, MoveRelStopOnInput

·Acce

·Change

·ChangePosition

·WpReg1Write, WpReg2Write, WpZeroAbs

·SetPosSwls, SetNegSwls

·GetGear, SetGear

·GetAxisParam

·Ref, RefCycle

·Pos1...., Pos2....

·MEnableSwLimitSwitch, MEnableSWLS

·Drill, DrillB, DrillD, DrillT


I, J, K, ...

I, J, K

I1, J1, K1

I2, J2, K2

Adressbuchstaben der Kreis-/Helixmittelpunktkoordinaten

Angabe der Adressbuchstaben für die Kreismittelpunktkoordinaten bei Kreis- oder Helixinterpolation im Achssystem 1 oder im Achssystem 2.

Die Angabe von Mittelpunktkoordinaten (I, J, K, I1, J1, K1, I2, J2, K2) erfolgt immer relativ zur aktuellen Position, auch bei Befehlen, die sich bei der Angabe der Zielpositionen auf Absolutkoordinaten beziehen (CircleAbs, CwHlxAbs, CcwHlxAbs).

Zuordnung der Adressbuchstaben:

I | Mittelpunkt X (relativ zur aktuellen Position)
J | Mittelpunkt Y (relativ zur aktuellen Position)
K | Mittelpunkt Z (relativ zur aktuellen Position)

Verwendete Mittelpunktkoordinaten in Abhängigkeit von der Interpolationsebene:

Plane XY | I, I1, I2, J, J1, J2
Plane XZ | I, I1, I2, K, K1, K2
Plane YZ | J, J1, J2, K, K1, K2

Verwendung der Adressbuchstaben in diversen Kreisbefehlen:

MOVEABS X30.0 Y-10.0 Z-20.0

; Interpolation in der XY-Ebene

PLANE XY

CIRCLEABS CW I10 J0 X30 Y-10 Z-20

MOVEABS X10.0 Y10.0 Z-20.0

; Interpolation in der XZ-Ebene

PLANE XZ

CIRCLEABS CW I0 K-10 X10 Y10 Z-20

MOVEABS X10.0 Y10.0 Z-20.0

; Interpolation in der YZ-Ebene

PLANE YZ

CIRCLEABS CW J10 K0 X10 Y10 Z-20

MOVEABS X10.0 Y10.0 Z-20.0

; Mit indizierten Adressbuchstaben

; Interpolation in der XY-Ebene

; Motion Control 1

PLANE XY

CIRCLEABS CW I1=10 J1=0 X1=10 Y1=10 Z1=-20

MOVEABS X10.0 Y10.0 Z-20.0

; Interpolation in der XZ-Ebene

PLANE XZ

CIRCLEABS CW I1=0 K1=-10 X1=10 Y1=10 Z1=-20

MOVEABS X10.0 Y10.0 Z-20.0

; Interpolation in der YZ-Ebene

PLANE YZ

CIRCLEABS CW J1=10 K1=0 X1=10 Y1=10 Z1=-20

MOVEABS X10.0 Y10.0 Z-20.0

; Mit indizierten Adressbuchstaben

; Interpolation in der XY-Ebene

; Motion Control 2

MOVEABS X2=10.0 Y2=10.0 Z2=-20.0

PLANE XY

CIRCLEABS CW I2=10 J2=0 X2=10 Y2=10 Z2=-20

MOVEABS X2=10.0 Y2=10.0 Z2=-20.0

; Interpolation in der XZ-Ebene

PLANE XZ

CIRCLEABS CW I2=0 K2=-10 X2=10 Y2=10 Z2=-20

MOVEABS X2=10.0 Y2=10.0 Z2=-20.0

; Interpolation in der YZ-Ebene

PLANE YZ

CIRCLEABS CW J2=10 K2=0 X2=10 Y2=10 Z2=-20

Die Adressbuchstaben werden in diesen Befehlen verwendet:

·CircleAbs, CircleRel

·CwHlxAbs, CwHlxRel, CcwHlxAbs, CcwHlxRel