『7x24小时有问必答』

两台 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
四种方式终极对比(收藏这张卡)
对比项PUT/GETTCPI-DeviceGD
通信方式
单侧
双侧
组态级
广播
最大数据量
160/212B
65534B
IO区
小量
实时性
一般
一般
毫秒级
周期级
编程量★★★★★★★★★★★★★★★★★
PLC型号
1200/1500
1200/1500
1200/1500
仅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经典案例与源程序

扫码领取PLC经典案例与源程序

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码