Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionBoth sides next revision | ||
alvis:cases:ats [2011/04/10 16:16] marcin | alvis:cases:ats [2021/09/23 08:51] (current) | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Automatic Train Stop system - version 1 ====== | ||
+ | |||
+ | Automatic Train Stop system (ATS system) is a kind of an Automatic Train Protection system used to guarantee a train safety even if the driver is not capable of controlling the train. ATS system turns on a light signal every 60 seconds to check whether the driver controls the train. If the driver fails to acknowledge the signal within 6 seconds, a sound signal is turned on. Then, if the driver does not disactivate the signals within 3 seconds, using the acknowledge button, the emergency brakes are applied automatically to stop the train. | ||
+ | |||
+ | ===== Files ===== | ||
+ | |||
+ | * {{: | ||
+ | * {{: | ||
+ | |||
+ | ===== Model ===== | ||
+ | |||
+ | {{: | ||
+ | |||
+ | < | ||
+ | environment { | ||
+ | in wakeup [] (map (60000*) [0..]) durable; | ||
+ | in off [] (map (1000*) [1..]) signal; | ||
+ | out warning [0,1,2] []; | ||
+ | out brake [] []; | ||
+ | } | ||
+ | |||
+ | agent ATS { | ||
+ | loop { | ||
+ | in wakeup; | ||
+ | out warning 1; | ||
+ | select { | ||
+ | alt (ready [in(off)]) { | ||
+ | in off; | ||
+ | out warning 0; | ||
+ | } | ||
+ | alt(delay 6000) { | ||
+ | out warning 2; | ||
+ | select { | ||
+ | alt (ready [in(off)]) { | ||
+ | in off; | ||
+ | out warning 0; | ||
+ | } | ||
+ | alt (delay 3000) { | ||
+ | out brake; | ||
+ | exit; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | ====== Automatic Train Stop System - version 2 ====== | ||
+ | |||
+ | ===== Files ===== | ||
+ | |||
+ | * {{: | ||
+ | * {{: | ||
+ | |||
+ | ===== Model ===== | ||
+ | |||
+ | {{: | ||
+ | |||
+ | < | ||
+ | environment { | ||
+ | in off [] (map (1000*) [1..]) signal; | ||
+ | out brake [] []; | ||
+ | } | ||
+ | |||
+ | agent ATS { | ||
+ | loop { | ||
+ | in wakeup; | ||
+ | out warning 1; | ||
+ | select { | ||
+ | alt (ready [in(off)]) { | ||
+ | in off; | ||
+ | out warning 0; | ||
+ | } | ||
+ | alt(delay 6000) { | ||
+ | out warning 2; | ||
+ | select { | ||
+ | alt (ready [in(off)]) { | ||
+ | in off; | ||
+ | out warning 0; | ||
+ | } | ||
+ | alt (delay 3000) { | ||
+ | out brake; | ||
+ | exit; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | agent Timer { | ||
+ | loop (every 6000) { | ||
+ | out tick; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | agent Console { | ||
+ | state ::Int = 0; | ||
+ | proc setState { in setState state ; } | ||
+ | } | ||
+ | </ | ||
+ | |||