网站工作和网站建设管理工作商城类网站建设的服务器选择
web/
2025/9/26 12:11:38/
文章来源:
网站工作和网站建设管理工作,商城类网站建设的服务器选择,专业团队是什么意思,网站永久空间目录 1. S7协议之布尔操作
2. S7协议之PDU读取
3 S7协议之多组读取 在电气学习的路上#xff0c;西门子PLC应该是每个人的启蒙PLC#xff0c;从早期的S7-300/400PLC搭建Profibus-DP网络开始接触#xff0c;到后来的S7-200Smart PLC#xff0c;再到现在的S7-1200/1500 PLC…目录 1. S7协议之布尔操作
2. S7协议之PDU读取
3 S7协议之多组读取 在电气学习的路上西门子PLC应该是每个人的启蒙PLC从早期的S7-300/400PLC搭建Profibus-DP网络开始接触到后来的S7-200Smart PLC再到现在的S7-1200/1500 PLC博途软件。西门子S7协议是非常强大的一个协议。
1. S7协议之布尔操作
对于布尔操作很多协议都有但是这里的布尔操作是指寄存器布尔比如写入DB100.DBB0.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是不一样的。 图表 1 S7-1200的PDU 图表 2 S7-1500的PDU
经过研究发现西门子PLC的PDU大小是和CPU息息相关的一般会有240、480、960三个档次知道PDU之后那么一次性读取的字节长度就是在PDU的基础上减去18这个18是指包头包尾会有18个字节这样我们就知道了一般的PLC一次性能读取222个字节240-18222但是对于S7-1516这样的PLC我们一次性是可以读取942个字节的960-18942这个一次性能读取的字节越长越能提高上位机的通信效率。
但是刚刚的方式是通过KepServer测试的实际开发过程中该怎么获取CPU的PDU呢实际上在建立连接的第二次握手时返回的报文中就包含PDU的值。 图表 3 S7-1200 PDU报文
第二次握手返回的报文长度是27个字节最后两个字节就是PDU的值上图展示的是S7-1200PLC返回的报文0和240的组合即为240。
对于S7-1500我这里也做了一下测试结果如下返回结果为3和1923和192的组合恰好是9609603*256192。 图表 4 S7-1500 PDU报文
虽然PDU是由硬件做了限制但是我们可以通过软件的方式实现大量数据的读取只需要在底层做一些封装即可。做了一下测试针对S7-1200和S7-1500同时读取M区的8000个字节的耗时比较S7-1200耗时800多msS7-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多组读取
通过观察上图通讯速率结果发现多组读取对于存储区较为零散的项目来说有着非常重要的作用可以大大提高通信效率。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/82186.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!