ソフテックでは、PLC、マイコン、パソコンを組み合わせたシステムの提案や開発を行っています。
これらを組み合わせたシステムでは、各機器を通信により接続して構成するため、ソフテックの開発では、通信の知識が重要な要素となっています。
通信部分の開発については、他の「ソフテックだより」でも触れているため、今回は、最近、私が担当した分散型監視システムの通信の検証について紹介します。
文章構成は以下のとおりです。
| a. |
検証システムのシステム構成 |
| b. |
検証内容の検討 |
| c. |
検証作業 |
| d. |
ヒートラン |
| e. |
次の開発へのフィードバック |
少し長文となっておりますが、最後まで読んで頂きたいと思います。
今回の検証対象システムは、Ethernet、HDLC、RS-485など様々な通信規格が利用されています。
以下にシステム構成の概要図を示します。
 |
| 図1 検証したシステムの構成概要図 |
システムは監視システム1から4で収集した情報を、情報管理部が一括管理して、監視状態を操作部へ通知します。また、操作部からの制御要求に対して、監視システムが必要な制御を行います。
監視システムの構成は省略しますが、パソコンと複数のマイコン基板で構成され、入出力制御やセンサ状態の収集を行っています。
監視システムと呼ばれる部分が4箇所に分散していることから分散型監視システムと呼びます。
ソフトウェアを検証する際には、プログラムを把握してテストする、「ホワイトボックステスト」とプログラムには依存せずに、外部仕様を満たしていることをテストする「ブラックボックステスト」があります。
ソフテックでは、開発者がホワイトボックステストとブラックボックステストを実施することが多いのですが、今回の検証では、システム規模が大きいため、第3者の視点でブラックボックステストを実施しました。
開発担当者がテストするメリットとして、仕様を深く把握しており、プログラムを作った立場から、仕様書に記載されていない細かな部分まで検証することが出来ます。
ただし、逆の視点で見ると、自分が作ったところ以外を考慮出来ていないこともあります。
1対1の小規模な通信であれば、開発担当者の確認でも良いのですが、今回のシステムでは通信仕様書だけで、11種類もあるシステムで、通信部分の開発に10人以上関係しているため、全ての通信仕様を把握した人が、テストする必要があります。
また、この通信仕様書もソフテックの3名で検討および設計してお客様へ提案させて頂いており、この仕様の整合が取れていることを確認することも検証の一環としていました。
今回の検証は以下の項目で実施しました。
| a. |
各機器の起動順序による依存がないことを確認 |
| b. |
システムが正常な状態から、個々の機器を再起動した場合に正常な状態にリカバリされることを確認 |
| c. |
断線など通信異常が発生している状態でも起動することを確認 |
| d. |
通信異常が確実に検出されることを確認 |
| e. |
短時間に発生した通信異常は再送信でリカバリされることを確認 |
| f. |
異常状態か正常になった場合にシステム全体が正常状態にリカバリされることを確認 |
| g. |
通信負荷を上げた状態でも、情報が確実に通知されることを確認 |
| h. |
受信バッファまたは、送信バッファが一杯になった場合の動作確認 |
| i. |
正常状態でのヒートラン |
| j. |
ノイズなど悪環境を想定したヒートラン |
通信処理は、通常は正しく動作しており、問題が内在していても表面化しません。
ただし、納入する場所によっては、ノイズ発生源が近くにあり、そのノイズによりデータが壊れる場合や、メンテナンスのために機器の一部を停止した場合などに、社内開発時とは違う状況となり、問題が表面化することがあります
このため、現場で発生する問題をどこまで想定して検証できるか?ということが検証のポイントとなります。
今回の検証では、通信全体の仕様を確認する視点と、上記のような納入先での運用という2つ視点で、検証項目をリストアップしました。
ヒートランとは、ある特定の状態で動作を継続させるテストです。
今回は、センサから異常を出して、遠隔監視PCから定期的にシステムの復旧を行うことで、異常検出と復帰を繰り返す仕組みを作りました。
上記の状態を繰り返す以外にも、今回は通信の検証であることから、通信回線の断線と復帰を繰り返す仕組みも入れて検証を実施しました。
具体的には、図2のような仕組みをPLCで構成し、タイマーによりリレーのON/OFF時間を制御する仕組みを作りました。
 |
| 図2 通信回線の断線/復帰の仕組み |
この仕組みでは、通信ラインが定期的に断線するため、通信データが断線のタイミングで破壊されます。
データが破壊されることで、異常なデータとなりますが、異常検出処理でデータを破棄し、再送信処理で復旧されることを確認します。
この仕組みは、ノイズなどの影響で、通信データが壊れやすい現場で運用したことを想定しており、システムの堅牢性を確認する作業とも言えます。
ヒートランは、夜帰宅する前にスタートし、翌朝の出社時に監視システムの動作ログや通信ログを全て収集してから解析を行います。
1回の解析では、約1万件の監視システム動作ログをパソコン6台分に対して実施します。
解析結果から、動作ログに異常が見つかると、通信ログの解析となります。
動作ログはエクセルなどを利用して集計しやすくなっていますが、関係者への社内報告の時間を含めると、問題が見つからなくても3時間程度はかかる作業となりました。
通信ログは1つの経路で1晩あたり10万件の通信情報が蓄積されています。
経路が多いため、どこの経路で情報がおかしくなったのか、各経路を順番に調べていく必要があります。
調査では、動作ログで問題が記録されている時刻と同じ時刻の通信ログを探し出して、何が問題であったのか調べることになります。
この調査の際に、動作ログの時刻と通信ログの時刻が1分でも違うと、情報が信用できず、対象となる時刻近辺のログを全て調査することになり、作業量が大幅に増加してしまうことがありました。
ヒートランの初期は、その解析の大変さが分からず、意識していませんでしたが、1度経験したため、時刻の同期ツールを利用し、全てのパソコンの時刻を合わせることで、それ以降の解析ではデータを絞り込むことが出来ました。
また、ヒートランの初期では、通信ログを収集するツールが保持できるデータ量が少なく、肝心な場所のデータが残っていないこともありました。
通信ログを収集するツールはソフテックで開発していたため、ログの保存量を増やす対応をしましたが、表示する時間が遅くなるなど、使い勝手が悪くなってしまい、何度か修正をしてヒートランに耐えるログ収集ツールを作成することも行いました。
このヒートランでも、1晩に1回程度しか発生しない、タイミングに依存する問題を発見することが出来ました。