model_01b_flat_nodoor.xml 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <single_instance_cd>
  2. <!-- "Take One"-variant with 2 after-transitions -->
  3. <delta>1 ms</delta>
  4. <statechart>
  5. <semantics
  6. big_step_maximality="take_one"
  7. input_event_lifeline="whole"
  8. hierarchical_priority="source_parent"
  9. same_source_priority="explicit"
  10. />
  11. <datamodel>
  12. time = 0;
  13. checkStartTime = func {
  14. if (time == 0) time = 30;
  15. };
  16. </datamodel>
  17. <inport name="in">
  18. <event name="start"/>
  19. <event name="stop"/>
  20. <event name="increase_time"/>
  21. <event name="door_opened"/>
  22. <event name="door_closed"/>
  23. </inport>
  24. <outport name="out">
  25. <event name="micro_on"/>
  26. <event name="micro_off"/>
  27. <event name="set_time"/>
  28. <event name="ping"/>
  29. </outport>
  30. <root initial="NotRunning">
  31. <state id="Running">
  32. <onentry> <raise port="out" event="micro_on"/> </onentry>
  33. <onexit> <raise port="out" event="micro_off"/> </onexit>
  34. <transition port="in" event="stop" target="../NotRunning"/>
  35. <transition after="1 s" cond="time > 1" target=".">
  36. <code> time -= 1; </code>
  37. <raise port="out" event="set_time">
  38. <param expr="time"/>
  39. </raise>
  40. </transition>
  41. <transition port="in" event="increase_time" target=".">
  42. <code> time += 10; </code>
  43. <raise port="out" event="set_time">
  44. <param expr="time"/>
  45. </raise>
  46. </transition>
  47. <transition after="1 s" cond="time == 1" target="../NotRunning">
  48. <code> time -= 1; </code>
  49. <raise port="out" event="set_time">
  50. <param expr="time"/>
  51. </raise>
  52. </transition>
  53. </state>
  54. <state id="NotRunning">
  55. <transition port="in" event="start" target="../Running">
  56. <code> checkStartTime(); </code>
  57. <raise port="out" event="set_time">
  58. <param expr="time"/>
  59. </raise>
  60. </transition>
  61. <transition port="in" event="stop" target=".">
  62. <code> time = 0; </code>
  63. <raise port="out" event="set_time">
  64. <param expr="time"/>
  65. </raise>
  66. </transition>
  67. <transition port="in" event="increase_time" target=".">
  68. <code> time += 10; </code>
  69. <raise port="out" event="set_time">
  70. <param expr="time"/>
  71. </raise>
  72. </transition>
  73. </state>
  74. </root>
  75. </statechart>
  76. </single_instance_cd>