SrmSignal.cs 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. namespace WCS.PLC.Model.Equipment
  5. {
  6. public enum SrmStatus
  7. {
  8. 未知 = 0,
  9. 空闲 = 1,
  10. 取货行走 = 2,
  11. 取货伸叉 = 3,
  12. 取货抬叉 = 4,
  13. 取货收叉 = 5,
  14. 放货行走 = 6,
  15. 放货伸叉 = 7,
  16. 放货降叉 = 8,
  17. 放货收叉 = 9,
  18. 维护 = 99
  19. }
  20. public enum SrmMode
  21. {
  22. 未知 = 0,
  23. 远程 = 1,
  24. 半自动 = 2,
  25. 手动 = 3,
  26. 维修 = 4
  27. }
  28. //[Flags]
  29. //public enum SrmFault1Enum : ushort
  30. //{
  31. // S100_主柜急停 = 1 << 0,
  32. // S101_分柜急停 = 1 << 1,
  33. // S102_取货点异常_双伸位 = 1 << 2,
  34. // S103_放货点有货 = 1 << 3,
  35. // S104_货叉取货完成后无货 = 1 << 4,
  36. // S105_货叉无任务有货异常 = 1 << 5,
  37. // S106_货叉运行超时 = 1 << 6,
  38. // S107_货叉左侧超行程 = 1 << 7,
  39. // S110_货物左前坍塌 = 1 << 8,
  40. // S111_货物右前坍塌 = 1 << 9,
  41. // S112_前限位触发 = 1 << 10,
  42. // S113_后限位触发 = 1 << 11,
  43. // S114_上限位触发 = 1 << 12,
  44. // S115_下限位触发 = 1 << 13,
  45. // S116_超载限位触发 = 1 << 14,
  46. // S117_松绳限位触发1 = 1 << 15,
  47. //}
  48. [Flags]
  49. public enum SrmFault1Enum : ushort
  50. {
  51. S110_货物左前坍塌 = 1 << 0,
  52. S111_货物右前坍塌 = 1 << 1,
  53. S112_前限位触发 = 1 << 2,
  54. S113_后限位触发 = 1 << 3,
  55. S114_上限位触发 = 1 << 4,
  56. S115_下限位触发 = 1 << 5,
  57. S116_超载限位触发 = 1 << 6,
  58. S117_松绳限位触发1 = 1 << 7,
  59. S100_主柜急停 = 1 << 8,
  60. S101_分柜急停 = 1 << 9,
  61. S102_取货点异常_双伸位 = 1 << 10,
  62. S103_放货点有货 = 1 << 11,
  63. S104_货叉取货完成后无货 = 1 << 12,
  64. S105_货叉无任务有货异常 = 1 << 13,
  65. S106_货叉运行超时 = 1 << 14,
  66. S107_货叉左侧超行程 = 1 << 15,
  67. }
  68. [Flags]
  69. public enum SrmFault2Enum : ushort
  70. {
  71. S120_行走运动超行程 = 1 << 0,
  72. S121_起升运动超行程 = 1 << 1,
  73. S122_行走变频器故障 = 1 << 2,
  74. S123_提升变频器故障 = 1 << 3,
  75. S124_货叉变频器故障 = 1 << 4,
  76. S125_提升超速故障 = 1 << 5,
  77. S126_风扇_灯_插座空开 = 1 << 6,
  78. S127_触摸屏_光通讯_激光测距空开 = 1 << 7,
  79. S130_行走马达保护器 = 1 << 8,
  80. S131_行走抱闸空开 = 1 << 9,
  81. S132_起升马达保护器 = 1 << 10,
  82. S133_起升抱闸空开 = 1 << 11,
  83. S134_货叉马达保护器 = 1 << 12,
  84. S135_货叉抱闸空开 = 1 << 13,
  85. S136_安全门打开 = 1 << 14,
  86. S137_安全继电器故障 = 1 << 15,
  87. }
  88. [Flags]
  89. public enum SrmFault3Enum : ushort
  90. {
  91. S140_当前货位已禁用 = 1 << 0,
  92. S141_组态中断报警 = 1 << 1,
  93. S142_货物左前超出 = 1 << 2,
  94. S143_货物左后超出 = 1 << 3,
  95. S144_货物右前超出 = 1 << 4,
  96. S145_货物右后超出 = 1 << 5,
  97. S146_货物左超高150CM = 1 << 6,
  98. S147_货物右超高150CM = 1 << 7,
  99. S150_安全门1故障 = 1 << 8,
  100. S151_安全门2故障 = 1 << 9,
  101. S152_行走测距信号丢失故障 = 1 << 10,
  102. S153_提升测距信号丢失故障 = 1 << 11,
  103. S154_行走定位失败 = 1 << 12,
  104. S155_提升定位失败 = 1 << 13,
  105. S156_回中定位失败 = 1 << 14,
  106. S157_堆垛机巷道有人进入或光通讯中断 = 1 << 15,
  107. }
  108. [Flags]
  109. public enum SrmFault4Enum : ushort
  110. {
  111. S160_货叉位置错误 = 1 << 0,
  112. S161_货叉编码器故障 = 1 << 1,
  113. S162_货叉编码器故障中间位 = 1 << 2,
  114. S163_货叉中位光电异常 = 1 << 3,
  115. S164_载货台电源空开 = 1 << 4,
  116. S165_按钮_安全回路空开 = 1 << 5,
  117. S166_货物左后坍塌 = 1 << 6,
  118. S167_货物右后坍塌 = 1 << 7,
  119. S170_登梯口急停 = 1 << 8,
  120. S171_货物左超高190CM = 1 << 9,
  121. S172_货物右超高190CM = 1 << 10,
  122. S173_松绳限位触发2 = 1 << 11,
  123. S174_货叉右侧超行程 = 1 << 12,
  124. S175_取放货托盘总数超出限制 = 1 << 13,
  125. S176_安全门急停 = 1 << 14,
  126. S177_备用 = 1 << 15,
  127. }
  128. public class SrmSignal : EquipmentSignal
  129. {
  130. #region variable
  131. #endregion;
  132. #region Properties
  133. #region #region DB520信号集合
  134. /// <summary>
  135. /// 心跳
  136. /// </summary>
  137. public ushort DB520_Handshake_from_wcs
  138. {
  139. get
  140. {
  141. return Query_ushort_DB_WCS_ReadWrite(0);
  142. }
  143. }
  144. /// <summary>
  145. /// 码垛起始终点货位原有数量
  146. /// </summary>
  147. public ushort DB520_Start_number
  148. {
  149. get
  150. {
  151. return Query_ushort_DB_WCS_ReadWrite(2);
  152. }
  153. }
  154. /// <summary>
  155. /// 码垛终点货位叉取数量
  156. /// </summary>
  157. public ushort DB520_End_number
  158. {
  159. get
  160. {
  161. return Query_ushort_DB_WCS_ReadWrite(4);
  162. }
  163. }
  164. /// <summary>
  165. /// 货物类型
  166. /// </summary>
  167. public ushort DB520_Goodtype
  168. {
  169. get
  170. {
  171. return Query_ushort_DB_WCS_ReadWrite(6);
  172. }
  173. }
  174. /// <summary>
  175. /// 速度模式(0.正常速度模式 1.低速模式)
  176. /// </summary>
  177. public ushort DB520_Runmode
  178. {
  179. get
  180. {
  181. return Query_ushort_DB_WCS_ReadWrite(8);
  182. }
  183. }
  184. /// <summary>
  185. /// 任务起始行RowPos1
  186. /// </summary>
  187. public ushort DB520_FromRowPos
  188. {
  189. get
  190. {
  191. return Query_ushort_DB_WCS_ReadWrite(10);
  192. }
  193. }
  194. /// <summary>
  195. /// 任务行走起始列Travelpos1
  196. /// </summary>
  197. public ushort DB520_FromColumnPos
  198. {
  199. get
  200. {
  201. return Query_ushort_DB_WCS_ReadWrite(12);
  202. }
  203. }
  204. /// <summary>
  205. /// 任务提升起始层Liftpos1
  206. /// </summary>
  207. public ushort DB520_FromLayerPos
  208. {
  209. get
  210. {
  211. return Query_ushort_DB_WCS_ReadWrite(14);
  212. }
  213. }
  214. /// <summary>
  215. /// 任务起始深度(0:中位, 1:深度1, 2:深度2)(暂不使用,备用)
  216. /// </summary>
  217. public ushort DB520_Fork_start_pos1
  218. {
  219. get
  220. {
  221. return Query_ushort_DB_WCS_ReadWrite(16);
  222. }
  223. }
  224. /// <summary>
  225. /// 任务目标行RowPos2
  226. /// </summary>
  227. public ushort DB520_ToRowPos
  228. {
  229. get
  230. {
  231. return Query_ushort_DB_WCS_ReadWrite(18);
  232. }
  233. }
  234. /// <summary>
  235. /// 任务行走目标列Travelpos2
  236. /// </summary>
  237. public ushort DB520_ToColumnPos
  238. {
  239. get
  240. {
  241. return Query_ushort_DB_WCS_ReadWrite(20);
  242. }
  243. }
  244. /// <summary>
  245. /// 任务提升目标层Liftpos2
  246. /// </summary>
  247. public ushort DB520_ToLayerPos
  248. {
  249. get
  250. {
  251. return Query_ushort_DB_WCS_ReadWrite(22);
  252. }
  253. }
  254. /// <summary>
  255. /// 任务目标深度(0:中位, 1:深度1, 2:深度2)
  256. /// </summary>
  257. public ushort DB520_Fork_dest_pos2
  258. {
  259. get
  260. {
  261. return Query_ushort_DB_WCS_ReadWrite(24);
  262. }
  263. }
  264. /// <summary>
  265. /// 任务ID
  266. /// </summary>
  267. public uint DB520_TaskID
  268. {
  269. get
  270. {
  271. return Query_uint_DB_WCS_ReadWrite(26);
  272. }
  273. }
  274. /// <summary>
  275. /// 以上值写入后触发任务执行(1:执行, 0:默认),当任务执行完成后PLC将其置0
  276. /// </summary>
  277. public ushort DB520_Task_trigger
  278. {
  279. get
  280. {
  281. return Query_ushort_DB_WCS_ReadWrite(30);
  282. }
  283. }
  284. #endregion;
  285. #region DB521信号集合
  286. public bool DB521_Handshake_to_wcs
  287. {
  288. get
  289. {
  290. return Query_bool_DB_WCS_Read(0, 0);
  291. }
  292. }
  293. /// <summary>
  294. ///完成取货信号
  295. /// </summary>
  296. public bool DB521_Get_Finishi
  297. {
  298. get
  299. {
  300. return Query_bool_DB_WCS_Read(0, 1);
  301. }
  302. }
  303. /// <summary>
  304. /// 完成放货信号
  305. /// </summary>
  306. public bool DB521_Put_Finishi
  307. {
  308. get
  309. {
  310. return Query_bool_DB_WCS_Read(0, 2);
  311. }
  312. }
  313. /// <summary>
  314. /// 设备故障状态
  315. /// </summary>
  316. public bool SrmDB541_Alarm
  317. {
  318. get
  319. {
  320. return Query_bool_DB_WCS_Read(0, 3);
  321. }
  322. }
  323. /// <summary>
  324. /// 当前任务完成
  325. /// </summary>
  326. public bool DB521_Task_Finishi
  327. {
  328. get
  329. {
  330. return Query_bool_DB_WCS_Read(0, 4);
  331. }
  332. }
  333. /// <summary>
  334. /// 设备上有货
  335. /// </summary>
  336. public bool DB521_Loaded
  337. {
  338. get
  339. {
  340. return Query_bool_DB_WCS_Read(0, 5);
  341. }
  342. }
  343. /// <summary>
  344. /// 货叉在原位
  345. /// </summary>
  346. public bool DB521_Fork_Center
  347. {
  348. get
  349. {
  350. return Query_bool_DB_WCS_Read(0, 6);
  351. }
  352. }
  353. /// <summary>
  354. /// 1.远程 2.半自动 3.手动 4.维修
  355. /// </summary>
  356. public ushort DB521_Auto_status
  357. {
  358. get
  359. {
  360. return Query_ushort_DB_WCS_Read(2);
  361. }
  362. }
  363. /// <summary>
  364. /// 设备状态(1为空闲,2为定位,3为取货,4为放货. 99为维护 )
  365. /// </summary>
  366. public ushort DB521_Srm_Status
  367. {
  368. get
  369. {
  370. return Query_ushort_DB_WCS_Read(4);
  371. }
  372. }
  373. /// <summary>
  374. /// 任务起始行RowPos1
  375. /// </summary>
  376. public ushort DB521_FromRowPos
  377. {
  378. get
  379. {
  380. return Query_ushort_DB_WCS_Read(6);
  381. }
  382. }
  383. /// <summary>
  384. /// 任务行走起始列Travelpos1
  385. /// </summary>
  386. public ushort DB521_FromColumnPos
  387. {
  388. get
  389. {
  390. return Query_ushort_DB_WCS_Read(8);
  391. }
  392. }
  393. /// <summary>
  394. /// 任务提升起始层Liftpos1
  395. /// </summary>
  396. public ushort DB521_FromLayerPos
  397. {
  398. get
  399. {
  400. return Query_ushort_DB_WCS_Read(10);
  401. }
  402. }
  403. /// <summary>
  404. /// 任务起始深度(0:中位, 1:深度1, 2:深度2)
  405. /// </summary>
  406. public ushort DB521_Fork_start_pos1
  407. {
  408. get
  409. {
  410. return Query_ushort_DB_WCS_Read(12);
  411. }
  412. }
  413. /// <summary>
  414. /// 任务目标行RowPos2
  415. /// </summary>
  416. public ushort DB521_ToRowPos
  417. {
  418. get
  419. {
  420. return Query_ushort_DB_WCS_Read(14);
  421. }
  422. }
  423. /// <summary>
  424. /// 任务行走目标列Travelpos2
  425. /// </summary>
  426. public ushort DB521_ToColumnPos
  427. {
  428. get
  429. {
  430. return Query_ushort_DB_WCS_Read(16);
  431. }
  432. }
  433. /// <summary>
  434. /// 任务提升目标层Liftpos2
  435. /// </summary>
  436. public ushort DB521_ToLayerPos
  437. {
  438. get
  439. {
  440. return Query_ushort_DB_WCS_Read(18);
  441. }
  442. }
  443. /// <summary>
  444. /// 任务目标深度(0:中位, 1:深度1, 2:深度2)
  445. /// </summary>
  446. public ushort DB521_Fork_dest_pos2s
  447. {
  448. get
  449. {
  450. return Query_ushort_DB_WCS_Read(20);
  451. }
  452. }
  453. /// <summary>
  454. /// 任务ID
  455. /// </summary>
  456. public uint DB521_TaskID
  457. {
  458. get
  459. {
  460. return Query_uint_DB_WCS_Read(22);
  461. }
  462. }
  463. /// <summary>
  464. /// 任务触发位
  465. /// </summary>
  466. public ushort DB521_Task_trigger
  467. {
  468. get
  469. {
  470. return Query_ushort_DB_WCS_Read(26);
  471. }
  472. }
  473. /// <summary>
  474. /// 当前行Srm_Row
  475. /// </summary>
  476. public ushort DB521_CurRow
  477. {
  478. get
  479. {
  480. return Query_ushort_DB_WCS_Read(28);
  481. }
  482. }
  483. /// <summary>
  484. /// 当前列Srm_Column
  485. /// </summary>
  486. public ushort DB521_CurColumn
  487. {
  488. get
  489. {
  490. return Query_ushort_DB_WCS_Read(30);
  491. }
  492. }
  493. /// <summary>
  494. /// 当前层Srm_Layer
  495. /// </summary>
  496. public ushort DB521_CurLayer
  497. {
  498. get
  499. {
  500. return Query_ushort_DB_WCS_Read(32);
  501. }
  502. }
  503. /// <summary>
  504. /// 完成任务ID Taskfinishi_ID
  505. /// </summary>
  506. public uint DB521_Taskfinishi_ID
  507. {
  508. get
  509. {
  510. return Query_uint_DB_WCS_Read(34);
  511. }
  512. }
  513. /// <summary>
  514. /// 行走当前位置MM
  515. /// </summary>
  516. public int B521_TravelPos
  517. {
  518. get
  519. {
  520. return Query_int_DB_WCS_Read(38);
  521. }
  522. }
  523. /// <summary>
  524. /// 提升当前位置MM
  525. /// </summary>
  526. public uint DB521_LiftPos
  527. {
  528. get
  529. {
  530. return Query_uint_DB_WCS_Read(42);
  531. }
  532. }
  533. /// <summary>
  534. /// 货叉当前位置MM,往左为正值,往右为负值
  535. /// </summary>
  536. public int DB521_ForkPos
  537. {
  538. get
  539. {
  540. return Query_int_DB_WCS_Read(46);
  541. }
  542. }
  543. /// <summary>
  544. /// 码垛起始货位原有数量
  545. /// </summary>
  546. public ushort DB521_Start_number
  547. {
  548. get
  549. {
  550. return Query_ushort_DB_WCS_Read(50);
  551. }
  552. }
  553. /// <summary>
  554. /// 码垛终点货位叉取数量
  555. /// </summary>
  556. public ushort DB521_End_number
  557. {
  558. get
  559. {
  560. return Query_ushort_DB_WCS_Read(52);
  561. }
  562. }
  563. /// <summary>
  564. /// 里程数(单位:千米)
  565. /// </summary>
  566. public float DB521_Total_KM
  567. {
  568. get
  569. {
  570. return Query_float_DB_WCS_Read(54);
  571. }
  572. }
  573. /// <summary>
  574. /// 货物类型
  575. /// </summary>
  576. public ushort DB521_GoodType
  577. {
  578. get
  579. {
  580. return Query_ushort_DB_WCS_Read(58);
  581. }
  582. }
  583. /// <summary>
  584. /// 运行时间(Real)(单位:小时,带小数)
  585. /// </summary>
  586. public uint DB521_Runtime
  587. {
  588. get
  589. {
  590. return Query_uint_DB_WCS_Read(60);
  591. }
  592. }
  593. #endregion;
  594. #region DB537 故障列表
  595. public string SrmFault
  596. {
  597. get
  598. {
  599. StringBuilder sb = new StringBuilder();
  600. if (SrmFault1 != 0)
  601. {
  602. sb.Append(SrmFault1.ToString());
  603. }
  604. if (SrmFault2 != 0)
  605. {
  606. sb.Append(SrmFault2.ToString());
  607. }
  608. if (SrmFault3 != 0)
  609. {
  610. sb.Append(SrmFault3.ToString());
  611. }
  612. if (SrmFault4 != 0)
  613. {
  614. sb.Append(SrmFault4.ToString());
  615. }
  616. return sb.ToString();
  617. }
  618. }
  619. public SrmFault1Enum SrmFault1
  620. {
  621. get
  622. {
  623. ushort num = Query_ushort_DB_Equ_Status(0);
  624. return (SrmFault1Enum)num;
  625. }
  626. }
  627. public SrmFault2Enum SrmFault2
  628. {
  629. get
  630. {
  631. ushort num = Query_ushort_DB_Equ_Status(2);
  632. return (SrmFault2Enum)num;
  633. }
  634. }
  635. public SrmFault3Enum SrmFault3
  636. {
  637. get
  638. {
  639. ushort num = Query_ushort_DB_Equ_Status(4);
  640. return (SrmFault3Enum)num;
  641. }
  642. }
  643. public SrmFault4Enum SrmFault4
  644. {
  645. get
  646. {
  647. ushort num = Query_ushort_DB_Equ_Status(6);
  648. return (SrmFault4Enum)num;
  649. }
  650. }
  651. #endregion;
  652. #endregion;
  653. #region Constructor
  654. public SrmSignal(string plcname, List<ConvDbInfo> equDBInfoSet) : base(plcname, equDBInfoSet)
  655. {
  656. }
  657. #endregion;
  658. #region Method
  659. #endregion;
  660. }
  661. }