FNS_InitConfigDataTable

配置FP-FNS块数据

FNS_InitConfigDataTable函数从变量ProcessDataTable(可以是单元素数据类型或多元素数据类型)创建ConfigDataTable。需要此ConfigDataTable以使用功能块FNS_ProfibusDPFNS_DeviceNet, FNS_CANopenFNS_ProfinetIO配置FP-FNS块。

参数

输入

ProcessDataTable (INT, WORD, DINT, DWORD, REAL, TIME)和这些类型的数组

过程数据变量的输入和输出

输出

ConfigDataTable (ARRAY of WORD)

配置FP-FNS块数据。变量ConfigDataTable的数组大小必须与ProcessDataTable变量的元素数量相对应。

标注

  • 确保变量ConfigDataTable的大小与ProcessDataTable的结构相对应,例如,如果ProcessDataTable包含三个条目,则ConfigDataTable变量应为“Array[0..2] of WORD”,其大小与条目数量匹配。如果ProcessDataTable变量仅有一个条目(例如,WORD),则ConfigDataTable变量应为“Array[0..0] of WORD”(大小为1)。

  • 允许使用的FNS_InitConfigDataTable输入数据类型为所有16位(INTWORD)、32位(DINTDWORDTIME(32位)、REAL)和64位变量或其数组。64位变量定义为二维数组,例如,“Array[0..0,0..3] of INT”为64位变量,而“Array[0..3] of INT”表示具有16位变量四个元素的数组。

  • 在输入函数FNS_InitConfigDataTable时不允许使用数据类型BOOLSTRING和这些类型的数组。

  • 函数的输出ConfigDataTable必须为WORD的数组。

ProcessDataTable

以下语法表显示如何在将其用作FNS_InitConfigDataTable函数的ProcessDataTable输入时声明16位、32位和64位变量和数组。

输入数据类型

输入大小

注释

INT, WORD

16位

DINT, WORD, REAL, TIME

32位

Array[0..0,0..3] of INT

Array[0..0,0..3] of WORD

64位

二维数组;

第二维度大小 = 4

Array[a ..b] of INT/Array[a ..b] of WORD

16位数组

大小 = b-a+1

一维数组

Array[a ..b] of DINT/Array[a ..b] of DWORD/

Array[a ..b] of REAL/Array[a ..b] of TIME

32位数组

大小 = b-a+1

一维数组

Array[0..x,0..3] of INT

Array[0..x,0..3] of WORD

64位数组

大小 = x+1

二维数组;

第二维度大小 = 4

示例

全局变量

在全局变量列表中,定义项目中所有POU都可以访问的变量。

DUT

在此示例中,变量ProcessData为具有以下结构的ProcessDataStructure类型的DUT:

因为DUT有三个条目,所以输出变量ConfigData必须为大小为3的WORD数组(例如:Array [0..2] of WORD)。

POU头

所有用于编程此函数的输入和输出变量已在POU头中声明。所有编程语言使用相同的POU头。

	VAR
		ConfigData: ARRAY [0..2] OF WORD:=[3(0)];
	END_VAR
	VAR_EXTERNAL
		ProcessData: ProcessDataStructure;
	END_VAR

变量ConfigDataTable的大小必须与输入变量ProcessData的条目数量相对应。

POU本体

sys_bIsFirstScanTRUE,即在第一个循环中时,将执行此函数。变量ConfigData的值与输入变量ProcessData的结构、数量和元素类型相对应。

LD本体

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_VARIN,,ProcessData,11,2,13,4,);
B(B_VAROUT,,ConfigData,29,2,31,4,);
B(B_F,E_FNS_InitConfigDataTable!,,13,0,29,4,,?DEN?dProcessDataTable?AENO?cConfigDataTable);
B(B_CONTACT,,sys_bIsFirstScan,5,1,7,3,);
L(1,2,5,2);
L(7,2,13,2);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST本体

If sys_bIsFirstScan then
    ConfigData:=FNS_InitConfigDataTable(ProcessData);
    end_if;

最后更新日期: 此页面上的反馈松下热线