« VRM界隈Twitterまとめ[2015.11] | トップページ | トラコン謎仕様を解明する(2) 戻しノッチ »

トラコン謎仕様を解明する (1) 力行ノッチの加速度

VRM5のトラコンは、VRM4以前のそれと違って、スクリプトで操作できたり、加速度や定格速度、均衡速度に関するパラメータを自由に設定できたりして、かなり遊べそうなシロモノです。が、しかし、デフォルトの状態ではさまざまな仕様上の謎がてんこもりで大して使い物になりません。

  • (謎仕様1) 力行1ノッチは全く加速しない
  • (謎仕様2) 低いノッチは加速が妙に鈍い
  • (謎仕様3) 最高速度ギリギリも妙に加速が鈍い
  • (謎仕様4) 十分加速してノッチを戻すと妙なブレーキが掛かる
  • (謎仕様5) ブレーキが3段しかない

誰だこんな仕様を作った奴はー!せめて仕様書公開しろー!

オモチャにして遊ぶためには直感的でないこれらの謎仕様を一つ一つ解明して、その上でスクリプトによる制御をかぶせる必要があります。

トラコンにかかわるスクリプト命令

謎仕様の解明に入る前に、トラコン周りのスクリプト命令を確認しておきましょう。リンクはマニュアルのページに飛びます。(Set~~とGet~~が両方あるものはSet~~のほうに飛びます。)

マニュアルに記載はありませんがGetNotchSpeedが利用可能です。コードビルダーを覗くと分かります。

それでは一つ一つ謎仕様を見ていきます。

(謎仕様1) 力行1ノッチは全く加速しない

この仕様単体であれば、比較的簡単にクリアできます。

SetNotchSpeed命令で適切な定格速度と均衡速度を設定してやればよいのです。何が「適切な値」なのかが難しい話でもあるのですが、それは現実の車両性能に依存する話なので、ここでは気にしないことにしましょう。

(謎仕様2) 低いノッチは加速が妙に鈍い
(謎仕様3) 最高速度ギリギリも妙に加速が鈍い

これがかなりの厄介者です。なぜなら、関係してくる因子が複数あるからです。

  1. 「編成加速性能」で設定する加速度グラフ
  2. そのときの速度と、各ノッチの定格速度、均衡速度との関係
  3. システムが勝手に作っている係数(ノッチごとに違う)

これらが複合的に噛み合わさって、各ノッチの実際の加速度を決めているようです。

(謎仕様3)は、加速度グラフが強い要因となっているようなので、これをマウスでポチポチと調整すれば解決できます。一方で(謎仕様2)は、3.の係数が要因です。

1と2は、デフォルトの決まり方(計算式)はよく分かりませんが、直接確かめることができます。(1は加速度グラフそのものを見ればいいし、2はそのノッチに入れた時にビュワー左下に表示されています。)そもそも、デフォルトの計算式が分からなくても、自分で自由に上書きすることができます。

しかし、3.に限っては仕様がマニュアルに記載されていないので、何らかの方法で実験的に調べ、このヘンテコな係数を吸収するように1.と2.を調整しなければなりません。

<実験>

では早速実験してみましょう。わかりやすさのため、最高速度は100km/hにします。

加速度グラフと、ノッチごとの定格速度、均衡速度の違いの影響を受けないようにするため、加速度グラフは2.0ピッタリで平らになるようにし、1~5のすべてのノッチにSetNotchSpeed 1 100 110のようにして定格速度を100km/hにしてしまいます。こうすると、すべての速度域で各ノッチの加速度は一定になります。

このときの各ノッチ加速度を測定するために、スクリプトを使って「10km/h加速するのにかかった時間」を調べます。時間を測るにはGetSystemTime命令が役に立ちます。

詳しく説明はしませんが、次のようなスクリプトで測定できます。ログウィンドウに順番にかかった時間が表示されます。

