예제 #1
0
        private void OperateTwoPump()
        {
            var speed     = GetPumpSpeed();
            var direction = GetDirection();

            if (speed.value - _prevSpeed.value > 50)
            {
                _prevSpeed       = speed;
                _prevSpeed.value = speed.value / 2;
                return;
            }

            if (PumpingSpeed != 0)
            {
                var sp = _speedGradeItems.Where(x => Math.Abs(PumpingSpeed - x.value) < 0.05).OrderByDescending(y => y.value).FirstOrDefault();
                _portInput.AddSpeed(direction == Direction.Clockwise ? GetPumpSpeed(PumpingSpeed).Speed : sp?.Speed);
                _portOutput.AddSpeed(direction == Direction.CounterClockwise ? GetPumpSpeed(PumpingSpeed).Speed : sp?.Speed);
                StartPump(true);
                StartPump(false);
                return;
            }

            if (!_isPumpActive || speed.value == 0 || (direction == Direction.Stop))
            {
                StopPump(true);
                StopPump(false);
                return;
            }
            switch (direction)
            {
            case Direction.Clockwise:
                _portInput.AddSpeed(speed.Speed);
                StartPump(true);
                _portOutput.AddSpeed("0.5 ");
                StopPump(false);
                SetInputSpeed?.Invoke(speed.Speed);
                SetOutputSpeed?.Invoke("0");
                break;

            case Direction.CounterClockwise:
                _portOutput?.AddSpeed(speed.Speed);
                StartPump(false);
                _portInput.AddSpeed("0.5 ");
                StopPump(true);
                SetInputSpeed?.Invoke("0");
                SetOutputSpeed?.Invoke(speed.Speed);
                break;

            default:
                StopPump(false);
                StopPump(true);
                SetInputSpeed?.Invoke("0");
                SetOutputSpeed?.Invoke("0");
                break;
            }

            _prevSpeed = speed;
        }
예제 #2
0
        private void OperatePump()
        {
            var speed = GetPumpSpeed().value > _prevSpeed.value ? GetNextSpeed(_prevSpeed.value) : GetPrevSpeed(_prevSpeed.value);

            if (!_isPumpActive)
            {
                StopPump(true);
                return;
            }
            if (speed == _prevSpeed)
            {
                if (Math.Abs(double.Parse(speed.Speed.Trim(), CultureInfo.InvariantCulture)) < 0.001)
                {
                    StopPump(true);
                }
            }
            else
            {
                _portInput?.AddSpeed(speed.Speed);
                SetInputSpeed?.Invoke(speed.Speed);
            }
            var direction = GetDirection();

            switch (direction)
            {
            case Direction.Stop:
                //_pumpSerial.AddStopPump();
                StopPump(true);
                break;

            case Direction.Clockwise:
                _portInput?.AddClockwiseDirection();
                break;

            case Direction.CounterClockwise:

                _portInput?.AddCounterClockwiseDirection();
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            if (speed.value != 0)
            {
                StartPump(true);
            }
            _prevSpeed = speed;
        }