北東北 LabVIEWユーザー会

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

SIEMENSの産業用IOT機器 SIMATIC IOT2020をLabVIEW+LINXで動かしてみた

Summary
IOT2020 is an IOT device that can add an I / O shield for the PLC area by placing a single board computer equivalent to Intel Galileo / Intel Galileo2 in a chassis that can be mounted on a DIN rail. Arduino compatible IO can be controlled from Arduino programs and various programming languages on Linux. Here is an example of controlling IO from LabVIEW using LINX.

 

まとめ
IOT2020はDINレールに取り付けることができる筐体にIntel Galileo / Intel Galileo2同等のシングルボードコンピュータを収めてPLC領域向けのIOシールドを追加できるIOT機器です。ArduinoプログラムやLinux上の各種プログラム言語からArduino互換のIOを制御することができます。 ここではLINXを使ってLabVIEWからIOを制御する例を紹介します。

IOT2020-1.JPG

 

 

はじめに

前回のスペイン製のM-Duinoがイマイチ感があったので、他に似たようなものがないか探していたところ目に入りました。スペインに対してドイツのSIEMENSはどうだろうという興味で、あまり調べもせずにRSから購入しました。注文して手元に届いてから真面目に調べてみるとベースはIntel GalileoあるいはGalileo2で旬の時期が過ぎている製品でした。ということで購入はお勧めしませんが、IOT2000シリーズの次にどんな製品を出してくるか興味を持って見ていくための参考になれば幸いです。

 

IOT2000用システムSDの作成

<<システムSDの作成とSDの挿入方法はマニュアルに書かれているのでダウンロードしてください。>>

IOT2000用LinuxシステムをダウンロードするにはSiemensのIndustry Online Supportに登録する必要があります。

Product supportの"SIMATIC IOT2000 SD-Card example image"から"Example_Image_V2.4.0.zip" (365,0 MB)をダウンロードして、Win32 DiskImagerでシステムSDを作成します。

 

電源の接続

電源は9Vから36Vが指定されていますので、ここでは12V 2.0Aのアダプターを使用しました。

 

Arduino IDEでの動作確認

IOT2000のマイクロUSBポートでPCとシリアル通信を行います。自動的に認識されない場合は、Industry Online Supportの記事 "Running Arduino Sketch on IOT20x0" にしたがって、"IntelGalileoWindowsSerialDriver.zip"をダウンロードしてインストールする必要があるようです。

ここではArduino IDEのバージョンは1.8.9を使用していますが、ボードマネージャで"Intel i586 Boards"をインストールします。

 

ツールメニューの"ボード"を"Intel Galileo Gen2"にしてシリアルポートを選択します。

ファイルメニューのスケッチ例 > 01.Basics > Blink を開いて、書き込めば"USER"LEDが点滅を始めます。

ここまでの手順が完了すれば、IOT2020をArduino "Intel Galileo Gen2"として使用することができます。

 

LINXでは"Intel Galileo Gen2"はサポートされていませんので、LINXファームウェアをIOT2020に書き込むことができません。

LabVIEW MakerHubの"Adding Support for a New LINX Remote I/O Device"を参考にしてIOT2020用のLINXファームウェアを作成します。

https://www.labviewmakerhub.com/doku.php?id=learn:tutorials:libraries:linx:misc:porting_device

IOT2020のIOはArduino UNOとほぼ同じなので、Arduino UNO用のファイルを複製して"Adding Support for a New LINX Remote I/O Device"の指示にしたがってIOT2020用に書き換えます。

 

LabVIEWのツールメニューのMakerHub > LINX > Generate Firmware Libraries...を実行し、Arduino IDEを開きます。ファイルメニューのスケッチ例 > LINX > IOT2020_Serialを開いて書き込むと終了のはずです。

実際にはコンパイルエラーが出ますので、何カ所か修正を加えると書き込むことができました。この修正については十分理解できているわけではないので、"返信"でまとめたいと思います。

 

Arduinoでは基板のIOピンに差し込んで使う外部基板をシールドを呼びますが、SIEMENSからInput/Output ModuleとInput Module Sink/Sourceという二種類のシールドが発売されています。ここではInput/Output Moduleを使います。

このモジュールのOperating Instructionsをダウンロードして、手順に従って取り付けます。特に、IOT2020基板のジャンパーピンをAnalog Inputを有効にする位置に変更する必要がありますので注意が必要です。

 

 

