工作中遇到wincc需要与75个S7-200SMART通讯,每个S7-200SMART需要有1200多个字节传给wincc。经过与西门子工程师分析讨论做出如下方案:wincc选用+upd13,然后选择一台S7-1500CPU1511-1PN做主站,S7-1500使用S7通讯(put,get指令)与S7-200SMART通讯。因为S7-1500CPU1511-1PN的s7连接资源只有54个,而我们需要通讯的S7-200SMART有75个,所以选择1500与54个S7-200SMART通讯,然后选择其中的21台s7-200smart通过PUT/GET指令与另外剩余的21台S7-200SMART通讯然后在传给S7-1500。
以下为过程:
01
1、TIA软件中需要做的项目内打开设备和网络,选择“网络视图”点选“连接”选择“S7”。

02
2、右键PLC,选择“添加新连接”,选择添加,需要与多少PLC通讯就添加多少个,软件会自动分配PLC的本地ID地址,这个地址很重要,后面用PUT/GET指令的时候需要用到这个地址。然后定义每个连接的属性。属性中要定义IP地址,需要与主PLC在一个网段,为了好区分和直观,还可以自己定义连接名称。这样连接就完成了。
03
3、以上完成后,组态部分就完成了。为了通讯,我们还需要在程序里面对需要传递的数据
做GET/PUT程序。
04
4、对于同一个S7连接子站的GET/PUT指令,同一时间只能触发一个,如果一个指令没有完成,触发了另外一个指令,则会报错;但是对于不同S7连接子站的GET/PUT指令则没有这样的要求,之间不会有干扰和联系。
05
5、由于每一个S7连接传递数据在1200字节左右,但经过试验,每条指令最多能传递220个字节,传递字节超过这个数量,则指令会报错。所以我一个S7连接用了5个GET指令,1个PUT指令(其中21个站还通过GET/PUT指令读取了另外21个站的数据,所以这21个站与主站的通讯数据是正常的二倍,所以是10条GET,2条PUT)。其中第一条指令由系统状态“clock—2HZ”触发,然后第一条指令的完成位触发第二条指令,第二条指令的完成位触发第三条指令,以此类推。最后然所有的错误位置位一个脱机状态,有错误位则认为脱机,数据不可用。
06
6、以下为PUT/GET指令帮助文件内容。
总结:本连接比较简单,指令也比较简单。做一个连接一个指令非常容易。但是多条指令多个连接的时候一定要注意指令’GET/PUT的背景数据块,一定不相同,否则会造成接收到或者发送出去的数据是错误的。我的做法是建了一个功能块,功能块里面用的多个GET/PUT指令选择的都是不同的多重背景数据块。然后对于多个连接用自己的背景数据块调用功能块。以下是我每个站的背景数据块: