FTP転送モードの設定
このFP命令により、nTransferIDで指定された転送設定エリア内にsOperation、sPLCFullFileNameOrDataFormat、およびsFTPServerFullFileNameのFTPクライアント転送設定が格納されます。
入力
転送設定IDを設定します。
値:0~15(昇順に入力してください)
転送方式パラメータを設定します。
サーバーアドレス(必須のキーワード)
キーワード: SV
文法: 'SVx'
値: SV0~SV3 (サーバー0~サーバー3)
転送対象と方式(必須のキーワード)
パラメータ文字列 |
対象 |
転送方式 |
---|---|---|
|
ファイル |
サーバーへ送付(上書き方式) |
|
サーバーへ送付(上書き方式) |
|
|
サーバーへ送付(リネーム方式) |
|
|
サーバーから取得 |
|
|
メモリエリア |
サーバーへ送付(上書き方式) |
|
サーバーへ送付(上書き方式) |
|
|
サーバーへ送付(リネーム方式) |
|
|
サーバーから取得 |
転送後のファイル処理(必須のキーワード)
DEL
:ファイルを削除
NON
: ファイルを削除しない
上書き方式を使用してファイルをFPTサーバー1に送信し、転送後にファイルを削除しない:'SV1,PUTFILE-OVW,NON'
リネーム方式を使用して、ファイルをFTPサーバー0に送信し、転送後にファイルを削除する:'SV0,PUTFILE-REN,DEL'
FTPサーバー2からファイルを取得し、転送後にファイルを削除する:'SV2,GETFILE,DEL'
転送対象(メモリエリアからのファイルまたはデータ)と転送方式(PUTまたはGET)に従って設定します。
変数のデータの転送は、命令FP_FTP_GET_DATA_FORMATを使用して実行できます。この命令の出力は、sPLCFullFileNameOrDataFormatに接続され、変数のデータフォーマット文字列(メモリエリア、サイズ、およびデータ型)を指定する文字列を読み出します。送信されたデータは、変数のデータ型に従ってCSVファイルに書き込まれるか、CSVファイルから読み取られます。
転送対象:ファイル
ソースファイル名を設定します。
PUTFILE
:SDカードのファイルのファイル名を相対パスで指定します。例:'\LOG\MyData.csv'
GETFILE
:FTPサーバーにログインするユーザーのホームディレクトリからのファイル名を相対パスで指定します。例:'\LOG\MyData.csv'
転送対象:メモリエリアからのデータ
PUTDATA
:FP_FTP_GET_DATA_FORMATの入力に接続された変数に格納されたデータは、sFTPServerFullFileNameで指定されたCSVファイルに書き込まれます。この転送方法では、フォーマットyymmdd_hhmmssのタイムスタンプをファイル名に追加できます。キーワード'TOP'
と'END'
を使用して、タイムスタンプをファイル名の前に追加するか、後に追加するかを指定します。
GETDATA
:sFTPServerFullFileNameで指定されたCSVファイルのデータは、FP_FTP_GET_DATA_FORMATの入力Varに接続された変数に書き込まれます。
転送対象(メモリエリアからのファイルまたはデータ)と転送方式(PUTまたはGET)に従って設定します。
転送対象:ファイル
PUTFILE
:FTPサーバーにログインするユーザーのホームディレクトリからの相対パスを持つフォルダ名を指定します。ホームディレクトリを指定する場合は、「/」または「\」のみを指定します。
GETFILE
:SDメモリカードの格納フォルダ名を相対パスで指定します。
転送対象:メモリエリアからのデータ
PUTDATA
:データを書き込む宛先CSVファイル名を指定します。この転送方法では、フォーマットyymmdd_hhmmssのタイムスタンプをファイル名に追加できます。キーワード'TOP'
と'END'
を使用して、タイムスタンプをファイル名の前に追加するか、後に追加するかを指定します。
変換例:
データをディレクトリ「\FTP」にある宛先ファイル「PutData1.bin」に転送し、タイムスタンプは追加しない:'\FTP\PutData1.bin'
データをディレクトリ「\FTP」にある宛先ファイル「PutData2.bin」に転送し、タイムスタンプをファイル名の先頭に追加する:'\FTP\PutData2.bin,TOP'
データをディレクトリ「\FTP」にある宛先ファイル「PutData3.bin」に転送し、タイムスタンプをファイル名の末尾に追加する:'\FTP\PutData3.bin,END'
GETDATA
:データを読み取るソースCSVファイル名を指定します。FTPサーバーにログインするユーザーのホームディレクトリからの相対パスを持つファイル名とフォルダ名を指定します。
出力
以下の条件でTRUEになります。
接続のタイムアウトが経過した場合
IPアドレスが無効な場合
エラーが発生した場合は、エラーコード番号のシステム変数sys_iEthernetConnectionErrorCodeを確認してください。
文字列データは、256文字以内にする必要があります。
この命令は、割り込みプログラム中で使用することはできません。
命令を実行する前に、FP_FTP_SET_CONNECTIONまたはFTPクライアントの設定ダイアログを使用してFTPサーバーを指定する必要があります。
命令を実行する前にsys_bIsEthernetInitializingがFALSEであることを確認してください。命令が実行されるとsys_bIsEthernetInitializingはTRUEになります。sys_bIsEthernetInitializingがTRUEのときに命令を実行すると、エラーが発生します。
命令は、指定した転送設定用の転送要求フラグまたは指定したnLogID番号の転送要求フラグがFALSEの場合にのみ実行することができます。転送要求フラグがTRUEの場合、演算エラーが発生します。
この命令が正常に実行されると、システム変数sys_bIsCarryおよびsys_iEthernetConnectionErrorCodeがリセットされます。
FTPクライアントの転送設定が完了すると、FP_FTP_TRANSFER_REQUESTの実行時にデータはファイルに送信されるか、ファイルから取得されます。
エラーが発生した場合は、エラーコード番号のシステム変数sys_iEthernetConnectionErrorCodeを確認してください。
パラメータに指定された値が許容範囲外の場合。
転送IDが昇順で指定されていない場合。
命令が割り込みプログラム内で実行された場合。
文字列データが256文字を超えた場合。
命令FP_FTP_SET_CONNECTIONまたはFTPクライアントの設定ダイアログで設定されていないFTPサーバーが指定されている場合。
指定した転送設定用の転送要求フラグが、命令が実行されるときに「TRUE:転送要求済み」の場合。
指定したnLogID番号の転送要求フラグがTRUEの場合。例:sys_blsLog0DataRecordingActiveがTRUEの場合。
パラメータに指定された値が許容範囲外の場合。
転送IDが昇順で指定されていない場合。
命令が割り込みプログラム内で実行された場合。
文字列データが256文字を超えた場合。
命令FP_FTP_SET_CONNECTIONまたはFTPクライアントの設定ダイアログで設定されていないFTPサーバーが指定されている場合。
指定した転送設定用の転送要求フラグが、命令が実行されるときに「TRUE:転送要求済み」の場合。
指定したnLogID番号の転送要求フラグがTRUEの場合。例:sys_blsLog0DataRecordingActiveがTRUEの場合。
Ethernet初期化中に命令を実行した場合は、sys_iEthernetConnectionErrorCodeが「11:Ethernet初期化中」に設定されます。
POUヘッダには、このプログラムで使用するすべての入力変数と出力変数を宣言します。 POUヘッダは全プログラム言語で使用できます。
VAR
bSetModeFileError: BOOL:=FALSE;
bSetModeFileOK: BOOL:=FALSE;
iID10: INT:=10;
bSetModeFile: BOOL:=FALSE;
wErrorCode: WORD:=0;
END_VAR
bSetModeFileがFALSEからTRUEに変わり、sys_bIsEthernetInitializingがFALSEであると、命令が実行されます。
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_COMMENT,, ^Set mode to transfer file located on SD card of FP7 PLC,4,1,34,4,);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 7 ;
NETWORK_BODY
B(B_CONTACT,,bSetModeFile,5,1,7,3,R);
B(B_VARIN,,'SV0~PUTDATA-OVW~NON',23,3,25,5,);
B(B_VARIN,,'\CSV_FILES\Data1.csv',23,4,25,6,);
B(B_VAROUT,,bSetModeFileError,43,2,45,4,);
B(B_VARIN,,'\B:\LOG\MyData.csv~END',23,5,25,7,);
B(B_VARIN,,iID10,23,2,25,4,);
B(B_CONTACT,,sys_bIsEthernetInitializing,16,1,18,3,N);
B(B_F,FP_FTP_SET_MODE!,,25,0,41,7,,?DEN?DnTransferID?DsOperation?DsPLCFullFileNameOrDataFormat?DsFTPServerFullFileName?AENO?CbError);
L(1,2,5,2);
L(7,2,16,2);
L(18,2,25,2);
L(1,0,1,7);
L(41,3,43,3);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 4 ;
NETWORK_BODY
B(B_CONTACT,,bSetModeFileError,5,1,7,3,);
B(B_F,E_MOVE!,,25,0,31,4,,?DEN?D?AENO?C);
B(B_VARIN,,sys_iEthernetConnectionErrorCode,23,2,25,4,);
B(B_VAROUT,,wErrorCode,31,2,33,4,);
L(7,2,25,2);
L(1,2,5,2);
L(1,0,1,4);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 3 ;
NETWORK_BODY
B(B_CONTACT,,bSetModeFileError,5,1,7,3,N);
B(B_COIL,,bSetModeFileOK,28,1,30,3,);
L(7,2,28,2);
L(1,2,5,2);
L(1,0,1,3);
END_NETWORK_BODY
END_NET_WORK
END_BODY
If DF(bSetModeFile) AND NOT sys_bIsEthernetInitializing then
FP_FTP_SET_MODE(nTransferID := iID10,
sOperation := 'SV0,PUTDATA-OVW,NON',
sPLCFullFileNameOrDataFormat := FP_FTP_GET_DATA_FORMAT(Var := arrayValues,
nSize := Size_Of_Var(arrayValues),
nColumns := 8),
sFTPServerFullFileName := '\B:\LOG\MyData.csv,END',
bError => bSetModePlcDataError);
End_if;
If (bSetModePlcDataError) then
wErrorCode := sys_iEthernetConnectionErrorCode;
Else
bSetModePlcDataOK := True;
End_If;