Einschalten wStW1.0 := 0; // Ein wStW1.1 := 0; // Nicht Austrudel wStW1.2 := 0; // Kein Schnellhalt wStW1.3 := 0; // Betrieb freigeben wSTW1.4 := 0; // EPOS nicht Verwerfen wSTW1.5 := 0; // EPOS kein Zwischenhalt wSTW1.6 := 0; // EPOS Verfahrauftrag aktivieren 0 -> 1 iNSoll_A := 0; IF rtStart.Q AND bInfeedEnabled THEN bDone := FALSE; nActualPosition := 0; nTargetPosition := LREAL_TO_DINT(nActualPosition + (nIncrPerRev * fMMToGo / fMMPerRev)); nState := 10; END_IF IF rtMFunctionStart.Q AND bInfeedEnabled THEN bDone := FALSE; nActualPosition := 0; nTargetPosition := LREAL_TO_DINT(nActualPosition + (nIncrPerRev * CNCSystem.Channel[0].M[nMEnable].nArgument_r / fMMPerRev)); nState := 10; END_IF 10: // Warten auf Einschaltbereit -> Betriebsbereit wStW1.0 := 0; // Ein wStW1.1 := 1; // Nicht Austrudel wStW1.2 := 1; // Kein Schnellhalt wStW1.3 := 1; // Betrieb freigeben wSTW1.4 := 1; // Hochlaufgeber freigeben wSTW1.5 := 1; // Hochlaufgeber starten wSTW1.6 := 1; // Sollwerte Freigeben IF wZSW1.0 THEN // Einschaltbereit nState := 20; END_IF 20: // Warten auf Betriebsbereit wStW1.0 := 1; // Ein wStW1.1 := 1; // Nicht Austrudel wStW1.2 := 1; // Kein Schnellhalt wStW1.3 := 1; // Betrieb freigeben wSTW1.4 := 1; // Hochlaufgeber freigeben wSTW1.5 := 1; // Hochlaufgeber starten wSTW1.6 := 1; // Sollwerte Freigeben IF wZSW1.1 THEN // Betriebsbereit nState := 25; END_IF 25: // Warten auf pollagenidentifikation tonPollage(IN := TRUE, PT := T#500MS); IF tonPollage.Q THEN tonPollage(IN := FALSE); nState := 30; END_IF 30: // Betriebsbereit -> Bewegungsparameter setzen wStW1.0 := 1; // Ein wStW1.1 := 1; // Nicht Austrudel wStW1.2 := 1; // Kein Schnellhalt wStW1.3 := 1; // Betrieb freigeben wSTW1.4 := 1; // Hochlaufgeber freigeben wSTW1.5 := 1; // Hochlaufgeber starten wSTW1.6 := 1; // Sollwerte Freigeben // Berechnung des Ausgabewertes iNSoll_A := LREAL_TO_INT((16384 * fNSoll) / 1500); IF nActualPosition >= nTargetPosition THEN iNSoll_A := 0; nState := 40; END_IF 40: // Ausschalten wStW1.0 := 0; // Ein wStW1.1 := 1; // Nicht Austrudel wStW1.2 := 1; // Kein Schnellhalt wStW1.3 := 1; // Betrieb freigeben wSTW1.4 := 0; // Hochlaufgeber freigeben wSTW1.5 := 0; // Hochlaufgeber starten wSTW1.6 := 0; // Sollwerte Freigeben IF NOT wZSW1.1 THEN nState := 0; CNCSystem.Channel[0].M[nMEnable].bState_rw := FALSE; bDone := TRUE; END_IF 99: // Fehler IF ftError.Q OR (wZSW1.3 = 0) THEN nState := 0; END_IF END_CASE (* ReadGroupOffset := 16#0FA60000; fbADSRead( NETID := '172.18.236.82.5.17', PORT := ReadPort, IDXGRP := ReadGroup, IDXOFFS := ReadGroupOffset, LEN := ReadLen, DESTADDR := ADR(ReadAdsDest), READ := bTest, TMOUT := T#1S); *) (* ReadAdsDest := 1; fbADSWrite( NETID := '172.18.236.82.5.17', PORT := ReadPort, IDXGRP := ReadGroup, IDXOFFS := ReadGroupOffset, LEN := 1, SRCADDR := ADR(ReadAdsDest), WRITE := bTest, TMOUT := T#1S); *) uiSTW1 := WORD_TO_UINT(wStw1);]]>