SrmSignal.cs 20 KB

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