西门子PCU20无显示数码管不亮维修
参数数据类型为ANY的块参数可以使用各种数据类型的变量。在被调用块中的编程可以决定哪些变量(地址或数据类型)可以用于块参数,哪些变量是可行的。也可以以ANY指针“P#[data_block.]Address Data_type Number”的形式指定常量.并定义一个地址域。
对于数据类型为ANY的暂态局部数据项,ANY参数的初始化是个例外。这种情况下,不是给变量产生指针,而是在暂态局部数据中,编辑器假定数据类型为ANY的指针已经存在。这使得用户有了一种能力,在运行时可修改ANY指针,可以应用ANY参数。在与系统功能SFC 20 BLKMOV的连接中,“ANY指针变量”特别有用。
功能块不能使用ANY类型的输出参数。
可以用定时器功能初始化TIMER类型的块参数,用计数器功能初始化COUNTER类型的块参数,可以用本身不带参数的块初始化参数类型为BLOCK_FC、BLOCK_FB的块参数。用UC访问时,调用这些块(在功能块情况下也可以用CC)。通过DB寄存器,可以用在调用块中打开的数据块初始化BLOCK_DB。
数据类型为TIMER. COUNTER. BLOCK_xx的块参数只能作为输入参数。
对于复杂或扩展的数据结构,推荐使用用户自定义(UDT)数据类型。在使用前,首先定义UDT,例如在数据块中要生成变量或声明块参数时必须定义UDT。然后,在初始化块参数时可以使用变量。应注意的是,实参(变量)必须和块参数的数据类型(相同的UDT)一致。
作为块参数,相同UDT数据类型的完整数据块不允许作为实参。
用户自定义数据类型的参数指定的描述将在后续文章中进行详解。
每个块参数都可以是复杂数据类型或用户自定义数据类型。同种数据类型的变量也可以用作实际地址。
对于块参数为日历数据类型或字符串数据类型的初始化,可以使用单独的变量,或具有相同数据类型的字段或结构元素。在STL中禁止用常量初始化。
如果对具有STRING变量的功能块进行初始化,则此变量必须与STRING块参数有相同的长度。
在暂态局部数据中创建STRING变量时,禁止预赋值,STRING变量就含有所谓的“任意”值。如果想使用这样的一个变量作为IEC功能的实参,就必须通过程序为这个变量预先指定“有效的”值(在对STRING变量进行写操作前,IEC功能将检测即将被写入的值以适应这个变量)。
对于数据类型为数组(ARRAY)或结构(STRUCT)的块参数的初始化,只要是结构完全相同的变量,都可以作为块参数。
对复杂数据类型的参数赋值的描述艾特贸易网小编将在后续文章中进行详细的讲述。
可以把地址或符号地址赋给输入、输出和位存储地址。输入地址只用于输入参数,输出地址只用于输出参数(这不是强制性的)。位存储地址适用于所有的声明类型。但只能把外围输入用于输入参数,把外围输出用于输出参数。
在使用局部寻址的数据地址的时候,必须确保当访问块参数(在被调用块中)时,当前打开的数据块也是“校正”的数据块。因为在某些情况下,当块被调用时,编辑器改变数据块,不适合使用局部寻址的数据地址访问。因此建议只能使用全局寻址的数据地址访问。
暂态局部数据常常是符号寻址的,这些数据位于调用块的局部数据L栈中(并在调用块中声明)。
如果调用块是一个功能块,则可以使用其静态局部数据作为实参。静态数据一般为符号寻址;如果通过DI寄存器(DI地址)来使用地址,必须确保当访问块参数(在被调用块中)时,通过DI寄存器当前打开的数据块也是“校正”的数据块。因此,需要注意的是,当使用被调用块作为局部实例数据块时,块局部变量地址取决于被调用块中局部实例的声明。
对于布尔类型的块参数,可以使用常量TRUE(信号状态1)或FALSE(信号状态0);对于数字类型的块参数,可以使用和数据类型相符合的所有常量。用常量进行初始化只能用于输入参数。
如果数组或结构的组成元素的数据类型与块参数的数据类型一致,则可以用字段或结构的组成元素初始化基本数据类型的块参数。
调用块时,必须先用常量、地址或操作用的变量初始化块参数。参数为实参。若在程序中常常调用块,每次调用使用的实参经常是不同的。
在数据类型上,实参必须与块参数保持一致:二进制实参(如一个存储位)必须对应BOOL数据类型的块参数;数组元素变量必须对应同维数数组类型块参数。表19-3概述了作为实参的地址与数据类型的对应关系。
在调用功能时,必须用实参对所有的块参数初始化。
在调用功能块时,用实参初始化块参数不是必须的。对于所有的基本数据类型的块参数、复杂数据类型的输入和输出参数以及数据类型为TIMER. COUNTER、BLOCK_xx的输入参数,STEP 7都保存为值或数字。复杂数据类型的输入/输出参数和数据类型为POINTER和ANY的块参数都作为实参的指针被保存。这样,要输入一个有意义的值,在首次调用时必须至少对命名的块参数进行初始化。
对于功能块,可以通过直接访问的方式访问块参数。因为这些参数位于数据块中,所以可以像处理数据地址一样来处理块参数。
举例:实例数据块“Lift_stat_1”的功能块控制一个二进制输出参数,该参数命名为“UP”。在功能块处理之后(经过调用后),可以像下面那样来检测参数,而不用再对输出参数初始化:
U "List_stat_1".Up;
只是需要对这个检测编程而不用初始化参数。
西门子PCU20无显示数码管不亮维修