两台S7-1200 PLC之间的Modbus TCPCommunication

freeFree Technical Resource

This content is free to read, suitable for basic learning and search traffic.

两台S7-1200 PLC之间的Modbus TCPCommunication

概述

在自動化和控制系统中,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
两台S7-1200 PLC之间的Modbus TCP通信イラスト

ハードウェア識別子是在“デバイス组态”中,双击PROFINET Interface,然后在“属性中的“ハードウェア識別子”中表示。

S7-1200作为クライアント側は的プログラミング及通信过程

  • S7-1200 クライアント側は侧呼び出しが必要です MB CLIENT 指令块。
  • 该指令块主要完成客户机和サーバー·サーバー的 TCP connect、送信命令メッセージ受信レスポンス以及控制サーバー·サーバー断开的工作任务。

调用 MB_CLIENT

将MB_CLIENT 指令块在程序块>OB1”中程序段里调用,调用时会自動生成される背景 DB,点击确定即可

两台S7-1200 PLC之间的Modbus TCP通信イラスト1

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“回车”按键,该データ型構造作成完毕
两台S7-1200 PLC之间的Modbus TCP通信イラスト2

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

两台S7-1200 PLC之间的Modbus TCP通信イラスト3

注意:

  • CONNECT引脚的填写需要用符号寻址的方式
  • TCON_IP_v4 是系统データ型,ではない在 PLC データ型中作成
  • LocalPort 一般使用デフォルト値 0,意思是本地使用随机ポート

作成 MB_DATA_PTR データバッファ

1.作成一个全局データ块 DB3,作成方法可以参照图 2,连同上步作成的 DB2 位于 CPU 程序块中;

生成的2つ DB 块名称:

两台S7-1200 PLC之间的Modbus TCP通信イラスト4

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

两台S7-1200 PLC之间的Modbus TCP通信イラスト5

注意

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

修改DB块属性为標準的块構造:

两台S7-1200 PLC之间的Modbus TCP通信イラスト6

クライアント側は侧完成指令块プログラミング

调用 MB_CLIENT 指令块,使用機能コード 03 从サーバー·サーバー中読み取り 2レジスタを保持する。的值,MB_MODE =0,MB_DATA_ADDR =40001,MB_DATA_LEN =2

两台S7-1200 PLC之间的Modbus TCP通信イラスト7

注意:

  • 对于本例来说,伙伴是另一个 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通信可以被成功実装。クライアント側は的プログラミング涉及到详细的指令块設定和データ構造的定义,这对于実装高效且可靠的通信至关重要。这种通信方法在工业自動化中的应用非常广泛,为デバイス间的データ交換提供了一个稳定的プラットフォーム。

Put this resource to use in a real project?

Go to the Tool Center for message parsing, CRC verification and device debugging, or submit your requirements for selection and integration advice.

Engineer Membership

Turn this article into actionable debugging resources

After activation, you can use advanced message parsing, resource pack downloads, code examples, engineering cases and priority technical support, suitable for real project delivery.

Unlimited Advanced Tools
Resource & Code Packs
Complete Engineering Case Library
Priority Technical Support

Leave a Reply

Your email address will not be published. Required fields are marked *.