Пример #1
0
 /// <summary>
 ///     回零
 /// </summary>
 /// <param name="axisNo"></param>
 /// <param name="homeMode">回原点方式</param>
 /// <param name="DirMode">0:DIR_CW,1:DIR_CCW</param>
 public override void BackHome(short axisNo, short HomeMode, short Org, short Ez, short EZcount, short erc
                               , VelocityCurve velocityCurveParams, double ORGOffset, uint DirMode)
 {
     //设置速度
     SetAxisHomeVelocity(axisNo, velocityCurveParams);
     Motion.mAcm_AxHome(m_Axises[axisNo], (uint)HomeMode, DirMode);
 }
Пример #2
0
 /// <summary>
 ///     单轴绝对运动
 /// </summary>
 /// <param name="axisNo"></param>
 /// <param name="position"></param>
 /// <param name="velocityCurveParams"></param>
 public override void AbsoluteMove(short axisNo, double position, VelocityCurve velocityCurveParams)
 {
     //设置速度
     SetAxisVelocity(axisNo, velocityCurveParams);
     //启动运动
     Motion.mAcm_AxMoveAbs(m_Axises[axisNo], position);
 }
Пример #3
0
        /// <summary>
        ///  设置轴速度
        /// </summary>
        /// <param name="axisNo"></param>
        /// <param name="pulseNum"></param>
        /// <param name="velocityCurveParams"></param>
        public void SetAxisHomeVelocity(int axisNo, VelocityCurve velocityCurveParams)
        {
            var ret = Motion.mAcm_SetF64Property(m_Axises[axisNo], (uint)PropertyID.PAR_AxVelLow, velocityCurveParams.Strvel);

            if (ret != (uint)ErrorCode.SUCCESS)
            {
                return;
            }
            ret = Motion.mAcm_SetF64Property(m_Axises[axisNo], (uint)PropertyID.PAR_AxVelHigh, velocityCurveParams.Maxvel);
            if (ret != (uint)ErrorCode.SUCCESS)
            {
                return;
            }
            ret = Motion.mAcm_SetF64Property(m_Axises[axisNo], (uint)PropertyID.PAR_AxAcc, velocityCurveParams.Tacc);
            if (ret != (uint)ErrorCode.SUCCESS)
            {
                return;
            }
            ret = Motion.mAcm_SetF64Property(m_Axises[axisNo], (uint)PropertyID.PAR_AxDec, velocityCurveParams.Tdec);
            if (ret != (uint)ErrorCode.SUCCESS)
            {
                return;
            }
            ret = Motion.mAcm_SetF64Property(m_Axises[axisNo], (uint)PropertyID.PAR_AxJerk, (int)velocityCurveParams.VelocityCurveType);
            if (ret != (uint)ErrorCode.SUCCESS)
            {
                return;
            }
        }
Пример #4
0
        /// <summary>
        ///     反向移动。
        /// </summary>
        public override void Negative()
        {
            var velocityCurve = new VelocityCurve {
                Maxvel = (Speed ?? 0) * Transmission.EquivalentPulse
            };

            ApsController.ContinuousMove(NoId, MoveDirection.Negative, velocityCurve);
        }
Пример #5
0
        /// <summary>
        ///     单轴绝对运动
        /// </summary>
        /// <param name="axisNo"></param>
        /// <param name="pulseNum"></param>
        /// <param name="velocityCurveParams"></param>
        public void MoveAbsPulse(int axisNo, int pulseNum, VelocityCurve velocityCurveParams)
        {
            //设置速度
            SetAxisVelocity(axisNo, velocityCurveParams);

            //启动运动
            APS168.APS_absolute_move(axisNo, pulseNum, (int)velocityCurveParams.Maxvel);
        }
Пример #6
0
 /// <summary>
 ///     运动轴相对移动到指定位置。
 /// </summary>
 /// <param name="value">要移动到的距离。</param>
 /// <param name="velocityCurve"></param>
 public override void MoveDelta(double value, VelocityCurve velocityCurve = null)
 {
     if (!isCondition)
     {
         return;
     }
     ApsController.RelativeMove(NoId, (int)value, velocityCurve);
 }
