Willkommen bei MTASC
Willkommen bei MTASC - der universellen Interpreter-Sprache von

Version: 483.x

Copyright © 2000 by Friedemann Stütz, D-75233 Tiefenbronn

Dieses Informationen richten sich an Anwender und Programmierer, die

•	EdiTasc als CNC-Steuerung nutzen und dafür spezielle Anwendungen oder Anpassungen planen

•	Eigene Applikationen entwickeln und MTASC.DLL eingebunden haben.

Die verwendeten Warenzeichen sind Eigentum der jeweiligen Inhaber.

Die Programmiersprache MTASC orientiert sich an den universellen Hochsprachen BASIC und C.

Der Inhalt ist wie folgt gegliedert:

Syntax:

Syntax

Kommentare

Variablentypen

Schreibweise der Namen

NC-Fahrbefehle

MTASC-Funktionen

Systemvariablen

Systemkonfiguration

Zurück zu:   INHALT


Syntax
Syntax von MTASC

Wie in C können sich Anweisungen über mehrere Zeilen erstrecken. Sie werden nicht durch das Zeilenende, sondern durch ein ';' abgeschlossen. Achten Sie also darauf, dass jede Zeile, die Sie aus dem integrierten Editor heraus mit Ctrl+Enter ausführen, immer mit einem Semikolon abgeschlossen ist. Es können auch mehrere Anweisungen in einer Zeile hintereinander stehen.

Zur Erläuterung dient folgendes Beispiel von 2 Anweisungen:

a1 = 1;  PRINT (a1 + 2) * SQRT 4.0;

Die erste Anweisung enthält 3 Ausdrücke und sie weist der Variablen a1 den Wert 1 zu. Die zweite Anweisung enthält 7 Ausdrücke, wobei Klammern nicht als eigenständige Ausdrücke gelten, sondern nur die Reihenfolge der Auswertung beeinflussen. Jeder Ausdruck muss durch (mindestens eine) Leerstelle von seiner Umgebung getrennt sein. Zwischen Klammern und Ausdrücken ist übrigens keine Leerstelle erforderlich - wohl aber bei +, = usw.

Ein Ausdruck kann also

ein Variablenname sein wie a1,
ein sogenannter Operator wie +, = oder *,
eine Funktion wie PRINT oder SQRT

oder

eine Konstante wie 2 oder 4.0.

Die Anweisungen werden ihrer Reihenfolge entsprechend sequentiell abgearbeitet. Die Ausdrücke innerhalb einer Anweisung werden jedoch von rechts nach links ausgewertet. Das Ergebnis jedes Ausdrucks besteht aus einem oder mehreren Objekten, die auf dem sogenannten Interpreter-Stack abgelegt werden. Dort stehen sie ggf. für nachfolgende (d.h. links von ihnen stehende) Ausdrücke zur Verfügung.

In obigem Beispiel geht die Ausführung der 2. Anweisung etwa so vor sich:

Zuerst wird '4.0' auf den Stack gelegt. SQRT (die Wurzel-Funktion) nimmt dieses Objekt als ihr Argument vom Stack und ersetzt es durch das Ergebnis, nämlich '2.0'. Der '*'-Operator veranlaßt, dass zuerst der Ausdruck '(a1 + 2)' links von ihm ausgewertet und als '3' auf den Stack gelegt wird. Dann kann der '*'-Operator die '2.0' mit der '3' multiplizieren, beide vom Stack entfernen und statt ihrer das Ergebnis '6.0' auf dem Stack ablegen. Letzteres nimmt die Funktion PRINT als ihr Argument und gibt es in der Textausgabe-Zeile aus.

Das Auftreten von Variablen und Konstanten in Anweisungen bewirkt lediglich, dass sie als Objekte auf den Stack gelegt werden. Ausdrücke wie

a1 3.45 "sinnloser Text";

stellen zwar keinen Syntaxfehler dar, haben aber keine Wirkung.

Aktionen finden erst statt, wenn Funktionen aufgerufen werden. Diese erwarten dann im allgemeinen eine bestimmte Anzahl und bestimmte Typen von Objekten als Argumente auf dem Stack, deren Werte sie verarbeiten oder sogar ändern können. Das Ergebnis von Funktionen kann ebenfalls sehr unterschiedlich sein. Sie können Objekte vom Stack entfernen und/oder Objekte auf dem Stack ablegen. Falls sie kein Ergebnis haben, hinterlassen sie einen leeren Stack.

Es ist nicht erforderlich, die Argumente einer Funktion mit Klammern zu umgeben. Der Ausdruck

c = COS(PI / 7.0);

bewirkt dasselbe wie

c = COS PI / 7.0;

Die (stets zweiwertigen) Operatoren wie +,-,*,/ erwarten rechts und links von sich je genau ein Objekt. Als Ergebnis legt der Operator anstelle der 3 beteiligten Objekte (er selbst und die beiden Argumente) ein Objekt vom gleichen Typ wie die Argumente auf dem Stack ab.

Beliebig viele Klammern '(', ')', mit Verschachtelung sind zulässig. Der Inhalt eines zugeordneten Klammer-Paares wird wie eine separate Anweisung ausgewertet und das Ergebnis auf dem Stack abgelegt.

Eine Ausnahme von der Regel, Ausdrücke durch Leerstellen zu tren-nen, bilden Klammern und die einwertige '-'-Funktion zum Umkehren des Vorzeichens. Für letztere darf zur Unterscheidung von dem zweiwertigen Subtraktions-Operator keine Leerstelle verwendet werden.

Eine Auflistung aller standardmäßig im Lieferumfang enthaltenen Funktionen und Operatoren befindet sich in MTASC-Funktionen.

Beispiele (mit Ctrl+Enter ausführbar):

PRINT 1 + 2 + 3;

Folgender Ausdruck liefert wegen Ausführungs-Reihenfolge von rechts nach links -4:

PRINT 1 - 2 + 3;

Um das nach üblicher Arithmetik erwartete zu erhalten, muss man Klammern setzen:

PRINT (1 - 2) + 3;

Trigonometrische Funktion:

PRINT COS(2.2);

Zurück zu:   INHALT


Kommentare

Die Trennzeichen für Kommentare wurden von der Sprache "C" übernommen:

Kommentar Anfang: /*

Kommentar Ende:   */

Innerhalb der Kommentarzeichen können beliebige Texte stehen. Sie werden vom Interpreter ignoriert.

Beispiel:

/* Dies ist ein Kommentar */

Zurück zu: Inhalt


Variablentypen

Es gibt 5 Variablentypen, die wir wie folgt bezeichnen werden:

Ganze Zahl	(2 Byte):	WORD

Lange Ganzzahl	(4 Byte)	DWORD

Fließkomma-Zahl	(8 Byte):	DOUBLE

Zeichen	(1 Byte):	CHAR

Feld von Zeichen	(String):	STRING

Feld von ganzen Zahlen:	WORD-ARRAY

Feld von langen Ganzzahlen:	DWORD-ARRAY

Feld von Fließkomma-Zahlen:	DOUBLE-ARRAY

Durch den Zuweisungs-Operator '=' können Variablen mit beliebigen Namen neu angelegt werden. Das von BASIC bekannte DIM gibt es nicht. Wenn eine Name schon bekannt ist, wird die zugehörige Variable verwendet. Deren Typ bleibt hierbei erhalten.

Wichtig: Wenn Sie einer als ganze Zahl angelegten Variablen später eine Fließkomma-Zahl zuweisen, wird sie ganzzahlig gemacht, d.h. gerundet. Soll eine Variable später als Fließkommazahl verwendet werden, darf ihr beim ersten Mal nicht eine ganzen Zahl (z.B. 0) zugewiesen werden, sondern eine Fließkommazahl (z.B. 0.0).

Folgende Regeln sind zu beachten:

WORD:

Ganze Zahlen können als Konstanten sowohl dezimal als auch hexadezimal dargestellt sein. Die letztere Darstellung wird durch Voranstellen von 0x (<Null>x) von der dezimalen unterschieden. Statt 256 kann man auch 0x100 schreiben.

DWORD:

Die Darstellung ist wie bei WORD, als Konstanten müssen sie jedoch ein nachgestelltes "L" haben:
z.B. 0xFF0007L oder 125000L.

DOUBLE:

Fließkomma-Zahlen müssen bei der Darstellung als Konstanten einen Punkt ('.') enthalten. Es ist wichtig, dies beim Initialisieren (erstmaligen Zuweisen) von Variablen zu beachten, da der Datentyp zu diesem Zeitpunkt festgelegt wird.

CHAR:

Als Konstanten werden Zeichen in einfachen Anführungszeichen dargestellt: z.B. ze1 = 'A';.

STRING:

