在PCS 7中,对于不在同一个多项目中组态的AS之间,可以交换数据。
在S7程序中,你可以通过“SEND_R”和“REC_R”块传送一个32 位REAL值或者单独的32个BOOL量,或者“SEND_BO”和“REC_BO”(128个BOOL值)实现数据交换。这些程序块在“PCS 7 Library V7x”和“PCS 7 Library V8.x”的“COMM”文件夹中。
- 以下过程同样适用于使用S7 F systems组态的F-CPU之间的安全通信。
- 以下过程同样适用于单H-CPU和H系统间的通讯,重要的是要确保单CPU必须是激活方去建立连接,所需TASP号正确组态。
要求
跨多项目的容错连接无法组态。
因此,在需要组态通信的多项目中新增虚拟站点,仅用于后续组态连接。
已经对每个工厂建立了一个多项目,并组态了硬件。两个工厂必须在一个物理网络中。
(以下示例说明两套S7-417 H CPU之间的通讯。对于标准的S7-400 CPU,不需要组态虚拟CPU。可以使用未指定的"S7 连接"。)
1、创建一个虚拟CPU
双方中都需要一个虚拟CPU以组态连接。
- 打开项目。
- 在项目菜单中,选择“Add New Object > SIMATIC H Station”。
- 组态需要创建连接的硬件站点。为了避免组态错误,可以把其他项目的硬件组态先导出再做相应导入。
- 将CP连接到项目已存在的子网上。
- 这个虚拟站不需要S7程序,因为它仅用于组态连接。
警告:绝对不要下载虚拟CPU的硬件。
图 01
2、组态连接
图 02
双方项目中都需要建立当前CPU到虚拟CPU的连接。
- 打开"NetPro" 编辑器。
- 选中SIMATIC H站的“CPU”区域。
- 选中菜单项“InsertCPU > New Connection...”。
- 选择虚拟CPU作为连接伙伴,连接类型选择“Fault-tolerant S7 connection”。
- 在一个项目的连接属性对话框中,选择“Active connection establishment”,但另一个项目中不要选择此选项。
- 如果需要的话修改本地ID号。示例中,CPU 1的本地ID是1,CPU 2的本地ID是2。
图03
图 04
- 检查子网的“S7 subnetwork ID”以及这个站点的TSAP号。两个项目之间,双方项目中每个连接的这两参数都必须是相同的。
注意:由于这里使用了一个指定的S7连接,组态的TSAP号就确定了,不能更改。TSAP号由连接资源和机架/槽号组成。通讯的第一条连接的资源数是10,连接资源会随着后续连接继续增加。连接资源数机架号和槽号由硬件配置来定义,Rack 1对应的号是0,而Rack 2对应的号是2。槽号对应CPU所在的槽号。可以在S7连接的属性中设置子网ID。
如果多项目中的TSAP号不一致,操作如下:
- 持续增加连接直到“连接资源”号一致
- 删除所有为保证TSAP一致而增加的连接
图 05
3、增加数据传送程序
- 双方项目中打开CFC。
- 分别添加一个“SEND_R”和一个“REC_R”块。
- 对每个块的“ID”管脚组态连接ID号。此例中,项目1是1,项目2是2。
- 对功能块的“R_ID”输入管脚组态任意数值。这个数值在一对通讯块"SEND_R" 和"REC_R"上必须要一致。示例中,项目1的发送块和项目2的接收块的“R_ID”是6;项目1的接收块和项目2的发送块的“R_ID”是5。
注意:如果是F通信,R_ID只允许是奇数(内部使用2个ID:R_ID 和 R_ID 1)
图 06