_rSetpoint, xInTarget=> _xRampGenInTarget); // Calculate target tolerance _rPVTargetMax := _rSetpoint + stMotorConfig.rTargetTolerance; _rPVTargetMin := _rSetpoint - stMotorConfig.rTargetTolerance; // ============= // Handle alarms // ============= _fbMCBTrippedDelayedSignal( xSignal:= (NOT xMCBOk), xRelease:= stMotorConfig.xHasMCBFeedback AND xReleaseErrors, timOnDelay:= , timOffDelay:= , xReleaseSignal=> ); // ================ // Reset error flag // ================ // ================================ // Copy internal signals to outputs // ================================ udiControlword := DWORD_TO_UDINT(_dwControlword); xError := _xError; // ================== // Handle HMI outputs // ==================]]> 0 THEN _xProcessINTLKOk := FALSE; END_IF // Check safety interlocks // Safety interlocks will not automatically reset // They need to be reset via the xConfirmAlarms input IF ((wSafetyINTLK AND wSafetyINTLKUsed) XOR wSafetyINTLKUsed) > 0 THEN _xSafetyINTLKOk := FALSE; END_IF]]>