制御の世界の“黒船”、TwinCATでメイドを動かす:江端さんのDIY奮闘記 EtherCATでホームセキュリティシステムを作る(9)(10/13 ページ)
SOEMに限界を感じていた私は、ベッコフオートメーションのソフトウェアPLC「TwinCAT3」に手を出しました。そう、文字通り“手を出してしまった”のです。今回は、制御の世界に「黒船」を持ち込んできたTwinCAT3を使ってメイドを動かすまでの、私の苦闘と孤闘の全容をご覧いただければと思います。
TwinCAT3の「ラスボス」
では最後に、このTwinCAT3の“ラスボス”であるプログラミング方法を紹介しましょう。
「アナログ入力のスレーブに接続されている光センサーに懐中電灯を向けると、デジタル出力のスレーブに接続されているLEDが点滅するようにする」
を「C/C++言語」で作ります。
まず、TwinCAT3の左側にあるツリーの「C++」(C++設定)を右クリックして「Add New Item...」 (新しいアイテムの追加)を選択してください。
「TwinCAT Driver Project」 (TwinCATドライバプロジェクト)を選択し、プロジェクト名を入力後、「OK」をクリックしてください。
画面下のプロジェクト名は、CppProjとしておいてください。
「TwinCAT Module Class with Cyclic I/O」(サイクリックIO付きTwinCATモジュールクラス)を選択し、「OK」をクリックしてください。
で、画面下のAddボタンを押してください。
自動生成されたソースコード(MyFirstModule1.cpp)を開きます。
で、ソースファイルの169行にある、周期的に勝手に呼び出される関数CycleUpdate()の内容を、以下のように変更します。
if (m_Inputs.Value < 1000){ m_Outputs.Value = 0; } else{ m_Outputs.Value = 1; }
これは、m_Outputs.Valueの値が1000を超えたら、m_Outputs.Valueの値を変更するというプログラムです(もちろん、この"1000"という値は、私の使っているセンサーの値です。環境に応じていろいろ変更させる必要があります)。
しかし、この時点で、m_Inputs.Valueやら、m_Outputs.Valueやらが、どこにも定義されていません。
Copyright © ITmedia, Inc. All Rights Reserved.