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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | IF hIecTask = SysTypes.RTS_INVALID_HANDLE THEN RETURN; END_IF CASE eState OF StepperControl_STATE.INIT: //Set IO-Pins IF eControlType = StepperControlType.DIRECT THEN IF iA > 0 THEN GVL.GPIO.aeType[iA] := GPIOType.O; END_IF IF iA_ > 0 THEN GVL.GPIO.aeType[iA_] := GPIOType.O; IF iB > 0 THEN GVL.GPIO.aeType[iB] := GPIOType.O; IF iB_ > 0 THEN GVL.GPIO.aeType[iB_] := GPIOType.O; GVL.GPIO.SetType(); ELSE IF iPuls > 0 THEN GVL.GPIO.aeType[iPuls] := GPIOType.O; IF iDir > 0 THEN GVL.GPIO.aeType[iDir] := GPIOType.O; IF iDisable > 0 THEN GVL.GPIO.aeType[iDisable] := GPIOType.O; IF iEnable > 0 THEN GVL.GPIO.aeType[iEnable] := GPIOType.O; xHalfStep := FALSE; gvl.GPIO.SetPulsDir(i := iDir, on := xDir); END_IF //Get Task-Handle SysTask.SysTaskGetCurrent(ADR(hTask)); IF hTask <> SysTypes.RTS_INVALID_HANDLE THEN eState := StepperControl_STATE.OPERATION; t := LTIME(); StepperControl_STATE.OPERATION: // measure time since last call tAlt := t; tCycle := t - tAlt; IF lrFreq <> 0 THEN IF lrMaxFreq > 0 THEN {a9ed5b7e-75c5-4651-af16-d2c27e98cb94} VAR_INPUT eControlType:StepperControlType;//control type : direct (A, A_,B, B_) or puls/dir iA, iA_, iB, iB_ : INT := -1; //GPIO pins for direct control iDisable, iEnable: INT :=-1; //GPIO pins for power control xHalfStep: BOOL; //Motor takes half steps not full steps if True END_VAR tCycle: LTIME; VAR eState: StepperControl_STATE := StepperControl_STATE.INIT; dwCounterStep: DWORD; hTask: SysTypes.RTS_IEC_HANDLE := SysTypes.RTS_INVALID_HANDLE; //current Byte of the Array //GPIO-Assignments xPuls ,xDir : BOOL := TRUE; t: LTIME; stSleepUs: SYSTIME; //step time //set time for the task and last value udiSetTimeSum: UDINT; lrLastFreq: LREAL; pApp : POINTER TO APPLICATION; sTaskName: STRING := 'Task_StepperControl'; uiInstance : UINT; uiInstanceCounter: UINT; udiResult: RTS_IEC_RESULT; xStep: BOOL; 2056 {8e575c5b-1d37-49c6-941b-5c0ec7874787} ChildObjectGuids AddAttributeSubsequent |