Modbus TCP通信の使用
目的と機器
このドキュメントでは、Aurora Vision StudioとPLCデバイスまたはModbus TCPシミュレーター間でModbus TCP通信を確立する実践例を説明します。このタスクを実行するために、Aurora Vision Studio 5.2およびSimatic S7-1200 CPU 1212C AC/DC/RLYコントローラーとTIA Portal V15が使用されました。より詳しい理論的背景については、Modbus TCPデバイスの操作を参照してください。
必要な機器:
- Modbus TCPシミュレーター、例:EasyModbusTCP
- SIMATIC S7-1200または他のSIMATIC S7ファミリーのコントローラー
- TIA Portal V15
- Aurora Vision Studio 5.0 Professionalまたはそれ以降(バージョン5.2を使用)
概要と最初の手順
この例では、アプリケーションの基本版と高度版の2つのバージョンを作成します:
- 基本版のアプリケーションはPLCを必要とせず、代わりにModbus TCPシミュレーターを使用できます。このプログラムでは、Aurora Vision StudioクライアントとModbus TCPサーバー(PLCまたはシミュレーター)間で基本的なデータ型の交換が可能です。
- 高度版のアプリケーションには、PLCプログラムに追加のロジックを実装する必要があります。これは、ヒーターを表す動的数学モデルをシミュレートします。ユーザーはモデルパラメータを変更できるため、オブジェクトが遅れて反応したり、速く反応したりします。ユーザーはアクチュエータデバイスに供給される電圧を表すモデル入力パラメータを手動で変更できます。PLCは温度レベルに関するフィードバックを送信し、それがHMIに表示されます。
まず、PLCまたはPLCシミュレーターとPC間のハードウェア接続を確立する必要があります。ネットワーク構成については、後述します。
Modbus TCPシミュレーターを使用した基本プログラム
EasyModbusTCPシミュレーターを開き、アプリケーションウィンドウの左下隅にあるSetupボタンを押します。 プロパティウィンドウが表示されます:以下の画像に従って構成を設定します:

次に、新しいAurora Vision Studioプロジェクトを開き、INITIALIZEセクションにModbusTCP_Connectフィルターを追加し、FINALIZEセクションにModbusTCP_Closeフィルターを追加します。Aurora Vision StudioはModbusTCPプロトコルを介した通信のための使用準備が整ったフィルターセットを提供しています。関連するフィルターの完全なリストはこちらで入手できます。

PROCESSセクションにTask Macrofilterを追加します。

新しく作成したTask Macrofilterを開き、次の画像のように配置されているModbusTCP_ReadDiscreteInputs、ModbusTCP_ReadMultipleIntegerRegisters、ModbusTCP_ForceMultipleCoils、およびModbusTCP_WriteMultipleIntegerRegistersフィルターを追加します。

以下に、Aurora Vision Studioアプリケーション内のModbusTCPクライアントとシミュレートされたサーバー間の動作する通信を示します。

PLCを使用した基本プログラム
ネットワーク構成
メインネットワーク構成
TIA Portal環境で新しいプロジェクトを作成し、新しいデバイスの追加ボタンをダブルクリックしてデバイスを追加します。コントローラーモデルを選択し、CPUおよびドロップダウンメニューにリストされているその他の利用可能なコンポーネントを設定します。準備ができたらOKボタンをクリックします。


プログラムブロックリストを展開し、Mainアイコンをダブルクリックします。ネットワークビューが表示されます。右側の通信タブ(Instructionsセクション内)を展開し、MB_SERVERアイコンをダブルクリックします。このアイコンはCommunication -> Others -> MODBUS TCPの場所にあります。

MB_SERVERブロックをCommunication -> Others -> MODBUS TCPの場所からドラッグし、アプリケーションBasic内のNetwork 1にドロップします。

IPアドレッシングのトラブルシューティング
ツールバーからAccessible devicesアイコンを選択して構成ウィンドウを開きます。 PG/PC インターフェースのPN/IEタイプを選択し、次にPLCに接続されたEthernetカードを選択します。 Start searchボタンをクリックし、アクセス可能なノードのリストからPLCを選択してShowボタンをクリックします。


