1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | METHOD ProcessInputs : BOOL VAR {attribute 'noinit'} di: DINT; dwActPos: DWORD; dwActPos := sc.dwActPos; IF dwEncoderCounterModulo<>0 THEN di := DWORD_TO_DINT(dwActPos - dwOldActPosition); IF di > DWORD_TO_DINT(dwEncoderCounterModulo/2) THEN dwPosOffset := dwPosOffset - dwEncoderCounterModulo; ELSIF di < -DWORD_TO_DINT(dwEncoderCounterModulo/2) THEN dwPosOffset := dwPosOffset + dwEncoderCounterModulo; END_IF dwOldActPosition := dwActPos; dwActPosition := dwPosOffset + dwActPos; ELSE dwActPosition := dwActPos; END_IF IF iMovementType = 0 THEN fActPosition := SMC_ConvertActPositionForResiduals(dw:=dwActPosition, pDrive:=this); IF bErrorAckn THEN bError := FALSE; bErrorAckn:=FALSE; bRegulatorRealState := sc.bRegulatorOn; bDriveStartRealState := bDriveStart; |