plant_to_EPN.mvc 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729
  1. include "primitives.alh"
  2. include "modelling.alh"
  3. include "object_operations.alh"
  4. Composite schedule {
  5. {Contains} Success success {}
  6. {Contains} Failure failure {}
  7. {Contains} ForAll finish {
  8. LHS {
  9. Pre_Encapsulated_PetriNet/Port {
  10. label = "0"
  11. }
  12. }
  13. RHS {
  14. Post_Encapsulated_PetriNet/Port {
  15. label = "0"
  16. value_name = $
  17. String function value(model : Element, name : String, mapping : Element):
  18. return string_join("plant/", read_attribute(model, name, "name"))!
  19. $
  20. }
  21. }
  22. }
  23. {Contains} Atomic init_ports {
  24. LHS {}
  25. RHS {
  26. Post_Encapsulated_PetriNet/Place post_ports_00 {
  27. label = "00"
  28. value_name = $
  29. String function value(model : Element, name : String, mapping : Element):
  30. return "up"!
  31. $
  32. value_tokens = $
  33. Integer function value(model : Element, name : String, mapping : Element):
  34. return 0!
  35. $
  36. }
  37. Post_Encapsulated_PetriNet/Port post_ports_10 {
  38. label = "10"
  39. value_name = $
  40. String function value(model : Element, name : String, mapping : Element):
  41. return "up"!
  42. $
  43. }
  44. Post_Encapsulated_PetriNet/PortPlace (post_ports_10, post_ports_00) {
  45. label = "20"
  46. }
  47. Post_Encapsulated_PetriNet/Place post_ports_01 {
  48. label = "01"
  49. value_name = $
  50. String function value(model : Element, name : String, mapping : Element):
  51. return "neutral"!
  52. $
  53. value_tokens = $
  54. Integer function value(model : Element, name : String, mapping : Element):
  55. return 0!
  56. $
  57. }
  58. Post_Encapsulated_PetriNet/Port post_ports_11 {
  59. label = "11"
  60. value_name = $
  61. String function value(model : Element, name : String, mapping : Element):
  62. return "neutral"!
  63. $
  64. }
  65. Post_Encapsulated_PetriNet/PortPlace (post_ports_11, post_ports_01) {
  66. label = "21"
  67. }
  68. Post_Encapsulated_PetriNet/Place post_ports_02 {
  69. label = "02"
  70. value_name = $
  71. String function value(model : Element, name : String, mapping : Element):
  72. return "down"!
  73. $
  74. value_tokens = $
  75. Integer function value(model : Element, name : String, mapping : Element):
  76. return 0!
  77. $
  78. }
  79. Post_Encapsulated_PetriNet/Port post_ports_12 {
  80. label = "12"
  81. value_name = $
  82. String function value(model : Element, name : String, mapping : Element):
  83. return "down"!
  84. $
  85. }
  86. Post_Encapsulated_PetriNet/PortPlace (post_ports_12, post_ports_02) {
  87. label = "22"
  88. }
  89. Post_Encapsulated_PetriNet/Place post_ports_03 {
  90. label = "03"
  91. value_name = $
  92. String function value(model : Element, name : String, mapping : Element):
  93. return "interrupt"!
  94. $
  95. value_tokens = $
  96. Integer function value(model : Element, name : String, mapping : Element):
  97. return 0!
  98. $
  99. }
  100. Post_Encapsulated_PetriNet/Port post_ports_13 {
  101. label = "13"
  102. value_name = $
  103. String function value(model : Element, name : String, mapping : Element):
  104. return "interrupt"!
  105. $
  106. }
  107. Post_Encapsulated_PetriNet/PortPlace (post_ports_13, post_ports_03) {
  108. label = "23"
  109. }
  110. Post_Encapsulated_PetriNet/Place post_ports_04 {
  111. label = "04"
  112. value_name = $
  113. String function value(model : Element, name : String, mapping : Element):
  114. return "objDetected"!
  115. $
  116. value_tokens = $
  117. Integer function value(model : Element, name : String, mapping : Element):
  118. // Set the detected output based on the initial state
  119. Element states
  120. String state
  121. states = allInstances(model, "PW_Plant/State")
  122. while (set_len(states) > 0):
  123. state = set_pop(states)
  124. if (value_eq(read_attribute(model, state, "isInitial"), True)):
  125. if (read_type(model, state) == "PW_Plant/ErrorState"):
  126. return 1!
  127. else:
  128. return 0!
  129. $
  130. }
  131. Post_Encapsulated_PetriNet/Port post_ports_14 {
  132. label = "14"
  133. value_name = $
  134. String function value(model : Element, name : String, mapping : Element):
  135. return "objDetected"!
  136. $
  137. }
  138. Post_Encapsulated_PetriNet/PortPlace (post_ports_14, post_ports_04) {
  139. label = "24"
  140. }
  141. Post_Encapsulated_PetriNet/Place post_ports_05 {
  142. label = "05"
  143. value_name = $
  144. String function value(model : Element, name : String, mapping : Element):
  145. return "no_objDetected"!
  146. $
  147. value_tokens = $
  148. Integer function value(model : Element, name : String, mapping : Element):
  149. // Set the detected output based on the initial state
  150. Element states
  151. String state
  152. states = allInstances(model, "PW_Plant/State")
  153. while (set_len(states) > 0):
  154. state = set_pop(states)
  155. if (value_eq(read_attribute(model, state, "isInitial"), True)):
  156. if (read_type(model, state) == "PW_Plant/ErrorState"):
  157. return 0!
  158. else:
  159. return 1!
  160. $
  161. }
  162. Post_Encapsulated_PetriNet/Port post_ports_15 {
  163. label = "15"
  164. value_name = $
  165. String function value(model : Element, name : String, mapping : Element):
  166. return "no_objDetected"!
  167. $
  168. }
  169. Post_Encapsulated_PetriNet/PortPlace (post_ports_15, post_ports_05) {
  170. label = "25"
  171. }
  172. Post_Encapsulated_PetriNet/Place post_ports_06 {
  173. label = "06"
  174. value_name = $
  175. String function value(model : Element, name : String, mapping : Element):
  176. return "objPresent"!
  177. $
  178. value_tokens = $
  179. Integer function value(model : Element, name : String, mapping : Element):
  180. return 0!
  181. $
  182. }
  183. Post_Encapsulated_PetriNet/Port post_ports_16 {
  184. label = "16"
  185. value_name = $
  186. String function value(model : Element, name : String, mapping : Element):
  187. return "objPresent"!
  188. $
  189. }
  190. Post_Encapsulated_PetriNet/PortPlace (post_ports_16, post_ports_06) {
  191. label = "26"
  192. }
  193. Post_Encapsulated_PetriNet/Place post_ports_07 {
  194. label = "07"
  195. value_name = $
  196. String function value(model : Element, name : String, mapping : Element):
  197. return "no_objPresent"!
  198. $
  199. value_tokens = $
  200. Integer function value(model : Element, name : String, mapping : Element):
  201. return 0!
  202. $
  203. }
  204. Post_Encapsulated_PetriNet/Port post_ports_17 {
  205. label = "17"
  206. value_name = $
  207. String function value(model : Element, name : String, mapping : Element):
  208. return "no_objPresent"!
  209. $
  210. }
  211. Post_Encapsulated_PetriNet/PortPlace (post_ports_17, post_ports_07) {
  212. label = "27"
  213. }
  214. }
  215. }
  216. {Contains} ForAll create_states {
  217. LHS {
  218. Pre_PW_Plant/State {
  219. label = "0"
  220. }
  221. }
  222. RHS {
  223. Post_PW_Plant/State post_cs_0 {
  224. label = "0"
  225. }
  226. Post_Encapsulated_PetriNet/Place post_cs_1 {
  227. label = "1"
  228. value_name = $
  229. String function value(model : Element, name : String, mapping : Element):
  230. return read_attribute(model, mapping["0"], "name")!
  231. $
  232. value_tokens = $
  233. Integer function value(model : Element, name : String, mapping : Element):
  234. if (value_eq(read_attribute(model, mapping["0"], "isInitial"), True)):
  235. return 1!
  236. else:
  237. return 0!
  238. $
  239. }
  240. Post_PLANT2EPN_link (post_cs_0, post_cs_1) {
  241. label = "2"
  242. }
  243. }
  244. }
  245. {Contains} ForAll command_transition {
  246. LHS {
  247. Pre_PW_Plant/State pre_ct_0{
  248. label = "0"
  249. }
  250. Pre_PW_Plant/State pre_ct_1{
  251. label = "1"
  252. }
  253. Pre_PW_Plant/Transition pre_ct_2 (pre_ct_0, pre_ct_1) {
  254. label = "2"
  255. }
  256. Pre_Encapsulated_PetriNet/Place pre_ct_3{
  257. label = "3"
  258. }
  259. Pre_Encapsulated_PetriNet/Place pre_ct_4{
  260. label = "4"
  261. }
  262. Pre_PLANT2EPN_link P2E_l1 (pre_ct_0, pre_ct_3) {
  263. label = "5"
  264. }
  265. Pre_PLANT2EPN_link P2E_l2(pre_ct_1, pre_ct_4) {
  266. label = "6"
  267. }
  268. Pre_Encapsulated_PetriNet/Place pre_ct_7 {
  269. label = "7"
  270. constraint_name = $
  271. Boolean function constraint(value : String):
  272. return (bool_or(bool_or(value == "up", value == "neutral"), value == "down"))!
  273. $
  274. }
  275. Pre_Encapsulated_PetriNet/Port pre_ct_8 {
  276. label = "8"
  277. constraint_name = $
  278. Boolean function constraint(value : String):
  279. return (bool_or(bool_or(value == "up", value == "neutral"), value == "down"))!
  280. $
  281. }
  282. Pre_Encapsulated_PetriNet/PortPlace pp_l (pre_ct_8, pre_ct_7) {
  283. label = "9"
  284. }
  285. constraint = $
  286. Boolean function constraint(model : Element, mapping : Element):
  287. String transition_type
  288. String port_name
  289. transition_type = read_type(model, mapping["2"])
  290. port_name = read_attribute(model, mapping["8"], "name")
  291. if (transition_type == "PW_Plant/OnUp"):
  292. return (port_name == "up")!
  293. elif (transition_type == "PW_Plant/OnNeutral"):
  294. return (port_name == "neutral")!
  295. elif (transition_type == "PW_Plant/OnDown"):
  296. return (port_name == "down")!
  297. else:
  298. return False!
  299. $
  300. }
  301. RHS {
  302. Post_PW_Plant/State post_ct_0{
  303. label = "0"
  304. }
  305. Post_PW_Plant/State post_ct_1{
  306. label = "1"
  307. }
  308. Post_PW_Plant/Transition post_ct_2 (post_ct_0, post_ct_1) {
  309. label = "2"
  310. }
  311. Post_Encapsulated_PetriNet/Place post_ct_3{
  312. label = "3"
  313. }
  314. Post_Encapsulated_PetriNet/Place post_ct_4{
  315. label = "4"
  316. }
  317. Post_PLANT2EPN_link (post_ct_0, post_ct_3) {
  318. label = "5"
  319. }
  320. Post_PLANT2EPN_link (post_ct_1, post_ct_4) {
  321. label = "6"
  322. }
  323. Post_Encapsulated_PetriNet/Place post_ct_7 {
  324. label = "7"
  325. }
  326. Post_Encapsulated_PetriNet/Port post_ct_8 {
  327. label = "8"
  328. }
  329. Post_Encapsulated_PetriNet/PortPlace (post_ct_8, post_ct_7) {
  330. label = "9"
  331. }
  332. Post_Encapsulated_PetriNet/Transition post_ct_10 {
  333. label = "10"
  334. value_name = $
  335. String function value(model : Element, name : String, mapping : Element):
  336. return string_join(string_join(read_attribute(model, mapping["0"], "name"), read_type(model, mapping["2"])), read_attribute(model, mapping["2"], "objPresent"))!
  337. $
  338. }
  339. Post_Encapsulated_PetriNet/P2T (post_ct_3, post_ct_10) {
  340. label = "11"
  341. }
  342. Post_Encapsulated_PetriNet/T2P (post_ct_10, post_ct_4) {
  343. label = "12"
  344. }
  345. Post_Encapsulated_PetriNet/P2T (post_ct_7, post_ct_10) {
  346. label = "13"
  347. }
  348. Post_Encapsulated_PetriNet/T2P (post_ct_10, post_ct_7) {
  349. label = "14"
  350. }
  351. Post_PLANT2EPN_tlink (post_ct_2, post_ct_10) {
  352. label = "100"
  353. }
  354. }
  355. }
  356. {Contains} ForAll check_object {
  357. LHS {
  358. Pre_PW_Plant/State pre_co_0{
  359. label = "0"
  360. }
  361. Pre_PW_Plant/State pre_co_1{
  362. label = "1"
  363. }
  364. Pre_PW_Plant/Transition pre_co_2 (pre_co_0, pre_co_1) {
  365. label = "2"
  366. constraint_objPresent = $
  367. Boolean function constraint(value : String):
  368. return (bool_or(value == "Y", value == "N"))!
  369. $
  370. }
  371. Pre_Encapsulated_PetriNet/Place pre_co_8 {
  372. label = "8"
  373. }
  374. Pre_Encapsulated_PetriNet/Port pre_co_11 {
  375. label = "11"
  376. constraint_name = $
  377. Boolean function constraint(value : String):
  378. return (bool_or(value == "objPresent", value == "no_objPresent"))!
  379. $
  380. }
  381. Pre_Encapsulated_PetriNet/PortPlace (pre_co_11, pre_co_8) {
  382. label = "12"
  383. }
  384. Pre_Encapsulated_PetriNet/Transition pre_co_15 {
  385. label = "15"
  386. }
  387. Pre_PLANT2EPN_tlink (pre_co_2, pre_co_15) {
  388. label = "100"
  389. }
  390. constraint = $
  391. Boolean function constraint (host_model : Element, mapping : Element):
  392. // Check whether the bound primary places match with the state
  393. String objPresent
  394. String port_name
  395. objPresent = read_attribute(host_model, mapping["2"], "objPresent")
  396. port_name = read_attribute(host_model, mapping["11"], "name")
  397. if (objPresent == "Y"):
  398. return (port_name == "objPresent")!
  399. elif (objPresent == "N"):
  400. return (port_name == "no_objPresent")!
  401. else:
  402. return False!
  403. $
  404. }
  405. RHS {
  406. Post_PW_Plant/State post_co_0{
  407. label = "0"
  408. }
  409. Post_PW_Plant/State post_co_1{
  410. label = "1"
  411. }
  412. Post_PW_Plant/Transition post_co_2 (post_co_0, post_co_1) {
  413. label = "2"
  414. }
  415. Post_Encapsulated_PetriNet/Place post_co_8 {
  416. label = "8"
  417. }
  418. Post_Encapsulated_PetriNet/Port post_co_11 {
  419. label = "11"
  420. }
  421. Post_Encapsulated_PetriNet/PortPlace (post_co_11, post_co_8) {
  422. label = "12"
  423. }
  424. Post_Encapsulated_PetriNet/Transition post_co_15 {
  425. label = "15"
  426. }
  427. Post_Encapsulated_PetriNet/P2T (post_co_8, post_co_15) {
  428. label = "9"
  429. }
  430. Post_Encapsulated_PetriNet/T2P (post_co_15, post_co_8) {
  431. label = "10"
  432. }
  433. Post_PLANT2EPN_tlink (post_co_2, post_co_15) {
  434. label = "100"
  435. }
  436. }
  437. }
  438. {Contains} ForAll detect {
  439. LHS {
  440. Pre_PW_Plant/NormalState pre_de_0{
  441. label = "0"
  442. }
  443. Pre_PW_Plant/ErrorState pre_de_1{
  444. label = "1"
  445. }
  446. Pre_PW_Plant/Transition pre_de_2 (pre_de_0, pre_de_1) {
  447. label = "2"
  448. }
  449. Pre_Encapsulated_PetriNet/Transition pre_de_7 {
  450. label = "7"
  451. }
  452. Pre_Encapsulated_PetriNet/Place pre_de_10 {
  453. label = "10"
  454. }
  455. Pre_Encapsulated_PetriNet/Port pre_de_11 {
  456. label = "11"
  457. }
  458. Pre_Encapsulated_PetriNet/PortPlace (pre_de_11, pre_de_10) {
  459. label = "12"
  460. }
  461. Pre_Encapsulated_PetriNet/Place pre_de_13 {
  462. label = "13"
  463. }
  464. Pre_Encapsulated_PetriNet/Port pre_de_14 {
  465. label = "14"
  466. constraint_name = $
  467. Boolean function constraint(value : String):
  468. return (value == "interrupt")!
  469. $
  470. }
  471. Pre_Encapsulated_PetriNet/PortPlace (pre_de_14, pre_de_13) {
  472. label = "15"
  473. }
  474. Pre_Encapsulated_PetriNet/Place pre_de_16 {
  475. label = "16"
  476. }
  477. Pre_Encapsulated_PetriNet/Port pre_de_17 {
  478. label = "17"
  479. constraint_name = $
  480. Boolean function constraint(value : String):
  481. return (value == "no_objDetected")!
  482. $
  483. }
  484. Pre_Encapsulated_PetriNet/PortPlace (pre_de_17, pre_de_16) {
  485. label = "18"
  486. }
  487. Pre_Encapsulated_PetriNet/Place pre_de_19 {
  488. label = "19"
  489. }
  490. Pre_Encapsulated_PetriNet/Port pre_de_20 {
  491. label = "20"
  492. constraint_name = $
  493. Boolean function constraint(value : String):
  494. return (value == "objDetected")!
  495. $
  496. }
  497. Pre_Encapsulated_PetriNet/PortPlace (pre_de_20, pre_de_19) {
  498. label = "21"
  499. }
  500. Pre_Encapsulated_PetriNet/T2P (pre_de_7, pre_de_10) {
  501. label = "26"
  502. }
  503. Pre_PLANT2EPN_tlink (pre_de_2, pre_de_7) {
  504. label = "100"
  505. }
  506. constraint = $
  507. Boolean function constraint (host_model : Element, mapping : Element):
  508. // Check whether the bound primary places match with the state
  509. String source_type
  510. String port_name
  511. source_type = read_type(host_model, mapping["2"])
  512. port_name = read_attribute(host_model, mapping["11"], "name")
  513. if (source_type == "PW_Plant/OnUp"):
  514. return (port_name == "up")!
  515. elif (source_type == "PW_Plant/OnNeutral"):
  516. return (port_name == "neutral")!
  517. elif (source_type == "PW_Plant/OnDown"):
  518. return (port_name == "down")!
  519. else:
  520. return False!
  521. $
  522. }
  523. RHS {
  524. Post_PW_Plant/NormalState post_de_0{
  525. label = "0"
  526. }
  527. Post_PW_Plant/ErrorState post_de_1{
  528. label = "1"
  529. }
  530. Post_PW_Plant/Transition post_de_2 (post_de_0, post_de_1){
  531. label = "2"
  532. }
  533. Post_Encapsulated_PetriNet/Transition post_de_7 {
  534. label = "7"
  535. }
  536. Post_Encapsulated_PetriNet/Place post_de_10 {
  537. label = "10"
  538. }
  539. Post_Encapsulated_PetriNet/Port post_de_11 {
  540. label = "11"
  541. }
  542. Post_Encapsulated_PetriNet/PortPlace (post_de_11, post_de_10) {
  543. label = "12"
  544. }
  545. Post_Encapsulated_PetriNet/Place post_de_13 {
  546. label = "13"
  547. }
  548. Post_Encapsulated_PetriNet/Port post_de_14 {
  549. label = "14"
  550. }
  551. Post_Encapsulated_PetriNet/PortPlace (post_de_14, post_de_13) {
  552. label = "15"
  553. }
  554. Post_Encapsulated_PetriNet/Place post_de_16 {
  555. label = "16"
  556. }
  557. Post_Encapsulated_PetriNet/Port post_de_17 {
  558. label = "17"
  559. }
  560. Post_Encapsulated_PetriNet/PortPlace (post_de_17, post_de_16) {
  561. label = "18"
  562. }
  563. Post_Encapsulated_PetriNet/Place post_de_19 {
  564. label = "19"
  565. }
  566. Post_Encapsulated_PetriNet/Port post_de_20 {
  567. label = "20"
  568. }
  569. Post_Encapsulated_PetriNet/PortPlace (post_de_20, post_de_19) {
  570. label = "21"
  571. }
  572. Post_Encapsulated_PetriNet/T2P (post_de_7, post_de_13) {
  573. label = "23"
  574. }
  575. Post_Encapsulated_PetriNet/P2T (post_de_16, post_de_7) {
  576. label = "24"
  577. }
  578. Post_Encapsulated_PetriNet/T2P (post_de_7, post_de_19) {
  579. label = "25"
  580. }
  581. Post_PLANT2EPN_tlink (post_de_2, post_de_7) {
  582. label = "100"
  583. }
  584. }
  585. }
  586. {Contains} ForAll remove_detect {
  587. LHS {
  588. Pre_PW_Plant/ErrorState pre_rd_0{
  589. label = "0"
  590. }
  591. Pre_PW_Plant/NormalState pre_rd_1{
  592. label = "1"
  593. }
  594. Pre_PW_Plant/Transition pre_rd_2 (pre_rd_0, pre_rd_1){
  595. label = "2"
  596. }
  597. Pre_Encapsulated_PetriNet/Transition pre_rd_7 {
  598. label = "7"
  599. }
  600. Pre_Encapsulated_PetriNet/Place pre_rd_10 {
  601. label = "10"
  602. }
  603. Pre_Encapsulated_PetriNet/Port pre_rd_11 {
  604. label = "11"
  605. constraint_name = $
  606. Boolean function constraint(value : String):
  607. return (value == "objDetected")!
  608. $
  609. }
  610. Pre_Encapsulated_PetriNet/PortPlace (pre_rd_11, pre_rd_10) {
  611. label = "12"
  612. }
  613. Pre_Encapsulated_PetriNet/Place pre_rd_13 {
  614. label = "13"
  615. }
  616. Pre_Encapsulated_PetriNet/Port pre_rd_14 {
  617. label = "14"
  618. constraint_name = $
  619. Boolean function constraint(value : String):
  620. return (value == "no_objDetected")!
  621. $
  622. }
  623. Pre_Encapsulated_PetriNet/PortPlace (pre_rd_14, pre_rd_13) {
  624. label = "15"
  625. }
  626. Pre_PLANT2EPN_tlink (pre_rd_2, pre_rd_7) {
  627. label = "100"
  628. }
  629. }
  630. RHS {
  631. Post_PW_Plant/ErrorState post_rd_0{
  632. label = "0"
  633. }
  634. Post_PW_Plant/NormalState post_rd_1{
  635. label = "1"
  636. }
  637. Post_PW_Plant/Transition post_rd_2 (post_rd_0, post_rd_1){
  638. label = "2"
  639. }
  640. Post_Encapsulated_PetriNet/Transition post_rd_7 {
  641. label = "7"
  642. }
  643. Post_Encapsulated_PetriNet/Place post_rd_10 {
  644. label = "10"
  645. }
  646. Post_Encapsulated_PetriNet/Port post_rd_11 {
  647. label = "11"
  648. }
  649. Post_Encapsulated_PetriNet/PortPlace (post_rd_11, post_rd_10) {
  650. label = "12"
  651. }
  652. Post_Encapsulated_PetriNet/Place post_rd_13 {
  653. label = "13"
  654. }
  655. Post_Encapsulated_PetriNet/Port post_rd_14 {
  656. label = "14"
  657. }
  658. Post_Encapsulated_PetriNet/PortPlace (post_rd_14, post_rd_13) {
  659. label = "15"
  660. }
  661. Post_Encapsulated_PetriNet/P2T (post_rd_10, post_rd_7) {
  662. label = "16"
  663. }
  664. Post_Encapsulated_PetriNet/T2P (post_rd_7, post_rd_13) {
  665. label = "17"
  666. }
  667. Post_PLANT2EPN_tlink (post_rd_2, post_rd_7) {
  668. label = "100"
  669. }
  670. }
  671. }
  672. }
  673. Initial (schedule, init_ports) {}
  674. OnSuccess (init_ports, create_states) {}
  675. OnSuccess (create_states, command_transition) {}
  676. OnSuccess (command_transition, check_object) {}
  677. OnSuccess (check_object, detect) {}
  678. OnSuccess (detect, remove_detect) {}
  679. OnSuccess (remove_detect, finish) {}
  680. OnSuccess (finish, success) {}
  681. OnFailure (init_ports, create_states) {}
  682. OnFailure (create_states, command_transition) {}
  683. OnFailure (command_transition, check_object) {}
  684. OnFailure (check_object, detect) {}
  685. OnFailure (detect, remove_detect) {}
  686. OnFailure (remove_detect, finish) {}
  687. OnFailure (finish, failure) {}