FP_HTTP_SET_MODE

HTTP転送モードの設定

このFP命令により、nTransferIDで指定された転送設定エリア内にsOperationsPLCDataFormat、およびsHTTPServerURLのHTTPクライアント転送設定が格納されます。

パラメータ

入力

nTransferID (WORD, INT, UINT)

転送設定IDを設定します。

値:0~15(昇順に入力してください)

sOperation (STRING)

転送方式パラメータを設定します。

  • サーバーアドレス

    キーワード: SV

    値: SV0~SV3 (サーバー0~サーバー3)

  • メモリエリアと転送のタイプ(データの送信または取得)を指定します

    • データ送信のキーワードUPLOADを使用します。

    • データ取得のキーワードDOWNLOADを使用します。

    • データの送信/取得のキーワードUPDOWNを使用します。

    転送に使用するコマンドを指定します。

    • データ送信のキーワードPOSTを使用します(転送タイプUPLOADおよびUPDOWNでのみ使用可能)。

    • データ取得のキーワードGETを使用します。

    例: メモリエリアからHTTPサーバー3にデータをアップロードします。'SV3,UPDOWN,POST'

sPLCDataFormat (STRING)

転送するデータを指定します。または、命令FP_HTTP_GET_DATA_FORMAT.を使用します。

例: メモリエリア: DT100000、バイト数: 250バイト、最大収集数: 250バイト: 'DT100000,250,250'

sHTTPServerURL (STRING)

サーバーURLを指定します。

例: '\data.csv'

出力

bError (BOOL)

以下の条件でTRUEになります。

  • 接続のタイムアウトが経過した場合

  • IPアドレスが無効な場合

エラーが発生した場合は、エラーコード番号のシステム変数sys_iEthernetConnectionErrorCodeを確認してください。

解説

  • 文字列データは、256文字以内にする必要があります。

  • この命令は、割り込みプログラム中で使用することはできません。

  • 命令を実行する前に、FP_HTTP_SET_CONNECTIONまたはHTTPクライアントの設定ダイアログを使用してHTTPサーバーを指定する必要があります。

  • 命令を実行する前にsys_bIsEthernetInitializingFALSEであることを確認してください。命令が実行されるとsys_bIsEthernetInitializingTRUEになります。sys_bIsEthernetInitializingTRUEのときに命令を実行すると、エラーが発生します。

  • 命令は、指定した転送設定用の転送要求フラグが「FALSE:転送要求なし」の場合のみ実行することができます。転送要求フラグが「TRUE:転送要求済み」の場合は、演算エラーが発生します。

  • この命令が正常に実行されると、システム変数sys_bIsCarryおよびsys_iEthernetConnectionErrorCodeがリセットされます。

  • HTTPクライアントの転送設定を設定した後で命令FP_HTTP_TRANSFER_REQUESTを実行すると、データが実際に送信または取得されます。

  • 同時転送できるバイト数は、16個のすべての転送IDを合わせて1 MBです。

  • エラーが発生した場合は、エラーコード番号のシステム変数sys_iEthernetConnectionErrorCodeを確認してください。

エラーフラグ

sys_bIsOperationErrorHold (TRUEになり、TRUEを保持)
  • パラメータに指定された値が許容範囲外の場合。

  • 転送IDが昇順で指定されていない場合。

  • 命令が割り込みプログラム内で実行された場合。

  • 文字列データが256文字を超えた場合。

  • HTTPサーバーが命令FP_HTTP_SET_CONNECTIONで指定されている、またはHTTPクライアントの設定ダイアログが指定されている場合。

  • 指定した転送設定用の転送要求フラグが、命令が実行されるときに「TRUE:転送要求済み」の場合。

sys_bIsOperationErrorNonHold (1回のスキャンに対してTRUE)
  • パラメータに指定された値が許容範囲外の場合。

  • 転送IDが昇順で指定されていない場合。

  • 命令が割り込みプログラム内で実行された場合。

  • 文字列データが256文字を超えた場合。

  • HTTPサーバーが命令FP_HTTP_SET_CONNECTIONで指定されている、またはHTTPクライアントの設定ダイアログが指定されている場合。

  • 指定した転送設定用の転送要求フラグが、命令が実行されるときに「TRUE:転送要求済み」の場合。

sys_bIsCarry (1回のスキャンに対してTRUE)
  • Ethernet初期化中に命令を実行した場合は、sys_iEthernetConnectionErrorCodeが「11:Ethernet初期化中」に設定されます。

POUヘッダ

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

POUボディ

1つ目の例は、最大32767文字を含むsource文字列を使用する場合、2つ目の例は、32767文字以上のsource文字列が格納されているDTアドレスを使用する場合を示しています。

LDボディ

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

STボディ

(* 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;

最終修正日: 2024-03-07このページに関するフィードバックお問い合わせ窓口