Example #1
0
        public YAxis(IDriveSettingRepository driveSettingRepository, IEmergencyStop emergencyStop, IGpioControllerFacade gpioControllerFacade)
            : base(driveSettingRepository, emergencyStop)
        {
            var drivePins = new DrivePins
            {
                EnablePin          = 22,
                DirectionPin       = 5,
                StepPin            = 6,
                ReferenceSwitchPin = 21
            };

            _stepperDriveControl = new StepperDriveControl(drivePins, gpioControllerFacade);

            _defaultDriveSetting = new DriveSetting
            {
                DriveName                 = Name,
                MaxSpeed                  = new Speed(80, SpeedUnit.MillimeterPerSecond),
                Acceleration              = new Acceleration(80, AccelerationUnit.MillimeterPerSecondSquared),
                SpindlePitch              = new Length(8, LengthUnit.Millimeter),
                StepsPerRevolution        = 400,
                SoftwareLimitMinus        = new Length(0.1, LengthUnit.Millimeter),
                SoftwareLimitPlus         = new Length(141.1, LengthUnit.Millimeter),
                ReverseDirection          = false,
                ReferenceDrivingDirection = DrivingDirection.Negative,
                ReferencePosition         = new Length(0, LengthUnit.Millimeter),
                ReferenceDrivingSpeed     = new Speed(3.5, SpeedUnit.MillimeterPerSecond)
            };
        }
Example #2
0
        public AutomaticMode(IShotGlassPositionSettingRepository shotGlassPositionSettingRepository,
                             IXAxis xAxis,
                             IYAxis yAxis,
                             ISpiritDispenserControl spiritDispenserControl,
                             IEmergencyStop emergencyStop)
        {
            _currentStatus = new BehaviorSubject <Status>(Status.NotReady);
            _shotGlassPositionSettingRepository = shotGlassPositionSettingRepository;
            _X_Axis = xAxis;
            _Y_Axis = yAxis;
            _spiritDispenserControl = spiritDispenserControl;
            _emergencyStop          = emergencyStop;
            _emergencyStop.EmergencyStopPressedChanged += (estop) => CalculateStatuts();

            var components = new List <IObservable <Status> >();

            components.Add(_X_Axis.GetStatusObservable());
            components.Add(_Y_Axis.GetStatusObservable());
            components.Add(_spiritDispenserControl.GetStatusObservable());


            components.CombineLatest(lastStates => lastStates.All(state => state == Status.Ready))
            .Subscribe(areComponentsReady =>
            {
                _areComponentsReady = areComponentsReady;
                CalculateStatuts();
            });
        }
Example #3
0
 protected AbstractAxis(IDriveSettingRepository driveSettingRepository, IEmergencyStop emergencyStop)
 {
     (_driveSettingRepository, _emergencyStop) = (driveSettingRepository, emergencyStop);
     _stopDrivingTokenSource = new CancellationTokenSource();
     _currentStatus          = new BehaviorSubject <Status>(emergencyStop.EmergencyStopPressed ? Status.Error : Status.NotReady);
     _drivingTask            = Task.Run(() =>
     {
         // just to intialize the member, so no exception is thrown when emergency stop is pressed
     });
     _emergencyStop.EmergencyStopPressedChanged += EmergencyStopPressedChanged;
 }
Example #4
0
        public SpiritDispenserControl(ISpiritDispenserSettingRepository dispenserSettingRepository, IEmergencyStop emergencyStop, IGpioControllerFacade gpioControllerFacade)
        {
            _name = "SpiritDispenser";
            (_spiritDispenserSettingRepository, _emergencyStop) = (dispenserSettingRepository, emergencyStop);

            _spiritSpenderMotor = new LinearMotor(forwardGpioPin: 18, backwardGpioPin: 23, gpioControllerFacade: gpioControllerFacade);

            _currentStatus             = new BehaviorSubject <Status>(emergencyStop.EmergencyStopPressed ? Status.Error : Status.NotReady);
            CurrentPosition            = SpiritDispenserPosition.Undefined;
            _cancelMovementTokensource = new CancellationTokenSource();
            emergencyStop.EmergencyStopPressedChanged += EmergencyStopPressedChanged;
        }
Example #5
0
 public TestingController(IDriveSettingRepository driveSettingRepository, IEmergencyStop emergencyStop)
 {
     _driveSettingsRepo = driveSettingRepository;
     _emergencyStop     = emergencyStop;
 }