一 | 概述 |
S7通讯作为西门子最主要的通讯方式之一,通常用于CPU与CPU之间的通讯,相信不少小伙伴都有使用过。但是,不知道大家有没有遇到过数据长度过大,通讯异常报错的问题,您又是如何处理的呢?接下来分享下为什么会有限制,应该如何“突破”限制?
从表中可以看出西门子PLC PDU大小一般会有三个档次240、480、960; 使用S7通信时,PDU大小的确认遵从“木桶短板理论”,即取通讯能力最弱的;例如S7-1200 最大PDU大小240,S7-1500 最大PDU是960,如果S7-1200与S7-1500之间进行S7通信,那么最大PDU应为240,而不是960,其它同理;
知道了PDU长度后,那么一次性读取的字节长度,就是在PDU的基础上减去18,这个18是指包头包尾会有18个字节,这样我们就知道了S7-1200一次最大能读取222个字节(240-18=222),S7-1500这样的PLC,我们一次性最大是可以读取942个字节的(960-18=942),一次性能读取的字节越长,越能提高上位机的通信效率。详细块大小参见下表:
所使用的 SD_i、RD_i、ADDR_i 参数的数量
数据块大小
指令
1
2
3
4
240 (S7-300) | PUT/GET/ | 160 | - | - | - |
240(S7-300,通过集成的接口) | PUT | 212 | - | - | - |
GET | 222 | - | - | - | |
USEND | 212 | - | - | - | |
240 (S7-400) | PUT | 212 | 196 | 180 | 164 |
GET | 222 | 218 | 214 | 210 | |
USEND | 212 | - | - | - | |
480 (S7-400) | PUT | 452 | 436 | 420 | 404 |
GET | 462 | 458 | 454 | 450 | |
USEND | 452 | 448 | 444 | 440 | |
240 (S7-1200) | PUT | 212 | 196 | 180 | 164 |
GET | 222 | 218 | 214 | 210 | |
960 (S7-1500) | PUT | 932 | 916 | 900 | 884 |
GET | 942 | 938 | 934 | 930 | |
USEND | 932 | 928 | 924 | 920 |
三 | 如何“突破”长度限制 |
既然单次读取有长度限制,那实际应用中应该如何“突破”这种限制呢,毕竟随着工业4.0、数字化推进,数据采集的需求也是越来越大,CPU与CPU之间数据通讯长度也越来越长;有心的朋友可能有答案了,一次不行那就多读次,这不就“突破“了吗?对了,答案就是通过轮询的方式,多次进行读写操作;
例如:S7-1200 PLC 做客户端从服务端PLC读取516个字节到DB200数据块中;
第一步在程序中,使用3个GET指令,分别对应不同的请求和状态返回值
image-20240411145919649
编写轮询程序,可通过脉冲对字节进行循环左移操作,当该字节对应不同值时,就输出不同的GET请求;
image-20240411150343498
循环左移开始后,该循环值将按照1,2,4,8,16..进行向左移位,根据不同值判断不同的GET请求;当该值等于8时,即第四次左移后,对该值重新赋0,进行下一周期轮询;
image-20240411150933187
实际运行效果
vmware_mlaJPI25su
- 西门子S7-1200与200smart进行PN通讯全过程 2024-05-24
- 如何用手机端访问西门子S7-1200 PLC Web 服务器 2024-05-24
- 西门子S7-1200 PLC模块如何安装和拆卸? 2024-05-24
- 初学者必看:西门子PLC通讯知识与常见问题汇总 2024-05-24
- 西门子Smart line系列触摸屏如何与S7-1200PLC的时间同步 2024-05-24
- 西门子S7-1200 PLC的运动控制指令有哪些?使用时有哪些注意事项? 2024-05-24
- 西门子S7-1200上升沿和下降沿信号使用方法及应用实例 2024-05-24
- 一起学习使用S7-200 smart子程序 2024-05-24
- 西门子PLC S7-200SMART Modbus TCP通讯如何设置 2024-05-24
- 博途V17中导出DB块的三种方法,你用的那种? 2024-05-24