| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398 |
- using Cognex.VisionPro;
- using Cognex.VisionPro.ToolBlock;
- using System;
- using System.Collections.Generic;
- using System.Threading;
- using System.Threading.Tasks;
- using Team.FFFeederService.Interfaces;
- using TeamAAS_VP.Models;
- using TeamAAS_VP.Models.Feeder;
- namespace TeamAAS_VP.Interfaces
- {
- public interface IRemoteCommandService : IDisposable
- {
- /// <summary>
- /// 是否正在执行命令
- /// </summary>
- bool IsExecuting { get; }
- /// <summary>
- /// 是否正在执行视觉命令
- /// </summary>
- bool IsExecutingVisionCommand { get; }
- /// <summary>
- /// 节拍计时通知事件
- /// </summary>
- event EventHandler<TimeSpan> CycleTimingTicked;
- /// <summary>
- /// Execute a remote command string
- /// </summary>
- /// <param name="command"></param>
- /// <param name="cancellationToken"></param>
- /// <param name="callback"></param>
- /// <returns></returns>
- Task ExecuteAsync(string command, CancellationToken cancellationToken, Action<string> callback);
- /// <summary>
- /// 加载产品
- /// </summary>
- /// <param name="productName"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<bool> LoadProductAsync(string productName, CancellationToken cancellationToken);
- /// <summary>
- /// 通过产品编号获取产品名称
- /// </summary>
- /// <param name="productNumber"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<string> GetProductNameByNumberAsync(int productNumber, CancellationToken cancellationToken);
- /// <summary>
- /// 通过产品名称获取产品编号
- /// </summary>
- /// <param name="productName"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<int> GetProductNumberByNameAsync(string productName, CancellationToken cancellationToken);
- /// <summary>
- /// 获取当前产品名称
- /// </summary>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<string> GetCurrentProductNameAsync(CancellationToken cancellationToken);
- /// <summary>
- /// 获取当前产品编号
- /// </summary>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<int> GetCurrentProductNumberAsync(CancellationToken cancellationToken);
- /// <summary>
- /// 通过机器人编号和点位编号获取机器人点位信息
- /// </summary>
- /// <param name="robotNumber"></param>
- /// <param name="pointNumber"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<string> GetRobotPointInfoAsync(int robotNumber, int pointNumber, CancellationToken cancellationToken);
- /// <summary>
- /// 通过机器人编号和托盘编号、点编号获取机器人托盘点位信息
- /// </summary>
- /// <param name="robotNumber">机器人编号</param>
- /// <param name="palletNumber">托盘编号</param>
- /// <param name="pointNumber">点编号</param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<string> GetRobotPalletPointInfoAsync(int robotNumber, int palletNumber, int pointNumber, CancellationToken cancellationToken);
- /// <summary>
- /// 开始节拍计时
- /// </summary>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<bool> StartCycleTimingAsync(CancellationToken cancellationToken);
- /// <summary>
- /// 停止节拍计时
- /// </summary>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<bool> StopCycleTimingAsync(CancellationToken cancellationToken);
- /// <summary>
- /// 新增一条生产计数记录
- /// </summary>
- /// <param name="countItem"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<bool> CreateProductionCountAsync(string countItem, CancellationToken cancellationToken);
- /// <summary>
- /// 获取当前生产计数
- /// </summary>
- /// <param name="countItem"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<int> GetCurrentProductionCountAsync(string countItem, CancellationToken cancellationToken);
- /// <summary>
- /// 重置生产计数
- /// </summary>
- /// <param name="countItem"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<bool> ResetProductionCountAsync(string countItem, CancellationToken cancellationToken);
- /// <summary>
- /// 记录一条报警信息
- /// </summary>
- /// <param name="alarmCode"></param>
- /// <param name="alarmDescription"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<bool> CreateAlarmRecordAsync(string alarmCode, string alarmDescription, CancellationToken cancellationToken);
- /// <summary>
- /// 记录一条操作信息日志
- /// </summary>
- /// <param name="logMessage"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<bool> CreateOperationLogAsync(string logMessage, CancellationToken cancellationToken);
- /// <summary>
- /// 获取当前产品指定编号的全局参数
- /// </summary>
- /// <param name="parameterNumber"></param>
- /// <param name="itemIndex"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<string> GetGlobalParameterAsync(int parameterNumber, int itemIndex, CancellationToken cancellationToken);
- /// <summary>
- /// 获取当前产品运行速度参数
- /// </summary>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<string> GetOperationSpeedAsync(CancellationToken cancellationToken);
- /// <summary>
- /// 获取末端工具参数信息,包括流程触发命令和工具编号
- /// </summary>
- /// <param name="triggerCommand"></param>
- /// <param name="toolNumber"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<string> GetToolParamAsync(string triggerCommand, int toolNumber, CancellationToken cancellationToken);
- /// <summary>
- /// 获取流程参数信息,包括流程触发命令
- /// </summary>
- /// <param name="triggerCommand"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<string> GetProcessParamAsync(string triggerCommand, CancellationToken cancellationToken);
- /// <summary>
- /// 执行清料任务
- /// </summary>
- /// <param name="taskNumber"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<bool> ExecuteClearMaterialTaskAsync(int taskNumber, CancellationToken cancellationToken);
- /// <summary>
- /// 停止清料任务
- /// </summary>
- /// <param name="taskNumber"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<bool> StopClearMaterialTaskAsync(int taskNumber, CancellationToken cancellationToken);
- /// <summary>
- /// 获取机器人是否处于调试模式
- /// </summary>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<bool> IsRobotInDebugModeAsync(int robotNumber, CancellationToken cancellationToken);
- /// <summary>
- /// 执行视觉任务
- /// </summary>
- /// <param name="procedure">流程</param>
- /// <param name="items">命令参数</param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<(bool IsSucceed, string[] Response)> ExecuteVisionTaskAsync(ProcedureModel procedure, string[] items, CancellationToken cancellationToken);
- /// <summary>
- /// 执行Feeder视觉引导任务
- /// </summary>
- /// <param name="feeder"></param>
- /// <param name="procedure"></param>
- /// <param name="items"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<(bool IsSucceed, string[] Response)> ExecuteFeederVisionTaskAsync(IVoiceCoilMotorFeeder feeder, ProcedureModel procedure, string[] items, CancellationToken cancellationToken);
- /// <summary>
- /// 执行普通视觉任务
- /// </summary>
- /// <param name="procedure"></param>
- /// <param name="items"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<(bool IsSucceed, string Response)> ExecuteNormalVisionTaskAsync(ProcedureModel procedure, string[] items, CancellationToken cancellationToken);
- /// <summary>
- /// 执行相机拍照
- /// </summary>
- /// <param name="procedure"></param>
- /// <param name="InputTerminal"></param>
- /// <param name="outputCollection"></param>
- /// <returns></returns>
- Task<(bool Success, CogToolBlockTerminalCollection OutputCollection)> ExecutePhotoAsync(ProcedureModel procedure, Dictionary<string, string> InputTerminal);
- /// <summary>
- /// 执行相机拍照流程运行
- /// </summary>
- /// <param name="procedure"></param>
- /// <returns></returns>
- Task<(bool Success, CogToolBlockTerminalCollection OutputCollection)> ExecutePhotoAsync(ProcedureModel procedure);
- /// <summary>
- /// 执行相机拍照并运行 ToolBlock
- /// </summary>
- /// <param name="procedure"></param>
- /// <param name="InputTerminal"></param>
- /// <returns></returns>
- Task<(bool Success, CogToolBlockTerminalCollection OutputCollection)> ExecutePhoto2Async(ProcedureModel procedure, Dictionary<string, string> InputTerminal);
- /// <summary>
- /// 执行相机拍照获取单个点位结果
- /// </summary>
- /// <param name="procedure"></param>
- /// <param name="InputTerminal"></param>
- /// <param name="robotCoord"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<(bool IsSucceed, double X, double Y, double U)> ExecutePhotoGetSinglePoint(ProcedureModel procedure, Dictionary<string, string> InputTerminal, double[] robotCoord, CancellationToken cancellationToken);
- /// <summary>
- /// 采集图像
- /// </summary>
- /// <param name="procedure"></param>
- /// <returns></returns>
- Task<(bool IsSucceed, ICogImage[] Image, string Msg)> ExecuteGrabImageAsync(ProcedureModel procedure,bool Is3dPhoto, SystemConfiguration sysConfig);
- /// <summary>
- /// 执行相机拍照获取多个点位结果
- /// </summary>
- /// <param name="procedure"></param>
- /// <param name="InputTerminal"></param>
- /// <param name="robotCoord"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<(bool IsSucceed, string[] Items, double Count)> ExecutePhotoGetSinglePoint1(ProcedureModel procedure, ICogImage[] imges, Dictionary<string, string> InputTerminal, double[] robotCoord, CancellationToken cancellationToken,bool is3dmodel, float confThreshold = 0.25f, float iouThreshold = 0.45f);
- /// <summary>
- /// 执行相机拍照获取多个点位结果
- /// </summary>
- /// <param name="procedure"></param>
- /// <param name="InputTerminal"></param>
- /// <param name="robotCoord"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<(bool IsSucceed, string[] Items, double Count)> ExecutePhotoGetSinglePoint1(ProcedureModel procedure, Dictionary<string, string> InputTerminal, double[] robotCoord, CancellationToken cancellationToken);
- /// <summary>
- /// 执行相机拍照获取单个点位结果
- /// </summary>
- /// <param name="procedure"></param>
- /// <param name="InputTerminal"></param>
- /// <param name="robotCoord"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<(bool IsSucceed, string X, double Y, double U)> ExecutePhotoGetSinglePoint2(ProcedureModel procedure, Dictionary<string, string> InputTerminal, double[] robotCoord, CancellationToken cancellationToken);
- /// <summary>
- /// 执行相机拍照获取单个点位结果,并且返回图像和图形
- /// </summary>
- /// <param name="procedure"></param>
- /// <param name="InputTerminal"></param>
- /// <param name="robotCoord"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task<(bool IsSucceed, double X, double Y, double U, ICogImage Image, CogGraphicCollection Graphic)> ExecutePhotoGetSinglePointWithImage(ProcedureModel procedure, Dictionary<string, string> InputTerminal, double[] robotCoord, CancellationToken cancellationToken);
- /// <summary>
- /// 获取视觉输出
- /// </summary>
- /// <param name="procedure"></param>
- /// <param name="outputCollection"></param>
- /// <param name="robotPos"></param>
- /// <returns></returns>
- (bool IsSucceed, string ErrMsg, Dictionary<string, (bool IsPoint, object Value)> Output) GetVisionOutput(ProcedureModel procedure, CogToolBlockTerminalCollection outputCollection, double[] robotPos);
- /// <summary>
- /// Feeder拍照前的准备动作
- /// </summary>
- /// <param name="Feeder"></param>
- /// <param name="procedure"></param>
- /// <param name="doVibrateFirst"></param>
- /// <param name="doCaptureFirst"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task ExecuteFeederForPhotoBefore(IVoiceCoilMotorFeeder Feeder, ProcedureModel procedure, bool doVibrateFirst, bool doCaptureFirst, CancellationToken cancellationToken);
- /// <summary>
- /// Feeder拍照后且失败时,执行Feeder
- /// </summary>
- /// <param name="Feeder"></param>
- /// <param name="procedure"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task ExecuteFeederForPhotoLater(IVoiceCoilMotorFeeder Feeder, ProcedureModel procedure, CancellationToken cancellationToken);
- /// <summary>
- /// 执行Feeder料仓供料及振动任务
- /// </summary>
- /// <param name="feeder"></param>
- /// <param name="works"></param>
- /// <param name="cancellationToken"></param>
- /// <param name="isUpdateParame"></param>
- /// <returns></returns>
- Task ExecuteFeederStockWorks(IVoiceCoilMotorFeeder feeder, FeederStockWorks works, CancellationToken cancellationToken, bool isUpdateParame = true);
- /// <summary>
- /// 执行料仓振动任务
- /// </summary>
- /// <param name="feeder"></param>
- /// <param name="works"></param>
- /// <param name="cancellationToken"></param>
- /// <returns></returns>
- Task ExecuteFeederStockWorksOnly(IVoiceCoilMotorFeeder feeder, FeederStockWork[] works, CancellationToken cancellationToken);
- /// <summary>
- /// 执行Feeder振动动作
- /// </summary>
- /// <param name="feeder"></param>
- /// <param name="works"></param>
- /// <param name="cancellationToken"></param>
- /// <param name="isUpdateParame"></param>
- /// <returns></returns>
- Task ExecuteFeederWorkOnly(IVoiceCoilMotorFeeder feeder, FeederWork[] works, CancellationToken cancellationToken, bool isUpdateParame = true);
- /// <summary>
- /// 执行Feeder振动集合
- /// </summary>
- /// <param name="feeder"></param>
- /// <param name="works"></param>
- /// <param name="cancellationToken"></param>
- /// <param name="isUpdateParame"></param>
- /// <returns></returns>
- Task ExecuteFeederWorks(IVoiceCoilMotorFeeder feeder, FeederWorks works, CancellationToken cancellationToken, bool isUpdateParame = true);
- /// <summary>
- /// 拍照前设置光源亮度和打开光源
- /// </summary>
- /// <param name="procedure">流程模型</param>
- /// <returns></returns>
- Task SetLightBeforePhoto(ProcedureModel procedure);
- /// <summary>
- /// 拍照后关闭光源
- /// </summary>
- /// <param name="procedure">流程模型</param>
- /// <returns></returns>
- Task TurnOffLightAfterPhoto(ProcedureModel procedure);
- }
- }
|