Esempio n. 1
0
        public override int GetMotionIoSts(int cardId, int axisId, ref int sts)
        {
            int _sts, _rSts;

            _sts  = APS168.APS_motion_io_status(axisId);
            _rSts = 0;
            if (XConvert.BitEnable(_sts, XAPS_Define.MIO_ALM))
            {
                XConvert.SetBits(ref _rSts, XAPS_Define.MIO_ALM);
            }
            if (XConvert.BitEnable(_sts, XAPS_Define.MIO_EMG))
            {
                XConvert.SetBits(ref _rSts, XAPS_Define.MIO_MEL);
            }
            if (XConvert.BitEnable(_sts, XAPS_Define.MIO_ORG))
            {
                XConvert.SetBits(ref _rSts, XAPS_Define.MIO_ORG);
            }
            if (XConvert.BitEnable(_sts, XAPS_Define.MIO_PEL))
            {
                XConvert.SetBits(ref _rSts, XAPS_Define.MIO_PEL);
            }
            if (XConvert.BitEnable(_sts, XAPS_Define.MIO_SVON))
            {
                XConvert.SetBits(ref _rSts, XAPS_Define.MIO_SVON);
            }
            sts = _rSts;
            return(0);
        }
Esempio n. 2
0
        /// <summary>
        ///     是否停止移动
        /// </summary>
        /// <returns></returns>
        public bool IsDown(int axisNo, bool hasExtEncode = false)
        {
            var status = APS168.APS_motion_status(axisNo);

            //判断是否停止
            if (((status >> (int)APS_Define.MTS_NSTP) & 1) == 0)
            {
                return(false);
            }

            //判断是否正常停止
            if (((status >> (int)APS_Define.MTS_ASTP) & 1) == 1)
            {
                var reason = GetStopReason(axisNo);
                return(false);
            }

            //判断INP鑫海
            if (hasExtEncode)
            {
                var inp = APS168.APS_motion_io_status(axisNo);
                if (((inp >> (int)APS_Define.MIO_INP) & 1) == 0)
                {
                    return(false);
                }
            }

            return(true);
        }
Esempio n. 3
0
        private int GetMotionIoStatus(int axisNo)
        {
            var ret = APS168.APS_motion_io_status(axisNo);

            if (ret < 0)
            {
                ThrowIfResultError(ret);
            }
            return(ret);
        }
Esempio n. 4
0
        private int GetMotionIoStatus(int axisNo)
        {
            var ret = APS168.APS_motion_io_status(axisNo);

            //if (ret < 0)
            //{
            //    var innerMsg = "";
            //    innerMsg = GetErrorCodeDesc((APS_Define)ret);
            //    if (innerMsg != "No Error")
            //        MessageBox.Show(string.Format("APS_motion_io_status Error:{0}", innerMsg));
            //    //ThrowIfResultError(ret);
            //}
            return(ret);
        }
Esempio n. 5
0
        private void lblServoOn_Click(object sender, EventArgs e)
        {
            if (!_card0.IsLoadXmlFile)
            {
                MessageBox.Show("请先加载配置文件!");
                return;
            }

            _selectAxis = Convert.ToInt32(cmbSelectAxis.SelectedItem);
            var motionIoStatus = APS168.APS_motion_io_status(_selectAxis);
            var status         = (motionIoStatus & (1 << 7)) != 0;

            APS168.APS_set_servo_on(_selectAxis, Convert.ToInt32(!status));
        }
Esempio n. 6
0
        /// <summary>
        ///     检测指定轴的运动状态
        /// </summary>
        /// <param name="axisNo"></param>
        /// <param name="hasExtEncode">是否有编码器接入(步进电机无外部编码器)</param>
        /// <remarks>判断INP鑫海</remarks>
        public int CheckDone(int axisNo, double timeoutLimit, bool hasExtEncode = false)
        {
            var status = 0;
            var inp    = 1;

            var strtime = new Stopwatch();

            strtime.Start();

            do
            {
                //判断是否正常停止
                status = APS168.APS_motion_status(axisNo);
                if (((status >> (int)APS_Define.MTS_ASTP) & 1) == 1)
                {
                    return(-1);
                }
                status = (status >> (int)APS_Define.MTS_NSTP) & 1;

                //判断INP鑫海
                if (hasExtEncode)
                {
                    inp = APS168.APS_motion_io_status(axisNo);
                    inp = (inp >> (int)APS_Define.MIO_INP) & 1;
                }

                //break条件是否满足
                if ((status == 1) && (inp == 1))
                {
                    break;
                }

                //检查是否超时
                strtime.Stop();
                if (strtime.ElapsedMilliseconds / 1000.0 > timeoutLimit)
                {
                    APS168.APS_emg_stop(axisNo);
                    return(-2);
                }
                strtime.Start();

                //延时
                Thread.Sleep(20);
            } while (true);

            return(0);
        }
