DeviceAGV.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. using IMCS.DefaultList;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace IMCS.Device
  8. {
  9. public class DeviceAGV
  10. {
  11. /*单例模式*/
  12. public DeviceAGV()
  13. {
  14. }
  15. /// <summary>
  16. /// 当前任务编号
  17. /// </summary>
  18. public string reqCode { get; set; }
  19. /*生成任务单*/
  20. /// <summary>
  21. /// 生成任务订单
  22. /// </summary>
  23. /// <param name="taskType">任务类型</param>
  24. /// <param name="startPosition">起点坐标</param>
  25. /// <param name="startType">起点类型</param>
  26. /// <param name="endPosition">终点坐标</param>
  27. /// <param name="endType">终点类型</param>
  28. public AGVRequestDefaultList AGV_SendTask(string taskType, string startPosition, string startType, string endPosition, string endType)
  29. {
  30. IMCS.DefaultList.AGVRequestDefaultList aGVRequestDefaultList = new DefaultList.AGVRequestDefaultList();
  31. aGVRequestDefaultList.reqCode = Guid.NewGuid().ToString().Substring(0, 30);
  32. reqCode = aGVRequestDefaultList.reqCode;
  33. aGVRequestDefaultList.taskTyp = taskType;// "F01";
  34. aGVRequestDefaultList.positionCodePath = new List<DefaultList.AGVPositionCodePathList>() { new DefaultList.AGVPositionCodePathList() {
  35. // positionCode="p001", type="02"
  36. positionCode=startPosition, type=startType
  37. },
  38. new DefaultList.AGVPositionCodePathList(){ positionCode=endPosition, type=endType }
  39. };
  40. //aGVRequestDefaultList.tokenCode = "";
  41. //aGVRequestDefaultList.ctnrTyp = "";
  42. //aGVRequestDefaultList.ctnrCode = "";
  43. //aGVRequestDefaultList.wbCode = "";
  44. //aGVRequestDefaultList.positionCodePath = new List<DefaultList.AGVPositionCodePathList>() { new DefaultList.AGVPositionCodePathList() { positionCode="p001", type="02" } };
  45. //aGVRequestDefaultList.podCode = "";
  46. //aGVRequestDefaultList.podDir = "";
  47. //aGVRequestDefaultList.podTyp = "-1";
  48. //aGVRequestDefaultList.materialLot = "";
  49. //aGVRequestDefaultList.priority = "1";
  50. //aGVRequestDefaultList.agvCode = "";
  51. //aGVRequestDefaultList.taskCode = "";
  52. //aGVRequestDefaultList.data = "";
  53. return aGVRequestDefaultList;
  54. }
  55. /* 继续执行任务*/
  56. /// <summary>
  57. /// 继续执行任务
  58. /// </summary>
  59. /// <param name="reqCode">继续执行的任务id</param>
  60. public AGVRequestDefaultList AGV_ContinuTask(string reqCode)
  61. {
  62. IMCS.DefaultList.AGVRequestDefaultList aGVRequestDefaultList = new DefaultList.AGVRequestDefaultList();
  63. aGVRequestDefaultList.reqCode = reqCode;
  64. return aGVRequestDefaultList;
  65. }
  66. /*取消任务*/
  67. /// <summary>
  68. /// 取消任务
  69. /// </summary>
  70. /// <param name="reqCode">需要取消的任务ID</param>
  71. public AGVRequestDefaultList AGV_CancelTask(string reqCode)
  72. {
  73. IMCS.DefaultList.AGVRequestDefaultList aGVRequestDefaultList = new DefaultList.AGVRequestDefaultList();
  74. aGVRequestDefaultList.reqCode = reqCode;
  75. return aGVRequestDefaultList;
  76. }
  77. /*任务执行通知*/
  78. /// <summary>
  79. /// 任务执行通知
  80. /// </summary>
  81. /// <param name="taskcode">当前任务编号</param>
  82. /// <param name="currentPositionCode">当前位置编号
  83. ///任务开始:该位置为任务起点
  84. ///走出储位:该位置为任务起点
  85. ///任务单取消:该位置为工作位编号
  86. ///任务结束:该位置为任务终点</param>
  87. /// <param name="method">方法名, 可使用任务类型做为方法
  88. ///名由 RCS-2000 任务模板配置后并告知上层系统
  89. ///默认使用方式:
  90. ///RCS-2000 接口协议 对外发布
  91. ///start : 任务开始
  92. ///outbin : 走出储位
  93. ///end : 任务结束
  94. ///cancel : 任务单取消</param>
  95. /// <param name="robotCode">AGV 编号(同 agvCode </param>
  96. /// <returns></returns>
  97. public AGVRequestDefaultList AGV_agvCallback(string taskcode, string currentPositionCode, string method, string robotCode)
  98. {
  99. IMCS.DefaultList.AGVRequestDefaultList aGVRequestDefaultList = new DefaultList.AGVRequestDefaultList();
  100. aGVRequestDefaultList.reqCode = Guid.NewGuid().GuidLeng();
  101. aGVRequestDefaultList.reqTime = DateTime.Now.DateTimeToString();
  102. aGVRequestDefaultList.currentPositionCode = currentPositionCode;
  103. aGVRequestDefaultList.method = method;
  104. aGVRequestDefaultList.robotCode = robotCode;
  105. aGVRequestDefaultList.taskCode = taskcode;
  106. return aGVRequestDefaultList;
  107. }
  108. /*任务优先级设置*/
  109. /// <summary>
  110. /// 任务优先级设置
  111. /// </summary>
  112. /// <param name="taskCode">当前需要设置优先级的任务id</param>
  113. /// <param name="priority">当前任务优先级1-127 值越大,等级越高</param>
  114. /// <returns></returns>
  115. public AGVRequestDefaultList AGV_setTaskPriority(string taskCode, string priority)
  116. {
  117. IMCS.DefaultList.AGVRequestDefaultList aGVRequestDefaultList = new DefaultList.AGVRequestDefaultList();
  118. aGVRequestDefaultList.reqCode = Guid.NewGuid().GuidLeng();
  119. aGVRequestDefaultList.priority = new List<AGVPrioritiesList>() { new AGVPrioritiesList() { taskCode = taskCode, priority = priority } };
  120. return aGVRequestDefaultList;
  121. }
  122. /// <summary>
  123. /// 任务优先级设置
  124. /// </summary>
  125. /// <param name="priorities">当前所需调整优先级的列表</param>
  126. /// <returns></returns>
  127. public AGVRequestDefaultList AGV_setTaskPriority(List<AGVPrioritiesList> priorities)
  128. {
  129. IMCS.DefaultList.AGVRequestDefaultList aGVRequestDefaultList = new DefaultList.AGVRequestDefaultList();
  130. aGVRequestDefaultList.reqCode = Guid.NewGuid().GuidLeng();
  131. aGVRequestDefaultList.priority = priorities;
  132. return aGVRequestDefaultList;
  133. }
  134. /*货架与位置绑定,解绑*/
  135. /// <summary>
  136. /// 货架与位置绑定,解绑
  137. /// </summary>
  138. /// <param name="reqCode">任务编号</param>
  139. /// <param name="podCode">货架编号</param>
  140. /// <param name="positionCode">位置编号,地图位置的别名,能任
  141. ///意命名(字母+数字),但要唯一,由
  142. ///RCS-2000 界面配置。</param>
  143. /// <param name="agv_Enable">绑定或解绑</param>
  144. /// <returns></returns>
  145. public AGVRequestDefaultList AGV_bindPodAndBerth(string reqCode, string podCode, string positionCode, bool agv_Enable)
  146. {
  147. IMCS.DefaultList.AGVRequestDefaultList aGVRequestDefaultList = new DefaultList.AGVRequestDefaultList();
  148. aGVRequestDefaultList.reqCode = reqCode;
  149. aGVRequestDefaultList.podCode = podCode;
  150. aGVRequestDefaultList.positionCode = positionCode;
  151. aGVRequestDefaultList.indBind = agv_Enable.BoolToInt().ToString();
  152. return aGVRequestDefaultList;
  153. }
  154. /// <summary>
  155. /// 货架与物料绑定、解绑
  156. /// </summary>
  157. /// <param name="reqCode">任务编号</param>
  158. /// <param name="podCode">货架编号</param>
  159. /// <param name="materialLot">物料批次</param>
  160. /// <param name="agv_Enable">绑定或解绑</param>
  161. /// <returns></returns>
  162. public AGVRequestDefaultList AGV_bindPodAndMat(string reqCode, string podCode, string materialLot, bool agv_Enable)
  163. {
  164. IMCS.DefaultList.AGVRequestDefaultList aGVRequestDefaultList = new DefaultList.AGVRequestDefaultList();
  165. aGVRequestDefaultList.reqCode = reqCode;
  166. aGVRequestDefaultList.podCode = podCode;
  167. aGVRequestDefaultList.materialLot = materialLot;
  168. aGVRequestDefaultList.indBind = agv_Enable.BoolToInt().ToString();
  169. return aGVRequestDefaultList;
  170. }
  171. /*位置禁用与启用*/
  172. /// <summary>
  173. ///
  174. /// </summary>
  175. /// <param name="reqCode">需要取消的任务ID</param>
  176. /// <param name="positionCode">位置编号,地图位置别名,</param>
  177. /// <param name="agv_Enable">是否启用</param>
  178. /// <returns></returns>
  179. public AGVRequestDefaultList AGV_lockPosition(string reqCode, string positionCode, bool agv_Enable)
  180. {
  181. IMCS.DefaultList.AGVRequestDefaultList aGVRequestDefaultList = new DefaultList.AGVRequestDefaultList();
  182. aGVRequestDefaultList.reqCode = reqCode;
  183. aGVRequestDefaultList.positionCode = positionCode;
  184. aGVRequestDefaultList.indBind = agv_Enable.BoolToInt().ToString();
  185. return aGVRequestDefaultList;
  186. }
  187. /*地图位置信息同步*/
  188. /*查询货架存储位与物料批次关系*/
  189. /// <summary>
  190. /// 查询货架存储位与物料批次关系
  191. /// </summary>
  192. /// <returns></returns>
  193. public AGVRequestDefaultList AGV_queryPodBerthAndMat()
  194. {
  195. IMCS.DefaultList.AGVRequestDefaultList aGVRequestDefaultList = new DefaultList.AGVRequestDefaultList();
  196. aGVRequestDefaultList.reqCode = Guid.NewGuid().GuidLeng();
  197. return aGVRequestDefaultList;
  198. }
  199. /*容器与仓位绑定,解绑*/
  200. /// <summary>
  201. ///
  202. /// </summary>
  203. /// <param name="ctnrCode">容器类型</param>
  204. /// <param name="agv_Enable">是否启用,绑定为ture,解绑为false</param>
  205. /// <returns></returns>
  206. public AGVRequestDefaultList AGV_bindCtnrAndBin(string ctnrCode, bool agv_Enable)
  207. {
  208. IMCS.DefaultList.AGVRequestDefaultList aGVRequestDefaultList = new DefaultList.AGVRequestDefaultList();
  209. aGVRequestDefaultList.reqCode = Guid.NewGuid().GuidLeng();
  210. aGVRequestDefaultList.indBind = agv_Enable.BoolToInt().ToString();
  211. return aGVRequestDefaultList;
  212. }
  213. /*查询任务状态*/
  214. /// <summary>
  215. /// 查询任务状态
  216. /// </summary>
  217. /// <param name="reqCode">需要查询的任务id</param>
  218. /// <returns></returns>
  219. public AGVRequestDefaultList AGV_queryTaskStatus(string reqCode)
  220. {
  221. IMCS.DefaultList.AGVRequestDefaultList aGVRequestDefaultList = new DefaultList.AGVRequestDefaultList();
  222. aGVRequestDefaultList.reqCode = reqCode;
  223. return aGVRequestDefaultList;
  224. }
  225. /*查询AGV状态*/
  226. /// <summary>
  227. /// 查询AGV状态
  228. /// </summary>
  229. /// <returns></returns>
  230. public AGVRequestDefaultList AGV_queryAgvStatus()
  231. {
  232. IMCS.DefaultList.AGVRequestDefaultList aGVRequestDefaultList = new DefaultList.AGVRequestDefaultList();
  233. aGVRequestDefaultList.reqCode = Guid.NewGuid().GuidLeng();
  234. return aGVRequestDefaultList;
  235. }
  236. /*停止AGV*/
  237. public AGVRequestDefaultList AGV_stopRobot()
  238. {
  239. IMCS.DefaultList.AGVRequestDefaultList aGVRequestDefaultList = new DefaultList.AGVRequestDefaultList();
  240. aGVRequestDefaultList.reqCode = Guid.NewGuid().GuidLeng();
  241. return aGVRequestDefaultList;
  242. }
  243. /*恢复AGV*/
  244. public AGVRequestDefaultList AGV_resumeRobot()
  245. {
  246. IMCS.DefaultList.AGVRequestDefaultList aGVRequestDefaultList = new DefaultList.AGVRequestDefaultList();
  247. aGVRequestDefaultList.reqCode = Guid.NewGuid().GuidLeng();
  248. return aGVRequestDefaultList;
  249. }
  250. /*告警推送通知*/
  251. /*绑定解绑通知*/
  252. /**/
  253. }
  254. }