| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662 |
- 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 Home(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 HomeFast(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 HomeReverse(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="index">绑定点位的电机序号, 0开头, 默认-1表示该点位的所有电机</param>
- /// <param name="negativeOffset">大于该点位的负方向距离</param>
- /// <param name="positiveOffset">小于该点位的正方向距离</param>
- /// <returns>是否满足位置条件</returns>
- bool CheckNear(string pointCode, short index = -1, double negativeOffset = 0.1, double positiveOffset = 0.1);
- /// <summary>
- /// 通过点位码驱动对应的Axis运动, speedRadio表示每秒旋转圈数
- /// </summary>
- /// <param name="pointCode">点位码</param>
- /// <param name="speedRound">电机每秒旋转圈数</param>
- /// <param name="waiting">是否等待到位, 默认为true</param>
- /// <param name="inRange">整定范围, 单位毫米或者步距</param>
- /// <param name="onSuccess">运动完成后的回调动作</param>
- /// <param name="onTimeout">超时未完成的回调动作</param>
- void MoveRound(string pointCode, double speedRound, 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="onSuccess">运动完成后的回调动作</param>
- /// <param name="onTimeout">超时未完成的回调动作</param>
- void MovePoint(string pointCode, string speedCode = null, bool waiting = true, double inRange = -1,
- Action onSuccess = null, Action onTimeout = null);
- /// <summary>
- /// 让绑定点位码的(多个)电机以指定速度运动到点位码
- /// </summary>
- /// <param name="recipePoint">点位对象</param>
- /// <param name="recipeSpeed">速度对象, null表示使用该点配置的默认速度</param>
- /// <param name="waiting">是否等待到位, 默认为true</param>
- /// <param name="inRange">整定范围, 单位毫米或者步距</param>
- /// <param name="onSuccess">运动完成后的回调动作</param>
- /// <param name="onTimeout">超时未完成的回调动作</param>
- void MovePoint(RecipePoint recipePoint, RecipeSpeed recipeSpeed = null, bool waiting = true, double inRange = -1,
- Action onSuccess = null, Action onTimeout = null);
- /// <summary>
- /// 让绑定点位码的(多个)电机以指定速度运动到点位码
- /// </summary>
- /// <param name="recipePoint">点位对象</param>
- /// <param name="speedCode">速度码, null表示使用该点配置的默认速度码</param>
- /// <param name="waiting">是否等待到位, 默认为true</param>
- /// <param name="inRange">整定范围, 单位毫米或者步距</param>
- /// <param name="onSuccess">运动完成后的回调动作</param>
- /// <param name="onTimeout">超时未完成的回调动作</param>
- void MovePoint(RecipePoint recipePoint, string speedCode = null, bool waiting = true, double inRange = -1,
- Action onSuccess = null, Action onTimeout = null);
- /// <summary>
- /// 让绑定点位码的(多个)电机以指定速度运动到点位码并能叠加指定偏移量
- /// </summary>
- /// <param name="pointCode">点位码</param>
- /// <param name="posOffsets">各个电机的偏移量数组, 需要按电机绑定顺序赋值</param>
- /// <param name="speedCode">速度码, null表示使用该点配置的默认速度码</param>
- /// <param name="waiting">是否等待到位, 默认为true</param>
- /// <param name="inRange">整定范围, 单位毫米或者步距</param>
- /// <param name="onSuccess">运动完成后的回调动作</param>
- /// <param name="onTimeout">超时未完成的回调动作</param>
- void MovePointFix(string pointCode, double[] posOffsets, string speedCode = null, bool waiting = true, double inRange = -1,
- Action onSuccess = null, Action onTimeout = null);
- /// <summary>
- /// 让绑定点位码的(多个)电机以指定速度运动到点位码,并能叠加指定偏移量
- /// </summary>
- /// <param name="recipePoint">点位对象</param>
- /// <param name="posOffsets">各个电机的偏移量数组, 需要按电机绑定顺序赋值</param>
- /// <param name="speedCode">速度码, null表示使用该点配置的默认速度码</param>
- /// <param name="waiting">是否等待到位, 默认为true</param>
- /// <param name="inRange">整定范围, 单位毫米或者步距</param>
- /// <param name="onSuccess">运动完成后的回调动作</param>
- /// <param name="onTimeout">超时未完成的回调动作</param>
- void MovePointFix(RecipePoint recipePoint, double[] posOffsets, string speedCode = null, bool waiting = true, double inRange = -1,
- Action onSuccess = null, Action onTimeout = null);
- /// <summary>
- /// 让绑定点位码的(多个)电机以指定速度运动到点位码,并能叠加指定偏移量
- /// </summary>
- /// <param name="recipePoint">点位对象</param>
- /// <param name="posOffsets">各个电机的偏移量数组, 需要按电机绑定顺序赋值</param>
- /// <param name="recipeSpeed">速度对象, null表示使用该点配置的默认速度</param>
- /// <param name="waiting">是否等待到位, 默认为true</param>
- /// <param name="inRange">整定范围, 单位毫米或者步距</param>
- /// <param name="onSuccess">运动完成后的回调动作</param>
- /// <param name="onTimeout">超时未完成的回调动作</param>
- void MovePointFix(RecipePoint recipePoint, double[] posOffsets, RecipeSpeed recipeSpeed = null, bool waiting = true, double inRange = -1,
- Action onSuccess = null, Action onTimeout = null);
- /// <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 MovePointOne(string pointCode, string axisCode, string speedCode = null,
- bool waiting = true, double inRange = -1,
- Action onSuccess = null, Action onTimeout = null);
- /// <summary>
- /// 让绑定点位码的指定单个电机以指定速度运动到点位码
- /// </summary>
- /// <param name="recipePoint">点位对象</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 MovePointOne(RecipePoint recipePoint, string axisCode, string speedCode = null,
- bool waiting = true, double inRange = -1,
- Action onSuccess = null, Action onTimeout = null);
- /// <summary>
- /// 让绑定点位码的指定单个电机以指定速度运动到点位码
- /// </summary>
- /// <param name="recipePoint">点位对象</param>
- /// <param name="axisCode">指定电机的电机码</param>
- /// <param name="recipeSpeed">速度对象, null表示使用该点配置的默认速度</param>
- /// <param name="waiting">是否等待到位, 默认为true</param>
- /// <param name="inRange">整定范围, 单位毫米或者步距</param>
- /// <param name="onSuccess">运动完成后的回调动作</param>
- /// <param name="onTimeout">超时未完成的回调动作</param>
- void MovePointOne(RecipePoint recipePoint, string axisCode, RecipeSpeed recipeSpeed = null,
- bool waiting = true, double inRange = -1,
- Action onSuccess = null, Action onTimeout = null);
- /// <summary>
- /// 让绑定点位码的指定单个电机以指定速度运动到点位码,并能叠加指定偏移量
- /// </summary>
- /// <param name="pointCode">点位码</param>
- /// <param name="fixset">基于点位的偏移量(mm)</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 MovePointOneFix(string pointCode, double fixset, string axisCode, string speedCode = null,
- bool waiting = true, double inRange = -1,
- Action onSuccess = null, Action onTimeout = null);
- /// <summary>
- /// 让绑定点位码的指定单个电机以指定速度运动到点位码,并能叠加指定偏移量
- /// </summary>
- /// <param name="recipePoint">点位对象</param>
- /// <param name="fixset">基于点位的偏移量(mm)</param>
- /// <param name="axisCode">指定电机的电机码</param>
- /// <param name="recipeSpeed">速度对象, null表示使用该点配置的默认速度</param>
- /// <param name="waiting">是否等待到位, 默认为true</param>
- /// <param name="inRange">整定范围, 单位毫米或者步距</param>
- /// <param name="onSuccess">运动完成后的回调动作</param>
- /// <param name="onTimeout">超时未完成的回调动作</param>
- void MovePointOneFix(RecipePoint recipePoint, double fixset, string axisCode, RecipeSpeed recipeSpeed = null,
- bool waiting = true, double inRange = -1,
- Action onSuccess = null, Action onTimeout = null);
- /// <summary>
- /// 让绑定点位码的指定单个电机以指定速度运动到点位码,并能叠加指定偏移量
- /// </summary>
- /// <param name="recipePoint">点位对象</param>
- /// <param name="fixset">基于点位的偏移量(mm)</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 MovePointOneFix(RecipePoint recipePoint, double fixset, string axisCode, string speedCode = null,
- bool waiting = true, double inRange = -1,
- Action onSuccess = null, Action onTimeout = null);
- /// <summary>
- /// 聚合多个点位码并同时运动
- /// </summary>
- /// <param name="recipePoints">需要聚合运动的点位对象集合</param>
- /// <param name="waiting">是否等待到位, 默认为true</param>
- /// <param name="inRange">整定范围, 单位毫米或者步距</param>
- /// <param name="sync">是否同步到达,false: 使用recipeSpeed的速度,true:以recipeSpeed为基准,调整各点位速度</param>
- /// <param name="onSuccess">运动完成后的回调动作</param>
- /// <param name="onTimeout">超时未完成的回调动作</param>
- void MovePoints(List<RecipePoint> recipePoints, RecipeSpeed recipeSpeed,
- bool waiting = true, double inRange = -1, bool sync = false,
- Action onSuccess = null, Action onTimeout = null);
- /// <summary>
- /// 聚合多个点位码并同时运动
- /// </summary>
- /// <param name="pointCodes">需要聚合运动的点位码集合</param>
- /// <param name="speedCode">速度码, null表示使用各点位的默认速度码</param>
- /// <param name="waiting">是否等待到位, 默认为true</param>
- /// <param name="inRange">整定范围, 单位毫米或者步距</param>
- /// <param name="sync">是否同步到达,false: 使用各自的点位中的速度,true:以speedCode为基准,调整各点位速度</param>
- /// <param name="onSuccess">运动完成后的回调动作</param>
- /// <param name="onTimeout">超时未完成的回调动作</param>
- void MovePoints(string[] pointCodes, string speedCode = null,
- bool waiting = true, double inRange = -1, bool sync = false,
- Action onSuccess = null, Action onTimeout = null);
- /// <summary>
- /// 等待电机运动到位
- /// </summary>
- /// <param name="axisCode">电机码</param>
- /// <param name="timeout">超时时间</param>
- /// <param name="inRange">整定范围, 单位毫米或者步距</param>
- /// <param name="onSuccess">运动完成后的回调动作</param>
- /// <param name="onTimeout">超时未完成的回调动作</param>
- void WaitAxis(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 WaitAxis(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 WaitPoint(string pointCode, int timeout = 10000, double inRange = -1,
- Action onSuccess = null, Action onTimeout = null);
- /// <summary>
- /// 等待点位上所有电机到位
- /// </summary>
- /// <param name="recipePoint">点位对象</param>
- /// <param name="timeout">超时时间</param>
- /// <param name="inRange">整定范围, 单位毫米或者步距</param>
- /// <param name="safeCnd">安全条件, 运动中如果不满足该安全条件立即停止并报警</param>
- /// <param name="onSuccess">运动完成后的回调动作</param>
- /// <param name="onTimeout">超时未完成的回调动作</param>
- void WaitPoint(RecipePoint recipePoint, int timeout = 10000, double inRange = -1,
- Action onSuccess = null, Action onTimeout = null);
- /// <summary>
- /// 等待电机组所有电机到位
- /// </summary>
- /// <param name="axisCodes">电机码集合</param>
- /// <param name="timeout">超时时间</param>
- void WaitGroup(List<string> axisCodes, int timeout = 10000);
- /// <summary>
- /// 等待并阻塞当前线程, 直到满足特定条件
- /// </summary>
- /// <param name="cndDone">完成条件 (满足后释放阻塞)</param>
- /// <param name="onTimeout">超时动作</param>
- /// <param name="timeout">超时时间(ms)</param>
- void WaitCnd(Func<bool> cndDone, Action onTimeout, int timeout);
- /// <summary>
- /// 电机按一定速度持续运动, 非阻塞
- /// </summary>
- /// <param name="axisCode">电机码</param>
- /// <param name="speedCode">速度码</param>
- /// <param name="direction">方向</param>
- void MoveKeep(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 MoveRel(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 MoveAbs(string axisCode, string speedCode, double position, bool waiting = false);
- /// <summary>
- /// 电机绝对运动,确保回零后调用
- /// </summary>
- /// <param name="axisCode">电机码</param>
- /// <param name="recipeSpeed">速度对象</param>
- /// <param name="position">坐标</param>
- /// <param name="waiting">是否等待</param>
- void MoveAbs(string axisCode, RecipeSpeed recipeSpeed, double position, bool waiting = false);
- /// <summary>
- /// 停止单个电机
- /// </summary>
- /// <param name="axisCode">电机码</param>
- void Stop(string axisCode, bool waiting = false);
- /// <summary>
- /// 停止多个电机
- /// </summary>
- /// <param name="axisCodes">电机码集合</param>
- void Stop(List<string> axisCodes);
- /// <summary>
- /// 点位上多个电机停止运动
- /// </summary>
- /// <param name="pointCode">点位码</param>
- void StopPoint(string pointCode);
- /// <summary>
- /// 所有电机停止
- /// </summary>
- void StopAll();
- /// <summary>
- /// 暂停一个电机运动
- /// </summary>
- /// <param name="axisCode">电机码</param>
- void Pause(string axisCode);
- /// <summary>
- /// 暂停一个点位上多个电机运动
- /// </summary>
- /// <param name="pointCode">点位码</param>
- void PausePoint(string pointCode);
- /// <summary>
- /// 恢复一个电机运动
- /// </summary>
- /// <param name="axisCode">电机码</param>
- void Resume(string axisCode);
- /// <summary>
- /// 暂停一个点位上多个电机运行
- /// </summary>
- /// <param name="pointCode">点位码</param>
- void ResumePoint(string pointCode);
- /// <summary>
- /// 清除电机计数(反馈值与目标值)
- /// </summary>
- /// <param name="axisCode">电机码</param>
- void ClearCounter(string axisCode);
- /// <summary>
- /// 清除电机驱动器报警(部分驱动器可能无效)
- /// </summary>
- /// <param name="axisCode">电机码</param>
- void ClearError(string axisCode);
- /// <summary>
- /// 更新电机持续运行时的速度
- /// </summary>
- /// <param name="axisCode">电机码</param>
- /// <param name="speedCode">速度码</param>
- void UpdateKeepSpeed(string axisCode, string speedCode);
- /// <summary>
- /// 更新电机持续运行时的速度.
- /// [注意]速度单位是mm/s, 慎用
- /// </summary>
- /// <param name="axisCode">电机码</param>
- /// <param name="recipeSpeed">速度对象, 至少需要MaxVel、Acc、Dec 这3个属性</param>
- void UpdateKeepSpeed(string axisCode, RecipeSpeed recipeSpeed);
- /// <summary>
- /// 更新电机点对点移动时的速度
- /// </summary>
- /// <param name="axisCode">电机码</param>
- /// <param name="speedCode">速度码</param>
- void UpdateMoveSpeed(string axisCode, string speedCode);
- /// <summary>
- /// 更新电机点对点移动时的速度.
- /// [注意]速度单位是mm/s, 慎用
- /// </summary>
- /// <param name="axisCode">电机码</param>
- /// <param name="recipeSpeed">速度对象, 至少需要MaxVel、Acc、Dec 这3个属性</param>
- void UpdateMoveSpeed(string axisCode, RecipeSpeed recipeSpeed);
- /// <summary>
- /// 开始监测电机步距
- /// </summary>
- /// <param name="axisCode">电机码</param>
- /// <param name="ticks">时间周期, -1表示当前</param>
- void StartWatch(string axisCode, long ticks = -1);
- /// <summary>
- /// 读取电机状态并获取对象
- /// </summary>
- /// <param name="axisCode">电机码</param>
- /// <returns>电机对象</returns>
- MotionAxis ReadStatus(string axisCode);
- /// <summary>
- /// 读取电机状态
- /// </summary>
- /// <param name="motionAxis">电机对象</param>
- void ReadStatus(MotionAxis motionAxis);
- /// <summary>
- /// 电机到位判断
- /// </summary>
- /// <param name="axisCode">电机码</param>
- /// <returns>是否到位</returns>
- bool CheckDone(string axisCode);
- /// <summary>
- /// 多个电机到位判断, 如果其中一个电机未到位返回false
- /// </summary>
- /// <param name="axisCodes">电机码</param>
- /// <returns>是否到位</returns>
- bool CheckDone(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);
- }
- }
|