Simulation Core
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CElevatorConnectionEnum.f90 22 KiB

1 year ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618
  1. module CElevatorConnectionEnum
  2. use COperationScenariosVariables
  3. use CLog3
  4. use CLog4
  5. implicit none
  6. contains
  7. subroutine Evaluate_ElevatorConnection()
  8. use CCommon, only: SetStandRack
  9. implicit none
  10. if (DriveType == TopDrive_DriveType) then
  11. #ifdef OST
  12. print*, 'Evaluate_ElevatorConnection=TopDrive'
  13. #endif
  14. endif
  15. if (DriveType == Kelly_DriveType) then
  16. #ifdef OST
  17. print*, 'ElevatorConnection=Kelly'
  18. #endif
  19. !!OPERATION-CODE=83
  20. !if (Get_OperationCondition() == OPERATION_TRIP .and.&
  21. ! Get_ElevatorConnection() == ELEVATOR_LATCH_STRING .and.&
  22. ! Get_ElevatorPickup() .and.&
  23. ! Get_Slips() == SLIPS_SET_END) then
  24. ! !call Log_4('OPERATION-CODE=83')
  25. ! call Set_ElevatorConnection(ELEVATOR_CONNECTION_STRING)
  26. ! return
  27. !end if
  28. !OPERATION-CODE=78
  29. if (Get_ElevatorPickup() == .false. .and.&
  30. Get_Tong() == TONG_BREAKOUT_END .and.&
  31. Get_HookHeight() <= (HL + Get_NearFloorConnection() + PL) .and.&
  32. Get_ElevatorConnection() == ELEVATOR_LATCH_STRING) then
  33. call Set_ElevatorConnection(ELEVATOR_LATCH_SINGLE)
  34. return
  35. end if
  36. !OPERATION-CODE=79
  37. if (Get_ElevatorPickup() == .false. .and.&
  38. Get_Tong() == TONG_BREAKOUT_END .and.&
  39. Get_HookHeight() >= (HL + Get_NearFloorConnection() + SL - LG) .and.&
  40. Get_ElevatorConnection() == ELEVATOR_LATCH_STRING) then
  41. call Set_ElevatorConnection(ELEVATOR_LATCH_STAND)
  42. return
  43. end if
  44. !OPERATION-CODE=83
  45. if (Get_ElevatorPickup().and.&
  46. Get_ElevatorConnection() == ELEVATOR_LATCH_SINGLE) then
  47. call Set_ElevatorConnection(ELEVATOR_CONNECTION_SINGLE)
  48. return
  49. end if
  50. !OPERATION-CODE=84
  51. if (Get_ElevatorPickup().and.&
  52. Get_ElevatorConnection() == ELEVATOR_LATCH_STAND) then
  53. call Set_ElevatorConnection(ELEVATOR_CONNECTION_STAND)
  54. return
  55. end if
  56. !OPERATION-CODE=7
  57. if (Get_OperationCondition() == OPERATION_TRIP .and.&
  58. !GetRotaryRpm() == 0.0d0 .and.&
  59. !Get_StandRack() > 0 .and.&
  60. Get_ElevatorConnection() == ELEVATOR_CONNECTION_NOTHING .and.&
  61. !Get_Swing() == SWING_WELL_END .and.&
  62. !Get_Slips() == SLIPS_SET_END .and.&
  63. !Get_LatchLed() .and.
  64. Get_Elevator() == ELEVATOR_LATCH_STAND_END) then
  65. !call Log_4('OPERATION-CODE=7')
  66. call Set_ElevatorConnection(ELEVATOR_CONNECTION_STAND)
  67. !call Set_UnlatchLed(.true.)
  68. !call Set_LatchLed(.false.)
  69. call SetStandRack(Get_StandRack() - 1)
  70. call Set_Elevator(ELEVATOR_NEUTRAL)
  71. return
  72. end if
  73. !OPERATION-CODE=8
  74. if (Get_OperationCondition() == OPERATION_TRIP .and.&
  75. !Get_HookHeight() >= (HL + Get_NearFloorConnection() + SL - RE) .and. Get_HookHeight() <= (HL + Get_NearFloorConnection() + SL + LG) .and.&
  76. !GetRotaryRpm() == 0.0d0 .and.&
  77. !Get_StandRack() < 80 .and.&
  78. !Get_ElevatorConnectionPossible() .and.&
  79. Get_ElevatorConnection() == ELEVATOR_CONNECTION_STAND .and.&
  80. !Get_Swing() == SWING_WELL_END .and.&
  81. !Get_Slips() == SLIPS_SET_END .and.&
  82. !Get_UnlatchLed() .and.&
  83. Get_Elevator() == ELEVATOR_UNLATCH_STAND_END) then
  84. call Set_ElevatorConnection(ELEVATOR_CONNECTION_NOTHING)
  85. !call Set_UnlatchLed(.false.)
  86. !call Set_LatchLed(.true.)
  87. call SetStandRack(Get_StandRack() + 1)
  88. call Set_Elevator(ELEVATOR_NEUTRAL)
  89. !call Set_Elevator(ELEVATOR_UNLATCH_STAND_BEGIN)
  90. call Log_3('OPERATION-CODE=8')
  91. return
  92. end if
  93. !OPERATION-CODE=9
  94. if (Get_OperationCondition() == OPERATION_TRIP .and.&
  95. !Get_HookHeight() >= 18.0 .and. Get_HookHeight() <= 22.0 .and.&
  96. Get_ElevatorConnection() == ELEVATOR_CONNECTION_NOTHING .and.&
  97. !Get_Swing() == SWING_WELL_END .and.&
  98. !Get_Slips() == SLIPS_SET_END .and.&
  99. !Get_LatchLed() .and.&
  100. !Get_ElevatorPickup() .and.&
  101. Get_Elevator() == ELEVATOR_LATCH_STRING_END) then
  102. !call Log_4('OPERATION-CODE=9')
  103. call Set_ElevatorConnection(ELEVATOR_LATCH_STRING)
  104. call Set_Elevator(ELEVATOR_NEUTRAL)
  105. !call Set_UnlatchLed(.true.)
  106. !call Set_LatchLed(.false.)
  107. !call Set_UnlatchLed(.false.)
  108. !call Set_Elevator(ELEVATOR_LATCH_STRING_BEGIN)
  109. return
  110. end if
  111. !OPERATION-CODE=60
  112. if (Get_OperationCondition() == OPERATION_TRIP .and.&
  113. !Get_HookHeight() <= (HL + Get_NearFloorConnection() - ECG) .and.&
  114. Get_ElevatorPickup() == .false. .and.&
  115. Get_Slips() == SLIPS_SET_END .and.&
  116. !Get_Tong() /= TONG_MAKEUP_END .and.&
  117. Get_ElevatorConnection() == ELEVATOR_CONNECTION_STRING) then
  118. call Set_ElevatorConnection(ELEVATOR_LATCH_STRING)
  119. !call Set_Elevator(ELEVATOR_NEUTRAL)
  120. return
  121. end if
  122. !OPERATION-CODE=49
  123. if (Get_OperationCondition() == OPERATION_TRIP .and.&
  124. Get_ElevatorPickup() .and.&
  125. Get_ElevatorConnection() == ELEVATOR_LATCH_STRING) then
  126. call Set_ElevatorConnection(ELEVATOR_CONNECTION_STRING)
  127. return
  128. end if
  129. !OPERATION-CODE=10
  130. if (Get_OperationCondition() == OPERATION_TRIP .and.&
  131. !GetRotaryRpm() == 0.0d0 .and.&
  132. (Get_ElevatorConnection() == ELEVATOR_CONNECTION_STRING .or. Get_ElevatorConnection() == ELEVATOR_LATCH_STRING) .and.&
  133. !Get_Swing() == SWING_WELL_END .and.&
  134. !Get_Slips() == SLIPS_SET_END .and.&
  135. !Get_UnlatchLed() .and.&
  136. Get_Elevator() == ELEVATOR_UNLATCH_STRING_END) then
  137. !call Log_4('OPERATION-CODE=10')
  138. call Set_ElevatorConnection(ELEVATOR_CONNECTION_NOTHING)
  139. call Set_Elevator(ELEVATOR_NEUTRAL)
  140. !call Set_UnlatchLed(.false.)
  141. !call Set_LatchLed(.true.)
  142. !call Set_Elevator(ELEVATOR_UNLATCH_STRING_BEGIN)
  143. return
  144. end if
  145. !OPERATION-CODE=11
  146. if (Get_OperationCondition() == OPERATION_TRIP .and.&
  147. !Get_ElevatorConnectionPossible() .and.&
  148. Get_ElevatorPickup().and.&
  149. Get_ElevatorConnection() == ELEVATOR_CONNECTION_NOTHING .and.&
  150. !Get_Swing() == SWING_MOUSE_HOLE_END .and.&
  151. !Get_LatchLed() .and.&
  152. !Get_FillMouseHoleLed() .and.&
  153. Get_Elevator() == ELEVATOR_LATCH_SINGLE_END) then
  154. call Set_ElevatorConnection(ELEVATOR_CONNECTION_SINGLE)
  155. !call Set_UnlatchLed(.true.)
  156. call Set_FillMouseHoleLed(.false.)
  157. call Set_MouseHole(MOUSE_HOLE_NEUTRAL)
  158. call Set_Elevator(ELEVATOR_NEUTRAL)
  159. !call Set_Elevator(ELEVATOR_LATCH_SINGLE_BEGIN)
  160. return
  161. end if
  162. !OPERATION-CODE=12
  163. if (Get_OperationCondition() == OPERATION_TRIP .and.&
  164. Get_ElevatorConnection() == ELEVATOR_CONNECTION_SINGLE .and.&
  165. !Get_Swing() == SWING_MOUSE_HOLE_END .and.&
  166. !Get_UnlatchLed() .and.&
  167. !Get_FillMouseHoleLed() == .false. .and.&
  168. Get_Elevator() == ELEVATOR_UNLATCH_SINGLE_END) then
  169. !call Log_4('OPERATION-CODE=12')
  170. call Set_ElevatorConnection(ELEVATOR_CONNECTION_NOTHING)
  171. !call Set_UnlatchLed(.false.)
  172. !call Set_LatchLed(.true.)
  173. call Set_FillMouseHoleLed(.true.)
  174. call Set_MouseHole(MOUSE_HOLE_NEUTRAL)
  175. call Set_Elevator(ELEVATOR_NEUTRAL)
  176. !call Set_Elevator(ELEVATOR_UNLATCH_SINGLE_BEGIN)
  177. return
  178. end if
  179. !OPERATION-CODE=13
  180. if (Get_OperationCondition() == OPERATION_TRIP .and.&
  181. Get_HookHeight() <= (HL + Get_NearFloorConnection() + PL) .and.&
  182. Get_ElevatorConnection() == ELEVATOR_CONNECTION_STRING .and.&
  183. !Get_Swing() == SWING_WELL_END .and.&
  184. !Get_TongNotification() .and.&
  185. Get_ElevatorPickup().and.&
  186. Get_Tong() == TONG_BREAKOUT_END) then
  187. !call Log_4('OPERATION-CODE=13')
  188. call Set_ElevatorConnection(ELEVATOR_CONNECTION_SINGLE)
  189. call Set_StringUpdate(STRING_UPDATE_REMOVE_SINGLE)
  190. !call Set_StringUpdate(STRING_UPDATE_ADD_SINGLE)
  191. call Set_Tong(TONG_NEUTRAL)
  192. return
  193. end if
  194. !OPERATION-CODE=14
  195. if (Get_OperationCondition() == OPERATION_TRIP .and.&
  196. Get_HookHeight() <= (HL + Get_NearFloorConnection() + PL) .and.&
  197. Get_ElevatorConnection() == ELEVATOR_CONNECTION_SINGLE .and.&
  198. !Get_Swing() == SWING_WELL_END .and.&
  199. !Get_TongNotification() .and.&
  200. Get_ElevatorPickup().and.&
  201. Get_Tong() == TONG_MAKEUP_END) then
  202. !call Log_4('OPERATION-CODE=14')
  203. call Set_Tong(TONG_NEUTRAL)
  204. call Set_ElevatorConnection(ELEVATOR_CONNECTION_STRING)
  205. call Set_StringUpdate(STRING_UPDATE_ADD_SINGLE)
  206. return
  207. end if
  208. !OPERATION-CODE=15
  209. if (Get_OperationCondition() == OPERATION_TRIP .and.&
  210. Get_HookHeight() >= (HL + Get_NearFloorConnection() + SL - LG) .and.&
  211. !Get_HookHeight() >= (HL + Get_NearFloorConnection() + SL - RE) .and. Get_HookHeight() <= (HL + Get_NearFloorConnection() + SL + LG) .and.&
  212. Get_ElevatorConnection() == ELEVATOR_CONNECTION_STRING .and.&
  213. !Get_Swing() == SWING_WELL_END .and.&
  214. !Get_TongNotification() .and.&
  215. Get_ElevatorPickup().and.&
  216. Get_Tong() == TONG_BREAKOUT_END) then
  217. call Set_Tong(TONG_NEUTRAL)
  218. call Set_ElevatorConnection(ELEVATOR_CONNECTION_STAND)
  219. call Set_StringUpdate(STRING_UPDATE_REMOVE_STAND)
  220. return
  221. end if
  222. !OPERATION-CODE=16
  223. if (Get_OperationCondition() == OPERATION_TRIP .and.&
  224. !Get_HookHeight() >= (HL + Get_NearFloorConnection() + SL - RE) .and. Get_HookHeight() <= (HL + Get_NearFloorConnection() + SL + LG) .and.&
  225. !Get_JointConnectionPossible() .and.&
  226. Get_ElevatorConnection() == ELEVATOR_CONNECTION_STAND .and.&
  227. !Get_Swing() == SWING_WELL_END .and.&
  228. !Get_TongNotification() .and.&
  229. Get_ElevatorPickup().and.&
  230. Get_Tong() == TONG_MAKEUP_END) then
  231. !call Log_4('OPERATION-CODE=16')
  232. call Set_Tong(TONG_NEUTRAL)
  233. call Set_ElevatorConnection(ELEVATOR_CONNECTION_STRING)
  234. call Set_StringUpdate(STRING_UPDATE_ADD_STAND)
  235. return
  236. end if
  237. !OPERATION-CODE=75
  238. if (Get_ElevatorPickup() == .false. .and.&
  239. Get_ElevatorConnection() == ELEVATOR_CONNECTION_SINGLE) then
  240. call Set_ElevatorConnection(ELEVATOR_LATCH_SINGLE)
  241. return
  242. end if
  243. !OPERATION-CODE=76
  244. if (Get_ElevatorPickup() == .false. .and.&
  245. Get_ElevatorConnection() == ELEVATOR_CONNECTION_STAND) then
  246. call Set_ElevatorConnection(ELEVATOR_LATCH_STAND)
  247. return
  248. end if
  249. endif
  250. end subroutine
  251. ! subroutine Subscribe_ElevatorConnection()
  252. ! use CDrillingConsoleVariables
  253. ! implicit none
  254. ! call OnLatchPipePress%Add(ButtonPress_Latch_ElevatorConnection)
  255. ! call OnUnlatchPipePress%Add(ButtonPress_Unlatch_ElevatorConnection)
  256. ! call OnBreakoutLeverPress%Add(ButtonPress_Breakout_ElevatorConnection)
  257. ! call OnMakeupLeverPress%Add(ButtonPress_Makeup_ElevatorConnection)
  258. ! end subroutine
  259. subroutine ButtonPress_Latch_ElevatorConnection()
  260. use CCommon, only: SetStandRack
  261. implicit none
  262. if (DriveType == TopDrive_DriveType) then
  263. #ifdef OST
  264. print*, 'ButtonPress_Latch_ElevatorConnection=TopDrive'
  265. #endif
  266. !TOPDRIVE-CODE=73
  267. if ((Get_HookHeight() >= (TL() + SL - ECG + NFC()) .and. Get_HookHeight() <= (TL() + SL - ECG + NFC() + TG)) .and.&
  268. Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_NOTHING .and.&
  269. Get_TdsSwing() == TDS_SWING_OFF_END .and.&
  270. Get_LatchLed()) then
  271. call Set_Elevator(ELEVATOR_LATCH_STAND_BEGIN)
  272. call Set_LatchLed(.false.)
  273. return
  274. end if
  275. !TOPDRIVE-CODE=74
  276. if (Get_HookHeight() <= (TL() + NFC() - ECG) .and.&
  277. GetRotaryRpm() == 0.0d0 .and.&
  278. Get_ElevatorConnectionPossible() .and.&
  279. Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_NOTHING .and.&
  280. Get_TdsSwing() == TDS_SWING_OFF_END .and.&
  281. Get_LatchLed()) then
  282. call Set_Elevator(ELEVATOR_LATCH_STRING_BEGIN)
  283. call Set_LatchLed(.false.)
  284. return
  285. end if
  286. !TOPDRIVE-CODE=75
  287. if (Get_ElevatorConnectionPossible() .and.&
  288. Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_NOTHING .and.&
  289. Get_TdsSwing() == TDS_SWING_TILT_END .and.&
  290. Get_LatchLed() .and.&
  291. Get_FillMouseHoleLed()) then
  292. call Set_Elevator(ELEVATOR_LATCH_SINGLE_BEGIN)
  293. call Set_LatchLed(.false.)
  294. return
  295. end if
  296. endif
  297. if (DriveType == Kelly_DriveType) then
  298. #ifdef OST
  299. print*, 'ButtonPress_Latch_ElevatorConnection=Kelly'
  300. #endif
  301. !OPERATION-CODE=86
  302. if (Get_OperationCondition() == OPERATION_TRIP .and.&
  303. Get_HookHeight() <= (HL + Get_NearFloorConnection() - ECG) .and.&
  304. Get_ElevatorConnection() == ELEVATOR_CONNECTION_NOTHING .and.&
  305. Get_LatchLed() .and.&
  306. GetRotaryRpm() == 0.0d0 .and.&
  307. Get_Swing() == SWING_WELL_END .and.&
  308. Get_ElevatorConnectionPossible() .and.&
  309. Get_HookHeight() <= (HL + Get_NearFloorConnection())) then
  310. !call Log_4("OPERATION-CODE=ELEVATOR_LATCH_STRING_BEGIN")
  311. call Set_Elevator(ELEVATOR_LATCH_STRING_BEGIN)
  312. call Set_LatchLed(.false.)
  313. return
  314. endif
  315. !OPERATION-CODE=85
  316. if (Get_OperationCondition() == OPERATION_TRIP .and.&
  317. Get_HookHeight() >= (HL + SL - ECG + Get_NearFloorConnection()) .and. Get_HookHeight() <= (HL + SL - ECG + Get_NearFloorConnection() + LG) .and.&
  318. Get_ElevatorConnection() == ELEVATOR_CONNECTION_NOTHING .and.&
  319. Get_LatchLed() .and.&
  320. Get_Swing() == SWING_WELL_END) then
  321. !Get_HookHeight() >= (HL + Get_NearFloorConnection() + SL + RE) .and. Get_HookHeight() <= (HL + Get_NearFloorConnection() + SL + LG)
  322. call Set_Elevator(ELEVATOR_LATCH_STAND_BEGIN)
  323. call Set_LatchLed(.false.)
  324. return
  325. endif
  326. !OPERATION-CODE=87
  327. if (Get_OperationCondition() == OPERATION_TRIP .and.&
  328. Get_ElevatorConnection() == ELEVATOR_CONNECTION_NOTHING .and.&
  329. Get_LatchLed() .and.&
  330. Get_FillMouseHoleLed() .and.&
  331. Get_ElevatorConnectionPossible() .and.&
  332. Get_Swing() == SWING_MOUSE_HOLE_END) then
  333. call Set_Elevator(ELEVATOR_LATCH_SINGLE_BEGIN)
  334. call Set_LatchLed(.false.)
  335. return
  336. endif
  337. endif
  338. end subroutine
  339. subroutine ButtonPress_Unlatch_ElevatorConnection()
  340. use CCommon, only: SetStandRack
  341. implicit none
  342. if (DriveType == TopDrive_DriveType) then
  343. #ifdef OST
  344. print*, 'ButtonPress_Unlatch_ElevatorConnection=TopDrive'
  345. #endif
  346. !TOPDRIVE-CODE=76
  347. if ((Get_HookHeight() >= (TL() + SL - ECG + NFC()) .and. Get_HookHeight() <= (TL() + SL - ECG + NFC() + TG)) .and.&
  348. Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_STAND .and.&
  349. Get_TdsSwing() == TDS_SWING_OFF_END .and.&
  350. Get_UnlatchLed()) then
  351. call Set_Elevator(ELEVATOR_UNLATCH_STAND_BEGIN)
  352. call Set_UnlatchLed(.false.)
  353. return
  354. end if
  355. !TOPDRIVE-CODE=77
  356. if (Get_HookHeight() <= (TL() + NFC() - ECG) .and.&
  357. GetRotaryRpm() == 0.0d0 .and.&
  358. Get_NearFloorConnection() >= 3.0 .and. Get_NearFloorConnection() <= 6.0 .and.&
  359. (Get_TdsElevatorModes() == TDS_ELEVATOR_LATCH_STRING .or. Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_STRING) .and.&
  360. Get_TdsSwing() == TDS_SWING_OFF_END .and.&
  361. Get_UnlatchLed()) then
  362. call Set_Elevator(ELEVATOR_UNLATCH_STRING_BEGIN)
  363. call Set_UnlatchLed(.false.)
  364. return
  365. end if
  366. !TOPDRIVE-CODE=78
  367. if ((Get_HookHeight() > TL() .and. Get_HookHeight() < (TL() + NFC() + SG)) .and.&
  368. Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_SINGLE .and.&
  369. Get_TdsSwing() == TDS_SWING_TILT_END .and.&
  370. Get_UnlatchLed() .and.&
  371. Get_FillMouseHoleLed() == .false.) then
  372. call Set_Elevator(ELEVATOR_UNLATCH_SINGLE_BEGIN)
  373. call Set_UnlatchLed(.false.)
  374. return
  375. end if
  376. endif
  377. if (DriveType == Kelly_DriveType) then
  378. #ifdef OST
  379. print*, 'ButtonPress_Unlatch_ElevatorConnection=Kelly'
  380. #endif
  381. !OPERATION-CODE=89
  382. if (Get_OperationCondition() == OPERATION_TRIP .and.&
  383. Get_HookHeight() <= (HL + Get_NearFloorConnection() - ECG) .and.&
  384. (Get_ElevatorConnection() == ELEVATOR_CONNECTION_STRING .or. Get_ElevatorConnection() == ELEVATOR_LATCH_STRING) .and.&
  385. Get_HookHeight() <= (HL + Get_NearFloorConnection()) .and.&
  386. Get_UnlatchLed() .and.&
  387. GetRotaryRpm() == 0.0d0 .and.&
  388. Get_Swing() == SWING_WELL_END .and.&
  389. Get_NearFloorConnection() >= 3.0 .and. Get_NearFloorConnection() <= 6.0) then
  390. !Get_HookHeight() >= (HL + Get_NearFloorConnection() - 4.0) .and. Get_HookHeight() <= (HL + Get_NearFloorConnection() - 2.0)) then
  391. call Set_Elevator(ELEVATOR_UNLATCH_STRING_BEGIN)
  392. call Set_UnlatchLed(.false.)
  393. return
  394. endif
  395. !OPERATION-CODE=88
  396. if (Get_OperationCondition() == OPERATION_TRIP .and.&
  397. Get_HookHeight() >= (HL + SL - ECG + Get_NearFloorConnection()) .and. Get_HookHeight() <= (HL + SL - ECG + Get_NearFloorConnection() + LG) .and.&
  398. !Get_HookHeight() >= (HL + Get_NearFloorConnection() + SL + RE) .and. Get_HookHeight() <= (HL + Get_NearFloorConnection() + SL + LG)
  399. Get_ElevatorConnection() == ELEVATOR_CONNECTION_STAND .and.&
  400. Get_UnlatchLed() .and.&
  401. Get_Swing() == SWING_WELL_END) then
  402. call Set_Elevator(ELEVATOR_UNLATCH_STAND_BEGIN)
  403. call Set_UnlatchLed(.false.)
  404. return
  405. endif
  406. !OPERATION-CODE=90
  407. if (Get_OperationCondition() == OPERATION_TRIP .and.&
  408. Get_ElevatorConnection() == ELEVATOR_CONNECTION_SINGLE .and.&
  409. Get_UnlatchLed() .and.&
  410. Get_HookHeight() >= HL .and. Get_HookHeight() <= (HL + Get_NearFloorConnection() + SG) .and.&
  411. !Get_JointConnectionPossible() .and.&
  412. Get_Swing() == SWING_MOUSE_HOLE_END) then
  413. call Set_Elevator(ELEVATOR_UNLATCH_SINGLE_BEGIN)
  414. call Set_UnlatchLed(.false.)
  415. return
  416. endif
  417. endif
  418. end subroutine
  419. subroutine ButtonPress_Breakout_ElevatorConnection()
  420. implicit none
  421. end subroutine
  422. subroutine ButtonPress_Makeup_ElevatorConnection()
  423. implicit none
  424. end subroutine
  425. end module CElevatorConnectionEnum