String-Konstanten müssen durch doppelte Anführungszeichen (") begrenzt sein. Um innerhalb von String-Konstanten ein " darzustellen, wird als Fluchtsymbol '\' (Backslash) verwendet. Um '\' selbst darzustellen, muss es doppelt geschrieben werden.

z.B. Prog = "C:\\Programme\\Editasc\\demo1.t";

ARRAY:

Ein Feld wird durch die Funktion ARY neu angelegt. Ein Feld der 5 ganzen Zahlen 1,2,3,4,5 können Sie so erzeugen:

Feld = ARY 5 (1 2 3 4 5);

Feld-Elemente werden durch eckige Klammern '[', ']' angesprochen, wobei das 1. Feldelement mit Index 0 angesprochen wird. Das gilt sowohl für STRINGs als auch für DOUBLE- und WORD-ARRAYs.

Auch in eckigen Klammern kann ein beliebiger Ausdruck stehen, dessen Ergebnis jedoch ganzzahlig sein muss.

Zurück zu: Inhalt


Schreibweise der Namen

MTASC unterscheidet nicht zwischen Groß- und Kleinschreibung, weshalb Funktionsnamen nicht als Variablennamen verwendet werden dürfen, sofern sie sich nur in der Schreibweise unterscheiden.

Um die zum Sprachumfang von MTASC gehörenden Funktionen von Ihren frei definierten eigenen Variablennamen zu unterscheiden, empfehlen wir erstere GROSS zu schreiben.

Dies wird jedoch nicht strikt beachtet, auch nicht in diesem Handbuch.

Zurück zu: Inhalt


NC-Fahrbefehle

Über einfache Funktionen besteht die Möglichkeit, Fahrbefehle direkt an die Steuerung zu übergeben. Die Abarbeitung von Fahrbefehlen geschieht im Hintergrund, so dass EdiTasc auch während des Fahrens zur Verfügung steht.

Die Parameter (Geschwindigkeit, Rampen) lassen sich sowohl über MTASC-Kommandos als auch über Menüs einstellen (s. 2.10.2).

Zur Übergabe von Zielpositionen dienen die Funktionen X, Y, Z.

Um zur Zielposition zu fahren dienen die Funktionen

'MF' für schnelle lineare Interpolation,

'ML'  "  langsame    "          "      ,

'MC'  "  Kreisinterpolation (Tempo wie für 'ML' eingestellt).

Beispiele:

Zielposition X=10, Y=3.77, Z=-2.4 übergeben und sofort hinfahren:

X 10.0;  Y 3.77;  Z -2.4;  MF;

In Y nach 98.5 fahren, die anderen Koordinaten bleiben stehen:

Y 98.5; MF;

Zurück zu: Inhalt


MTASC-Funktionen und Operatoren

Syntaktisch sind alle Funktionen vom Typ

<Funktion> <Ausdrücke>

(Zur Erinnerung: Ausdrücke sind Konstanten, Variablen, Operatoren oder wiederum Funktionen.)

Die Ausdrücke rechts des Funktionsnamens müssen bei der Auswertung die von der Funktion erwartete Anzahl von Objekten ergeben. Letztere werden als die Argumente der Funktion bezeichnet.

Als Ergebnis wird eine von der Funktion abhängige Anzahl von Objekten auf dem Stack abgelegt.

Alle Operatoren sind vom Typ

<Ausdruck> <Operator> <Ausdruck>

wobei der Ausdruck links und rechts je nur ein Objekt als Ergebnis haben darf. Auch als Ergebnis der Operation wird immer genau ein Objekt auf dem Stack abgelegt.

Die Objekte links und rechts des Operators werden auch als das linke und rechte Argument des Operators bezeichnet.

Eine gewisse Ausnahme bildet der '='-Operator, hier darf links nur eine Variable stehen.

Die Funktionen im einzelnen:

Operatoren

Funktionen

Zurück zu: MTASC


Operatoren
Operatoren von MTASC

'=': Wert zuweisen

'+': Addition

'-' mit nachfolgender Leerstelle: Subtraktion

'*': Multiplikation

'/': Division

'<': Relation 'kleiner'

'>': Relation 'größer'

'<=': Relation 'kleiner/gleich'

'>=': Relation 'größer/gleich'

'==': Relation 'gleich'

'!=': Relation 'ungleich'

'&': Strings verketten

'-' ohne nachfolgende Leerstelle: Vorzeichen umkehren

Zurück zu: MTASC


'=': Wert zuweisen

Syntax: V = A

wobei V für eine beliebige Variable und A für einen beliebigen Ausdruck steht.

Der Variablen V wird der Inhalt von A zugewiesen. Falls V ein bisher nicht verwendeter Name ist, wird V neu angelegt. Falls V schon existiert, muss es vom gleichen Typ sein wie A. Ausnahme: Falls V vom Typ WORD ist und A vom Typ DOUBLE oder umgekehrt, wird der Wert entsprechend konvertiert. Der Typ von V bleibt dann erhalten.

V und A dürfen auch Felder sein, allerdings nur vom gleichen Typ.

Ergebnis: V

Zurück zu: Operatoren


'+': Addition

Die Werte links und rechts des Operators werden addiert und das Ergebnis auf dem Stack abgelegt.

Der Typ des Ergebnisses entspricht i.a. dem Typ der beiden Argumente. Falls jedoch eines vom Typ DOUBLE ist und das andere vom Typ WORD, ist das Ergebnis vom Typ DOUBLE.

Zurück zu: Operatoren


'-' mit nachfolgender Leerstelle: Subtraktion

Die Werte links und rechts des Operators werden subtrahiert und das Ergebnis auf dem Stack abgelegt.

Der Typ des Ergebnisses entspricht i.a. dem Typ der beiden Argumente. Falls jedoch eines vom Typ DOUBLE ist und das andere vom Typ WORD, ist das Ergebnis vom Typ DOUBLE.

Zurück zu: Operatoren


'*': Multiplikation

Die Werte links und rechts des Operators werden multipliziert und das Ergebnis auf dem Stack abgelegt.

Der Typ des Ergebnisses entspricht i.a. dem Typ der beiden Argumente. Falls jedoch eines vom Typ DOUBLE ist und das andere vom Typ WORD, ist das Ergebnis vom Typ DOUBLE.

Zurück zu: Operatoren


/': Division

Die Werte links und rechts des Operators werden dividiert und das Ergebnis auf dem Stack abgelegt.

Der Typ des Ergebnisses entspricht i.a. dem Typ der beiden Argumente. Falls jedoch eines vom Typ DOUBLE ist und das andere vom Typ WORD, ist das Ergebnis vom Typ DOUBLE.

Zurück zu: Operatoren


'<': Relation 'kleiner'

Linkes und Rechtes Argument werden miteinander verglichen. Falls die Relation erfüllt ist, wird 1 zurückgegeben, sonst 0.

Typ des Ergebnisses:  WORD.

Zurück zu: Operatoren


'>': Relation 'größer'

Linkes und Rechtes Argument werden miteinander verglichen. Falls die Relation erfüllt ist, wird 1 zurückgegeben, sonst 0.

Typ des Ergebnisses:  WORD.

Zurück zu: Operatoren


'<=': Relation 'kleiner/gleich'

Linkes und Rechtes Argument werden miteinander verglichen. Falls die Relation erfüllt ist, wird 1 zurückgegeben, sonst 0.

Typ des Ergebnisses:  WORD.

Zurück zu: Operatoren


'>=': Relation 'größer/gleich'

Linkes und Rechtes Argument werden miteinander verglichen. Falls die Relation erfüllt ist, wird 1 zurückgegeben, sonst 0.

Typ des Ergebnisses:  WORD.

Zurück zu: Operatoren


'==': Relation 'gleich'

Linkes und Rechtes Argument werden miteinander verglichen. Falls die Relation erfüllt ist, wird 1 zurückgegeben, sonst 0.

Typ des Ergebnisses:  WORD.

Zurück zu: Operatoren


'!=': Relation 'ungleich'

Linkes und Rechtes Argument werden miteinander verglichen. Falls die Relation erfüllt ist, wird 1 zurückgegeben, sonst 0.

Typ des Ergebnisses:  WORD.

Zurück zu: Operatoren


'&': Strings verketten

Aus den Strings links und rechts des Operators wird ein 'zusammengehängter' String neu angelegt.

Typ des linken Arguments:	STRING.

Typ des rechten Arguments:	STRING.

Typ des Ergebnisses:	STRING.

Beispiel:

Folgende Zeile schreibt 'Hello World' in die Ausgabe-Zeile:

h = "Hello";  w = "World";  PRINT h & " " & w;

Zurück zu: txtOperators


'-' ohne nachfolgende Leerstelle: Vorzeichen umkehren

Im Gegensatz zum Operator '-', der von Leerstellen (Blanks) umgeben sein muss, ist dies eine Funktion, die das Vorzeichen des Ausdrucks, vor dem sie steht, umkehrt.

Typ des Arguments:	WORD oder DOUBLE.

Typ des Ergebnisses:	Wie Argument

Zurück zu: Operatoren


Funktionen
Funktionen von MTASC

'ConfigSVar' 	Systemvariablen und -funktionen für X, Y usw.

'PRINT' 	Wert anzeigen

'MSGBOX'	STRING in einer Message-Box ausgeben

'SPRINT' 	Werte als STRING formatieren

'SQRT' 	Wurzel ziehen

'COS' 	Cosinus

'SIN' 	Sinus

'ARY' 	Feld (Array) definieren

'FCALL' 	Datei als (Unter-)Programm ausführen

'SCALL' 	String als Programm (Macro) ausführen

'IF', 'FOR', 'WHILE' 	Programmteil bedingt ausführen

'END' 	Unterprogramm beenden

'X', 'Y', 'Z' 	Koordinatenpuffer bzw. Zielposition laden

Fahrbefehle für Gerade und Kreis

Automatische Fräserradius-Korrektur (Option)

'MVPAR' 	Parameter lesen/setzen

'MRESET' 	Fahrbefehle abbrechen

'MSTAT' 	Der aktuelle Stand des Fahrbefehlspuffers

'MSTOP' 	Steuerung anhalten

'RMPMODE'	Der Look Ahead Rampenpuffer

'MTEST' 	In den Testmodus umschalten

'SETMC' 	Maschinenkoordinaten zuweisen

'WRAPOC' 	Zyklischer Koordinaten-Überlauf

'GETOC' 	Objektkoordinaten als  DOUBLE-ARRAY zurückgeben

'GETMC' 	Maschinenkoordinaten als  DOUBLE-ARRAY zurückgeben

'WAIT' 	Warten

'OUTP' 	Ausgänge setzen

'OUT'	Ausgänge setzen mit Deskriptor-String

'INP' 	Eingänge lesen

'IN' 	Eingänge lesen mit Deskriptor-String

'SENDMSG' 	Nachricht an das Hauptfenster senden

'MLIMIT' 	Bereichsüberwachung ein/aus

'MACRODEF' 	Eigene Funktionen über Macros definieren

Zurück zu: MTASC


'ConfigSVar'
'ConfigSVar'	Systemvariablen und -funktionen für X, Y usw.

Diese Funktion definiert die Namen der achsbezogenen Systemvariablen.

Als Argument erwartet sie einen String mit maximal 5 Zeichen (Kleinbuchstaben), die als Achsbuchstaben verwendet werden sollen. Die Defaultbelegung von "xyzabc" kann hierdurch verändert werden.

Beispiel:

ConfigSVAR "yx";

vertauscht die Namen der Systemvariablen _X, _Y und der Systemfunktionen X, Y. D.h.

X 10; ML;

spricht daraufhin die 2. Achse an.

Typ des Arguments:	STRING

Typ des Ergebnisses:	Wie Argument

Dies ist eine interne Systemfunktion, die für EdiTasc-Anwender keine Rolle spielt.

Zurück zu: Funktionen


'PRINT'
'PRINT'	 Wert anzeigen

Der Wert des Arguments wird unten im Grafikfenster ausgegeben.

Typ des Arguments: WORD, DOUBLE, CHAR oder STRING. Andere Typen sind nicht erlaubt.

Das Ergebnis ist gleich dem Argument (wird normalerweise nicht verwendet).

Zurück zu: Funktionen


'MSGBOX'
'MSGBOX'	STRING in einer Message-Box ausgeben

Im Gegensatz zu PRINT wird der Inhalt des übergebenen STRING-Arguments in einem neu erscheinenden Fenster ausgegeben, das so lange stehen bleibt, bis es vom Bediener bestätigt wird.

Ein 2. optionales Argument bildet den Inhalt der Titelzeile.

Ein 3. optionales Argument vom Typ DWORD bestimmt das Erscheinungsbild. Hierfür gibt es folgende Konstanten:

MB_OK:	Mit Schaltfläche "OK"
MB_OKCANCEL:	Mit Schaltflächen "OK" und "Abbrechen" (Default falls kein 3. Arg.)
MB_YESNOCANCEL	Mit Schaltflächen "Ja", "Nein" und "Abbrechen"
MB_YESNO:	Mit Schaltflächen "Ja", "Nein"
MB_ICONHAND	Mit STOP-Symbol
MB_ICONQUESTION	Mit Fragezeichen-Symbol
MB_ICONEXCLAMATION	Mit Ausrufezeichen-Symbol
MB_ICONINFORMATION	Mit Info-Symbol

Diese Eigenschaften können mit OR kombiniert werden (siehe Beispiel).

Rückgabewerte:
1	bei "OK",
2	bei "Abbrechen"
6	bei "Ja"
7	bei "Nein"

Beispiel: Meldung ausgeben, bei "Abbrechen" Programm beenden, nachdem eine weitere Message Box mit OK quittiert wurde.

msg = msgBox
"Das Magazin ist leer!\nWeiter mit 'OK', sonst 'Abbrechen'"
"MELDUNG" (MB_ICONINFORMATION or MB_OKCANCEL);
if(msg == 2){if(1 == msgBox "Wirklich abbrechen?"){mreset 1;}}

weitere Fälle können z.B. mit if(msg == 1) usw. behandelt werden.

siehe auch das Beispiel bei der nachfolgenden Funktion SPRINT.

Typ der Argumente: STRING.

Typ des Ergebnisses: WORD.

Zurück zu: Funktionen


'SPRINT'
'SPRINT'	Werte als STRING formatieren

Diese Funktion erlaubt die formatierte Ausgabe von numerischen Ausdrücken in einem Text.

Sie erwartet als erstes Argument einen Format-String, der angibt, wie die darauffolgenden Argumente in einem String formatiert auszugeben sind. Für jedes nachfolgende Argument muss ein %-Zeichen mit der entsprechenden Formatangabe stehen. Die Syntax hierfür entspricht der Programmiersprache C. Für den Datentyp WORD kann man z.B. %hd verwenden, für DWORD %hd, für DOUBLE %lf, für CHAR %c und für STRING %s. Nähere Einzelheiten sind einem C-Programmierhandbuch zu entnehmen.

Beispiel:

Wenn ein Bedienerhinweis den aktuellen Wert einer Variablen enthalten soll, ist dies die geeignete Methode:
Der Bediener soll aufgefordert werden, einen Fräser mit dem Radius r einzuspannen, wobei r eine zuvor definierte MTASC-Variable ist:

r = 1.2;
MsgBox (SPRINT "Bitte Fräser mit Durchmesser %6.2lf einspannen!"
 	r * 2) "Manueller Werkzeugwechsel";

%6.2lf bedeutet: r mit 6 Stellen ausgeben, davon 2 Nachkommastellen.

Dies führt zu folgender Message-Box:

Typ des Arguments: WORD, DOUBLE, CHAR oder STRING. Andere Typen sind nicht erlaubt.

Das Ergebnis ist gleich dem Argument (wird normalerweise nicht verwendet).

Zurück zu: Funktionen


'SQRT'
'SQRT'	Wurzel ziehen

Die Wurzel des Arguments wird als Ergebnis zurückgegeben.

Typ des Arguments:	DOUBLE.

Typ des Ergebnisses:	DOUBLE.

Zurück zu: Funktionen


'COS'
'COS'	Cosinus

Der Cosinus des Arguments wird als Ergebnis zurückgegeben.

Typ des Arguments:	DOUBLE.

Typ des Ergebnisses:	DOUBLE.

Zurück zu: Funktionen


'SIN'
'SIN'	Sinus

Der Sinus des Arguments wird als Ergebnis zurückgegeben.

Typ des Arguments:	DOUBLE.

Typ des Ergebnisses:	DOUBLE.

Zurück zu: Funktionen


'ARY'
'ARY'	Feld (Array) definieren

Das 1. Argument gibt an, wieviele Elemente das Feld haben soll.

Die Werte ab dem 2. Argument werden in die Feldelemente kopiert und bestimmen zugleich den Feldtyp (WORD oder DOUBLE).

Elemente, zu denen kein zugeordnetes Argument existiert, werden mit 0 (WORD) bzw. 0.0(DOUBLE) vorbelegt.

Als Ergebnis wird das neu angelegte Feld zurückgegeben.

Typ des 1. Arguments:	WORD.

Typ ab dem 2. Argument:	WORD oder DOUBLE (nicht gemischt).

Typ des Ergebnisses: 	WORD- bzw. DOUBLE-ARRAY.

Beispiel:

P1 = ARY 3 (7.1 2.2);

Hierdurch wird der Variablen P1 ein DOUBLE-ARRAY mit 3 Elementen zugewiesen. Die Werte sind 7.1, 2.2 und 0.0.

Die Klammern sind zwar syntaktisch unnötig, werden aber wegen der besseren Lesbarkeit empfohlen.

Zurück zu: Funktionen


'FCALL'
'FCALL'	Datei als (Unter-)Programm ausführen

Mit dieser Funktion können MTASC-Kommandos, die in einer ASCII-Datei stehen, ausgeführt werden. Der Name der Datei wird als STRING-Argument übergeben und kann auch einen beliebigen Pfad mit Laufwerksangabe enthalten.

MTASC-Programme sind also nichts anderes als ASCII-Dateien, die von EdiTasc aus mit einem FCALL-Kommando aufrufbar sind. Und da solche Programme ihrerseits auch FCALL-Aufrufe enthalten dürfen, ist so eine beliebig tiefe Verschachtelung möglich.

Es empfiehlt sich, häufig verwendete, längere Kommando-Sequenzen zu einer Bibliothek zusammenzufassen, z.B. als Dateien mit der Endung '.t' in einem separaten Verzeichnis.

Typ des Arguments:	STRING.

Ergebnis: 	Keines.

Beispiel:

Eine Kommando-Sequenz zum Fräsen eines Kreises steht in der Datei "circ" im Bibliotheks-Unterverzeichnis LIB, auf das die Systemvariable _L zeigt. Der Kreisradius wird in der Variablen r erwartet.

Eine Befehlszeile zum Fräsen eines Kreises von 15mm Durchmesser mit einem 2mm Fräser könnte dann so aussehen:

r = 7.5 - 1.0; FCALL _L & "circ";

Zurück zu: Funktionen


'SCALL'
'SCALL'	String als Programm (Macro) ausführen

Hiermit können MTASC-Kommandos, die in Strings stehen, ausgeführt bzw. wie ein Macro aufgerufen werden. Der String kann ein beliebiges 'Programm', also auch mehrere (durch ';' getrennte) Ausdrücke und Bedingungen wie IF usw. enthalten.

Als Ergebnis wird das Ergebnis des letzten Ausdrucks in der Kommando-Sequenz zurückgegeben.

Siehe auch: Funktion MACRODEF.

Typ des Arguments:	STRING.

Ergebnis: 	Das Ergebnis des letzten Ausdrucks.

Beispiel:

Wir definieren 2 Variablen:

Breite = 1.23;  Länge = 1.11;

Eine MTASC-Anweisung wird als String unter der Variablen s gespeichert:

s = "Breite * Länge;";

Folgende Anweisung führt s wie ein Programm aus und es erscheint das Ergebnis 1.36530 in der Ausgabe-Zeile:

PRINT SCALL s;

Wenn ein Kommando längere Zeit - oder gar endlos - läuft, so wird dadurch Windows normalerweise nicht blockiert. Dies ist nur dadurch möglich, dass die Programmausführung jederzeit unterbrochen werden kann (preemptives Multitasking), eventuell auch durch den Aufruf eines weiteren MTASC-Kommandos. In manchen Fällen ist dies unerwünscht und kann durch Voranstellen des Sonderzeichens '@' an erster Stelle des Strings verhindert werden:
So könnte z.B. eine Anweisung aussehen, die die Endstufe aus- und gleichzeitig die Bremse einschaltet:

MotOff = "@out _oMot 255; out _oBremse 0;";

Natürlich müssen solche Anweisungen kurz sein, sonst hängt das Programm.

Zurück zu: Funktionen


'IF', 'FOR', 'WHILE'
'IF', 'FOR', 'WHILE'	Programmteil bedingt ausführen

Im Gegensatz zu anderen Programmiersprachen sind IF, FOR und WHILE keine speziellen Schlüsselwörter, sondern im Prinzip Funktionen.

In Analogie zur Pogrammiersprache C ist es möglich, Programmteile mit geschweiften Klammern abzugrenzen:

IF (k == 1)
{
X 22; MF;
Z zdn; ML;
...
}
Die Funktionen IF, FOR, WHILE haben ein Argument, das üblicherweise in runden Klammern steht, von dessen Wert es abhängt, ob der folgende durch {...} eingeschlossene Programmteil ausgeführt wird.

IF:

Falls das Argument nicht 0 ist, wird der in geschweiften Klammern folgende Programmteil ausgeführt, sonst nicht.

Typ des Arguments:	WORD.

FOR:

Dar Argument gibt an, wie oft der der in geschweiften Klammern folgende Programmteil ausgeführt werden soll.

Typ des Arguments:	WORD.

WHILE:

Solange der vom Argument gelieferte Wert nicht 0 ist (d.h. solange die Bedingung erfüllt ist) wird der in geschweiften Klammern folgende Programmteil wiederholt ausgeführt.

Hier gibt es 2 Möglichkeiten hinsichtlich des Arguments: Es kann vom Typ WORD sein (wie bei IF und FOR) oder vom Typ STRING.

Falls es ein STRING ist, wird sein Inhalt als ausführbarer Programmcode aufgefasst und (wie bei SCALL) ausgeführt. Das Ergebnis der letzten Anweisung im STRING muss vom Typ WORD sein und wird zur obigen Entscheidung über das nochmalige Ausführen des folgenden Programmteiles verwendet.

Hinweis: Das Semikolon nach der Letzten Anweisung kann weggelassen werden.

Typ des Arguments:	WORD oder STRING.

Beispiele:

Es wird 'ja!' ausgegeben Falls a = b:

IF (a == b) {PRINT "ja!";}

In X 5mal um 10mm weiterfahren und dort jeweils 1 sek warten:

FOR 5 {X _X + 10; MF; WAIT 1;}

Dasselbe mit WHILE:

i = 0; WHILE "(i = i + 1) <= 5"
{X _X + 10; MF; WAIT 1;}

Zurück zu: Funktionen


'END'
'END'	Unterprogramm beenden

Hierdurch wird das laufende (mit FCALL aufgerufene) Unterprogramm verlassen und zum aufrufenden Programm zurückgekehrt.

Im Anschluß an diesen Befehl können z.B. alte Programmteile oder längere Kommentar-Texte folgen ohne ausgeführt zu werden.

Argument:	Keines.

Ergebnis:	Keines.

Zurück zu: Funktionen


'X', 'Y', 'Z'
'X', 'Y', 'Z'	Koordinatenpuffer bzw. Zielposition laden

Alle Fahrbefehle und die Befehle zur Verschiebung des Koordinaten-Ursprungs erhalten die benötigten Koordinaten in einer Puffervariablen, die über die MTASC-Systemvariablen _X, _Y, _Z zugänglich ist. Ihre Werte können entweder zugewiesen werden, z.B.

_X = 12.34;

oder noch kürzer über die Funktionen X, Y, Z geladen werden. Obige Zuweisung bewirkt dasselbe wie

X 12.34;

Typ des Arguments:	DOUBLE oder WORD.

Das Ergebnis ist gleich dem Argument (wird normalerweise nicht verwendet).

Zurück zu: Funktionen


Fahrbefehle für Gerade und Kreis

Diese Funktionen gehen davon aus, dass die Zielkoordinaten in _X, _Y, _Z stehen. Die Koordinaten werden stets in Objektkoordinaten übergeben, die sich von den Maschinenkoordinaten unterscheiden können. (Zu den möglichen Transformationen siehe Funktion 'SETOC'.) Der Treiber wird veranlaßt, die Achsen auf einer entsprechenden Bahn von der aktuellen Position bis zum Ziel mit den gesetzten Bahn-Parametern zu führen.

Da die eigentliche Bahnsteuerung im Hintergrund stattfindet, ist EdiTasc sofort bereit, weitere Kommandos auszuführen, ohne das Erreichen der Zielposition abwarten zu müssen.

Werden während des Fahrens weitere Fahrbefehle übergeben, schließen sich diese an die (noch nicht erreichte) Zielposition des jeweils vorhergehenden Fahrbefehls an. Der Treiber bietet einen Puffer für standardmäßig 50 Fahrbefehle, die sozusagen im voraus übergeben werden können. Wieviele es jeweils sind, steht in der Statusanzeige des Hauptfensters.

Die Parameter wie Bahngeschwindigkeit und Rampen lassen sich separat einstellen, entweder über Hauptmenü oder über die Funktion MVPAR.

Ein sofortiger Stop aller Achsen sowie der Abbruch laufender Programme ist jederzeit durch Drücken von F9 möglich.

Speziell:

'MF' und 'ML' 	 	Lineare Interpolation (schnell und langsam)

'MC' 	Kreis-Interpolation

Zurück zu: Funktionen


'MF' und 'ML'
'MF' und 'ML'	 Lineare Interpolation (schnell und langsam)

Diese Funktionen erwarten keine Argumente. Die anzufanrende Zielposition wird i.a. in unmittelbar vorhergehenden Anweisungen (Funktionen X, Y, Z) übergeben. Sie erzeugen Bahnen mit linearer Interpolation und unterscheiden sich nur darin, dass die Fahrparameter unabhängig voneinander gesetzt werden können. 'ML' ist für langsames, 'MF' für schnelles Fahren gedacht.

Argument:	Keines.

Ergebnis:	Keines.

Zurück zu: Fahrbefehle für Gerade und Kreis


'MC'
'MC'	Kreis-Interpolation

Da ein Kreisbogen vom Punkt P0 zum Punkt P1 nicht allein durch Anfangs- und Endpunkt definiert ist, kann diese Funktion bis zu 2 Argumente mit folgender Information verarbeiten:

Im 1. Argument wird der Radius erwartet,

Im 2. Argument ein String von 3 Zeichen mit folgender Bedeutung:

1. Zeichen:
'+' falls der Kreismittelpunkt links von der Strecke Start- Endpunkt liegt
'-' falls rechts davon

2. Zeichen:
'L' für Umlaufsinn gegen den Uhrzeiger,
'R' für Umlaufsinn mit dem Uhrzeiger

3. Zeichen:
'Z' für Kreise in der XY-Ebene
'X' für Kreise in der YZ-Ebene
'Y' für Kreise in der XZ-Ebene

Zur Erläuterung des 2. Arguments dient folgende Zeichnung:

Die Argumente können weggelassen werden. Dann gelten die beim letzten MC-Aufruf übergebenen Werte. Soll das 2. Argument übergeben werden, muss auch das 1. (Radius) übergeben werden.

Typ des 1. Arguments: DOUBLE oder WORD.

Typ des 2. Arguments: STRING.

Das Ergebnis ist gleich den Argumenten (wird normalerweise nicht verwendet).

Beachten Sie bitte, dass zur Vereinfachung und als Lernhilfe der Menü-Befehl FENSTER Programmier/Positionierhilfe verwendet werden kann.

Beispiel:

Kreisbogen von der aktuellen Position nach _X + 2 (in X um relativ 2 Maßeinheiten weiter) mit Radius 5 in der XY-Ebene. Es gibt 4 mögliche Kreisbögen:

Der nach +Y ausholende große Bogen im Uhrzeigersinn:

X _X + 2; MC 5 "-LZ";

Der nach +Y ausholende kleine Bogen im Uhrzeigersinn:

X _X + 2; MC 5 "-RZ";

Der nach -Y ausholende kleine Bogen gegen den Uhrzeigersinn:

X _X + 2; MC 5 "+LZ";

Der nach -Y ausholende große Bogen gegen den Uhrzeigersinn:

X _X + 2; MC 5 "+RZ";

Zurück zu: Fahrbefehle für Gerade und Kreis


Automatische Fräserradius-Korrektur
Automatische Fräserradius-Korrektur    (Option)

Wenn Sie über diese Option verfügen, gibt es folgende zusätzliche Funktionen: RKOROPEN und RKCLOSE. Die zugehörigen Parameter befinden sich in den _rk... Systemvariablen.

Bei aktivierter Fräserradius-Korrektur werden alle Fahrbefehle zunächst über einen weiteren Puffer geschleust, der dem Puffer für die Satzvorausschau (Rampen Look ahead) vorgelagert ist. Er soll im folgenden als RK-Puffer bezeichnet werden. In EdiTasc ist seine Größe ist im Dialog MASCHINE Werkzeug-Parameter bei "Anzahl Sätze prüfen" einstellbar und beträgt standardmäßig 2 Sätze, maximal 50. Die entsprechende Systemvariable ist _rkBufSize.

Beachten Sie, dass die letzten Sätze einer raduiskorrigierten Kontur erst nach Aufruf von RKORCLOSE ausgeführt werden. Dann erst wird der Inhalt des RK-Puffers geleert.

Vor RKOROPEN sollte folgende Variablen korrekt definiert sein:

_rkNOpen (nur für geschlossene Konturen): Die Anzahl der Sätze, um die der Eintauchpunkt zu verschieben ist.

_rkPlane: Die Korrekturebene (XY, XZ, oder YZ)
Standardmäßig immer XY. Ansonsten siehe Systemvariable.

_rkClosed: offen / geschlosse Kontur
Die Variable wird gesetzt in MASCHINE Werkzeug-Parameter

_rkOri: Korrekturrichtung (links oder rechts):
Siehe auch Werkzeug-Parameter

Der Korrekturoffset entspricht dem aktuellen Werkzeugradius:
Siehe auch Werkzeug-Parameter und Funktion ToolPar.

Nähere Erklärungen in:

Funktionen  'RKOROPEN' und 'RKORCLOSE'

Beispiel 1

Beispiel 2

Zurück zu: Funktionen


Das Verhalten der Fräserradius-Korrektur bei offenen und geschlossenen Konturen

Offene Konturen

Bei diesen ist die Variable _rkClosed = 0 zu setzen bzw. sie wird bei den Werkzeugparametern so gesetzt. Die Bearbeitung beginnt mit dem 1. Satz und endet mit dem letzten, wobei Start- und Endpunkt nicht in Fahrtrichtung versetzt sind.

Es gibt eine grundsätzliche Schwierigkeit, die mit _rkBufSize ("Anzahl Sätze prüfen" in MASCHINE Werkzeug-Parameter) zusammenhängt. Diese sei anhand eines Beispiels erläutert:

Ein 4-Eck sei als offene Kontur programmiert, eventuell mit Sätzen zum An- und Wegfahren. Dies funktioniert mit _rkBufSize = 4, ab 5 jedoch wird das 4-Eck nicht mehr ausgeführt. Warum? Weil die Kontur sich nach 4 Sätzen selbst schneidet bzw. berührt.

Generell gilt:

Tritt in den korrigierten Sätzen nach bis zu _rkBufSize Sätzen eine Selbstüberschneidung auf, werden alle Sätze dazwischen entfernt.

Es kann vorkommen, dass einige Konturen _rkBufSize = 4, andere (mit kurzen Sätzen) jedoch _rkBufSize > 4 benötigen, ohne dass dies jedesmal geändert werden kann (z.B. in HPGL). Dieses Problem können Sie wie folgt umgehen: Teilen Sie so viele der (vermutlich langen) Linien in kleinere auf, dass die Anzahl Sätze groß genug ist - oder verwenden Sie geschlossene Konturen, wo dieses Problem nicht auftritt.

Geschlossene Konturen

Bei diesen ist die Variable _rkClosed = 0 zu setzen bzw. sie wird bei den Werkzeugparametern so gesetzt. Die Bearbeitung beginnt erst nach _rkNOpen Sätzen und endet nach einem entsprechenden Anhang. Hierfür werden die ersten _rkNOpen Sätze gespeichert und am Ende mit den letzten verrechnet. Der Eintauchpunkt wird automatisch berechnet. Allerdings fährt die Maschine erst den programmierten Startpunkt und dann den errechneten Eintauchpunkt an.

Für diesen Modus der Radiuskorrektur muss die Kontur zusammenhängend sein (bei HPGL z.B. ohne Pen Up zwischendrin) und der Startpunkt muss gleich dem Endpunkt sein. Sonst sind unvorhersehbare Effekte beim "Schließen" der Kontur möglich.


'RKOROPEN und RKORCLOSE'

'RKOROPEN': Die Fräserradius-Korrektur eröffnen

Diese Funktion aktiviert die automatische Fräserradius-Korrektur. Sie sorgt dafür, dass nach dem 2. folgenden Satz automatisch ein Anfahrtsweg zum Startpunkt an der Nahtstelle zwischen dem 1. und dem 2. Satzt erzeugt wird. Das Abtauchen auf die Bearbeitungshöhe in Z-Richtung bzw. senkrecht zur Bearbeitungsebene sollte nach RKOROPEN, jedoch vor dem 1. Satz programmiert sein, erfolgt jedoch bereits in korrigierter Position.

Der Aufruf erfolgt i.a. ohne Argument:

RKOROPEN;

Eine weitere Form dieser Funktion ist sehr komplex und gestattet die Übergabe diverser Parameter in den Argumenten. Damit ist auch eine Radiuskorrektur in beliebigen schrägen Ebenen möglich. Die Syntax wird auf Anfrage mitgeteilt.

Die Funktion hat kein Ergebnis.

'RKORCLOSE': Die Fräserradius-Korrektur beenden

Diese Funktion beendet die automatische Fräserradius-Korrektur. Sie hat weder Argumente noch ein Ergebnis.

Bei geschlossenen Konturen wird der Weg bis zum Einstichpunkt fortgesetzt.

Zurück


Beispiel 1
Beispiel 1 zur Fräserradiuskorrektur:

MTASC-Datei Demorko.t:

/* MTASC-Beispielprogramm zur Fräserradiuskorrektur */

/* Korrekturmodus: Offene Kontur */

Z Zup;  MF;

X 10; Y 0; MF;

/* Einstellung aus Werkzeugparameter überschreiben! */

_rkClosed = 0;	/* Nicht geschlossen (=Offen) */

_rkOri = 1;	/* Korrektur links */

RkorOpen;	/* Korrektur EIN */

Z Zdn MLD;	/* Langsam Eintauchen */

x 11; ML;

X 30;   ML;

Y 22;   ML;

X 0; MC 15 "+LZ";	/* Halbkreis nach oben */

Y 0; ML;

X 15; MC 7.5 "+LZ";	/* Halbkreis nach unten */

y _y + 5; ml;	/* etwas darüber hinausfahren */

y _y + 1; ml;	/* noch ein Satz, wird nicht gefahren */

RkorClose;	/* Korrektur AUS */

Z Zup;  MF;

Die Grafik sieht so aus:

Zurück


Beispiel 2
Beispiel 2 zur Fräserradiuskorrektur:

MTASC-Datei Demorkc.t:

/* MTASC-Beispielprogramm zur Fräserradiuskorrektur */

/* Korrekturmodus: Geschlossene Kontur */

Z Zup;  MF;

X 15; Y 0; MF;

/* Einstellung aus Werkzeugparameter überschreiben! */

_rkClosed = 1;	/* geschlossen */

_rkOri = 1;	/* Korrektur links */

_rkNOpen = 1;	/* Eintauchen nach 1. Satz */

RkorOpen;	/* Korrektur EIN */

Z Zdn MLD;	/* Langsam Eintauchen */

X 30;   ML;

Y 22;   ML;

X 0; MC 15 "+LZ";	/* Halbkreis nach oben */

Y 0; ML;

X 15; MC 7.5 "+LZ";	/* Halbkreis nach unten */

RkorClose;	/* Korrektur AUS */

Z Zup;  MF;

Die Grafik sieht so aus:

Zurück


'MVPAR'
'MVPAR'	Parameter lesen/setzen

Diese Funktion macht die in den Systemvariablen ML_f, ML_f0, usw. gespeicherten Bahnparameter wirksam. Die bloße Zuweisung neuer Werte an die Systemvariablen hat keine Wirkung auf die Steuerung.

Zurück zu: Funktionen


'MRESET'
'MRESET'	Fahrbefehle abbrechen

Mit dieser Funktion werden laufende Fahrbefehle abgebrochen und der Puffer für noch anstehende Fahrbefehle gelöscht.

Wird sie ohne Argument aufgerufen, wie es normalerweise im Referenzierprogramm REFSRCH.TS zum Anhalten der Achsen aufgrund des eingelesenen Endschalter-Signals geschieht, erscheint keine Meldung und das laufende Programm wird fortgesetzt. Aufgrund neuer Fahrbefehle fahren die Achsen dann ggf. weiter.

Sollen nicht nur die Fahrbefehle abgebrochen, sondern auch alle im MTASC-Interpreter laufenden Programme abgebrochen werden, so muss ein WORD Argument (z.B. 1) übergeben werden. Dann erscheint eine entsprechende Meldung analog einer Fehlermeldung. Letztere Form des Reset entspricht der Wirkung von Stop/Go(F9), wenn man "Programm Abbrechen" auswählt.

Falls das 1. Argument ein STRING ist, erscheint dieser in der Fehlermeldung. Eine Ortsangabe, wo unterbrochen wurde, unterbleibt dann. Ein optionaler weiterer STRING als 2. Argument erscheint in der Titelzeile der Messagebox.

Argumente:	Keines oder WORD oder 1-2 STRINGs

Ergebnis:	Keines.

Zurück zu: Funktionen


'MSTAT'
'MSTAT'	Der aktuelle Stand des Fahrbefehlspuffers

Diese Funktion gibt die Anzahl der noch nicht beendeten Fahrbefehle zurück.

Argument:	Keines.

Ergebnis:	WORD.

Zurück zu: Funktionen


'MSTOP'
'MSTOP'	Steuerung anhalten

Mit MSTOP '1'; können Sie die aktuelle Bewegung der Achsen sofort stoppen. Der Befehl wird verwendet, um ein laufendes Programm anzuhalten. Die Ursache ist normalerweise irgendein Ereignis (Event), das während eines laufenden MTASC-Programms auftritt. Die daraufhin - im Sinne des preemtiven Multitasking von WINDOWS - ausgelöste Unterbrechung gestattet es, andere MTASC-Kommandos auszuführen. Die Taste Stop/Go(F9) löst auf diese Weise zunächst einen MSTOP '1'-Aufruf aus.

MSTOP '0'; hebt den Stillstand wieder auf, und das Programm läuft normal weiter.

MSTOP 'E'; bewirkt ein Stop nach dem Ende des aktuellen Fahrbefehls bzw. des nächsten, der darauf folgt.

MSTOP '2'; ist eine Sonderfunktion, die die komplette interruptgesteuerte Halteregelung der Achsen ausschaltet. Vorsicht bei Servo-Steuerungen: Die Achsen können wegdriften.

MSTOP '?' gibt den aktuellen Zustand zurück ('0' oder '1' oder '2').

Ein DOUBLE-Argument ermöglicht das definierte Abbremsen vor dem Stop und wieder Beschleunigen danach:

MSTOP bbrems; mit bbrems > 0.0 bremst die Achsen mit der Beschleunigung bbrems (Einheit = Wegeinheit / Zeiteinheit²) ab. Danach gilt der Zustand wie nach MSTOP '1', d.h. die Achsen stehen.

MSTOP bstart; mit bstart < 0.0 beschleunigt die Achsen mit der Beschleunigung bstart (Einheit = Wegeinheit / Zeiteinheit²), wenn sie aufgrund von MSTOP '1'; oder MSTOP bbrems; im Stillstand waren. Danach gilt der Zustand wie nach MSTOP '0', d.h. die Achsen fahren weiter.

Achtung: Die noch anstehenden Fahrbefehle sind hierdurch nicht gelöscht, d.h. die Achsen würden nach MSTOP '0' wieder weiterfahren (dies entspricht dem Befehl "Programm Fortsetzen" nach F9). Erst MRESET löscht den Fahrbefehlspuffer.

Typ des Arguments:	CHAR oder DOUBLE

Ergebnis:	CHAR

Zurück zu: Funktionen


'RMPMODE'	Der Look Ahead Rampenpuffer

RMPMODE 'Y' (Y für Yes): In diesem Modus wird immer eine vollständige Rampe zwischen die Fahrbefehle eingefügt, ein "Look Ahead" findet nicht statt.

RMPMODE 'N' (N für No): In diesem Modus wird nie eine Rampe zwischen die Fahrbefehle eingefügt, ein "Look Ahead" findet ebenfalls nicht statt. Dies ist die Standardeinstellung wenn Sie Direktbefehle vom Editor aus übergeben.

RMPMODE 'A' (A für Automatic): In diesem Modus werden automatisch passende Rampen berechnet. Die Fahrbefehle gelangen dabei zunächst in den Look Ahead Rampenpuffer, der z.Zt. 100 Befehle umfasst.

RMPMODE '?' gibt den aktuell eingestellten Modus zurück ('Y', 'N' oder 'A').

Hinweis:

Wenn Sie im Editor Befehle direkt ausführen und so mit
RMPMODE 'A';
das Look Ahead eingeschaltet haben, und dann Fahrbefehle ausführen oder ein Programm direkt über FCALL aufrufen, kann es sein, daß sich die Achsen zunächst nicht bewegen, weil alle Befehle vom Puffer geschluckt werden. Der Pugffer wird erst durch
RMPMODE 'Y'; (oder 'N')  oder
WAIT ..;
ganz geleert.

Dies kann auch passieren, wenn Sie eine Version von REFSRCH.TS probieren, in der die Zeile
RMPMODE 'Y';	/* Look ahead aus */
fehlt. Dann wird endlos auf den Endschalter gewartet.

Typ des Arguments:	CHAR

Ergebnis:	CHAR

Zurück zu: Funktionen


'MTEST'
'MTEST'	In den Testmodus umschalten

Diese Funktion schaltet um in einen Modus für Echtzeit-Simulation, wie es auch über den Befehl OTIONEN  Test-Modus EIN/AUS oder die Taste Ctrl+M (im Fenster Status / Grafik) möglich ist.

MTEST '1' schaltet diesen Modus ein-, MTEST '0' wieder aus.. MTEST '?' gibt den aktuellen Zustand zurück ('1' oder '0').

Die Datei AUTOEXEC.TS sollte am Ende stets das Kommando

MTEST '0';

enthalten, um die Achsen zu aktivieren.

Typ des Arguments:	CHAR.

Ergebnis:	CHAR

Zurück zu: Funktionen


'SETOC'
'SETOC'	Objektkoordinaten zuweisen

Hiermit kann eine Verschiebung der Objekt- gegenüber den Maschinenkoordinaten erreicht werden. Der aktuellen Position werden die in den Systemvariablen _X, _Y, _Z zuvor übergebenen Koordinaten zugewiesen. Weitergehende Möglichkeiten wie räumliche Drehungen sind im Lieferumfang der Standardsoftware nicht enthalten (fragen Sie ggf. bei uns nach).

Argument:	Keines.

Ergebnis:	Keines.

Beispiel:

Aktuelle Position zum Objekt-Nullpunkt machen:

X 0; Y 0; Z 0;  SETOC;

Zurück zu: Funktionen


'SETMC'
'SETMC'	Maschinenkoordinaten zuweisen

Hiermit werden sowohl die Maschinenkoordinaten als auch die treiberinternen inkrementellen Zählerstände gesetzt. Der aktuellen Position werden die in _X, _Y, _Z zuvor übergebenen Maschinenkoordinaten zugewiesen und die Zählerstände entsprechend gesetzt.

Dies ist sinnvoll z.B. zum setzen des absoluten Maschinen-Nullpunktes bei den Referenzpunkten.

Argument:	Keines.

Ergebnis:	Keines.

Zurück zu: Funktionen


'WRAPOC'
'WRAPOC'	Zyklischer Koordinaten-Überlauf

Diese Funktion kann zum Rücksetzen aller Koordinaten bei rundlaufenden Achsen (z.B. Rundtischen) verwendet werden. Alle Koordinatenarten einer Achse (Zählerstand, Maschinen- und Objektkoordinaten) werden um den gewünschten Wert verschoben. Es ist wichtig, dies nicht etwa mit SETOC zu versuchen - denn dadurch werden nur die Objektkoordinaten verschoben. Ein endlos rundlaufender Rundtisch würde dann trotzdem irgendwann zu einem Überlauf des inkrementalen 32 Bit-Zählers dieser Achse führen.

Im 1. Argument wird die Achs-Nr. (0 für erste Achse) übergeben, im 2. der Wert, um den die Koordinaten verschoben werden sollen (im Maßsystem der Objektkoordinaten).

Typ des 1. Arguments:	WORD.

Typ des 2. Arguments:	DOUBLE.

Beispiel:

Ein als Z-Achse betriebener Rundtisch steht nach einem Programmdurchlauf auf 375.0 (Objektkoordinaten, Maßeinheit Grad). Durch

WRAPOC 2 -360.0;

werden alle Koordinaten dieser Achse auf die Werte gesetzt, die der Position 15.0 Grad entsprechen.

Zurück zu: Funktionen


'GETOC'
'GETOC'	Objektkoordinaten als  DOUBLE-ARRAY zurückgeben

Diese Funktion gibt eine Kopie der aktuellen Objektkoordinaten in einem DOUBLE-ARRAY von 3 Elementen zurück. Sie kann wie eine Variable verwendet werden, allerdings hat das Zuweisen von Werten keine Wirkung.

Argument:      Keines.

Ergebnis:      Keines.

Beispiel:

In Y zum 10fachen Sinus der aktuellen X-Koordinate fahren:

Y 10.0 * SIN GETOC[0]; ML;

GETOC[2] = 11; /* keine Wirkung */

Zurück zu: Funktionen


'GETMC'
'GETMC'	Maschinenkoordinaten als  DOUBLE-ARRAY zurückgeben

Diese Funktion entspricht GETOC.

Sie ist z.B. sehr sinnvoll, um die aktuellen Objektkoordinaten auf die Maschinenkoordinaten zu beziehen:

Beispiel:

Das Objektkoordinatensystem soll gegenüber dem Maschinenkoordinatensystem in X um 87.55, in Y um -53.89 verschoben werden, und zwar unabhängig davon, wo die Achsen gerade stehen. Dies ist wie folgt möglich:

X GETMC[0] - 87.55; Y GETMC[1] - -53.89; SETOC;

Zurück zu: Funktionen


'WAIT'
'WAIT'	Warten

Diese Funktion wartet die im Argument übergebene Anzahl von Sekunden ab. Eventuell noch anstehende Fahrbefehle werden vorher abgearbeitet. Mit Argument 0 wartet diese Funktion lediglich, bis das Ziel des zuletzt übergebenen Fahrbefehls erreicht ist.

Typ des Arguments:	WORD oder DOUBLE.

Ergebnis: 	Keines.

Beispiel:

WAIT 0;	/* warten bis Zielpos. erreicht */
/* Ausgang setzen (Bit 1 an Port 112H): */
OUTP 274 2 2;
WAIT 2.7;	/* 2.7 Sekunden warten */
/* Ausgang wieder zurücksetzen: */
OUTP 274 0 2;

Zurück zu: Funktionen


'OUTP'
'OUTP'	Ausgänge setzen

Mit dieser Funktion können Ausgaben auf beliebigen IO-Portadressen erfolgen.

Die Funktion hat 3 WORD-Argumente:

Im 1. Argument steht die Portadresse (dezimal!), im 2. eine Bitmaske, im 3. der auszugebende Bytewert. Die Bitmaske hat folgende Bedeutung: Nur die in der Bitmaske gesetzten Bits werden gemäß Bytewert gesetzt - alle anderen werden zuvor gelesen und mit den gelesenen Werten wieder ausgegeben.

Beispiel:

/* Bit 0 und 2 am Druckerport setzen, alle anderen bleiben: */
OUTP 0x378 5 5;

/* Bit 0 und 2 am Druckerport setzen, alle anderen zurücksetzen: */
OUTP 0x378 5 255;

OUTP mit 2 WORD-Argumenten ist veraltet und wird nicht mehr unterstützt!

Zurück zu: Funktionen


'OUT'
'OUT'	Ausgänge setzen mit Deskriptor-String

diese Funktion enthält die Portadresse und die Bitmaske in einem Deskriptor-String, den sie als 1. Argument erwartet. Das 2. Argument liefert den auszugebenden Wert.

Der Deskriptor-String muss als eigenständige Variable angelegt sein, der man sinnvollerweise einen die Funktion beschreibenden Namen geben kann. Der Deskriptor-String hat folgenden Aufbau (wir nehmen an, er sei in der Variablen d gespeichert)

d[0] bestimmt die Art des Port:
'B' = 8 Bit Port
'W' = 16 Bit Port
Weitere Port-Typen für spezielle Karten auf Anfrage.
d[1] = Portadresse low byte.
d[2] = Portadresse high byte.
d[3] = Bitmaske low.
d[4] = Bitmaske high (nur für. d[0] = 'W')

1. Argument: STRING.

2. Argument: WORD.

Als Konvention zur Namensgebung gilt generell in EdiTasc: Variablen mit Präfix _o haben mit Ausgängen zu tun.

Beispiel:

Schalten der Spindel über Adresse 0x378, Bit 7:

_AdrBs = 0x378;

...

d = "Baam";  /* Deskriptor-String für 8 Bit */
/* d[0] kann bleiben /
d[1] = _AdrBs;	/ Adresse low byte /
d[2] = _AdrBs / 0x100;	/* Adresse high byte */
d[3] = 0x80;	/* Maske Bit 7 */

/* Deskriptor unter sinnvollem Namen speichern: */
_oSpd = _o2 = d;
....
OUT _oSpd 0xFF;	/* Spindel EIN */
....
OUT _oSpd 0;	/* Spindel AUS */

Zurück zu: Funktionen


'INP'
'INP'	Eingänge lesen

Mit dieser Funktion können die Zustände beliebiger IO-Portadressen gelesen werden.

Von INP gibt es 2 Varianten:

INP mit 2 WORD-Argumenten:

Im 1. Argument steht die Portadresse, im 2. eine Bitmaske mit folgender Bedeutung: Nur die in der Bitmaske gesetzten Bits werden gemäß Portzustand zurückgegeben - alle anderen werden 0 gesetzt.

1 WORD-Argument: Sonderfall, nur auf Anfrage.

Beispiel:

Zustand des Druckerports lesen und anzeigen:

print INP 0x378 0xFF;

Zurück zu: Funktionen


'IN'
'IN'	Eingänge lesen mit Deskriptor-String

diese Funktion enthält die Portadresse und die Bitmaske in einem Deskriptor-String, den sie als Argument erwartet.

Der Deskriptor-String muss als eigenständige Variable angelegt sein, der man einen die Funktion beschreibenden Namen geben kann. Der Deskriptor-String hat folgenden Aufbau (wir nehmen an, er sei in der Variablen d gespeichert)

d[0] bestimmt die Art des Port:
'B' = 8 Bit Port
'W' = 16 Bit Port
Weitere Port-Typen für spezielle Karten auf Anfrage.

d[1] = Portadresse low byte.
d[2] = Portadresse high byte.
d[3] = Bitmaske low.
d[4] = Bitmaske high (nur für. d[0] = 'W')

Argument: STRING.

Als Konvention zur Namensgebung gilt generell in EdiTasc: Variablen mit Präfix _i haben mit Eingängen zu tun.

Beispiel:

Kann z.B. in AUTOEXEC.TS stehen:

AdrBs = 0x346;	/* Adresse des Eingangsport */
d = "Baam";  /* Deskriptor-String für 8 Bit */
/* d[0] kann bleiben */
d[1] = AdrBs;
d[2] = AdrBs / 0x100;
d[3] = 0x80;	/* Maske Bit 7 */
/* Deskriptor unter sinnvollem Namen speichern: */
_iEndX = d;

.....

Zum Referenzschalter fahren:

Kann z.B. in REFSRCH.TS stehen:

/* Bereichsüberwachung aus */
MLIMIT '0';

/* Fahrbefehl zu unerreichbarem Ziel
   in Richtung Referenzschalter: */
X -1000; ML;	/* Achse fährt los... */

/* solange Bit 2 von Port 112H nicht
   gesetzt nichts tun, d.h. weiterfahren */
WHILE "0 == IN _iEndX" {}

MRESET;	/* dann sofort anhalten */

X 0; SETMC;	/* Maschinenkoord. nullen */
X 0; SETOC;	/* Objektkoord. nullen */
X 10; MF;	/* freifahren */
/* Bereichsüberwachung ein */
MLIMIT '1';

Zurück zu: Funktionen


'SENDMSG'
'SENDMSG'	Nachricht an das Hauptfenster senden

Mit dieser Funktion kann eine WM_CHAR Windows-Message an das Hauptfenster gesendet werden. Folgende Codes haben für EdiTasc vordefinierte Bedeutung (ToolWIN-Anwender müssen sich dies selbst organisieren):

300: Wird bei PRINT-Aufrufen verwendet um die anzuzeigende Zeile auszugeben

301: Die Anzeigen im Fenster Einstellungen wird aktualisiert.

302: Texteingabe (Siehe SENDMSG _Linp).

'SENDMSG _Linp': Text in Dialogfeld eingeben

Hierbei steht die Systemvariable _Linp für den Wert 302 (Typ WORD). In EdiTasc-Versionen vor 5.60.1 muss diese in der Datei AUTOEXEC.TS definiert werden, später geschieht dies automatisch. EdiTasc ruft daraufhin die InputBox-Funktion von Visual-Basic auf. Die Beschriftung des Feldes geschieht über folgende Systemvariablen, deren Inhalt voher zu definieren ist:

_LinpPr: Das Prompt-Feld

_LinpTi: Die Titelzeile

_LinpDf: Default-Inhalt der Eingabe-Zeile

Das Ergebnis steht nachher in der Systemvariablen

_LinpTxt: Eingegebener Wert.

Hinweis zur Eingabe von numerischen Werten: Es genügt der Aufruf von

scall _LinpTxt;

um den numerischen Wert zu erhalten.

Beispiel:

Diese Anweisungen

_linpPr = "Bediener-Hinweise...\nBitte Wert eingeben:";

_linpTi = "Titel-Zeile";
_linpDf = "123.45";

sendMsg 302;

Führen zu folgender InputBox:

Mit scall bekommt man den numerischen Wert:

PRINT 0.5 * SCALL _LinpTxt;

Gibt die Hälfte des eingegebenen Wertes aus.

Zurück zu: Funktionen


'MLIMIT'
'MLIMIT'	Bereichsüberwachung ein/aus

Mit dieser Funktion kann eine treiberinterne automatische Überwachung aller Achsen auf Bereichsüberschreitung ein- und wieder ausgeschaltet werden.

Der zulässige Bereich wird in der Konfigurationsdatei DRV_xx.INI (s. Systemkonfiguration) eingetragen, und zwar bezogen auf die Maschinenkoordinaten.

Es ist sinnvoll, die Maschinenkoordinaten nach der Referenzierung der Achsen mit SETMC auf einen definierten Wert zu setzen, der dann nicht mehr verändert wird. Im Anschluß daran kann dann auch die Bereichsüberwachung eingeschaltet werden.

Die Funktion erwartet ein CHAR-Argument mit folgender Bedeutung:

'0':	Bereichsüberwachung ausschalten

'1':	Bereichsüberwachung einschalten.

'?':	Gibt den aktuellen Stand des Schalters zurück

Die grafische Darstellung der Verfahrgrenzen in X und Y ist nur bei eingeschalteter Bereichsüberwachung möglich.

Typ des Arguments:CHAR.

  Ergebnis: Gibt den aktuellen Stand des Schalters als Typ CHAR zurück.

Beispiel:

Siehe Funktion INP.

Zurück zu: Funktionen


'MACRODEF'
'MACRODEF'	Eigene Funktionen über Macros definieren

Diese Funktion ermöglicht erweitert die durch SCALL bereits bestehende Möglichkeit, einen STRING als Anweisung aufzurufen, indem er als MACRO - ein neuer Variablentyp - gekennzeichnet wird. Das Voranstellen von SCALL entfällt. MACRODEF erwartet den Namen eines neu zu definierenden oder bereits bestehenden Macros als STRING. Das Ergebnis ist ein STRING, der mit dem Macroinhalt identisch ist. Diesem kann auch ein neuer Inhalt zugewiesen werden, indem man den Ausdruck in Klammern setzt. Letztere sind daher bei der Definition von Macros immer erforderlich (siehe Beispiele).

Darüber hinaus kann ein Macro auch Argumente haben. Diese werden mit Platzhaltern angegeben:

%1 für das 1. Argument
%2 für das 2. usw., siehe Beispiel 2.

Typ des Arguments: STRING.

   Ergebnis: Inhalt des Macros als STRING.

Beispiel 1 für DIN66025-Kenner:

(MacroDef "G41C") = "_rkclosed = 1;_rkOri = 1;rkoropen;";

definiert das Macro G41C. Daraufhin bewirkt

G41C;

dasselbe wie

SCALL "_rkclosed = 1;_rkOri = 1;rkoropen;";

nämlich das Einschalten der Fräserradiuskorrektur im Modus für geschlossene Konturen, Korrekturrichtung: Links.

Beispiel 2:

(MacroDef "F") =
"if (%1 == 'L'){ML_F = %2;} if (%1 == 'F'){MF_F = %2;}; MvPar;";

definiert das Macro F mit 2 Argumenten zum setzen der Geschwindigkeit.

Ein 'L' als 1. Argument setzt die ML-Geschwindigkeit, ein 'F' die MF-Geschwindigkeit.
im 2. Argument wird die Geschwindigkeit erwartet.

F 'L' 5;

bewirkt dasselbe wie

ML_L = 5; MvPar;

Verschachtelung ist erlaubt! D.h. Macros dürfen auch andere Macros aufrufen.

Zurück zu: Funktionen


Systemvariablen und Standard-Makros

Wie in anderen Programmiersprachen gibt es auch in MTASC Variablen, Funktionen und Makros, die als Bibliothek (Library) zur Verfügung stehen. In EdiTasc ist diese Bibliothek größtenteils in der MTASC-Datei SYSTEM.TS abgelegt und liegt damit offen. Änderungen sind nicht empfehlenswert. Manche Definitionen sind nur als Vorbelegungen (Default) zu sehen. Diese sollten dann aber nicht in SYSTEM.TS, sondern in AUTOEXEC.TS geändert bzw. neu definiert werden.

Viele systeminterne Daten sind über spezielle Variablen zugänglich, die bereits automatisch definiert sind. Ihre Namen sollte der Anwender nicht für eigene Variablen verwenden. Ansonsten unterscheiden sie sich in nichts von den Variablen, die der Anwender definiert. Die meisten beginnen mit einem Unterstrich wie _X.

Erklärungen zu den einzelnen Systemvariablen:

'_L' 	Pfad zur Unterprogramm-Bibliothek

'_PATH' 	Pfad zum Systemverzeichnis

'_X, _Y, _Z, _XY, _XYZ' 	Aktuelle Position bzw. Zielposition

Geschwindigkeiten und Rampen zu ML, MLD, MF

'zup', 'zdn' 	Freifahrhöhe und Eintauchtiefe

_rk.. - Variablen zur Fräserradius-Korrektur

'_NcMode' und '_GrMode' 	NC- und Grafik-Modus

'_mode' 	Statusflag der Programm-Ausführung

Makros für Ein-, Ausgänge und Softwareschalter

Digitale Ausgänge und Softwareschalter setzen mit _oSet

Analogausgang setzen mit _oaSet

Digitale Eingänge lesen mit _iGet

'_oStat': Aktueller Zustand aller Ausgänge

Makros für die Programm-Ausführung

'_RL' 	Wiedereintritts-Schranke für MTASC-Aufrufe

Werkzeugparameter (ToolPar)

HPGL-Parameter (HpglPar)

Zurück zu: Inhalt


'_L'
'_L'	Pfad zur Unterprogramm-Bibliothek

Es bietet sich an, häufig benötigte MTASC-Unterprogramme sozusagen in den Funktionsumfang aufzunehmen, indem sie von jedem Verzeichnis aus einfach aufgerufen werden können.

Beispiel:

Wir haben ein Verzeichnis namens

\FRAESPG,

in dem sich alle unsere Fräsprogramme befinden. Dort gibt es noch die Unterverzeichnisse

\FRAESPG\FRONT_A  und

\FRAESPG\FRONT_B.

In beiden Unterverzeichnissen wird ein Unterprogramm zum Fräsen von Kreisen benötigt. Es heißt z.B. "circ" (d.h. es ist eine Datei dieses Namens) und der gewünschte Radius muss vor dem Aufruf in der Variablen r übergeben werden. Das Programm könnte z.B. so aussehen:

Z zup; MF;	/* in Z auf Höhe zup hochfahren */
P0 = _XYZ;	/* Ausgangsposition merken */
X P0[0] + r; MF;
Z zdn; ML;	/* Auf Bearb.höhe zdn runter */
X P0[0] - r;  MC r "+RZ";  /* Halbkreis oben */
X P0[0] + r;  MC;	      /* Halbkreis unten*/
Z zup; MF;
/* wieder zur Ausgangsposition zurückfahren */
XY P0; MF;

Da dieses Programm mehrfach verwendbar ist, sollte es in einer allgemeinen Bibliothek stehen. Diese wird als weiteres Unterverzeichnis, z.B.

\FRAESPG\LIB

eingerichtet, wo sich auch unser Programm "circ" befindet. Der Aufruf von "circ" in einem Programm in FRONT_A müßte dann allerdings so aussehen:

FCALL "\\FRAESPG\\LIB\\circ";

Um Schreibarbeit zu sparen, wird der für alle Bibliotheks-Programme erforderliche Pfadanteil in der STRING-Variablen _L gespeichert. In diesem Beispiel wäre _L = "\\FRAESPG\\LIB\\" und der Unterprogramm-Aufruf erfolgt so:

FCALL _L & "circ";

(siehe Funktion '&').

Zurück zu: Systemvariablen


'_PATH'
'_PATH'	Pfad zum Systemverzeichnis

In dieser STRING-Variablen befindet sich der Pfad zu dem Verzeichnis, wo EdiTasc installiert ist. _PATH darf auf keinen Fall verändert werden.

Zurück zu: Systemvariablen


'_X, _Y, _Z, _XY, _XYZ'
'_X, _Y, _Z, _XY, _XYZ'	Aktuelle Position bzw. Zielposition

Diese DOUBLE-Variablen bzw. Felder enthalten die Achspositionen der Steuerung in Objektkoordinaten, und zwar entweder die aktuelle Position oder die zuletzt durch die Funktionen X, Y, Z oder xy übergebene Zielposition für einen nachfolgenden Fahrbefehl.

Die Aweisung

X 123.45;

bewirkt dasselbe wie

_X = 123.45;

_XY enthält die Koordinaten von X und Y in Form eines Feldes aus zwei DOUBLEs, entsprechend ist _XYZ ein Feld aus 3 DOUBLEs mit den Koordinaten von X, Y und Z.

Diese Variablen beziehen sich teilweise mehrfach auf dieselben Daten (wie z.B. _X und _XYZ[0]).

Zurück zu: Systemvariablen


Geschwindigkeiten und Rampen zu ML, MF
Geschwindigkeiten und Rampen zu ML, MLD, MF

Neben der Möglichkeit, die Parameter für die Bahnsteuerung über das Menü zu setzen, können sie auch über diese Variablen gesetzt werden, z.B. innerhalb eines Programms.

Die Rampen sind linear nach folgendem Prinzip (v =Geschwindigkeit, a = Bescleunigung):

ML_f: Max. Geschwindigkeit für Lineare- und Kreisinterpolation.

ML_f0: Startgeschwindigkeit für Lineare- und Kreisinterpolation. Ist normalerweise 0.

ML_r: Steilheit der (Start und Brems-)Rampe für Lineare- und Kreisinterpolation.

Entsprechend beziehen sich folgende Parameter aur den Eilgang und das Eintauchen:

MF_f, MF_f0, MF_r  und  MLD_f, MLD_f0, MLD_r

Alle Werte sind als positive Zahlen einzugeben, die Geschwindigkeit in [Wegeinheit] / [Zeiteinheit], die Rampen als Beschleunigung in [Wegeinheit] / [Zeiteinheit]².

Die Endgeschwindigkeit wird automatisch der Startgeschwindigkeit eines ggf. folgenden Fahrbefehls angeglichen, ansonsten wird bis v = 0 abgebremst. Bei automatischer Rampenberechnung über den Look Ahead Rampenpuffer (siehe Funktion RmpMode) spielt ML_f0 keine Rolle. Der erste Befehl beginnt immer mit v = 0.

Das Maßsystem, in dem Geschwindigkeiten und Rampen anzugeben sind, hängt von entsprechenden Faktoren in der Konfigurations-Datei des Treibers ab (Siehe Konfiguration des Treibers, S1_V  etc.). Die Standard-Einstellung ist mm und sek, also Geschwindigkeiten in mm/sek und die Rampen in mm/sek².

Nach jeder Änderung dieser Parameter muss MVPAR (ohne Argumente) aufgerufen werden um die Änderungen wirksam werden zu lassen.

Beispiele:

Bahngeschwindigkeit für den Schnellgang anzeigen:

PRINT MF_f;

Bahngeschwindigkeit für den Schnellgang neu setzen und für lineare- und Kreisinterpolation auf 10% davon setzen:

MF_f = 55;  ML_f = MF_f / 10.0; MVPAR;

Zurück zu: Systemvariablen


'zup', 'zdn'
'zup', 'zdn'	Freifahrhöhe und Eintauchtiefe

Diese Variablen können in MTASC-Programmen verwendet werden, um variable Werte für Eintauchtiefe und Freifahrhöhe zu haben. Ihre Werte erscheinen im Dialogfeld MASCHINE  Werkzeug-Parameter und können dort eingestellt werden. Auch die direkte Modifikation im Programm ist möglich.

Ihr Datentyp ist: DOUBLE.

In der automatischen Fräserradius-Korrektur bestimmen sie die automatisch generierte Freifahrhöhe und Eintauchtiefe, sofern rkorOpen mit Argument 'Z' aufgerufen wird..

Zurück zu: Systemvariablen


_rk.. - Variablen zur Fräserradius-Korrektur

_rkBufSize (Datentyp WORD):

Größe (Anzahl Sätze) der RK-Puffers für die Schnittpunkt-Berechnung. Soviele Sätze werden auf gegenseitige Schnittpunkte (Konturverletzung) geprüft. Konturen, in denen Bögen mit sehr vielen kleinen linearen Segmenten approximiert werdenm, können eine erhöhung dieses Wertes erfordern.

Dieser Wert ist als generelle Voreinstellung zu sehen. Er wird normalerweise nicht in Programmen definiert. Erfahrungswerte: 3 bis 6, theoretisches Maximum: 50.

_rkClosed (Datentyp WORD):

1 (nicht Null) gibt an, dass der Korrekturmodus für geschlossene Konturen anzuwenden ist,
0 für offene

_rkNOpen (Datentyp WORD):

Anzahl Sätze, nach denen das Eintauchen bei geschlossenen Konturen erfolgen soll. Standardmäßig wird dieser Wert in in MASCHINE Werkzeug-Parameter auf _rkBufSize - 1 gesetzt. Er darf nicht größer als _rkBufSize sein.

_rkPlane (Datentyp CHAR):

Ähnlich wie beim Kreiskommando MC wird hier die Ebene ausgewählt, in der die Korrektur stattfinden soll.

'Z' bedeutet die XY-Ebene,

'Y' die XZ-Ebene

'X' die YZ-Ebene

_rkOri (Datentyp WORD):

1 bedeutet links von der Fahrtrichtung,

-1 rechts.

Der Werkzeugradius, um den die Kontur zu versetzen ist, wird aus der Werkzeugtabelle entnommen, die in der Dialogbox Werkzeug-Parameter erscheint. Wenn diese Werte per Programm verändert werden sollen, können Sie die Funktion ToolPar verwenden:

(ToolPar "rad")[0]

ist z.B. der Radius von Werkzeug 0 in der Werkzeugtabelle. Bei automatischer Werkzeugverwaltung sollte dieser Wert jedoch nicht von Programmen manipuliert werden.

Den Wert des aktuellen Werkzeugradius können Sie jederzeit durch das vordefinierte Makro ToolRad lesen (allerdings nicht verändern).

Zurück zu: Systemvariablen


'_NcMode' und '_GrMode'
'_NcMode' und '_GrMode'	NC- und Grafik-Modus

Datentyp: CHAR.

Die Variablen haben normalerweise nur systeminterne Bedeutung. Sie können dazu verwendet werden, pogrammgesteuert den Ausführungs-Modus von Programmen zu verändern.

Obwohl es CHAR-Variablen sind, wird ihnen numerisch 0 oder 1 zugewiesen. Übliche Zustände sind:

_NcMode = 1 und _GrMode = 0:
Die Achsen fahren, aber es entsteht keine Grafik (wie bei DATEI  Ausführen (F5)).

_NcMode = 0 und _GrMode = 1:
Die Achsen fahren nicht, aber es entsteht die Grafik (wie bei DATEI  Grafik (Simulation) (F4).

Andere Kombinationen können in Sonderfällen benutzt werden, z.B. um Grafik und Achsbewegung zu erzeugen:
_NcMode = 1 und _GrMode = 1:

Zurück zu: Systemvariablen


'_mode'
'_mode'	Statusflag der Programm-Ausführung

Datentyp: CHAR.

Diese Variable darf nur gelesen, d.h. für IF-Entscheidungen oder ähnliches verwendet werden. Ihr Wert zeigt 3 Zustände an:

_mode == '0':
Das Programm wurde nicht über Menü oder Funktionstasten (F4,F5,F6) gestartet, sondern vermutlich im Editor über Ctrl+Enter.

_mode == 'G':
Das Programm läuft in der grafischen Simulation, z.B. über F4 gestartet.

_mode == 'X':
Das Programm läuft "echt" ('X' steht für Execute), d.h. die Achsen bewegen sich. Es wurde z.B. über F5 gestartet.

Beispiel:
Verwenden Sie _mode dazu, Ausgang 3 nur dann zu setzen, wenn das Programm nicht im Grafik-Modus läuft:

IF(_mode != 'G') {out _o3 255;}

Zurück zu: Systemvariablen


Makros für Ein-, Ausgänge und Softwareschalter (ohne Gerätetreiber)
Makros für Ein-, Ausgänge und Softwareschalter

Um mit den Ein- und Ausgängen effizient arbeiten zu können, ist die Verwendung der Makros _iSet, _oSet und _oaSet sinnvoll.

Zurück zu: Systemvariablen


Digitale Ausgänge und Softwareschalter setzen mit _oSet

Eine mögliche Definition dieses Makros ist in der Datei AUTOEXEC.TS oder SYTEM.TS gegeben. Sie kann – gute Programmierkenntnisse vorausgesetzt – vom Bediener geändert werden.

Die Standardform erwartet 2 Argumente:

1.	Eine Nr., die den Ausgang kennzeichnet und

1.	den Wert: 0=Aus, 1=Ein, -1=aktuellen Zustand invertieren.

Normalerweise sind die Ausgänge durch Deskriptoren

_o1, _o2, _o3, usw. beschrieben, und zwar mindestens bis _o8 (wegen der Darstellung im Fenster Ein-/Ausgänge). Nicht verwendete Deskriptoren können einen leeren String ("") erhalten.

Um mit _oSet noch flexibler zu sein, kann man auch rein logische Zustände schalten (Softwareschalter), für die sspezielle Makros aufzurufen sind (z.B. zum Ein- und Ausschalten der Frässpindel mit Wartezeit biz Drehzahl erreicht). Hierfür gibt es noch ein WORD-Array _oMode, das den gewünschten Modus für jeden definierten Schalter angibt:

Die Werte von _oMode[i] haben folgende Bedeutung:

0: 	Einfacher Ausgang, der beim Einschalten logisch 1 zu setzen ist.

1: 	Einfacher Ausgang, der logisch invertiert zu setzen ist.

: 	Softwareschalter. Dann muss ein Makro namens _oSet<i> (also bei i = 3 _oSet3) definiert sein, das beim Einschalten mit Argument 1 und beim Ausschalten mit Argument 0 aufgerufen wird..

Zurück zu: Systemvariablen


Analogausgang setzen mit _oaSet

Da wir mit MTASC direkt auf Portadressen schreiben können, hat sich die direkte Ausgabe, wie sie auch bei den digitalen Ausgängen praktiziert wird, bewährt. Meistens handelt es sich um ein (8 Bit Auflösung) oder zwei (12 - 16 Bit Auflösung) Bytes, die an bestimmte Adressen auszugeben sind.

Das Makro _oaSet ist eine Art Ereignis-Prozedur. Sie wird von EdiTasc bei Bedarf aufgerufen (z.B. Drehzahländerungen im Ein-Ausgangs-Fenster oder Programmstart). Es übergibt den gewünschten Wert (z.B. Drehzahl) ein Argument (%1), die zwischen _oaValueMin und _oaValueMax liegen muss. _oaSet ist verantwortlich dafür, neben der Ausgabe auf die Portadressen den Argumentwert bzw. den tatsächlich ausgegebenen Wert an _oaValue zuzuweisen, da EdiTasc diesen Wert neben der Bildlaufleiste anzeigt.

Zurück zu: Systemvariablen


Digitale Eingänge lesen mit _iGet

Ähnlich wie _oSet und _oaSet ist auch dieses Makro in AUTOEXEC.TS vordefiniert.

Die Standardform erwartet 1 Argument: Die Nr. des Eingangs.

Rückgabewert: 0=Aus, 1=Ein.

Normalerweise wird auf die Ausgänge über die Deskriptoren

_i1, _i2, _i3, usw. (bis mindestens bis _o8) zugegriffen. Den Zustand der Eingänge 1 - 8 können Sie im Fenster Ein-/Ausgänge ständig aktualisiert anzeigen (Schaltfläche "Permanent Aktualisieren"). Nicht verwendete Eingänge können als Deskriptor einen leeren String ("") erhalten.

Zurück zu: Systemvariablen


Makros für die Programm-Ausführung

Diese Makros werden normalerweise nicht verändert. Nur wenn Sie über sehr gute Programmierkenntnisse verfügen, können Sie auch diese modifizieren. Nähere Einzelheiten auf Anfrage.

Programme werden mit _PrgExec ausgeführt.
Bei Unterbrechung mit F9 wird _PrgStop aufgerufen.
Bei Fortsetzung nach Stop wird _PrgCont aufgerufen. Hierdurch wird normalerweise der Zustand der Ausgänge vor dem Stop wieder hergestellt.

Zurück zu: Systemvariablen


'_oStat': Aktueller Zustand aller Ausgänge

Dieses WORD-Array enthält den aktuellen Zustand aller mit dem Makro _oSet gesetzten Ausgänge. Voraussetzung ist allerdings, daß _oSet dies auch richtig verwaltet, und daß die Werte nicht woanders geändert werden.

Zurück zu: Systemvariablen


'_RL'
'_RL' 	 Wiedereintritts-Schranke für MTASC-Aufrufe

Hat nur Systeminterne Bedeutung und betrifft den Anwender nicht. Hat normalerweise den Wert 1.

Datentyp: WORD.

Zurück zu: Systemvariablen


Werkzeugparameter
Werkzeugparameter (ToolPar)

Es handelt sich hierbei um eine Funktion, die nur dazu dient, Zugang zu folgender Variablengruppe zu verschaffen:

Die Anzahl Werkzeuge insgesamt (ToolPar "n")

Datentyp: WORD.

Beispiel:

Anzahl Werkzeuge ausgeben:

PRINT ToolPar "n";

Anzahl Werkzeuge ändern (VORSICHT!):

(ToolPar "n") = 5;

Das aktuelle Werkzeug (ToolPar "curr")

Datentyp: WORD.

Die Werkzeugtabelle beginnt bei Index 0, was eigentlich 'kein Werkzeug' bedeutet. Doch kann auch diesem ein Radius zugeordnet werden. Wenn kein automatischer Werkzeugwechsler installiert ist, kann nur auf Werkzeug Nr. 0 zugegriffen werden.

Beispiel:

Nr. des aktuellen Werkzeugs ausgeben:

PRINT ToolPar "curr";

Nr. des aktuellen Werkzeugs ändern (Sollte man nur bei manuellem Werkzeugwechsel verwenden!):

(ToolPar "curr") = 6;

Die Werkzeugradien (ToolPar "rad")

Datentyp: DOUBLE-ARRAY.

Beispiel:

Radius des aktuellen Werkzeugs ausgeben:

PRINT (ToolPar "rad")[ToolPar "curr"];

Radius des aktuellen Werkzeugs ändern: Kann man z.B. verwenden, um ein Unterprogramm mit verschiedenen Korrekturwerten für Schruppen und Schlichten aufzurufen:

(ToolPar "rad")[ToolPar "curr"] = 3.1;

fcall "rkdemo.t";

(ToolPar "rad")[ToolPar "curr"] = 3.0;

fcall "rkdemo.t";

Zurück zu: Systemvariablen


HPGL-Parameter
HPGL-Parameter	(HpglPar)

Es handelt sich hierbei um eine Funktion, die den Zugang zu einer Gruppe von Variablen zu verschafft.

In EdiTasc werden die Werte dieser Variablen unter Verwendung des Dialogs MASCHINE Werkzeug-Parameter zugewiesen. Wenn sie dennoch von MTASC-Programmen modifiziert werden sollen, kann dies wie folgt geschehen:

Die Freifahrhöhe (HpglPar "zPU")

Dieser Wert gilt für alle Pens. Es ist daher kein ARRAY erforderlich.

Datentyp: DOUBLE.

Beispiel:

Aktuelle Freifahrhöhe ausgeben:

PRINT HpglPar "zPU";

Aktuelle Freifahrhöhe ändern:

(HpglPar "zPU") = 5.5;

Der aktuelle Pen (HpglPar "currPen")

Datentyp: WORD.

Die Tabelle der HPGL-Pens beginnt bei Index 0, was eigentlich 'kein Pen' bedeutet. Doch können auch diesem alle Parameter zugeordnet werden. Wenn kein automatischer Werkzeugwechsler installiert ist, kann allen Pens nur Werkzeug Nr. 0 zugeordnet werden.

Beispiel:

Nr. des aktuellen Pens ausgeben:

PRINT HpglPar "currPen";

Nr. des aktuellen Pens ändern (VORSICHT!):

(HpglPar "currPen") = 6;

Die Eintauchtiefen (HpglPar "zPD")

Zu jedem Pen gehört ein eigener Wert. Es ist daher ein ARRAY erforderlich:

Datentyp: DOUBLE-ARRAY.

Beispiel:

Eintauchtiefe des aktuellen Pens ausgeben:

PRINT (HpglPar "zPD")[ HpglPar "currPen"];

Eintauchtiefe des aktuellen Pens ändern:

(HpglPar "zPD")[ HpglPar "currPen"] = 5.5;

Die Einheit der HPGL-Koordinaten (HpglPar "Unit..")

Die Einheiten für die X- und Y-Koordinaten werden getrennt definiert:

HpglPar "UnitX" für die X-Einheit

HpglPar "UnitY" für die Y-Einheit

Datentyp: DOUBLE.

Die Einheit der Koordinaten ist standardmäßig 0.025mm. Manche Programme verwenden jedoch die Einheit 0.0254mm (1/1000 Inch). Beide Optionen sind im EdiTasc-Dialog MASCHINE Werkzeug-Parameter einstellbar. Falle Sie andere Werte benötigen, setzten Sie die Variable HpglUnitFlag = -1 und definieren die Werte in der Datei AUTOEXEC.TS:

HpglUnitFlag = -1;

(HpglPar "UnitX") = 0.01;

(HpglPar "UnitY") = 0.01;

Um die aktuelle Einheit zu prüfen, geben Sie in einem Editorfenster (Sprache MTASC) ein:

print HpglPar "UnitX";

Zurück zu: Systemvariablen


NC-Programmierung nach ISO/DIN 66025
NC-Programme nach ISO/DIN 66025

Nachdem ein NC-Programm nach ISO/DIN 66025 als ASCII-Datei erstellt wurde, (z.B. mit dem intergierten Editor oder durch den Postprozessor eines CAD-Systems) kann es in EdiTasc über den Befehl DATEI öffnen ausgewählt werden, wobei in der Dialogbox das Dateiformat DIN66025 anzugeben ist. Innerhalb von MTASC-Programmen können DIN-Programme mit der MTASC-Funktion DINCALL aufgerufen werden.

Syntax der DIN-Programme

Anders als in MTASC-Programmen werden die Zeilen nicht durch ein ';' abgeschlossen

Leerzeichen und Leerzeilen sind erlaubt, jedoch nicht erforderlich.

G01X22.5Z12         wird genauso interpretiert wie

G01 X22.5 Z 12

Programmkopf %

Ein nachfolgender Text (z.B. Programm-Nummer) wird als Kommentar überlesen, hat sonst jedoch keine Bedeutung.

Zeilennummern nach N

sind optional. Sie haben lediglich Kommentar-Charakter.

Die G-Funktionen

Die für alle Fahrbefehle anzugebende Zielposition muss stets in derselben Zeile nach X, Y, Z stehen. Falls zuvor G91 (Kettenmaß, siehe unten) ausgewählt wurde, ist der Zielpunkt relativ zur aktuellen Position anzugeben. Fehlt einer der Achsbuchstaben, ist in dieser Achse die Zielposition identisch mit der Startposition.

G00: Positionierung im Eilgang

Die Zielposition wird nach X, Y, Z erwartet. Es gelten die für die MTASC-Funktion 'MF' eingestellten Bahnparameter MF_f usw.

G01: Lineare Interpolation

Die Zielposition wird nach X, Y, Z erwartet. Es gelten die für die MTASC-Funktion 'ML' eingestellten Bahnparameter ML_f usw.

G02: Kreis-Interpolation im Uhrzeigersinn

G03: Kreis-Interpolation gegen den Uhrzeigersinn

Die Zielposition wird nach X, Y, Z erwartet, die Koordinaten des Kreismittelpunktes entsprechend nach I, J, K. Auch hier gilt: Falls zuvor G91 (Kettenmaß, siehe unten) ausgewählt wurde, ist der Mittelpunkt relativ zur aktuellen Position anzugeben, ansonsten absolut. Es gelten die für die EdiTasc-Funktion 'ML' eingestellten Bahnparameter ML_f usw.

G04: Verweilzeit

Die Zeit (in Millisekunden) wird direkt im Anschluß nach einem (hier nicht optionalen) Leerzeichen erwartet.

G17: Kreis-Interpolation in der XY-Ebene

G18: Kreis-Interpolation in der XZ-Ebene

G19: Kreis-Interpolation in der YZ-Ebene

Nachfolgende Kreise G02, G03) werden in der entsprechenden Ebene ausgeführt. G17 ist voreingestellt.

G22: Unterprogramm aufrufen
Das Unterprogramm wird als eigenständige Datei aufgerufen, deren Name in Anführungszeichen anzugeben ist. Beispiel:
G22 "demo1.nc"

G90: Absolutmaß

G91: Kettenmaß (relativ zur aktuellen Position)

Nachfolgende Zielkoordinaten werden im Absolutmaß bzw. im Kettenmaß (relativ zur aktuellen Position) erwartet. G90 ist voreingestellt.

Option: Fräserradius-Korrektur

Der aktuelle Fräserradius und der Konturtyp offen/geschlossen wird den Werkzeugdaten entnommen (siehe Dialog Maschine  Werkzeug-Parameter).

Bei geschlossenen Konturen ist zu beachten, dass das Austauchen auf die Freifahrhöhe und Eintauchen in das Bearbeitungsniveau automatisch erzeugt wird. Die Freifahrhöhe bzw. die Eintauchtiefe muss dann in den Systemvariablen _rkZup und _rkZdn vorgegeben werden. Verwenden Sie hierfür evt. eine geeignete M-Funktion.

G40: Fräserradius-Korrektur beenden. Die nachfolgenden Sätze werden wieder normal gefahren. Bei geschlossenen Konturen werden die noch fehlenden Bahnen für den Anschluß an die ersten Fahrbefehle, die direkt auf G41/G42 gefolgt sind, berechnet und ausgegeben.

G41: Fräserradius-Korrektur nach links (bezüglich Durchlaufsinn) aktivieren.

G42: Fräserradius-Korrektur nach rechts (bezüglich Durchlaufsinn) aktivieren.

M-Funktionen

Können frei definiert werden.

Die Ausführung der entsprechenden Funktion erfolgt durch Aufruf einer entsprechenden MTASC Programmdatei.

Soll z.B. die M-Funktion M61 das Kühlmittel einschalten, so muss eine Datei namens ‘M61.TNC’ im Systemverzeichnis angelegt werden, die ein MTASC-Programm enthält, das den entsprechenden Ausgang setzt.

Auch Unterprogramme können so aufgerufen werden, z.B. mit FCALL, DINCALL oder HPGLCALL.

Der Vorschub

wird nach dem Buchstaben F erwartet. Er kann in einer separaten Zeile oder nach  G01, G02, G03 stehen und ist dann bereits für diese Zeile wirksam.

Kommentare

Am Ende einer Anweisung oder in separaten Zeilen kann nach einer geöffneten Klammer '(' beliebiger Kommentartext folgen, der durch ')' abgeschlossen sein kann (aber nicht muss).

Syntaxerweiterung durch MTASC Kommandos

Zwischen geschweiften Klammern {...} wird Code nach MTASC-Syntax erwartet. Dies erleichtert die freie Verwendung von Makros und Variablen als Parameter.

Weiterführende Themen:

Systemvariablen zur Anpassunung des DIN66025-Interpreters

Zurück zu: Systemvariablen


Systemvariablen zur Anpassunung des DIN66025-Interpreters

Diese Variablen sind nur im MTASC-Syntax zugänglich und können z.B. in der Datei Autoexec.ts definiert werden.

'_dinParFfac': Die Einheit des Vorschubwertes nach F

Dieser Wert (Datentyp DOUBLE) dient als Faktor, mit dem alle F-Geschwindigkeitsvorgaben multipliziert werden.

Wenn z.B. die Standard-Einheit für Geschwindigkeiten (Menü Maschine Vorschub/Rampen) mm / sec ist, nach DIN wird aber m / min programmiert, kann dies so eingestellt werden:

/* Geschw. nach DIN in m/min, sonst mm/sec */
_dinParFfac = 60.0 / 1000.0;

'_dinParIJKMode': Relative oder absolute Angabe des Kreismittelpunktes

Dieser Wert (Datentyp CHAR) gibt an, wie die Mittelpunktskoordinaten nach I, J, K bei Kreisen (G02, G03) zu interpretieren sind:

'A': Absolut, d.h. bezogen auf den aktuellen Nullpunkt.

'R': Relativ, d.h. bezogen auf die aktuelle Position (wo der Kreis beginnt).

'0' (Voreingestellt): Abhängig von der aktuellen G90/G91 Einstellung (d.h. Absolut nach G90, Relativ nach G91).

Beispiel:

/* Mittelpunkte in DIN-Programmen immer absolut */
_dinIJKMode = 'A';

'_dinParIJKTol': Toleranzgrenze für die Genauigkeit von Kreisen

Dieser Wert ist vom Datentyp DOUBLE. Kreisbefehle (G02, G03) enthalten sowohl den Kreismittelpunkt als auch den Endpunkt. Dies bedeutet, dass der Endpunkt denselben Abstand zum Mittelpunkt haben muss, wie der Startpunkt (=aktuelle Position). Ist das nicht der Fall, wird ein Fehler gemeldet (Zielpunkt liegt nicht auf Kreis! mit Angabe der Abweichung). Die Toleranzgrenze hierfür kann eingestellt werden (Voreinstellung: 0.001):

/* Toleranzgrenze für Kreisgenauigkeit in DIN-Programmen */
_dinIJKTol = 0.01;

Beachten Sie, dass hierdurch geometrische Berechnungsfehler eventuell unbemerkt bleiben. Sind die gemeldeten Abweichungen sehr hoch, ist wahrscheinlich nicht dieser Wert, sondern _dinParIJKMode zu ändern!


Systemkonfiguration

Der Treiber ist ein Gerätetreiber namens Mtdrv.sys bei Windows NT und 98 und zusätzlich MtdrvX.vxd bei Windows 98.

Verschiedene Versionen sind lieferbar, z.B:

I3 für Inkrementalgeber + Analog-Ausgabe der Soll-Geschwindigkeit für Servo-Endstufen,

CC für reine Takt/Richtungs-Ausgabe der Soll-Geschwindigkeit (offener Regelkreis).

IC für Inkrementalgeber + Takt/Richtungs-Ausgabe der Soll-Geschwindigkeit (geschlossener Regelkreis).

PP für die ISEL-Schrittmotorkarte MPK3 oder MPK1 (offener Regelkreis).

MM für MOVTEC-Schrittmotorkarte PCSM

EP für die ISEL-Schrittmotorkarte MPK3 oder MPK1 mit Inkrementalgeber (geschlossener Regelkreis).

EE für Isel EPP-Karte, verbunden mit dem Druckerport. Voraussetzung: EPP-Schnittstelle Version 1.9.

UPM für Isel Servokarte UPMV 4/12

Andere Versionen auf Anfrage.

Dieser Treiber arbeitet unabhänhig von Ihrem im Vordergrund laufenden Programm wie ein separater Task höherer Priorität, so dass letzteres durch die Aktivität des Treibers nicht blockiert wird.

Weitere Informationen in:

Konfiguration des Treibers

Die Bedeutung der Systemdateien

Beispiel zur Systemkonfiguration - Einrichten der Referenzfahrt

Zurück zu:   INHALT


Konfiguration des Treibers

Die Daten zum Maßsystem und Regelverhalten befinden sich in der Datei DRV_xx.INI. xx steht für die 2 Buchstaben der Treibertyp-Kennung.

Die Datei ist nach dem Typ der Konfigurations-Dateien von WINDOWS (z.B.WIN.INI) aufgebaut:

Variablen-Name=...Daten...

Die verschiedenen Namen bzw. Werte haben folgende Bedeutung:

VER= Versions-Kennung

Opt= Kennung für die unterstützten Optionen der Software, hat nur Kommentarfunktion

Code= Seriennummer und Code Sequenz zu den Optionen. Wenn sie fehlt läuft das Programm nur im Demo-Modus. Alle Operationen werden in Echtzeit emuliert.

AdrOut= Portadressen für die Sollwertausgabe. Bei Hexadezimaler Schreibweise 0x voranstellen, z.B.: 0x3F8  0  0  0. Für manche Versionen ist nur der erste Wert relevant.

AdrIn= Portadressen zum Lesen der Istposition. Bei Hexadezimaler Schreibweise 0x voranstellen, z.B.: 0x248  0x24A  0x24C  0x24E. Nur für geschlossenen Regelkreis relevant.

WatchDskrTrig = Adress-Deskriptor eines IO-Ports für die Watchdog Triggerung. Bei jedem Regelinterrupt können an dieser Adresse ein oder mehrere Bits gesetzt und wieder zurückgesetzt werden. Ein Absturz des Rechners kann dadurch von der Hardware erkannt werden.
Eintrag Falls nicht verwendet: 'B' 0 0 0

backgrFrq= Nicht bei allen Treibertypen relevant.
Grundfrequenz für die Generierung der Takt bzw. Phasensignale.
Wert für Treibertyp CC, PP, EP, MM: 10000 bis 15000. Bei Rechnern mit zu geringer Taktfrequenz muss der Wert reduziert werden, z.B. auf 5000.
Wert für Treibertyp EE: Maximal 5000
Für andere Treibertypen kann hier 0 stehen.

PIDFrq= Zyklus-Frequenz in Hertz für die Halteregelung und für die Berechnung von Zwischenpositionen bei Bahnen.

Vorsicht: bei zu hohen Werten (d.h. wenn die Zyklus-Zeit kleiner ist als die Rechenzeit pro Zyklus) ist ein Absturz des Rechners unvermeidlich.

AcToWc= Länge pro Inkrement im gewünschten Maßsystem für jede Achse. Wenn z.B. 1 Inkrement 1µm entspricht und das gewünschte Maßsystem ist mm, muss hier bei 3 Achsen folgendes stehen:
0.001   0.001   0.001
Auch das Vorzeichen ist hier wichtig. Sollte sich herausstellen, dass eine Achse in die falsche Richtung fährt, genügt es, das entsprechende Vorzeichen umzukehren (Einfügen bzw. Entfernen von "-").
Besonderheiten für einige Treibertypen:
EE und PP (EPP-Karte und MPK3-Karte): 1 Inkrement entspricht einem Mikroschritt mit der Schrittweite von 1/64 Vollschritt. Dies ist nicht änderbar. Die Vergrößerung der Schrittweite bei höheren Drehzahlen erfolgt unabhängig hiervon automatisch.
Berechnungsbeispiel für Spindelsteigung 5mm, 200 Vollschritte pro Umdrehung:
5 / (200 * 64) = 0.000390625
EP (MPK3-Karte mit Encoderkarte): 1 Inkrement entspricht einem Zählimpuls des Encoders (mit Vervierfachung). Die Mikroschritt-Auflösung ist auch hier 1/64 Vollschritt. Dies ist nicht änderbar. Die Vergrößerung der Schrittweite bei höheren Drehzahlen erfolgt unabhängig hiervon automatisch. Positioniert wird aber nur nach Zählerstand - nicht nach Mikroschritten.
Berechnungsbeispiel für Spindelsteigung 5mm, Encoder mit 500 Impulsen pro Umdrehung, was vervierfacht 2000 Inkremente ergibt:
5 / 2000 = 0.0025

Für die Folgenden 4 Werte nehmen wir an, dass die Längeneinheit mm ist. Für andere Einheiten gilt entsprechendes.

S1_V= Längeneinheit für Geschwindigkeits-Angaben. Falls diese ebenfalls mm ist (z.B. mm/sek oder mm/min) muss hier 1 stehen. Soll sie hingegen 1 Meter sein (z.B. m/min), müßte hier 1000 stehen.

T1_V= Zeiteinheit für Geschwindigkeits-Angaben. Falls diese 1 sek ist (Z.B. mm/sek), muss hier 1 stehen. Soll sie hingegen 1 min sein (z.B. m/min), müßte hier 60 stehen.

S1_B= Längeneinheit für Bechleunigungs-Angaben (Rampen), entspricht S1_V.

T1_B= Zeiteinheit für Bechleunigungs-Angaben (Rampen), entspricht T1_V.

manVmin= Kleinste Schrittweite im Handverfahren für jede Achse. Von dieser kleinsten Schrittweite bis zu der in der nächsten Zeile angegebenen größten wird bei längerem drücken der entsprechenden Richtungstasten in 20 Zwischenstufen beschleunigt.

manVmax= Größte Schrittweite im Handverfahren für jede Achse.

aMask= Bitmaske der aktiven Achsen. Hierdurch ist es möglich, einzelne Achsen auszublenden, so dass sie vom Treiber ignoriert werden. Wenn hier 0 steht, laufen alle Fahrbefehle in Echtzeit ab, ohne die Achsen zu bewegen. Dies ermöglicht Echtzeit-Simulation ohne angeschlossene Steuerung und Mechanik.
Als aktiv markiert werden
Achse 1 durch die 1,
Achse 2 durch die 2,
Achse 3 durch die 4,
Achse 4 durch die 8 (usw. in 2er Potenzen).
Sämtliche Kombinationen (durch Addition der zugehörigen 2er Potenzen) sind erlaubt.

sfTestFlag= 1 falls Schleppfehlerprüfung erwünscht, sonst 0. Sollte nur für Testzwecke auf 0 gesetzt werden.

Diese Zeile sollte nur bei Systemen mit integriertem Inkrementalgeber vorkommen:

AcCntFak= Zählrichtung bei der Auswertung der Inkrementalgeber.
Standardwert: 1 (=normale Zählrichtung) oder -1 (=invertierte Zählrichtung) für jede Achse.
Wenn AcCntFak fehlt, wird intern für jede Achse der Wert 1 verwendet.
Die Umkehrung des Vorzeichens hat dieselbe Wirkung wie z.B. das Vertauschen der Encodersignale A und B.
Ein anderer Wert als 1 ändert die Bewertung der gezählten Inkremente und wird kaum sinnvoll sein. Die Anpassung an die mechanische Untersetzung oder Spindelsteigung sollte im Normalfall nicht hier sondern in AcToWc stattfinden.

Die folgenden 4 Werte bestimmen das Regelverhalten des PID-Reglers. Zum besseren Verständnis ist zu sagen, dass dieses Werte auch bei Schrittmotoren im offenen Regelkreis eine Rolle spielen. Dies ergibt sich aus der Softwarestruktur des Treibers, in der die Soll- und Istwerte durch 2 Module repräsentiert sind.

dAcsiPFak= Faktor für den P-Anteil der Regelung für jede Achse. Die aktuelle Soll-Ist-Differenz (in Inkrementen) wird mit diesem Wert multipliziert. Das Ergebnis wird zur Sollgeschwindigkeit als P-Anteil addiert.
Wenn dieser Wert zu groß ist, reagiert die Steuerung zu hart, schwingt am Zielpunkt über oder gerät in eine permanente Schwingung.
Wenn der Wert zu klein ist, reagiert die Steuerung zu weich und läuft am Zielpunkt verspätet ein.

dAcsiIFak= Faktor für den I-Anteil der Regelung für jede Achse. Die aktuelle Soll-Ist-Differenz (in Inkrementen) wird mit diesem Wert multipliziert. Das Ergebnis wird in jedem Regelzyklus aufaddiert und zur Sollgeschwindigkeit als I-Anteil addiert.
Dadurch werden langanhaltende Soll-Ist-Differenzen (z.B. reibungsbedingte) kompensiert. Der Wert darf auch 0 sein.
Wenn dieser Wert zu groß ist, besteht die Gefahr permanenter Schwingungen.
Hinweis: Die Wirkung dieser Werte wird begrenzt durch die entsprechenden D-Anteile (dAcsiDFak Werte). Sind letztere 0, haben auch die I-Anteile keinen Effekt.

dAcsiDFak= Faktor für den D-Anteil der Regelung für jede Achse. Es ist eine rein aus dem Sollverlauf resultierende Komponente. Die aktuelle Änderung der Sollposition (in Inkrementen) wird mit diesem Wert multipliziert. Das Ergebnis wird in jedem Regelzyklus zur Sollgeschwindigkeit als als D-Anteil addiert.
Dadurch werden schnelle Bewegungen besser nachvollzogen. Der Wert darf auch 0 sein.
Wenn dieser Wert zu groß ist, eilt sie ständig ihrer Sollposition voraus.
Hinweis: In der üblichen Terminologie wird für den D-Anteil die Änderung der Soll-Ist-Differenz verwendet. Dies ist in EdiTasc nicht der Fall.

dAcsCorr= Kompensation des Umkehrspiels in Inkrementen für jede Achse. Dieser Wert wird immer automatisch in Fahrtrichtung zur Sollposition addiert.

speedMaxCut= Maximal ausgegebene Soll-Geschwindigkeit, je nach Treibertyp:
z.B. I3	- maximal  2047
CC, PP, EP	- maximal  8192

speedMaxTol = Maximal tolerierte (theoretische) Soll-Geschwindigkeit, je nach Treibertyp.
Sie liegt normalerweise über speedMaxCut. Bei Überschreitung tritt ein Schleppfehler ein.

speedStart= Maximal zulässige Startgeschwindigkeit bzw. Änderung der Soll-Geschwindigkeit von Regel-Zyklus zu Regel-Zyklus. Falls die Endstufe selbst eine Rampe generiert, kann hier dasselbe stehen wie in speedMax.

Die Curr... Variablen gelten nur für manche Treibertypen wie PP, EE, EP oder MM:

CurrMove= Arbeitsstrom (0-255) für Motorstrom bei Bewegung. 255 = Maximum.

CurrStop= Ruhestrom (0-255)für Motorstrom im Stillstand. 255 = Maximum. Wird nur eingestellt wenn alle Achsen stehen.

CurrStopTime= Wartezeit bei Stillstand bis zur Einstellung des Ruhestroms.

McLimMin= untere Verfahrgrenzen in Maschinenkoordinaten für jede Achse (Minimalwerte). Bei eingeschalteter Bereichsüberwachung (siehe MTASC-Funktion MLIMIT) bleiben alle Achsen stehen, sobald eine Achse ihren zugehörigen Wert unterschreitet.
z.B.  0.0  -245.5  10.0

McLimMax= obere Verfahrgrenzen in Maschinenkoordinaten für jede Achse (Maximalwerte). Bei eingeschalteter Bereichsüberwachung (siehe MTASC-Funktion MLIMIT) bleiben alle Achsen stehen, sobald eine Achse ihren zugehörigen Wert überschreitet.
z.B.  350.0  -3.2  440.0

Es ist zu beachten, dass bei allen Variablen-Namen, deren Werte für jede Achse getrennt gelten, entsprechend viele durch mindestens eine Leerstelle getrennte Zahlen stehen müssen, und zwar je eine für jede Achse. Überzählige werden ignoriert und schaden nicht.

Leider können nicht alle Werte können hier dokumentiert werden. Nähere Informationen auf Anfrage.

Zurück zu:   Systemkonfiguration


Die Bedeutung der Systemdateien
Die Bedeutung einiger Systemdateien

Diese Dateien stehen in demselben Verzeichnis, wo sich auch Editasc.exe befindet und haben die Endung ".ts". Es handelt sich um gewöhnliche MTASC-Programme. SYSTEM.TS und AUTOEXEC.TS werden stets beim Aufruf von EdiTasc automatisch ausgeführt, um Systemvariablen zu definieren. Meistens werden auch die Achsen aktiviert.

Die Date SYSTEM.TS sollte nicht geändert werden, da sie globale Definitionen und Defaultwerte enthält.

Sinnvolle Modifikationen der Datei AUTOEXEC.TS können z.B. sein:

Definition eigener häufig verwendeter Variablen.

Aufruf anderer Programme, die beim Laden von EdiTasc ebenfalls automatisch ablaufen sollen, z.B. das Referenzieren der Achsen.

Die Datei REFSRCH.TS ist zuständig für das Referenzieren der Achsen.

Die Datei PARAMSET.TS sollte nicht modifiziert werden. Hier stehen z.B. die Default-Werte für die Geschwindigkeiten und Rampen.

In EdiTasc wird sie wird in verschiedenen Dialogen, z.B. bei MASCHINE Vorschub/Rampen und MASCHINE Werkzeug-Parameter, durch die Schaltfläche 'Permanent speichern...' jedesmal neu erzeugt. Wenn sie die voreingestellten Parameter ändern wollen, sollten Sie diese Dialogbox verwenden.

Die Datei IoStat.ts enthält den Zustand der Schalterstellungen zur Dialogbox 'Einstellungen', wie er beim Programmstart mit Taste F5 gesetzt wird.

Die Dateien TOOLPOS.TS und GETTOOL.TS sind nur bei automatischem Werkzeugwechsel relevant.

Die Datei AUTOEXIT.TS wird beim Verlassen von EdiTasc ausgeführt. Hier können z.B. die Endstufen usw. abgeschaltet werden.

Zurück zu:   Systemkonfiguration


Einrichten der Referenzfahrt
Beispiel zur Systemkonfiguration - Einrichten der Referenzfahrt

Achten Sie darauf, dass zuerst die gewünschte Orientierung der Achsen (siehe AcToWc) korrekt eingestellt ist, was durch Handverfahren festzustellen ist.

Richten Sie erst danach die Datei Refsrch.ts mit einem Editor (am besten Notepad) wie folgt ein:

Die Geschwindigkeiten in mm / sec.:

spf = 10.0;	/* Geschw. für schnelles suchen */
sps = 0.5;	/* Geschw. für langsames wieder freifahren */

Achten Sie auf mindestens ein Leerzeichen vor und nach dem "="-Zeichen und verwenden Sie als Dezimaltrennzeichen einen Punkt, kein Komma!

Die Suchrichtungen bezüglich der oben eingestellten Orientierung:

dx = -1.0;	/* Fahrt-Richtung für X, Y, Z */
dy = -1.0;
dz =  1.0;

Verwenden Sie nur den Wert 1.0 mit oder ohne Minus davor und achten Sie auch hier auf die Leerzeichen.

Die Abschnitte für die Achsen Z, X, Y können als zusammenhängende Blöcke umgruppiert werden, was die Reihenfolge betrifft. Ein entsprechender Block für die 4. Achse A kann bei Bedarf erstellt werden.

Die letzte Zeile des Blocks, z.B.:

z _z - 2 * dz; mf;

ist ein Freifahren vom Endschalter (hier 2mm), was jedoch die Lage des Referenzpunktes (=Nullpunkt der Maschinenkoordinaten) nicht beeinflusst.

Den zuletzt verwendeten Objektnullpunkt wieder herstellen
Dies geschieht durch folgende Zeilen am Ende der Datei:

_ocNext[0] = getmc[0] - _OcOfs[0];
_ocNext[1] = getmc[1] - _OcOfs[1];
_ocNext[2] = getmc[2] - _OcOfs[2];
setoc;

Bei Verwendung der 4. Achse ist eine weitere Zeile zu ergänzen:

_ocNext[3] = getmc[3] - _OcOfs[3];

Zurück zu:   Systemkonfiguration