PLCプログラムの作成
この章では、通信を確立するためのPLCプログラムの作成方法について説明します。最初に開始する基本アプリケーションには、1つのファンクションブロックのみがあります。これは、前のセクションで作成されたものと同じです。

MB_SERVER命令を使用してModbus TCP通信を確立します。上記の画像では、MB_Serverブロックの複数の入出力に接続されたいくつかのDBブロックが表示されています。クライアントとサーバー間の通信を確立するには、以下に示す方法でそれらを設定する必要があります:
- MBConfig - 接続タイプ、ModbusTCPサーバーのアドレス、および使用するポート(デフォルトで502)を定義するDBブロック
- BUFF - PLCとAurora Vision Studioアプリケーション間で送受信されるデータの通信バッファとして機能するDBブロック

次に、Dataブロックで変数を定義します。以下の画像と同じ名前とデータ型を使用します。新しい行を作成するには、任意の行を右クリックしてInsert rowを選択します。このステップでは、Start valuesの正しい値を設定する必要があります。


BUFFデータブロックでワード配列を作成し、以下の画像と同じサイズにします:

データブロック変数をMB_SERVERブロックの入力および出力に接続します:

これまでの手順がすべて正しく実行された場合、PLCプログラムは準備ができています。アプリケーションをコンパイルしてデバイスにダウンロードします。変数の現在の状態を確認するには、監視モードをオンにします:


モジュラスTCPシミュレーターを使用したセクションで作成したアプリケーションを使用します。 TIA Portalでディスクリート入力、コイル、およびレジスタをテストするには、次の画像のようにWatchテーブルとForceテーブルを作成します:

PLCを使用した高度なプログラム
PLCプログラムの作成
この章では、基本的なPLCプログラムを変更して、この記事の冒頭で言及された高度な使用の要件を満たす方法について説明します。前の章で説明された基本的なPLCプログラムを作成した場合は、このプロジェクトを新しい名前でコピーして保存します。 そうでない場合は、このセクションで説明されているようにBUFFとMBConfigデータブロックを作成します。
以下の画像のように、ModelDataという名前の新しいデータブロックを作成し、変数を設定します:

ネットワーク1では、Advancedプログラムの場合もMB_SERVERブロックを使用してModbus TCP接続を確立します。ネットワーク2では、適切なBUFFデータワードをModelData.Gain変数に移動するためにMOVEブロックを使用します。

ネットワーク3とネットワーク4では、BUFFワードをModelData.TおよびModelData.dtに移動するためにMOVEブロックを使用します。

ネットワーク5では、BUFFワードをModelData.Controlに移動するためにMOVEブロックを使用します。ネットワーク6では、実数値をDint値に変換するためにCONVブロックを使用します。

ネットワーク7では、さらなる計算のためのタイムドインパルス信号を生成するためにTONタイマーブロックを使用します。このネットワークに新しいブランチを作成し、TONブロックをネットワークに配置し、それに適したデータブロックを作成します。

ネットワーク8では、ModelData.dtをミリ秒から秒にスケーリングするためにDIVブロックを使用します。ネットワーク9では、以下の画像に示すロジックを使用します。CALCULATEブロックの式は次のようになります:
OUT:= IN5 + IN3 / IN2 * (IN1 * IN4 - IN5)

ネットワーク10では、ModelData.Output_prevワードをBUFFに移動するためにMOVEブロックを使用します。この変数はAurora Vision Studioアプリケーションで読み取られます。

Aurora Vision Studioプログラムの作成
このアプリケーションノートでは、高度なプログラムの例のHMIの作成方法については説明していません。公式のAurora Vision Studioの例であるModbusExample_Advancedをご覧ください。

200ミリ秒ごとに繰り返されるMainLoopマクロフィルター本体:

ModelOutputGenerationバリアントマクロフィルターのFalseブランチ:

ModelOutputGenerationバリアントマクロフィルターのTrueブランチ:

オンラインモードで呼び出されるModbusTCP_ReadWriteマクロフィルター:

プログラムのいくつかの部分で呼び出されるUpdateStatusLabelマクロフィルター。例えば、ユーザーに実行の成功や将来のエラーについて通知するために使用されます:

オンラインモードで接続が中断された場合に実行されるIO_ERRORエラーハンドラー:
