HTTPプロトコル用データフォーマット文字列の生成
このFP命令は、データフォーマット(FPアドレスと長さ)を指定する文字列を生成します。命令FP_HTTP_SET_MODEの入力sPLCDataFormatに適合した文字列を出力変数sDataFormatに書き込みます。
入力
ASCIIデータを含む文字列
ワードまたは文字列のデータサイズ(バイト単位)
出力
FP_HTTP_SET_MODEの入力sPLCDataFormatのデータフォーマットを指定する文字列
命令を実行する前に、FP_HTTP_SET_MODEまたはHTTPクライアントの設定ダイアログを使用して転送設定を指定する必要があります。
命令を実行する前にsys_bIsEthernetInitializingがFALSEであることを確認してください。命令が実行されるとsys_bIsEthernetInitializingはTRUEになります。sys_bIsEthernetInitializingがTRUEのときに命令を実行すると、エラーが発生します。
命令は、指定した転送設定用の転送要求フラグが「FALSE:転送要求なし」の場合のみ実行することができます。転送要求フラグが「TRUE:転送要求済み」の場合は、演算エラーが発生します。
この命令が正常に実行されると、システム変数sys_bIsCarryおよびsys_iEthernetConnectionErrorCodeがリセットされます。
この命令は、PLCに永続的に保存されているEthernet設定データを上書きしません。PLCの電源をオフにしてから再度オンにすると、PLCに保存されているEthernet設定データが再び使用されます。
HTTPクライアントの転送設定を設定した後で命令FP_HTTP_TRANSFER_REQUESTを実行すると、データが実際に送信または取得されます。
エラーが発生した場合は、エラーコード番号のシステム変数sys_iEthernetConnectionErrorCodeを確認してください。
接続のタイムアウトが経過した場合
IPアドレスが無効な場合
接続のタイムアウトが経過した場合
IPアドレスが無効な場合
Ethernet初期化中に命令を実行した場合は、sys_iEthernetConnectionErrorCodeが「11:Ethernet初期化中」に設定されます。
POUヘッダには、このプログラムで使用するすべての入力変数と出力変数を宣言します。 POUヘッダは全プログラム言語で使用できます。
VAR
sStringData: STRING[31767]:='';
iID5: INT:=5;
bSetModeStringData: BOOL:=FALSE;
bErrorModeStringData: BOOL:=FALSE;
END_VAR
bSetModeStringDataが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 := 7 ;
NETWORK_BODY
B(B_VARIN,,iID5,39,2,41,4,);
B(B_VARIN,,'SV0~UPLOAD;POST',39,3,41,5,);
B(B_CONTACT,,bSetModeStringData,5,1,7,3,R);
B(B_VARIN,,'/PLC?ment',39,5,41,7,);
B(B_VAROUT,,bErrorModeStringData,52,2,54,4,);
B(B_VARIN,,sStringData,8,4,10,6,);
B(B_CONTACT,,sys_bIsEthernetInitializing,16,1,18,3,N);
B(B_F,LEN!,,11,4,16,7,,?DIN?C);
B(B_F,FP_HTTP_GET_DATA_FORMAT!,,16,3,31,7,,?D@'Var'?DnNumberOfCharacters?CsDataFormat);
B(B_F,FP_HTTP_SET_MODE!,,41,0,52,7,,?DEN?DnTransferID?DsOperation?DsPLCDataFormat?DsHTTPServerURL?AENO?CbError);
L(1,2,5,2);
L(7,2,16,2);
L(11,5,11,6);
L(18,2,41,2);
L(10,5,16,5);
L(31,5,41,5);
L(1,0,1,7);
END_NETWORK_BODY
END_NET_WORK
END_BODY
If DF(bSetModeStringData) AND not sys_bIsEthernetInitializing Then
FP_HTTP_SET_MODE(nTransferID := iID5,
sOperation := 'SV0,UPLOAD;POST',
sPLCDataFormat := FP_HTTP_GET_DATA_FORMAT(sStringData,
LEN(sStringData)),
sHTTPServerURL := '/PLC?ment',
bError => bErrorModeStringData);
End_if;