public void BoundaryCheck()
        {
            if (HSTMachine.Workcell.HSTSettings.Install.OperationMode == OperationMode.Simulation)
            {
                return;
            }

            try
            {
                double dMoveDownPos = _teachPointRecipe.InputEEPickHeight;//lowest position in operation range

                if (HSTMachine.Workcell.HSTSettings.Install.EnableDebugLog)
                {
                    Log.Info(this, "InputEE Axis before move position:{0}, Target position:{1}, Acce:{2}, Dece:{3}, Vel:{4}", _InputEndEffectorZAxis.GetActualPosition(), dMoveDownPos, _axesProfile.InputEEZ.Acceleration, _axesProfile.InputEEZ.Deceleration, _axesProfile.InputEEZ.Velocity);
                }

                if (!_workcell.IsIgnoreHomeAxisForByPass)
                {
                    _InputEndEffectorZAxis.MoveAbsolute(_axesProfile.InputEEZ.Acceleration, _axesProfile.InputEEZ.Velocity, dMoveDownPos, _moveTimeout);

                    while (_InputEndEffectorZAxis.GetActualPosition() < dMoveDownPos - 10)
                    {
                        MessageBox.Show(string.Format("{0}: Actual Position not tally with target position after move done", this));
                        if (HSTMachine.Workcell.HSTSettings.Install.EnableDebugLog)
                        {
                            Log.Info(this, "InputEEMoveZAxis. _InputEndEffectorZAxis.GetActualPosition():{0} targetposition:{1}", _InputEndEffectorZAxis.GetActualPosition(), dMoveDownPos);
                        }
                        Thread.Sleep(100);
                    }
                }

                if (HSTMachine.Workcell.HSTSettings.Install.EnableDebugLog)
                {
                    Log.Info(this, "InputEE Axis after move position:{0}, Target position:{1}, Acce:{2}, Dece:{3}, Vel:{4}", _InputEndEffectorZAxis.GetActualPosition(), dMoveDownPos, _axesProfile.InputEEZ.Acceleration, _axesProfile.InputEEZ.Deceleration, _axesProfile.InputEEZ.Velocity);
                }
            }
            catch (Exception ex)
            {
                HSTException.Throw(HSTErrors.InputHandlerZAxisMoveDownError, ex);
            }

            try
            {
                double dMoveUpPos = _teachPointRecipe.InputEESafeHeight;//highest position in operation range

                if (HSTMachine.Workcell.HSTSettings.Install.EnableDebugLog)
                {
                    Log.Info(this, "InputEE Axis before move position:{0}, Target position:{1}, Acce:{2}, Dece:{3}, Vel:{4}", _InputEndEffectorZAxis.GetActualPosition(), dMoveUpPos, _axesProfile.InputEEZ.Acceleration, _axesProfile.InputEEZ.Deceleration, _axesProfile.InputEEZ.Velocity);
                }

                if (!_workcell.IsIgnoreHomeAxisForByPass)
                {
                    _InputEndEffectorZAxis.MoveAbsolute(_axesProfile.InputEEZ.Acceleration, _axesProfile.InputEEZ.Velocity, dMoveUpPos, _moveTimeout);

                    while (_InputEndEffectorZAxis.GetActualPosition() > dMoveUpPos + 10)
                    {
                        MessageBox.Show(string.Format("{0}: Actual Position not tally with target position after move done", this));
                        if (HSTMachine.Workcell.HSTSettings.Install.EnableDebugLog)
                        {
                            Log.Info(this, "InputEE MoveZAxis. _InputEndEffectorZAxis.GetActualPosition():{0} targetposition:{1}", _InputEndEffectorZAxis.GetActualPosition(), dMoveUpPos);
                        }
                        Thread.Sleep(100);
                    }
                }

                if (HSTMachine.Workcell.HSTSettings.Install.EnableDebugLog)
                {
                    Log.Info(this, "InputEE Axis after move position:{0}, Target position:{1}, Acce:{2}, Dece:{3}, Vel:{4}", _InputEndEffectorZAxis.GetActualPosition(), dMoveUpPos, _axesProfile.InputEEZ.Acceleration, _axesProfile.InputEEZ.Deceleration, _axesProfile.InputEEZ.Velocity);
                }
            }
            catch (Exception ex)
            {
                HSTException.Throw(HSTErrors.InputHandlerZAxisMoveUpError, ex);
            }
        }