两台S7-1200 PLC之间的Modbus TCP通信

freefree技术Resources

这篇内容可直接阅读,适合用于基础学习和Search引流。

两台S7-1200 PLC之间的Modbus TCP通信缩略图
🌐 This page is not yet available in English. Showing the Chinese version. Back to Chinese page.
本文目录
  1. 1. 概述
  2. 2. 实验环境设置
  3. 3. Modbus TCP通信基本配置
  4. 4. S7-1200作为客户端的编程及通信过程
  5. 5. 调用 MB_CLIENT
  6. 6. CONNECT 引脚的指针Type
  7. 7. 创建 MB_DATA_PTR data缓冲区
  8. 8. 客户端侧Complete指令块编程
  9. 9. Download与测试
  10. 10. 结论

概述

在自动化和控制system中,Modbus TCP协议被广泛用于PLC之间的通信。本文将探讨如何在两台S7-1200 PLC之间实现Modbus TCP通信,重点介绍客户端的编程和通信过程。

实验环境设置

  • Operationsystem: WIN7 SP1 专业版 64 位
  • 编程软件: STEP 7 Professional V13 SP1 Update 5
  • system硬件: CPU1212C 6ES7212-1AE40-0XB0 V4.1 和 CPU1215C 6ES7215-1AG40-0XB0 V4.1

Modbus TCP通信基本配置

  • 客户端: CPU 1212C
  • 服务器: CPU 1215C
  • IP address: 客户端 192.168.0.6, 服务器 192.168.0.4
  • 端口号: 客户端 0 服务端 502
  • 硬件标识符: 64
两台S7-1200 PLC之间的Modbus TCP通信插图

硬件标识符是在“设备configuration”中,双击PROFINET 接口,然后在“属性中的“硬件标识符”中View。

S7-1200作为客户端的编程及通信过程

  • S7-1200 客户端侧需要调用 MB CLIENT 指令块。
  • 该指令块主要Complete客户机和服务器的 TCP connect、send command消息receiveResponse以及控制服务器断开的工作任务。

调用 MB_CLIENT

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

两台S7-1200 PLC之间的Modbus TCP通信插图1

MB_CLIENT 各脚定义:

  • REQ: 与服务器之间的通信Request,上升沿effective。
  • DISCONNECT: 通过该参数,可以控制与ModbusTCP服务器建立和终止connect。0:建立connect;1:断开connect。
  • MB MODE: 选择ModbusRequest模式(读取、写入或诊断)。
  • MB_DATA_ADDR: 由”MB_CLIENT“指令所访问data的starting address。
  • MB DATA LEN:dataLength:data访问的位或字的个数。
  • MB_DATA_PTR: 指向Modbusdataregister的指针。
  • CONNECT:指向connect描述结构的指针。使用TCON_IP_v4data type。
  • DONE: 最后一个作业成功Complete,立即将输出参数DONE置位为”1″。
  • BUSY:作业状态位:0:无正在处理的”MB_CLIENT”作业;1:”MBCLIENT’作业正在处理。
  • ERROR:Error位: 0:无Error:1:出现Error,Error原因ViewSTATUS。
  • STATUS: 指令的详细状态信息。

CONNECT 引脚的指针Type

创建TCON_IP_v4结构:

  • 需要创建一个全局data块 DB2,并在其中定义TCON IP v4data结构,用于存储通信配置。
  • 双击打开 DB2,定义变量名称为“aa”,data type为TCON IP v4” (可将 TCON IP V4 拷贝到对话框中) ;
  • Click“回车”按键,该data type结构创建完毕
两台S7-1200 PLC之间的Modbus TCP通信插图2

TCON IP v4data结构的引脚定义说明如下:

两台S7-1200 PLC之间的Modbus TCP通信插图3

注意:

  • CONNECT引脚的填写需要用符号寻址的方式
  • TCON_IP_v4 是systemdata type,不是在 PLC data type中创建
  • LocalPort 一般使用默认值 0,意思是本地使用随机端口

创建 MB_DATA_PTR data缓冲区

