つまづいた人がキャリアアップするための”中小企業への転職&仕事術”ブログ

【LabVIEW】ステートマシンを作ろう!

こんにちは、1つのステートで人生を乗り切ろうとしている氷河期の住人だよ。

前回のストラクチャ関数で、だいたい基本的な関数は全て紹介しました。

ここからは実際のプログラムのように、組み合わせて使うことを中心に書いていきます。

ステートマシンって何?

ネットで調べると専門用語だらけでワケわからなかったので、LabVIEWで使うためだけに簡単に説明します。

ステート=状態 、つまり「状態」をいろいろ切り替えながら制御をするというものです。

例えばこんな風に、私のステート(状態)を3つに表したとします。

  • 平日の朝が来ると、「家」から「会社」に状態(あくまで例なので)が変わります。
  • 仕事が終わると、「会社」から「家」に状態が変わります。
  • 休日になると「家」から「アウトレットモール」に状態が変わります。
  • アウトレットモールで散財しきってしまうと、「アウトレットモール」から「家」に状態が変わります。
これで表現できる君の人生っていったい・・・
ぞう
ぞう

・・・かなり無理矢理な説明ですが、こんな感じで入力などによって状態を切り替えられるようなプログラムを「ステートマシン」って言います。

ステートマシンの作りかた

構成要素

今まで説明してきた関数の組み合わせでステートマシンは構成されます。

  • Whileループ
  • ケースストラクチャ
  • シフトレジスタ

全部前回の記事「ストラクチャ関数の使い方とは?」で説明をしたものばかりです。

これにもう一つ、「列挙体」をくわえないとステートが増やせません。

列挙体とは?

簡単に言うと、「数字と名前を紐づけたリスト」です。

なんで紐づけるん?
ぞう
ぞう

状態を「0」「2」とか言われてもよくわかりませんが、「動作中」「非常停止時」とか書くと状態ってわかりやすいですよね。でもプログラム的に文字列というのは厄介なので、数字を紐づけたリストを作っておくとわかりやすいということです。

コントロールパネルの「Ring&Enum」→「Enum」にあります。配置できるのですが、最初は中身が空っぽで全く使えません。なので列挙体を右クリック「プロパティ」を選択。

開いた画面「Edit Items」のタブをクリック、「Insert」で中のリストを作っていきます。

 

・・さっきの例をそのままあてはめてみます。

こんな感じで、文字と数字が紐づけられました。では順番にステートマシンを組んでいきます。

①ケースストラクチャに列挙体を接続

ケースストラクチャとは、例えばTrueかFalseといったケースによって中身を入れ替えるストラクチャでしたね。

このケースストラクチャに列挙体をつなげてみましょう。

Boolean以外も接続できるの?
ぞう
ぞう

そうなんです、列挙体が接続できるから、ステートマシンが組めるのです。(ブールか整数なら繋げます)

ではさっそく先ほどの列挙体にケースストラクチャをつないでみます。ケースストラクチャ左にある「?」に列挙体を結線すると・・

ケースストラクチャのケース名が「家」になりました!

あれ?ステートが足りないよ・・
ぞう
ぞう

・・本当です。「会社」と「アウトレットモール」がありませんね。でも落ち着いてください。

ケース選択の矢印を右クリックすると、「Add Case for Every Value」というのが出てきます。「すべての値にケースを追加する」ということ・・かな?

これで全ケースが表示されるようになります。

 

これで、さっき作った列挙体のアイテム4つのステートができました。あとはシフトレジスタにステートを記憶させつつループさせます。

②Whileループを作る

先ほど作ったケースストラクチャをWhileループで囲みます。

ここでは停止条件に定数「F」をつないでいます。停止条件がないので、実行すると無限にループを繰り返します。(画面上の停止ボタンで止められますが)

③シフトレジスタを設置する

ケースストラクチャをWhileループで囲んだだけではステートマシンになりません。前のループのときのステートを記憶して呼び出せるようにしないといけませんね。

下の状態で、Whileループ左の青いトンネルを右クリックすると、「Replace with Shift Register」ってのが出てきます。「シフトレジスタに置き換える」ですね。

これを選択すると、シフトレジスタがWhileループの左右に出てきます。

これで所望のステートに切り替えられるようにプログラムを組めば、ステートマシンの完成です!