Esempio n. 7
0
        public void ServoOn(bool onOff)
        {
            bool status;

            if (IsInitialed == false)
            {
                return;
            }

            int motionIoStatusX = APS168.APS_motion_io_status(_selectAxisX);

            //if (motionIoStatusX == 0)
            {
                status = (motionIoStatusX & (1 << 7)) != 0;
                APS168.APS_set_servo_on(_selectAxisX, Convert.ToInt32(!status));
            }
            Thread.Sleep(100);
            int motionIoStatusY = APS168.APS_motion_io_status(_selectAxisY);
            //if (motionIoStatusY == 0)
            {
                status = (motionIoStatusY & (1 << 7)) != 0;
                APS168.APS_set_servo_on(_selectAxisY, Convert.ToInt32(!status));
            }
        }
Esempio n. 8
0
 public override void GetAxisIoData(uint axisindex, ref int value)
 {
     value = APS168.APS_motion_io_status((int)axisindex);
 }
Esempio n. 9
0
        /// <summary>
        /// To the home position.
        /// </summary>
        /// <returns>System.Int32.</returns>
        public override int ToHome()
        {
            int err = -1;

            err = APS168.APS_set_axis_param(mCardPara.AxisID, (Int32)APS_Define.PRA_HOME_MODE, 0); //Set home mode
            if (err != (Int32)APS_Define.ERR_NoError)
            {
                return(err);
            }
            err = APS168.APS_set_axis_param(mCardPara.AxisID, (Int32)APS_Define.PRA_HOME_DIR, 0); //Set home direction
            if (err != (Int32)APS_Define.ERR_NoError)
            {
                return(err);
            }

            err = APS168.APS_set_axis_param(mCardPara.AxisID, (Int32)APS_Define.PRA_HOME_CURVE, 0); // Set acceleration pattern (T-curve)
            if (err != (Int32)APS_Define.ERR_NoError)
            {
                return(err);
            }
            err = APS168.APS_set_axis_param(mCardPara.AxisID, (Int32)APS_Define.PRA_HOME_ACC, 2000000); //Set homing acceleration rate
            if (err != (Int32)APS_Define.ERR_NoError)
            {
                return(err);
            }
            err = APS168.APS_set_axis_param(mCardPara.AxisID, (Int32)APS_Define.PRA_HOME_VM, 200000); //Set homing maximum velocity.
            if (err != (Int32)APS_Define.ERR_NoError)
            {
                return(err);
            }
            err = APS168.APS_set_axis_param(mCardPara.AxisID, (Int32)APS_Define.PRA_HOME_VO, 200000); //Set homing leave home velocity
            if (err != (Int32)APS_Define.ERR_NoError)
            {
                return(err);
            }

            /*
             * err = APS168.APS_set_axis_param(axisID, (Int32)APS_Define.PRA_HOME_EZA, 0); // Set EZ signal alignment (yes or no)
             * if (err != (Int32)APS_Define.ERR_NoError) return err;
             * err = APS168.APS_set_axis_param(axisID, (Int32)APS_Define.PRA_HOME_SHIFT, 0); // Set home position shfit distance.
             * if (err != (Int32)APS_Define.ERR_NoError) return err;
             * err = APS168.APS_set_axis_param(axisID, (Int32)APS_Define.PRA_HOME_POS, 0); // Set final home position.
             * if (err != (Int32)APS_Define.ERR_NoError) return err;
             */
            /*
             * err = APS168.APS_set_axis_param_f(axisID, (Int32)APS_Define.PRA_HOME_CURVE, 0.5); //Set s-factor to 0.5
             * if (err != (Int32)APS_Define.ERR_NoError) return err;
             * err = APS168.APS_set_axis_param_f(axisID, (Int32)APS_Define.PRA_HOME_ACC, 10000.0); //Set homing acceleration rate
             * if (err != (Int32)APS_Define.ERR_NoError) return err;
             * err = APS168.APS_set_axis_param_f(axisID, (Int32)APS_Define.PRA_HOME_VM, 100000.0); //Set homing maximum velocity.
             * if (err != (Int32)APS_Define.ERR_NoError) return err;
             * err = APS168.APS_set_axis_param_f(axisID, (Int32)APS_Define.PRA_HOME_VO, 20000.0); //Set homing leave home velocity
             * if (err != (Int32)APS_Define.ERR_NoError) return err;
             */


            err = APS168.APS_home_move(mCardPara.AxisID);
            if (err != (Int32)APS_Define.ERR_NoError)
            {
                return(err);
            }

            Int32 check = -1;

            do
            {
                check = APS168.APS_motion_io_status(mCardPara.AxisID);
            }while(check != 0x88);



            return(err);
        }
Esempio n. 10
0
 /// <summary>
 /// Gets the status.
 /// </summary>
 /// <returns>System.Int32.</returns>
 public override int GetStatus()
 {
     return(APS168.APS_motion_io_status(mCardPara.AxisID));
 }
