この章では、「組込み制御ソフトウェア」実行時の内部情報をモニターするために、グローバル変数を使う手段を手に入れた上で、それをどの様にモニターすべきか、について説明していきます。
「組込み制御ソフトウェア」実行時の内部情報をモニターする重要な目的は、正しく意図通り(要求・仕様・設計通り)にソフトウェアが動いていない時、つまり「不具合」がある場合に、その原因を見つける事です。PC用のソフトウェアを開発している場合は、デバッガーを使って、プログラムにブレークポイントを貼り、コードを1行ごと止めて内容を確認(ステップ実行)しながら、調査すれば良いでしょう。ただし、「組込み制御ソフトウェア」は、動いているものを制御しているので、止めるわけにはいきません。その代わり、内部情報を得る手がかりとなる、狙ったグローバル変数の変化を、モニターすることになります。このモニターは、後で適切に評価検討できるように、一定間隔で行います。つまり、狙った変数を一定時間間隔で、「サンプリング」可能な仕掛けを、出荷する製品ソフトに作り込むことになります。
くどいかもしれませんが、ここでも批判を受ける可能性があります。実現するシステム実現のために要求された機能以外のものを、実装してしまうことになるからです。この機能の実装の目的は、コード行→メモリ使用量→量産製品の単価を最小化することよりも、無理なく少ない労力で開発を終わらせることにあります。モニターの仕掛けに必要なコード行は、大したことは無いでしょうが、メモリ消費量が増える事にこだわる人は、いるものです。「過去のソフト開発でも苦労していたのだから、今でも同じ苦労をするのは当たり前だ」ということを言う人もいるでしょう。そのような人は、昔と比較して今開発しているソフトの規模がかなり大きくなっていることななど、気にしていないでしょうし、今の人がプロジェクトで苦労しないのは、気分が良くないでしょう。そのような人は、どこにでも居るものですが、数年待つときっといなくなっているものです。開発を無事終わらせる使命感を持って、そのような人は無視しましょう。脱線してしまいましたが、このような場合の上手い説得方法もあります。この仕組みは、組込みハードウェアの異常情報を、グローバル変数に設定して、モニターすることもできるのです。ハードもソフトも初めて開発するような場合は、センサー等のハードが期待通りに動いていない場合もあります。そのようなハードの故障を検出する機能として、モニターの仕組みを実装するのです。
開発する制御システムが、フィードバック制御を行う場合は、少なくとも制御周期で処理をしているはずです。よって、モニターのためのサンプリング周期を、制御周期と同じにすることで、モニターの仕組みを、比較的容易に構築できるでしょう。制御周期がとても高速で、モニター側の仕組みのデータ転送速度が間に合わないような場合は、必要に応じで分周する(サンプリングを間引く)ことになるでしょう。
ここまでで、モニターの仕組みについて説明してきましたが、その実現のためには、「組込み制御ソフトウェア」の構造(アーキテクチャー)設計を、サンプリングに対応するもの、つまり一定周期で動くものにしておく必要があります。最大の目的である、開発期間短縮のため、出荷前の最終テストを短期間で終わらせるために、ソフトウェア開発者に裁量がある、ソフトウェアの構造を決めているのは、特徴的だと思います。

