FTPコネクションのサーバー設定
このFP命令は、指定されたパラメータに従って、CPUユニット内で指定されたFTPクライアントへのコネクションのサーバー設定を定義します。
入力
サーバーアドレス(必須のキーワード)
キーワード: SV
値: SV0~SV3 (サーバー0~サーバー3)
IPアドレスまたはホスト名(必須のキーワード)
IPアドレス
IPアドレスの場合は、最初にキーワードIPv4
またはIPv6
を指定します。
IPv4の文法: 例'IPv4=111.122.133.144'
IPv6の文法: 例'IPv6=1111:122:2:1555:0:0:1888'
IPv4アドレスの場合、範囲の制限があることに注意してください。 無効なIPアドレスが命令に指定されたとき、演算エラーは発生せず、出力bErrorがTRUEにセットされます。
ホストネーム
キーワード: HOST
文法: 例:'HOST=FTP.pidsx.com'
ポート番号 (オプションパラメータ)
キーワード: 'PORT'
文法: 'PORT=xxxxx'
値:1~65535 (初期値:21)
オープン方式(オプションパラメータ)
キーワード: OPEN
文法: 'OPEN=xxxx'
値:act
(アクティブ)、pasv
(パッシブ) (初期値:act
)
SSL3/TSL1認証(オプションパラメータ)
SSL3/TSL1認証を使用するか否かを指定します。
キーワード:
SSL
: SSL3/TLS1を使用する
NON
: SSL3/TLS1を使用しない(デフォルト)
SSL3/TLS1認証を使用して、IPアドレス192.255.2.10、ポート番号21、アクティブオープン方式でFTPサーバー番号0に接続します。'SV0,IPv4=192.255.2.10,PORT=21,OPEN=act,SSL'
SSL3/TLS1認証を使用して、IPアドレス1111:1222::1555:0:0:1888で、ポート番号を省略し(初期値ポート21を使用)、オープン方式を省略して(初期値=アクティブ)、FTPサーバー番号1に接続します。'SV1,IPv6=1111:1222::1555:0:0:1888,SSL'
認証せずに、ホスト名FTP.pidsx.com、ポート番号28、パッシブオープン方式でFTPサーバー番号2に接続します。'SV2,HOST=FTP.pidsx.com,PORT=28,OPEN=pasv,NON'
ログインデータの設定
ユーザー名(最大32文字)
キーワード: USER
文法:'USER=xxx'
(初期値:root)。'USER='
を使用して、ユーザー名を削除します。
パスワード(最大32文字: 大文字と小文字が使用できます)
キーワード: PASS
文法:'PASS=passwd'
(初期値:root)。'PASS='
を使用して、パスワードを削除します。
INITIAL
:ユーザー名とパスワードを初期値の設定の「root」と「root」にリセットします。
KEEP
: 現在のログイン設定を保持します。
変換例:
ユーザー名を「Admin」、パスワードを「Panasonic」に設定する場合:'USER=Admin,PASS=Panasonic'
ユーザー名を「Supervisor」に設定して、パスワードを削除する場合:'USER=Supervisor,PASS='
ユーザー名とパスワードを削除する場合:'USER=,PASS='
ユーザー名とパスワードを初期値の値にリセットする場合:'INITIAL'
現在のユーザー名とパスワードを保持する場合:'KEEP'
必要に応じて、オプションの通信パラメータを設定します。
接続タイムアウト
キーワード: TOUT
文法: 'TOUT=xxx'
(初期値:60秒)
値: 30~300 秒
リトライ回数
キーワード: RTRY
文法: 'RTRY=x'
(デフォルト: 3回)
値:0~3
リトライ間隔
キーワード: RTTM
文法: 'RTTM=xxxxx'
(初期値:600秒)
値: 10~86400 秒
値は10秒単位で指定することができます。10以下の値は切り捨てられます。
例: 38秒を指定した場合は30秒になります。
このパラメータには、次の2つのキーワードが追加されています。
INITIAL
:接続タイムアウト、再試行回数、リトライ間隔を初期値設定にリセットします。
KEEP
:現在の通信設定を保持します。
変換例:
接続タイムアウトの設定:30秒、再試行回数:2、リトライ間隔:500秒:'TOUT=30,RTRY=2,RTTM=500'
接続タイムアウトの設定:270秒、リトライなし、リトライ間隔:4900秒:'TOUT=270,RTRY=0,RTTM=4900'
接続タイムアウトの設定:30秒、再試行回数:25、リトライ間隔:変更しない:'TOUT=30,RTRY=25'
接続タイムアウトの設定:変更しない、再試行回数:25、リトライ間隔:3000秒:',RTRY=25,RTTM=3000'
初期値の設定にリセット(接続タイムアウト:60秒、再試行回数:3、リトライ間隔:600秒):'INITIAL'
現在の設定をすべて保持:'KEEP'
出力
以下の条件でTRUEになります。
接続のタイムアウトが経過した場合
IPアドレスが無効な場合
エラーが発生した場合は、エラーコード番号のシステム変数sys_iEthernetConnectionErrorCodeを確認してください。
すべてのキーワードは、カンマで区切って登録します。例. 'NAME=abcd,FROM=sender@server.com'
文字列データは、256文字以内にする必要があります。
この命令は、割り込みプログラム中で使用することはできません。
定数を指定する文字のオペランドには、大文字または小文字を使用することができます。「Abcd」、「ABCD」、「abcd」は同義語となります。しかし、ファイル名では大文字小文字が区別されます。
命令を実行する前にsys_bIsEthernetInitializingがFALSEであることを確認してください。命令が実行されるとsys_bIsEthernetInitializingはTRUEになります。sys_bIsEthernetInitializingがTRUEのときに命令を実行すると、エラーが発生します。
命令は、指定した転送設定用の転送要求フラグまたは指定したnLogID番号の転送要求フラグがFALSEの場合にのみ実行することができます。転送要求フラグがTRUEの場合、演算エラーが発生します。
この命令が正常に実行されると、システム変数sys_bIsCarryおよびsys_iEthernetConnectionErrorCodeがリセットされます。
エラーが発生した場合は、エラーコード番号のシステム変数sys_iEthernetConnectionErrorCodeを確認してください。
パラメータに指定された値が許容範囲外の場合。
同じキーワードを2回以上指定した場合。
指定した転送設定用の転送要求フラグが、命令が実行されるときに「TRUE:転送要求済み」の場合。
指定したnLogID番号の転送要求フラグがTRUEの場合。例:sys_blsLog0DataRecordingActiveがTRUEの場合。
サーバー番号が昇順で指定されていない場合。
命令が割り込みプログラム内で実行された場合。
文字列データが256文字を超えた場合。
パラメータに指定された値が許容範囲外の場合。
同じキーワードを2回以上指定した場合。
指定した転送設定用の転送要求フラグが、命令が実行されるときに「TRUE:転送要求済み」の場合。
指定したnLogID番号の転送要求フラグがTRUEの場合。例:sys_blsLog0DataRecordingActiveがTRUEの場合。
サーバー番号が昇順で指定されていない場合。
命令が割り込みプログラム内で実行された場合。
文字列データが256文字を超えた場合。
命令が不正なIPアドレスで実行された場合、sys_iEthernetConnectionErrorCodeが「1:不正なIPアドレスの指定」に設定されます
Ethernet初期化中に命令を実行した場合は、sys_iEthernetConnectionErrorCodeが「11:Ethernet初期化中」に設定されます。
POUヘッダには、このプログラムで使用するすべての入力変数と出力変数を宣言します。 POUヘッダは全プログラム言語で使用できます。
VAR
bError: BOOL:=FALSE;
wErrorCode: WORD:=0;
bSetConnectionOK: BOOL:=FALSE;
bSetConnectionError: BOOL:=FALSE;
bSetConnection: BOOL:=FALSE;
END_VAR
bSetConnectionが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 := 9 ;
NETWORK_BODY
B(B_CONTACT,,bSetConnection,5,1,7,3,R);
B(B_CONTACT,,sys_bIsEthernetInitializing,16,1,18,3,N);
B(B_VARIN,,'SV0~IPv4=192.168.178.64~PORT=21~OPEN=pasv~NON',21,5,23,7,);
B(B_VARIN,,'USER=user~PASS=user',21,6,23,8,);
B(B_VARIN,,'TOUT=30~RTRY=0~RTTM=120',21,7,23,9,);
B(B_VAROUT,,bSetConnectionError,36,5,38,7,);
B(B_F,FP_FTP_SET_CONNECTION!,,23,3,36,9,,?DEN?DsServer?DsLogin?DsCommunication?AENO?CbError);
L(7,2,16,2);
L(1,2,5,2);
L(18,2,18,5);
L(18,5,23,5);
L(1,0,1,9);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 4 ;
NETWORK_BODY
B(B_CONTACT,,bSetConnectionError,6,1,8,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(8,2,25,2);
L(1,2,6,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,,bError,6,1,8,3,N);
B(B_COIL,,bSetConnectionOK,28,1,30,3,);
L(8,2,28,2);
L(1,2,6,2);
L(1,0,1,3);
END_NETWORK_BODY
END_NET_WORK
END_BODY
If DF(bSetConnection) AND NOT sys_bIsEthernetInitializing then
FP_FTP_SET_CONNECTION(sServer := 'SV0,IPv4=192.168.178.64,PORT=21,OPEN=pasv,NON',
sLogin := 'USER=user,PASS=user',
sCommunication := 'TOUT=30,RTRY=0,RTTM=120',
bError => bSetConnectionError);
End_if;
If (bSetConnectionError) then
wErrorCode := sys_iEthernetConnectionErrorCode;
End_if;
If NOT bError then
bSetConnectionOK := TRUE;
End_if;