s7通信协议之你不知道的事儿

author author     2022-12-26     223

关键词:

在电气学习的路上,西门子PLC应该是我的启蒙PLC,从早期的S7-300/400 PLC搭建Profibus-DP网络开始接触,到后来的S7-200Smart PLC,再到现在的S7-1200/1500 PLC博途软件,基本上西门子的每款PLC都接触并使用过。
在上位机开发的路上,西门子PLC也一直是我钟爱的一个品牌,仍然记得刚开始做的第一个上位机就是基于S7-300 PLC的S7协议。最近又将S7协议巩固了一遍,发现了一些自己之前都不知道的事,这才发现,西门子S7协议是非常强大的一个协议。
1. S7协议之布尔操作
对于布尔操作,很多协议都有,但是这里的布尔操作是指寄存器布尔,比如DB100.DBX0.0,很多时候,我们都是通过先读取DB100.DBB0的值,再通过位运算结果,写入到DB100.DBB0中,实现DB100.DBX0.0的操作,但是这种方式有弊端,第一:每次操作一个布尔值都需要与PLC进行两次数据交互,第二:安全性和稳定性无法保障,你不知道在你读取和写入之间,这个字节的值是否已经发生了改变。
这样的问题也存在于Modbus协议的寄存器位操作,如40001.05,三菱、欧姆龙的寄存器位操作,如D100.06、W12.04,给上位机开发者带来很多苦恼。
但是S7协议支持直接位操作,有专门的报文指令实现这样的功能。
2. S7协议之PDU读取
大部分人都知道S7协议一次性读取有限制,但是具体是多少?怎么计算出来的?
S7协议的一次性读取长度是根据PDU计算出来的,这个PDU的值是来自于PLC本身,不同型号的CPU,它的PDU是不一样的,大家可以通过KepServer结合PLC来测试,如果手头没有PLC,可以关注本公众号的一篇文章《手把手教你搭建西门子PLC仿真环境》。
技术图片
图表 1 S7-1200的PDU

技术图片
图表 2 S7-1500的PDU

经过研究发现,西门子PLC的PDU大小是和CPU息息相关的,一般会有240、480、960三个档次,知道PDU之后,那么一次性读取的字节长度,就是在PDU的基础上减去18,这个18是指包头包尾会有18个字节,这样我们就知道了一般的PLC,一次性能读取222个字节(240-18=222),但是对于S7-1516这样的PLC,我们一次性是可以读取942个字节的(960-18=942),这个一次性能读取的字节越长,越能提高上位机的通信效率。
但是刚刚的方式是通过KepServer测试的,实际开发过程中,该怎么获取CPU的PDU呢,实际上在建立连接的第二次握手时,返回的报文中就包含PDU的值。.
技术图片
图表 3 S7-1200 PDU报文
第二次握手返回的报文长度是27个字节,最后两个字节就是PDU的值,上图展示的是S7-1200 PLC返回的报文,0和240的组合即为240。
对于S7-1500,我这里也做了一下测试,结果如下,返回结果为3和192,3和192的组合恰好是960(960=3*256+192)。

技术图片

图表 4 S7-1500 PDU报文
虽然PDU是由硬件做了限制,但是我们可以通过软件的方式,实现大量数据的读取,只需要在底层做一些封装即可。做了一下测试,针对S7-1200和S7-1500同时读取M区的8000个字节的耗时比较,S7-1200耗时800多ms,S7-1500耗时仅需200ms,由此可见,硬件对通信的重要性。
技术图片
图表 5 S7-1200通信耗时测试
技术图片
图表 6 S7-1500通信耗时测试
3. S7协议之多组读取
西门子S7协议其中的一个重要体现就在于可以同时读取很多个不同的存储区,最大支持19种,总共读取长度仍然受PDU的限制。
对于很多其他的通信协议,当我们遇到数据变量比较零散,同时读取多个存储区或者一个存储区多个不同部分的时候,我们只能针对每个存储区或者每块区域做一个数据请求,但是西门子S7协议可以解决这样的问题。
这里我们仍然以实验测试为例,体验多组读取带来的美妙体验。
假设我们的通信组配置如下:
通信组01:读取I区从0开始的1个字节
通信组02:读取Q区从0开始的1个字节
通信组03:读取M区从0开始的200个字节
通信组04:读取M区从500开始的50个字节
通信组05:读取M区从1000开始的60个字节
通信组06:读取DB100从0开始的20个字节
通信组07:读取DB100从20开始的20个字节
通信组08:读取DB100从40开始的20个字节
通信组09:读取DB100从60开始的20个字节

我们采用常用S7-1200PLC,基于CMS配置软件实现配置之后,开始通信测试,首先我们选择的是单组读取的方式,就是针对每个组,依次进行读取,结果如下,耗时大约200ms,这个时间应该相对来说还是比较正常的。
技术图片
图表 7 S7-1200PLC单组读取
紧接着,我将读取方式改成了多组读取,再进行测试发现结果如下:
技术图片

图表 8 S7-1200PLC多组读取
通过结果发现,多组读取对于存储区较为零散的项目来说,有着非常重要的作用,可以大大提高通信效率。

技术图片

正则表达式之你不知道的replace

我们都知道js内置类String提供了一个replace方法,可以把指定字符串替换为另一个字符串,他的基础用法如下:1varstr="helloworld";23varstr=str.replace("world","js");45console.log(str);//输出"hellojs"replace方法第一个参数还可以是一个正则表达式:1v... 查看详情

css之你不知道的元素隐藏(代码片段)

