Modbusプロトコルの最初の仕様は1979年に公開されました。このプロトコルは、要求と応答に基づいてスレーブデバイスをポーリングするように設計されています。Modbus RTU(リモートターミナルユニット)は、シリアルデータインターフェイス(RS-232、RS-485、RS-422)を介して動作します。今日は、TCP / IPプロトコルスタックのアプリケーション層で動作するわずかに変更されたプロトコルであるModbusTCPに焦点を当てます。
まず、サーバー部分がどのように構成されているかを見てみましょう(より正確にはプログラムされています)。Modbus TCPサーバーは、Modbus RTUスレーブに類似しています。つまり、スレーブデバイスです。これは重要です。混同しないでください。サーバーは要求に応答するだけで、要求を生成しません。
この例では、ファームウェアバージョン2.6のS7-1516CPUを使用しています。S7-1200シリーズも同じようにプログラムされています。
まず、MB_SERVER機能ブロックのインスタンスをOB1に配置しましょう([手順]→[通信]→[その他]→[MODBUS TCP])。
次に、3つのことを行う必要があります。まず、MB_ HOLD_REG入力に何かを置きます。FBインスタンスのこの入力ピンには、保持レジスタに割り当てられるメモリ領域が含まれている必要があります。
. Modbus TCP 5.0 « » (Discrete inputs), .. , — BOOL' %I. Coils, «» — , , , %Q. Input Registers, « » — %I, %IW. , Modbus I Q. , . - , , , «» . , Modbus TCP , .
, IB QB. QB_Count, QB_Read_Count IB_Count , 65535, / / .
/ , , . , — , ( ) . , « », « » , , .
, 5.0 ( 2.5 S7-1500 4.2 S7-1200) , . — . , «Access to data areas in DBs instead of direct access to MODBUS addresses as of version V5.0» .
, «» .
Add new block
«Data block» ,
« », ,
. () . .
MB_HOLD_REG
-, TCON_IP_v4 TCON_Configured. . , , — Hardware, . , «» Modbus, (, , ).
TCON_IP_v4
InterfaceID , .
ID — . 1 4096. ( MBSERVER, ). . 1.
ConnectionType — . 11 (0B ): TCP. .
ActiveEstablished — false, , .
RemoteAddress — , . IP- , . .
RemotePort — ,
LocalPort — TCP , . - ( RFC) Modbus TCP 502 ( Doom — 666, ). 502 .
:
ID . , network (MOVE) Modbus. Step 7 , . Modbus X1. , .
, , System Constants . , , .
64 "ModbusData".CONNECT_Struct.InterfaceId
CONNECT :
, , , MB_SERVER_DB. , . , , , , «» «» «».
, Online:
7002 , , . STATUS, . , / Modbus-, (, — « » « »).
Modbus- . — . 5 , 10, Modbus , . — : little endian , big endian, , . 5 , , float, «» :
, (, %Q) — «» Modbus, , . . , :
. 64, (8 * 8 + 0 = 64). «» Modbus-:
«» ( 64). «» modbus:
, , Step 7, , ( ):
, . , , . «» ( , ):
( online, ) modbus «» «Illegal data address», . : Restriction of read access to process images as of version V5.0.
, . Step 7 :
. . «MBHOLDREG parameter» :
. , .
№1. — (, ). 8187 : The MBHOLD_REG parameter has an invalid pointer. Data area is too small.
№2. WORD, «» . , , .
実験#3。マーカー地域。動作します、値はクライアントから入力されました、エラーはありません。
私の観点からは、ドキュメントは十分に明確ではありません。「最適化されたアクセス」ではなく、「標準のアクセスデータブロックまたはビット(トークン)メモリを使用する」と表示する必要があります。アクセスを最適化するには、ワード配列で十分です。そして、私の観点からすると、最も便利な方法は、元の例で説明した方法です。実験2も原則として実行可能ですが(その説明もあります)、私の観点からは作業に不便です。
次回は、ModbusTCPクライアントに取り組みます。