您现在的位置是:首页 > PLC技术 > PLC技术
STEP 7功能块中的参数存储
来源:艾特贸易2018-04-28
简介编辑器把功能块的块参数存储到功能块的实例数据块中。在功能块的调用中,编辑器在块调用之前产生语句序列,把实参的值复制到实例数据块中,在调用后从实例数据块将其返回到实
编辑器把功能块的块参数存储到功能块的实例数据块中。在功能块的调用中,编辑器在块调用之前产生语句序列,把实参的值复制到实例数据块中,在调用后从实例数据块将其返回到实参中。在查看编译过的块时看不到这些语句序列。只能通过所占用的存储空间才能间接地注意到。
在实例数据块中,块参数可以存储为一个值、一个16位的数字,或一个指向实参的指针(如表1所示)。当存储为一个值时,所需的存储器取决于块参数的数据类型。数字占用2字节,指针占用6字节(DB指针)或10字节(ANY指针)。
表1 在功能块的情况下的参数存储
块参数、实例数据赋值和实参的关系在图1中给出。当把复杂类型的实参复制到实例数据块(输入参数)或返回到实参时(输出参数),编辑器使用系统功能SFC 20 BLKMOV,功能的参数建立在所调用块的暂态局部数据区中。
图1 功能块中的块参数传递
如果参数是输入参数或输入/输出参数,则在“实际”FB调用之前,实例数据块中保存为一个值的块参数,将使用语句序列实现复制操作。如果参数是输入/输出参数或输出参数,则复制操作在调用之后进行。因此,只能对输入参数进行检测操作和输出参数进行写操作的规律同样适用,比如,如果将一个(新的)值传送到输入参数,实参的当前值将会丢失。如果加载到输出参数,则加载的是实例数据块中的一个(旧的)值,而不是实参中的值。
因为块参数存储在实例数据块中,故在每次调用功能块时不需要初始化。如果没有设定初值,程序将使用输入或输入/输出参数的“旧”值,或从程序后面的其他位置中获取输出参数的值。在功能块外部,可以使用与存取全局数据块中变量相同的方式来存取实例数据块中的变量(使用块参数的符号名或块参数的名称)。同时也适用于静态局部数据。
如果在ANY参数中应用数据类型为ANY的暂态局部变量,编辑器将会把变量的内容复制到实例数据块的ANY指针中(块参数中)。
(作者稿费要求:需要高清无水印文章的读者3元每篇,请联系客服,谢谢!在线客服:)
点击排行
