大部分人都知道S7协议一次性读取有限制,但是具体是多少?怎么计算出来的?
S7协议的一次性读取长度是根据PDU计算出来的,这个PDU的值是来自于PLC本身,不同型号的CPU,它的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的值
对于很多其他的通信协议,当我们遇到数据变量比较零散,同时读取多个存储区或者一个存储区多个不同部分的时候,我们只能针对每个存储区或者每块区域做一个数据请求,但是西门子S7协议可以解决这样的问题。
西门子S7协议有一个非常强大的一个地方,可以同时读取很多个不同的存储区,大支持19种,总共读取长度仍然受PDU的限制。
这里我们仍然以实验测试为例,体验多组读取带来的美妙体验。
假设我们的通信组配置如下:
通信组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,通过配置软件实现配置以上9个通信组,开始通信测试,首先我们选择的是单组读取的方式,就是针对每个组,依次进行读取,结果如下,耗时大约200ms,这个时间应该相对来说还是比较正常的。
高频整流电抗器:
6SN1111-0AA00-0BA1
6SN1111-0AB00-0AA0
6SN1111-0AA00-0BA0
6SN1111-0AA00-0BB0
6SN1111-0AA00-0BB1
6SN1111-0AA00-0BC0
6SN1111-0AA00-0BV0
6SN1111-0AA00-0BV1
6SN1111-0AA00-0CA0
6SN1111-0AA00-0CA1
6SN1111-0AA00-0CB0
6SN1111-0AA00-0CC0
6SN1111-0AA00-0CV0
6SN1111-0AA00-0CV1
6SN1111-0AA00-0DA0
6SN1111-0AA00-0DA1
6SN1111-0AA00-0DB0
6SN1111-0AA00-0DC0
6SN1111-0AA00-0EA0
6SN1111-0AA00-0EB0
6SN1111-0AA00-0EC0
6SN1111-0AA00-0EV0
6SN1111-0AA00-0FA0
6SN1111-0AA00-0FB0
6SN1111-0AA00-0FB1
6SN1111-0AA00-0FC0
6SN1111-0AA00-1DV0
6SN1111-0AA00-1EA0
6SN1111-0AA00-1EV0
6SN1111-0AA00-1FA0
6SN1111-0AA00-1FV0
6SN1111-0AA01-0BA0
6SN1111-0AA01-0BA1
6SN1111-0AA01-0BA2
6SN1111-0AA01-0CA0
6SN1111-0AA01-0CA1
6SN1111-0AA01-0CA2
6SN1111-0AA01-0DA0
6SN1111-0AA01-1AA0
6SN1111-0AA01-1AA1
6SN1111-0AA01-1BA0
6SN1111-0AA01-1BA1
6SN1111-0AA01-1CA0
6SN1111-0AA01-1CA1
6SN1111-0AA01-2BA0
6SN1111-0AA01-2BB0
6SN1111-0AA01-2CA0
6SN1111-0AA01-2CB0
6SN1111-0AA01-2DA0
6SN1111-0AA01-2DB0
6SN1111-0AA01-2EA0
6SN1111-0AA01-2EB0
6SN1111-0AA01-2FA0
6SN1111-0AA01-2FB0
6SN1111-0AA02-0BA0
6SN1111-0AA02-0BB0
6SN1111-0AA02-0BC0
6SN1111-0AA02-0BD0
6SN1111-0AA02-0BE0
6SN1111-0AA02-0BF0
6SN1111-0AA02-0BG0
6SN1111-0AA02-0BH0
6SN1111-0AA02-0BJ0
6SN1111-0AA02-0CA0
6SN1111-0AA02-0CB0
6SN1111-0AA02-0CC0
6SN1111-0AA02-0CD0
6SN1111-0AA02-0CE0
6SN1111-0AA02-0CF0
6SN1111-0AA02-0CG0
6SN1111-0AA02-0CH0
6SN1111-0AA02-0CJ0
6SN1111-0AA02-0DA0
6SN1111-0AA02-0DB0
6SN1111-0AA02-0DC0
6SN1111-0AA02-0DD0
6SN1111-0AA02-0DE0
6SN1111-0AA02-0DF0
6SN1111-0AA02-0DG0
6SN1111-0AA02-0DH0
6SN1111-0AA02-0DJ0
6SN1111-0AA02-0EA0
6SN1111-0AA02-0EB0
6SN1111-0AA02-0EC0
6SN1111-0AA02-0ED0
6SN1111-0AA02-0EE0
6SN1111-0AA02-0EF0
6SN1111-0AA02-0EG0
6SN1111-0AA02-0EH0
6SN1111-0AA02-0EJ0
6SN1111-0AA02-0FA0
6SN1111-0AA02-0FB0
6SN1111-0AA02-0FC0
6SN1111-0AA02-0FD0
6SN1111-0AA02-0FE0
6SN1118-0AA11-0AA0
6SN1118-0AA11-0AA1
6SN1118-0AE11-0AA0
6SN1118-0BJ11-0AA0
6SN1118-0BK11-0AA0
6SN1118-0DH21-0AA0
6SN1118-0DH21-0AA1
6SN1118-0DJ21-0AA0
6SN1118-0DJ21-0AA1
6SN1118-0DJ23-0AA0
6SN1118-0DJ23-0AA1
6SN1118-0DK21-0AA0
6SN1118-0DK21-0AA1
6SN1118-0DK23-0AA0
6SN1118-0NH10-0AA2
6SN1118-0NH11-0AA0
6SN1118-0DG21-0AA1
6SN1118-0DG23-0AA1
6SN1118-0DH23-0AA1
6SN1118-0AA11-0AA0
6SN1118-0AA11-0AA1
6SN1118-0AD11-0AA0
6SN1118-0AD11-0AA1
6SN1118-0AE11-0AA0
6SN1118-0AE11-0AA1
6SN1118-0BJ11-0AA0
6SN1118-0BK11-0AA0
6SN1118-0DA11-0AA0
6SN1118-0DA12-0AA0
6SN1118-0DA13-0AA0
6SN1118-0DB11-0AA0
6SN1118-0DB12-0AA0
6SN1118-0DB13-0AA0
6SN1118-0DG11-0AA0
6SN1118-0DG12-0AA0
6SN1118-0DG13-0AA0
6SN1118-0DG21-0AA0
6SN1118-0DG21-0AA1
6SN1118-0DG22-0AA0
6SN1118-0DG22-0AA1
6SN1118-0DG23-0AA0
6SN1118-0DG23-0AA1
6SN1118-0DH11-0AA0
6SN1118-0DH12-0AA0
6SN1118-0DH13-0AA0
6SN1118-0DH21-0AA0
6SN1118-0DH21-0AA1
6SN1118-0DH22-0AA0
6SN1118-0DH22-0AA1
6SN1118-0DH23-0AA0
6SN1118-0DH23-0AA1
6SN1118-0DJ21-0AA0
6SN1118-0DJ21-0AA1
6SN1118-0DJ21-0AA2
6SN1118-0DJ23-0AA0
6SN1118-0DJ23-0AA1
6SN1118-0DJ23-0AA2
6SN1118-0DK21-0AA0
6SN1118-0DK21-0AA1
6SN1118-0DK21-0AA2
6SN1118-0DK23-0AA0
6SN1118-0DK23-0AA1
6SN1118-0DK23-0AA2
6SN1118-0DM11-0AA0
6SN1118-0DM11-0AA1
6SN1118-0DM13-0AA0
6SN1118-0DM13-0AA1
6SN1118-0DM21-0AA0
6SN1118-0DM23-0AA0
6SN1118-0DM31-0AA0
6SN1118-0DM31-0AA1
6SN1118-0DM31-0AA2
6SN1118-0DM33-0AA0
6SN1118-0DM33-0AA1
6SN1118-0DM33-0AA2
6SN1118-0NH00-0AA0
6SN1118-0NH00-0AA1
6SN1118-0NH00-0AA2
6SN1118-0NH00-0BA2
6SN1118-0NH01-0AA0
6SN1118-0NH01-0AA1
6SN1118-0NH10-0AA0
6SN1118-0NH10-0AA2
6SN1118-0NH11-0AA0
6SN1118-0NH11-0AA1
6SN1118-0NJ00-0AA0
6SN1118-0NJ00-0AA1
6SN1118-0NJ00-0AA2
6SN1118-0NJ01-0AA0
6SN1118-0NJ01-0AA1
6SN1118-0NK00-0AA0
6SN1118-0NK00-0AA1
6SN1118-0NK00-0AA2
6SN1118-0NK01-0AA0
6SN1118-0NK01-0AA1
6SN1118-1NH00-0AA0
6SN1118-1NH00-0AA1
6SN1118-1NH00-0AA2
6SN1118-1NH01-0AA0
6SN1118-1NH01-0AA1
6SN1118-1NJ00-0AA0
6SN1118-1NJ00-0AA1
6SN1118-1NJ00-0AA2
6SN1118-1NJ01-0AA0
6SN1118-1NJ01-0AA1
6SN1118-1NK00-0AA0
6SN1118-1NK00-0AA1
6SN1118-1NK00-0AA2
6SN1118-1NK01-0AA0
6SN1118-1NK01-0AA1
6SN1123-1AA00-0AA1
6SN1123-1AA00-0BA1
6SN1123-1AA00-0EA1
6SN1123-1AB00-0AA1
6SN1123-1AB00-0BA1
6SN1123-1AB00-0CA0
6SN1123-1AB00-0CA1
6SN1123-1AA00-0AA0
6SN1123-1AA00-0AA1
6SN1123-1AA00-0AA1
6SN1123-1AA00-0AA2
6SN1123-1AA00-0AA2
6SN1123-1AA00-0BA0
6SN1123-1AA00-0BA1
6SN1123-1AA00-0BA1
6SN1123-1AA00-0BA2
6SN1123-1AA00-0BA2
6SN1123-1AA00-0CA0
6SN1123-1AA00-0CA1