Пример #7
0
        /// <summary>
        ///     单轴相对运动
        /// </summary>
        /// <param name="axisNo"></param>
        /// <param name="pulseNum"></param>
        /// <param name="velocityCurveParams"></param>
        /// <returns></returns>
        public override void RelativeMove(short axisNo, double position, VelocityCurve velocityCurveParams)
        {
            //设置速度
            SetAxisVelocity(axisNo, velocityCurveParams);

            //启动运动
            APS168.APS_relative_move(axisNo, (int)position, (int)velocityCurveParams.Maxvel);
        }
Пример #8
0
        /// <summary>
        ///     单轴绝对运动
        /// </summary>
        /// <param name="axisNo"></param>
        /// <param name="pulseNum"></param>
        /// <param name="velocityCurveParams"></param>
        public override void AbsoluteMove(short axisNo, double pulseNum, VelocityCurve velocityCurveParams)
        {
            //设置速度
            SetAxisVelocity(axisNo, velocityCurveParams);

            //启动运动
            APS168.APS_absolute_move(axisNo, (int)pulseNum, (int)velocityCurveParams.Maxvel);
        }
Пример #9
0
        /// <summary>
        ///     运动轴相对移动到指定位置。
        /// </summary>
        /// <param name="value">要移动到的距离。</param>
        /// <param name="velocityCurve"></param>
        public override void MoveDelta(double value, VelocityCurve velocityCurve = null)
        {
            var Data     = value * Transmission.EquivalentPulse;
            var velocity = velocityCurve;

            velocity.Maxvel = velocityCurve.Maxvel * Transmission.EquivalentPulse;
            ApsController.MoveRelPulse(NoId, (int)Data, velocity);
            velocity.Maxvel /= Transmission.EquivalentPulse;
        }
Пример #10
0
 private void SetAxisVelocity(int axisNo, VelocityCurve velocityCurveParams)
 {
     //设置速度
     //if (velocityCurveParams.Sfac != 0)
     //{
     //SetAxisParam(axisNo, (int) APS_Define.PRA_SF, velocityCurveParams.Sfac);
     SetAxisParam(axisNo, (int)APS_Define.PRA_ACC, velocityCurveParams.Svacc);
     SetAxisParam(axisNo, (int)APS_Define.PRA_DEC, velocityCurveParams.Svdec);
     //}
 }
Пример #11
0
        public override void BackHome(short axisNo, short HomeMode, short Org, short Ez, short EZcount, short erc
                                      , VelocityCurve velocityCurveParams, double ORGOffset, uint DirMode)
        {
            var ret = Motion._8164_set_home_config(axisNo, HomeMode, Org, Ez, EZcount, erc);

            ThrowIfResultError(ret);
            ret = Motion._8164_home_search(axisNo, velocityCurveParams.Strvel, velocityCurveParams.Maxvel,
                                           velocityCurveParams.Tacc, ORGOffset);
            ThrowIfResultError(ret);
        }
Пример #12
0
 private void button1_Click(object sender, EventArgs e)
 {
     try {
         var velocityCurve = new VelocityCurve {
             Maxvel = m_Axis.Speed ?? 0
         };
         double Value = Convert.ToDouble(textBox1.Text);
         m_Axis.MoveTo(Value, velocityCurve);
     }
     catch { }
 }
Пример #13
0
        private void btnZdec_Click(object sender, EventArgs e)
        {
            if (moveSelectHorizontal1.MoveMode.Continue || Global.IsLocating)
            {
                return;
            }
            var velocityCurve = new VelocityCurve {
                Maxvel = m_Zaxis.Speed ?? 0
            };

            m_Zaxis.MoveDelta(-1 * moveSelectHorizontal1.MoveMode.Distance, velocityCurve);
        }