実際に組んでみる

ではせっかくなので、平日は会社に行って休日はアウトレットに行く日常をステートマシンで組んでみましょう。

・・・サブVIを使わず全て平書きですが、こんな感じでございます。これで実行すると、平日8時に出勤して17時に帰宅、休日はアウトレットモールで散財します。

世界一ムダなステートマシンだね
ぞう
ぞう

次回はこれの詳細を説明しつつ、細かいテクニックをご紹介します。

おわりに

ここまで見て頂き、ありがとうございました。

ステートマシン、作れそうですか?

他の言語、Cとかでもcase文使えばできますが、LabVIEWだと全体のイメージがわかりやすくていいですよね。

実機がなくてもシミュレーションで楽しめるので、よほどヒマだったらぜひ上のステートマシンを試してみてください。

<PR>ルンバやブラーバももちろんプログラムで動いてるよ。ロボットプログラミングの傑作だね!

技術者はフルスタック化でオンリーワンを目指そう!【特殊能力不要】

価値ある人材になる、いちばん手っ取り早い方法?

どうもこんにちは、スキルが大渋滞している氷河期の住人だよ!

みなさん、会社でオンリーワンの存在になれてますか?

どうやったらそんな風になれるかわからないよ・・・
ぞう
ぞう

・・・そりゃそうです。わかってたらみんなオンリーワンです。

そこで今回は自称フルスタック技術者の私が、マルチスキルでオンリーワンを目指すことをおすすめします。(フルスタックエンジニアって言うとITっぽくなりますからね)

普通のスキルでも2つ以上組み合わせてしまえば、あっという間にオンリーワン人材です!
特に中小企業では非常に重宝されますので、転職して地元へ帰りたい人などにおすすめですよ。

今回のポイントはこちら。メリットも大きいですが、デメリットもあるので注意しよう!

Point!メリット:
① 仕事のスピードが一気に上がる
② 待遇が良くなる
③ 転職に強い
デメリット:
① 専門家には勝てない
② かなりの苦労を必要とする
③ 大企業には全く向いてない

続きを読む

ストラクチャ関数の使い方とは?

こんにちは。月曜から金曜まで会社と家をループしている氷河期の住人だよ。

とりあえず計算に必要な関数はひととおり使えるようになりましたか?

プログラムを組もうとすると、もちろんこれだけでは足りません。

今回はプログラムを作る上で必須ともいえる、ストラクチャについて説明します。

続きを読む

【比較】製図、設計、開発、研究の違いって何なの?

こんにちは。出世魚のごとく製図から開発まで行った氷河期の住人だよ。

製図、設計、開発、研究・・・

ひとえに製造業の図面を扱う職種といっても色々あるわけですが、これらの違いがわかりますか?

今回は業界20年、製図から研究開発まで経験した私が、これらの違いとどういったことが求められるか実体験からまとめてみました。

これを知っておくと、キャリアアップをするにはどういったことを学ばないといけないのかがわかるようになると思います。

先に結論だけ書きますと、それぞれこんな感じの仕事です。

分類 仕事内容 必要なもの
製図 製造に指示を出す仕事 加工・組立・部品の知識
設計 計算する仕事 力学や材料学、ありとあらゆる計算知識
開発 仕様を決める仕事 ミスター味っ子並みの創意工夫
研究 うまくいくかどうかを試す仕事 特定の分野の高度な知識

では、詳細な内容に触れていきたいと思います。

続きを読む

ネガティブが理想的!?技術者に向いてる性格とは?

どうもこんにちは。ネガティブの塊、氷河期の住人だよ。

技術者になりたいと考えているあなた、または「技術者に向いてないかも」と思うあなた。

どんな人が技術者に向いているか知りたいと思いませんか?

この道20年、10社以上の会社を見てきたなかで、私が「この人すごいな」と思った技術者の性格をざっとまとめてみました。

思い起こしてみると、けっこう似たような性格の人が多いのかもしれませんね・・・
ざっくりまとめると、こんな感じです。

point!・ ネガティブで心配性なマイペースで適当な人は技術者向き
・ 失敗を引きずって飽きっぽくて一人で行動できない人は向いてない

ぼんやりと自分を照らし合わせてみて、今後のキャリアプランを考えてみよう!

続きを読む