FP-FNS 블록에 대한 데이터 구성
FNS_InitConfigNameTable 펑션은 변수 ProcessDataTable에서 ConfigNameTable을 생성합니다. 이것은 단일 요소 데이터 유형이거나 다중 요소 데이터 유형일 수 있습니다.
입력
공정 데이터 변수의 입력 및 출력
출력
FP-FNS 블록에 대한 구성 데이터 변수 ConfigNameTable의 배열 크기는 ProcessDataTable 변수의 요소 수와 같아야 합니다.
변수 ConfigNameTable의 크기가 ProcessDataTable의 구조에 해당하는지 확인합니다. 예를 들어, ProcessDataTable이 세 개의 항목으로 구성되었다면 ConfigNameTable 변수는 "Array[0..2] of WORD"이어야 하며, 이 크기는 항목 수와 일치합니다. ProcessDataTable 변수에 항목이 하나만 있으면(예: WORD) ConfigNameTable 변수는 "Array[0..0] of WORD"(크기 1)이어야 합니다.
허용되는 입력 데이터 유형은 모두 16비트(INT, WORD), 32비트(DINT, DWORD, TIME(32비트), REAL)와 64비트 변수 또는 그 배열입니다. 64비트 변수는 2차원 배열로 정의됩니다. 예를 들어, "Array[0..0,0..3] of INT"는 64비트 변수이고 "Array[0..3] of INT"는 16비트 변수의 4개 요소가 있는 배열을 나타냅니다.
데이터 유형 BOOL, STRING 및 이러한 형식의 배열은 펑션 FNS_InitConfigDataTable의 입력에서 사용할 수 없습니다.
이 펑션의 출력 ConfigNameTable은 WORD의 배열이어야 합니다.
다음 구문 표에서는 16비트, 32비트 및 64비트 변수와 그 배열을 ProcessDataTable 입력으로 사용할 때 이를 선언하는 방법을 보여줍니다.
입력 데이터 유형 |
입력 크기 |
코멘트 |
---|---|---|
INT, WORD |
16비트 |
|
DINT, WORD, REAL, TIME |
32비트 |
|
Array[0..0,0..3] of INT Array[0..0,0..3] of WORD |
64비트 |
2차원 배열; 2차원 크기 = 4 |
Array[a ..b] of INT/Array[a ..b] of WORD |
16비트 배열 크기 = b-a+1 |
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 |
1차원 배열 |
Array[0..x,0..3] of INT Array[0..x,0..3] of WORD |
64비트 배열 크기 = x+1 |
2차원 배열; 2차원 크기 = 4 |
VAR
adiDInt1: ARRAY[2..3] OF DINT:=[2(0)];
arReal1: ARRAY[0..1, 1..9] OF REAL:=[18(0.0)];
aui1: ARRAY[1..15] OF UINT:=[15(0)];
dwWord1: DWORD:=0;
iInt1: INT:=0;
udiUDInt1: UDINT:=0;
END_VAR
변수 configNames1의 크기는 입력 변수 myDUT60 변수의 엔트리 수와 일치해야 합니다.
DUT에는 엔트리 세 개가 있으므로, 출력 변수 configNames1는 세 가지 크기의 WORD 배열이어야 합니다(예: Array [0..2] of WORD).
sys_bIsFirstScan이 TRUE이면 첫 번째 주기에서 기능이 실행됩니다. 변수 configNames1의 값은 입력 변수 myDUT60 구조(요소 수와 형식)와 일치합니다.
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,,myDUT60,11,2,13,4,);
B(B_VAROUT,,configNames1,29,2,31,4,);
B(B_F,E_FNS_InitConfigNameTable!,Instance,13,0,29,4,,?DEN?dProcessNameTable?AENO?cConfigNameTable);
B(B_VARIN,,sys_bIsFirstScan,11,1,13,3,);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
If sys_bIsFirstScan then
configNames1:=FNS_InitConfigNameTable(myDUT60);
end_if;