作者 | 主题 |
---|---|
火车补胎工程师 游民 经验值:73 发帖数:4 精华帖:0 |
楼主 2020-08-08 17:09:57
主题:西门子1500与200smart 以太网通讯 西门子1500与200SMART通信 西门子1500与75台200smart 以太网通讯
火车补胎工程师
目录 西门子1500与200SMART通信... 1 西门子1500与75台200smart 以太网通讯... 1 注意结尾有彩蛋!... 1 一、S7通信描述... 1 01打开软件... 2 02添加新连接... 3 03组态部分完成... 3 04 GET/PUT 指令... 3 05 S7 连接传递数据... 3 06 PUT/GET 指令帮助文件内容... 6 总结:... 7 二、以下是关于200smart和1500通信... 9 三、关于S7连接数量问题:... 11
工作中遇到 wincc 需要与 75 个 S7-200SMART 通讯,每个 S7-200SMART 需要有 1200 多个字 节传给 wincc。经过与西门子工程师分析讨论做出如下方案:wincc 选用 wincc7.2+upd13,然后选择一台 S7-1500 CPU1511-1PN 做主站,S7-1500 使用 S7 通讯(put,get 指令)与 S7-200SMART 通讯。因为 S7-1500 CPU1511-1PN 的 s7 连接资源只 有 54 个,而我们需要通讯的 S7-200SMART 有 75 个,所以选择 1500 与 54 个 S7-200SMART 通讯,然后选择其中的21台s7-200smart通过PUT/GET指令与另外剩余的21台S7-200SMART 通讯然后在传给 S7-1500。 注意结尾有彩蛋! 对于S7-1500 CPU模块,可以建立的S7 路由的最大可用连接数量与接口类型和配置无关。 一、S7通信描述 下表中关于S7-1500 CPU模块的数据基于V1.8固件。 模块
最大连接数量
S7路由连接数量
CPU 1511-1 PN / CPU 1511F-1 PN
96
16
CPU 1511C-1 PN
95
16
CPU 1512C-1 PN
128
16
CPU 1513-1 PN / CPU 1513F-1 PN
128
16
CPU 1515-2 PN / CPU 1515F-2 PN
192
16
CPU 1516-3 PN/DP / CPU 1516F-3 PN/DP
256
16
CPU 1517-3 PN/DP / CPU 1517F-3 PN/DP
320
64
CPU 1518-4 PN/DP / CPU 1518F-4 PN/DP
384
64
1) 通过CPU内置的集成口和所连接的CP/CM。 2) 通过PROFIBUS最多支持16个S7路由连接。 01打开软件 1、TIA 软件中需要做的项目内打开设备和网络,选择“网络视图”点选“连接”选择“S7” 。 点击 CPU 以太网口,右键属性,设定 PLC 的 IP 地址。
02添加新连接 2、右键 PLC,选择“添加新连接”,选择添加,需要与多少 PLC 通讯就添加多少个,软件会 自动分配 PLC 的本地 ID 地址,这个地址很重要,后面用 PUT/GET 指令的时候需要用到这个 地址。然后定义每个连接的属性。属性中要定义 IP 地址,需要与主 PLC 在一个网段,为了 好区分和直观,还可以自己定义连接名称。这样连接就完成了。 03组态部分完成 3、以上完成后,组态部分就完成了。为了通讯,我们还需要在程序里面对需要传递的数据 做 GET/PUT 程序。 04 GET/PUT 指令 4、对于同一个 S7 连接子站的 GET/PUT 指令,同一时间只能触发一个,如果一个指令没有 完成,触发了另外一个指令,则会报错;但是对于不同 S7 连接子站的GET/PUT 指令则没有 这样的要求,之间不会有干扰和联系。 05 S7 连接传递数据 5、由于每一个 S7 连接传递数据在 1200 字节左右,但经过试验,每条指令最多能传递 220 个字节,传递字节超过这个数量,则指令会报错。所以我一个 S7 连接用了 5 个 GET 指令, 1 个 PUT 指令(其中 21 个站还通过GET/PUT 指令读取了另外 21 个站的数据,所以这 21 个 站与主站的通讯数据是正常的二倍,所以是 10 条 GET,2 条 PUT)。其中第一条指令由系统状 态 M1.3“clock—2HZ”触发,然后第一条指令的完成位触发第二条指令,第二条指令的完成 位触发第三条指令,以此类推。最后然所有的错误位置位一个脱机状态,有错误位则认为脱 机,数据不可用。 06 PUT/GET 指令帮助文件内容 6、以下为 PUT/GET 指令帮助文件内容。 总结: 本连接比较简单,指令也比较简单。做一个连接一个指令非常容易。但是多条 指令多个连接的时候一定要注意指令’GET/PUT 的背景数据块,一定不相同,否 则会造成接收到或者发送出去的数据是错误的。我的做法是建了一个功能块,功能块里面用的多个 GET/PUT 指令选择的都是不 同的多重背景数据块。然后对于多个连接用自己的背景数据块调用功能块。以下是我每个站的背景数据块: 二、以下是关于200smart和1500通信 郭继泉-YuRiCo优瑞科: 郭继泉-YuRiCo优瑞科: DB1变成了公共区域 扫描的时候是一个一个的扫描的,DB1.DBX2000对应200SMART的V2000
郭继泉-YuRiCo优瑞科: DB1.DBX2000对应200SMART的V2000,传递给DB100.DBX 0.0 长度80byte 郭继泉-YuRiCo优瑞科: 这样可以不用考虑DB1内的区域划分
郭继泉-YuRiCo优瑞科: DB100的变量数量要大于长度80byte,DB1里面还要不要建变量不确定
郭继泉-YuRiCo优瑞科: [图片] 郭继泉-YuRiCo优瑞科: 点击这个图标开始对应PLC的地址组态 三、关于S7连接数量问题: 郭继泉-YuRiCo优瑞科: 关于S7连接数量,预留10个,实际可以连接88个。
郭继泉-YuRiCo优瑞科: cpu连接资源里面提到的预留HMI 4个,不是只能连接四个 上图是我对26台hmi的组态,完全没问题。
郭继泉-YuRiCo优瑞科: 动态的是要占用IO站数量。如果你连接了87个HMI,那么久不能连接IO从站了
郭继泉-YuRiCo优瑞科: 这个说法各有千秋,总体来说S7的协议是非常强大的。 |