1. TOP
  2. OMRON
  3. NX/NJシリーズ
  4. 上位ネットワーク
  5. FTP

概略

PLCのFTPサーバ機能の説明とFTPクライアント通信命令の使い方を紹介します

FTPサーバ機能

PLCの内臓EthernetポートにFTPサーバ機能が備わっています

FTPクライアント通信命令

PLCからFTPサーバに対してFTPコマンドを使ってファイル転送をする命令が用意されいます

FTPサーバ機能

外部PCなどからPLCの内臓EthernetポートにFTPコマンドを発行することでSDカードのファイルを読み書きすることができます
FTPクライアントのみ使用する場合はこの設定は必要ありません

PLCのFTPサーバを有効にする

FTPサーバを有効にするには[内臓EtherNet/IPポート]の[FTP]の項目の[FTPサーバ]のラジオボタンで[使用する]を選択します
ポート番号は一般的に21番を使います
ログイン名とパスワードを設定します
FTPServer

FTPクライアント通信命令

FTPサーバとの間でファイルをアップロード/ダウンロードしたりファイルリストの取得やファイルの削除をする命令が用意されています

FTPPutFile PLCのSDカードにあるファイルをFTPサーバにアップロードします
FTPGetFile FTPサーバにあるファイルをPLCのSDカードにダウンロードします
FTPGetFileList FTPサーバにあるファイルのリストを取得します
FTPRemoveDir FTPサーバにあるディレクトリを削除します
FTPRemoveFile FTPサーバにあるファイルを削除します

NOTE
自身のSDカードにFTPGetFileList, FTPRemoveDir, FTPRemoveFile を実行することもできます
その際はFTPサーバ機能を有効にしてください

FTPPutFileサンプル

FTPPutFileファンクションブロック

ftpputfilefb
入力
ConnectSvr
接続先FTPサーバ設定
SvrDirName
FTPサーバディレクトリ
LocalDirName
ローカルディレクトリ
FileName
ファイル名
ExecOption
実行リトライ設定
RetryCfg
実行リトライ設定
Cancel
取り消し
出力
CommandCanceled
取り消し完了
PutNum
アップロードファイル数
入出力
PutFileResult
アップロード済みファイル結果

変数の説明

変数 内容 データ型
ConnectSvr 接続先FTPサーバ設定パラメータ _sFTP_CONNECT_SVR
Adr IPアドレスまたはホスト名 STRING[200]
PortNo FTPサーバのポート番号 UINT
UserName FTPサーバのユーザ名 STRING[33]
Password パスワード STRING[33]
SvrDirName FTPサーバのルートディレクトリ
初期値=''
STRING[256]
LocalDirName SDカードのディレクトリ
初期値='/'
STRING[256]
FileName ファイル名
(ワイルドカード使用可)
STRING[256]
ExecOption FTP実行オプション _sFTP_CONNECT_SVR
PassiveMode パッシブモード指定
TRUE:Passive FALSE:Active
BOOL
ASCIIMode ASCIIモード指定
TRUE:ASCII FALSE:Binary
BOOL
FileRemove 転送後ファイル削除指定 BOOL
OverWrite 転送先のファイルを上書き BOOL
Reserved 予約 BOOL[0..7]
RetryCfg 命令リトライ設定 _sFTP_RETRY_CFG
TimeOut タイムアウト時間 0-60s 初期値:20s UINT
RetryNum リトライ回数 初期値:0 UINT
RetryInterval リトライ間隔 初期値:1s UINT
PutFileResult アップロード済みファイルの結果 _sFTP_FILE_RESULT
Name ファイル名 STRING[256]
TxError 転送異常 BOOL
RemoveError RemoveError BOOL
Reserved 予約 Byte[0..3]

サンプル

PLCのSDメモリカードのdataディレクトリにあるファイルを全てFTPサーバにアップロードするサンプル

FTPPutFile

FTPGetFileサンプル

FTPGetFileファンクションブロック

ftpgetfilefb
入力
ConnectSvr
接続先FTPサーバ設定
SvrDirName
FTPサーバディレクトリ
LocalDirName
ローカルディレクトリ
FileName
ファイル名
ExecOption
実行リトライ設定
RetryCfg
実行リトライ設定
Cancel
取り消し
出力
CommandCanceled
取り消し完了
GetNum
ダウンロードファイル数
入出力
GetFileResult
ダウンロード済みファイル結果

変数の説明

データ型
変数内容
GetFileResult ダウンロード済みファイルの結果 _sFTP_FILE_RESULT
Name ファイル名 STRING[256]
TxError 転送異常 BOOL
RemoveError RemoveError BOOL
Reserved 予約 Byte[0..3]

※ その他の変数はFTPPutFileと同じ

サンプル

FTPサーバにある全てのファイルをPLCのSDメモリカードのdataフォルダにダウンロードするサンプル
FTPGetFile

GetFileListを使ってファイルを選別してアップロードするサンプル

FTPPutFileファンクションブロック

ftpgetfilelistfb
入力
ConnectSvr
接続先FTPサーバ設定
SvrDirName
FTPサーバディレクトリ
GetFileNum
取得ファイル数
SortOrder
並び替え順序
ExecOption
FTP実行オプション
RetryCfg
実行リトライ設定
Cancel
取り消し
出力
CommandCanceled
取り消し完了
StoredNum
取得済みファイル数
入出力
FileList
ファイル詳細

変数の説明

データ型
変数内容
GetFileNum 取得ファイル数 1-1000 UINT
Sortorder ファイルリストの並び順
_NAME_ASC:名前昇順
_NAME_DESC:名前降順
_eFILE_SORT_ORDER
StoredNum 取得済みファイル数 0-1000 UINT

※ その他の変数はFTPPutFileと同じ

サンプル

PLCのSDメモリカードのdataディレクトリにあるファイルうち転送済み日付より新しいファイルをFTPサーバにアップロードするサンプル

FTPGetFileList

FTPGetFileList

2ブロック目:
FTPGetFileList命令でPLCのSDメモリカードに入っているファイルのリストを日付昇順で取得します

6-8ブロック目:
取得済みファイル数(StoredNum)のうちファイルのタイムスタンプをチェックしながらループします

  1. ファイル数(StoredNum)分をループ
  2. フォルダならパス
  3. 転送済み日時(LastTimeStamp) <= ファイルのタイムスタンプ
  4. FTPPutFileでファイルをアップロード
  5. 1へ戻る
全てのファイルの処理を終えるとDataExistがOFFのままループを抜けるのでDataExistがOFFなら処理を終了します

NOTE
転送済み日付とタイムスタンプを比較する時にイコールを付けるのはFTPの仕様上タイムスタンプの精度が制限されているために秒が0秒固定になってしまうことあります
そのため同じタイムスタンプのファイルが複数できることが多いので上書きするようにしています

ST部分

ダウンロード

ダウンロードされたときは利用規約に同意したものとみなします

この記事へのコメント