みんなさんこんにちわ。今回はFactory IOの第3話で一般的なFieldbus ModbusTCPIPxCodesysでFactory IOとつながる方法を紹介したいと思います。無料なCodesysとやり取り方法さえわかれば、実際の実機PLCなくてもたくさん試すことができます。
こちらは前回の記事です:
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
まず基本な設置が昔の記事に参考してください。
そして設定と同じように変数を定義します。
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 (*を@に)