[西门子] S7通信介绍,以两个S7-1200PLC数据传输为例

[复制链接]
查看94 | 回复0 | 2024-4-5 10:53:21 | 显示全部楼层 |阅读模式
S7-1200系列CPU本体上都集成以太网接口,其中CPU1211C、1212C和1214C都具有一个以太网RJ45接口,而CPU 1215C、1217C提供了两个以太网R45接口。S7-1200系类PLC可以通过以太网接口直接或者通过交换机与其他设备进行通信。当一台S7-1200PLC需要其它PLC或触摸屏或变频器通信时,这时只需要直接连接即可。当两台及以上的设备需要通信时,此时需要交换机进行网络连接。以太网通信可以分为多种通信方法,比如S7通信、OUC通信、modbus-TCP通信和FROFIENT IO通信等。其中,S7通信是众多通信方式中最简单、最常用的一种通信方法。S7-1200PLC选择S7通信时,需要在博图软件本地(客服端)CPU调用PUT和GET两个指令,PUT指令的作用是写入数据到伙伴(服务端)CPU中,GET指令的作用是从伙伴(服务端)CPU中读取数据。
PUT和GET指令在指令工具栏中—“通信”—“S7通信”中,两个指令具体含义如下:GET从远程(伙伴、服务端)CPU读取数据,PUT向远程(伙伴、服务端)CPU写入数据。

使用GET指令从远程CPU中读取数据,远程CPU可处于RUN或STOP模式下。使用PUT指令将数据写入远程CPU,远程CPU可处于RUN或STOP模式下。PUT和GET指令各个引脚含义如下表所示。使用PUT指令时需要注意几个问题:ID在进行S7通信连接时会自动生成,为十六进制数,比如W#16#100。指向服务端CPU写入区域的指针ADDR_x,如果写入区域为数据块,则该数据块必须为标准访问的数据块,不支持优化的块访问。SD_x指向客户端CPU上包含要发送数据的区域。通常情况下ADDR_x和SD_x均为指针形式。指针变量是用来存放内存地址的变量。在PUT/GET指令中ADDR_x和SD_x写法,比如P#M50.0 BYTE 5,其含义为指向以地址M50.0开始,长度为5个BYTE的存储空间,即从MB50到MB54。比P#DB1.DBX0.0 BYTE 10的含义为指向以数据块DB1中DBX0.0开始,长度为10个BYTE的存储空间,即DB1.DBB0到DB1.DBB9。指向服务端CPU写入区域的指针ADDR_x,如果写入区域为数据块,则该数据块必须为标准访问的数据块,不支持优化的块访问。指向客户端CPU发送区域的指针SD_x,本地数据区域可支持优化访问或标准访问。通信伙伴CPU为S7-1200//1500CPU系列,需要在伙伴CPU属性的“防护与安全”—“连接机制”中激活“允许来自远程对象的PUT/GET通信访问”。
使用GET指令时需要注意几个问题:ID在进行S7通信连接时会自动生成,为十六进制数,比如W#16#100。指向服务端CPU写入区域的指针ADDR_x,如果写入区域为数据块,则该数据块必须为标准访问的数据块,不支持优化的块访问。指向客户端CPU发送区域的指针RD_x,本地数据区域可支持优化访问或标准访问。服务端CPU为S7-1200/1500CPU系列,需要在伙伴CPU属性的“防护与安全”→“连接机制”中激活“允许来自远程对象的PUT/GET通信访问。

下面以两个S7-1200 CPU1212C之间S7通信,传递数据为例,介绍S7通信的应用。
第一步,设备组态。
在博图软件中新建项目,添加两个S7-1200 CPU1212C设备组态。修改其以太网地址,将PLC_1以太网地址修改为192.168.0.1,将PLC_2以太网地址修改为192.168.0.2。在PLC_1启用时钟存储器字节。
第二步,S7组态连接。

打开网络视图,在网络视图中单击“连接”按钮,按钮右侧下拉选项中选择“S7连接”,将PLC_1与PLC_2连接起来。
第三步,编写程序。
在PLC_1主程序OB1中,调用“PUT”指令,并对其进行组态设置。在伙伴栏选择
“PLC_2[CPU 1212C DC/DC/DC]”,下方端口、子网、子网名称、地址、连接ID与连接名称等均会自动生成相关内容。因PLC_1为客户端,应勾选“主动建立连接”。

PUT指令各个端口连接如下图所示。图中指令REQ选择M0.5,M0.5是1HZ的时钟存储器字节,由于REQ是上升沿有效,则实现功能为每秒完成一次从PLC_1到PLC_2数据传输。ID是自动生成的。ADDR_1和SD_1所连接指针都为P#M100.0 BYTE 1,P#M100.0 BYTE 1的含义为指向从M100.0开始,长度为1个BYTE的空间,即MB100。下面程序段实现的功能为每秒将客户端地址MB100中数据就传递到服务端地址MB100中。

在CPU 1的主程序OB1中,调用“GET”指令,并对其进行组态设置。在伙伴栏选择“PLC_2[CPU 1212C DC/DC/DC]”,下方端口、子网、子网名称、地址、连接ID与连接名称等均会自动生成相关内容。因PLC_1为客户端,应勾选“主动建立连接”。

GET指令各个端口连接如下图所示。图中指令REQ选择M0.5,M0.5是1HZ的时钟存储器字节,由于REQ是上升沿有效,则实现功能为每秒完成一次从PLC_1到PLC_2数据传输。ID是自动生成的。ADDR_1和SD_1所连接指针都为P#M10.0 BYTE 1,P#M10.0 BYTE 1的含义为指向从M10.0开始,长度为1个BYTE的空间,即MB10。下面程序段实现的功能为每秒读取伙伴CPU地址MB10中数据存储在本地CPU地址MB10中。

下面程序段实现的功能为,将MB20中数据传递给MB100。

上面三段程序都是在PLC_1主程序中编写,下面在PLC_2主程序中编写下面程序。实现的功能为,将MB30中数据传递给MB10。

第四步,下载组态和程序。
两个CPU的组态配置与编程均已完成,分别将其下载至对应的仿真PLC中。将两个CPU转到在线模式并打开监控。在PLC_1程序中将MB100设置为16#5,经过PUT指令,将PLC_1中MB100存储数据传递到PLC_2中MB100,从下图中可知,PLC_2中MB100为16#5。

在PLC_2程序中将MB10设置为,经过GET指令,读取PLC_2中MB10存储数据存储到PLC_1中MB10,从下图中可知,PLC_1中MB10为16#5。

通过上述分析可知,两个PLC之间成功完成S7通信连接,是PUT/GET指令数据访问成功的关键。建立S7连接成功后,就可以通过PUT指令发送数据给伙伴CPU,通过GET指令获取伙伴CPU的数据。
(原创文章,转载请联系获取授权)分享 · 共赢
电气圈,一个有态度的圈子



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

本帖子中包含更多资源

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

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

本版积分规则