【リアルタイム制御の誤解】
よく誤解されるけど、リアルタイム制御の“リアルタイム”とは、「すぐに動く」ことではありません。「必ず間に合う」ことを指します。
「割り込みからのイベントドリブン制御」のほうが瞬間的な反応速度が上なため、「こちらのほうがリアルタイムなのでは?」と思う人が多いのですが、「最悪応答時間(デッドライン)を守れるか」がシステムとして保証されているのがリアルタイム制御・リアルタイムシステムです。
そして、定周期実行は、このデッドラインを設計・保証するための前提となる仕組みです。
定周期実行は、
・実行タイミングが一定で
・時間のバラツキ(ジッタ)が抑えられる
ので、出力が「いつ出るか」を設計できます。
遅延は位相遅れとして扱えますが、ジッタはノイズであり補償できません。なので、サーボ・同期・補間などの制御は、時間が保証された定周性なしには成立しません。
つまり、「時間を設計」できるのがリアルタイム制御です。
これに対し、上にあげたイベントドリブン制御は、入力変化に即座に反応できるため、「一見リアルタイムっぽく」見えます。しかし、イベントドリブンで保証されるのは「速く反応するかもしれない」ということだけです。
応答性が高いこととリアルタイムであることは別物です。
ようは、
・定周期実行によるリアルタイム制御
・瞬間応答を重視したイベントドリブン制御
・ベストエフォートで動くフリーラン(引用ポスト参照)
は、それぞれの用途ごとに使い分ける必要があります。
Quote
とき@engineer
@toki_engineer
【PLCの定周期実行とフリーランの本質的な違い】
この2つのタスク実行の違いや使い分けについて、明確に分かっていない人が多いんじゃないかな。
PLCのタスク実行には
・定周期実行(定周期タスク)
・フリーラン(処理が終わり次第、次のスキャン)
の実行方法がある。
Show more