|
|
@@ -22,19 +22,21 @@ namespace PunkHPX8_RT.Modules.PlatingCell
|
|
|
StartBiDirection,
|
|
|
LoopStart,
|
|
|
LoopStartRotation,
|
|
|
- LoopRotationWait,
|
|
|
- LoopStopRotation,
|
|
|
- LoopCheckStopRotation,
|
|
|
+ LoopStartRotationEnd,
|
|
|
+ //LoopRotationWait,
|
|
|
+ //LoopStopRotation,
|
|
|
+ //LoopCheckStopRotation,
|
|
|
LoopUpdateRemain1,
|
|
|
LoopReverseRotationStart,
|
|
|
- LoopReverseRotationWait,
|
|
|
- LooPStopRevserseRotation,
|
|
|
- LoopCheckStopReverseRotation,
|
|
|
+ LoopReverseRotationEnd,
|
|
|
+ //LoopReverseRotationWait,
|
|
|
+ //LooPStopRevserseRotation,
|
|
|
+ //LoopCheckStopReverseRotation,
|
|
|
LoopUpdateRemain2,
|
|
|
LoopEnd,
|
|
|
StartRemainRotation,
|
|
|
- RemainRotationDelay,
|
|
|
- StopRemainRotation,
|
|
|
+ //RemainRotationDelay,
|
|
|
+ //StopRemainRotation,
|
|
|
CheckStopRemainRotation,
|
|
|
End
|
|
|
}
|
|
|
@@ -103,20 +105,22 @@ namespace PunkHPX8_RT.Modules.PlatingCell
|
|
|
Runner.Run(BiDirectionStep.StartBiDirection, NullFun, _delay_1ms)
|
|
|
.LoopStart(BiDirectionStep.LoopStart, "Rotation Bi-Direction Step Start", _cycleCount, NullFun, _delay_1ms)
|
|
|
.LoopRunIf(BiDirectionStep.LoopStartRotation, _cycleCount > 0,() => { return StratRotation(true); }, _delay_1ms)
|
|
|
- .LoopDelayIf(BiDirectionStep.LoopRotationWait, _cycleCount > 0, _frequency * 1000)
|
|
|
- .LoopRunIf(BiDirectionStep.LoopStopRotation, _cycleCount > 0, _rotationAxis.StopPositionOperation,_delay_1ms)
|
|
|
- .LoopRunIfWithStopStatus(BiDirectionStep.LoopCheckStopRotation, _cycleCount > 0, CheckRotationPositionStatus, CheckRotationPositionRunStop)
|
|
|
+ .LoopRunIfWithStopStatus(BiDirectionStep.LoopStartRotationEnd, _cycleCount > 0, CheckRotationPositionStatus, CheckRotationPositionRunStop)
|
|
|
+ //.LoopDelayIf(BiDirectionStep.LoopRotationWait, _cycleCount > 0, _frequency * 1000)
|
|
|
+ //.LoopRunIf(BiDirectionStep.LoopStopRotation, _cycleCount > 0, _rotationAxis.StopPositionOperation,_delay_1ms)
|
|
|
+ //.LoopRunIfWithStopStatus(BiDirectionStep.LoopCheckStopRotation, _cycleCount > 0, CheckRotationPositionStatus, CheckRotationPositionRunStop)
|
|
|
.LoopRunIf(BiDirectionStep.LoopUpdateRemain1, _cycleCount > 0, UpdateRemain, _delay_1ms)
|
|
|
.LoopRunIf(BiDirectionStep.LoopReverseRotationStart, _remainTimes != 0, () => { return StratRotation(false); }, _delay_1ms)
|
|
|
- .LoopDelayIf(BiDirectionStep.LoopReverseRotationWait, _remainTimes != 0, _frequency * 1000)
|
|
|
- .LoopRunIf(BiDirectionStep.LooPStopRevserseRotation, _remainTimes != 0, _rotationAxis.StopPositionOperation, _delay_1ms)
|
|
|
- .LoopRunIfWithStopStatus(BiDirectionStep.LoopCheckStopReverseRotation, _remainTimes != 0, CheckRotationPositionStatusWithStateupdate, CheckRotationPositionRunStop)
|
|
|
+ .LoopRunIfWithStopStatus(BiDirectionStep.LoopReverseRotationEnd, _cycleCount > 0, CheckRotationPositionStatus, CheckRotationPositionRunStop)
|
|
|
+ //.LoopDelayIf(BiDirectionStep.LoopReverseRotationWait, _remainTimes != 0, _frequency * 1000)
|
|
|
+ //.LoopRunIf(BiDirectionStep.LooPStopRevserseRotation, _remainTimes != 0, _rotationAxis.StopPositionOperation, _delay_1ms)
|
|
|
+ //.LoopRunIfWithStopStatus(BiDirectionStep.LoopCheckStopReverseRotation, _remainTimes != 0, CheckRotationPositionStatusWithStateupdate, CheckRotationPositionRunStop)
|
|
|
//.LoopRunIf(BiDirectionStep.LoopUpdateRemain2, _remainTimes != 0,UpdateRemain, _delay_1ms)
|
|
|
.LoopEnd(BiDirectionStep.LoopEnd, NullFun, _delay_1ms)
|
|
|
//剩余旋转时间(如果翻转次数是偶数,则正转,否则反转)
|
|
|
- .RunIf(BiDirectionStep.StartRemainRotation, _extralTime !=0, () => { return _reverseTimes % 2 == 0 ? StratRotation(true): StratRotation(false); }, _delay_1ms)
|
|
|
- .DelayIf(BiDirectionStep.RemainRotationDelay, _extralTime != 0, _extralTime * 1000)
|
|
|
- .RunIf(BiDirectionStep.StopRemainRotation, _extralTime != 0, _rotationAxis.StopPositionOperation, _delay_1ms)
|
|
|
+ .RunIf(BiDirectionStep.StartRemainRotation, _extralTime !=0, () => { return _reverseTimes % 2 == 0 ? StratRemainRotation(true, _extralTime) : StratRemainRotation(false, _extralTime); }, _delay_1ms)
|
|
|
+ //.DelayIf(BiDirectionStep.RemainRotationDelay, _extralTime != 0, _extralTime * 1000)
|
|
|
+ //.RunIf(BiDirectionStep.StopRemainRotation, _extralTime != 0, _rotationAxis.StopPositionOperation, _delay_1ms)
|
|
|
.WaitWithStopConditionIf(BiDirectionStep.CheckStopRemainRotation, _extralTime != 0, CheckRotationPositionStatus, CheckRotationPositionRunStop)
|
|
|
.End(BiDirectionStep.End, NullFun, _delay_1ms);
|
|
|
return Runner.Status;
|
|
|
@@ -135,11 +139,33 @@ namespace PunkHPX8_RT.Modules.PlatingCell
|
|
|
bool result = false;
|
|
|
if (isforwardRotate)
|
|
|
{
|
|
|
- result = _rotationAxis.ProfilePosition(TARGETPOSITION, _speed * SPEED_RATIO * 6, 0, 0);
|
|
|
+ result = _rotationAxis.ProfilePosition((int)(_rotationAxis.MotionData.MotorPosition + _speed * SPEED_RATIO * 6 * _frequency), _speed * SPEED_RATIO * 6, 0, 0);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- result = _rotationAxis.ProfilePosition(-TARGETPOSITION, _speed * SPEED_RATIO * 6, 0, 0);
|
|
|
+ result = _rotationAxis.ProfilePosition((int)(_rotationAxis.MotionData.MotorPosition - _speed * SPEED_RATIO * 6 * _frequency), _speed * SPEED_RATIO * 6, 0, 0);
|
|
|
+ }
|
|
|
+ if (!result)
|
|
|
+ {
|
|
|
+ NotifyError(eEvent.ERR_PLATINGCELL, "Start Rotation is failed", 0);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ /// <summary>
|
|
|
+ /// rotation开始旋转
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ private bool StratRemainRotation(bool isforwardRotate,int time)
|
|
|
+ {
|
|
|
+ bool result = false;
|
|
|
+ if (isforwardRotate)
|
|
|
+ {
|
|
|
+ result = _rotationAxis.ProfilePosition(_speed * SPEED_RATIO * 6 * time, _speed * SPEED_RATIO * 6, 0, 0);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ result = _rotationAxis.ProfilePosition(-(_speed * SPEED_RATIO * 6 * time), _speed * SPEED_RATIO * 6, 0, 0);
|
|
|
}
|
|
|
if (!result)
|
|
|
{
|