public void Initialize()
 {
    this.requestedControlMode = ElmoWhistleMotor.ControlModes.singleLoopPosition;
    this.requestedMode = ElmoWhistleMotor.Modes.undefined;
    this.requestedVelocity = 0;
    this.requestedCurrent = 0;
 }
Example #2
0
 private void InitializeReelMotor()
 {
    this.reelMotor.Initialize();
    this.reelRequestedControlMode = ElmoWhistleMotor.ControlModes.singleLoopPosition;
    this.reelRequestedMode = ElmoWhistleMotor.Modes.undefined;
    this.reelRequestedCurrent = 0;
    this.reelRequestedSpeed = 0;
 }
Example #3
0
      private void UpdateReelMotor()
      {
         if (null == this.reelMotor.FaultReason)
         {
            ElmoWhistleMotor.ControlModes neededControlMode = ElmoWhistleMotor.ControlModes.singleLoopPosition;
            ElmoWhistleMotor.Modes neededMode = ElmoWhistleMotor.Modes.current;
            double neededValue = 0;
            bool modeChange = false;

            if (ReelModes.off == this.reelModeSetPoint)
            {
               neededControlMode = ElmoWhistleMotor.ControlModes.singleLoopPosition;
               neededMode = ElmoWhistleMotor.Modes.off;
               neededValue = 0;
            }
            else if (ReelModes.reverse == this.reelModeSetPoint)
            {
               if (MovementForwardControls.current == ParameterAccessor.Instance.ReelMotionMode)
               {
                  neededControlMode = ElmoWhistleMotor.ControlModes.singleLoopPosition;
                  neededMode = ElmoWhistleMotor.Modes.current;
                  neededValue = ParameterAccessor.Instance.ReelReverseCurrent.OperationalValue;
               }
               else
               {
                  neededControlMode = ElmoWhistleMotor.ControlModes.singleLoopPosition;
                  neededMode = ElmoWhistleMotor.Modes.velocity;
                  neededValue = ParameterAccessor.Instance.ReelReverseSpeed.OperationalValue * ParameterAccessor.Instance.ReelVelocityToRpm;
               }
            }
            else if (ReelModes.locked == this.reelModeSetPoint)
            {
               neededControlMode = ElmoWhistleMotor.ControlModes.microStepper;
               neededValue = ParameterAccessor.Instance.ReelLockCurrent.OperationalValue;
            }
            else if (ReelModes.manual == this.reelModeSetPoint)
            {
               if (MovementForwardControls.current == ParameterAccessor.Instance.ReelMotionMode)
               {
                  neededControlMode = ElmoWhistleMotor.ControlModes.singleLoopPosition;
                  neededMode = ElmoWhistleMotor.Modes.current;
                  neededValue = this.reelManualCurrentSetPoint * -1;
               }
               else
               {
                  neededControlMode = ElmoWhistleMotor.ControlModes.singleLoopPosition;
                  neededMode = ElmoWhistleMotor.Modes.velocity;
                  neededValue = this.reelManualSpeedSetPoint * -1 * ParameterAccessor.Instance.ReelVelocityToRpm;
               }
            }

            if ((neededControlMode != this.reelRequestedControlMode) ||
                (neededMode != this.reelRequestedMode))
            {
               bool requestedZero = false;
               bool atZero = false;

               if (((ElmoWhistleMotor.ControlModes.microStepper == this.reelRequestedControlMode) && (0 == this.reelRequestedCurrent)) ||
                   ((ElmoWhistleMotor.ControlModes.singleLoopPosition == this.reelRequestedControlMode) && (ElmoWhistleMotor.Modes.undefined == this.reelRequestedMode)) ||
                   ((ElmoWhistleMotor.ControlModes.singleLoopPosition == this.reelRequestedControlMode) && (ElmoWhistleMotor.Modes.off == this.reelRequestedMode)) ||
                   ((ElmoWhistleMotor.ControlModes.singleLoopPosition == this.reelRequestedControlMode) && (ElmoWhistleMotor.Modes.current == this.reelRequestedMode) && (0 == this.reelRequestedCurrent)) ||
                   ((ElmoWhistleMotor.ControlModes.singleLoopPosition == this.reelRequestedControlMode) && (ElmoWhistleMotor.Modes.velocity == this.reelRequestedMode) && (0 == this.reelRequestedSpeed)))
               {
                  requestedZero = true;
               }

               if (((ElmoWhistleMotor.ControlModes.microStepper == this.reelRequestedControlMode) && (0 == this.reelMotor.Torque)) ||
                   ((ElmoWhistleMotor.ControlModes.singleLoopPosition == this.reelRequestedControlMode) && (ElmoWhistleMotor.Modes.undefined == this.reelRequestedMode)) ||
                   ((ElmoWhistleMotor.ControlModes.singleLoopPosition == this.reelRequestedControlMode) && (ElmoWhistleMotor.Modes.off == this.reelRequestedMode)) ||
                   ((ElmoWhistleMotor.ControlModes.singleLoopPosition == this.reelRequestedControlMode) && (ElmoWhistleMotor.Modes.current == this.reelRequestedMode) && (0 == this.reelMotor.Torque)) ||
                   ((ElmoWhistleMotor.ControlModes.singleLoopPosition == this.reelRequestedControlMode) && (ElmoWhistleMotor.Modes.velocity == this.reelRequestedMode) && (0 == this.reelMotor.RPM)))
               {
                  atZero = true;
               }

               if ((false == requestedZero) || (false == atZero))
               {
                  neededValue = 0;
               }
               else
               {
                  this.reelMotor.SetControlMode(neededControlMode);
                  this.reelRequestedControlMode = neededControlMode;

                  if (ElmoWhistleMotor.ControlModes.singleLoopPosition == this.reelRequestedControlMode)
                  {
                     this.reelMotor.SetMode(neededMode);
                     this.reelRequestedMode = neededMode;
                  }
                  else
                  {
                     // mode assignment not needed for Micro Stepper mode
                     this.reelRequestedMode = neededMode;
                  }

                  Tracer.WriteMedium(TraceGroup.TBUS, null, "{0} control={1} mode={2}", this.reelMotor.Name, this.reelRequestedControlMode, this.reelRequestedMode);
                  modeChange = true;
               }
            }

            if (((neededControlMode == this.reelRequestedControlMode) && (neededMode == this.reelRequestedMode)) ||
                (0 == neededValue))
            {
               if (ElmoWhistleMotor.ControlModes.singleLoopPosition == this.reelRequestedControlMode)
               {
                  if (ElmoWhistleMotor.Modes.current == this.reelRequestedMode)
                  {
                     if ((neededValue != this.reelRequestedCurrent) || (false != modeChange))
                     {
                        float torqueCurrent = (float)neededValue;
                        this.reelMotor.SetTorque(torqueCurrent);
                        this.reelRequestedCurrent = neededValue;
                        Tracer.WriteMedium(TraceGroup.TBUS, null, "{0} current {1}", this.reelMotor.Name, neededValue);
                     }
                  }
                  else if (ElmoWhistleMotor.Modes.velocity == this.reelRequestedMode)
                  {
                     if ((neededValue != this.reelRequestedSpeed) || (false != modeChange))
                     {
                        int velocity = (int)((neededValue > 0) ? (neededValue + 0.55) : (neededValue - 0.55));
                        this.reelMotor.SetVelocity(velocity);
                        this.reelRequestedSpeed = neededValue;
                        Tracer.WriteMedium(TraceGroup.TBUS, null, "{0} speed {1:0.000} {2}", this.reelMotor.Name, neededValue, velocity);
                     }
                  }
               }
               else if (ElmoWhistleMotor.ControlModes.microStepper == this.reelRequestedControlMode)
               {
                  if ((neededValue != this.reelRequestedCurrent) || (false != modeChange))
                  {
                     float torqueCurrent = (float)neededValue;
                     this.reelMotor.SetStepperCurrent(torqueCurrent);
                     this.reelRequestedCurrent = neededValue;
                     Tracer.WriteMedium(TraceGroup.TBUS, null, "{0} lock current {1}", this.reelMotor.Name, neededValue);
                  }
               }
            }
         }
      }
Example #4
0
 private void InitializeRearPump()
 {
    this.rearPumpSpeedReading = 0;
    PumpControl.Rear.Initialize();
    this.rearPumpRequestedMode = ElmoWhistleMotor.Modes.off;
    this.rearPumpRequestedSpeed = 0;
 }