電圧(?)=希望速度÷最高速度
です。これをスクリプトで書くと、[編成スクリプト]になります。
//
// この編成の最高速度設定は120km/hです
//
//
// 5秒で60Km/hに達するメソッド
//
BeginFunc Go60km5sec
//変数宣言
Var TmpVoltage
Var TmpTimer
//電圧は60/120=0.5
setf TmpVoltage 0.5
//時間は5秒=5000ms
set TmpTimer 5000
//速度変更実行
SetTimerVoltage TmpVoltage TmpTimer
EndFunc
[編成スクリプト]とりあえずレイアウト上のすべての編成に、上掲の編成スクリプトを書き込んでしまいましょう。あとは、メソッドを呼ぶ側で編成のグローバル変数(プロパティ)に希望の速度と遷移時間を設定してメソッドMtdChangeSpeedをcallすれば、最高速度設定がどんな数値になっていようと任意の速度を出すことができます(最高速度は超えれないと思いますが未検証につき言及せず)。
Var VarMaxSpeed
Var VarTargetSpeed
Var VarTransitionTime
//
// 速度変更メソッド
// 編成速度をVarTransitionTime(ms)後に
// VarTargetSpeed(Km/h)になるよう加減速する
//
BeginFunc MtdChangeSpeed
//一時変数宣言
Var TmpVoltage
Var TmpTimer
//電圧算出
GetTopSpeed VarMaxSpeed
mov TmpVoltage VarTargetSpeed
div TmpVoltage VarMaxSpeed
//速度変更実行
SetTimerVoltage TmpVoltage TmpTimer
EndFinc
[このメソッドを呼ぶ側]
VarTrain ObjTrain
get ObjTrain "{制御対象編成名}"
//センサー通過編成であれば GetSenseTrain ObjTrain でOK
setf ObjTrain VarTargetSpeed {設定速度}
set ObjTrain VarTransitionTime {時間}
call ObjTrain MtdChangeSpeed