关于S7-300的DB块解析(基于S7COMM协议的解析)
只有一个变量,且为布尔型,默认为false

大概推测如下:首先前面的7070是块头,0a应该表示的是数据块,而0004表示的是number,也就是数据块号,后面的00000056表示的是这个DB块的总字节数。第二行的应该是和时间相关的一段字节码。第三行开始应该就是固定的一些样式了。前面的四个字节00还不知道是什么意思。
而第三行的0002应该表示的是DB块存放的数据的大小,因为只有一个变量,所以这里就用两个字节来表示,这两个字节是0000,因为默认为false状态,所以值为0。
在这后面的0504应该代表的是数据块存放数据的结束。
后面的0005应该代表的是指示这个DB块变量类型的长度。这个其实呢就是后方表示这个DB块里的变量存放的是什么类型的,有几个。
这个变量类型字段这里是以1104开始的,1104开始后,下面这个字节表示的是变量的数量,01表示只有1个变量
然后开始指示变量的类型,01代表bool型,02代表是byte型,04代表是word型。其他的类型的还需要进行尝试。然后以04结尾,如果有多个变量,那么就在04后紧跟着表示。

上面这个图是单一一个变量的。下面这个图是改了变量,将false改为true

单一变量的知道了,那创建多变量的DB块。下图是两个bool型的变量的DB块

将第二个bool型变量也改为true

将第二个变量改为byte类型

将这个变量改为最大值255,那么应该是转变为ff

如果将这个变量改为word型呢?

那么我们来看创建更多的变量看看是否符合上面提到的规律。
如图的是四个变量的,其中第一个是bool型,第二个是word型,第三第四个是bool型

从里面可以看出第三个bool型应该是为true,而第四个是为false
那么问题来了?DB块如果超过256个变量呢?可以超过256个变量嘛?

总结就到这吧,如果有机会再给大家分享代码解析
浙公网安备 33010602011771号