SetNotch 5 8 SetNotchSpeed 1 100 110 SetNotchSpeed 2 100 110 SetNotchSpeed 3 100 110 SetNotchSpeed 4 100 110 SetNotchSpeed 5 100 110 SetInputMode 1 SetNotchParam 1 100 SetNotchParam 2 100 SetNotchParam 3 100 SetNotchParam 4 100 SetNotchParam 5 100 Var EidStartKey Var EidWatcher SetEventKey this MtdStart EidStartKey a Var VarCrtNotch Var VarBorder Var VarTime BeginFunc MtdStart set VarCrtNotch 1 SetCurrentNotch VarCrtNotch setf VarBorder 0.1 SetEventTimer this MtdWatcher EidWatcher 1 GetSystemTime VarTime DrawMessage "実験スタート! Timerイベントは自分では死なないので注意☆" EndFunc BeginFunc MtdWatcher Var vol GetCurrentVoltage vol if> vol VarBorder Var time2 Var timedef GetSystemTime time2 mov timedef time2 sub timedef VarTime DrawVar timedef mov VarTime time2 add VarCrtNotch 1 SetCurrentNotch VarCrtNotch add VarBorder 0.1 endif EndFunc

さて、調べた結果は次のようでした。

ノッチ数時間 [ms]予測値 [ms]加速度[km/h/s]
1 25016 25000 0.4
2 12367 12500 0.8
3 8250 8333.333333 1.2
4 6283 6250 1.6
5 4967 5000 2

測定した時間には誤差が入っていますので、適当にもとの値を予測しました(3列め)。たぶん、これで合っていると思います。4列めは、そのときの加速度です。

最大ノッチがnでノッチkに入っているときの加速度は、加速度グラフで設定した加速度のk/n倍になる

というのが答えのようです。

この謎仕様は、SetNotchParamで吸収することができます。逆に係数をデフォルト(100)のn/k倍にしてやればよいのです。例えば、次のように。

SetNotchParam 1 300 SetNotchParam 2 250 SetNotchParam 3 167 SetNotchParam 4 125 SetNotchParam 5 100

ノッチ1は、本当なら500にしたいところですが、そもそも300までしか設定できないという制限があるので300にしています。ホンモノの電車も、ノッチ1だけは加速度が低めに抑えられていることが多いので、これでいいことにしましょう。

力行段が4ノッチまでだったり、新幹線のようにもっとたくさんある場合は上の数字は使えないので、kノッチの係数には100*n/kを計算して使います(nは最大ノッチ)。

(謎仕様4)十分加速してノッチを戻すと妙なブレーキが掛かる

現在速度が均衡速度を上回るとき、電車は徐々に減速して均衡速度に落ち着きます。これはホンモノの電車でもそうです。引張力と諸々の走行抵抗が釣り合って合力が0になる時に速度が一定になるからです。

VRMのシステムは力学的な計算はやらないスタンスですから、ビュワーの上ではある一定の加速度で均衡速度までスピードダウンしていきますが、このときの減速度が問題だという話です。強すぎます。0ノッチ(惰性)のときのスピードの落ち具合よりもどんどんスピードが落ちていきます。

が、これを解決するのは一筋縄にはいかないので、次回に回します(ぉぃw)。レイアウトコンテスト2011に出品したUrban Rapid Expressではこれを回避するコードを実装済みです。

(謎仕様5) ブレーキが3段しかない

これはSetNotch命令で7段でも8段でも好きに設定すればよろしい。少々ブレーキが強すぎる気がしたら、SetNotchParamで押さえ込めます。簡単なので省略。

:;;;:+*+:;;;:+*+:;;;:+*+:;;;:+*+:;;;:+*+

ということで、次回に続く。

|

« VRM界隈Twitterまとめ[2015.11] | トップページ | トラコン謎仕様を解明する(2) 戻しノッチ »

VRM:研究」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: トラコン謎仕様を解明する (1) 力行ノッチの加速度:

« VRM界隈Twitterまとめ[2015.11] | トップページ | トラコン謎仕様を解明する(2) 戻しノッチ »