Ejemplo n.º 1
0
        /// <summary>
        ///单轴相对运动
        /// </summary>
        /// <param name="AxisName"></param>
        /// <param name="distance"></param>
        /// <param name="errMsg"></param>
        /// <returns></returns>
        public int AxisRelMove(string AxisName, double distance, out string errMsg)
        {
            errMsg = "";
            IJFInitializable dev;
            JFDevCellInfo    ci;
            string           errInfo = "";

            if (!JFCMFunction.CheckDevCellName(JFCMFunction.Axis, AxisName, out dev, out ci, out errInfo))
            {
                return((int)ErrorDef.InvokeFailed);
            }
            IJFModule_Motion md = (dev as IJFDevice_MotionDaq).GetMc(ci.ModuleIndex);
            int errCode         = md.RelMove(ci.ChannelIndex, distance);

            if (errCode != (int)ErrorDef.Success)
            {
                errMsg = md.GetErrorInfo(errCode);
                return(errCode);
            }

            errCode = MotionDone(AxisName, out errMsg);
            if (errCode != 0)
            {
                return(errCode);
            }
            return((int)ErrorDef.Success);
        }
Ejemplo n.º 2
0
        private void btNR_Click(object sender, EventArgs e)
        {
            if (cbMoveMode.SelectedIndex != 0) //未选中寸动模式
            {
                return;
            }
            string        errInfo;
            JFDevCellInfo ci = CheckAxisDevInfo(_axisNames[3], out errInfo);

            if (null == ci)
            {
                MessageBox.Show("R轴负向寸动失败!配置中没有通道信息,Name = \"" + _axisNames[3] + "\" ErrorInfo:" + errInfo);
                return;
            }

            IJFModule_Motion md = (JFHubCenter.Instance.InitorManager.GetInitor(ci.DeviceID) as IJFDevice_MotionDaq).GetMc(ci.ModuleIndex);
            int errCode         = md.RelMove(ci.ChannelIndex, -_dStepParam);

            if (errCode != 0)
            {
                MessageBox.Show("R轴负向寸动失败!,AxisName = \"" + _axisNames[3] + "\" ErrorInfo:" + md.GetErrorInfo(errCode));
                return;
            }
            ShowTips("R轴负向寸动OK");
        }
Ejemplo n.º 3
0
        protected override bool ActionGenuine(out string errorInfo)
        {
            IJFInitializable dev    = null;
            JFDevCellInfo    ci     = null;
            string           axisID = GetInitParamValue("轴ID") as string;

            if (!JFHubCenter.Instance.MDCellNameMgr.ContainAxisName(axisID))
            {
                errorInfo = "参数:\"轴ID\" = " + axisID + " 在设备名称表中不存在";
                SetOutputParamValue("执行结果", JFWorkCmdResult.ActionError);
                return(false);
            }

            if (!JFCMFunction.CheckDevCellName(JFCMFunction.Axis, axisID, out dev, out ci, out errorInfo))
            {
                SetOutputParamValue("执行结果", JFWorkCmdResult.ActionError);
                return(false);
            }

            IJFModule_Motion md = (dev as IJFDevice_MotionDaq).GetMc(ci.ModuleIndex);

            bool[] AxisStatus = null;
            int    err        = md.GetMotionStatus(ci.ChannelIndex, out AxisStatus);

            if (err != 0)
            {
                errorInfo = "开始运动前检测轴状态失败:" + md.GetErrorInfo(err);
                SetOutputParamValue("执行结果", JFWorkCmdResult.ActionError);
                return(false);
            }

            //if(md.IsSVO)
            if (!AxisStatus[md.MSID_SVO])
            {
                errorInfo = "轴伺服未上电";
                SetOutputParamValue("执行结果", JFWorkCmdResult.ActionError);
                return(false);
            }

            if (AxisStatus[md.MSID_ALM])
            {
                errorInfo = "轴伺服已报警";
                SetOutputParamValue("执行结果", JFWorkCmdResult.ActionError);
                return(false);
            }

            if (!AxisStatus[md.MSID_MDN])
            {
                errorInfo = "轴当前运动未完成";
                SetOutputParamValue("执行结果", JFWorkCmdResult.ActionError);
                return(false);
            }

            double dPos      = Convert.ToDouble(GetInitParamValue("目标位置"));
            bool   IsAbsMove = Convert.ToBoolean(GetInitParamValue("绝对位置模式"));

            if (IsAbsMove)
            {
                err = md.AbsMove(ci.ChannelIndex, dPos);
            }
            else
            {
                err = md.RelMove(ci.ChannelIndex, dPos);
            }
            if (err != 0)
            {
                errorInfo = (IsAbsMove?"绝对":"相对") + "位置运动失败:" + md.GetErrorInfo(err);
                SetOutputParamValue("执行结果", JFWorkCmdResult.ActionError);
                return(false);
            }

            errorInfo = "Success";
            SetOutputParamValue("执行结果", JFWorkCmdResult.Success);
            return(true);
        }