30.8.2 功能块变量

功能块(FB)编辑画面中创建程序时,使用功能块专用的变量或系统变量。

FB专用变量有3种:一种变量仅能在FB之内使用,另外两种变量则作为功能块指令的操作数,用于向逻辑程序传递FB数据或从逻辑程序接收FB数据。变量在功能块画面的变量列表中创建,使用范围是创建它们的FB之内。

本地变量

本地变量是仅用于FB之内的变量。不能从插入FB的逻辑画面直接写入本地变量。

每个FB最多可注册512个本地变量。

输入变量/输出变量

输入变量输出变量在使用它们的FB和逻辑程序之间传递和接收数据。将FB插入逻辑画面后,在FB中创建的输入变量显示为S操作数,输出变量显示为D操作数。

每个FB最多可注册63个输入变量和63个输出变量

对于操作数,需要指定与输入变量输出变量的变量类型一致的地址或变量。为S操作数设置的地址或变量所保存的值被传递到输入变量,并用于FB。另外,FB中输出变量的值被保存在为D操作数设置的地址或变量中。

备注

创建或使用FB时,请注意以下几点。

人机界面开机后,即使导通状态结束,FB也不会复位,且FB中的变量保持上次的值。需要时请复位FB。

同一FB可放置多次。它们使用同一存储空间。因此,相同的多个FB运行时,它们会读写相同的变量,可能导致意外结果。当多次使用相同的FB时,请避免让它们同时导通,或者让它们一次导通即完成操作。

例如,功能块FB_0000的作用是:每次指令导通时执行加1计数,在逻辑程序中放置了两个FB_0000。第一次扫描时,两个FB_0000的“Count”(本地变量)在开始计数前均复位,S1和S2操作数均置ON。在随后的扫描中,仅执行加操作,所以仅S2操作数置ON。

对于D100和D200而言,输出结果不是加1,而是加2,因为会在D100和D200中交替加1。

发生这一现象的原因是两个FB_0000均使用存储空间中的相同变量。第一个和第二个FB_0000会对相同的变量“Count”交替加1,结果导致在D100和D200中实际为加2。

为使D100和D200的输出结果均为加1,需在执行加操作之前输入数值,作为S操作数,然后在数值上加1。

示例:

  1. 在FB_0000上添加一个整型输入变量“Input”。

  2. 将MOV指令的D操作数改为“Input”。

  3. 在ADD指令前插入MOV指令,将“Input”值输入到“Count”。

  4. 对于FB_0000指令的S3操作数,指定与D1操作数相同的地址。