Esempio n. 11
0
        private void tmrUpdateUi_Tick(object sender, EventArgs e)
        {
            if (_card0.IsLoadXmlFile)
            {
                _selectAxis = Convert.ToInt32(cmbSelectAxis.SelectedItem);
                double d = 0;
                APS168.APS_get_position_f(_selectAxis, ref d);
                txtFeedbackPos.Text      = d.ToString("f0");
                txtFeedbackPosition.Text = d.ToString("f0");

                switch (tabControl1.SelectedTab.Name)
                {
                case "tabMotion":
                    int  index;
                    bool status;
                    int  motionIoStatus, motionStatus;
                    //刷新MotionIoStatus
                    motionIoStatus = APS168.APS_motion_io_status(_selectAxis);
                    foreach (var label in grpMotionIo.Controls.OfType <Label>())
                    {
                        if (label.BorderStyle == BorderStyle.FixedSingle)
                        {
                            index           = Convert.ToInt32(label.Tag);
                            status          = (motionIoStatus & (1 << index)) != 0;
                            label.BackColor = status ? Color.LawnGreen : Color.DimGray;
                        }
                    }

                    //刷新MotionStatus
                    motionStatus = APS168.APS_motion_status(_selectAxis);
                    foreach (var label in grpMotion.Controls.OfType <Label>())
                    {
                        if (label.BorderStyle == BorderStyle.FixedSingle)
                        {
                            index           = Convert.ToInt32(label.Tag);
                            status          = (motionStatus & (1 << index)) != 0;
                            label.BackColor = status ? Color.LawnGreen : Color.DimGray;
                        }
                    }

                    //刷新Feedback信息
                    double value = 0;
                    APS168.APS_get_command_f(_selectAxis, ref value);
                    txtCommandPosition.Text = value.ToString("f0");

                    //APS168.APS_get_position_f(_selectAxis, ref value);
                    //txtFeedbackPos.Text = value.ToString("f0");
                    //txtFeedbackPosition.Text = value.ToString("f0");

                    APS168.APS_get_target_position_f(_selectAxis, ref value);
                    txtTargetPosition.Text = value.ToString("f0");

                    APS168.APS_get_error_position_f(_selectAxis, ref value);
                    txtErrorPosition.Text = value.ToString("f0");

                    APS168.APS_get_command_velocity_f(_selectAxis, ref value);
                    txtCommandVelocity.Text = value.ToString("f0");

                    APS168.APS_get_feedback_velocity_f(_selectAxis, ref value);
                    txtFeedbackVelocity.Text = value.ToString("f0");


                    //刷新ServoOn, motionIoStatus第7位
                    status = (motionIoStatus & (1 << 7)) != 0;
                    lblServoOn.BackColor = status ? Color.LawnGreen : Color.DimGray;

                    //刷新JOG正 和 JOG负
                    var jogPostive  = (motionStatus & (1 << 15)) != 0 && (motionStatus & (1 << 4)) != 0;
                    var jogNegative = (motionStatus & (1 << 15)) != 0 && (motionStatus & (1 << 4)) == 0;
                    lblJogPostive.BackColor  = jogPostive ? Color.LawnGreen : Color.DimGray;
                    lblJogNegative.BackColor = jogNegative ? Color.LawnGreen : Color.DimGray;
                    break;

                case "tabIo":
                    var diValue = 0;
                    APS168.APS_read_d_input(_card0.CardId, 0, ref diValue);
                    foreach (var label in grpDi.Controls.OfType <Label>())
                    {
                        if (label.BorderStyle == BorderStyle.FixedSingle)
                        {
                            index           = Convert.ToInt32(label.Tag);
                            status          = (diValue & (1 << index)) != 0;
                            label.BackColor = status ? Color.LawnGreen : Color.DimGray;
                        }
                    }


                    var doValue = 0;
                    APS168.APS_read_d_output(_card0.CardId, 0, ref doValue);
                    foreach (var label in grpDo.Controls.OfType <Label>())
                    {
                        if (label.BorderStyle == BorderStyle.FixedSingle)
                        {
                            index           = Convert.ToInt32(label.Tag);
                            status          = (doValue & (1 << index)) != 0;
                            label.BackColor = status ? Color.LawnGreen : Color.DimGray;
                        }
                    }

                    break;

                case "tabTrigger":
                {
                    var count = 0;
                    APS168.APS_get_trigger_count(0, 0, ref count);
                    txtTriggerCount0.Text = count.ToString();

                    APS168.APS_get_trigger_count(0, 1, ref count);
                    txtTriggerCount1.Text = count.ToString();
                }
                break;

                case "tabPtline":
                {
                    if (_ptEnabled)
                    {
                        txtTotalPoint.Text    = _bufTotalPoint.ToString();
                        txtBufFreeSpace.Text  = _bufFreeSpace.ToString();
                        txtbufUsageSpace.Text = _bufUsageSpace.ToString();
                        txtRunningCnt.Text    = _bufRunningCnt.ToString();
                    }
                }
                break;
                }
            }
        }