model_01_flat_nodoor.xml 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <single_instance_cd>
  2. <!-- "Take Many"-variant -->
  3. <delta>1 ms</delta>
  4. <statechart>
  5. <semantics
  6. big_step_maximality="take_many"
  7. combo_step_maximality="take_one"
  8. input_event_lifeline="first_combo_step"
  9. same_source_priority="explicit"
  10. />
  11. <datamodel>
  12. import GUI;
  13. time = 0;
  14. checkStartTime = func {
  15. if (time == 0) {
  16. time = 30;
  17. display_time(time);
  18. }
  19. };
  20. </datamodel>
  21. <inport name="in">
  22. <event name="start"/>
  23. <event name="stop"/>
  24. <event name="increase_time"/>
  25. <event name="door_opened"/>
  26. <event name="door_closed"/>
  27. </inport>
  28. <outport name="out">
  29. <event name="micro_on"/>
  30. <event name="micro_off"/>
  31. <event name="bell"/>
  32. </outport>
  33. <root initial="NotRunning">
  34. <state id="Running">
  35. <onentry> <raise port="out" event="micro_on"/> </onentry>
  36. <onexit> <raise port="out" event="micro_off"/> </onexit>
  37. <transition port="in" event="stop" target="../NotRunning"/>
  38. <state id="Inner">
  39. <transition after="1 s" target=".">
  40. <code> time -= 1; display_time(time); </code>
  41. </transition>
  42. <transition port="in" event="increase_time" target=".">
  43. <code> time += 10; display_time(time); </code>
  44. </transition>
  45. </state>
  46. <transition cond="time == 0" target="../NotRunning">
  47. <raise port="out" event="bell"/>
  48. </transition>
  49. </state>
  50. <state id="NotRunning">
  51. <transition port="in" event="start" target="../Running">
  52. <code> checkStartTime(); </code>
  53. </transition>
  54. <transition port="in" event="stop" target=".">
  55. <code> time = 0; display_time(time); </code>
  56. </transition>
  57. <transition port="in" event="increase_time" target=".">
  58. <code> time += 10; display_time(time); </code>
  59. </transition>
  60. </state>
  61. </root>
  62. </statechart>
  63. </single_instance_cd>