从0开始学习S7-1200+ET200SP(3)——两台S7-1200通过TCP连接

3.1 硬件组态

(1) 添加新设备

选择设备型号,可以根据订货号唯一确认设备,可以更改设备名称,这里添加两台S7-1200 CPU 1215DC/DC/DC,命名为PLC1与PLC2:

在PLC的安全设置中取消选择保护机密的PLC组态数据,并且禁用访问控制:

(2) 网络视图、拓扑视图连接
(3) 可访问的设备

搜索可访问的设备:

点击显示,可以在在线访问中查看

(4) 编译与下载

将两台PLC分别改为:PLCmaster作为发送数据的主站,PLCsalver作为接受数据的从站。

修改一台后,点击设备,编译------下载

这里选择下载的目标设备,上面的组态访问节点是指我们组态的PLC,下面的目标类型是根据网线找到的设备。记得需要相同的IP地址才可以加载。加载成功后,实现名字的修改和设备的捆绑。

加载完成后,点击查看分配PROFINET设备的名称,已经分配成功:

同样的方法修改PLC_2,修改成功:

3.2 PLCmaster编程

为了编程方便,使用 CPU 属性中定义的时钟位,定义方法如下:在 "项目树" > "PLC_1" > "设备组态" 中,选中 CPU ,然后在下面的属性窗口中,"属性" > "系统和时钟存储器" 下,将系统位定义在MB1,时钟位定义在MB0:

  1. 发送数据区DB

添加新块选择"数据块" 创建 DB 块,在DB块的属性->常规->属性中,取消勾选"优化的块访问",点击"确定"键:

注意:对于双边编程通信的 CPU ,如果通信数据区使用 DB 块,既可以将 DB 块定义成符号寻址,也可以定义成绝对寻址。使用指针寻址方式,必须创建绝对寻址的 DB 块:

需要在属性中取消勾选优化的块访问:

点击编译后,出现偏移量,就是每个变量在内存中的起始地址,单位是 字节. **位,**Int类型是2个字节:

  1. 调用TSEND_C指令

在PLC_master的OB1的主程序中调用 TSEND_C指令, 发送数据到PLC_slaver中,这个指令的含义是TSEND+TCON,所以就不用额外写TCON了。定义连接参数如下,谁是send,谁主动建立连接:

使能定义为系统时钟0.5Hz。上面启动了指针寻址,可以通过绝对地址寻址。DATA定义从DB2的DBX0.0开始发送10个字节,这里的长度可以大于数据区的字节长度,也可以小于字节区的数据长度:

3.3 PLCslaver编程

(1) 接收数据区DB

同样取消块优化,方便指针寻址:

(2) 调用Trcv_c指令

定义接受10个字节的数据,使能定义为系统时钟0.5Hz:

3.4 调试

全部下载编译后,两个设备都点击进入在线,并且启用监视:

可以修改sendDB中的数据:

在receive数据块中查看可以发现,由于int是两个字节,这里byte就是一个字节,所以receive3才是08,send4=15,已经处于第11个字节了,所以无法被发送出去。

相关推荐
JackieDYH13 小时前
WebSocket-不同平台封装-Hooks和使用案例
网络·websocket·网络协议
lazy H14 小时前
从入门到日常开发,一篇文章掌握 Git 核心操作
git·后端·学习·github
a1117761 天前
2FA 验证码生成器(github登录验证 app)
笔记·学习
我的xiaodoujiao1 天前
API 接口自动化测试详细图文教程学习系列32--Allure测试报告2
python·学习·测试工具·pytest
你想知道什么?1 天前
线性回归-学习笔记
笔记·学习·线性回归
鱼毓屿御1 天前
从「只会聊」到「边想边做」的跃迁
前端·学习·react.js
AOwhisky1 天前
Python 学习笔记(第十五期)——运维自动化(下·后篇):堡垒机实战——paramiko高阶篇
运维·python·学习·云原生·自动化·运维开发
minglie11 天前
zynq中linux系统的自动登录和免密登录
学习
茯苓gao1 天前
嵌入式开发笔记:Qt信号槽机制深度解析——从原理到实战的全方位指南
开发语言·笔记·嵌入式硬件·qt·学习
我想我不够好。1 天前
监控学习 7.23 1.5hour
学习