Sonstiges Sinumerik 840D sL Zählschleife erstellen mit Variablen

nik20099

Level-2
Beiträge
66
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin Leute,

ich versuche aktuell mithilfe einer Schleife eine Protokolldatei zu erstellen.

Leider bekomme ich mein Maschinendatum nicht in die Schleife. Vielleicht hat von euch ja jemand eine Idee.

----------------------------------------------------------
DEF INT ii
DEF STRING[4] Achse
DEF STRING[30] TIMESTAMP
DEF STRING[400] _STRLINE




;Die Schleife durchläuft alle vorhandenen Achsen und kann dort Werte überprüfen
FOR ii = 1 to 24


Achse ="AX"<< ii
_STRLINE = "Plus Limit 1 ; "<< $MA_POS_LIMIT_PLUS[Achse]
WRITE(ERROR,"AbnahmeProtokoll.CSV", _STRLINE)

ENDFOR
M30
 
Moin Leute,

ich versuche aktuell mithilfe einer Schleife eine Protokolldatei zu erstellen.

Leider bekomme ich mein Maschinendatum nicht in die Schleife. Vielleicht hat von euch ja jemand eine Idee.

----------------------------------------------------------
DEF INT ii
DEF STRING[4] Achse
DEF STRING[30] TIMESTAMP
DEF STRING[400] _STRLINE




;Die Schleife durchläuft alle vorhandenen Achsen und kann dort Werte überprüfen
FOR ii = 1 to 24


Achse ="AX"<< ii
_STRLINE = "Plus Limit 1 ; "<< $MA_POS_LIMIT_PLUS[Achse]
WRITE(ERROR,"AbnahmeProtokoll.CSV", _STRLINE)

ENDFOR
M30
Gibt es eine Fehlermeldung ?
Oder sagt die Steuerung einfach "Mach ich nicht "
 
ich möchte gerne in der schleife den folgenden Teil Vairable gestalten


$MA_POS_LIMIT_PLUS[AX1]

Dieser soll durch die Zählvariable " ii " und einem festen String gebildet werden

$MA_POS_LIMIT_PLUS[ AX + ii ]

Das Ziel ist eine flexible und universelle schleife
 
Zuviel Werbung?
-> Hier kostenlos registrieren
IF ISVAR(("$AA_IM["<<Achse<<"]")) kommt mir sehr komisch vor. Ich würde stattdessen mal
IF ISVAR($AA_IM[Achse])
probieren.
Ich muss allerdings zugeben, dass ich die Eigenarten dieser ProgrammierSprache nicht kenne.
 
IF ISVAR(("$AA_IM["<<Achse<<"]")) funktioniert ohne Probleme

der 2.Teil wie in meiner letzten Nachricht beschrieben funktioniert nicht.

Das ist ein NC-Programm auf einer Sinumerik 840D sl
 
Zuviel Werbung?
-> Hier kostenlos registrieren
der 2.Teil wie in meiner letzten Nachricht beschrieben funktioniert nicht.
MSG("Uert = " << $MA_POS_LIMIT_PLUS[Achse])) funktioniert also nicht? Wofür die zweite ")"?
AX1 beinhaltet was? AX entspricht einer BasisAdresse und die 1 ist der eigentliche Index für die AchsAdressierung?
Könntest Du mal AX1 einer Variablen zuweisen und gucken, was zum Vorschein kommt?
Und das gleiche nochmal mit AX2.
Was passiert, wenn Du in Achse das AX weglässt und nur die reine Zahl 1 stehen hast?

Ja ja, NC-Programm auf einer 840Dsl - das war mir schon klar. Trotzdem kenne ich die Feinheiten nicht (mehr). Z.B. was ist << ? Der (Concatenate-)Operator, mit dem man einen Text zusammenstückelt?
 
Mach doch einfach mal ein ibn Archiv
Das öffnest du mit einem Text Editor
Suchst nach deinem maschinendatum
Und dann siehst du dort die Notation die du fürs Lesen aus dem nc Code brauchst
 
Also mit dem 2. Index kann es nicht sein, da bei den normalen Endschaltern es so läuft:
$MA_POS_LIMIT_PLUS[Achse]
$MA_POS_LIMIT_PLUS2[Achse]


Wenn ich die Klammer weg lasse funktioniert es auch nicht.

schreibe ich es so
MSG("Uert = " << $MA_POS_LIMIT_PLUS[AX1]))
bekomme ich einen Wert in der Message



Archive möchte ich ja eben nicht machen. Ich möchte mir gerne eine Diagnosedatei erstellen, welche der Kunde im Problemfall ausführen kann, in der dann die Wichtigsten Daten eingetragen werden.
 
heute habe ich mir mal dein Problem angeschaut , (musste leider meinen Urlaub nach 4 Wochen unterbrechen)

Also bei deinem MD $MA_POS_LIMIT_PLUS[AX1] ist der INDEX AX1 kein String sonder eine Variable des Types AXIS.
Von deinem String[4] ACHSE = "AX1"
kommst du mit dem Befehl AXNAME(String) zum Type AXIS

Code:
DEF AXIS AXIS_COUNT
DEF INT ii
DEF STRING[4] Achse
DEF STRING[30] TIMESTAMP
DEF STRING[400] _STRLINE

;Die Schleife durchläuft alle vorhandenen Achsen und kann dort Werte überprüfen
FOR ii = 1 to 24
Achse ="AX"<< ii 

AXIS_COUNT = AXNAME(Achse)

_STRLINE = "Plus Limit 1 ; "<< $MA_POS_LIMIT_PLUS[AXIS_COUNT]
WRITE(ERROR,"AbnahmeProtokoll.CSV", _STRLINE)

ENDFOR
M30

hoffe das hilft
 
Zurück
Oben