• {{item.name}}
SIMATIC S7-1200系列 {{item.name}}
{{item2.name}}
更多

S7-1200 与 S7-1200S7-1500 同一个项目下 UDP 通信

star star star star star
0 分
  • 使用操作
发布时间:2024年08月08日
  • 0
  • 214
S7-1200 与 S7-1200S7-1500 同一个项目下 UDP 通信

S7-1200 与 S7-1200/S7-1500 同一个项目下 UDP 通信

S7-1200 与 S7-1200 之间的以太网通信可以通过 UDP 协议来实现。本列中使用TSEND_C,TRCV_C指令建立双方的UDP通讯。TSEND_C,TRCV_C指令在两台PLC间必须成对存在。

此外S7-1200 与 S7-1500 在同一个项目下UDP通信也可以参考本文档。

一、概述

硬件:
① 两台 S7-1200 CPU V4.4
② PC(带以太网卡)
③ TP电缆(以太网电缆)

软件:
STEP7 V16

连接关系:

图1. 连接关系

二、建立项目并组态CPU

1. 打开 STEP7 V16 软件并新建项目

在 STEP7 V16的 “Portal 视图” 中创建一个新项目。

2. 添加硬件并命名PLC

在“项目树” 下双击 “添加新设备”,在对话框中选择所使用的S7-1200 CPU添加到机架上,命名为PLC_1。
同样方法再添加通信伙伴的S7-1200 CPU ,命名为 PLC_2。

图2. 添加CPU

3. 组态系统时钟

在CPU 属性中定义的时钟位, 在 “项目树” > “PLC_1” > “设备组态” 中,选中 CPU ,然后在下面的属性窗口中,“属性” > “常规”>“系统和时钟存储器” 下,勾选“启用系统存储器字节”及“启用时钟存储器字节”。同样方式,启用PLC_2 CPU的系统和时钟存储器位。

A screenshot of a computer

Description automatically generated

图3. 系统位与时钟位

4. 组态PROFINET通讯接口

在CPU的属性窗口中,“属性” > “常规”>“PROFINET接口[X1]”>“以太网地址”下,点击添加新子网,分配PLC_1 CPU   IP地址:192.168.0.2,子网掩码:255.255.255.0。

同样方式,为PLC_2 CPU,分配IP:192.168.0.3,子网掩码:255.255.255.0 。

A screenshot of a computer

Description automatically generated

图4. 组态PROFINET接口

5. 分别编译两个CPU的硬件组态并下载 。

在设备视图下,“编辑”菜单 > “编译”。

在设备视图下,“在线”菜单 > “下载到设备”。

三、在 PLC_1  CPU中调用TSEND_C、TRCV_C指令

1. 建立通讯用DB

在项目树下添加新块,分别命名为PLC1_Rcv,PLC1_Send。

在 DB 块中建立用于接收及发的数据数组(本例中建立100个byte)。

建立完成 DB 后,右键点击 DB 块,在打开的快捷菜单中打开 DB 的属性,去除 DB 的“优化的块访问属性”,见图6。

A screenshot of a computer program

Description automatically generated

图5. 建立通讯用DB块

图6. 去除DB块的优化属性

2. 建立通讯连接

从指令表(图7)加入指令块 TSEND_C 到主程序中。

A screenshot of a computer

Description automatically generated

图7. 加入 TSEND_C功能块

点击指令块上的开始组态按钮,打开“连接参数”组态窗口。

A screenshot of a computer

Description automatically generated

图8. 组态连接参数

图8中的参数:

  • 端点:连接伙伴侧选择PLC_2 CPU。
  • 连接类型:UDP,此处使用UDP通讯。
  • 连接ID:不能和CPU中的其它通讯ID冲突 。
  • 连接数据:此处本地及伙伴处新建连接。
  • 端口: 本例中双方通讯端口都为2000。

3. 配置 TSEND_C 指令

A screenshot of a computer

Description automatically generated

图9. TSEND_C功能块

参数说明:

输入接口参数:

  • REQ:此处使用时钟脉冲信号,上升沿执行发送作业。
  • LEN:发送数据长度,此值必须小于或者等于DATA中指定的发送区长度,单位:字节(此参数默认为隐藏参数,可以点击功能块底部箭头显示)。示例中发送10个Byte到接收区。
  • DATA:指向发送数据区的指针。p#db3.dbx0.0 byte 20:起始地址为db3.dbx0.0,长度为20个byte。此处指向的地址及长度必须小于或者等于DB3块中的建立的数据长度。

输出接口参数:

  • DONE:发送作业成功完成时,会显示一个循环周期的1。抓取DONE位状态程序见诊断程序中的图26。
  • ERROR:当功能块出现错误时为1。
  • STATUS:功能块的运行状态。错误状态的抓取程序见诊断程序中的图27。

4. 配置 TRCV_C 指令

从指令表(图10)加入指令块 TRCV_C 到主程序中。

图10. 加入 TRCV_C 功能块

点击指令块上的开始组态按钮,打开“连接参数”组态窗口,并选择图8中组态好的参数块。

图11. 组态连接参数

配置TRCV_C指令

A screenshot of a computer

Description automatically generated

图12. TRCV_C 功能块

参数说明:

