GVL_OEM.byteOutputSpindlePin2.2, bKonusReiniung => GVL_OEM.byteOutputSpindlePin4.2, bATCOn => GVL_OEM.byteOutputSpindlePin2.1, bATCOff => GVL_OEM.byteOutputSpindlePin4.1); GVL_HMI.iSpindleLoadPercent := GVL_OEM.iSpindleLoad / 10; fbWZW( bExecute := CNCSystem.Channel[0].M[10].bState_rw, bExecutePreselect := GVL_ToolMgmt.bExecuteToolPrep, bReset := PLCReset, bSpindleInPosition := TRUE, bPreselectOnly := FALSE, uiToolPocket := GVL_ToolMgmt.stToolToPrep.pos, bInfeedActive := PRG_Einspeisung.bInfeedActive, bSpindleOpen := fbSpindel.bSpindleOpen); rtToolChangeDone(CLk := fbWZW.bDone); IF rtToolChangeDone.Q AND CNCSystem.Channel[0].M[10].bState_rw THEN CNCSystem.Channel[0].M[10].bState_rw := FALSE; END_IF fbZentralschmierung( bCmdStartCycle := GVL_Debug.bStartLubricationCycle OR bDebug, bCycleSensor := GVL_OEM.byteInputSpindlePin2.4, bBusy => GVL_Debug.bLubricationActive, bReset := PLCReset); // MMS über M-Befehl IF CNCSystem.Channel[0].M[8].bState_rw THEN bMMSEnabled := TRUE; CNCSystem.Channel[0].M[8].bState_rw := FALSE; END_IF IF CNCSystem.Channel[0].M[9].bState_rw THEN bMMSEnabled := FALSE; CNCSystem.Channel[0].M[9].bState_rw := FALSE; END_IF // MMS über taster rtToggleMMS(CLK := GVL_Debug.bToggleMMS); IF rtToggleMMS.Q THEN bMMSEnabled := NOT bMMSEnabled; END_IF // Dissable MMS on Reset IF PLCReset THEN bMMSEnabled := FALSE; END_IF GVL_Debug.bMMSActive := bMMSEnabled; fbMMS(bEnable := bMMSEnabled); // Absaugung fbAbsaugtopf( bCmdTopfHoch := GVL_Debug.bAbsaugungHoch, bCmdTopfRunter := GVL_Debug.bAbsaugungRunter, bReset := PLCReset, bSensorKlemmungInaktiv := GVL_OEM.byteInputSpindlePin4.6, bSensorKlemmungAktiv := GVL_OEM.byteInputSpindlePin2.5, bSensorTopfUnten := GVL_OEM.byteInputSpindlePin2.3, bSensorTopfOben := GVL_OEM.byteInputSpindlePin4.5, bVentilTopfRunter => GVL_OEM.byteOutputSpindlePin4.3, bVentilKlemmungAus => GVL_OEM.byteOutputSpindlePin2.6); fbAnschlag( bEnable := GVL_HMI.bEnableStepper OR PLCAxisEnable, bReset := PLCReset, bCmdStartHoming := GVL_HMI.bStartHoming OR fbAbsaugtopf.bHomingKlemmung, bCmdPosition := fbAbsaugtopf.bBewegeKlemmung, fTargetPosition := fbAbsaugtopf.fPositionKlemmung, bHomeSwitch := GVL_OEM.byteInputSpindlePin2.7, bHomed => fbAbsaugtopf.bKlemmungReferenziert, bDone => fbAbsaugtopf.bBewegungKlemmungFertig); // Staubsauger fbStaubsauger( bToggleEnable := GVL_Debug.bStaubsauger, bVacuumOn => GVL_Debug.bStaubsaugerOn); // Vakuumpumpe fbVakuumpumpe( bToggle := GVL_OEM.bBtnToggleVakuumpumpe); // Vakuumfeldsteuerung fbVakuumfelder( bExecuteHMI := GVL_HMI.bExecVacFieldChange, nFieldNumber := GVL_HMI.bSelectedField); // Papiervorschub GVL_OEM.uiEncoderValuePaper := GVL_OEM.byteInputEncoder0; GVL_OEM.uiEncoderValuePaper := SHL(GVL_OEM.uiEncoderValuePaper,8) + GVL_OEM.byteInputEncoder1; fbWickler( bInfeedEnabled := PRG_Einspeisung.bInfeedActive, bReset := PLCReset, uiEncoderValue := GVL_OEM.uiEncoderValuePaper); PRG_Safety(); PRG_Master_Slave(); PRG_Debug(); // Druckluftüberwachung fbDruckluft( bDruckluftOk := GVL_OEM.byteInputDruckluft0.0, bSpindleStopped := fbSpindel.bSpindleStopped); // Werkzeugtausch behandlung PRG_Platztausch(); // Aktuelles Werkzeug in der Spindel speichern GVL_ToolMgmt.diToolInSpindle := GVL_OEM.pVe^.ToolInSpindle; // Tote M-Befehle quittieren IF CNCSystem.Channel[0].M[45].bState_rw THEN CNCSystem.Channel[0].M[45].bState_rw := FALSE; END_IF IF CNCSystem.Channel[0].M[21].bState_rw THEN CNCSystem.Channel[0].M[21].bState_rw := FALSE; END_IF IF CNCSystem.Channel[0].M[22].bState_rw THEN CNCSystem.Channel[0].M[22].bState_rw := FALSE; END_IF IF CNCSystem.Channel[0].M[71].bState_rw THEN CNCSystem.Channel[0].M[71].bState_rw := FALSE; END_IF IF CNCSystem.Channel[0].M[72].bState_rw THEN CNCSystem.Channel[0].M[72].bState_rw := FALSE; END_IF (* OEM program end *) END_IF (* Reset the reset flag from HMI *) PLCReset := FALSE;]]>