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.
 
 
 
 
 
 

618 lines
22 KiB

  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