S7 通信分为单边通信和双边通信,双边通信可以用 BSEND/BRCV 或 USEND/URCV 指令,BSEND/BRCV 指令比单边通信的 PUT/GET 指令传送更多的数据。
S7-1500 既支持 S7 单边通信,也支持 S7 双边通信。
关于 S7 单边通信参考文档:S7-1500 S7 单边通信
本文介绍 S7-1500 之间通过 BSEND/BRCV 方式进行双边通信的组态编程步骤,用于实现两台 S7-1500 都在不同项目中组态的场景。
实验使用的主要硬件和软件如下:
硬件:
CPU1:6ES7 516-3FN01-0AB0,V2.9
CPU2:6ES7 510-1SJ01-0AB0,V2.9
注:本例中使用的2块 CPU 为故障安全型,S7 通信实验的做法与标准 CPU 完全相同。
软件:
TIA Step7 V17
使用 TIA Portal 创建一个新项目,组态第一台 1516 CPU,并设置 IP 地址,如图1所示。
图 1 创建第一台 S7-1500,并设置 IP 地址
在"网络视图"中,点中左上角的"连接"图标,连接框中选择"S7连接",然后选中 S7-1500 CPU,右键选择"添加新的连接",如图2所示。
图 2 添加新连接
在“添加新连接”的对话框中,选择连接对象"未指定",选择本地接口"PLC_1,PROFINET接口_1[X1]",默认为"主动建立连接",点击"添加"按钮,这时在"信息"栏能看到 S7 连接已添加的信息,点击"关闭"按钮,完成新连接的创建,如图3所示。
图 3 创建 S7 连接
在"网络视图"中间栏的"连接"页面中,可以看到已经创建的"S7_连接_1"。
选择“连接”页面中的第一行,在下方的连接属性“常规”中,手动输入伙伴设备的 IP 地址,如图4所示。
图 4 1516 CPU 侧的 S7 连接常规参数
在“本地 ID”属性中,设置通讯连接的 ID 号,本地 ID 在本地 PLC 中必须是唯一的,在后续的通信编程中需要指向这个 ID,这里 1516 CPU 的 ID=W#16#100,如图5所示。
图 5 1516 CPU 侧的 S7 连接本地 ID 参数
在“地址详细信息”属性中,设置通讯双方的 TSAP 号,伙伴的机架/插槽设置为 1510SP CPU 所在的机架号和插槽号,在这里是0和1。因本例中使用 S7 双边连接,连接资源需设置为10,如图6所示。
图 6 1516 CPU 侧的地址详细信息
在“特殊连接属性”中,可以选择是否为主动建立连接。通信的双方只能有一方是主动建立连接,另一方是被动建立连接,这里 1516 CPU 是主动建立连接,如图7所示。
图 7 1516 CPU 侧的 S7 连接特殊连接属性
使用 TIA Portal 创建另一个新项目,组态第二台 1510SP CPU,并设置 IP 地址,如图8所示。
图 8 创建第二台 S7-1500,并设置 IP 地址
在"网络视图"中,点中左上角的"连接"图标,连接框中选择"S7连接",然后选中 S7-1500 CPU,右键选择"添加新的连接",如图9所示。
图 9 添加新连接
在“添加新连接”的对话框中,选择连接对象"未指定",选择本地接口"PLC_1,PROFINET接口_1[X1]",默认为"主动建立连接",点击"添加"按钮,这时在"信息"栏能看到 S7 连接已添加的信息,点击"关闭"按钮,完成新连接的创建,如图10所示。
图 10 创建 S7 连接
在"网络视图"中间栏的"连接"页面中,可以看到已经创建的"S7_连接_1"。
选择“连接”页面中的第一行,在下方的连接属性“常规”中,手动输入伙伴设备的 IP 地址,如图11所示。
图 11 1510SP CPU 侧的 S7 连接常规参数
在“本地 ID”属性中,设置通讯连接的 ID 号,本地 ID 在本地 PLC 中必须是唯一的,在后续的通信编程中需要指向这个 ID,这里 1510SP CPU 的 ID=W#16#100,如图12所示。
图 12 1510SP CPU 侧的 S7 连接本地 ID 参数
在“地址详细信息”属性中,设置通讯双方的 TSAP 号,伙伴的机架/插槽设置为 1516 CPU 所在的机架号和插槽号,在这里是0和1。因本例中使用 S7 双边连接,连接资源需设置为10,如图13所示。
图 13 1510SP CPU 侧的地址详细信息
在“特殊连接属性”中,可以选择是否为主动建立连接。通信的双方只能有一方是主动建立连接,另一方是被动建立连接,这里 1510SP CPU 是被动建立连接(不勾选),如图14所示。
图 14 1510SP CPU 侧的 S7 连接特殊连接属性
配置完网络连接,双方都编译保存并下载。
如果通讯连接正常,连接的在线状态为绿色图标,如图15和16所示。
图 15 1516 CPU 在线连接状态
图 16 1510SP CPU 在线连接状态
在 PLC_1 站中,创建用于发送和接收的数据块,定义为5个字节的数组,如图17所示。
图 17 创建数据传输区
在 1516 CPU 侧,打开 OB1 中,从"指令" >"通信" >"S7 通信">"其它"下,调用 BSEND、BRCV 通信指令,如图18所示。
图 18 1516 CPU 侧发送/接收指令调用
BSEND指令的各个参数说明如表1所示:
表1 BSEND指令参数
BRCV指令的各个参数说明如表2所示:
表2 BRCV指令参数
在 PLC_2 站中,创建用于发送和接收的数据块,定义为5个字节的数组,如图19所示。
图 19 创建数据传输区
在 1510SP CPU 侧,打开 OB1 中,从"指令" >"通信" >"S7 通信">"其它"下,调用 BSEND、BRCV 通信指令,如图20所示。
图 20 1510SP CPU 侧发送/接收指令调用
注:BSEND/BRCV 指令的各个参数说明参见表1和表2。
两台 PLC 的项目编译无错误后,分别将程序下载到各自的 CPU 中。1516 CPU 侧触发 M0.0 时,向1510SP CPU 发送一次数据;1510SP CPU 侧触发 M10.0 时,向1516 CPU 发送一次数据,如图21所示。
图 21 通信测试