Achskopplung deaktivieren TwinCat2 CNC

HammerSchmid

Level-1
Beiträge
12
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo ich habe gerade folgendes Problem und zwar versuche ich eine Achskopplung vorrübergehend aufzuheben durch einen Button den ich im PLC Programm integriert habe. Mit fehlt bei der sache eigentlich nur der oder die Parameter die ich umstellen muss um die Achskopplung zu deaktivieren. Falls da irgendeiner zufällig auf welche VE Variable ich da einfluss nehmen muss wär das Klasse ! ( in einem CNC Programm klappt das bereits wenn ich mit dem Befehl #AX LINK OFF #DISABLE AX LINK arbeite! )
vielen dank für Hilfe
mfg Hammerschmid

falls es was hilft mein Programm zur Achskopplung sieht so aus....


(* Trigger für V.E.Befehl (XMasterAxis, YMasterAxis) *)
tr_X1Master(CLK := XMasterAxis = 1); (* cmd X1 Master *)
tr_X2Master(CLK := XMasterAxis = 2); (* cmd X2 Master *)
tr_X1ResetMaster(CLK := XMasterAxis = 1); (* cmd Y1 Master *)
tr_X2ResetMaster(CLK := XMasterAxis =2); (* cmd Y2 Master *)

tr_Y1Master(CLK := YMasterAxis = 1); (* cmd X1 Decouple *)
tr_Y2Master(CLK := YMasterAxis = 2); (* cmd X2 Decouple *)
tr_Y1ResetMaster(CLK := YMasterAxis = 1); (* cmd Y1 Decouple *)
tr_Y2ResetMaster(CLK := YMasterAxis =2); (* cmd Y2 Decouple *)


(* Achskopplung *)
HLI_SetAxisCoupling(MasterAxis := 1, SlaveAxis := 2, bEnable := tr_X1Master.Q, bReset := tr_X1ResetMaster.Q, descidx := 1);
HLI_SetAxisCoupling(MasterAxis := 2, SlaveAxis := 1, bEnable := tr_X2Master.Q, bReset := tr_X2ResetMaster.Q, descidx := 1);
HLI_SetAxisCoupling(MasterAxis := 3, SlaveAxis := 4, bEnable := tr_Y1Master.Q, bReset := tr_Y1ResetMaster.Q, descidx := 1);
HLI_SetAxisCoupling(MasterAxis := 4, SlaveAxis := 3, bEnable := tr_Y2Master.Q, bReset := tr_Y2ResetMaster.Q, descidx := 1);


(* Rückmeldung als VE Variable *)
IF pAC[2]^.addr^.McControlLr_Data.MCControlAxisCouplingUnit_AxisCoupling.AxisCouplingState.desc[1].AxisNumber = 1 THEN
SetVEChannelValue(nChan := 1, nVEIndex := 10, nVal := 1, bGlobal := TRUE); (* X1IsMaster *)
ELSE
SetVEChannelValue(nChan := 1, nVEIndex := 10, nVal := 0, bGlobal := TRUE);
END_IF

IF pAC[1]^.addr^.McControlLr_Data.MCControlAxisCouplingUnit_AxisCoupling.AxisCouplingState.desc[1].AxisNumber = 2 THEN
SetVEChannelValue(nChan := 1, nVEIndex := 11, nVal := 1, bGlobal := TRUE); (* X2IsMaster *)
ELSE
SetVEChannelValue(nChan := 1, nVEIndex := 11, nVal := 0, bGlobal := TRUE);
END_IF

IF pAC[4]^.addr^.McControlLr_Data.MCControlAxisCouplingUnit_AxisCoupling.AxisCouplingState.desc[1].AxisNumber = 3 THEN
SetVEChannelValue(nChan := 1, nVEIndex := 12, nVal := 1, bGlobal := TRUE); (* Y1IsMaster *)
ELSE
SetVEChannelValue(nChan := 1, nVEIndex := 12, nVal := 0, bGlobal := TRUE);
END_IF

IF pAC[3]^.addr^.McControlLr_Data.MCControlAxisCouplingUnit_AxisCoupling.AxisCouplingState.desc[1].AxisNumber = 4 THEN
SetVEChannelValue(nChan := 1, nVEIndex := 13, nVal := 1, bGlobal := TRUE); (* Y2IsMaster *)
ELSE
SetVEChannelValue(nChan := 1, nVEIndex := 13, nVal := 0, bGlobal := TRUE);
END_IF

und die HLI Funktion...


HLI_SetAxisCoupling := FALSE;
RETURN;

END_IF

IF bReset = TRUE THEN
pAC[SlaveAxis]^.addr^.McControlLr_Data.MCControlAxisCouplingUnit_AxisCoupling.AxisCouplingCommand.desc[descidx].AxisNumber := 0;
pAC[SlaveAxis]^.addr^.McControlLr_Data.MCControlAxisCouplingUnit_AxisCoupling.AxisCouplingCommand.desc[descidx].CouplingMode := 0;

pAC[SlaveAxis]^.addr^.McControlLr_Data.MCControlAxisCouplingUnit_AxisCoupling.AxisCouplingCommand.X_Semaphor := TRUE;
ELSIF bEnable = TRUE THEN
pAC[SlaveAxis]^.addr^.McControlLr_Data.MCControlAxisCouplingUnit_AxisCoupling.AxisCouplingCommand.desc[descidx].AxisNumber := MasterAxis;
pAC[SlaveAxis]^.addr^.McControlLr_Data.MCControlAxisCouplingUnit_AxisCoupling.AxisCouplingCommand.desc[descidx].CouplingMode := 2;

pAC[SlaveAxis]^.addr^.McControlLr_Data.MCControlAxisCouplingUnit_AxisCoupling.AxisCouplingCommand.X_Semaphor := TRUE;
END_IF

HLI_SetAxisCoupling := TRUE;
 
Zurück
Oben