plant_to_EPN.mvc 29 KB

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