はじめまして。大阪/兵庫/和歌山のエリア担当をしております、日本NIの高村です!
本日から複数回にわたり、LabVIEWの設計手法である「デザインパターン」についてご紹介をさせていただきます。
今回は”デザインパターン”の一つである『ステートマシーン』について取り上げます。
【内容】
①そもそも”デザインパターン”とは?なぜ重要なのか?
②”ステートマシーン”のメリット
③”ステートマシーン”の構築方法
①そもそも”デザインパターン”とは?なぜ重要なのか?
”デザインパターン”はLaVIEWのための”テンプレート”や”フレームワーク”であり
先人達がプログラムを構築する中で確立し一般的に普及している
プログラミング方法となります。
”デザインパターン”は大規模なプログラムを構築する際に効果を発揮します。
サンプルをそのまま使用するようなプログラムであれば問題ありませんが、機能追加や複雑な処理を行いたい場合
プログラムは大規模になりがちです。
ひどい場合だと、ワイヤが複雑に絡み、図のようないわゆる「スパゲッティ構造」となってしまい
デバッグが困難になる恐れやチーム内でのプログラムの共有が可読性低下のために難しくなります。
例えば、皆様もこういったプログラムを知らずしらずのうちに作成していませんか...?
こうした事態を避けるために弊社では初学者の方を含めて”デザインパターン”を
ソフトウェアの構築に用いることを強くお勧めしています。
下記が代表的なデザインパターンとなります。
・機能的グローバル変数
・ステートマシン
・イベント駆動
・生産者 消費者
・QMH
今回はこの中でも”ステートマシーン”についてご紹介をさせていただきます。
既に過去の記事にて紹介している内容もございますので
そちらもぜひともご参考ください。
②”ステートマシーン”のメリット
ステートマシーンは状態遷移図とも呼ばれ、ある状態から別の状態への実行順番を
動的に制御が可能なデザインパターンです。
状態遷移、例えば”1初期化”→”2設定”→”3計測”→”4保存”といった流れのプログラムを考えるときに
”シーケンスストラクチャ”を用いることもできます。
こちらを使用した場合でも、順序に沿った実行がされるので
問題が無いように感じますが、例えば以下の状態になったときにどうでしょう?
・”3計測”の結果を判断して、”2設定”をし直すか”4保存”をするか任意で変更したい。
・”4保存”後に再度”3計測”を繰り返したい。
こういった場合、”シーケンスストラクチャ”ですと決まった順序でしか実行が出来ないため
実装が困難となります。
これに対して”ステートマシーン”は任意での実行順序変更を行うことが可能となります。便利ですね。
③”ステートマシーン”の構築方法
”ステートマシーン”は以下の要素をLabVIEW上で使用することで構築できます。
1.While ループ
2.シフトレジスタ
3.ケースストラクチャ
4.列挙体(タイプ定義)
構造は以下の図のようになっております。
”Whileループ”は繰り返し実行ではなく、”シフトレジスタ”と組み合わせることで
状態間でデータのやり取りを行うために使用されます。
ただし、見ているだけは分からない部分も多いかと思いますので
”ステートマシーン”の作成方法および簡単な練習問題を資料として
添付いたしましたので、参考にしながら実際に手を動かしてアプリケーションを作っていただくと
より一層理解が進むかと思います。
一度、ゼロから作っていただき学んでいただきまして
以下にサンプルを載せておきますので、ご活用ください。
LabVIEWプログラム構築でチーム内での教育や技術向上などで悩まれているお客様は
多いかと思います。LabVIEWを導入頂いた後に長くお役にたってほしいという気持ちが我々にはあります。
地域担当、企業様担当が弊社内におりますので一度ご相談をしていただけますと、
お打ち合わせやオンライン会議などで適切なご案内ができるかと思います。
お悩みがございましたら、ぜひとも弊社までご連絡下さい!
また私高村より、こちらのブログでもプログラミング技術向上のコンテンツを引き続き提供させていただこうと
考えております。
この記事を書いた人