Пример #14
0
        /// <summary>
        ///     反向移动。
        /// </summary>
        public override void Negative()
        {
            if (!isCondition)
            {
                return;
            }
            var velocityCurve = new VelocityCurve {
                Strvel = VelocityCurveRun.Strvel, Maxvel = (Speed ?? 0) * 10000, Tacc = VelocityCurveRun.Tacc
            };

            ApsController.ContinuousMove(NoId, MoveDirection.Negative, velocityCurve);
        }
Пример #15
0
        private void btnRYadd_Click(object sender, EventArgs e)
        {
            if (moveSelectHorizontal1.MoveMode.Continue || Global.IsLocating)
            {
                return;
            }
            var velocityCurve = new VelocityCurve {
                Maxvel = Station1.RYaxisServo.Speed ?? 0
            };

            Station1.RYaxisServo.MoveDelta(1 * moveSelectHorizontal1.MoveMode.Distance, velocityCurve);
        }
Пример #16
0
        public static VelocityCurve Parse(string str)
        {
            string[] strValue      = str.Split(',');
            var      velocityCurve = new VelocityCurve();

            velocityCurve.Strvel            = double.Parse(strValue[0]);
            velocityCurve.Maxvel            = double.Parse(strValue[1]);
            velocityCurve.Tacc              = double.Parse(strValue[2]);
            velocityCurve.Tdec              = double.Parse(strValue[3]);
            velocityCurve.Svacc             = double.Parse(strValue[4]);
            velocityCurve.Svdec             = double.Parse(strValue[5]);
            velocityCurve.Sfac              = double.Parse(strValue[6]);
            velocityCurve.VelocityCurveType = (CurveTypes)(byte.Parse(strValue[7]));
            return(velocityCurve);
        }
Пример #17
0
        public override void AbsoluteMove(short axisNo, double position, VelocityCurve velocityCurveParams)
        {
            bool sStart = CurveTypes.S == velocityCurveParams.VelocityCurveType;

            if (sStart)
            {
                var ret = Motion._8164_start_ta_move(axisNo, position, velocityCurveParams.Strvel, velocityCurveParams.Maxvel, velocityCurveParams.Tacc, velocityCurveParams.Tdec);
                ThrowIfResultError(ret);
            }
            else
            {
                var ret = Motion._8164_start_sa_move(axisNo, position, velocityCurveParams.Strvel, velocityCurveParams.Maxvel, velocityCurveParams.Tacc, velocityCurveParams.Tdec,
                                                     velocityCurveParams.Svacc, velocityCurveParams.Svdec);
                ThrowIfResultError(ret);
            }
        }
Пример #18
0
        /// <summary>
        /// 两轴做插补相对移动
        /// </summary>
        /// <param name="axisNo1">轴1ID</param>
        /// <param name="axisNo2">轴2ID</param>
        /// <param name="pulseNum1">坐标1</param>
        /// <param name="pulseNum2">坐标2</param>
        /// <param name="velocityCurveParams">速度参数</param>
        public void MoveLine2Relative(int axisNo1, int axisNo2, int pulseNum1, int pulseNum2,
                                      VelocityCurve velocityCurveParams)
        {
            var axis = new int[2];
            var pos  = new int[2];

            axis[0] = axisNo1;
            axis[1] = axisNo2;
            pos[0]  = pulseNum1;
            pos[1]  = pulseNum2;

            //设置速度
            SetAxisVelocity(axisNo1, velocityCurveParams);
            //启动运动
            APS168.APS_relative_linear_move(2, axis, pos, (int)velocityCurveParams.Maxvel);
        }
Пример #19
0
    /* Returns the orbital velocity in degrees per year.
     * param rad Radius in parsec
     */
    double GetOrbitalVelocity(double rad)
    {
        double vel_kms;  // velocity in kilometer per seconds

        //  with dark matter
        vel_kms = VelocityCurve.v(rad);

        // without dark matter:
        // vel_kms = VelocityCurve.vd(rad);

        // Calculate velocity in degree per year
        double u    = 2 * Math.PI * rad * PC_TO_KM;
        double time = u / (vel_kms * SEC_PER_YEAR);

        return(360.0 / time);
    }
