protected override bool ActionGenuine(out string errorInfo)
        {
            string[] axisIDList = GetInitParamValue("轴ID列表") as string[];
            double[] dPosList   = GetMethodInputValue("目标位置列表") as double[];
            bool     IsAbsMove  = (bool)GetMethodInputValue("绝对位置模式");

            if (axisIDList == null || dPosList == null)
            {
                errorInfo = "轴ID列表长度或者目标位置列表长度为空";
                SetOutputParamValue("执行结果", JFWorkCmdResult.ActionError);
                return(false);
            }

            int[] iaxisIDList = new int[axisIDList.Length];
            if (axisIDList.Length <= 0)
            {
                errorInfo = "轴ID列表长度<=0";
                SetOutputParamValue("执行结果", JFWorkCmdResult.ActionError);
                return(false);
            }

            if (dPosList.Length <= 0)
            {
                errorInfo = "目标位置列表<=0";
                SetOutputParamValue("执行结果", JFWorkCmdResult.ActionError);
                return(false);
            }

            if (axisIDList.Length != dPosList.Length)
            {
                errorInfo = "轴ID列表长度为" + axisIDList.ToString() + "与目标列表长度" + dPosList.Length.ToString() + "不一致。";
                SetOutputParamValue("执行结果", JFWorkCmdResult.ActionError);
                return(false);
            }

            IJFInitializable     dev        = null;
            IJFInitializable     devbuff    = null;
            JFDevCellInfo        ci         = null;
            List <JFDevCellInfo> cibuffList = new List <JFDevCellInfo>();

            for (int m = 0; m < axisIDList.Length; m++)
            {
                if (!JFHubCenter.Instance.MDCellNameMgr.ContainAxisName(axisIDList[m]))
                {
                    errorInfo = "参数项:\"轴ID\" = " + axisIDList[m] + " 在设备名称表中不存在";
                    SetOutputParamValue("执行结果", JFWorkCmdResult.ActionError);
                    return(false);
                }
                if (!JFCMFunction.CheckDevCellName(JFCMFunction.Axis, axisIDList[m], out dev, out ci, out errorInfo))
                {
                    SetOutputParamValue("执行结果", JFWorkCmdResult.ActionError);
                    return(false);
                }
                iaxisIDList[m] = ci.ChannelIndex;
                if (devbuff != null)
                {
                    if (devbuff != dev)
                    {
                        errorInfo = "轴ID列表中的所有轴并不来源于同一个设备";
                        SetOutputParamValue("执行结果", JFWorkCmdResult.ActionError);
                        return(false);
                    }
                }
                devbuff = dev;

                if (cibuffList.Contains(ci))
                {
                    errorInfo = "轴ID列表中存在重复的轴名称";
                    SetOutputParamValue("执行结果", JFWorkCmdResult.ActionError);
                    return(false);
                }
                cibuffList.Add(ci);
            }

            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);
            }

            if (IsAbsMove)
            {
                err = md.AbsLine(iaxisIDList, dPosList);
            }
            else
            {
                err = md.RelLine(iaxisIDList, dPosList);
            }
            if (err != 0)
            {
                errorInfo = (IsAbsMove ? "绝对" : "相对") + "直线插补运动失败:" + md.GetErrorInfo(err);
                SetOutputParamValue("执行结果", JFWorkCmdResult.ActionError);
                return(false);
            }

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