예제 #1
0
        public enuPositionerStatus SetAxisAbsolutePosition(enuAxes _axis, double _position)
        {
            if (Settings.AutoValidateParam)
            {
                if (ValidateAxisAbsolutePosition(_axis, ref _position) != enuPositionerStatus.Ready)
                {
                    return(mPosStatus);
                }

                double mSpeed = 0;
                if (GetAxisSpeed(_axis, ref mSpeed) != enuPositionerStatus.Ready)
                {
                    return(mPosStatus);
                }

                if (ValidateAxisSpeed(_axis, ref mSpeed) != enuPositionerStatus.Ready)
                {
                    return(mPosStatus);
                }
            }

            if (mPosStatus == enuPositionerStatus.Ready)
            {
                HWStatus = LogError(Positioner.MoveAbsSingleAxis(AxisIndex(_axis), _position, true));
                //if (HWStatus == enuHWStatus.Ready) mPosStatus = enuPositionerStatus.Ready;
            }
            return(mPosStatus);
        }
        public enuHWStatus Connect()
        {
            hwStatus = enuHWStatus.NotInitialized;

            _serialPort           = new SerialPort();
            _serialPort.PortName  = "COM" + Convert.ToString(Settings.COMPort);
            _serialPort.BaudRate  = Settings.Baudrate;
            _serialPort.Parity    = Settings.Parity;
            _serialPort.DataBits  = Settings.Databits;
            _serialPort.StopBits  = Settings.StopBits;
            _serialPort.Handshake = Settings.Handshake;
            //todo auto eacho parameter
            _serialPort.ReadTimeout  = 500;
            _serialPort.WriteTimeout = 500;
            //Bind the events on the following event handler
            _serialPort.ErrorReceived += new SerialErrorReceivedEventHandler(SerialErrorReceived);
            _serialPort.DataReceived  += new SerialDataReceivedEventHandler(DataReceivedHandler);

            _serialPort.Open();
            _serialPort.DiscardInBuffer();
            _serialPort.DiscardOutBuffer();

            if (Status().HasFlag(enuPumpStatus.Ready))
            {
                hwStatus = enuHWStatus.Ready;
            }
            else
            {
                log.Add("Could not initiate pump!");
            }
            return(hwStatus);
        }
예제 #3
0
        private enuHWStatus RemeasureAxes(int _axis)
        {
            enuHWStatus stat = enuHWStatus.Ready;

            stat |= LogError(Positioner.RMeasureEx(Convert.ToInt16(Math.Pow(_axis, 2))));
            return(stat);
        }
        public enuHWStatus Connect()
        {
            hwStatus             = enuHWStatus.NotInitialized;
            _serialPort          = new SerialPort();
            _serialPort.PortName = "COM" + Convert.ToString(Settings.COMPort);
            _serialPort.BaudRate = Settings.Baudrate;
            _serialPort.Parity   = Settings.Parity;
            _serialPort.DataBits = Settings.Databits;
            _serialPort.StopBits = Settings.StopBits;
            //todo auto eacho parameter
            _serialPort.ReadTimeout  = 500;
            _serialPort.WriteTimeout = 500;
            //Bind the events on the following event handler
            _serialPort.ErrorReceived += new SerialErrorReceivedEventHandler(SerialErrorReceived);
            _serialPort.DataReceived  += new SerialDataReceivedEventHandler(DataReceivedHandler);

            _serialPort.Open();
            _serialPort.DiscardInBuffer();
            _serialPort.DiscardOutBuffer();

            if (true) //todo: check RS232 connection status
            {
                InitTransducerChannels();
                hwStatus = enuHWStatus.Ready;
            }
            else
            {
                log.Add("Could not initiate sensor!", "Error");
            }
            return(hwStatus);
        }
예제 #5
0
 public enuPositionerStatus SetSpeeds(Position _speeds)
 {
     if (mPosStatus == enuPositionerStatus.Ready)
     {
         HWStatus = LogError(Positioner.SetVel(_speeds.X, _speeds.Y, _speeds.Z, 0));
     }
     return(mPosStatus);
 }
