検索
連載

制御の世界の“黒船”、TwinCATでメイドを動かす江端さんのDIY奮闘記 EtherCATでホームセキュリティシステムを作る(9)(10/13 ページ)

SOEMに限界を感じていた私は、ベッコフオートメーションのソフトウェアPLC「TwinCAT3」に手を出しました。そう、文字通り“手を出してしまった”のです。今回は、制御の世界に「黒船」を持ち込んできたTwinCAT3を使ってメイドを動かすまでの、私の苦闘と孤闘の全容をご覧いただければと思います。

Share
Tweet
LINE
Hatena

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.

ページトップに戻る