HTTP転送モードの設定
このFP命令により、nTransferIDで指定された転送設定エリア内にsOperation、sPLCDataFormat、およびsHTTPServerURLのHTTPクライアント転送設定が格納されます。
入力
転送設定IDを設定します。
値:0~15(昇順に入力してください)
転送方式パラメータを設定します。
サーバーアドレス
キーワード: SV
値: SV0~SV3 (サーバー0~サーバー3)
メモリエリアと転送のタイプ(データの送信または取得)を指定します
データ送信のキーワードUPLOAD
を使用します。
データ取得のキーワードDOWNLOAD
を使用します。
データの送信/取得のキーワードUPDOWN
を使用します。
転送に使用するコマンドを指定します。
データ送信のキーワードPOST
を使用します(転送タイプUPLOADおよびUPDOWNでのみ使用可能)。
データ取得のキーワードGET
を使用します。
例: メモリエリアからHTTPサーバー3にデータをアップロードします。'SV3,UPDOWN,POST'
転送するデータを指定します。または、命令FP_HTTP_GET_DATA_FORMAT.を使用します。
例: メモリエリア: DT100000、バイト数: 250バイト、最大収集数: 250バイト: 'DT100000,250,250'
サーバーURLを指定します。
例: '\data.csv'
出力
以下の条件でTRUEになります。
接続のタイムアウトが経過した場合
IPアドレスが無効な場合
エラーが発生した場合は、エラーコード番号のシステム変数sys_iEthernetConnectionErrorCodeを確認してください。
文字列データは、256文字以内にする必要があります。
この命令は、割り込みプログラム中で使用することはできません。
命令を実行する前に、FP_HTTP_SET_CONNECTIONまたはHTTPクライアントの設定ダイアログを使用してHTTPサーバーを指定する必要があります。
命令を実行する前にsys_bIsEthernetInitializingがFALSEであることを確認してください。命令が実行されるとsys_bIsEthernetInitializingはTRUEになります。sys_bIsEthernetInitializingがTRUEのときに命令を実行すると、エラーが発生します。
命令は、指定した転送設定用の転送要求フラグが「FALSE:転送要求なし」の場合のみ実行することができます。転送要求フラグが「TRUE:転送要求済み」の場合は、演算エラーが発生します。
この命令が正常に実行されると、システム変数sys_bIsCarryおよびsys_iEthernetConnectionErrorCodeがリセットされます。
HTTPクライアントの転送設定を設定した後で命令FP_HTTP_TRANSFER_REQUESTを実行すると、データが実際に送信または取得されます。
同時転送できるバイト数は、16個のすべての転送IDを合わせて1 MBです。
エラーが発生した場合は、エラーコード番号のシステム変数sys_iEthernetConnectionErrorCodeを確認してください。
パラメータに指定された値が許容範囲外の場合。
転送IDが昇順で指定されていない場合。
命令が割り込みプログラム内で実行された場合。
文字列データが256文字を超えた場合。
HTTPサーバーが命令FP_HTTP_SET_CONNECTIONで指定されている、またはHTTPクライアントの設定ダイアログが指定されている場合。
指定した転送設定用の転送要求フラグが、命令が実行されるときに「TRUE:転送要求済み」の場合。
パラメータに指定された値が許容範囲外の場合。
転送IDが昇順で指定されていない場合。
命令が割り込みプログラム内で実行された場合。
文字列データが256文字を超えた場合。
HTTPサーバーが命令FP_HTTP_SET_CONNECTIONで指定されている、またはHTTPクライアントの設定ダイアログが指定されている場合。
指定した転送設定用の転送要求フラグが、命令が実行されるときに「TRUE:転送要求済み」の場合。
Ethernet初期化中に命令を実行した場合は、sys_iEthernetConnectionErrorCodeが「11:Ethernet初期化中」に設定されます。
POUヘッダには、このプログラムで使用するすべての入力変数と出力変数を宣言します。 POUヘッダは全プログラム言語で使用できます。
VAR
sDestURL: STRING[32]:='\data.csv';
sStringData: STRING[32767]:='';
iID5: INT:=5;
bSetModeAsciiDataArea: BOOL:=FALSE;
bSetModeStringData: BOOL:=FALSE;
bErrorModeStringData: BOOL:=FALSE;
bErrorModeAsciiDataArea: BOOL:=FALSE;
END_VAR
1つ目の例は、最大32767文字を含むsource文字列を使用する場合、2つ目の例は、32767文字以上のsource文字列が格納されているDTアドレスを使用する場合を示しています。
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 HTTP data stored in string variable (strings can only contain max. of 32767 characters),4,1,45,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_VARIN,,iID5,40,2,42,4,);
B(B_VARIN,,'SV0~DOWNLOAD,GET',40,3,42,5,);
B(B_CONTACT,,bSetModeStringData,5,1,7,3,R);
B(B_VARIN,,'/data.csv',40,5,42,7,);
B(B_VAROUT,,bErrorModeStringData,53,2,55,4,);
B(B_VARIN,,sStringData,8,4,10,6,);
B(B_CONTACT,,sys_bIsEthernetInitializing,16,1,18,3,N);
B(B_F,MAX_LEN!,,10,5,16,7,,?D?C);
B(B_F,FP_HTTP_GET_DATA_FORMAT!,,16,3,31,7,,?D@'Var'?DnNumberOfCharacters?CsDataFormat);
B(B_F,FP_HTTP_SET_MODE!,,42,0,53,7,,?DEN?DnTransferID?DsOperation?DsPLCDataFormat?DsHTTPServerURL?AENO?CbError);
L(1,2,5,2);
L(7,2,16,2);
L(10,5,10,6);
L(10,5,16,5);
L(31,5,42,5);
L(18,2,42,2);
L(1,0,1,7);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_COMMENT,, ^Set mode to transfer HTTP data stored in memory area > 32767 characters,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 := 8 ;
NETWORK_BODY
B(B_VARIN,,iID5,39,3,41,5,);
B(B_VARIN,,'SV0~UPDOWN,POST',39,4,41,6,);
B(B_VARIN,,'DT100000~102345~12345',39,5,41,7,);
B(B_CONTACT,,bSetModeAsciiDataArea,5,2,7,4,R);
B(B_VARIN,,sDestURL,39,6,41,8,);
B(B_VAROUT,,bErrorModeAsciiDataArea,52,3,54,5,);
B(B_CONTACT,,sys_bIsEthernetInitializing,16,2,18,4,N);
B(B_F,FP_HTTP_SET_MODE!,,41,1,52,8,,?DEN?DnTransferID?DsOperation?DsPLCDataFormat?DsHTTPServerURL?AENO?CbError);
L(1,3,5,3);
L(7,3,16,3);
L(18,3,41,3);
L(1,0,1,8);
END_NETWORK_BODY
END_NET_WORK
END_BODY
(* Set mode to transfer HTTP data stored in string variable (strings can only contain max. of 32767 characters) *)
If DF(bSetModeStringData) And not sys_bIsEthernetInitializing then
FP_HTTP_SET_MODE(nTransferID := iID5,
sOperation := 'SV0,DOWNLOAD,GET',
sPLCDataFormat := FP_HTTP_GET_DATA_FORMAT(sStringData, LEN(sStringData)),
sHTTPServerURL := '/data.csv',
bError => bErrorModeStringData);
End_if;
(* Set mode to transfer HTTP data stored in memory area > 32767 characters *)
If DF(bSetModeAsciiDataArea) And not sys_bIsEthernetInitializing then
FP_HTTP_SET_MODE(nTransferID := iID5,
sOperation := 'SV0,UPDOWN,POST',
sPLCDataFormat := 'DT100000,102345,12345',
sHTTPServerURL := sDestURL,
bError => bErrorModeAsciiDataArea);
End_if;