输入接口参数:

  • EN_R:启用接收功能 ,此处设置为1,一直打开接收。
  • LEN:接收数据长度,必须和通讯伙伴的发送长度设置一致。单位:字节(此参数默认为隐藏参数,可以点击功能块底部箭头显示)。
  • DATA:指向接收数据区的指针。p#db4.dbx0.0 byte 20:起始地址为db4.dbx0.0,长度为20个byte。此处指向的地址及长度必须小于或者等于DB4块中的建立的数据长度。

输出接口参数:

  • DONE:接收作业成功完成时,会显示一个循环周期的1。抓取DONE位状态程序见诊断程序中的图28。
  • RCVD_LEN:接收到的字节数。
  • ERROR:当功能块出现错误时为1。
  • STATUS:功能块的运行状态。错误状态的抓取程序见诊断程序中的图29。

四、在 PLC_2  CPU中调用TSEND_C、TRCV_C指令

1. 建立通讯用DB

在项目树下添加新块,分别命名为PLC2_Rcv,PLC2_Send。

在 DB 块中建立用于接收及发的数据数组(本例中建立100个byte)。

建立完成 DB 后,右键点击 DB 块,在打开的快捷菜单中打开 DB 的属性,去除 DB 的“优化的块访问属性”,见图14。

A screenshot of a computer

Description automatically generated

图13. 建立通讯用DB块

图14. 去除DB块的优化属性

2. 配置 TSEND_C 指令

从指令表(图14)加入指令块 TSEND_C 到主程序中。

图15. 加入 TSEND_C功能块

点击指令块上的开始组态按钮,打开“连接参数”组态窗口,并选择图8中组态好的参数块。

图16. 组态连接参数

配置TSEND_C指令

A screenshot of a computer

Description automatically generated

图17. TSEND_C功能块

参数说明:

输入接口参数:

  • REQ:此处使用时钟脉冲信号,上升沿执行发送作业。
  • LEN:发送数据长度,此值必须小于或者等于DATA中指定的发送区长度,单位:字节(此参数默认为隐藏参数,可以点击功能块底部箭头显示)。示例中发送10个Byte到接收区。
  • DATA:指向发送数据区的指针。p#db3.dbx0.0 byte 20:起始地址为db3.dbx0.0,长度为20个byte。此处指向的地址及长度必须小于或者等于DB3块中的建立的数据长度。

输出接口参数:

  • DONE:发送作业成功完成时,会显示一个循环周期的1。抓取DONE位状态程序见诊断程序中的图26。
  • ERROR:当功能块出现错误时为1。
  • STATUS:功能块的运行状态。错误状态的抓取程序见诊断程序中的图27。

3. 配置 TRCV_C 指令

从指令表(图17)加入指令块 TRCV_C 到主程序中。

图18. 加入 TRCV_C 功能块

点击指令块上的开始组态按钮,打开“连接参数”组态窗口,并选择图8中组态好的参数块。

A screenshot of a computer

Description automatically generated

图19. 组态连接参数

配置TRCV_C指令

图20. TRCV_C 功能块

参数说明:

输入接口参数:

  • EN_R:启用接收功能 ,此处设置为1,一直打开接收。
  • LEN:接收数据长度,必须和通讯伙伴的发送长度设置一致。单位:字节(此参数默认为隐藏参数,可以点击功能块底部箭头显示)。
  • DATA:指向接收数据区的指针。p#db4.dbx0.0 byte 20:起始地址为db4.dbx0.0,长度为20个byte。此处指向的地址及长度必须小于或者等于DB4块中的建立的数据长度。

输出接口参数:

  • DONE:接收作业成功完成时,会显示一个循环周期的1。抓取DONE位状态程序见诊断程序中的图28。
  • RCVD_LEN:接收到的字节数。
  • ERROR:当功能块出现错误时为1。
  • STATUS:功能块的运行状态。错误状态的抓取程序见诊断程序中的图29。

五、检查通讯连接DB块

1. PLC_1中的连接DB块检查

在“程序块”-“系统块”-“程序资源”下,双击打开DB块“PLC_1_Send_DB”。

图21. 检查通讯连接DB

红色框内填写通讯伙伴的IP(此处为PLC_2的IP地址)和端口。

2. PLC_2中的连接DB块检查

在“程序块”-“系统块”-“程序资源”下,双击打开DB块“PLC_2_Receive_DB”。

图22. 检查通讯连接DB

红色框内填写通讯伙伴的IP(此处为PLC_1的IP地址)和端口。

3. 下载两个CPU的程序

六、通讯诊断

1. 通讯数据查看

图23. 通讯数据

2. 连接诊断

将 1200CPU 转至在线状态,打开“网络视图”,可以在“连接”选项卡中看到端口状态。

图24. 连接状态

将鼠标选中连接,在巡视窗口中,可以检查连接的具体状态。

图25. 连接详细状态

3. 利用功能块诊断通讯状态

A diagram of a programmable program

Description automatically generated with medium confidence

图26. 检查已发送次数

A computer program with a program code

Description automatically generated with medium confidence

图27. 抓取发送错误代码

图28. 抓取接收次数及最后一次的接收长度

A screenshot of a computer program

Description automatically generated

图29. 抓取接收错误代码

剩余80%未阅读,请登录查看大全章节内容

  • 评论
更多
  • 分享

    扫码分享

0元领课点我

信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。