IOT2020-2.JPG

このモジュールのIOは24Vのデジタル出力が2本、24Vのデジタル入力が4本、0-10Vのアナログ電圧入力が2本、0-20mAのアナログ電流入力が2本です。デジタル出力の出力電源は指定端子に接続する必要があります。

 

LINXでの動作についてはこの後の"返信"でまとめたいと思います。

0 件の賞賛
メッセージ1/3
3,518件の閲覧回数

メジャーなArduinoボードやLINX&LabVIEWに関心のあるメーカーのボードは、LabVIEW > ツールメニュー > MakerHub > LINX > LINX Firmware Wizard...でファームウェアを簡単に書き込むことができます。LINX Firmware WizardのおかげでユーザーはArduino IDEを操作することなくファームウェアを書き込むことができます。firmwizard.png

 

"Arduino Leonard"のようにWizardがうまく動かない場合はArduino IDEを使ってファームウェアを書き込むこともできます。LabVIEW > ツールメニュー > MakerHub > LINX > Generate Firmware Libraries...でArduino IDEのライブラリフォルダーに関連ファイルをコピーします。genFirmLib.png

その後、Arduino IDEのスケッチ例からLINXの中に、例えばArduino LeonardであればArduino_Leonard_Serialを開いて、Arduino IDEでスケッチを書き込みます。

xxxxx_serial.png

 

 

Maker Hubの"Adding Support for a New LINX Remote I/O Device"に書かれている手順に従えばArduino IDEでプログラムを書き込んで動作するボードであればLINXで使うことができます。その時には上記のArduino Leonardoの例のようにArduino IDEのスケッチ例からXXX__Serialを開いて書き込むことになります。

 

サポートされているボードの中で追加したいボードの入出力に最も近いボードのファイルを修正すると変更が少なくて済みます。IOT2020の入出力はArduino UNOに近いので、Arduino UNOのファイルを修正することにします。IOT2020もArduino IDEではGalileoとして認識されますので以下のようにGalileoという名前を使うことにしました。

LinxArduinoUno.h→LinxGalileo.h

LinxArduinoUno.cpp→LinxGalileo.cpp

 

手順に従って機械的にファイルを書き換えて、Arduino IDEからファームウェアを書き込むとエラーが出ます。

LinxGalileo.cppで使われている "INTERNAL" がダメなようで、アナログ入力のリファレンスか何かに関連しているようなのでとりあえず削除。

すると、"AiRefCodes = m_AiRefCodes;"がエラーになったので、これもとりあえず削除。

さらに、"「Wire.h」「SPI.h」「EEPROM.h」「Servo.h」に複数のライブラリが見つかりました"とエラーを表示するので、Custum_Galileo_Serial.inoの#includeを

削除。今回はアナログ入力とデジタル入出力だけしか使わないのでとりあえず動かそうという作戦です。

<<<<詳しい方が正解を書いてくれるとすごくありがたいです。>>>>

これでエラーが消えて書き込みが終了しました。

 

参考までに関連ファイルを添付します。

 

すべてをダウンロード
0 件の賞賛
メッセージ2/3
3,473件の閲覧回数

LINXファームウェアを書き込んでしまえばUSBシリアル経由でLabVIEWからIOT2020を使うことができます。M8230803-2.png

 

 

ai.png

 

 

アナログ入力(0-10V or 0-20mA)

サンプルVI:LINX - Analog Read 1 Channel.vi

(スケールは変更する必要があります)

端子名と入出力番号

電圧入力:U0 --- A0

電圧入力:U1 --- A2

電流入力:I0 --- A1

電流入力:I1 --- A3

 

デジタル入力(24V OFF/ONの閾値はおよそ10V)

サンプルVI:LINX - Digital Read 1 Channel.vi

端子名と入出力番号

DI0 --- D12

DI1 --- D11

DI2 --- D10

DI3 --- D9

DI4 --- D4

 

デジタル出力(L+端子電圧が出力される)

サンプルVI:LINX - Blink (Simple).vi

端子名と入出力番号

DQ0 --- D8

DQ1 --- D7

 

IOT2020とInput/Outputモジュール合わせて2万円弱なので、性能や端子数が使用条件に合うのであれば、DINレールにそのまま取り付けて使いたい場合に良いかもしれません。

メッセージ3/3
3,465件の閲覧回数