文中根据项目实际需求介绍了Siemens PCS7系统中对于不在同一个多项目中组态的AS-AS之间,建立通讯连接实现数据交换的过程。
此实施方案是基于西门子推荐方案的基础上,采用比较简便和高效的通讯方式来实现不同系统之间数据的传递和交互。
软件平台为PCS7 V8.0,硬件通讯主体包括Siemens CPU 417 和 工业通讯卡CP443-1,众所周知,西门子通讯建立是比较灵活的,既可以用PUT/GET做单边通讯,也可以用BSEND/BRCV做双边通讯,文中案例是基于BSEND/BRCV双边通讯的通讯方式来实现数据传递和交互。在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”文件夹中。
注意事项:此通讯建立组态方式适应于单CPU之间的通讯以及单CPU和对方冗余CPU的通讯,不适应于冗余CPU和冗余CPU之间的容错通讯,冗余CPU之间的容错通讯需要在多项目中采样西门子推荐方案(插入虚拟站点的方式)来实现。因现场需求增加一组动力设备,相关启停和连锁控制功能就近接入系统A, 但是某些连锁条件需要从系统B中采集信号,由于实际现场系统A和系统B距离过远,加上系统A和系统B分别在两个不同的项目下集成的,那么如何实现不同多项目中PCS7系统信号的交互和传递呢成了一个棘手的问题?首先是系统架构图如下图所示,2套系统分别在不同多项目的ES中集成而来。
西门子常规的推荐方案是在系统A中将系统B的硬件信息导入 (导入到A系统后务必不要下载B系统硬件信息),在系统A侧建立A和系统B的 S7 connection通讯连接,同样在系统B中导入系统A的硬件信息,并在系统B中建立系统A的S7 connection通讯连接,然后分别在系统A和系统B中调用通讯块来实现数据传递,这样的方式相对比较复杂,还要注意不同项目导入后首先需要对网络进行merge,而且要注意不能改变原项目中已经存在的通讯连接。根据现场实际生产情况,文中采用比较简单,灵活高效的通讯方式在工厂运行过程中,实现不同项目之间的数据交换,注意此通讯建立过程可以在CPU运行时进行增加,保险起见,还是建议把相关逻辑备份好后进行。文中采用PLC是两套不同项目下所用的CPU 417,通讯建立详细过程如下所述。首先在SIMATIC Manager中打开A系统的项目并进入网络组态界面,选中通讯相关的CPU,然后在下方空白区域右键新增一个通讯连接,通讯对象指定为unspecified的,通讯协议为S7 connection,然后点击OK按钮,如下图1所示。若是新建立的项目,需要相关硬件系统都组态好后,执行同样的组态过程即可。
图1 组态未指定的通讯连接
在弹出的S7 connection属性对话框中,勾选 Establish an active connection,设置Partner address: 10.145.143.150 (B System PLC IP 地址),如图2所示
图2 设置S7 connection连接参数
点击 'Address Details' ,在弹出来的对话框设置 local 和Partner 的 connection resource分别为16和15,(此处数字可以根据需求选择,但必须要保证一致即可)另外还需要设置partner的Rack/Slot号,此处按照项目实际位置进行设置即可,如图3所示,点击 OK即可关闭该对话框。
此处总结一下,就是特别需要注意此处的TSAP号码,对于两个系统要完全对应,也就是此系统中local的TSAP是对面系统中Partner号,此系统中partner中TSAP号是对面local的TSAP号。否则,通讯无法正常建立并实现数据传递和交互。
为了直观显示和对比B系统中此处通讯信息设置,相关设置如图4所示。
图3 设置A系统Address Details参数
图4 设置B系统Address Details参数
从图示3和图示4得知,此处TSAP号码已经实现一一对应关系,A系统中和B系统中的TSAP号码彼此正好是镜像的关系。此时,A系统通讯组态设置已经创建完成,需要编译和下载到A系统CPU中。先在网络组态界面点击按钮编译并保存,编程检查无错误后,为了能够实现CPU在线运行时通讯组态下载,如下步骤要严格按照STEP1到STEP3的执行过程,首先是在1处点中CPU,然后在2处选择新建立的通讯连接,在3处右键选择download selected connection,这样通讯已经下载成功。
图5 通讯新建连接编译和下载
对于系统B而言,按照以上系统A的方式进行配置,配置完成后同样进行编译和下载,配置过程中关注TCPIP地址和TSAP号即可。到此两个系统中的通讯组态配置完毕,可以在网络组态界面在线查看通讯是否已经建立,如图6所示。(图6为系统B中进行查看结果,系统A中查看亦可)
图6 在线查看通讯是否成功建立
在两个系统通讯已经建立的基础上,利用PCS7中通讯系统功能块实现对模拟量和布尔量的信号传递和交互,此处简单起见就布尔量信号传递举例说明。在系统A中新增通讯系统功能块SEND_BO和REC_BO,在上述通讯连接(系统A)中的ID号需要在功能块中正确配置,如此处ID号码需要配置为7,对于R_ID号码,需要在两个系统中配置一样即可。如图7所示。自系统A中的SEND_BO功能块上模拟前3个变量值为1进行简单测试,那么在系统B中的REC_BO功能块上应该会监控到前三个变量同样为1。这样就表明通讯数据已经在两个系统中成功传递。
组态详细步骤:
双方项目中打开CFC。
分别添加一个“SEND_BO”和一个“REC_BO”块。
对每个块的“ID”管脚组态连接ID号。此例中,项目A是7,项目B是3。
对功能块的“R_ID”输入管脚组态任意数值。这个数值在一对通讯块'SEND_BO' 和'REC_BO'上必须要一致。示例中,项目A的发送块和项目B的接收块的“R_ID”是9;项目A的接收块和项目B的发送块的“R_ID”是10。
另外,文中并没有对模拟量进行举例说明,模拟量的做法等同,仅仅是调用不同的功能块而已,此处不再赘述。
图7 系统A中通讯功能块配置
同理,在系统B中新增通讯系统功能块SEND_BO和REC_BO,在上述通讯连接(系统B)中的ID号需要在功能块中正确配置,如此处ID号码需要配置为3,对于R_ID号码,需要在两个系统中配置一样即可。如图8所示。
图8 系统B中通讯功能块配置
总结:
文中所述的通讯方式非常简洁并灵活的实现不同系统下AS之间的通讯建立过程,而且可以在CPU不停机的情况下进行实施,相对于西门子官方推荐的方式组态更加高效。
但是对于冗余系统之间的通讯建立过程,必须要按照官方推荐的方式,即在需要组态通讯的多项目中导入彼此系统硬件信息,仅用于后续组态连接方式进行配置。