こちらは新しいシリーズで、OTeeというVirtual PLCを使用し様々な記事を展開します。第3話ではOTee Platform上でModbus TCP Clientを立ち上げ、WAGOのModbus TCP Coupler 750-362と接続します。
さ、FAを楽しもう。

Reference Link
http://soup01.com/ja/category/otee/
前書き
いつも私の技術ブログとYouTubeチャンネルをご覧いただき、心より感謝申し上げます。また、いまFullさん(full@桜 八重 (@fulhause) / X)と共に毎週水曜日の夜にお届けしている「高橋クリス」ラジオ番組を運営しています。
技術は独り占めせず、届けるもの
私たちは工場の生産技術や制御に関する技術情報を、ブログや動画などで無料公開しています。「知識は誰でもアクセスできるべき」という信念のもと、現場で役立つ具体的なノウハウやトラブル事例などを発信してきました。すべて無料で続けているのは、「知らなかったせいで困る人」を少しでも減らしたいからです。
また、もしあなたの現場で…
- 「このPLCとデバイスの組み合わせ、ちゃんと動くのかな?」
- 「EtherCAT通信でうまくいかない部分を検証してほしい」
- 「新しいリモートI/Oを試したいけど社内に検証環境がない」
など、困っている構成や試してみたいアイデアがあれば、ぜひお知らせください。機器の貸出や構成の共有が可能であれば、検証し、記事や動画で発信します(ご希望に応じて匿名対応も可能です)。
支援のかたち
現在、私達の活動はほぼ無償で続けており、記事や動画の制作には、時間と検証環境の整備が必要です。この活動を継続的にコンテンツを提供するためには、皆様の温かいご支援が大変重要です。
メンバーシップ(ラジオの応援)
Fullさんとのラジオをより充実させるための支援プランです。
https://note.com/fulhause/membership/join
Amazonギフトリスト
コンテンツ制作に必要な機材・書籍をリストにしています。
https://www.amazon.co.jp/hz/wishlist/ls/H7W3RRD7C5QG?ref_=wl_share
Patreon(ブログ・動画活動への応援)
月額での小さなご支援が、記事の執筆・検証環境の充実につながります。
https://www.patreon.com/user?u=84249391
Paypal
小さな支援が大きな力になります。
https://paypal.me/soup01threes?country.x=JP&locale.x=ja_JP
知ってたら助かること、届けたいだけです
あなたの応援が、知識の共有をもっと自由で持続可能なものにしてくれます。これからもどうぞよろしくお願いします。
soup01threes*gmail.com
技術はひとりじゃもったいない。
Implementation
WAGO Side
WAGOのModbus TCP Couplerはこちらの記事を参考にしてください。

OTee Side
次はOTee側を構築します。

Modbus TCP ドライバの設定
Modbus TCP Driverを追加するには、左のTool barにある+ボタンをクリックします。

Entityの追加画面が表示されます。

Drop-listから”Driver Config”を設定します。

DriverをMODBUSに設定します。

Saveで設定を保存します。

Done!これでModbus Driver 構成を追加しました。

Modbus TCPクライアントの追加
先ほど追加したModbus Driverを開き、Add a Clientをクリックします。

それで新しいModbus TCP Clientが追加されました。

OTee RuntimeにアクセスしたいModbus TCP ServerのIPアドレス・そして更新周期を設定します。

リクエストの追加
Modbus Bus Clientにリクエストを追加するために、下記の”Add request”ボタンを
クリックします。

Done!新しいリクエストが追加されました。

Function
最初は出力モジュールにアクセスするFCを設定します。

Function欄でModbus TCPのFC Codeを指定できます。

Function欄にはDrop-listがあり、FC01/FC02など他のFCを設定できます。

今回出力モジュールをワードで書き込むようにFC16を設定します。

Done!

Slave ID
次はリクエストのSlave IDを設定します。

Nr. of Channels
FC16のアクセスチャンネル数を設定します。Default上では16チャンネルをまとめてアクセスします。

今回の記事では出力モジュール一つしかないので、Nr. of Channelsを1に設定します。

Start address
Start Addressは該当するリクエストに対してアクセスレジスタOFFSETを設定します。

今回の例ではスタートアドレスは520を設定します。

wagoのModbus TCP Coupler Webサーバから、位置1にインストールされた出力モジュールの書き込みレジスタは520スタートしたことがわかります。

SYMROL
最後はsymbolを設定します。プログラムの中にその変数を使用するにはsymbolから参照するので、わかりやすい名前を設定してください。

今回の例ではsymbol520に設定します。

結果
これでokです。

リクエスト2
次は位置4にインストールされたデジタル入力モジュールのアクセス設定を行います。

スタートアドレス=4に設定します。

wagoのmodbus tcp coupler でそのアドレスは4.0だと確認できます。

リクエスト3
次は位置3にインストールされたアナログ入力モジュールのアクセス設定を行います。

スタートアドレス=0、チャンネル=4に設定します。

wagoのmodbus tcp coupler でそのアドレスは0だと確認できます。

リクエスト4
最後は位置2にインストールされたアナログ出力のアクセス設定を行います。

スタートアドレス=512、アクセスレジスタ数を8に設定します。

その設定はwago modbus tcp coupler上で確認できます。

結果
Done!これでWago Modbus TCP Couplerにインストールされた4つのモジュールにもレジスタのアクセス設定を完了しました。

プログラム
次はプログラムを作成します。

Mapping
Wago Modbus TCP Couplerに読み書きする変数を定義します。

次は変数を実際のModbus TCP CouplerとMappingします。先ほど定義した変数を展開し、空欄のところをクリックします。

先ほど定義したModbus TCP変数の一覧表が表示され、その中に適切なSymbolとMappingしましょう。

Done!

最後はTempエリアで一時的な変数にも定義します。

VAR
こちらは今回記事で定義した変数です。

Code
こちらは今回記事で作成したコードです。
- アナログ入力モジュールから取得した電流入力をスケーリングする。
- アナログ出力モジュールに設定値をスケーリングし、出力する
- デジタル入力・出力の制御
rScalingUpper:=20.0; rScalingLower:=4.0; rRawLower:=0.0; rRawUpper:=32767.0; rWagoCouplerAIModule2Ch3:=WORD_TO_REAL(IN := (wWagoCouplerAIModule2Ch3)); rValue:= ((rWagoCouplerAIModule2Ch3-rRawLower)* ((rScalingUpper-rScalingLower)/(rRawUpper-rRawLower)))+rScalingLower; fbTON1( IN := fbTON1IN, PT := T#1s, Q => fbTON1OUT, ET => fbTON1ET ); xWagoInput001:=WORD_TO_BOOL( IN := AND_WORD(16#0002,wWagoCouplerInputModule3) ) ; temporary_5c27:=wWagoCouplerInputModule3; if xWagoInput001 then wWagoCouplerOutputModule0:=OR_WORD(16#0001,wWagoCouplerOutputModule0); else wWagoCouplerOutputModule0:=AND_WORD(16#FFFE,wWagoCouplerOutputModule0); end_if; wWagoCouplerOutputModule1 := REAL_TO_WORD( IN := (rWagoCouplerOutputModule1/10.0)*rRawUpper); fbCTU( CU := xCTUCU, R := xCTUR, PV := iPV, Q => xCUQ, CV => iCV ); |
ダウンロード
最後はプロジェクトをRuntimeにDownloadしてください。
結果
こちらの動画から動作確認できます。
OTee.Playing with Raspberrypi and WAGO Modbus TCP Coupler
最後は位置2にインストールされたアナログ出力のアクセス設定を行います。