예제 #6
0
 public enuPositionerStatus GetAxisAbsolutePosition(enuAxes _axis, ref double _pos)
 {
     if (mPosStatus == enuPositionerStatus.Ready)
     {
         HWStatus = LogError(Positioner.GetPosSingleAxis(AxisIndex(_axis), ref _pos));
     }
     return(mPosStatus);// mPosStatus was modified by HWStatus already
 }
예제 #7
0
        public enuPositionerStatus SetAbsolutePosition(Position _pos)
        {
            if (mPosStatus == enuPositionerStatus.Ready)
            {
                if (Settings.AutoValidateParam)
                {
                    if (ValidateAbsolutePosition(ref _pos) != enuPositionerStatus.Ready)
                    {
                        return(mPosStatus);                                                                // mPosStatus was modified by ValidateAbsolutePosition already
                    }
                    Position nspeeds = new Position();
                    if (GetSpeeds(ref nspeeds) != enuPositionerStatus.Ready)
                    {
                        return(mPosStatus);                                                     // mPosStatus was modified by GetSpeeds already
                    }
                    if (ValidateSpeeds(ref nspeeds) != enuPositionerStatus.Ready)
                    {
                        return(mPosStatus);                                                         // mPosStatus was modified by ValidateSpeeds already
                    }
                    if (SetSpeeds(nspeeds) != enuPositionerStatus.Ready)
                    {
                        return(mPosStatus);                                                // mPosStatus was modified by SetSpeeds already
                    }
                }

                // if new Z-Position is higher retract z first
                double nZ = double.NaN;
                double mZ = _pos.Z; // remeber the desired z-coordinate
                if (GetAxisAbsolutePosition(enuAxes.ZAxis, ref nZ) != enuPositionerStatus.Ready)
                {
                    return(mPosStatus); // mPosStatus was modified by GetAxisAbsolutePosition already
                }
                if (mZ <= nZ)           //the desired height is lower, than the actual
                {
                    _pos.Z   = nZ;      //write the current Z-coordinate in the position to move
                    HWStatus = LogError(Positioner.MoveAbs(_pos.X, _pos.Y, _pos.Z, 0, true));
                    if (HWStatus != enuHWStatus.Ready)
                    {
                        return(mPosStatus);                               // move XY while not changing Z
                    }
                    if (SetAxisAbsolutePosition(enuAxes.ZAxis, mZ) != enuPositionerStatus.Ready)
                    {
                        return(mPosStatus);                                                                         //and move Z
                    }
                }
                else
                {
                    if (SetAxisAbsolutePosition(enuAxes.ZAxis, _pos.Z) != enuPositionerStatus.Ready)
                    {
                        return(mPosStatus);                                                                             //move Z first
                    }
                    HWStatus = LogError(Positioner.MoveAbs(_pos.X, _pos.Y, _pos.Z, 0, true));
                }
            }
            return(mPosStatus);
        }
예제 #8
0
        public enuPositionerStatus GetSpeeds(ref Position _speeds)
        {
            double X = 0, Y = 0, Z = 0, A = 0;

            if (mPosStatus == enuPositionerStatus.Ready)
            {
                HWStatus = LogError(Positioner.GetVel(ref X, ref Y, ref Z, ref A));
            }
            if (mPosStatus == enuPositionerStatus.Ready)
            {
                _speeds = new Position(X, Y, Z, A);
            }
            return(mPosStatus);// mPosStatus was modified by HWStatus already
        }
예제 #9
0
 public enuPositionerStatus SetAxisSpeed(enuAxes _axis, double _speed)
 {
     if (mPosStatus == enuPositionerStatus.Ready)
     {
         if (Settings.AutoValidateParam)
         {
             if (ValidateAxisSpeed(_axis, ref _speed) != enuPositionerStatus.Ready)
             {
                 return(mPosStatus);                                                                                               // mPosStatus was modified by ValidateAxisSpeed already
             }
         }
         HWStatus = LogError(Positioner.SetVelSingleAxis(AxisIndex(_axis), _speed));
     }
     return(mPosStatus);  // mPosStatus was modified by HWStatus already
 }
예제 #10
0
        public enuPositionerStatus GetAbsolutePosition(ref Position _pos)
        {
            double X = 0, Y = 0, Z = 0, A = 0;

            if (mPosStatus == enuPositionerStatus.Ready)
            {
                HWStatus = LogError(Positioner.GetPos(ref X, ref Y, ref Z, ref A));
            }
            if (mPosStatus == enuPositionerStatus.Ready)
            {
                _pos.X = X;
                _pos.Y = Y;
                _pos.Z = Z;
                _pos.A = A;
            }
            return(mPosStatus);
        }
