首页
学习
活动
专区
圈层
工具
发布

两台S7-1200/1500 PLC之间数据到底该怎么互传?

两台 S7-1200/1500 PLC之间数据到底该怎么互传?

4种方式,从简单到硬核,一次讲透

在自动化项目中,多台 PLC 协同工作是家常便饭。比如西门子S7-1500 做主控,S7-1200 做分布式 IO 控制;或者两台 S7-1200 互相交换工艺数据。

但面对"跨PLC数据交互",很多初学者脑子里一团浆糊。到底是该用  PUT/GET ? 还是用  TSEND/TRECV ? 或者干脆用  智能设备 IO 交换 ?

今天,我们就把 S7-1200/1500 之间的数据互传扒个底朝天,给你最清晰的实操指南!

四种方式,一张卡看全

1

S7通信 PUT/GET

单侧编程 · 小数据 · 最省事

2

TCP TSEND/TRECV

双侧编程 · 大数据 · 最稳妥

3

PROFINET I-Device

零代码 · 毫秒级 · 最硬核

4

全局数据 GD(仅1500)

零代码 · 自动广播 · 最黑科技

▲ 两台S7 PLC之间的数据互传——4种方式各有千秋

方式一、S7通信(PUT/GET)

最经典的"单方面索取"

原理解析

S7通信是西门子看家协议,PUT/GET 属于单侧通信。只需在主动方(Client端)编程,被动方(Server端)完全不用写通信代码,只需把数据准备好放在 DB 块里就行。

实操场景

A线(S7-1500,IP: 192.168.0.1)需读取 B线(S7-1200,IP: 192.168.0.2)的实时产量,并把自己的配方数据写给B线

B线(Server端)

什么都不用写!

创建 DB100

放入"产量"+"配方"

A线(Client端)

OB1调用PUT/GET

GET读B线DB100产量

PUT写B线DB100配方

千万记住

DB块必须取消"优化的块访问"(取消勾选),转换为绝对寻址!否则S7通信无法按偏移量寻址,直接报错!

ADDR寻址示例

GET ADDR: DB100.DBX0.0 BYTE 4(读产量)

PUT ADDR: DB100.DBX4.0 BYTE 8(写配方)

数据量

≤160/212字节

编程复杂度

★☆☆☆☆

改动对方

不需要

方式二、TCP通信(TSEND/TRECV)

最稳妥的"握手交接"

原理解析

与 PUT/GET 不同,TSEND/TRECV 是双侧通信。发送方必须执行 TSEND,接收方必须执行 TRECV 才能完成数据传输。就好比寄快递——你必须打包发货,我还得亲自签收

实操场景:传1000字节工艺曲线

1

建立连接:1500侧主动调用 TCON,1200侧被动监听也调用 TCON

2

发送端(1500):连接成功后触发TSEND,发出1000字节数据

3

接收端(1200):循环中断OB中持续调用TRECV,收到即存入DB块

S7-1500

TCON TSEND

━━━━▶

◀━━━━

TCON TRECV

S7-1200

数据量

≤65534字节

跨网段

支持

数据确认

应用层保证

▲ 四种方式:从简单到硬核,各有适用场景

方式三、智能设备IO交换(PROFINET)

最硬核的"毫秒级同步"

原理解析

不是在应用层传数据,而是把其中一台 PLC 直接变成另一台的"高级IO设备"。数据随 PROFINET 周期性报文一起发送——零延迟、零抖动

实操场景:主从同步控制,4ms获取编码器位置+发送速度设定

1

从站(1200)配置

勾选"IO通信器",分配给主站,添加输入/输出 Transfer 区域(如各4字节IO地址)

2

主站(1500)配置

组态1200为IO设备,Transfer区域自动映射为1500的IO地址

3

编程:双方都不需要写通信代码!

1500直接读写 IW/QW,1200直接读写映射的 IW/QW,数据底层飞快交换

IO地址自动映射

1500 QW100

1200 IW0

1500 IW100

1200 QW0

响应速度

毫秒级

通信代码

零代码

典型应用

运动控制

方式四、全局数据块(GD)

最容易忽略的"黑科技"(仅S7-1500!)

原理解析

不需要调用任何指令!不需要建立任何连接!只需在硬件组态里配置,PLC底层会自动以周期性广播的方式发送和接收数据。

注意:仅限 S7-1500 之间!S7-1200 不支持!

实操场景:两台1500同步运行状态指示灯和报警信号

1

网络视图选中两台1500,右键选择"全局数据"

2

在弹出表格中填入A侧发送DB变量和B侧接收DB变量

3

编译下载,完事儿!

编程量

零代码

连接配置

不需要

PLC型号

仅1500

四种方式终极对比(收藏这张卡)

避坑指南:那些年踩过的通信坑

不管用哪种方式,以下几点没注意,必定抓狂

1

DB块的"绝对寻址"大坑

使用 PUT/GET 时,Server端 DB 块必须取消"优化的块访问"!否则 S7 通信无法按偏移量寻址,报错找不到地址

2

通信连接数限制

S7-1200 的 S7 连接数有限(通常最多8个),做大型网络架构时一定要查手册,别把连接资源耗尽了!

3

大端小端问题

跨品牌通信时注意字节顺序!西门子是大端模式(高字节低地址),千万别把 16#1234 读成了 16#3412。

大端:16#1234 存储顺序 [12][34]

读成:16#3412 存储顺序 [34][12]

4

断线处理

PUT/GET 和 TCP 通信一定要做好错误位的监控!比如 GET 的 ERROR 管脚置位时,接收的数据可能是脏数据,必须在逻辑里做超时断线保护

▲ 选对方式,调通通信——多PLC协作就是这么简单

选对通信方式

比写对程序更重要

小数据用PUT/GET

大数据走TCP

要实时上I-Device

两台1500试试GD

避坑四条:DB绝对寻址 · 连接数限制 · 大端小端 · 断线保护

PLC经典案例与源程序

  • 发表于:
  • 原文链接https://page.om.qq.com/page/ODiUi2qbxonDu6mARSa4eGjQ0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。
领券