From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
10-30-2014 01:00 AM
FTP転送でエラー56が発生してしまう問題について
状況:
PXIコントローラからPCに複数ファイルをFTP転送しています。
転送中にエラー56が発生してしまうことがあり、解決策を検討しています。
※ファイル名に日本語が使用されているとFTP転送は失敗しやすいとの情報もあるため
ファイル名称は英語で作成しています。
方法:
現状のプログラムはPC側からFTP通信をもちかけ、ファイルをダウンロードする形式です。
エラーの見え方:
エラー56の内容はタイムアウトであり、またタスクマネージャを用いてCPUの使用率を確認していると
急にCPU使用率が落ちるため、なんらかの失敗が発生の後、タイムアウトまで何もしていないように見えます。
検討した内容と質問:
解決策を探していたところ下記に到達しました。
http://digital.ni.com/public.nsf/allkb/9D365AC31326DB70862577450029FB64
このページに記載されている
「MAXでのリモートタイムアウト値を調整するには、次のキーを下記のディレクトにの下に追加する必要があります。
HKEY_CURRENT_USER\Software\National Instruments\Measurement & Automation Explorer\Remote」
という内容はRemoteというキーを追加するということでしょうか?
使用中のPCには・・・\Measurement & Automation Explorerまでしか存在しておらず
Remoteというキーはありませんでした。
また、mxTimeoutFtpChunkSizeやmxTimeoutFtpRetriesというDWORD値も
自分で追加するということなのでしょうか。
追加内容:
FTP転送を行う際にエラー56が発生したことがあり、解決方法を知っていれば教えていただけないでしょうか。
よろしくお願いします。
解決済! 解決策の投稿を見る。
11-05-2014 07:45 AM
私の環境でも
HKEY_CURRENT_USER\Software\National Instruments\Measurement & Automation Explorer
までしかないので、Remoteをためしに追加してみました。
問題なく追加できました。
あとは資料にもあるようにDWO
キーを追加しただけだと特に意味の無いものとなるので、必ずDWORD値が必要だと思います。
11-05-2014 06:07 PM
ご連絡いただきありがとうございます。
キーもDWORD値も追加してFTP通信を検証してみています。
ただ、変化がほとんどわかりません。
http://digital.ni.com/public.nsf/allkb/9D365AC31326DB70862577450029FB64
上記のURLには「mxTimeoutFtpChunkSize」を2048または1024に削減と
書かれているのですが、むしろ数値は大きくしたほうが失敗しにくいようにも思えます。
この解決方法は本当に正しいのでしょうか?
それとも、もともとレジストリには表示されていないキーとDWORDを追加しているので
それを認識させるような手順などがあるのでしょうか?
11-05-2014 06:13 PM
ご連絡いただきありがとうございます。
キーもDWORD値も追加してFTPの検証を行ってみました。
結果は変化が良くわからないといった具合です。
失敗するときは失敗してしまいますし、成功するときは成功します。
http://digital.ni.com/public.nsf/allkb/9D365AC31326DB70862577450029FB64
上記のURLには「mxTimeoutFtpChunkSizeを2048または1024に削減」
と記載されているのですが、むしろ数値は上げたほうが成功しやすいように思えます。
この解決方法は正しいのでしょうか。
また、キーとDWORD値は追加したのですが、追加方法が間違っているのでしょうか。
もともとレジストリに表示されていなかったキーやDWORDですから、追加した後に
認識させるような手順があったりするのでしょうか?
ご存知であれば回答お願いします。
11-05-2014 08:32 PM
ご連絡ありがとうございます。
キーとDWORD値を追加しました。FTPの動作検証を行ったのですが、
どのように変化したのか、あまりわかりませんでした。
http://digital.ni.com/public.nsf/allkb/9D365AC31326DB70862577450029FB64
上記に「mxTimeoutFtpChunkSizeを2048または1024に削減します。」
と記載されているものの、数値は大きくした方がよいのかとも思えました。
キーの追加やDWORDの追加ですが、もともとレジストリに表示されていなかったので
認識させる手順などはあったりするのでしょうか?
現状は追加したらそのままウィンドウを消すしかないのですが追加方法など間違いがあったりするのでしょうか?
11-10-2014 01:08 AM
こんにちは。
話がレジストリの方向に進んでいますが、FTP転送を行うだけのプログラムではタイムアウトのエラーは発生しますか。
もしFTP転送以外の処理も同時に行っていると、FTP転送の処理が捗らず、タイムアウトになっているという可能性もあります。
ちなみにVeristandについて色々と投稿されているみたいなので、PXI はRealTimeOSとみてよろしいでしょうか。
11-10-2014 01:28 AM
ご連絡いただきありがとうございます。
エラー56が出る状況ですが、FTP通信のみを行う専用のVIを作成して動作確認をしています。
複数のファイルを同時にFTPにて転送しようとすると、転送先では徐々にファイル数及びファイル容量が
大きくなっていることが確認できます。
LabVIEWでFTP通信を行う場合の関数では、デフォルトのタイムアウト設定時間は60秒となっています。
エラー56が発生する際は、このタイムアウトまでの60秒という時間にファイル数及びファイル容量が
一切変化しなくなるという状況が確認できております。
他の通信とは関係なく、FTP通信のどこかでエラーが発生してタイムアウトが発生するまで
一向に進まないという状態から、エラー56によるタイムアウトが発生します。
タイムアウトが発生する設定時間を短くし、タイムアウトが発生したらやり直しをするということも可能ですが
現状としては、エラーが発生することなくFTP通信が完了することを目的としています。
この状況を解決する方法はないでしょうか。
また、OSについてですがPharLapになります。
ご回答お待ちしております。
11-13-2014 03:35 AM
どの様なコードを使用されているのか気になりますので、もしよければ使用されているFTP転送用のテストVI を添付してください。
11-13-2014 07:06 PM
ご連絡ありがとうございます。プログラムを添付するのは難しいため、簡単ではありますが
こんなフローで処理をしているという説明をさせていただきます。
①FTPセッションオープン
②FTPログオン
③FTPディレクトリリスト取得
④ファイルであればダウンロード
⑤フォルダであれば③へ戻る
⑥FTPセッションクローズ
※⑤の戻るというのは再帰的プログラムにしてあります。
単純な処理しかしていないつもりです。
パラメータ等はデフォルトを使用しています。
たくさんのファイルを転送しています。
私としてはエラー56が発生してしまう原因は
プログラムの構造に問題があるというわけではないと思うのですが、
①~⑥の手順などでおかしい点がありましたらご指摘お願いします。
11-24-2014 12:09 AM
FTP通信についていろいろと調べてみました。
結果としては、まったく失敗せずに通信可能とはいえなさそう・・・
といった感じでした。LabVIEW以外でも失敗することもあるように思えました。
現状としまして、失敗するときは失敗するけど成功するときは成功します。
ので、失敗したときは、そのファイルを再度FTP転送してみるという処理を作成しました。
ただLANケーブルが抜けたとかで転送失敗になることもあると思いますので、
再度FTP転送する回数に上限を設けて対応しようと思います。