前言:说到元素隐藏,大部分人会想到display:none和visbility:hidden;但是实际上关于元素隐藏还分多种情况,比如是否占据空间,隐藏之后是否可以触发点击事件等情况css元素隐藏种类    不占空间,无法点击:  1... 查看详情

javascript你不知道的事儿

if(in)语句letnames=['Lily','Barry','Dendi','Boogie','Lily'];letnameNum=names.reduce((pre,cur)=>{if(curinpre){//pre中是否有cur属性pre[cur]++;}else{pre[cur]=1;//为pre这个对象添加cur属性,并且赋值为1}returnpre;},{ 查看详情

s7通讯协议是啥?

...议是SIEMENSS7系列产品之间通讯使用的标准协议,其优点是通信双方无论是在同一MPI总线上、同一PROFIBUS总线上或同一工业以太网中,都可通过S7协议建立通信连接,使用相同的编程方式进行数据交换而与使用何种总线或网络无关... 查看详情

你不知道的https压测

随着互联网安全规范的普及,使用HTTPS技术进行通信加密,实现网站和APP的可信访问,已经成为公认的安全标准。本文将介绍针对HTTPS协议做压力测试的关注点,以及使用PTS做HTTPS压测的技术优势和最佳实践。随着互联网安全规范... 查看详情

阿里,京东,淘宝,美团,那些你不知道的事儿

B2B即businesstobusiness,2是to的谐音,即企业与企业之间,商家与商家之间,通过互联网进行产品、服务及信息的交换。交易的供需双方都是商家(或企业、公司)。如:阿里巴巴就是这种模式的一家公司。 B2C即businesstocustomer,... 查看详情

vue.use内部那些你不知道的事儿(代码片段)

1.Vue.use的作用Vue.use的作用是注册全局插件强化Vue的功能 它也可以用来注册全局组件但是有一个条件注册的对象中必须提供 install 方法。如果插件是一个函数,它会被作为install方法。install方法调用时,会将Vue作为参数... 查看详情

关于数据标注行业有些你不知道的事儿(代码片段)

一位在觉醒向量做数据标注的员工说:正如别人评论的那样,我们的工作的确很像数字世界的建筑工人,但是我们在扮演着很重要的角色,因为没有我们,AI这栋摩天大楼就无法建成。大数据作为一个术语而言,其历史可能并不... 查看详情

西门子s7通信协议以及java版的实现

西门子S7协议实现采用java的方式实现西门子S7协议链接地址:iot-communicationgithub:https://github.com/xingshuangs/iot-communication<dependency><groupId>com.github.xingshua 查看详情

粪菌移植的背后,肠道菌那些你不知道的事儿

近日16岁男孩通过粪菌移植治疗自闭症的新闻刷到了热搜上,估计很多人看到这则消息,惊讶至极,粪菌移植?把别人的粑粑弄进自己肚子里?听起来就超级重口啊!很多人好奇到底是怎么将健康人的粪菌... 查看详情

对,飞哥就是做安全建设的,内网安全有你不知道的事儿

whoami各位博友见置顶博客第一章。信息安全从业7年,帽子没有白过,也没有在乌云等src留过名,但是各位hacker的动机和大事我也关注过,一直从事于企业安全防护工作,识别内网资产的脆弱性,让hacker小哥哥们不是那么特别轻... 查看详情

你不知道的https压测

...:随着互联网安全规范的普及,使用HTTPS技术进行通信加密,实现网站和APP的可信访问,已经成为公认的安全标准。本文将介绍针对HTTPS协议做压力测试的关注点,以及使用PTS做HTTPS压测的技术优势和最佳实践... 查看详情

[plc]如何通过uss协议实现s7-1200与g120变频器的通信

如何通过USS协议实现S7-1200与G120变频器的通信推荐文档:西门子工程师推荐本文档!· 文档 · 涉及产品西门子S7-1200紧凑型PLC在当前的市场中有着广泛的应用,作为经常与SINAMICSG120系列变频器共同使用的PLC,其USS通信协... 查看详情

西门子s7-200plc网络通信协议都有哪些?各有啥特点?

参考技术A协议包括以下几个:1.PPI协议:PPI通信协议是西门子公司专为S7-200系列PLC开发的通讯协议。内置于S7-200CPU中。PPI协议物理上基于RS-485口,通过屏蔽双绞线就可以实现PPI通讯。PPI协议是一种主-从协议。主站设备发送要求... 查看详情

西门子s7协议数据采集内存读写调试软件工具

...7-200smart、S7-300、S7-1200、S7-1500等系列的西门子PLC。西门子通信方案S7protocol指的是以太网S7通信,主要用于将PLC连接到PC工作站(PG/PC-PLC通信)。这不应与西门子设备使用的不同现场总线协议混淆,例如MPI、Profibus、IE和Profinet(这是一种... 查看详情

西门子以太网(s7协议)通讯

参考技术AS7这一种通信,西门子Snap7是一个基于以太网与S7系列的西门子PLC通讯的开源库。支持包括S7系列的S7-200、S7-200Smart、S7-300、S7-400、S7-1200以及S7-1500的以太网通信。其实,西门子S7系列PLC采用以下两种通讯方式:开放式的TCP... 查看详情

物联网通信技术,那些你不知道的事

摘要:通信技术是物联网的基础,如果把物联网比作是物流系统,那么通信技术就相当于是送快递的各种运输方式,比如空运、水运还有陆运等。在通信技术当中,大体上它可以分为两大类,一类是无线通... 查看详情

http协议那些事儿

...式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。HTTP的发展是由蒂姆·伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起。HTTP的标准制定由万维网协会(WorldWideWebConsortium,W3C)和互联网工程任务组(Internet 查看详情