public int SetHomeParam(int axis, JFHomeParam hp) { _CheckAxisEnable(axis, "SetHomeParam"); HTM.AXIS_INFO axInfo; int opt = HTM.GetAxisInfo(axis, out axInfo); if (opt != 0) { throw new Exception("SetHomeParam() Failed By: HTM.GetAxisInfo() return errorCode = " + opt); } axInfo.homeMode = (sbyte)hp.mode; axInfo.homeDir = (byte)(hp.dir ? 1 : 0); axInfo.homeEZA = (byte)(hp.eza ? 1 : 0); axInfo.homeAcc = hp.acc; axInfo.homeVm = hp.vm; axInfo.homeVo = hp.vo; axInfo.homeShift = hp.shift; opt = HTM.SetAxisInfo(axis, ref axInfo); if (0 != opt) { return((int)ErrorDef.InvokeFailed); } return((int)ErrorDef.Success); }
/// <summary>单轴回零参数</summary> public int GetHomeParam(int axis, out JFHomeParam pm) { _CheckAxisEnable(axis, "GetHomeParam"); HTM.AXIS_INFO axInfo; int errCode = HTM.GetAxisInfo(axis, out axInfo); if (errCode != 0) { pm = new JFHomeParam(); return((int)ErrorDef.InvokeFailed); } pm = new JFHomeParam() { mode = axInfo.homeMode, dir = axInfo.homeDir != 0, eza = axInfo.homeEZA != 0, acc = axInfo.homeAcc, vm = axInfo.homeVm, vo = axInfo.homeVo, va = axInfo.homeVo, shift = axInfo.homeShift, offset = 0 }; return((int)ErrorDef.Success); }
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); } JFHomeParam hp = (JFHomeParam)GetInitParamValue("轴归零参数"); /* * 归零模式 0:使用Org(原点)作为归零参考 1:使用限位信号作为归零参考 2:仅使用EZ信号作为归零参考 */ if (hp.mode != 0 && hp.mode != 1 && hp.mode != 2 && hp.mode != -1 && hp.mode != -2) { errorInfo = "归零模式设置错误,mode=" + hp.mode; SetOutputParamValue("执行结果", JFWorkCmdResult.ActionError); return(false); } if (hp.acc <= 0) { errorInfo = "加速度/减速度acc <= 0"; SetOutputParamValue("执行结果", JFWorkCmdResult.ActionError); return(false); } if (hp.vm <= 0) { errorInfo = "最大速度参数vm <= 0"; SetOutputParamValue("执行结果", JFWorkCmdResult.ActionError); return(false); } if (hp.vo <= 0) { errorInfo = "寻找原点速度vo <= 0"; SetOutputParamValue("执行结果", JFWorkCmdResult.ActionError); return(false); } if (hp.va <= 0) { errorInfo = "接近速度va <= 0"; SetOutputParamValue("执行结果", JFWorkCmdResult.ActionError); return(false); } if (hp.shift < 0) { errorInfo = "回零偏移量sift < 0"; SetOutputParamValue("执行结果", JFWorkCmdResult.ActionError); return(false); } if (hp.offset < 0) { errorInfo = "回零补偿值offset < 0"; SetOutputParamValue("执行结果", JFWorkCmdResult.ActionError); return(false); } IJFModule_Motion md = (dev as IJFDevice_MotionDaq).GetMc(ci.ModuleIndex); int errCode = md.SetHomeParam(ci.ChannelIndex, hp); if (errCode < 0) { errorInfo = "SDK调用出错:" + md.GetErrorInfo(errCode); SetOutputParamValue("执行结果", JFWorkCmdResult.ActionError); return(false); } errorInfo = "Success"; SetOutputParamValue("执行结果", JFWorkCmdResult.Success); return(true); }