This is the Dymola library for Petri net, and has been converted into a Modelica package for convenience.
model StartPlace constant Boolean DymolaCompatibility=true; Boolean state(start=true); PlaceCut place(booleans=[state]); equation when Initial(Time) then state = true; end when; end StartPlace;
model Place constant Boolean DymolaCompatibility=true; Boolean state(start=false); PlaceCut place(booleans=[state]); equation when Initial(Time) then state = false; end when; end Place;
Name | Default | Description |
---|---|---|
condLabel | " " | Condition as string (e.g. x > 0) |
model Transition constant Boolean DymolaCompatibility=true; parameter String condLabel=" " "Condition as string (e.g. x > 0)"; Real status; Boolean condition(start=false); Boolean inState(start=false); Boolean outState(start=false); TransitionCut in_(booleans=[inState]); TransitionCut out(booleans=[outState]); ConditionCut c1(booleans=[condition]); ConditionCut c2(booleans=[condition]); equation when inState and condition and not Initial(Time) then status = SetBoolean2(inState, false, outState, true); end when; end Transition;
connector PlaceCut "Cut of a petri net place (or state of a state machine)" constant Boolean DymolaCompatibility=true; extends CutBase; end PlaceCut;
connector TransitionCut "Cut of a petri net transition" constant Boolean DymolaCompatibility=true; extends CutBase; end TransitionCut;
connector ConditionCut "Condition cut of a petri net transition" constant Boolean DymolaCompatibility=true; extends CutBase; end ConditionCut;
Name | Default | Description |
---|---|---|
condLabel | "" | Condition as string (e.g. x > 0) |
model Parallel constant Boolean DymolaCompatibility=true; parameter String condLabel="" "Condition as string (e.g. x > 0)"; Real status; Boolean inState; Boolean outState1; Boolean outState2; Boolean condition; TransitionCut in_(booleans=[inState]); TransitionCut out1(booleans=[outState1]); TransitionCut out2(booleans=[outState2]); ConditionCut c1(booleans=[condition]); ConditionCut c2(booleans=[condition]); equation when inState and condition and not Initial(Time) then status = SetBoolean3(inState, false, outState1, true, outState2, true); end when; end Parallel;
Name | Default | Description |
---|---|---|
condLabel | "" | Condition as string (e.g. x > 0) |
model Synchronize constant Boolean DymolaCompatibility=true; parameter String condLabel="" "Condition as string (e.g. x > 0)"; Real status; Boolean inState1; Boolean inState2; Boolean outState; Boolean condition; TransitionCut in1(booleans=[inState1]); TransitionCut in2(booleans=[inState2]); TransitionCut out(booleans=[outState]); ConditionCut c1(booleans=[condition]); ConditionCut c2(booleans=[condition]); equation when inState1 and inState2 and condition and not Initial(Time) then status = SetBoolean3(inState1, false, inState2, false, outState, true); end when; end Synchronize;