FP-FNS 블록에 대한 데이터 구성
FNS_InitConfigDataTable 펑션은 변수 ProcessDataTable에서 ConfigDataTable을 생성합니다. 이것은 단일 요소 데이터 유형이거나 다중 요소 데이터 유형일 수 있습니다. 이 ConfigDataTable은 펑션블록 FNS_ProfibusDP, FNS_DeviceNet, FNS_CANopen 및 FNS_ProfinetIO를 사용하여 FP-FNS 블록을 설정하는 데 필요합니다.
입력
공정 데이터 변수의 입력 및 출력
출력
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비트(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의 입력에서 사용할 수 없습니다.
이 펑션의 출력 ConfigDataTable은 WORD의 배열이어야 합니다.
다음 구문 표에서는 16비트, 32비트 및 64비트 변수와 그 배열을 FNS_InitConfigDataTable 펑션에 대한 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 |
글로벌 변수 리스트에서 프로젝트의 모든 POU에서 액세스할 수 있는 변수를 정의합니다.
이 예제에서 변수 ProcessData는 다음 구조를 갖는 ProcessDataStructure 형식의 DUT입니다.
DUT에는 세 개의 항목이 있으므로 출력 변수 ConfigData에는 다음 세 개의 크기를 갖는 WORD 배열이어야 합니다(예: Array [0..2] of WORD).
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
ConfigData: ARRAY [0..2] OF WORD:=[3(0)];
END_VAR
VAR_EXTERNAL
ProcessData: ProcessDataStructure;
END_VAR
변수 ConfigDataTable의 크기는 입력 변수ProcessData의 항목 수와 일치해야 합니다.
sys_bIsFirstScan이 TRUE이면 즉, 첫 번째 사이클에 있으면 이 펑션이 실행됩니다. 변수 ConfigData의 값은 입력 변수 ProcessData의 구조와 그 개수 및 요소 형식에 해당합니다.
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
If sys_bIsFirstScan then
ConfigData:=FNS_InitConfigDataTable(ProcessData);
end_if;