Пример #20
0
        /// <summary>
        /// 两轴直线插补轨迹移动
        /// </summary>
        /// <param name="axisNo1">轴1ID</param>
        /// <param name="axisNo2">轴2ID</param>
        /// <param name="pulseNum1">坐标1</param>
        /// <param name="pulseNum2">坐标2</param>
        /// <param name="velocityCurveParams">速度参数</param>
        /// <param name="Option">位集指定选项,该选项可以启用指定的参数和函数。</param>
        public void MoveLine2(int axisNo1, int axisNo2, double pulseNum1, double pulseNum2,
                              VelocityCurve velocityCurveParams, int Option)
        {
            var      axis      = new int[2];
            var      pos       = new double[2];
            double   TransPara = 0;
            ASYNCALL wait      = new ASYNCALL(); //A waiting call

            axis[0] = axisNo1;
            axis[1] = axisNo2;
            pos[0]  = pulseNum1;
            pos[1]  = pulseNum2;

            //设置速度
            SetAxisVelocity(axisNo1, velocityCurveParams);
            //启动运动
            APS168.APS_line_all(2, axis, Option, pos, ref TransPara, velocityCurveParams.Strvel, velocityCurveParams.Maxvel, velocityCurveParams.Strvel, velocityCurveParams.Svacc, velocityCurveParams.Svdec, velocityCurveParams.Sfac, ref wait);
        }
Пример #21
0
        private void btnJogAdd_Click(object sender, EventArgs e)
        {
            if (MoveMode.Continue)
            {
                return;
            }
            if (!m_Axis.IsDone)
            {
                return;
            }
            var Value = (double)(MoveMode.Distance);

            Value *= 1;
            var velocityCurve = new VelocityCurve {
                Maxvel = m_Axis.Speed * m_Axis.Transmission.EquivalentPulse ?? 0
            };

            m_Axis.MoveDelta(Value, velocityCurve);
        }
Пример #22
0
        private void btnJogAdd_Click(object sender, EventArgs e)
        {
            if (MoveMode.Continue)
            {
                return;
            }
            if (!m_Axis.IsDone)
            {
                return;
            }
            var Value = MoveMode.Distance;

            Value *= 1;
            var velocityCurve = new VelocityCurve {
                Maxvel = m_Axis.Speed ?? 0
            };

            m_Axis.MoveDelta(Value, velocityCurve);
        }
Пример #23
0
            public void Execute(Entity entity, int index, DynamicBuffer <VelocityCurveBuffer> velocityCurveBuffer, ref PhysicsVelocity physicsVelocity)
            {
                float3 newVelocity = new float3(0, 0, 0);

                for (int i = 0; i < velocityCurveBuffer.Length; i++)
                {
                    VelocityCurveBuffer velocityCurveBufferElement = velocityCurveBuffer[i];
                    VelocityCurve       velocityCurve = VelocityCurveGroup[velocityCurveBufferElement.VelocityCurveEntity];

                    newVelocity.x += velocityCurve.X.CurrentVelocity;
                    newVelocity.y += velocityCurve.Y.CurrentVelocity;
                    newVelocity.z += velocityCurve.Z.CurrentVelocity;
                }

                physicsVelocity.Linear = newVelocity;

                //Clear the buffer
                velocityCurveBuffer.Clear();
            }
