Post

Conversation

【PLCの定周期実行とフリーランの本質的な違い】 この2つのタスク実行の違いや使い分けについて、明確に分かっていない人が多いんじゃないかな。 PLCのタスク実行には ・定周期実行(定周期タスク) ・フリーラン(処理が終わり次第、次のスキャン) の実行方法がある。 現場ではフリーランが選ばれることが多い印象。おそらく、 ・設定が楽 ・平均的に速く見える ・軽い装置なら問題が顕在化しにくい からじゃないかな。 制御工学やリアルタイム制御の観点では両者は全く別物で、以下にこれらについて書いていく。 ■フリーラン フリーランは「できるだけ速く回る」ことは保証するが、「いつ回るか」は保証しない。処理負荷・通信・ログ追加などで実行周期は常に揺れる。(ジッタが発生する) 平均周期は短くても最悪周期は読めない。これは、 ・PID ・積分 ・速度/加速度計算 ・補間 といった「⊿t一定」を前提とする制御では致命的になる。制御性能がCPU負荷やシステム状況に依存してしまう。 見掛け上は速く動いているように見えるため、私はこれを「早々のフリーラン」と呼んでいる。 ■定周期実行の価値 定周期実行の本質は「速さ」ではなく、「遅くても毎回同じ時間で動く」こと。制御において重要なのはジッタゼロの世界。「ジッタ=ノイズ」なのでジッタが発生すると補償不能になる。 ・同じ入力条件 ・同じ初期状態 ・同じ負荷条件 であれば、タスクの実行順序、実行タイミング、出力タイミングが毎回同じになる。定周期実行は「決定論的」とも呼び、リアルタイムシステムでは不可欠になる。制御を「成り行き」ではなく、きちんと「設計対象」にする為の前提条件になる。 時間が読めると距離が読める。つまり、位置精度も補償できる。 ■フリーランが許される領域 ここまで書いてきたが、なにもフリーランが劣っていると言っているわけではなく、ようは使い分けだと思う。 以下のような制御ならフリーランは合理的。 ・ON/OFF中心のシーケンス ・時間精度不要 ・人が介在するI/O(ランプ、HMI) ・同期制御無し、フィードバック無し つまり、PLCをたんなる「シーケンサ」として使う場合である。 ■定周期実行を選ぶべき装置 以下は決定論的であったほうが良い。 ・サーボ/同期制御 ・速度、加速度を扱う ・外部機器との時間同期 ・軌道制御やオンザフライ処理 ---------- まとめると、 ・フリーランは制御をシステム負荷任せ ・定周期実行は制御を工学的に成立させる という違いがある。