1 S7-1500数据块-优化DB与非优化DB
可能是为了适应S7-1500操作系统的新功能还要保持原有操作习惯的原因,相对于S7-300/400,S7-1500中数据块功能和参数更多,操作灵活的也会感觉到可操作的地方太多了,详细了解DB块这些功能非常必要,否则会感到无从下手。S7-1500数据块DB带来Zui大变化就是优化DB,今天就介绍一下优化DB与非优化DB的区别。
S7-300/400中操作的数据块DB,在S7-1500中就是我们所说的非优化DB,S7-300/400移植后的程序块都是非优化的(除了DB外,FC、FB和OB也有优化和非优化的区分)。优化和非优化DB的区别如下:
1.1 数据块的大小
S7-300的数据块Zui大是32K,S7-400的数据块Zui大是64K,这里可以再联想一下S7通信BSEND/BRECV,S7-300Zui大通信字节数是32K,S7-400Zui大通信字节数是64K,原因就是发送区和接收区是DB。
S7-1500数据块DB的容量是变化的。我们看一下CPU1511数据块DB的Zui大容量,参考图1。
图1
CPU1511的数据存储区Zui大是1M字节,一个数据块Zui大也是1M字节。我们再参考一下CPU1517的技术数据,参考图2。
图2
CPU1517的数据存储区Zui大是8M字节,一个数据块Zui大也是8M字节。可以说一个数据块DB的容量就是CPU的整个数据存储区。
注:
Zui高端型号的CPU1518数据存储区Zui大是20M字节,一个数据块Zui大容量是16M字节,可以说一个数据块Zui大容量就是16M字节,只是小型CPU没有那么大的DB存储区。
1.2 寻址方式
优化DB与非优化DBZui大的区别就是寻址方式。
非优化DB是绝地地址的访问方式,例如寻址DB1中的一个INT变量(偏移地址为2)为DB1.DBW2。一个DB块中的变量间带有偏移地址,参考图2。
优化DB是符号地址的访问方式,例如寻址DB1(名称为A)中的一个INT变量(名称为B)为A.B,不能使用DB1.B访问,而在S7-300/400DB块寻址时是合法的(符号名方式访问)。
图2
创建DB时,缺省设置为优化访问,可以在DB块的属性中去使能优化访问,使之成为非优化DB。
注:
非优化DB既可以使用juedui地址寻址也可以使用符号名寻址,优化DB只能使用符号名寻址,这里并不是说非优化DB寻址方式多,而是与CPU的底层寻址方式有关,例如S7-300/400CPU底层只支持juedui地址的寻址方式,是符号寻址也是为了便于阅读程序而已,没有符号表后,上载的程序都是以缺省字符(DB以及程序块OB、FB、FC的声明)或者juedui地址出现(I、Q、M等),而S7-1500底层只支持符号寻址方式,是使用非优化DB(创建时自动分配符号名)。
1.3 保持特性
非优化DB只能整体选择保持或者非保持性。
优化DB可以对其中的任何变量选择保持或者非保持性,参考图3。
图3
1.4 占用地址空间
非优化DB按照变量创建次序进行排列,这样变量间会存在间隔,降低存储效率,如图4所示。在S7-300/400编程时强调寻址DB中一个2个字节(例如WORD、int)或者4个字节(例如DWORD、Dint)变量,地址都是偶数,如果在程序中寻址DB1.DBD3就有问题了。
图4
优化DB中大数据类型位于块的开始处,实现数据结构合理优化,布尔型变量以宽字节形式存储,显著提高访问速度,如图5所示。
图5
1.5 访问速度
非优化DB字节采样大端编码(低位数据存放在高位地址)方式,优化DB字节采样小端编码方式(低位数据存放在低位地址),如图6所示。S7-1500系统按照小端编码方式处理变量,如果是大端编码的变量,需要先进行字节的调换,再计算,如果是一个4个字节的变量,需要调换两次。这也是在S7-1500中建议使用优化DB的原因。
图6