FP-FNS 블록에 대한 데이터 구성
FNS_InitConfigNameTable 펑션은 변수 ProcessDataTable에서 ConfigNameTable을 생성합니다. 이것은 단일 요소 데이터 유형이거나 다중 요소 데이터 유형일 수 있습니다.
입력
공정 데이터 변수의 입력 및 출력
출력
출력은 ProcessDataTable에서 적용된 DUT의 멤버 이름이 포함된 STRING 배열입니다.
변수 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의 입력에서 사용할 수 없습니다.
다음 구문 표에서는 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;