两台 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经典案例与源程序