Esempio n. 1
0
        /// <summary>
        /// 查询指定轴的状态, 是正在运动,或者运动停止,处于空闲状态。
        /// </summary>
        /// <returns></returns>
        public override uint IsMotionDone(PCI9014AxisInfo axisinfo)
        {
            int nRes = 0;

            nRes = CPci9014.p9014_get_motion_status(axisinfo.No, ref axisinfo.isBusy);
            if (nRes != 0)
            {
                return(2);
            }
            else
            {
                return(axisinfo.isBusy);
            }
        }
Esempio n. 2
0
        private void timer1_Tick(object sender, EventArgs e)
        {
            int    cmd_pos = 0, enc_pos = 0;
            uint   motion_status = 0, io_status = 0;
            double cur_vel = 0.0f;

            CPci9014.p9014_get_motion_status(m_axis, ref motion_status);
            CPci9014.p9014_get_io_status(m_axis, ref io_status);
            CPci9014.p9014_get_current_speed(m_axis, ref cur_vel);
            CPci9014.p9014_get_pos(m_axis, 0, ref cmd_pos);
            CPci9014.p9014_get_pos(m_axis, 1, ref enc_pos);

            textBox6.Text = Convert.ToString(cur_vel);
            textBox7.Text = Convert.ToString(motion_status);
            textBox8.Text = Convert.ToString(cmd_pos);
            textBox9.Text = Convert.ToString(enc_pos);

            //PEL
            if ((io_status % 2) == 1)
            {
                textBox10.Text = "ON";
            }
            else
            {
                textBox10.Text = "OFF";
            }

            //MEL
            if (((io_status >> 1) % 2) == 1)
            {
                textBox11.Text = "ON";
            }
            else
            {
                textBox11.Text = "OFF";
            }

            //EMG
            if (((io_status >> 4) % 2) == 1)
            {
                textBox12.Text = "OFF";
            }
            else
            {
                textBox12.Text = "ON";
            }
        }
Esempio n. 3
0
        public override void GetIOState(PCI9014AxisInfo axinfo)
        {
            int    cmd_pos = 0, enc_pos = 0;
            uint   motion_status = 0, io_status = 0;
            double cur_vel = 0.0;

            CPci9014.p9014_get_motion_status(axinfo.No, ref motion_status);
            CPci9014.p9014_get_io_status(axinfo.No, ref io_status);
            CPci9014.p9014_get_current_speed(axinfo.No, ref cur_vel);
            CPci9014.p9014_get_pos(axinfo.No, 0, ref cmd_pos);
            //CPci9014.p9014_get_pos(axinfo.No, 1, ref enc_pos);
            axinfo.isBusy = motion_status == 1 ? (uint)1 : (uint)0;

            axinfo.fLimit = (io_status % 2) == 1 ? true : false;
            axinfo.rLimit = ((io_status >> 1) % 2) == 1 ? true : false;
            axinfo.oRG    = ((io_status >> 2) % 2) == 1 ? true : false;
            //axinfo.Ez = ((io_status >> 3) % 2) == 1 ? true : false;
            axinfo.eMG = ((io_status >> 4) % 2) == 1 ? true : false;
            axinfo.dir = (int)io_status % 2 >> 5;

            axinfo.curSpeed = cur_vel;
            axinfo.curPos   = cmd_pos;
            //axinfo.EncoderPos = enc_pos;
        }