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