カクツキも様々な要因があり、問題の切り分けが一番重要だと思っております。挙げるとすると、以下の7つの部位で、さまざまな問題によって引き起こされると想定されます。環境要因も含まれており、非常に複雑怪奇です。
・コマンドステーションの問題(パルスの送り方・タイミング・送信間隔、仕様に合わない実装、電力供給の余裕度、電圧源の品質、設定ミス(DCC28やDCC128ではなくDCC14の選択))
・線路の問題(電圧降下、線路の抵抗、酸化、汚れの付着)
・線路との接触の問題(車輪の汚れ、車体と車輪の電気的接触状況)
・デコーダの問題(パラメータ調整、仕様に合わない実装、電源・温度等の動作の不安定)
・モータの問題(極数、イナーシャ、内部抵抗)
・車両内部の駆動系の問題(ギヤ、シャフト、フライホイールの有無を含む)

コマンドステーション〜デコーダまでの間は、汚れをとったりメンテナンスでカバーすることや、動作実績のあるコマンドステーションを使うことが対応策となります。これは、鉄道模型をされている方であれば、日々気を付けていることかと思われます。
次に、車両の駆動関係のギヤ・フライホイール・モータも除外したいと思います。これは、完全自作の場合をのぞいて、ベース車要因となるからです。
となると、最後はデコーダでどうにかするしかないということとなるかと思います。
デコーダでできることはただ一つ、CVパラメータの調整です。ただし、CVパラメータ調整は非常に複雑で、ぶっちゃけていえば私もよくわかっていません。デコーダメーカーによっても特性ばらつきがある事や、モータ制御の実装方法でいくらでも設定要素の考えは変わるからです。
ただし、DCモータの速度制御、という枠組みでいえば、電機屋からみるとある程度できることは限られるものです。そこで、制御方法の視点から、どうパラメータを調整して、カクツキや速度段差を低減するかを考えていきます。
■モータ制御ブロック図(概念)

CVの機能を見て、誤解している部分も多々あるかもしれませんが、ブロック図を描いてみました。実装方法は、いくらでもあるので、見方によっては異なるブロック図を描く場合もありますので、あくまでも一例として見ていただければ幸いです。
速度が切り替わったときに重要なのは、PI/速度調節器になります。たいていはデジタルのPI調節器になっていると思いますので、PIパラメータの決め方で、速度の出方が変わります。CV3,4はPIのパラメータを決めていると思うのですが、いまいち設定を変えてやったことがないので間違ってるかもしれません・・・。
特に、Pゲインを大きく、Iゲインを小さくすると応答性を上げることになりますが、オーバーシュート等の振動も出やすくなります。PIゲインは、モータ自体とギヤ、フライホイール等のイナーシャ(慣性)に合わせて調整しないといけません。模型のイナーシャなど正確に測定するのは難しいので、数値を適当に入れて追い込んでいくしかないでしょう。さらに、単純にPIゲインという表現ではなく、加減速パラメータという形になるので、詳しくは各社のデコーダの仕様書や操作手順書を読んでいただき、数値を換算して求めていくこととなります。
■CVについて
では具体的に、話を進めます。まず、ここではDCCに話を限定します。DCCの仕様を策定しているNMRAのNMRA CV仕様 一覧表(PDF)を見てみます。
この表には、CVの基本的な定義が記載されており、市販されている有名なデコーダは、オプション(O)のCVパラメータもサポートしている場合が多いです。また、メーカー独自のパラメータエリアに、モータを動かすための細かい調整パラメータを定義している場合もあります。
この中で関係するCVパラメータは以下のものをチョイスしました。なお、メーカーによっては拡張している場合や、独自に異なるパラメータに割り振っている場合、実装されていない場合もありますので、あくまでもDCCの標準として見た時のパラメータとなります。
CV3, CV4: 加減速
CV2, CV5, CV6: 最小、中間、最大電圧
CV9: PWM時間(キャリア周期?)
CV10: 逆起電圧オフ速度
CV23,24: 加減速調整値
CV67-94: 速度カーブ(速度テーブル)
特に、速度の段差に注目する場合、フライホイールと同じ動きを示すのはPI/速度調節器となります。というのも、現在速度と指令速度の偏差を調整して、指令となる電圧を出す処理を行うためです。CVでは、そこまで明確に規定していませんが、加減速調整をするとなるとここしかないかなあと電機屋としては思うわけです。
停止から走り出す際にガックンとなる場合は、加減速パラメータだけでなくリミッタや速度テーブルの調整も重要な要素となります。通常、走り出す場合にはトルクブースト補償ということをします。低速域だけ少々大きめの電圧をかけてあげて、始動を補助します。フィードフォワード制御では、常識的な処理となります。掛け過ぎると、電流が流れ過ぎて保護機能が働いて困る場合もあるので、ほどほどの具合に、速度テーブルとVlowを調整してあげることとなります。速度0=電圧0ですが、速度1%=電圧1%ではない、ということを理解しておいていただければと思います。
このほかに、ローパスフィルタ(LPF)を速度指令に挿入し、さらに滑らかに(=速度がすぐに切り替わらない)なるようにしているケースもあると思います。これは、使い方によっては応答が悪く使いにくいということもあるかもしれませんが、ガックンガックンはなくなるので、好みに寄るというところになろうかと思います。
■具体的な方策
それでは具体的に何をすれば良いかといえば、まずは加減速調整パラメータのCV3(加速),CV4(減速)の数値を徐々に大きくすることをお勧めしたいです。経験則上、1〜5の値を入れるようですが、数字が大きいほど、速度変化がゆっくりになります。積分項(I項)が大きくなって、比例項(P項)を小さくしているイメージになると思います。
レンツのデコーダではデフォルトが1、デジトラックスのデコーダではデフォルトが0のようです。ESUはちょっと特殊で、24や32という値ですが、停止から最高速度までにかかる時間(秒?)でかつ、セットした値は内部で4倍にされると書いてあります。
ESU以外では、デフォルトは、ほとんど無調整状態に近いということかと思います。車両の状況に応じて、この値を最適値にすべし、ということかと思います。
参考文献:
・Speed steps - DCC wiki
・NMRA CV仕様 一覧表(PDF)
・Sumida Crossing - Speed tables