Refactor repo structure

This commit is contained in:
Marco Realacci 2024-01-19 03:29:39 +01:00
parent 36ac339086
commit 8fc89fbc03
1732 changed files with 3812 additions and 67 deletions

View file

@ -0,0 +1,47 @@
: block CoffeeMachine
parameter Real T = 1; // clock
InputInteger Customer2Machine;
OutputInteger Machine2Customer;
/*
0: nop
1: enough coins inserted
2: drink dispensed
3: done
*/
Integer state;
/*
0: waiting for coins
1: waiting for selection
2: dispensing
3: refund/change
*/
algorithm
when initial() then
state := 0;
Machine2Customer := 0;
elsewhen sample(0, T) then
if (pre(state) == 0) and (Customer2Machine == 1)
then // customer has inserted enough coins
state := 1;
Machine2Customer := 1;
elseif (pre(state) == 1) and (Customer2Machine == 2) // drink selected
then // drink selected
state := 2; // dispensing drink
Machine2Customer := 0;
elseif (pre(state) == 1) and (Customer2Machine == 3) // cancel transaction
then // refund
state := 3; // refund/change
Machine2Customer := 0;
elseif (pre(state) == 2) // drink dispensed
then // drink dispensed
state := 3;
Machine2Customer := 2;
elseif (pre(state) == 3) // refund/change
then // refund
state := 0;
Machine2Customer := 3; // done
else state := pre(state);
Machine2Customer := pre(Machine2Customer);
end if;
end when;
end CoffeeMachine;

View file

@ -0,0 +1,3 @@
img=https://i.imgur.com/Wk63xgA.png
Lo state diagram in figura descrive (in modo semplificato) una macchina distributrice di bevande. Quale dei seguenti
modelli Modelica è plausibile per lo state diagram in figura?

View file

@ -0,0 +1,47 @@
block CoffeeMachine
parameter Real T = 1; // clock
InputInteger Customer2Machine;
OutputInteger Machine2Customer;
/*
0: nop
1: enough coins inserted
2: drink dispensed
3: done
*/
Integer state;
/*
0: waiting for coins
1: waiting for selection
2: dispensing
3: refund/change
*/
algorithm
when initial() then
state := 0;
Machine2Customer := 0;
elsewhen sample(0, T) then
if (pre(state) == 0) and (Customer2Machine == 1)
then // customer has inserted enough coins
state := 1;
Machine2Customer := 1;
elseif (pre(state) == 1) and (Customer2Machine == 2) // drink selected
then // drink selected
state := 2; // dispensing drink
Machine2Customer := 0;
elseif (pre(state) == 1) and (Customer2Machine == 3) // cancel transaction
then // refund
state := 3; // refund/change
Machine2Customer := 0;
elseif (pre(state) == 2) // drink dispensed
then // drink dispensed
state := 0;
Machine2Customer := 2;
elseif (pre(state) == 3) // refund/change
then // refund
state := 0;
Machine2Customer := 3; // done
else state := pre(state);
Machine2Customer := pre(Machine2Customer);
end if;
end when;
end CoffeeMachine;

View file

@ -0,0 +1,47 @@
block CoffeeMachine
parameter Real T = 1; // clock
InputInteger Customer2Machine;
OutputInteger Machine2Customer;
/*
0: nop
1: enough coins inserted
2: drink dispensed
3: done
*/
Integer state;
/*
0: waiting for coins
1: waiting for selection
2: dispensing
3: refund/change
*/
algorithm
when initial() then
state := 0;
Machine2Customer := 0;
elsewhen sample(0, T) then
if (pre(state) == 0) and (Customer2Machine == 1)
then // customer has inserted enough coins
state := 1;
Machine2Customer := 1;
elseif (pre(state) == 1) and (Customer2Machine == 2) // drink selected
then // drink selected
state := 2; // dispensing drink
Machine2Customer := 0;
elseif (pre(state) == 1) and (Customer2Machine == 3) // cancel transaction
then // refund
state := 0; // refund/change
Machine2Customer := 0;
elseif (pre(state) == 2) // drink dispensed
then // drink dispensed
state := 3;
Machine2Customer := 2;
elseif (pre(state) == 3) // refund/change
then // refund
state := 0;
Machine2Customer := 3; // done
else state := pre(state);
Machine2Customer := pre(Machine2Customer);
end if;
end when;
end CoffeeMachine;