예제 #11
0
        private enuHWStatus ReCalibrateAxes(int _axis)
        {
            //            calibrate
            // mHWStatus |= LogError(Positioner.SetCalibRMAccel(&XD, &YD, &ZD, &AD)); //Stellt Beschleunigung ab, die für den Kalibriervorgang verwendet werden soll. eingestellten Dimension/s²
            //                measure
            //            Setzen der Verfahrgeschwindigkeiten die für das Herausfahren aus den Endschaltern
            //während des Kalibriervorgangs bzw. des Tischhubmessens verwendet
            //werden sollen.
            enuHWStatus stat = LogError(Positioner.SetCalibRMBackSpeed(500, 500, 500, 500)); //µm/s

            //            Setzen der Verfahrgeschwindigkeiten, welche während des Kalibriervorgangs
            //verwendet werden sollen.
            stat |= LogError(Positioner.SetCalibRMVel(1000, 1000, 1000, 1000));//µm/s

            //          Funktion zum Setzen eines Kalibrier - Offsets, der beim Kalibrieren nach dem
            //Freifahren des Enschalters gefahren wird.
            stat |= LogError(Positioner.SetCalibOffset(1000, 1000, 1000, 1000));

            //Funktion zum Starten der Kalibrierroutine einer einzelnen Achse.
            stat |= LogError(Positioner.CalibrateEx(Convert.ToInt16(Math.Pow(_axis, 2))));
            return(stat);
        }
예제 #12
0
 public enuPositionerStatus SetAxisRelativePosition(enuAxes _axis, double _increment)
 {
     if (mPosStatus == enuPositionerStatus.Ready)
     {
         if (Settings.AutoValidateParam)
         {
             if (ValidateAxisRelativeMovement(_axis, ref _increment) != enuPositionerStatus.Ready)
             {
                 return(mPosStatus);                                                                                 // mPosStatus was modified by ValidateAxisRelativeMovement already
             }
             double mSpeed = 0;
             if (GetAxisSpeed(_axis, ref mSpeed) != enuPositionerStatus.Ready)
             {
                 return(mPosStatus);                                                              // mPosStatus was modified by GetAxisSpeed already
             }
             if (ValidateAxisSpeed(_axis, ref mSpeed) != enuPositionerStatus.Ready)
             {
                 return(mPosStatus);                                                                  // mPosStatus was modified by ValidateAxisSpeed already
             }
         }
         HWStatus = LogError(Positioner.MoveRelSingleAxis(AxisIndex(_axis), _increment, true));
     }
     return(mPosStatus);  // mPosStatus was evtl. modified by HWStatus already
 }
예제 #13
0
        public enuPositionerStatus GetAxisSpeed(enuAxes _axis, ref double _speed)
        {
            double X = 0, Y = 0, Z = 0, A = 0;

            _speed = 0;
            if (mPosStatus == enuPositionerStatus.Ready)
            {
                HWStatus = LogError(Positioner.GetVel(ref X, ref Y, ref Z, ref A));
            }
            if (mPosStatus == enuPositionerStatus.Ready) // mPosStatus was modified by HWStatus already
            {
                switch (_axis)
                {
                case enuAxes.XAxis:
                    _speed = X;
                    break;

                case enuAxes.YAxis:
                    _speed = Y;
                    break;

                case enuAxes.ZAxis:
                    _speed = Z;
                    break;

                case enuAxes.AAxis:
                    _speed = A;
                    break;

                default:
                    mPosStatus = enuPositionerStatus.Error;
                    break;
                }
            }
            return(mPosStatus);
        }
예제 #14
0
 public enuPositionerStatus StopMovement()
 {
     HWStatus = LogError(Positioner.StopAxes());
     return(mPosStatus);
 }
예제 #15
0
 public enuPositionerStatus AxisStop(enuAxes _axis)
 {
     // mHWStatus = LogError(Positioner.SetAbortFlag());
     HWStatus = LogError(Positioner.StopAxes());
     return(mPosStatus);
 }