|
@@ -0,0 +1,624 @@
|
|
|
|
|
+using SKMC.Api.Motion.Model;
|
|
|
|
|
+using SKMC.Api.Recipe.Model;
|
|
|
|
|
+using System;
|
|
|
|
|
+using System.Collections.Generic;
|
|
|
|
|
+
|
|
|
|
|
+namespace SKMC.Api.Motion.Control
|
|
|
|
|
+{
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 基于流程化的运动控制层接口
|
|
|
|
|
+ /// 结合点位、速度配置, 方便控制脚本调用
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ public interface IMotionControl
|
|
|
|
|
+ {
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 设置参数
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="key">interval/timeout_move/timeout_home</param>
|
|
|
|
|
+ /// <param name="value"></param>
|
|
|
|
|
+ void Set(string key, int value);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 获取参数
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="key">interval/timeout_move/timeout_home</param>
|
|
|
|
|
+ /// <returns></returns>
|
|
|
|
|
+ int Get(string key);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 控制使能, true: motion控制有效, false: motion控制无效
|
|
|
|
|
+ /// 运动过程中如有电机抛出MotionException, 该控制使能自动失效
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ void Enable(bool enabled = true);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 控制使能是否有效
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <returns></returns>
|
|
|
|
|
+ bool IsEnable();
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 开启所有电机使能
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ void EnableAllAxises();
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 关闭所有电机使能
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ void DisableAllAxises();
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 判断控制卡是否连接状态
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <returns></returns>
|
|
|
|
|
+ bool IsCardConnected();
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 电机上使能
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="axisCode">电机码</param>
|
|
|
|
|
+ /// <param name="clearError">清除驱动报警</param>
|
|
|
|
|
+ void EnableAxis(string axisCode, bool clearError = true);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 电机下使能
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="axisCode">电机码</param>
|
|
|
|
|
+ void DisableAxis(string axisCode);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 多个电机上使能
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="axisCodes">电机码集合</param>
|
|
|
|
|
+ /// <param name="clearError">清除驱动报警</param>
|
|
|
|
|
+ void EnableAxises(List<string> axisCodes, bool clearError = true);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 多个电机下使能
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="axisCodes">电机码集合</param>
|
|
|
|
|
+ void DisableAxises(List<string> axisCodes);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 获取电机对象
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="axisCode">电机码</param>
|
|
|
|
|
+ /// <returns>电机对象</returns>
|
|
|
|
|
+ MotionAxis GetAxis(string axisCode);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 指定轴回零
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="axisCode">电机码</param>
|
|
|
|
|
+ /// <param name="waiting">是否等待(!注意:目前此参数设置为false无效)</param>
|
|
|
|
|
+ /// <param name="safeCnd">安全条件, 回零中如果不满足该安全条件立即停止并报警</param>
|
|
|
|
|
+ /// <param name="onSuccess"></param>
|
|
|
|
|
+ /// <param name="onTimeout"></param>
|
|
|
|
|
+ /// <param name="timeout">超时时间(毫秒)</param>
|
|
|
|
|
+ void HomeAxis(string axisCode, bool waiting = true, Func<bool> safeCnd = null, Action onSuccess = null, Action onTimeout = null, int timeout = 60000);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 指定轴快速回零, 该轴必须是闭环电机, 如果是开环电机则降级为普通的HomeAxis回零
|
|
|
|
|
+ /// 并且传入的stateCheck为true后(表示总线连接OK并且上一次回零到现在未中断),使用speedCode速度移动到0位置再进行回零。
|
|
|
|
|
+ /// 如果传入的stateCheck为false则降级为普通的HomeAxis回零
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="axisCode">电机码</param>
|
|
|
|
|
+ /// <param name="speedCode">快速移动到0位置的速度码, !注意:为确保安全设置合适的速度</param>
|
|
|
|
|
+ /// <param name="stateCheck">状态判断, 这里指Ecat总线连接状态以及上一次回零后Ecat总线是否正常</param>
|
|
|
|
|
+ /// <param name="waiting">是否等待(!注意:目前此参数设置为false无效)</param>
|
|
|
|
|
+ /// <param name="safeCnd">安全条件, 回零中如果不满足该安全条件立即停止并报警</param>
|
|
|
|
|
+ /// <param name="onSuccess"></param>
|
|
|
|
|
+ /// <param name="onTimeout"></param>
|
|
|
|
|
+ /// <param name="timeout">超时时间(毫秒)</param>
|
|
|
|
|
+ void HomeAxisFast(string axisCode, string speedCode, bool stateCheck, bool waiting = true,
|
|
|
|
|
+ Func<bool> safeCnd = null, Action onSuccess = null, Action onTimeout = null, int timeout = 60000);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 指定轴反向回零.
|
|
|
|
|
+ /// 在无法进行负方向回零时, 可通过该方法往正方向回零, 回零完毕后设置当前位置为正限位最大值, 即可实现与负方向回零相同效果
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="axisCode">电机码</param>
|
|
|
|
|
+ /// <param name="homeMode">回零模式, 例如正限位+Z相回零的模式是2</param>
|
|
|
|
|
+ /// <param name="maxPos">限位位置相对原点的位置, 单位mm, 推荐在限位位置设置点位并从点位获取</param>
|
|
|
|
|
+ /// <param name="waiting">是否等待</param>
|
|
|
|
|
+ /// <param name="safeCnd">安全条件, 回零中如果不满足该安全条件立即停止并报警</param>
|
|
|
|
|
+ /// <param name="onSuccess"></param>
|
|
|
|
|
+ /// <param name="onTimeout"></param>
|
|
|
|
|
+ /// <param name="timeout">超时时间(毫秒)</param>
|
|
|
|
|
+ void HomeAxisReverse(string axisCode, short homeMode, double maxPos, bool waiting = true,
|
|
|
|
|
+ Func<bool> safeCnd = null, Action onSuccess = null, Action onTimeout = null, int timeout = 60000);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 判断绑定某个点位的电机(一个或多个)是否在该点位附近。需同时满足negativeOffset与PositiveOffset的位置限定后返回true.
|
|
|
|
|
+ /// <para>具体判断如下:</para>
|
|
|
|
|
+ /// <para>1.电机未上使能, 返回false</para>
|
|
|
|
|
+ /// <para>2.电机Enc数值 小于 点位设置值 - negativeOffset 或者 电机Enc数值 大于 点位设置值 + positiveOffset, 返回false</para>
|
|
|
|
|
+ /// <para>3.剩下返回true</para>
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="pointCode">点位码</param>
|
|
|
|
|
+ /// <param name="axisIndex">绑定点位的电机序号, 0开头, 默认-1表示该点位的所有电机</param>
|
|
|
|
|
+ /// <param name="negativeOffset">大于该点位的负方向距离</param>
|
|
|
|
|
+ /// <param name="positiveOffset">小于该点位的正方向距离</param>
|
|
|
|
|
+ /// <param name="onPassed">满足条件后的动作</param>
|
|
|
|
|
+ /// <param name="onFailed">未满足条件后的动作</param>
|
|
|
|
|
+ /// <returns>是否满足位置条件</returns>
|
|
|
|
|
+ bool CheckAxisNearPoint(string pointCode, short axisIndex = -1, double negativeOffset = 0.1, double positiveOffset = 0.1);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 通过点位码驱动对应的Axis运动, speedRadio表示每秒旋转圈数
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="pointCode">点位码</param>
|
|
|
|
|
+ /// <param name="speedRadio">每秒旋转圈数</param>
|
|
|
|
|
+ /// <param name="waiting">是否等待到位, 默认为true</param>
|
|
|
|
|
+ /// <param name="inRange">可偏移的范围, 单位毫米或者步距</param>
|
|
|
|
|
+ /// <param name="onSuccess">运动完成后的回调动作</param>
|
|
|
|
|
+ /// <param name="onTimeout">超时未完成的回调动作</param>
|
|
|
|
|
+ /// <param name="checkCnd">检测的条件</param>
|
|
|
|
|
+ /// <param name="onChecked">满足检测条件的动作</param>
|
|
|
|
|
+ void MoveAxisRound(string pointCode, double speedRadio,
|
|
|
|
|
+ bool waiting = true, double inRange = -1,
|
|
|
|
|
+ Action onSuccess = null, Action onTimeout = null);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 让绑定点位码的(多个)电机以指定速度运动到点位码
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="pointCode">点位码</param>
|
|
|
|
|
+ /// <param name="speedCode">速度码, null表示使用该点配置的默认速度码</param>
|
|
|
|
|
+ /// <param name="waiting">是否等待到位, 默认为true</param>
|
|
|
|
|
+ /// <param name="inRange">可偏移的范围, 单位毫米或者步距</param>
|
|
|
|
|
+ /// <param name="sync">如果2个轴同时移动,是否需要同时达到(直线轨迹)</param>
|
|
|
|
|
+ /// <param name="onSuccess">运动完成后的回调动作</param>
|
|
|
|
|
+ /// <param name="onTimeout">超时未完成的回调动作</param>
|
|
|
|
|
+ void MoveAxisPoint(string pointCode, string speedCode = null,
|
|
|
|
|
+ bool waiting = true, double inRange = -1,
|
|
|
|
|
+ Action onSuccess = null, Action onTimeout = null, bool sync = false);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 让绑定点位码的(多个)电机以指定速度运动到点位码
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="processPoint">点位对象</param>
|
|
|
|
|
+ /// <param name="speedCode">速度码, null表示使用该点配置的默认速度码</param>
|
|
|
|
|
+ /// <param name="waiting">是否等待到位, 默认为true</param>
|
|
|
|
|
+ /// <param name="inRange">可偏移的范围, 单位毫米或者步距</param>
|
|
|
|
|
+ /// <param name="sync">如果2个轴同时移动,是否需要同时达到(直线轨迹)</param>
|
|
|
|
|
+ /// <param name="onSuccess">运动完成后的回调动作</param>
|
|
|
|
|
+ /// <param name="onTimeout">超时未完成的回调动作</param>
|
|
|
|
|
+ void MoveAxisPoint(RecipePoint processPoint, string speedCode = null,
|
|
|
|
|
+ bool waiting = true, double inRange = -1,
|
|
|
|
|
+ Action onSuccess = null, Action onTimeout = null,
|
|
|
|
|
+ bool sync = false);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 让绑定点位码的(多个)电机以指定速度运动到点位码并能叠加指定偏移量
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="pointCode">点位码</param>
|
|
|
|
|
+ /// <param name="posOffsets">各个电机的偏移量数组, 需要按电机绑定顺序赋值</param>
|
|
|
|
|
+ /// <param name="speedCode">速度码, null表示使用该点配置的默认速度码</param>
|
|
|
|
|
+ /// <param name="waiting">是否等待到位, 默认为true</param>
|
|
|
|
|
+ /// <param name="distanceUnit">是否距离单位, true:毫米, false:电机步距</param>
|
|
|
|
|
+ /// <param name="inRange">可偏移的范围, 单位毫米或者步距</param>
|
|
|
|
|
+ /// <param name="sync">如果2个轴同时移动,是否需要同时达到(直线轨迹)</param>
|
|
|
|
|
+ /// <param name="safeCnd">安全条件, 运动中如果不满足该安全条件立即停止并报警</param>
|
|
|
|
|
+ /// <param name="onSuccess">运动完成后的回调动作</param>
|
|
|
|
|
+ /// <param name="onTimeout">超时未完成的回调动作</param>
|
|
|
|
|
+ /// <param name="checkCnd">检测的条件</param>
|
|
|
|
|
+ /// <param name="onChecked">满足检测条件的动作</param>
|
|
|
|
|
+ void MoveAxisPointFixset(string pointCode, double[] posOffsets, string speedCode = null,
|
|
|
|
|
+ bool waiting = true, double inRange = -1,
|
|
|
|
|
+ Action onSuccess = null, Action onTimeout = null,
|
|
|
|
|
+ bool sync = false);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 让绑定点位码的(多个)电机以指定速度运动到点位码并能叠加指定偏移量
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="processPoint">点位对象</param>
|
|
|
|
|
+ /// <param name="posOffsets">各个电机的偏移量数组, 需要按电机绑定顺序赋值</param>
|
|
|
|
|
+ /// <param name="speedCode">速度码, null表示使用该点配置的默认速度码</param>
|
|
|
|
|
+ /// <param name="waiting">是否等待到位, 默认为true</param>
|
|
|
|
|
+ /// <param name="inRange">可偏移的范围, 单位毫米或者步距</param>
|
|
|
|
|
+ /// <param name="sync">如果2个轴同时移动,是否需要同时达到(直线轨迹)</param>
|
|
|
|
|
+ /// <param name="onSuccess">运动完成后的回调动作</param>
|
|
|
|
|
+ /// <param name="onTimeout">超时未完成的回调动作</param>
|
|
|
|
|
+ void MoveAxisPointFixset(RecipePoint processPoint, double[] posOffsets, string speedCode = null,
|
|
|
|
|
+ bool waiting = true, double inRange = -1,
|
|
|
|
|
+ Action onSuccess = null, Action onTimeout = null,
|
|
|
|
|
+ bool sync = false);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 让绑定点位码的指定单个电机以指定速度运动到点位码
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="pointCode">点位码</param>
|
|
|
|
|
+ /// <param name="axisCode">电机码</param>
|
|
|
|
|
+ /// <param name="speedCode">速度码, null表示使用该点配置的默认速度码</param>
|
|
|
|
|
+ /// <param name="waiting">是否等待到位, 默认为true</param>
|
|
|
|
|
+ /// <param name="inRange">可偏移的范围, 单位毫米或者步距</param>
|
|
|
|
|
+ /// <param name="onSuccess">运动完成后的回调动作</param>
|
|
|
|
|
+ /// <param name="onTimeout">超时未完成的回调动作</param>
|
|
|
|
|
+ void MoveAxisPointOne(string pointCode, string axisCode, string speedCode = null,
|
|
|
|
|
+ bool waiting = true, double inRange = -1,
|
|
|
|
|
+ Action onSuccess = null, Action onTimeout = null);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ void MoveAxisPointOneFixset(string pointCode, string axisCode, double fixset, string speedCode = null,
|
|
|
|
|
+ bool waiting = true, double inRange = -1,
|
|
|
|
|
+ Action onSuccess = null, Action onTimeout = null);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 让绑定点位码的指定单个电机以指定速度运动到点位码
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="processPoint">点位对象</param>
|
|
|
|
|
+ /// <param name="axisCode">电机码</param>
|
|
|
|
|
+ /// <param name="speedCode">速度码, null表示使用该点配置的默认速度码</param>
|
|
|
|
|
+ /// <param name="waiting">是否等待到位, 默认为true</param>
|
|
|
|
|
+ /// <param name="inRange">可偏移的范围, 单位毫米或者步距</param>
|
|
|
|
|
+ /// <param name="onSuccess">运动完成后的回调动作</param>
|
|
|
|
|
+ /// <param name="onTimeout">超时未完成的回调动作</param>
|
|
|
|
|
+ void MoveAxisPointOne(RecipePoint processPoint, string axisCode, string speedCode = null,
|
|
|
|
|
+ bool waiting = true, double inRange = -1,
|
|
|
|
|
+ Action onSuccess = null, Action onTimeout = null);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 聚合多个点位码并同时运动, 注意: 每个点位的运动速度来自各自的点位(ProcessPoint)中的速度码
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="processPoints">需要聚合运动的点位对象集合</param>
|
|
|
|
|
+ /// <param name="waiting">是否等待到位, 默认为true</param>
|
|
|
|
|
+ /// <param name="inRange">可偏移的范围, 单位毫米或者步距</param>
|
|
|
|
|
+ /// <param name="onSuccess">运动完成后的回调动作</param>
|
|
|
|
|
+ /// <param name="onTimeout">超时未完成的回调动作</param>
|
|
|
|
|
+ void MoveAxisAssemblePoints(List<RecipePoint> processPoints,
|
|
|
|
|
+ bool waiting = true, double inRange = -1,
|
|
|
|
|
+ Action onSuccess = null, Action onTimeout = null);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 聚合多个点位码并同时运动, 注意: 每个点位的运动速度优先使用speedCode, 如果speedCode为空则使用各自的点位中设置的速度码
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="pointCodes">需要聚合运动的点位码集合</param>
|
|
|
|
|
+ /// <param name="speedCode">速度码, null表示使用各点位的默认速度码</param>
|
|
|
|
|
+ /// <param name="waiting">是否等待到位, 默认为true</param>
|
|
|
|
|
+ /// <param name="distanceUnit">是否距离单位, true:毫米, false:电机步距</param>
|
|
|
|
|
+ /// <param name="inRange">可偏移的范围, 单位毫米或者步距</param>
|
|
|
|
|
+ /// <param name="safeCnd">安全条件, 运动中如果不满足该安全条件立即停止并报警</param>
|
|
|
|
|
+ /// <param name="onSuccess">运动完成后的回调动作</param>
|
|
|
|
|
+ /// <param name="onTimeout">超时未完成的回调动作</param>
|
|
|
|
|
+ /// <param name="checkCnd">检测的条件</param>
|
|
|
|
|
+ /// <param name="onChecked">满足检测条件的动作</param>
|
|
|
|
|
+ void MoveAxisAssemblePoints(string[] pointCodes, string speedCode = null,
|
|
|
|
|
+ bool waiting = true, double inRange = -1,
|
|
|
|
|
+ Action onSuccess = null, Action onTimeout = null);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 等待电机运动到位
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="axisCode">电机码</param>
|
|
|
|
|
+ /// <param name="timeout">超时时间</param>
|
|
|
|
|
+ /// <param name="inRange">可偏移的范围, 单位毫米或者步距</param>
|
|
|
|
|
+ /// <param name="safeCnd">安全条件, 运动中如果不满足该安全条件立即停止并报警</param>
|
|
|
|
|
+ /// <param name="onSuccess">运动完成后的回调动作</param>
|
|
|
|
|
+ /// <param name="onTimeout">超时未完成的回调动作</param>
|
|
|
|
|
+ /// <param name="checkCnd">检测的条件</param>
|
|
|
|
|
+ /// <param name="onChecked">满足检测条件的动作</param>
|
|
|
|
|
+ void WaitAxisDone(string axisCode, int timeout = 10000, double inRange = -1,
|
|
|
|
|
+ Action onSuccess = null, Action onTimeout = null);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 等待电机运动到位
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="motionAxis">电机对象</param>
|
|
|
|
|
+ /// <param name="timeout">超时时间</param>
|
|
|
|
|
+ /// <param name="inRange">可偏移的范围, 单位毫米或者步距</param>
|
|
|
|
|
+ /// <param name="onSuccess">运动完成后的回调动作</param>
|
|
|
|
|
+ /// <param name="onTimeout">超时未完成的回调动作</param>
|
|
|
|
|
+ void WaitAxisDone(MotionAxis motionAxis, int timeout = 10000, double inRange = -1,
|
|
|
|
|
+ Action onSuccess = null, Action onTimeout = null);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 等待点位上所有电机到位
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="pointCode">点位码</param>
|
|
|
|
|
+ /// <param name="timeout">超时时间</param>
|
|
|
|
|
+ /// <param name="inRange">可偏移的范围, 单位毫米或者步距</param>
|
|
|
|
|
+ /// <param name="onSuccess">运动完成后的回调动作</param>
|
|
|
|
|
+ /// <param name="onTimeout">超时未完成的回调动作</param>
|
|
|
|
|
+ void WaitAxisPointDone(string pointCode, int timeout = 10000, double inRange = -1,
|
|
|
|
|
+ Action onSuccess = null, Action onTimeout = null);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 等待点位上所有电机到位
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="processPoint">点位对象</param>
|
|
|
|
|
+ /// <param name="timeout">超时时间</param>
|
|
|
|
|
+ /// <param name="inRange">可偏移的范围, 单位毫米或者步距</param>
|
|
|
|
|
+ /// <param name="safeCnd">安全条件, 运动中如果不满足该安全条件立即停止并报警</param>
|
|
|
|
|
+ /// <param name="onSuccess">运动完成后的回调动作</param>
|
|
|
|
|
+ /// <param name="onTimeout">超时未完成的回调动作</param>
|
|
|
|
|
+ void WaitAxisPointDone(RecipePoint processPoint, int timeout = 10000, double inRange = -1,
|
|
|
|
|
+ Func<bool> safeCnd = null, Action onSuccess = null, Action onTimeout = null,
|
|
|
|
|
+ Func<bool> checkCnd = null, Action onChecked = null);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 等待电机组所有电机到位
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="axisCodes">电机码集合</param>
|
|
|
|
|
+ /// <param name="timeout">超时时间</param>
|
|
|
|
|
+ void WaitAxisGroupDone(List<string> axisCodes, int timeout = 10000);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 等待并阻塞当前线程, 直到满足特定条件
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="cndDone">完成条件 (满足后释放阻塞)</param>
|
|
|
|
|
+ /// <param name="onTimeout">超时动作</param>
|
|
|
|
|
+ /// <param name="timeout">超时时间(ms)</param>
|
|
|
|
|
+ /// <param name="interval">监测条件的间隔时间(ms)</param>
|
|
|
|
|
+ void WaitCndDone(Func<bool> cndDone, Action onTimeout, int timeout, int interval = 25);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 电机按一定速度持续运动, 非阻塞
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="axisCode">电机码</param>
|
|
|
|
|
+ /// <param name="speedCode">速度码</param>
|
|
|
|
|
+ /// <param name="direction">方向</param>
|
|
|
|
|
+ void MoveKeepAxis(string axisCode, string speedCode, ushort direction);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 电机相对运动
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="axisCode">电机码</param>
|
|
|
|
|
+ /// <param name="speedCode">速度码</param>
|
|
|
|
|
+ /// <param name="distance">距离</param>
|
|
|
|
|
+ /// <param name="waiting">是否等待</param>
|
|
|
|
|
+ void MoveAxisRel(string axisCode, string speedCode, double distance, bool waiting = true);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 电机绝对运动,确保回零后调用
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="axisCode">电机码</param>
|
|
|
|
|
+ /// <param name="speedCode">速度码</param>
|
|
|
|
|
+ /// <param name="position">坐标</param>
|
|
|
|
|
+ /// <param name="waiting">是否等待</param>
|
|
|
|
|
+ void MoveAxisAbs(string axisCode, string speedCode, double position, bool waiting = false);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 电机绝对运动,确保回零后调用
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="axisCode">电机码</param>
|
|
|
|
|
+ /// <param name="processSpeed">速度对象</param>
|
|
|
|
|
+ /// <param name="position">坐标</param>
|
|
|
|
|
+ /// <param name="waiting">是否等待</param>
|
|
|
|
|
+ void MoveAxisAbs(string axisCode, RecipeSpeed processSpeed, double position, bool waiting = false);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 停止单个电机
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="axisCode">电机码</param>
|
|
|
|
|
+ void StopAxis(string axisCode, bool waiting = false);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 停止多个电机
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="axisCodes">电机码集合</param>
|
|
|
|
|
+ void StopAxises(List<string> axisCodes);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 点位上多个电机停止运动
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="pointCode">点位码</param>
|
|
|
|
|
+ void StopAxisPoint(string pointCode);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 点位上多个电机急停
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="pointCode">点位码</param>
|
|
|
|
|
+ void StopAxisPointEmg(string pointCode);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 多个电机急停
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="axisCodes">电机码集合</param>
|
|
|
|
|
+ void StopAxisesEmg(List<string> axisCodes);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 所有电机停止
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ void StopAxisAll();
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 暂停一个电机运动
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="axisCode">电机码</param>
|
|
|
|
|
+ void PauseAxis(string axisCode);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 暂停一个点位上多个电机运动
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="pointCode">点位码</param>
|
|
|
|
|
+ void PauseAxisPoint(string pointCode);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 恢复一个电机运动
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="axisCode">电机码</param>
|
|
|
|
|
+ void ResumeAxis(string axisCode);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 暂停一个点位上多个电机运行
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="pointCode">点位码</param>
|
|
|
|
|
+ void ResumeAxisPoint(string pointCode);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 清除电机计数(反馈值与目标值)
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="axisCode">电机码</param>
|
|
|
|
|
+ void ClearAxisCounter(string axisCode);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 清除电机驱动器报警(部分驱动器可能无效)
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="axisCode">电机码</param>
|
|
|
|
|
+ void ClearAxisError(string axisCode);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 更新电机持续运行时的速度
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="axisCode">电机码</param>
|
|
|
|
|
+ /// <param name="speedCode">速度码</param>
|
|
|
|
|
+ void UpdateAxisKeepSpeed(string axisCode, string speedCode);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 更新电机持续运行时的速度.
|
|
|
|
|
+ /// [注意]速度单位是mm/s, 慎用
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="axisCode">电机码</param>
|
|
|
|
|
+ /// <param name="recipeSpeed">速度对象, 至少需要MaxVel、Acc、Dec 这3个属性</param>
|
|
|
|
|
+ void UpdateAxisKeepSpeed(string axisCode, RecipeSpeed recipeSpeed);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 更新电机点对点移动时的速度
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="axisCode">电机码</param>
|
|
|
|
|
+ /// <param name="speedCode">速度码</param>
|
|
|
|
|
+ void UpdateAxisMoveSpeed(string axisCode, string speedCode);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 更新电机点对点移动时的速度.
|
|
|
|
|
+ /// [注意]速度单位是mm/s, 慎用
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="axisCode">电机码</param>
|
|
|
|
|
+ /// <param name="recipeSpeed">速度对象, 至少需要MaxVel、Acc、Dec 这3个属性</param>
|
|
|
|
|
+ void UpdateAxisMoveSpeed(string axisCode, RecipeSpeed recipeSpeed);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 开始监测电机步距
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="axisCode">电机码</param>
|
|
|
|
|
+ /// <param name="ticks">时间周期, -1表示当前</param>
|
|
|
|
|
+ void StartAxisWatch(string axisCode, long ticks = -1);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 读取电机状态并获取对象
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="axisCode">电机码</param>
|
|
|
|
|
+ /// <returns>电机对象</returns>
|
|
|
|
|
+ MotionAxis ReadAxisStatus(string axisCode);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 读取电机状态
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="motionAxis">电机对象</param>
|
|
|
|
|
+ void ReadAxisStatus(MotionAxis motionAxis);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 电机到位判断
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="axisCode">电机码</param>
|
|
|
|
|
+ /// <returns>是否到位</returns>
|
|
|
|
|
+ bool AxisDoneCheck(string axisCode);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 多个电机到位判断, 如果其中一个电机未到位返回false
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="axisCodes">电机码</param>
|
|
|
|
|
+ /// <returns>是否到位</returns>
|
|
|
|
|
+ bool AxisDoneCheck(List<string> axisCodes);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 设置DO点开关值(会检测接口是否失效, 推荐气缸等动作IO使用)
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="doCode">DO码</param>
|
|
|
|
|
+ /// <param name="value">开关值</param>
|
|
|
|
|
+ /// <param name="logged">本次动作是否记录到日志</param>
|
|
|
|
|
+ void PushIO(string doCode, short value, bool logged = true);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 设置DO点开关值
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="doCode">DO码</param>
|
|
|
|
|
+ /// <param name="value">开关值</param>
|
|
|
|
|
+ /// <param name="logged">本次动作是否记录到日志</param>
|
|
|
|
|
+ void PushIO(string doCode, int value, bool logged = true);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 设置DO点开关值(不检测接口是否失效, 推荐指示灯等非动作IO使用)
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="doCode">DO码</param>
|
|
|
|
|
+ /// <param name="value">开关值</param>
|
|
|
|
|
+ /// <param name="logged">本次动作是否记录到日志</param>
|
|
|
|
|
+ void SetIO(string doCode, short value, bool logged = true);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 设置DO点开关值反向
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="doCode">DO码</param>
|
|
|
|
|
+ void PushIORev(string doCode);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 设置一对DO点开关值
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="do1Code">DO1码</param>
|
|
|
|
|
+ /// <param name="do1Value">DO1开关值</param>
|
|
|
|
|
+ /// <param name="do2Code">DO2码</param>
|
|
|
|
|
+ /// <param name="do2Value">DO2开关值</param>
|
|
|
|
|
+ void PushIOPair(string do1Code, short do1Value, string do2Code, short do2Value);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 获取DI开关值
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="diCode">DI码</param>
|
|
|
|
|
+ /// <param name="fromCache">是否从缓存获取</param>
|
|
|
|
|
+ /// <returns></returns>
|
|
|
|
|
+ short GetDiValue(string diCode, bool fromCache = true);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 读取一次DI开关值并写入cache, 同时返回该数值
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="diCode">DI码</param>
|
|
|
|
|
+ /// <returns></returns>
|
|
|
|
|
+ short ReadDiValue(string diCode);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 获取DO开关值
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="doCode">DO码</param>
|
|
|
|
|
+ /// <param name="fromCache">是否从缓存获取</param>
|
|
|
|
|
+ /// <returns></returns>
|
|
|
|
|
+ short GetDoValue(string doCode, bool fromCache = true);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 读取一次DO开关值并写入cache, 同时返回该数值
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="diCode">DI码</param>
|
|
|
|
|
+ /// <returns></returns>
|
|
|
|
|
+ short ReadDoValue(string doCode);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 获取模拟量数值
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="adCode">AD码</param>
|
|
|
|
|
+ /// <returns></returns>
|
|
|
|
|
+ short GetAdValue(string adCode);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 获取模拟量数值
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="adIndex">AD序号</param>
|
|
|
|
|
+ /// <returns></returns>
|
|
|
|
|
+ short GetAdValue(short adIndex);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 读取一次模拟量数值到MotionCacher的MotionAO中
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="adCode">AD码</param>
|
|
|
|
|
+ void ReadAdValue(string adCode);
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 读取一次模拟量数值到MotionCacher的MotionAO中
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="adIndex">AD序号</param>
|
|
|
|
|
+ void ReadAdValue(short adIndex);
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+}
|