概述
在自動化和控制系统中,Modbus TCP协议被广泛用于PLC之间的通信。本記事将探讨如何在两台S7-1200 PLC之间実装Modbus TCPCommunication,重点介绍クライアント側は的プログラミング和通信过程。
实验环境設定
- オペレーティングシステム: WIN7 SP1 プロフェッショナル版。 64 位
- プログラミング软件: STEP 7 Professional V13 SP1 Update 5
- 系统硬件: CPU1212C 6ES7212-1AE40-0XB0 V4.1 和 CPU1215C 6ES7215-1AG40-0XB0 V4.1
Modbus TCP通信基本設定
- クライアント側は: CPU 1212C
- Server: CPU 1215C
- IP address: クライアント側は 192.168.0.6, Server 192.168.0.4
- ポート番号: クライアント側は 0 サーバー側。 502
- ハードウェア識別子: 64

ハードウェア識別子是在“デバイス组态”中,双击PROFINET Interface,然后在“属性中的“ハードウェア識別子”中表示。
S7-1200作为クライアント側は的プログラミング及通信过程
- S7-1200 クライアント側は侧呼び出しが必要です MB CLIENT 指令块。
- 该指令块主要完成客户机和サーバー·サーバー的 TCP connect、送信命令メッセージ受信レスポンス以及控制サーバー·サーバー断开的工作任务。
调用 MB_CLIENT
将MB_CLIENT 指令块在程序块>OB1”中程序段里调用,调用时会自動生成される背景 DB,点击确定即可

MB_CLIENT 各脚定义:
- REQ: 与サーバー·サーバー之间的通信リクエスト,アップサイド·エッジ有效。
- DISCONNECT: 経由该参数,可以控制与ModbusTCPサーバー·サーバー建立和终止连接。0:建立连接;1:切断する。
- MB MODE: ChoiceModbusリクエストモード(read、写入或诊断)。
- MB_DATA_ADDR: 由"MB_CLIENT“指令所アクセスデータ的開始アドレス。
- MB DATA LEN:データ長さ:データアクセス的位或字的个数。
- MB_DATA_PTR: 指向Modbusデータ·レジスタ的指针。
- CONNECT:指向连接説明構造的指针。使用TCON_IP_v4データ型。
- DONE: 最后一个作业成功完成,立即将出力参数DONE置位为"1"。
- BUSY:作业ステータス位:0:无処理中です。的"MB_CLIENT"作业;1:"MBCLIENT'作业処理中です。。
- ERROR:エラー位: 0:エラーなし。:1:出现エラー,エラー原因表示STATUS。
- STATUS: 指令的详细ステータス信息。
CONNECT 引脚的指针タイプ
作成TCON_IP_v4構造:
- 需要作成一个全局データ块 DB2,并在其中定义TCON IP v4データ構造,用于存储通信設定。
- 双击打开 DB2,定义变量名称为“aa”,データ型为TCON IP v4” (可将 TCON IP V4 拷贝到对话框中) ;
- Click“回车”按键,该データ型構造作成完毕

TCON IP v4データ構造的引脚定义説明如下:

注意:
- CONNECT引脚的填写需要用符号寻址的方式
- TCON_IP_v4 是系统データ型,ではない在 PLC データ型中作成
- LocalPort 一般使用デフォルト値 0,意思是本地使用随机ポート
作成 MB_DATA_PTR データバッファ
1.作成一个全局データ块 DB3,作成方法可以参照图 2,连同上步作成的 DB2 位于 CPU 程序块中;
生成的2つ DB 块名称:

2.建立一个 Word 配列的データ型,以便通信中存放データ;MB_DATA_PTR データバッファ構造:

注意
- 指定的データバッファ可为 DB 块或M存储区アドレス中;
- DB 块可为优化的データ块,也可为標準的データ块構造;
- 若为优化的データ块構造,必须是基本データ型配列;
- 若为標準的データ块構造,以指针的方式填写该引脚;
- MB_DATA_PTR 指定的データバッファ必须足够大,至少达到MB_DATA_LEN 个位 (アクセス入力位、出力位时) 或字 (アクセスレジスタを保持する。、入力字时) ;
- 本記事以標準的データ块 (デフォルト) 为例进行プログラミング。
修改DB块属性为標準的块構造:

クライアント側は侧完成指令块プログラミング
调用 MB_CLIENT 指令块,使用機能コード 03 从サーバー·サーバー中読み取り 2レジスタを保持する。的值,MB_MODE =0,MB_DATA_ADDR =40001,MB_DATA_LEN =2

注意:
- 对于本例来说,伙伴是另一个 S7-1200,实际上也可换做任意サポート Modbus TCP サーバー·サーバー的デバイス,只需在参数引脚設定合适值,并在 CONNECT 設定正确通信パラメータ即可。
- もし S7-1200作为 Modbus TCP クライアント側は需要同时连接多个 Modbus TCP Server,那么需要使用多个 MB_CLIENT;
- もし一个 Modbus TCP 连接里有多个通信作业,且每个作业调用一次 MB_CLIENT ,那么每次调用必须使用相同その背景はデータ块,CONNECT 也使用相同的参数
下载与测试
完成プログラミング后,将整个项目下载到S7-1200 PLC。在サーバー·サーバー侧准备就绪后,経由触发MB CLIENT指令块的REQ引脚的アップサイド·エッジ来启动通信。読み取り到的データ将被存放在MBDATA PTR引脚指定的DB块变量中。
结论
経由以上步骤,两台S7-1200 PLC之间的Modbus TCP通信可以被成功実装。クライアント側は的プログラミング涉及到详细的指令块設定和データ構造的定义,这对于実装高效且可靠的通信至关重要。这种通信方法在工业自動化中的应用非常广泛,为デバイス间的データ交換提供了一个稳定的プラットフォーム。
Leave a Reply