变量表有输入输出的地址,像200中一样有I0.0之类的,但300中的DB中地址却是一直增加的,那么300中的数据块与变量表直接有什么联系啊?求详细解答
问题补充:
那么他们跟符号表之间的关系呢?谢谢
最佳答案
1.数据块DB
DB用来存储用户数据及程序的中间变量,为全局变量。DB的最大容量,S7-300为32KB,S7-400为64KB。
DB可分为共享数据块(Share DB)、背景数据块(Instance DB)和用户自定义数据(UDT)类型的数据块。
共享数据块可作为所有程序使用的全局变量,在CPU允许的条件下,一个程序可创建任意多个DB,每个DB的最大容量为64KB。默认条件下,共享数据块为掉电保持,在其属性菜单中选中“Non Retain”可以更改为掉电数据丢失。
背景数据块与FB和SFB关联,也是全局变量。背景数据块和共享数据块相比,只保存与FB或SFB接口数据区(Temp)相关的数据。背景数据块中有一种比较特殊的数据块,称为多重背景数据块。有关多重背景数据块的用法和使用注意事项请参看《怎样使用多重背景数据块》。
基于UDT的数据块为全局变量,提供一个固定格式的数据结构,便于用户使用。
2.变量表
变量表由参数(IN、IN_OUT、OUT)和局部变量两大类组成,局部变量又包括静态变量(STAT)和临时变量(TEMP)两种。参数是调用快(FB)和被调用快(背景数据块)间传递数据,是逻辑块的接口。静态变量和临时变量是仅供逻辑块(这里指FB)本身使用,不能用作不同程序块之间的数据接口,也就是说静态变量仅用于本功能块FB,并且只能在FB的背景数据块中使用,它在PLC运行期间始终被存储。S7将静态变量定义在对应的背景数据块中,当被调用快(FB 快)运行时,能读出或修改静态变量(从对应的DI块);被调用快运行结束,静态变量的数据保留在数据块中。由于FB有自己的背景数据块,所有的参数在其背景数据块中都有对应的存储位置,静态变量随着FB打开起作用,随着FB块调用结束而关闭,而且STAT(静态变量)的数据必须在调用FB快时同时打开对应的背景数据时才能修改或读出,所以你是无法在线修改STAT中的数据,也没有什么快捷方法。
参考资料:
1.《STEP7数据块的作用》
http://www.ad.siemens.com.cn/service/answer/solution.aspx?Q_ID=62640&cid=1029
2.《S7-300中变量表的作用》
http://www.ad.siemens.com.cn/service/answer/solution.aspx?Q_id=39423&cid=1029
提问者对于答案的评价:
比较详细,实用
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc240766.html