・0〜300であれば速度(Km/h)と解釈し、編成の加減速性能に準じてその速度まで加速または減速する。
・301以上であれば停車位置までの距離(Nゲージmm)と解釈して減速→停車し、一定時間後に再発車する。
・-1以下であればその絶対値を停車位置までの距離と解釈して減速→停車し、一定時間後に方向転換してから再発車する。
(1) あるキーを押すと、編成がアクティブになる。
(2) キーを押したときに編成が停車していた場合、発車する。
(1) 停車してから一定時間待つ。
(2) グローバル変数VarFlagの値が1であれば方向転換する。
(3) さらに一定時間待つ。
(4) 再出発する。
param
{
name WizStopTime
type int
default 2500
range 1000 30000
guide "停車時間の半分(単位ミリ秒)。停車後、この時間が経過すると方向転換がおこなわれ、さらに同じだけ時間が経過すると出発する。"
}
//↓独自の初期化処理(グローバル変数宣言等)はここで
Var VarParameter //パラメータ保存用
Var VarFlag //折り返し運転フラグ
Var IDEvent //イベントID
Var VarStartVoltage //減速開始時の電圧
Var VarStartTime //停車・再出発所要時間
//↑ここまで
BeginFunc subStop
//
//VarParameterの距離だけ走行して停車するメソッド
//
//既に停車イベントが設定されていれば、一旦これを解除する
KillEvent IDEvent
//停車イベント設定
SetEventZeroSpeed subStopped IDEvent
//停車所要時間算出
Var TmpSpeed
Var TmpTime
GetCurrentSpeed TmpSpeed
div TmpSpeed 3.6
mov TmpTime VarParameter
mul TmpTime 300.0
div TmpTime TmpSpeed
cnvint TmpTime
//再出発用電圧・加速所要時間記録
GetCurrentVoltage VarStartVoltage
mov VarStartTime TmpTime
//減速開始
SetTimerVoltage 0.0 TmpTime
EndFunc
加減速所要時間(秒)=加減速する速度差(Km/h)÷加減速性能(Km/h/s)
です。「加減速性能」とは、1秒あたりに加減速可能な速度でした。「加減速する速度差」を加減速性能で割れば、加減速に何秒かかるか、すなわち「加減速所要時間」がわかります。BeginFunc subSpeed
//
//VarParameterの速度まで加減速するメソッド
//
//一時変数宣言
Var TmpSpeed
Var TmpTime
Var TmpCurrentSpeed
Var TmpTopSpeed
//整数→小数変換
cnvfloat VarParameter
//現在速度取得
GetCurrentSpeed TmpCurrentSpeed
//速度差算出
mov TmpSpeed VarParameter
sub TmpSpeed TmpCurrentSpeed
if TmpSpeed //速度差があれば以下の処理を実行
//加減速所要時間算出
abs TmpTime TmpSpeed
div TmpTime WizAcceleration
mul TmpTime 1000.0
//小数→整数変換
cnvint TmpTime
//最高速度取得
GetTopSpeed TmpTopSpeed
//電圧算出
mov TmpSpeed VarParameter
div TmpSpeed TmpTopSpeed
//速度変化実行
SetTimerVoltage TmpSpeed TmpTime
endif
EndFunc