scchart rail { input bool second; initial state station_ctrl "station controller" { initial state IC_ST_2 { entry / 'setpoint(railway, 23, BRANCH)'; entry / 'setpoint(railway, 24, BRANCH)'; entry / 'setpoint(railway, 29, STRAIGHT)'; entry / 'settrack(railway, IC_ST_2, FWD, 100)'; entry / 'settrack(railway, IC_ST_4, FWD, 100)'; entry / 'settrack(railway, IC_LN_0, FWD, 100)'; } --> IC_LN_0 with 'contact[IC_LN_0][0]'; state IC_LN_0 { initial state entering { entry / 'settrack(railway, IC_LN_1, FWD, 100)'; } --> leaving with 'contact[IC_LN_0][1]'; state leaving { entry / 'settrack(railway, IC_ST_2, OFF, 0)'; entry / 'settrack(railway, IC_ST_4, OFF, 0)'; } --> f immediate; final state f; } >-> x1; state x1 --> IC_LN_1 with 'contact[IC_LN_1][0]'; state IC_LN_1 { initial state entering { entry / 'settrack(railway, IC_LN_2, FWD, 100)'; } --> leaving with 'contact[IC_LN_1][1]'; state leaving { entry / 'settrack(railway, IC_LN_0, OFF, 0)'; } --> f immediate; final state f; } >-> x2; state x2 --> IC_LN_2 with 'contact[IC_LN_2][0]'; state IC_LN_2 { initial state entering { entry / 'settrack(railway, IC_LN_3, FWD, 100)'; } --> leaving with 'contact[IC_LN_2][1]'; state leaving { entry / 'settrack(railway, IC_LN_1, OFF, 0)'; } --> f immediate; final state f; } >-> x3; state x3 --> IC_LN_3 with 'contact[IC_LN_3][0]'; state IC_LN_3 { initial state entering { entry / 'settrack(railway, IC_LN_4, FWD, 100)'; } --> leaving with 'contact[IC_LN_3][1]'; state leaving { entry / 'settrack(railway, IC_LN_2, OFF, 0)'; } --> f immediate; final state f; } >-> x4; state x4 --> IC_LN_4 with 'contact[IC_LN_4][0]'; state IC_LN_4 { initial state entering { entry / 'setpoint(railway, 13, STRAIGHT)'; entry / 'settrack(railway, IC_JCT_0, FWD, 100)'; entry / 'settrack(railway, IC_LN_5, FWD, 100)'; } --> leaving with 'contact[IC_LN_4][1]'; state leaving { entry / 'settrack(railway, IC_LN_3, OFF, 0)'; } --> f immediate; final state f; } >-> x5; state x5 --> IC_LN_5 with 'contact[IC_LN_5][0]'; state IC_LN_5 { initial state entering { entry / 'settrack(railway, IC_LN_4, OFF, 0)'; entry / 'setpoint(railway, 18, STRAIGHT)'; entry / 'settrack(railway, IC_ST_0, FWD, 100)'; } --> leaving with 'contact[IC_LN_5][1]'; state leaving { entry / 'settrack(railway, IC_JCT_0, OFF, 0)'; entry / 'setpoint(railway, 20, BRANCH)'; entry / 'setpoint(railway, 19, BRANCH)'; entry / 'settrack(railway, IC_ST_2, FWD, 100)'; } --> f immediate; final state f; } >-> x6; state x6 --> preIC_ST_2 with 'contact[IC_ST_2][0]'; state preIC_ST_2 { initial state entering { entry / 'settrack(railway, IC_ST_2, FWD, 40)'; entry / 'settrack(railway, IC_LN_5, OFF, 0)'; } --> leaving with 'contact[IC_ST_2][1]'; state leaving { entry / 'settrack(railway, IC_ST_2, BRAKE, 0)'; entry / 'settrack(railway, IC_ST_0, OFF, 0)'; } --> f immediate; final state f; } >-> waiting; state waiting { initial state c0 --> c1 with second; state c1 --> c2 with second; state c2 --> c3 with second; state c3 --> c4 with second; state c4 --> c5 with second; state c5 --> c6 with second; state c6 --> c7 with second; state c7 --> c8 with second; state c8 --> c9 with second; state c9 --> done with second; final state done; } >-> IC_ST_2; }; }