Anaconda55
Level-1
- Beiträge
- 301
- Reaktionspunkte
- 6
-> Hier kostenlos registrieren
Hallo. Benutze folgenden Baustein.
Wie kann ich die Referenz zurücksetzen/killen?
So das ich isRef = False bekomme.
Wie kann ich die Referenz zurücksetzen/killen?
So das ich isRef = False bekomme.
Code:
FUNCTION_BLOCK McAxisKernel
(*
Servo Achse
Der Funktionsbaustein erlaubt die Ansteuerung einer NC-Achse als
- Einzelachse
*)
VAR_INPUT
startMode :E_STARTMODE; (*Beschreibung: Siehe 'Datentypen'*)
(*Refer to: 'Data types'*)
zero :BOOL; (*Vor dem nächsten Positionierstart die relative Istposition = 0 setzen*)
refCam :BOOL; (*Referenznocke*)
start :BOOL; (*Start Positionierung / Abbruch wenn Signal zurückgesetzt wird
Fahrprofil mit Geschwindigkeit, Beschleunigung und Ruck*)
stop :BOOL; (*Unterbrechung / Fortsetzung Positionierung*)
jogPos :BOOL; (*Tippen endlos plus mit Tippgeschwindigkeit*)
jogNeg :BOOL; (*Tippen endlos minus mit Tippgeschwindigkeit*)
jogPosInc :BOOL; (*Tippen inkrementell plus mit Tippgeschwindigkeit*)
jogNegInc :BOOL; (*Tippen inkrementell minus mit Tippgeschwindigkeit*)
couple :BOOL; (*Kopplung ein / aus*)
extSetpoint :BOOL; (*Externe Sollwertvorgabe ein / aus*)
initPos :BOOL; (*Istposition setzen, Referenznocke*)
setTarg :BOOL; (*Neue Zielposition während der Bewegung vorgeben*)
fastStop :BOOL; (*Stop einer Bewegung mit max. Rampe (Achs-Parameter)*)
reset :BOOL; (*Fehler quittieren*)
parInit :BOOL; (*Achs-Parameter auslesen*)
(*Vorbedingungen zum Verfahren der Achse*)
enAxis :BOOL; (*Achse Freigabe*)
enPlus :BOOL; (*Achse Fahrfreigabe plus Richtung*)
enMinus :BOOL; (*Achse Fahrfreigabe minus Richtung*)
(*Fahrdaten der Achse*)
targPos :LREAL; (*Achse Zielposition [EINH]*)
velo :REAL; (*Achse Geschwindigkeit [EINH/s]*)
acc :REAL; (*Achse Beschleunigungsrampe [EINH/s²] / Default (-1)*)
dec :REAL; (*Achse Bremsrampe [EINH/s²] / Default (-1)*)
jerk :REAL; (*Achse Ruckbegrenzung [EINH/s³] / Default (-1)*)
jogIncTargPos :LREAL; (*Tippen inkrementell Schrittweite [EINH]*)
jogVelo :REAL; (*Tippen Geschwindigkeit [EINH/s]*)
over :REAL:=100; (*Achse Geschwindigkeitsoverride [%]*)
ratioNum :INT:=1; (*Achse Getriebekopplung Faktor Zähler*)
ratioDenum :INT:=1; (*Achse Getriebekopplung Faktor Nenner*)
END_VAR
VAR_IN_OUT
axisRefIn :NCTOPLC_AXLESTRUCT; (*Achse NC->PLC zyklische Kopplung*)
axisRefOut :PLCTONC_AXLESTRUCT; (*Achse PLC->NC zyklische Kopplung*)
masterAxisRefIn :NCTOPLC_AXLESTRUCT; (*Leitachse NC->PLC zyklische Kopplung*)
END_VAR
VAR_OUTPUT
stopped :BOOL; (*Achse Stillstand*)
isZero :BOOL; (*Achse in Nullposiiton (= ZeroPos)*)
isRef :BOOL; (*Achse ist referenziert*)
isCoupled :BOOL; (*Achse ist gekoppelt*)
isSync :BOOL; (*Achse ist tabellengekoppelt*)
isExtSetpoint :BOOL; (*Externe Sollwertvorgabe aktiv*)
ncEnabled :BOOL; (*Achse betriebsbereit und freigegeben*)
relPos :LREAL; (*Istposition relativ [EINH]*)
actPos :LREAL; (*Istposition absolut [EINH]*)
busy :BOOL; (*Achsbaustein aktiv*)
done :BOOL; (*Im Ziel, Bewegung beendet, rechnerisch*)
inPos :BOOL; (*Im Zielfenster, physikalisch*)
constVelo :BOOL; (*Fahren mit konstanter Geschwindigkeit*)
movePos :BOOL; (*Fahren in Richtung plus*)
moveNeg :BOOL; (*Fahren in Richtung minus*)
ncError :BOOL; (*Achse Fehler*)
ncErrId :UDINT; (*Achse Fehler-Nummer: Die Beschreibung zur Fehlernummer
kann dem TwinCat Information System entnommen werden.
Suchen -> <errorId>*)
parValid :BOOL; (*Achs-Parameter sind gültig ausgelesen*)
maxNcVelo :LREAL; (*Parametrierte Maximalgeschwind. [EINH/s]*)
maxNcAcc :LREAL; (*Parametrierte Beschleunigung [EINH/s²]*)
maxNcDec :LREAL; (*Parametrierte Verzoegerung [EINH/s²]*)
maxNcJerk :LREAL; (*Parametrierter Ruck [EINH/s³]*)
limitNeg :LREAL; (*SW Limit negativ [EINH]*)
limitPos :LREAL; (*SW Limit positiv [EINH]*)
END_VAR
VAR
state :STRUCT_MC_STATE; (*Zustand: Achsbaustein*)
logState :ARRAY[-4..0] OF STRUCT_MC_STATE; (*Zustand: Achsbaustein*)
stateMotion :INT; (*Zustand Motion*)
stateMcFb :INT; (*Zustand MC FB*)
stateInitParams :INT; (*Zustand: ActInitParams*)
xReadParVelo :MC_ReadParameter; (*Achs-Parameter Geschwindigkeit lesen *)
xReadParAcc :MC_ReadParameter; (*Achs-Parameter Beschleunigung lesen *)
xReadParDec :MC_ReadParameter; (*Achs-Parameter Verzögerung lesen *)
xReadParJerk :MC_ReadParameter; (*Achs-Parameter Ruck lesen *)
xReadParLimPos :MC_ReadParameter; (*Achs-Parameter Limit positiv lesen *)
xReadParLimNeg :MC_ReadParameter; (*Achs-Parameter Limit negativ lesen *)
xPower :MC_Power; (*MC Achse einschalten*)
xReadStatus :MC_ReadStatus; (*MC Bewegungszustand lesen*)
xReset :MC_Reset; (*MC Achse Reset*)
xReadAxisError :MC_ReadAxisError; (*MC Achsfehler lesen*)
xReadActualPosition :MC_ReadActualPosition; (*MC Istposition lesen*)
xMoveAbsolute :MC_MoveAbsolute; (*MC Positionieren absolut*)
xMoveAbsoluteOrRestart :MC_MoveAbsoluteOrRestart; (*Positionieren absolut mit neuer Zielposition*)
xMoveRelative :MC_MoveRelative; (*MC Positionieren relativ*)
xMoveVelocity :MC_MoveVelocity; (*MC Fahren mit konstanter Geschwindigkeit*)
xNewPosAndVelo :MC_NewPosAndVelo; (*MC Geschwindigkeit und Position bei Dauerlauf ändern*)
xHome :MC_Home; (*MC Referenzfahrt*)
xSetActualPosition :MC_SetActualPosition; (*MC Isposition setzen*)
xChangeDynParam :MC_ChangeDynParam; (*MC Beschleunigungsparameter ändern*)
xStop :MC_Stop; (*MC Stop*)
xGearIn :MC_GearIn; (*MC Getriebekopplung statisch einschalten*)
(* xGearInPos :MC_GearInPos; *) (*MC Getriebekopplung dynamisch einschalten*)
(* xGearOut :MC_GearOut;*) (*MC Getriebekopplung ausschalten*)
xGearOutExt :MC_GearOutExt; (*MC Getriebekopplung ausschalten, neue Zielgeschwindigkeit*)
(* xCamIn :MC_CamIn; *) (*MC Tabellenkopplung einschalten*)
(* xCamOut :MC_CamOut; *) (*MC Tabellenkopplung ausschalten*)
xExtSetPointGenEnable :MC_ExtSetPointGenEnable; (*MC Externe Sollwertvorgabe einschalten*)
xExtSetPointGenDisable :MC_ExtSetPointGenDisable; (*MC Externe Sollwertvorgabe ausschalten*)
startPos :LREAL; (*Absolutposition gespeichert beim Start [EINH]*)
parInitTrig :R_TRIG; (*Impuls Parameter initialisieren*)
veloAtStart :REAL; (*Geschwindigkeit bei Bewegungsstart [EINH/s]*)
accAtStart :REAL; (*Beschleunigung bei Bewegungsstart [EINH]/s*)
decAtStart :REAL; (*Verzoegerung bei Bewegungsstart [EINH/s²]*)
jerkAtStart :REAL; (*Ruckwert bei Bewegungsstart [EINH/s³]*)
tNcEnableOn :TP; (*Achse zuschalten Togglesignal ON*)
tNcEnableOff :TP; (*Achse zuschalten Togglesignal OFF*)
tNcEnableOnTime :TIME := T#2s; (*Zeit Achse zuschalten ON*)
tNcEnableOffTime:TIME := T#1s; (*Zeit Achse zuschalten OFF*)
veloChange :BOOL; (*Fahrgeschwindigkeit wurde geändert*)
dynamicChange :BOOL; (*Dynamik (acc,dec,jerk) wurde geändert*)
END_VAR
VAR CONSTANT
ZERO_POS :LREAL:=0; (*Achse Nullposition [EINH]*)
MODULO_RANGE :LREAL:=360; (*Modulobereich [EINH]*)
END_VAR
(*
Die Achskommandos sind als Zustandsautomat der Motion Control Bausteine programmiert.
Bibliotheken:
TwinCat TcMc.lib
TcMath.lib
Bausteine:
AxisModuloTargPos
Achsparameter, die beim Start der Steuerung ausgelesen werden
maxNcVelo Einlesen beim ersten Aufruf: Parametrierte Maximalgeschwind. [EINH/s]
maxNcAcc Einlesen beim ersten Aufruf: Parametrierte Beschleunigung [EINH/S²]
maxNcDec Einlesen beim ersten Aufruf: Parametrierte Verzoegerung [EINH/S²]
maxNcJerk Einlesen beim ersten Aufruf: Parametrierter Ruck [EINH/S³]
limitNeg SW Limit negativ [EINH]
limitPos SW LIMIT positiv [EINH]