scchart railway { initial state controller { region "go" : A; initial state init --> running immediate with /'setpoint(railway, 1, BRANCH)'; 'setpoint(railway, 3, BRANCH)'; 'setpoint(railway, 2, STRAIGHT)'; 'setpoint(railway, 1, BRANCH)'; 'setpoint(railway, 0, BRANCH)'; 'setpoint(railway, 16, BRANCH)'; 'setpoint(railway, 17, BRANCH)'; 'setpoint(railway, 18, BRANCH)'; 'setpoint(railway, 20, STRAIGHT)'; 'setpoint(railway, 24, STRAIGHT)'; 'setpoint(railway, 29, BRANCH)'; 'setpoint(railway, 27, STRAIGHT)'; 'setpoint(railway, 28, STRAIGHT)'; 'setpoint(railway, 9, BRANCH)'; 'setpoint(railway, 8, BRANCH)'; 'setpoint(railway, 7, STRAIGHT)'; 'setpoint(railway, 6, BRANCH)'; 'settrack(railway, KH_ST_0, REV, 100)'; 'settrack(railway, KIO_LN_0, REV, 100)'; 'settrack(railway, OC_ST_4, REV, 100)'; 'settrack(railway, IC_ST_0, FWD, 100)'; 'settrack(railway, IC_ST_4, FWD, 100)'; 'settrack(railway, OC_ST_0, REV, 100)'; 'settrack(railway, KIO_LN_1, REV, 100)'; 'settrack(railway, KH_ST_6, REV, 100)'; state running; region "platform KH" : B; state waiting --> slowdown immediate with 'getcontact(railway, KH_ST_3, 0, 0)==REV'/'settrack(railway, KH_ST_3, REV, 40)'; state slowdown --> stop immediate with 'getcontact(railway, KH_ST_3, 1, 0)==REV'/'settrack(railway, KH_ST_3, BRAKE, 0)'; 'sleep(5)'; initial state stop --> waiting with /'settrack(railway, KH_ST_3, REV, 100)'; region "platform IC" : C; state waiting --> slowdown immediate with 'getcontact(railway, IC_ST_1, 0, 0)==FWD'/'settrack(railway, IC_ST_1, FWD, 40)'; state slowdown --> stop immediate with 'getcontact(railway, IC_ST_1, 1, 0)==FWD'/'settrack(railway, IC_ST_1, BRAKE, 0)'; 'sleep(10)'; initial state stop --> waiting with /'settrack(railway, IC_ST_1, FWD, 100)'; }; }