FactoryIO# CodesysとModubusTCP/IPで連携してみよう

みんなさんこんにちわ。今回はFactory IOの第3話で一般的なFieldbus ModbusTCPIPxCodesysでFactory IOとつながる方法を紹介したいと思います。無料なCodesysとやり取り方法さえわかれば、実際の実機PLCなくてもたくさん試すことができます。

こちらは前回の記事です:

FactoryI/O#Installation
FactoryIO#Beckhoff TwinCAT3と連携しよう


Factory IO側

新しいSensesを作成しDriverでModbus TCP/IP Clientを選択します。

右側にあるCONFIGURATIONをクリックします。

まずHostとPortでDevice側に合わせましょう。ModbusTCPIPのDefault Portは502です。

次はI/O Pointsを設定します。いまはとりあえずDefault設定で、Offset0から16のDIとDO、

Offset0から8個のWORD Input/Outputに設定します。

CONNECTします。

正常に繋がったら隣に緑のCheck-markがついています。

それで前書いてた記事と同じように部品のINPUT・OUTPUTを割り付ければOKです。

Codesys

まず基本な設置が昔の記事に参考してください。

Codesys#Modbus TCPIP Slaveを立ち上げてみよう

そして設定と同じように変数を定義します。

ModubusTCPの設定画面で注意するところがあります。

1−Writeableを外します。そうしないとHolding RegistersとInput Registersにも同時にQになります。

2−Discrete Bit AreaのCheckboxを入れます。Factory IOでCoilとInputも使っていますので。

3−点数を設定します。

4−Holding and input register data areas overlayのCheckboxを外します。

5−各RegisterのOffsetを設定します。もしFactory IO側すべてOffsetが100から始まるから、こちらも100をいれてください。

次はTagを割り付けます。

注意するのはCodesysとFactory IOのInput Registerなどはすべて相手側の視点です。Holding RegisterなのにIWになってるのはFactory IO側にはそれは書き込むのエリアです。のようなイメージですね。

テスト

今回テストするために4つの部品を置いてみました。

Counter表示・Sensor・警報器です。

CounterはConfiguration>Integerで設定を変更します。

それは直接Registerからの数字を表示するためです。

Sensor1はAnalog設定になります。0−10になります。

Sensor2は普通のDigitalです。

実際Playすると、Counter値が123になります。

それはInput Registersが123に書き込んでたからです。

Sensor1の値はいま10.0になっています。

Holding Registerは1000になって、どうやら2桁の実数のイメージですね。

最後はCoilsとInputも同じく反映できます。

最後に

はーい、お疲れ様です。

もしなにか質問あれば、メール・コメント・Twitterなどでもどうぞ!

Twitterのご相談:@3threes2

メールのご相談:soup01threes*gmail.com (*を@に)

Footer_Basic

Find ME

Twitter:@3threes2
Email:soup01threes*gmail.com (* to @)
YoutubeChannel:https://www.youtube.com/channel/UCQ3CHGAIXZAbeOC_9mjQiWQ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする