(57)【要約】【課題】制御プログラムの実行中であっても、ＦＴＰ等の通信プロトコルを利用する際に用いる設定情報の値を変更することが可能なＰＬＣを提供する。【解決手段】ＰＬＣ１００は、制御プログラム１８１を実行する制御プログラム実行部１０４０と、フィールド機器からデータを取得する取得部１０５０と、ＦＴＰを用いてサーバ装置４００と通信する通信部１０７０と、ＦＴＰを利用する際に用いる変数と当該変数の値とを対応づけて記憶するための変数記憶部１０３０とを備える。制御プログラム１８１は、上記変数を入力変数としてデータをサーバ装置４００に送信する命令を含む。ＰＬＣ１００は、制御プログラム１８１の実行にあたり、上記命令が起動されると変数の値に基づいて、データをサーバ装置４００に送信する。【選択図】図１０
2018139162.tif 000002
【特許請求の範囲】
【請求項１】
サーバ装置と通信するとともに、制御プログラムを実行することによって予め定められた機器を制御する制御装置であって、
前記制御プログラムを実行する実行手段と、
前記予め定められた機器から前記制御に基づくデータを取得する取得手段と、
予め定められた通信プロトコルを用いて前記サーバ装置と通信する第１の通信手段と、
前記通信プロトコルを利用する際に用いる変数と、前記変数の値とを対応づけて記憶するための記憶手段とを備え、
前記制御プログラムは、前記変数を入力変数として前記データを前記サーバ装置に送信する命令を含み、
前記制御プログラムの実行にあたり、前記命令が起動されると前記変数の値に基づいて前記データを前記サーバ装置に送信する、制御装置。
【請求項２】
プログラマブル表示器と通信する第２の通信手段と、
前記プログラマブル表示器からの指令に基づき、前記変数の値を設定する設定手段とをさらに備える、請求項１に記載の制御装置。
【請求項３】
前記設定手段は、前記制御プログラムの実行中であっても前記変数の値を設定する、請求項２に記載の制御装置。
【請求項４】
前記制御プログラムは、前記変数の値を設定するための記述を含む、請求項１〜３のいずれか１項に記載の制御装置。
【請求項５】
前記変数は、データの名称を含み、
前記第１の通信手段は、前記入力に対する前記制御プログラムの実行結果に基づいて、前記変数で指定されたデータの名称を有するデータを前記サーバ装置に送信する、請求項１〜４のいずれか１項に記載の制御装置。
【請求項６】
前記取得されたデータを予め定められた規則によって複数の互いに名称の異なるデータ群に分類することにより、前記データを管理する管理手段をさらに備え、
前記管理手段は、前記データ群をファイルとして管理し、
前記通信プロトコルは、ファイル転送プロトコルである、請求項１〜５のいずれか１項に記載の制御装置。
【請求項７】
サーバ装置と通信するとともに、制御プログラムを実行することによって予め定められた機器を制御する制御装置における通信制御方法であって、
前記制御装置のプロセッサが、前記制御プログラムを実行するステップと、
前記プロセッサが、前記予め定められた機器から前記制御に基づくデータを取得するステップと、
前記プロセッサが、予め定められた通信プロトコルを用いて前記サーバ装置と通信するステップとを備え、
前記制御装置は、前記通信プロトコルを利用する際に用いる変数と、前記変数の値とを対応づけて記憶しており、
前記制御プログラムは、前記変数を入力変数として前記データを前記サーバ装置に送信する命令を含み、
前記通信制御方法は、前記制御プログラムの実行にあたり、前記命令が起動されると前記変数の値に基づいて前記データを前記サーバ装置に送信するステップをさらに備える、通信制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザプログラムを周期的に実行するコントローラを含む制御システムに関し、特に、サーバ装置と通信可能に接続する制御システムに関する。
【背景技術】
【０００２】
多くの生産現場で使用される機械や設備は、典型的には、プログラマブルコントローラ（Programmable Logic Controller；以下「ＰＬＣ」とも称す）などの制御装置を主たる
構成とした制御システムによって制御される。このような制御システムでは、システム構成時や運転時に発生した不具合を事後的に検証できる。
【０００３】
このような制御装置に関する先行技術文献としての特許文献１（特開２０１１−３９６４３号公報）に記載のＰＬＣは、ＣＰＵユニットと、ＣＰＵユニットと接続された一又は複数の拡張ユニットとで構成され、ファイル転送時にＦＴＰ（File Transfer Protocol：ファイル転送プロトコル）クライアントとして機能する。ＰＬＣは、ＦＴＰクライアントとして機能させる設定データの入力を受け付け、入力を受け付けた設定データを記憶する。ＰＬＣは、ＦＴＰクライアントに所定の機能を割り当てるか否かに関するフラグ情報を含む機能割当て情報を記憶しておき、所定の機能ごとにフラグ情報を書き込む。ＰＬＣは、フラグ情報の書き込みを検知した場合、記憶してある設定データに基づいてファイル転送を実行する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−３９６４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
生産設備の制御に用いられるＰＬＣにおいて、ＦＴＰクライアント機能は、生産設備のデータをサーバ装置（ＦＴＰサーバ）に送信するシーンで用いられる。このような場合、ユーザが、ＦＴＰを利用する際に用いる設定情報の値を変更することが行なわれる。たとえば、ユーザは、ファイル転送の対象とする各種の変数（ディレクトリ名、ファイル名等）、転送先を指定するための各種の変数（ＦＴＰサーバのＩＰアドレス、ＦＴＰサーバのディレクトリ名、ユーザＩＤ、パスワード）等を変更することが行なわれる。
【０００６】
上記の特許文献１では、これらの変更対象の設定情報を予め記憶しておき、設定情報の変更においては、専用のパーソナルコンピュータを接続して設定を変更する必要がある。また、専用のツールを用いて変更をする場合には、システムもしくはユニットのリセットや初期化が必要であり、制御プログラムの動作中に変更することができなかった。また設定を行うためには専用ツールが必要であり、専用ツールが無い場合、専用ツールで設定を行うスキルが無い場合もあり、ユーザに不便を強いていた。
【０００７】
本願発明は、上記の問題点に鑑みなされたものであって、その目的は、制御プログラムの実行中であっても、ＦＴＰ等の通信プロトコルを利用する際に用いる設定情報の値を変更することが可能な制御装置、および制御装置における通信制御方法を提供することにある。
【課題を解決するための手段】
【０００８】
本発明のある局面に従うと、制御装置は、サーバ装置と通信するとともに、制御プログ
ラムを実行することによって予め定められた機器を制御する。制御装置は、制御プログラムを実行する実行手段と、予め定められた機器から制御に基づくデータを取得する取得手段と、予め定められた通信プロトコルを用いてサーバ装置と通信する第１の通信手段と、通信プロトコルを利用する際に用いる変数と、変数の値とを対応づけて記憶するための記憶手段とを備える。制御プログラムは、変数を入力変数としてデータをサーバ装置に送信する命令を含む。制御プログラムの実行にあたり、命令が起動されると変数の値に基づいてデータをサーバ装置に送信する。
【０００９】
好ましくは、制御装置は、プログラマブル表示器と通信する第２の通信手段と、プログラマブル表示器からの指令に基づき、変数の値を設定する設定手段とをさらに備える。
【００１０】
好ましくは、設定手段は、制御プログラムの実行中であっても変数の値を設定する。
好ましくは、制御プログラムは、変数の値を設定するための記述を含む。
【００１１】
好ましくは、変数は、データの名称を含む。第１の通信手段は、入力に対する制御プログラムの実行結果に基づいて、変数で指定されたデータの名称を有するデータをサーバ装置に送信する。
【００１２】
好ましくは、制御装置は、取得されたデータを予め定められた規則によって複数の互いに名称の異なるデータ群に分類することにより、データを管理する管理手段をさらに備える。管理手段は、データ群をファイルとして管理する。通信プロトコルは、ファイル転送プロトコルである。
【００１３】
本発明の他の局面に従うと、通信制御方法は、サーバ装置と通信するとともに、制御プログラムを実行することによって予め定められた機器を制御する制御装置において実行される。通信制御方法は、制御装置のプロセッサが、制御プログラムを実行するステップと、プロセッサが、予め定められた機器から制御に基づくデータを取得するステップと、プロセッサが、予め定められた通信プロトコルを用いてサーバ装置と通信するステップとを備える。制御装置は、通信プロトコルを利用する際に用いる変数と、変数の値とを対応づけて記憶している。制御プログラムは、変数を入力変数としてデータをサーバ装置に送信する命令を含む。通信制御方法は、制御プログラムの実行にあたり、命令が起動されると変数の値に基づいてデータをサーバ装置に送信するステップをさらに備える。
【発明の効果】
【００１４】
本発明によれば、制御プログラムの実行中であっても、ＦＴＰ等の通信プロトコルを利用する際に用いる設定情報の値をユーザが作成するユーザプログラム作成後であっても変更することが可能となる。またユーザは設定情報を追って変更できるようなプログラムの作成が可能となる。
【図面の簡単な説明】
【００１５】
【図１】本実施の形態に係る制御システム１のシステム構成を示す模式図である。
【図２】本実施の形態に係るＰＬＣ１００の主要部を示すハードウェア構成を示す模式図である。
【図３】本実施の形態に係るＰＬＣ１００が提供する各種機能を実現するためのソフトウェア構成を示す模式図である。
【図４】プログラマブル表示器３００のハードウェア構成の一例を説明するための図である。
【図５】サーバ装置４００のハードウェア構成を示す模式図である。
【図６】ＦＴＰクライアント通信命令の種類を説明するための図である。
【図７】ユーザプログラム１８６の一例を表した図である。
【図８】FTPGetFileList命令の入力変数および出力変数を説明するための図である。
【図９】FTPPutFile命令の入力変数および出力変数を説明するための図である。
【図１０】ＰＬＣ１００の機能的構成を説明するための図である。
【図１１】FTPPutFile命令における複数の入力変数のうちの一部の入力変数の値を表した図である。
【図１２】ＦＴＰクライアント通信命令を実行するときに行なわれる処理流れの概略を表したフローチャートである。
【図１３】ＰＬＣ１００がFTPGetFilelist命令とFTPPutFile命令とをこの順に実行する際の処理の流れを表した図である。
【図１４】図１３のステップＳ１１２における処理の詳細を表したフローチャートである。
【図１５】プログラマブル表示器３００のタッチスクリーン３１８に表示される操作画面（ＵＩ：UserInterface）を表した図である。
【図１６】ファイル名が重複するためにファイルの転送を意図的に行なわなかったファイルについて、再度、ファイルの転送が可能であるか否かを判断する処理を説明するための図である。
【図１７】ユーザプログラム１８６から各入力変数の値を書き換える構成を有するユーザプログラム１８６を表した図である。
【発明を実施するための形態】
【００１６】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【００１７】
＜Ａ．システム構成＞
まず、本実施の形態に係る制御システムのシステム構成について説明する。本実施の形態においては、機械や設備などの制御対象を制御するプログラマブルコントローラ（ＰＬＣ）を制御装置の典型例として説明を行う。但し、本発明に係る制御装置は、ＰＬＣに限られることなく、各種の制御装置へ適用可能である。
【００１８】
図１は、本実施の形態に係る制御システム１のシステム構成を示す模式図である。図１を参照して、制御システム１は、ＰＬＣ１００と、ＰＬＣ１００と通信可能に接続されたプログラマブル表示器（ＨＭＩ：Human Machine Interface）３００と、ＰＬＣ１００と
通信可能に接続されたサーバ装置４００とを含む。サーバ装置４００は、たとえば、イントラネットを構成する機器である。
【００１９】
詳細については後述するが、ＰＬＣ１００は、ＦＴＰ（ファイル転送プロトコル）に基づく通信によってサーバ装置４００と通信する。すなわち、ＰＬＣ１００は、ＦＴＰクライアント機能を有しており、ＦＴＰクライアントとして機能する。また、サーバ装置４００は、ＦＴＰサーバ機能を有しており、ＦＴＰサーバとして機能する。
【００２０】
ＰＬＣ１００は、後述するようなユーザプログラムを周期的またはイベント的に実行する。ユーザプログラムは、ＰＬＣ１００の利用者によって作成される。ユーザは、例えばサポート装置（図示せず）を操作することにより、アクセス命令を含むプログラム（ソースプログラム）を作成することができる。なお、サポート装置は、ソースプログラムを、ＰＬＣ１００において実行可能な形式に変換し、変換されたユーザプログラムをＰＬＣ１００へ送信する。サポート装置は、ＰＬＣ１００との間で各種パラメータの設定、プログラミング、モニタ、デバッグなどの機能を提供する。ＰＬＣ１００とサポート装置との間は、典型的には、ＵＳＢ（Universal Serial Bus）規格に従って通信可能に構成される。
【００２１】
ＰＬＣ１００は、ユーザプログラムを実行し、ユーザプログラムに含まれる命令に従っ
て、サーバ装置４００と通信する。すなわち、ＰＬＣ１００およびサーバ装置４００は、イーサネット（登録商標）などのネットワーク１１２を介して、データを互いに遣り取りできるように構成される。当該処理の詳細については後述する。
【００２２】
ＰＬＣ１００は、制御演算を実行するＣＰＵユニット１０４と、１つ以上のＩＯ（Input/Output）ユニット１０６とを含む。これらのユニットは、ＰＬＣシステムバス１０８を介して、データを互いに遣り取りできるように構成される。また、これらのユニットには、電源ユニット１０２によって適切な電圧の電源が供給される。
【００２３】
制御システム１において、ＰＬＣ１００は、（ＰＬＣシステムバス１０８を介して接続される）ＩＯユニット１０６を介して、および／または、フィールドバス１１０を介して、各種のフィールド機器との間でデータを遣り取りする。これらのフィールド機器は、制御対象に対して何らかの処理を行うためのアクチュエータや、制御対象から各種情報を取得するためのセンサなどを含む。図１には、このようなフィールド機器の一例として、検出スイッチ１０、リレー２０およびモータ３２を駆動するサーボモータドライバ３０を含む。また、ＰＬＣ１００は、フィールドバス１１０を介してリモートＩＯターミナル２００も接続されている。リモートＩＯターミナル２００は、基本的には、ＩＯユニット１０６と同様に、一般的な入出力処理に関する処理を行う。より具体的には、リモートＩＯターミナル２００は、フィールドバス１１０でのデータ伝送に係る処理を行うための通信カプラ２０２と、１つ以上のＩＯユニット２０４とを含む。これらのユニットは、リモートＩＯターミナルバス２０８を介して、データを互いに遣り取りできるように構成される。
【００２４】
プログラマブル表示器３００は、接続ケーブル１１４によってＰＬＣ１００と通信可能に接続されている。プログラマブル表示器３００は、ＰＬＣ１００から取得した各種の情報を画面に表示する。また、詳細については後述するが、ユーザは、プログラマブル表示器３００を操作することにより、ＰＬＣ１００に格納されている入力変数の値を変更することができる。
【００２５】
＜Ｂ．ＰＬＣ１００の構成＞
（ｂ１．ハードウェア構成）
図２は、本実施の形態に係るＰＬＣ１００の主要部を示すハードウェア構成を示す模式図である。図２を参照して、ＰＬＣ１００のＣＰＵユニット１０４のハードウェア構成について説明する。ＣＰＵユニット１０４は、プロセッサ１２０と、チップセット１２２と、システムクロック１２４と、主メモリ１２６と、不揮発性メモリ１２８と、Ｅｔｈｅｒｎｅｔコネクタ１３０と、ＰＬＣシステムバスコントローラ１４０と、フィールドバスコントローラ１５０と、上位通信コントローラ１６０と、メモリカードインターフェイス１７０と、ＵＳＢコネクタ（図示せず）とを含む。チップセット１２２と他のコンポーネントとの間は、各種のバスを介してそれぞれ結合されている。
【００２６】
プロセッサ１２０およびチップセット１２２は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、プロセッサ１２０は、チップセット１２２から内部クロックに従って順次供給される命令コードを解釈して実行する。チップセット１２２は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、プロセッサ１２０に必要な命令コードを生成する。システムクロック１２４は、予め定められた周期のシステムクロックを発生してプロセッサ１２０に提供する。チップセット１２２は、プロセッサ１２０での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。
【００２７】
ＣＰＵユニット１０４は、記憶手段として、主メモリ１２６および不揮発性メモリ１２８を有する。主メモリ１２６は、揮発性の記憶領域であり、プロセッサ１２０で実行され
るべき各種プログラムを保持するとともに、各種プログラムの実行時の作業用メモリとしても使用される。不揮発性メモリ１２８は、ＯＳ（Operating System）、システムプログラム、ユーザプログラム、ログ情報などを不揮発的に保持する。
【００２８】
Ｅｔｈｅｒｎｅｔコネクタ１３０は、プログラマブル表示器３００とＣＰＵユニット１０４とを接続するためのインターフェイスである。なお、ＵＳＢコネクタ（図示せず）は、サポート装置とＣＰＵユニット１０４とを接続するためのインターフェイスである。典型的には、サポート装置から転送される実行可能なプログラムなどは、ＵＳＢコネクタを介してＣＰＵユニット１０４に取込まれる。
【００２９】
ＣＰＵユニット１０４は、通信手段として、ＰＬＣシステムバスコントローラ１４０、フィールドバスコントローラ１５０、および上位通信コントローラ１６０を有する。これらの通信回路は、データの送信および受信を行う。
【００３０】
ＰＬＣシステムバスコントローラ１４０は、ＰＬＣシステムバス１０８を介したデータの遣り取りを制御する。より具体的には、ＰＬＣシステムバスコントローラ１４０は、バッファメモリ１４２と、ＰＬＣシステムバス制御回路１４４と、ＤＭＡ（Dynamic Memory
Access）制御回路１４６とを含む。ＰＬＣシステムバスコントローラ１４０は、ＰＬＣ
システムバスコネクタ１４８を介してＰＬＣシステムバス１０８と接続される。
【００３１】
フィールドバスコントローラ１５０は、バッファメモリ１５２と、フィールドバス制御回路１５４と、ＤＭＡ制御回路１５６とを含む。フィールドバスコントローラ１５０は、フィールドバスコネクタ１５８を介してフィールドバス１１０と接続される。上位通信コントローラ１６０は、バッファメモリ１６２と、上位通信制御回路１６４と、ＤＭＡ制御回路１６６とを含む。上位通信コントローラ１６０は、上位通信コネクタ１６８を介してネットワーク１１２と接続される。
【００３２】
メモリカードインターフェイス１７０は、ＣＰＵユニット１０４に対して着脱可能なメモリカード１７２とプロセッサ１２０とを接続する。
【００３３】
（ｂ２．ソフトウェア構成）
図３は、本実施の形態に係るＰＬＣ１００が提供する各種機能を実現するためのソフトウェア構成を示す模式図である。これらのソフトウェアに含まれる命令コードは、適切なタイミングで読み出され、ＣＰＵユニット１０４のプロセッサ１２０によって実行される。
【００３４】
図３を参照して、ＣＰＵユニット１０４で実行されるソフトウェアとしては、ＯＳ１８０と、システムプログラム１８８と、ユーザプログラム１８６とがある。
【００３５】
ＯＳ１８０は、プロセッサ１２０がシステムプログラム１８８およびユーザプログラム１８６を実行するための基本的な実行環境を提供する。
【００３６】
システムプログラム１８８は、ＰＬＣ１００としての基本的な機能を提供するためのソフトウェア群である。具体的には、システムプログラム１８８は、シーケンス命令プログラム１９０と、ＦＴＰ処理プログラム１９２と、入出力処理プログラム１９４と、Ｔｏｏｌインターフェイス処理プログラム１９６と、スケジューラ１９８とを含む。
【００３７】
これに対して、ユーザプログラム１８６は、制御対象に対する制御目的に応じて任意に作成されたプログラムである。すなわち、ユーザプログラム１８６は、制御システム１を用いて制御する対象に応じて、任意に設計される。
【００３８】
ユーザプログラム１８６は、シーケンス命令プログラム１９０と協働して、ユーザにおける制御目的を実現する。すなわち、ユーザプログラム１８６は、シーケンス命令プログラム１９０によって提供される命令、関数、機能モジュールなどを利用することで、プログラムされた動作を実現する。そのため、ユーザプログラム１８６およびシーケンス命令プログラム１９０を「制御プログラム１８１」と総称する場合もある。
【００３９】
稼働ログ１８４には、システムプログラム１８８およびユーザプログラム１８６の実行に伴って、予め定められた事象が発生した際に、当該発生した事象の情報が時刻情報と関連付けて格納される。すなわち、稼働ログ１８４には、システムプログラム１８８および／またはユーザプログラム１８６の実行に伴う各種情報がログ（履歴情報）として格納される。
【００４０】
以下、各プログラムについてより詳細に説明する。
シーケンス命令プログラム１９０は、ユーザプログラム１８６の実行に伴って、ユーザプログラム１８６内で指定されているシーケンス命令の実体を呼び出して、その命令の内容を実現するための命令コード群を含む。
【００４１】
入出力処理プログラム１９４は、ＩＯユニット１０６や各種のフィールド機器との間で、入力データの取得および出力データの送信を管理するためのプログラムである。
【００４２】
Ｔｏｏｌインターフェイス処理プログラム１９６は、サポート装置との間でデータを遣り取りするためのインターフェイスを提供する。
【００４３】
スケジューラ１９８は、予め定められた優先度やシステムタイマの値などに従って、制御プログラムを実行するためのスレッドやプロシージャを生成する。
【００４４】
ユーザプログラム１８６は、上述したように、ユーザにおける制御目的に応じて作成される。ユーザプログラム１８６は、典型的には、ＣＰＵユニット１０４のプロセッサ１２０で実行可能なオブジェクトプログラム形式になっている。ユーザプログラム１８６は、サポート装置などにおいて、ラダー形式やファンクションブロック形式で記述されたソースプログラムがコンパイルされることで生成される。そして、生成されたオブジェクトプログラム形式のユーザプログラムは、サポート装置からＣＰＵユニット１０４へ転送され、不揮発性メモリ１２８などに格納される。
【００４５】
ＦＴＰ処理プログラム１９２は、ユーザプログラム１８６の実行に伴って、サーバ装置４００と通信するために必要な処理を実現するための命令コード群を含む。ＦＴＰ処理プログラム１９２は、ユーザプログラム１８６において指定可能な命令に対応する実行コードを含む。
【００４６】
＜Ｃ．プログラマブル表示器３００のハードウェア構成＞
図４は、プログラマブル表示器３００のハードウェア構成の一例を説明するための図である。図４を参照して、プログラマブル表示器３００は、各種の演算を行なうＣＰＵ（Central Processing Unit）３１１と、ＲＯＭ（Read Only Memory）３１２と、ＲＡＭ（Random Access Memory）３１３と、各種のプログラムを不揮発的に格納するフラッシュＲＯ
Ｍ３１４と、時計３１５と、操作キー３１６と、カメラ３１７と、タッチスクリーン３１８と、通信インターフェイス３１９とを備える。なお、これらの部位は、内部バスを介して互いに接続される。
【００４７】
タッチスクリーン３１８は、ディスプレイ３８１と、ディスプレイ３８１を覆うように
設置されたタッチパネル３８２とを有する。通信インターフェイス３１９は、Ｅｔｈｅｒｎｅｔ（登録商標）用ＩＦ（InterFace）３９１と、シリアル用ＩＦ３９２と、ＵＳＢ（Universal Serial Bus）用ＩＦ３９３とを有する。
【００４８】
ＣＰＵ３１１は、フラッシュＲＯＭ３１４に格納されているプログラムをＲＡＭ３１３などに展開して実行する。ＲＯＭ３１２は、一般的に、オペレーティングシステム（ＯＳ：Operating System）等のプログラムを格納している。ＲＡＭ３１３は、揮発性メモリであり、ワークメモリとして使用される。
【００４９】
Ｅｔｈｅｒｎｅｔ用ＩＦ３９１は、Ｅｔｈｅｒｎｅｔの通信プロトコルをサポートし、ＰＬＣ１００との間でデータ通信する。シリアル用ＩＦ３９２は、シリアル通信のプロトコルをサポートし、たとえばＰＣ（Personal Computer）との間でデータ通信する。ＵＳ
Ｂ用ＩＦ３９３は、ＵＳＢの通信プロトコルをサポートし、たとえばＵＳＢメモリとの間でデータ通信する。
【００５０】
なお、図４に示されるプログラマブル表示器３００を構成する各構成要素は、一般的なものである。したがって、本発明の本質的な部分は、フラッシュＲＯＭ３１４等のメモリに格納されたソフトウェア、あるいはネットワークを介してダウンロード可能なソフトウェアであるともいえる。なお、プログラマブル表示器３００の各ハードウェアの動作は周知であるために、詳細な説明は繰り返さない。
【００５１】
＜Ｄ．サーバ装置４００のハードウェア構成＞
図５は、サーバ装置４００のハードウェア構成を示す模式図である。サーバ装置４００は、典型的には、汎用のコンピュータで構成される。
【００５２】
図５を参照して、サーバ装置４００は、ＯＳを含む各種プログラムを実行するＣＰＵ４０２と、ＢＩＯＳや各種データを格納するＲＯＭ（Read Only Memory）４０４と、ＣＰＵ４０２でのプログラムの実行に必要なデータを格納するための作業領域を提供するメモリＲＡＭ４０６と、ＣＰＵ４０２で実行されるプログラムなどを不揮発的に格納するハードディスク（ＨＤＤ）４０８とを含む。
【００５３】
サーバ装置４００は、さらに、ユーザからの操作を受け付けるキーボード４１０およびマウス４１２と、情報をユーザに提示するためのモニタ４１４とを含む。さらに、サーバ装置４００は、ＰＬＣ１００（ＣＰＵユニット１０４）などと通信するための通信インターフェイス（ＩＦ）４１８を含む。サーバ装置４００は、通信ＩＦ４１８によってＰＬＣ１００と通信可能に接続される。
【００５４】
＜Ｅ．制御システム１における処理の概要＞
ＰＬＣ１００は、上述したようにＦＴＰクライアント機能を有しており、ＦＴＰクライアント通信命令を用いることにより、ＦＴＰクライアントとなるＰＬＣ１００から、イントラネット内のＦＴＰサーバとなるサーバ装置４００へ、メモリカード１７２内のファイルの転送（アップロード）をすることができる。また、サーバ装置４００からＰＬＣ１００へのファイルの転送（ダウンロード）も可能である。
【００５５】
図６は、ＦＴＰクライアント通信命令の種類を説明するための図である。図６を参照して、ＰＬＣ１００は、ＦＴＰクライアント機能として、ＦＴＰサーバのファイル一覧の取得機能と、ＦＴＰサーバへのファイルアップロード機能と、ＦＴＰサーバからのファイルダウンロード機能と、ＦＴＰサーバのファイルの削除機能と、ＦＴＰサーバのディレクトリの削除機能とを有する。
【００５６】
ＦＴＰサーバのファイル一覧の取得機能、ＦＴＰサーバへのファイルアップロード機能、ＦＴＰサーバからのファイルダウンロード機能、ＦＴＰサーバのファイルの削除機能、およびＦＴＰサーバのディレクトリの削除機能を各々を実現するための命令（ＦＴＰクライアント通信命令）の名称を、それぞれ、「FTPGetFileList命令」、「FTPGetFile命令」、「FTPPutFile命令」、「FTPRemoveFile命令」、「FTPRemoveDir命令」と称する。
【００５７】
FTPGetFileList命令、FTPGetFile命令、FTPPutFile命令、FTPRemoveFile命令、およびFTPRemoveDir命令の各々は、ファンクションブロックとして提供される。ユーザは、ユー
ザプログラム１８６に各々の命令を含めることができる。ＰＬＣ１００は、当該ユーザプログラム１８６を実行することにより、ＦＴＰクライアント機能を実現する。
【００５８】
図７は、ユーザプログラム１８６の一例を表した図である。図７を参照して、ユーザプログラム１８６は、FTPGetFileList命令のファンクションブロックと、FTPPutFile命令のファンクションブロックとを含んでいる。
【００５９】
同図に示したユーザプログラム１８６では、１７時３０分になり、かつ“Busy”でないことを条件に、FTPGetFileList命令が実行される。すなわち、ＰＬＣ１００は、サーバ装置４００からファイル一覧を取得する処理を実行する。さらに、FTPGetFileList命令の実行が完了すると、FTPPutFile命令が実行される。すなわち、ＰＬＣ１００は、サーバ装置４００にファイルを転送する処理を実行する。
【００６０】
図８は、FTPGetFileList命令の入力変数および出力変数を説明するための図である。具体的には、図８（Ａ)は、FTPGetFileList命令の複数の入力変数のうちの一部を説明する
ための図である。図８（Ｂ)は、FTPGetFileList命令の複数の出力変数のうちの一部を説
明するための図である。
【００６１】
図８（Ａ）を参照して、起動を意味する“Execute”は、FTPGetFileList命令の起動を
指定するための入力変数である。接続先のＦＴＰサーバを意味する“ConnectSvr”は、ＦＴＰサーバのアドレスおよびポート番号と、ログイン用のユーザ名およびパスワードとを指定するための入力変数である。ＦＴＰサーバのディレクトリ名を意味する“SvrDirName”は、ファイル一覧を取得するＦＴＰサーバのディレクトリを指定するための入力変数である。
【００６２】
図８（Ｂ）を参照して、完了を意味する“Done”は、正常終了（すなわち、読出しが完了）したことを表すための出力変数である。実行中を意味する“Busy”は、命令の実行中を表すための出力変数である。エラーを意味する“Error”は、異常終了したことを表す
ための出力変数である。
【００６３】
図９は、FTPPutFile命令の入力変数および出力変数を説明するための図である。具体的には、図９（Ａ)は、FTPPutFile命令の複数の入力変数のうちの一部を説明するための図
である。図９（Ｂ)は、FTPPutFile命令の複数の出力変数のうちの一部を説明するための
図である。
【００６４】
図９（Ａ）を参照して、起動を意味する“Execute”は、FTPPutFile命令の起動を指定
するための入力変数である。接続先のＦＴＰサーバを意味する“ConnectSvr”は、ＦＴＰサーバのアドレスおよびポート番号と、ログイン用のユーザ名およびパスワードとを指定するための入力変数である。ＦＴＰサーバのディレクトリ名を意味する“SvrDirName”は、ファイル一覧を取得するＦＴＰサーバのディレクトリを指定するための入力変数である。
【００６５】
ローカルディスレクトリ名を意味する“LocalDirName”は、ＦＴＰサーバへアップロードするファイルを格納しているディレクトリ（ＰＬＣ１００のディレクトリ）を指定するための入力変数である。ファイル名を意味する“FileName”は、アップロードするファイルのファイル名を指定するための入力変数である。ファイル名の指定は、ワイルドカードを用いることも可能である。
【００６６】
ＦＴＰ実行オプションを意味する“ExecOption”は、ＦＴＰ実行に関するオプションを指定するための入力変数である。たとえば、“ExecOption”は、上書きを許可するか否かを指定するための入力変数“OverWrite”を含む（図１１参照）。
【００６７】
図９（Ｂ）を参照して、完了を意味する“Done”は、正常終了（すなわち、読出しが完了）したことを表すための出力変数である。実行中を意味する“Busy”は、命令の実行中を表すための出力変数である。エラーを意味する“Error”は、異常終了したことを表す
ための出力変数である。
【００６８】
＜Ｆ．機能的構成＞
図１０は、ＰＬＣ１００の機能的構成を説明するための図である。図１０を参照して、ＰＬＣ１００は、通信部１０１０と、設定部１０２０と、変数記憶部１０３０と、制御プログラム実行部１０４０と、取得部１０５０と、データ管理部１０６０と、通信部１０７０と、メモリカード１７２とを備えている。
【００６９】
取得部１０５０は、制御プログラム１８１（詳しくは、ＦＴＰクライアント通信命令以外の命令）を実行することによって各フィールド機器が制御されると、当該各フィールド機器から当該制御に基づくデータを周期的に取得する。
【００７０】
データ管理部１０６０は、取得部１０５０によって取得されたデータをメモリカード１７２に書き込む。詳しくは、データ管理部１０６０は、取得部１０５０によって順次取得されたデータを、メモリカード１７２内に保存されている所定のファイルに順次書き込む。さらに詳しくは、データ管理部１０６０は、取得されたデータを予め定められた規則によって複数の互いに名称の異なるファイル（データ群）に分類することにより、当該データを管理する。これらはユーザが作成するユーザプログラムにおいて記述されることで実現される。
【００７１】
変数記憶部１０３０は、ユーザプログラムで参照する変数を格納する。変数記憶部１０３０は、ＦＴＰを利用する際に用いる複数の入力変数（ＦＴＰ設定用の入力変数）と、当該各入力変数の値とが対応付けて記憶されている。具体的には、変数記憶部１０３０は、“ConnectSvr”、“SvrDirName”、“LocalDirName”、“FileName”等の入力変数と、各入力変数の値とが記憶されている。なお、「値」とは、着目する変数に関し、当該変数が指すものに相当する表現である。すなわち、値は、数値のみならず、数値以外の文字列を含む。なお、本実施の形態では、入力変数“ConnectSvr”として、ＦＴＰサーバのＩＰアドレスが利用される。
【００７２】
変数記憶部１０４０は、外部の機器に参照公開する属性を持つ変数と、内部で使用される属性を有する変数を有していても良い。
【００７３】
制御プログラム実行部１０４０は、制御プログラム１８１を実行する。制御プログラム実行部１０４０は、制御プログラム１８１のユーザプログラム１８６に含まれるＦＴＰ通信命令と、制御プログラム１８１に含まれるその他命令とを実行する。その際、制御プログラム１８１は、図７に示したとおり、変数記憶部１０３０に記憶されている変数を入力変数として含む。つまり、制御プログラム１８１は、変数記憶部１０３０に記憶されてい
る変数の値を入力として利用する。さらに換言すれば、制御プログラム１８１は、変数を入力変数としてデータをサーバ装置４００に送信する命令を含む。また、制御プログラム実行部１０４０は、ＦＴＰクライアント通信命令の実行結果を、通信部１０７０に通知する。
【００７４】
通信部１０７０は、ＦＴＰサーバであるサーバ装置４００と通信するためのインターフェイスである。通信部１０７０は、制御プログラム実行部１０４０の実行結果に応じた処理を実行する。たとえば、通信部１０７０は、FTPPutFile命令に基づくＰｕｔ処理（ＦＴＰサーバにファイルを転送（アップロード）、FTPGetFile命令に基づくＧｅｔ処理（ＦＴＰサーバからファイルを取得（ダウンロード））、FTPGetFilelist命令に基づくＬｓ処理（ＦＴＰサーバからファイル一覧を取得））を実行する。
【００７５】
Ｐｕｔ処理に着目すると、通信部１０７０は、変数記憶部１０３０に記憶された入力変数の値が入力されたときの制御プログラム１８１の実行結果に基づいて、入力変数“SvrDirName”により指定されたメモリカード１７２のディレクトリにおける、入力変数“FileName”により指定されたファイルを、入力変数“ConnectSvr”で指定されたＦＴＰサーバ（本実施の形態ではサーバ装置４００）の入力変数“SvrDirName”により指定されたディレクトリに転送（送信）する。このように、ＰＬＣ１００は、制御プログラム１８１の実行にあたり、命令が起動されると上記変数の値に基づいてデータをサーバ装置４００に送信する。
【００７６】
Ｌｓ処理に着目すると、通信部１０７０は、変数記憶部１０３０に記憶された入力変数の値に対する制御プログラム１８１の実行結果に基づいて、入力変数“ConnectSvr”で指定されたＦＴＰクライアント（本実施の形態ではサーバ装置４００）の入力変数“SvrDirName”により指定されたディレクトリに含まれるファイル一覧を、当該ＦＴＰクライアントから取得する。
【００７７】
通信部１０１０は、プログラマブル表示器３００と通信するためのインターフェイスである。設定部１０２０は、ユーザ操作に伴うプログラマブル表示器３００からの指令に基づき、変数記憶部１０３０に記憶された入力変数の値を設定（更新）する。
【００７８】
以上の構成によれば、ＰＬＣ１００は、フィールド機器から取得したデータをＦＴＰによりファイルとしてサーバ装置４００に送信する際に、ＦＴＰに用いられる変数の値を制御プログラムの入力変数とすることが可能となる。それゆえ、ＰＬＣ１００によれば、制御プログラム１８１の実行中であっても、ＦＴＰを利用する際に用いる変数の値を変更することが可能となる。
【００７９】
（ｆ１．オプション処理について）
次に、FTPPutFile命令における入力変数“ExexOption”（図９（Ａ））において上書き処理が禁止されている場合には、以下の処理が行なわれる。
【００８０】
制御プログラム実行部１０４０は、通信部１０７０によるサーバ装置４００との通信によって、データ管理部１０６０によって付与された名称と同一名称のファイルがサーバ装置４００に存在するか否かを、サーバ装置４００から取得したファイル一覧に基づき判断する。詳しくは、制御プログラム実行部１０４０は、FTPGetFilelist命令に基づき取得したファイル一覧を利用して、FTPPutFile命令の入力変数“SvrDirName”により指定されたディレクトリ（サーバ装置４００のディレクトリ）に、FTPPutFile命令の入力変数“LocalDirName”により指定されたディレクトリに含まれるファイルと重複しているファイルが存在しないか否かを判断する。
【００８１】
通信部１０７０は、入力に対する前記制御プログラムの実行結果に基づいて、メモリカード１７２に記憶されているファイルのうち同一名称のファイルが存在すると判断されなかったファイルをサーバ装置４００に送信する。詳しくは、通信部１０７０は、入力変数“LocalDirName”で指定されるディレクトリに含まれるファイルのうち、入力変数“SvrDirName”で指定されるディレクトリに同一名称のファイルが存在していないファイルを、サーバ装置４００の入力変数“SvrDirName”で指定されるディレクトリに転送する。
【００８２】
（ｆ２．入力変数の値の例）
図１１は、FTPPutFile命令における複数の入力変数のうちの一部の入力変数の値を表した図である。なお、FTPPutFile命令を含むＦＴＰクライアント通信命令における入力変数の値は、ユーザによって設定される。
【００８３】
図１１を参照して、ＦＴＰサーバのＩＰアドレスを表す入力変数“ConnectSvr”の値、ＦＴＰサーバのディレクトリ名を表す入力変数“SvrDirName”の値、自装置（ＰＬＣ１００）のディレクトリ名を表す入力変数“LocalDirName”の値は、それぞれ、“192.168.250.1”、“\aaaaa\”、“”である。
【００８４】
また、転送するファイル名は、ワイルドカードを用いて指定されている。具体的には、転送するファイル名の値は、入力変数“LocalDirName”の値（“”）に含まれる全てのテキストデータ（“*.txt”）を表している。
【００８５】
入力変数“Overwrite”の値は、上書きを禁止する“False”となっている。なお、上書きを許可する場合には、入力変数“Overwrite”の値は“True”となる。
【００８６】
＜Ｇ．制御構造＞
図１２は、ＦＴＰクライアント通信命令を実行するときに行なわれる処理流れの概略を表したフローチャートである。図１２を参照して、ステップＳ２において、ＰＬＣ１００のプロセッサ１２０（図２）は、ＦＴＰ用の入力変数の値を読み込む。ステップＳ４において、プロセッサ１２０は、入力変数の値に基づくユーザプログラム１８６の実行結果を出力する。ステップＳ６において、プロセッサ１２０は、クライアント通信命令をＦＴＰに準拠した命令に変換（プロトコル変換）する。ステップＳ８において、プロセッサ１２０は、変換後の命令に応じた通信処理を実行する。
【００８７】
図１３は、ＰＬＣ１００が図７に示したユーザプログラム１８６を実行する際の処理流れの概略を表したフローチャートである。すなわち、図１３は、ＰＬＣ１００がFTPGetFilelist命令とFTPPutFile命令とをこの順に実行する際の処理の流れを表した図である。
【００８８】
図１３を参照して、ステップＳ１０２において、ＰＬＣ１００のプロセッサ１２０は、FTPGetFileList命令を実行する。具体的には、プロセッサ１２０は、入力変数“SvrDirName”で指定されたディレクトリ（以下、「ディレクトリＤＳ」とも称する）に含まれるファイルのファイル一覧をサーバ装置４００から取得する。なお、サーバ装置４００は、入力変数“ConnectSvr”によって指定されたＦＴＰサーバである。
【００８９】
ステップＳ１０４において、プロセッサ１２０は、FTPPutFile命令の実行を開始する。ステップＳ１０６において、プロセッサ１２０は、入力変数“LocalDirName”で指定されたディレクトリ（以下、「ディレクトリＤＴ」とも称する）に含まれるファイルのファイル一覧をメモリカード１７２から取得する。
【００９０】
ステップＳ１０８において、プロセッサ１２０は、予め規定された変数ｉの値を“１”とする。ステップＳ１１０において、プロセッサ１２０は、ディレクトリＤＴに含まれる
ｉ番目のファイルとファイル名が一致するファイルがサーバ装置４００のディレクトリＤＳに存在するか否かを、取得された２つのファイル一覧に基づいて判断する。
【００９１】
プロセッサ１２０は、ファイルが存在しないと判断された場合（ステップＳ１１０においてＮＯ）、ステップＳ１１２においてＦＴＰによるファイル転送処理（Ｐｕｔ処理）を実行する。ステップＳ１１４において、プロセッサ１２０は、転送済みのファイルとして当該ファイルのファイル名を、アップロードしたファイル結果を表す出力変数“PutFileResult”の値として出力する。プロセッサ１２０は、ファイルが存在すると判断された場
合（ステップＳ１１０においてＹＥＳ）、ステップＳ１２０において、転送失敗のファイルとして当該ファイルのファイル名を出力変数“PutFileResult”の値として出力する。
【００９２】
ステップＳ１１６において、プロセッサ１２０は、変数ｉをインクリメントする。つまり、プロセッサ１２０は、ｉの値を１だけ増加させる。ステップＳ１１８において、プロセッサ１２０は、メモリカード１７２のディレクトリＤＴに含まれる全てのファイルのファイル名の出力処理が終了したか否かを判断する。すなわち、プロセッサ１２０は、FTPPutFile命令の実行が終了したか否かを判断する。プロセッサ１２０は、終了していないと判断した場合（ステップＳ１１８においてＮＯ）、処理をステップＳ１１０に戻す。プロセッサ１２０は、終了したと判断した場合（ステップＳ１１８においてＹＥＳ）、一連の処理を終了する。
【００９３】
図１４は、図１３のステップＳ１１２における処理の詳細を表したフローチャートである。図１４を参照して、ステップＳ２０２において、プロセッサ１２０は、各入力変数（ConnectSvr，SvrDirName，LocalDir，FileName等）の値を変数記憶部１０３０（図１０）から読み出す。ステップＳ２０４において、プロセッサ１２０は、読み出した各変数の値が適正か否かを判断する。
【００９４】
具体的には、ＰＬＣ１００は、ネットワークを構成するＦＴＰサーバのＩＰアドレスを事前に認識しているため、プロセッサ１２０は、認識しているＩＰアドレスが入力されたか否かで、入力変数“ConnectSvr”で指定されるＦＴＰサーバが存在するか否かを判断する。また、プロセッサ１２０は、上記ＦＴＰサーバが存在する場合において、入力変数“SvrDirName”で指定されるディレクトリが当該ＦＴＰサーバ内に存在するか否かを判断する。さらに、プロセッサ１２０は、入力変数“LocalDir”で指定されるディレクトリがメモリカード１７２に存在するか否かを判断する。また、プロセッサ１２０は、入力変数“Filename”で指定されるファイルが、入力変数“LocalDir”で指定されるディレクトリに存在するか否かを判断する。
【００９５】
プロセッサ１２０は、適正であると判断された場合（ステップＳ２０４においてＹＥＳ）、ステップＳ２０６において、ファイルの転送処理を実行し、一連の処理を終了する。プロセッサ１２０は、適正でないと判断された場合（ステップＳ２０４においてＮＯ）、一連の処理を終了する。
【００９６】
＜Ｈ．プログラマブル表示器の操作画面＞
図１５は、プログラマブル表示器３００のタッチスクリーン３１８に表示される操作画面（ＵＩ：UserInterface）を表した図である。図１５（Ａ）は、ＦＴＰサーバを指定す
るための操作画面である。図１５（Ｂ）は、Ｐｕｔ処理の設定を行なうための操作画面である。図１５（Ｃ）は、Ｇｅｔ処理の設定を行なうための操作画面である。
【００９７】
図１５（Ａ）を参照して、プログラマブル表示器３００は、ＦＴＰサーバを指定するために、入力変数“ConnectSvr”の値（具体的には、図８（Ａ）および図９（Ａ）に示したとおり、ＦＴＰサーバのＩＰアドレス、ＦＴＰサーバのポート番号、ユーザ名、パスワー
ド）の入力を受け付ける入力ボックス８１１，８１２，８１３，８１４をタッチスクリーン３１８に表示する。ユーザは、各入力ボックス８１１〜８１４に値を入力した後に設定ボタン８１８を選択することにより、ＰＬＣ１００の変数記憶部１０３０（図１０）に格納されている変数の値を設定（更新）することができる。
【００９８】
図１５（Ｂ）を参照して、プログラマブル表示器３００は、ＦＴＰクライアント（すわち、ＰＬＣ１００）におけるディレクトリ名とファイル名とを指定するために、入力変数“SvrDirName”および入力変数“LocalDirName”の値の入力を受け付ける入力ボックス８２１，８２２をタッチスクリーン３１８に表示する。また、プログラマブル表示器３００は、ＦＴＰサーバのディレクトリ名を指定するために、入力変数“SvrDirName”の値の入力を受け付ける入力ボックス８２３を表示する。
【００９９】
ユーザは、各入力ボックス８２１〜８２３に値を入力した後に設定ボタン８２８を選択することにより、ＰＬＣ１００の変数記憶部１０３０（図１０）に格納されている変数の値を設定（更新）することができる。また、ユーザは、転送ボタン８２９を選択することにより、ＰＬＣ１００にＰｕｔ処理を実行させることができる。これはユーザプログラムにおいて、ＨＭＩからの入力を受け付けた際にＦＴＰ命令を実行されることで実現される。
【０１００】
図１５（Ｃ）を参照して、プログラマブル表示器３００は、ＦＴＰクライアント（すわち、ＰＬＣ１００）におけるディレクトリ名を指定するために、入力変数“LocalDirName”の値の入力を受け付ける入力ボックス８３１をタッチスクリーン３１８に表示する。また、プログラマブル表示器３００は、ＦＴＰサーバのディレクトリ名とファイル名とを指定するために、入力変数“SvrDirName”および入力変数“FileName”の値の入力を受け付ける入力ボックス８３２，８３３を表示する。
【０１０１】
ユーザは、各入力ボックス８３１〜８３３に値を入力した後に設定ボタン８３８を選択することにより、ＰＬＣ１００の変数記憶部１０３０（図１０）に格納されている変数の値を設定（更新）することができる。また、ユーザは、転送ボタン８３９を選択することにより、ＰＬＣ１００にＧｅｔ処理を実行させることができる。これはユーザプログラムにおいて、ＨＭＩからの入力を受け付けた際にＦＴＰ命令を実行されることで実現される。
【０１０２】
上述した変数の値を設定（更新）は、ＰＬＣ１００の設定部１０２０により実現される。変数の値の設定（更新）は、上述したように、制御プログラム１８１の実行中であっても行なわれる。これにより、ユーザは、制御プログラムの実行を中断することなく、ＦＴＰクライアント通信命令を変更することが可能となる。
【０１０３】
＜Ｉ．再判断処理＞
図１６は、FTPPutFile命令を実行した場合に、転送に失敗したファイルを送信するための処理を説明するための図である。すなわち、図１６は、ファイル名が重複するためにファイルの転送を意図的に行なわなかったファイルについて、再度、ファイルの転送が可能であるか否かを判断する処理を説明するための図である。
【０１０４】
図１６を参照して、FTPPutFile命令における入力変数“FileName”によって５つのファイル（X001.txt，X002.txt，X003.txt，X004txt，X005.txt）が指定されたとする。その
後、FTPputFile命令の実行により、３つのファイル（X001.txt，X003.txt，X005.txt）のサーバ装置４００への転送が完了し、２つのファイル（X002.txt，X004txt）の転送が失
敗であったとする。この場合、プロセッサ１２０は、転送に失敗した２つのファイルのファイル名（X002.txt，X004.txt）が、再度、入力変数“FileName”としてFTPputFile命令
のファンクションブロックに入力される。なお、上記のファイル名の再度の入力は、たとえば、ユーザがサーバ装置４００の転送対象ディレクトリに記憶されたファイルを取り除く作業等を行なった後に行なわれる。具体的には、ファイル名の再度の入力は、入力変数“SvrDirName”で指定されるディレクトリに記憶されているファイルを消去等した後に行なわれる。
【０１０５】
すなわち、ユーザプログラム１８６は、複数のファイルのうち、同一名称のファイルがサーバ装置４００の指定されたディレクトリに存在すると判断されなかったファイル（以下、「第１のファイル」とも称する）以外のファイル（以下、「第２のファイル」とも称する）の名称を入力としてさらに利用する。また、図１０に示した制御プログラム実行部１０４０は、サーバ装置４００との通信によって、第２のファイルと同一名称のファイルがサーバ装置４００に存在するか否かを再度判断する。通信部１０７０は、制御プログラム実行部１０４０による再度の判断の結果、第２のファイルのうち同一名称のファイルが存在すると判断されなかったファイル（以下、「第３のファイル」とも称する）を、ユーザプログラム１８６の実行結果に基づいてサーバ装置４００の指定されたディレクトリに送信する。
【０１０６】
以上のように、ＰＬＣ１００が転送（送信）に失敗したファイルについて再度転送が可能か否かを自動的に行なうため、ユーザは、転送に失敗したファイルのファイル名を入力変数“FileName”の値として設定する必要がなくなる。
【０１０７】
＜Ｊ．ユーザプログラムの変形例＞
制御プログラム１８１を構成するユーザプログラム１８６から、各入力変数の値を書き換えることも可能である。図１７は、ユーザプログラム１８６から各入力変数の値を書き換える構成を有するユーザプログラム１８６を表した図である。以下、一例として、ＦＴＰサーバを指定する点に着目して説明する。
【０１０８】
図１７を参照して、FTPPutFile命令の入力変数“ConnectSvr”には、FTPPutFile命令のファンクションブロックＦＢ２の上のファンクションブロックＦＢ１の出力変数“abc”
の値が入力される。また、ファンクションブロックＦＢ１の入力変数として、ＦＴＰサーバのＩＰアドレス（“192.168.250.1”）が入力される。このように、制御プログラム１
８１は、変数の値を設定するための記述であるファンクションブロックＦＢ１を含む。なお、ファンクションブロックＦＢ１には、ＩＰアドレスとして、変数記憶部１０３０（図１０）から読み出された値、またはプログラマブル表示器３００から直接入力された値が入力される。
【０１０９】
以上のように、ＰＬＣ１００は、ＦＴＰクライアント通信命令の入力変数の値として、当該ＦＴＰクライアント通信命令のファンクションブロックとは異なるファンクションブロックの出力変数を用いることができる。
【０１１０】
＜Ｋ．通信プロトコル＞
なお、上記では、ＰＬＣ１００とサーバ装置４００との間の通信に用いられる通信プロトコルの例として、ＦＴＰを例に挙げて説明したが、これに限定されるものではない。本発明は、ＰＬＣ１００とサーバ装置４００との間のデータ通信に用いられる各種の通信プロトコルに適用可能である。
【０１１１】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１１２】
１  制御システム、１０  検出スイッチ、２０  リレー、３０  サーボモータドライバ、３２  モータ、１００  ＰＬＣ、１０２  電源ユニット、１０４  ＣＰＵユニット、１０６  ユニット、１０６  ＩＯユニット、１０８  ＰＬＣシステムバス、１１０  フィールドバス、１１２  ネットワーク、１１４  接続ケーブル、１２０  プロセッサ、１２２
チップセット、１２４  システムクロック、１２６  主メモリ、１２８  不揮発性メモリ、１３０  コネクタ、１４０  ＰＬＣシステムバスコントローラ、１４２，１５２，１６２  バッファメモリ、１４４  ＰＬＣシステムバス制御回路、１４６  制御回路、１４８  システムバスコネクタ、１５０  フィールドバスコントローラ、１５４  フィールドバス制御回路、１５６，１６６  ＤＭＡ制御回路、１５８  フィールドバスコネクタ、１６０  上位通信コントローラ、１６４  上位通信制御回路、１６８  上位通信コネクタ、１７０  メモリカードインターフェイス、１７２  メモリカード、１８０  ＯＳ、１８１
制御プログラム、１８４  稼働ログ、１８６  ユーザプログラム、１８８  システムプログラム、１９０  シーケンス命令プログラム、１９２  処理プログラム、１９４  入出力処理プログラム、１９６  インターフェイス処理プログラム、１９８  スケジューラ、２００  ターミナル、２０２  通信カプラ、２０８  ターミナルバス、３００  プログラマブル表示器、３１１，４０２  ＣＰＵ、３１８  タッチスクリーン、３１９  通信インターフェイス、３８１  ディスプレイ、３８２  タッチパネル、４００  サーバ装置、８１１〜８１４，８２１〜８２３，８３１〜８３３  入力ボックス、８１８，８２８，８３８  設定ボタン、８２９，８３９  転送ボタン、１０１０，１０７０  通信部、１０２０
設定部、１０３０  変数記憶部、１０４０  制御プログラム実行部、１０５０  取得部、１０６０  データ管理部、ＦＢ１，ＦＢ２  ファンクションブロック。
【図１】
2018139162.tif 000003
【図２】
2018139162.tif 000004
【図３】
2018139162.tif 000005
【図４】
2018139162.tif 000006
【図５】
2018139162.tif 000007
【図６】
2018139162.tif 000008
【図７】
2018139162.tif 000009
【図８】
2018139162.tif 000010
【図９】
2018139162.tif 000011
【図１０】
2018139162.tif 000012
【図１１】
2018139162.tif 000013
【図１２】
2018139162.tif 000014
【図１３】
2018139162.tif 000015
【図１４】
2018139162.tif 000016
【図１５】
2018139162.tif 000017
【図１６】
2018139162.tif 000018
【図１７】
2018139162.tif 000019
【手続補正書】
【提出日】平成30年6月20日(2018.6.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
サーバ装置と通信するとともに、ユーザプログラムを実行することによって予め定められた機器を制御する制御装置であって、
前記ユーザプログラムを周期的に実行する実行手段と、
前記予め定められた機器から前記制御に基づくデータを取得する取得手段と、
予め定められた通信プロトコルを用いて前記サーバ装置と通信する第１の通信手段と、
前記通信プロトコルを利用する際に用いる変数と、前記変数の値とを対応づけて記憶するための記憶手段とを備え、
前記ユーザプログラムは、前記変数を入力変数として前記データを前記サーバ装置に送信する命令を含み、
前記ユーザプログラムの実行によって前記命令が起動されると、前記変数の値に基づいて前記データを前記サーバ装置に送信する、制御装置。
【請求項２】
プログラマブル表示器と通信する第２の通信手段と、
前記プログラマブル表示器からの指令に基づき、前記変数の値を設定する設定手段とをさらに備える、請求項１に記載の制御装置。
【請求項３】
前記設定手段は、前記ユーザプログラムの実行中であっても前記変数の値を設定する、請求項２に記載の制御装置。
【請求項４】
前記ユーザプログラムは、前記変数の値を設定するための記述を含む、請求項１〜３のいずれか１項に記載の制御装置。
【請求項５】
前記変数は、データの名称を含み、
前記第１の通信手段は、前記入力に対する前記ユーザプログラムの実行結果に基づいて、前記変数で指定されたデータの名称を有するデータを前記サーバ装置に送信する、請求項１〜４のいずれか１項に記載の制御装置。
【請求項６】
前記取得されたデータを予め定められた規則によって複数の互いに名称の異なるデータ群に分類することにより、前記データを管理する管理手段をさらに備え、
前記管理手段は、前記データ群をファイルとして管理し、
前記通信プロトコルは、ファイル転送プロトコルである、請求項１〜５のいずれか１項に記載の制御装置。
【請求項７】
前記データは、ファイルであり、
前記変数は、前記ファイルの名称を含み、
前記ユーザプログラムは、複数の前記ファイルの各々の名称を、前記変数として前記命令に入力し、
前記実行手段は、各前記変数が前記命令に入力されたことに基づき、前記複数のファイル毎に、同一名称のファイルが前記サーバ装置の指定されたディレクトリに存在するか否かを判断し、
前記ユーザプログラムは、前記複数のファイルのうち、同一名称のファイルが前記ディレクトリに存在すると判断された第１のファイルの名称を、前記変数として前記命令に再度入力し、
前記実行手段は、前記変数が前記命令に再度入力されたことに基づき、前記第１のファイルと同一名称のファイルが前記ディレクトリに存在するか否かを再度判断し、
前記第１の通信手段は、前記第１のファイルと同一名称のファイルが前記ディレクトリに存在しないと判断されたことに基づき、前記第１のファイルを前記サーバ装置に送信する、請求項１から３のいずれか１項に記載の制御装置。
【請求項８】
サーバ装置と通信するとともに、ユーザプログラムを実行することによって予め定められた機器を制御する制御装置における通信制御方法であって、
前記制御装置のプロセッサが、前記ユーザプログラムを周期的に実行するステップと、
前記プロセッサが、前記予め定められた機器から前記制御に基づくデータを取得するステップと、
前記プロセッサが、予め定められた通信プロトコルを用いて前記サーバ装置と通信するステップとを備え、
前記制御装置は、前記通信プロトコルを利用する際に用いる変数と、前記変数の値とを対応づけて記憶しており、
前記ユーザプログラムは、前記変数を入力変数として前記データを前記サーバ装置に送信する命令を含み、
前記通信制御方法は、前記ユーザプログラムの実行によって前記命令が起動されると、前記変数の値に基づいて前記データを前記サーバ装置に送信するステップをさらに備える、通信制御方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００６
【補正方法】変更
【補正の内容】
【０００６】
上記の特許文献１では、これらの変更対象の設定情報を予め記憶しておき、設定情報の変更においては、専用のパーソナルコンピュータを接続して設定を変更する必要がある。また、専用のツールを用いて変更をする場合には、システムもしくはユニットのリセットや初期化が必要であり、制御プログラムの動作中に変更することができなかった。また設定を行うためには専用ツールが必要であり、専用ツールが無い場合、専用ツールで設定を行うスキルが無い場合もあり、ユーザに不便を強いていた。このような観点からは、制御プログラムの実行中であっても、ＦＴＰ等の通信プロトコルを利用する際に用いる設定情報の値を変更することが可能であることが好ましい。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
ところで、制御プログラムには、ユーザプログラムが含まれている。また、上記のように、ＰＬＣは通信プロトコルを用いてサーバ装置と通信する。本願発明の目的は、通信プロトコルを利用する際に用いる変数をユーザプログラムが周期的に参照可能な制御装置、および制御装置における通信制御方法を提供することにある。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００５６
【補正方法】変更
【補正の内容】
【００５６】
ＦＴＰサーバのファイル一覧の取得機能、ＦＴＰサーバへのファイルアップロード機能、ＦＴＰサーバからのファイルダウンロード機能、ＦＴＰサーバのファイルの削除機能、およびＦＴＰサーバのディレクトリの削除機能を各々を実現するための命令（ＦＴＰクライアント通信命令）の名称を、それぞれ、「FTPGetFileList命令」、「FTPPutFile命令」、「FTPGetFile命令」、「FTPRemoveFile命令」、「FTPRemoveDir命令」と称する。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００７２
【補正方法】変更
【補正の内容】
【００７２】
変数記憶部１０３０は、外部の機器に参照公開する属性を持つ変数と、内部で使用される属性を有する変数を有していても良い。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００７４
【補正方法】変更
【補正の内容】
【００７４】
通信部１０７０は、ＦＴＰサーバであるサーバ装置４００と通信するためのインターフェイスである。通信部１０７０は、制御プログラム実行部１０４０の実行結果に応じた処理を実行する。たとえば、通信部１０７０は、FTPPutFile命令に基づくＰｕｔ処理（ＦＴＰサーバにファイルを転送（アップロード））、FTPGetFile命令に基づくＧｅｔ処理（ＦＴＰサーバからファイルを取得（ダウンロード））、FTPGetFilelist命令に基づくＬｓ処理（ＦＴＰサーバからファイル一覧を取得）を実行する。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００８３
【補正方法】変更
【補正の内容】
【００８３】
図１１を参照して、ＦＴＰサーバのＩＰアドレスを表す入力変数“ConnectSvr”の値、ＦＴＰサーバのディレクトリ名を表す入力変数“SvrDirName”の値、自装置（ＰＬＣ１００）のディレクトリ名を表す入力変数“LocalDirName”の値は、それぞれ、“192.168.250.1”、“\aaaaa\”、“”である。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００８４
【補正方法】変更
【補正の内容】
【００８４】
また、転送するファイル名は、ワイルドカードを用いて指定されている。具体的には、転送するファイル名の値は、入力変数“LocalDirName”の値（“\”）に含まれる全てのテキストデータ（“*.txt”）を表している。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００９８
【補正方法】変更
【補正の内容】
【００９８】
図１５（Ｂ）を参照して、プログラマブル表示器３００は、ＦＴＰクライアント（すなわち、ＰＬＣ１００）におけるディレクトリ名とファイル名とを指定するために、入力変数“SvrDirName”および入力変数“LocalDirName”の値の入力を受け付ける入力ボックス８２１，８２２をタッチスクリーン３１８に表示する。また、プログラマブル表示器３００は、ＦＴＰサーバのディレクトリ名を指定するために、入力変数“SvrDirName”の値の入力を受け付ける入力ボックス８２３を表示する。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００９９
【補正方法】変更
【補正の内容】
【００９９】
ユーザは、各入力ボックス８２１〜８２３に値を入力した後に設定ボタン８２８を選択することにより、ＰＬＣ１００の変数記憶部１０３０（図１０）に格納されている変数の値を設定（更新）することができる。また、ユーザは、転送ボタン８２９を選択することにより、ＰＬＣ１００にＰｕｔ処理を実行させることができる。これはユーザプログラムにおいて、ＨＭＩからの入力を受け付けた際にＦＴＰ命令が実行されることで実現される。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】０１００
【補正方法】変更
【補正の内容】
【０１００】
図１５（Ｃ）を参照して、プログラマブル表示器３００は、ＦＴＰクライアント（すなわち、ＰＬＣ１００）におけるディレクトリ名を指定するために、入力変数“LocalDirName”の値の入力を受け付ける入力ボックス８３１をタッチスクリーン３１８に表示する。また、プログラマブル表示器３００は、ＦＴＰサーバのディレクトリ名とファイル名とを指定するために、入力変数“SvrDirName”および入力変数“FileName”の値の入力を受け付ける入力ボックス８３２，８３３を表示する。
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】０１０１
【補正方法】変更
【補正の内容】
【０１０１】
ユーザは、各入力ボックス８３１〜８３３に値を入力した後に設定ボタン８３８を選択することにより、ＰＬＣ１００の変数記憶部１０３０（図１０）に格納されている変数の値を設定（更新）することができる。また、ユーザは、転送ボタン８３９を選択することにより、ＰＬＣ１００にＧｅｔ処理を実行させることができる。これはユーザプログラムにおいて、ＨＭＩからの入力を受け付けた際にＦＴＰ命令が実行されることで実現される。
【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】０１１２
【補正方法】変更
【補正の内容】
【０１１２】
１  制御システム、１０  検出スイッチ、２０  リレー、３０  サーボモータドライバ、３２  モータ、１００  ＰＬＣ、１０２  電源ユニット、１０４  ＣＰＵユニット、１０６  ＩＯユニット、１０８  ＰＬＣシステムバス、１１０  フィールドバス、１１２  ネットワーク、１１４  接続ケーブル、１２０  プロセッサ、１２２  チップセット、１２４  システムクロック、１２６  主メモリ、１２８  不揮発性メモリ、１３０  コネクタ、１４０  ＰＬＣシステムバスコントローラ、１４２，１５２，１６２  バッファメモリ、１４４  ＰＬＣシステムバス制御回路、１４６，１５６，１６６ ＤＭＡ制御回路、１４８  ＰＬＣシステムバスコネクタ、１５０  フィールドバスコントローラ、１５４  フィールドバス制御回路、１５８  フィールドバスコネクタ、１６０  上位通信コントローラ、１６４  上位通信制御回路、１６８  上位通信コネクタ、１７０  メモリカードインターフェイス、１７２  メモリカード、１８０  ＯＳ、１８１  制御プログラム、１８４  稼働ログ、１８６  ユーザプログラム、１８８  システムプログラム、１９０  シーケンス命令プログラム、１９２  ＦＴＰ処理プログラム、１９４  入出力処理プログラム、１９６  Ｔｏｏｌインターフェイス処理プログラム、１９８  スケジューラ、２００  リモートＩＯターミナル、２０２  通信カプラ、２０８  リモートＩＯターミナルバス、３００  プログラマブル表示器、３１１，４０２  ＣＰＵ、３１８  タッチスクリーン、３１９  通信インターフェイス、３８１  ディスプレイ、３８２  タッチパネル、４００  サーバ装置、８１１〜８１４，８２１〜８２３，８３１〜８３３  入力ボックス、８１８，８２８，８３８  設定ボタン、８２９，８３９  転送ボタン、１０１０，１０７０  通信部、１０２０  設定部、１０３０  変数記憶部、１０４０  制御プログラム実行部、１０５０  取得部、１０６０  データ管理部、ＦＢ１，ＦＢ２  ファンクションブロック。
【手続補正１４】
【補正対象書類名】図面
【補正対象項目名】図６
【補正方法】変更
【補正の内容】
【図６】
2018139162.tif 000020
【手続補正１５】
【補正対象書類名】図面
【補正対象項目名】図１５
【補正方法】変更
【補正の内容】
【図１５】
2018139162.tif 000021
【手続補正１６】
【補正対象書類名】図面
【補正対象項目名】図１６
【補正方法】変更
【補正の内容】
【図１６】
2018139162.tif 000022