Beispiel #1
0
        public double GetPos(ushort NodeID)
        {
            if (CardNo.Count == 0)
            {
                return(0.0);
            }
            int    pos     = 0;
            double codepos = 0.0;

            if (!GetPara(NodeID).IsServoMotor)
            {
                CPCI_DMC.CS_DMC_01_get_command(CardNo[0], NodeID, 0, ref pos);
            }
            else
            {
                CPCI_DMC.CS_DMC_01_get_position(CardNo[0], NodeID, 0, ref pos);
            }
            codepos = (double)pos / GetPara(NodeID).MotorScale;
            return(codepos);
        }
Beispiel #2
0
        private void timer1_Tick(object sender, EventArgs e)
        {
            //Motion status
            int    cmd = 0, pos = 0;
            short  spd = 0;
            ushort i, MC_done = 0;
            uint   MC_status = 0, err = 0;

            gnodeid = ushort.Parse(cmbNodeID.Text);

            if (chktimer.Checked)
            {
                //Status
                rc = CPCI_DMC.CS_DMC_01_get_command(gCardNo, gnodeid, 0, ref cmd);             //Command
                if (rc == 0)
                {
                    txtcommand.Text = cmd.ToString();
                }
                rc = CPCI_DMC.CS_DMC_01_get_position(gCardNo, gnodeid, 0, ref pos);            //Feedback
                if (rc == 0)
                {
                    txtfeedback.Text = pos.ToString();
                }
                rc = CPCI_DMC.CS_DMC_01_get_rpm(gCardNo, gnodeid, 0, ref spd);       //Speed
                if (rc == 0)
                {
                    txtspeed.Text = spd.ToString();
                }
                rc = CPCI_DMC.CS_DMC_01_motion_status(gCardNo, gnodeid, 0, ref MC_status);         //Motion done
                if (rc == 0)
                {
                    txtmotion.Text = "&H" + Convert.ToString(MC_status, 16);
                }
                rc = CPCI_DMC.CS_DMC_01_get_alm_code(gCardNo, gnodeid, 0, ref err);
                if (rc == 0)
                {
                    txtERR.Text = err.ToString();
                }
            }
        }
Beispiel #3
0
        public void working()
        {
            int Amount = Convert.ToInt32(txtAmount.Text);

            for (int i = 0; i < Amount; i++)
            {
                //ktrRpm1.Clear();
                //ktrRpm2.Clear();
                //ktrTorque1.Clear();
                //ktrTorque2.Clear();
                //motorRpm1.Clear();
                //motorRpm2.Clear();
                //motorTorque1.Clear();
                //motorTorque2.Clear();
                chart1.Series[0].Points.Clear();
                chart2.Series[0].Points.Clear();
                chart3.Series[0].Points.Clear();
                chart4.Series[0].Points.Clear();
                chart5.Series[0].Points.Clear();
                chart6.Series[0].Points.Clear();
                chart7.Series[0].Points.Clear();
                chart8.Series[0].Points.Clear();
                bool boolGo = true;
                newturn = true;
                rc      = CPCI_DMC.CS_DMC_01_get_command(gCardNo, node2, 0, ref cmd1);
                rc      = CPCI_DMC.CS_DMC_01_start_tr_move(gCardNo, node2, 0, (int)(OneCirclePluse * TransmissionRate), 0, Convert.ToInt32(2133.3333 * -Int16.Parse(txtRpm1.Text)), 0.1, 0.1);
                while (true)
                {
                    showMotorState();
                    saveMotorData();
                    showChart();
                    limitSend("000000000006" + "010204000001");
                    limitX0Listen();
                    limitSend("000000000006" + "010204010001");
                    limitX1Listen();
                    label30.Text = X0Message;
                    if (X1Message == "01-02-01-01" & boolGo)
                    {
                        rc = CPCI_DMC.CS_DMC_01_set_velocity_mode(gCardNo, node1, 0, 0.1, 0.1);
                        rc = CPCI_DMC.CS_DMC_01_set_velocity(gCardNo, node1, 0, Int32.Parse(txtRpm2.Text));
                    }
                    else if (X1Message == "01-02-01-00")
                    {
                        rc     = CPCI_DMC.CS_DMC_01_set_velocity_mode(gCardNo, node1, 0, 0.1, 0.1);
                        rc     = CPCI_DMC.CS_DMC_01_set_velocity(gCardNo, node1, 0, 0);
                        boolGo = false;
                    }
                    else if (X1Message == "01-02-01-01" & !boolGo & X0Message != "01-02-01-00")
                    {
                        rc = CPCI_DMC.CS_DMC_01_set_velocity_mode(gCardNo, node1, 0, 0.1, 0.1);
                        rc = CPCI_DMC.CS_DMC_01_set_velocity(gCardNo, node1, 0, -Int32.Parse(txtRpm2.Text));
                    }
                    else if (X0Message == "01-02-01-00" & !boolGo)
                    {
                        KtrBoolClear = true;
                        label29.Text = "in";
                        showMotorState();
                        rc = CPCI_DMC.CS_DMC_01_set_velocity_mode(gCardNo, node1, 0, 0.1, 0.1);
                        rc = CPCI_DMC.CS_DMC_01_set_velocity(gCardNo, node1, 0, 0);
                        Thread.Sleep(500);
                        CPCI_DMC.CS_DMC_01_set_position(gCardNo, node1, 0, 0);
                        CPCI_DMC.CS_DMC_01_set_command(gCardNo, node1, 0, 0);
                        //CPCI_DMC.CS_DMC_01_set_position(gCardNo, node2, 0, 0);
                        //CPCI_DMC.CS_DMC_01_set_command(gCardNo, node2, 0, 0);
                        break;
                    }
                }
            }
        }