No tak jakoś wyszło :) W debugmode można go wyłączyć i nie ma z tym problemu, więc nie powinno być komplikacji.
EDIT: No to tak, moje rozwiązanie (niedokończone) wygląda w następujący sposób: po wyjeździe ze stacji i osiągnięciu 60 km/h robimy hamowanie kontrolne pierwszym stopniem hamowania. Przy prędkości 45 km/h odczytujemy i zapamiętujemy opóźnienie hamowania i wykonujemy luzowanie. Zbliżając się do ograniczenia prędkości (zatrzymania), AI liczy wymagane opóźnienie (powiększone o jakiś procent) i gdy tylko wartość tego opóźnienia przekroczy zapamiętaną wartość, następuje hamowanie pierwszym stopniem. To rozwiązanie ogranicza ruszanie kranem, przez co hamowanie odbywa się w miarę stabilnie. W przypadku zbliżania się do ograniczenia przy różnicy prędkości 10 km/h następuje luzowanie składu. Co to daje? AI wjeżdża w ograniczenia już wyluzowane. Unika się też sytuacji znanej zwłaszcza z dawnych exeków, kiedy AI wszczynało hamowanie, gdy tylko prędkość została przekroczona. Skutkowało to często zatrzymaniami w polu albo znacznym ograniczeniem prędkości. Wadą takiego rozwiązania jest to, że AI sobie pozwala na przekraczanie i w głowice wjeżdża pociągami pasażerskimi pięćdziesiątką, cały czas jadąc z wybiegu. W przypadku zatrzymania margines ten został ustalony na 30 km/h i 100 metrów — jest to dystans wystarczający dla większości składów do zatrzymania się z tej prędkości. Pociąg hamuje do 30 i z tą prędkością zbliża się do semafora. Gdy znajduje się on 100 metrów od niego, następuje wdrożenie hamowania z większą siłą (obecnie to jest 2–3 pozycja kranu, czyli upuszczenie 0,7 do 1,0 bar w PG).
Możliwe ulepszenia systemu: odczyt opóźnień w kilku puntach (sprawdzenie charakterystyki hamulca: żeliwo/kompozyt), pomiar czasu luzowania w celu dobrania marginesu, ustalenie odległości hamowania przed sygnałem „Stój” w zależności od opóźnienia. Teoretycznie można by do tego zaprząc jeszcze masę hamującą składu, ale to nie jest dobry pomysł ;)