Hallo,
bei dir, d.h.
AXIS_CHECK_LIM =INVERSE (POSITION, START_AXIS, Fehlernummer)
musst du natürlich auf Fehlernummer schauen, das ist ja die Variable die du an INVERSE übergibst.
Nochmal zur Klarstellung der dritte Parameter in INVERSE, d.h. bei dir Fehlernummer, wird sowohl als Eingabe- als auch als Ausgabewert verwendet. Es ist also einerseits wichtig welchen Wert er direkt vor Aufruf von INVERSE hat, um festzulegen wie INVERSE mit Softwareendschaltern umgehen soll:
Bit 0=0: Alle Achswinkel werden geprüft, ob sie innerhalb der SW-Endschaltergrenzen liegen. Wenn nicht, dann wird über ERR_STATUS bzw. bei dir Fehlernummer ein entsprechender Fehlercode zurück geliefert.
Bei Bit 0 = 1 wird dementsprechend kein Prüfung der Endschalter gemacht.
Ist man durch INVERSE durch enthält Fehlernummer die Rückmeldung ob und was schief gegangen ist, falls ein Wert kleiner Null drin steht. Diese Fehlercodes hast du ja bereits selbst aufgeführt.
Also Fehlercode -2 bedeutet: beim Aufruf von INVERSE hatte Fehlernummer noch keinen gültigen Wert, war also wahrscheinlich nur deklariert aber nicht initialisiert. Daher würde ich mal direkt vor dem Aufruf von INVERSE Fehlernummer den Wert 0 oder 1 zuweisen je nachdem ob du die Endschalterprüfung haben willst oder nicht.
Fubini