1.创建一个全局data块 DB3,创建方法可以参考图 2,连同上步创建的 DB2 位于 CPU 程序块中;

生成的两个 DB 块名称:

两台S7-1200 PLC之间的Modbus TCP通信插图4

2.建立一个 Word 数组的data type,以便通信中存放data;MB_DATA_PTR data缓冲区结构:

两台S7-1200 PLC之间的Modbus TCP通信插图5

注意

  • 指定的data缓冲区可为 DB 块或M存储区address中;
  • DB 块可为优化的data块,也可为标准的data块结构;
  • 若为优化的data块结构,必须是基本data type数组;
  • 若为标准的data块结构,以指针的方式填写该引脚;
  • MB_DATA_PTR 指定的data缓冲区必须足够大,至少达到MB_DATA_LEN 个位 (访问输入位、输出位时) 或字 (访问保持register、输入字时) ;
  • 本文以标准的data块 (默认) 为例进行编程。

修改DB块属性为标准的块结构:

两台S7-1200 PLC之间的Modbus TCP通信插图6

客户端侧Complete指令块编程

调用 MB_CLIENT 指令块,使用function code 03 从服务器中读取 2个保持register的值,MB_MODE =0,MB_DATA_ADDR =40001,MB_DATA_LEN =2

两台S7-1200 PLC之间的Modbus TCP通信插图7

注意:

  • 对于本例来说,伙伴是另一个 S7-1200,实际上也可换做任意支持 Modbus TCP 服务器equipment,只需在参数引脚设置合适值,并在 CONNECT 设置正确Communication parameters即可。
  • 如果 S7-1200作为 Modbus TCP 客户端需要同时connect多个 Modbus TCP 服务器,那么需要使用多个 MB_CLIENT;
  • 如果一个 Modbus TCP connect里有多个通信作业,且每个作业调用一次 MB_CLIENT ,那么每次调用必须使用相同的背景data块,CONNECT 也使用相同的参数

Download与测试

Complete编程后,将整个项目Download到S7-1200 PLC。在服务器侧准备就绪后,通过触发MB CLIENT指令块的REQ引脚的上升沿来启动通信。读取到的data将被存放在MBDATA PTR引脚指定的DB块变量中。

结论

通过以上步骤,两台S7-1200 PLC之间的Modbus TCP通信可以被成功实现。客户端的编程涉及到详细的指令块配置和data结构的定义,这对于实现高效且可靠的通信至关重要。这种通信方法在Automation中的应用非常广泛,为设备间的data交换提供了一个稳定的平台。

技术术语(共 5 个)—— 点击展开
Modbus TCP基于以太网的Modbus协议变体,使用TCP/IP传输
function codeModbusfunction code指定读/写OperationType,如01读线圈、03读保持register
registerModbus register存储data单元,分线圈/离散输入/保持/输入register四类
PLC可编程逻辑控制器,Automation控制的核心设备
保持registerModbus 16位可读写data,address从40001开始
来源/Tools信息 —— 点击展开
来源 Modbus Chinese Network(modbus.cn) —— China leadingModbus通信协议技术社区 Category 工业物联网 字数 2025 字 · 阅读约 6 分钟 更新 2024-01-02 永久链接 https://www.modbus.cn/26414.html
Recommended Tool: Modbus Debug Assistant WeChat Mini Program
Modbus Chinese Network官方推出的Modbus DebuggingTools,支持 Modbus RTU/TCP 实时通信debug、register读写、线圈控制、data监控和message分析。 无需安装,微信Search「Modbus DebuggingAssistant」即可使用。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
把这篇Resources用于真实项目?

进入Tools中心进行messageParse、CRC verification和设备debug,或Submit requirements获取选型与接入建议。

工程师member

把这篇文章变成可执行的debugResources

开通后可使用高级messageParse、Resources包Download、Code Example、工程案例和优先Technical Support,适合真实项目交付。

高级Tools不限次
Resources包与代码包
Complete Engineering Case Library
优先Technical Support入口

发表回复

您的邮箱address不会被公开。 必填项已用 * 标注