process env_Regulator = ( ? boolean Bms; boolean BCarStarter, BOnOffReg, BpressAcceleratorPedal, BreleaseAcceleratorPedal, BpressBrakePedal; ! ) (| main_Regulator(^Bms, when Bms, when BCarStarter, when BOnOffReg, when BpressAcceleratorPedal, when BreleaseAcceleratorPedal, when BpressBrakePedal) | Bms ^= BCarStarter ^= BOnOffReg ^= BpressAcceleratorPedal ^= BreleaseAcceleratorPedal ^= BpressBrakePedal |) where process main_Regulator = ( ? event Tick; event ms; event CarStarter, OnOffReg, pressAcceleratorPedal, releaseAcceleratorPedal, pressBrakePedal; ! ) (| sub_main_Regulator(Tick, ms, CarStarter, OnOffReg, pressAcceleratorPedal, releaseAcceleratorPedal, pressBrakePedal) |) where statevar integer Speed_value; statevar dreal ControlEquation_regulatingCoefficient init 0.6; statevar integer ControlEquation_orderedSpeed; process sub_main_Regulator = ( ? event Tick; event ms; event CarStarter, OnOffReg, pressAcceleratorPedal, releaseAcceleratorPedal, pressBrakePedal; ! ) (| (Regulator_currentState, Ready_currentState) := Regulator_chart(Tick, ms, CarStarter, OnOffReg, speedTooLow, pressAcceleratorPedal, releaseAcceleratorPedal, pressBrakePedal) | (Speed_currentState, speedTooLow) := Speed_chart(Tick, ms, CarStarter) |) where type Regulator_states = enum (notReady, Ready); type Regulator_Ready_states = enum (Stopped, Regulating, Suspended); type Speed_states = enum (notReady, Ready); Regulator_states Regulator_currentState; Regulator_Ready_states Ready_currentState; Speed_states Speed_currentState; event speedTooLow; use Interface; use Speed; use ControlEquation; use Regulator; end; end; end;