Пример #24
0
        /// <summary>
        /// 运动轴轴移动到指定的位置。
        /// </summary>
        /// <param name="value">将要移动到的位置。</param>
        /// <param name="velocityCurve">移动时的运行参数。</param>
        public override void MoveTo(double value, VelocityCurve velocityCurve = null)
        {
            if (!isCondition)
            {
                return;
            }
            var Data     = value * Transmission.EquivalentPulse;
            var velocity = velocityCurve;

            velocity.Strvel = VelocityCurveRun.Strvel;
            if (VelocityCurveRun.Tacc >= 50000000)
            {
                velocity.Tacc = 50000000;
                velocity.Tdec = 50000000;
            }
            else
            {
                velocity.Tacc = VelocityCurveRun.Tacc;
                velocity.Tdec = VelocityCurveRun.Tacc;
            }
            velocity.Maxvel = velocityCurve.Maxvel * Transmission.EquivalentPulse;
            ApsController.AbsoluteMove(NoId, (int)Data, velocity);
        }
Пример #25
0
 /// <summary>
 ///     线性差补方式运动。
 /// </summary>
 /// <param name="axisNo1"></param>
 /// <param name="axisNo2"></param>
 /// <param name="pulseNum1"></param>
 /// <param name="pulseNum2"></param>
 /// <param name="velocityCurve"></param>
 public void MoveLine(int axisNo1, int axisNo2, int pulseNum1, int pulseNum2, VelocityCurve velocityCurve)
 {
     throw new NotImplementedException();
 }
Пример #26
0
 /// <summary>
 /// 直线插补/插补
 /// </summary>
 public void Line2Interpolation(short CardNo, short axisNoX, double posX, double posY, VelocityCurve velocityCurveParams)
 {
 }
Пример #27
0
        /// <summary>
        /// 两轴圆弧插补绝对移动(方向)
        /// </summary>
        /// <param name="axisNo">轴ID</param>
        /// <param name="CX">圆心坐标X</param>
        /// <param name="CY">圆心坐标Y</param>
        /// <param name="EX">终点坐标X</param>
        /// <param name="EY">终点坐标Y</param>
        /// <param name="Direction">0:DIR_CW,1:DIR_CCW</param>
        /// <param name="velocityCurveParams">速度参数</param>
        public void MoveArc2Absolute(int axisNo, double CX, double CY, double EX, double EY, short Direction, VelocityCurve velocityCurveParams)
        {
            var  Cpos           = new double[2];
            var  Epos           = new double[2];
            uint pArrayElements = 2;

            Cpos[0] = CX;
            Cpos[1] = CY;
            Epos[0] = EX;
            Epos[1] = EY;
            //设置速度
            SetAxisVelocity(axisNo, velocityCurveParams);
            //启动运动
            Motion.mAcm_GpMoveCircularAbs(m_Axises[axisNo], Cpos, Epos, ref pArrayElements, Direction);
        }
Пример #28
0
        /// <summary>
        ///     两轴直线插补绝对移动
        /// </summary>
        /// <param name="axisNo">轴ID</param>
        /// <param name="position1">坐标1</param>
        /// <param name="position2">坐标2</param>
        /// <param name="velocityCurveParams">速度参数</param>
        public void MoveLine2Absolute(int axisNo, double position1, double position2, VelocityCurve velocityCurveParams)
        {
            var  pos            = new double[2];
            uint pArrayElements = 2;

            pos[0] = position1;
            pos[1] = position2;
            //设置速度
            SetAxisVelocity(axisNo, velocityCurveParams);
            //启动运动
            Motion.mAcm_GpMoveDirectAbs(m_Axises[axisNo], pos, ref pArrayElements);
        }
Пример #29
0
 /// <summary>
 ///     连续运动
 /// </summary>
 /// <param name="axisNo"></param>
 /// <param name="moveDirection"></param>
 /// <param name="velocityCurveParams"></param>
 /// <returns></returns>
 public override void ContinuousMove(short axisNo, MoveDirection moveDirection, VelocityCurve velocityCurveParams)
 {
     SetAxisVelocity(axisNo, velocityCurveParams);
     Motion.mAcm_AxMoveVel(m_Axises[axisNo], (ushort)moveDirection);
 }
Пример #30
0
 /// <summary>
 /// 直线插补/插补
 /// </summary>
 public void Line3Interpolation(short CardNo, double posX, double posY, double posZ, VelocityCurve velocityCurveParams)
 {
 }