FP-FNSブロックのデータの設定
FNS_InitConfigNameTableファンクションは、変数ProcessDataTableからConfigNameTableを作成します。これはシングルエレメントのデータ型またはマルチエレメントのデータ型を使用できます。
入力
プロセスデータ変数の入力および出力
出力
FP-FNSブロックのコンフィグレーションデータ。変数ConfigNameTableの配列サイズは、ProcessDataTable変数の要素数と一致する必要があります。
変数ConfigNameTableのサイズがProcessDataTableの構造に一致することを確認します。例えば、ProcessDataTableが3つの要素で構成されている場合、ConfigNameTable変数は「Array[0..2] of WORD」になり、サイズが要素数と一致する必要があります。ProcessDataTable変数の要素が1つだけ(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の配列でなければなりません。
次の構文表は、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ビット |
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が3つの要素から構成されているとき、出力変数configNames1は、3つの要素をもつarray of WORD型の配列でなければなりません。(例: Array [0..2] of WORD)
このファンクションは、sys_bIsFirstScanがTRUEのとき、すなわちPLCの最初のサイクルで実行されます。変数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;