(57)【要約】【課題】コントローラ内において外部装置との通信機能が多重化された環境を提供する。【解決手段】コントローラは、複数の通信プログラムを実行し、また、制御対象を制御するためのユーザープログラムであって、外部装置と通信するための命令を含むユーザープログラムを実行する。また、コントローラは、複数の通信プログラムのいずれにも接続可能に構成されて、複数の通信プログラムと外部装置との通信を制御する通信インターフェイスを備える。コントローラは、上記の命令の実行時に、外部装置と通信するデータを受付け、データの宛先に基づき、複数の通信プログラムのうちからデータを外部装置に送信する通信プログラムを決定する。【選択図】図１
2019148890.tif 000002
【特許請求の範囲】
【請求項１】
コントローラであって、
複数の通信プログラムを実行する通信プログラム実行部と、
制御対象を制御するためのユーザープログラムであって、外部装置と通信するための命令を含む前記ユーザープログラムを実行するためのユーザープログラム実行部と、
前記複数の通信プログラムのいずれにも接続可能に構成されて、前記複数の通信プログラムと前記外部装置との通信を制御する通信インターフェイスと、
前記ユーザープログラム実行部による前記命令の実行時に、前記ユーザープログラム実行部から前記外部装置と通信するデータを受付け、前記データの宛先に基づき、前記複数の通信プログラムのうちから前記データを前記外部装置に送信する通信プログラムを決定する決定部と、を備える、コントローラ。
【請求項２】
各前記通信プログラムについて、通信スタックを備える、請求項１に記載のコントローラ。
【請求項３】
前記決定部は、
各前記通信プログラムの実行状態と前記宛先に基づき、前記複数の通信プログラムのうちから前記データを前記外部装置に送信する通信プログラムを決定する、請求項１または２に記載のコントローラ。
【請求項４】
前記決定部は、
前記宛先に基づく前記通信プログラムの前記実行状態が予め定められた条件を満たすとき、当該通信プログラムを、前記データを前記外部装置に送信する通信プログラムとして決定する、請求項３に記載のコントローラ。
【請求項５】
前記通信プログラムの実行状態は、実行中における当該通信プログラムの通信の応答性能により示される、請求項４に記載のコントローラ。
【請求項６】
前記予め定められた条件は、前記応答性能の閾値を含み、
前記閾値は、応答性能に関連した通信特徴量を用いた機械学習により決定する、請求項５に記載のコントローラ。
【請求項７】
前記決定部は、
前記宛先に基づく前記通信プログラムの前記実行状態が予め定められた条件を満たさないとき、他の前記通信プログラムを、前記データを前記外部装置に送信する通信プログラムとして決定する、請求項４から６のいずれか１項に記載のコントローラ。
【請求項８】
前記決定部は、
前記宛先に基づく前記通信プログラムの前記実行状態が予め定められた条件を満たさないとき、前記データを格納部に出力する、請求項４から６のいずれか１項に記載のコントローラ。
【請求項９】
前記コントローラは、
前記格納部のデータを、前記通信プログラムのうちの所定の通信プログラムを介して前記外部装置に送信する、請求項８に記載のコントローラ。
【請求項１０】
前記宛先に基づく前記通信プログラムの種類と、前記所定の通信プログラムの種類とは異なり、
前記通信プログラムの種類は、当該通信プログラムがデータを伝送するための通信プロトコルの種類に対応する、請求項９に記載のコントローラ。
【請求項１１】
前記外部装置は、データベースサーバーまたは前記データベースサーバーと前記コントローラとの通信を制御する通信部を含み、
前記通信プロトコルの種類は、前記データベースサーバーに接続するための通信プロトコルを含む、請求項１０に記載のコントローラ。
【請求項１２】
コントローラによる制御方法であって、
複数の通信プログラムを実行するステップと、
制御対象を制御するためのユーザープログラムであって、外部装置と通信するための命令を含む前記ユーザープログラムを実行するステップと、を備え、
前記コントローラは、
前記複数の通信プログラムのいずれにも接続可能に構成されて、前記複数の通信プログラムと前記外部装置との通信を制御する通信インターフェイスを備え、
前記制御方法は、さらに、
前記ユーザープログラムの前記命令が実行されるときに、前記ユーザープログラムから前記外部装置と通信するデータを受付け、前記データの宛先に基づき、前記複数の通信プログラムのうちから当該データを前記外部装置に送信する通信プログラムを決定するステップを備える、制御方法。
【請求項１３】
請求項１２に記載の制御方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、プログラマブルロジックコントローラ（ＰＬＣ：Programmable Logic Controller）等のコントローラ、制御方法およびプログラムに関し、特に、コントローラと外部装置との通信を実施する通信部が多重化されたコントローラ、制御方法およびプログラムに関する。
【背景技術】
【０００２】
ＰＬＣ等のコントローラは、工場などの自動機械の制御などに用いられ、複数の入出力機能を有して、例えば、センサ等から出力される値を逐次、読みこんでデータを保持する。近年、ＰＬＣは、データベースシステム等の外部装置と接続して、ＰＬＣで保持しているデータを、データベースシステムに蓄積する。これにより、データベースに接続する情報処理装置同士でのデータの共有を容易にしたり、各種データを収集して、データの集計や解析などを容易にしたりすることができる。
【０００３】
例えば特開２０１４−１９４５９２号公報（特許文献１）では、機器監視端末が、複数の通信仲介機器を接続する設定情報管理装置と接続する。各通信仲介機器は、複数の通信対応機器を接続する。機器監視端末は、設定情報管理装置を介して通信仲介機器を管理する。
【０００４】
また、特開２０１４−０７８２５３号公報（特許文献２）は、ホストコンピュータ上で実行する構成ツールソフトウェアを使用して、フィールド機器を構成する。ホストコンピュータは、構成ツールを用いて複数のフィールド機器にメッセージを送信し、また設定を転送する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４−１９４５９２号公報
【特許文献２】特開２０１４−０７８２５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＰＬＣ等のコントローラが、データベースシステム等の外部装置と通信し、データを集計する場合は、コントローラの信頼性を維持するために、データの消失がなく集計することが望まれる。特許文献１は、複数の通信仲介機器を備えることで通信機器を冗長または多重化した構成を備えるが、ＰＬＣ等の既存のハードウェア設備に、特許文献１の多重化の構成を組み入れる場合は、ＰＬＣを含む設備の交換が必要となる。
【０００７】
本開示は、既存の設備を活かしつつ、コントローラ内において外部装置との通信機能が多重化された環境を提供することを目的とする。
【課題を解決するための手段】
【０００８】
この開示に係るコントローラは、複数の通信プログラムを実行する通信プログラム実行部と、制御対象を制御するためのユーザープログラムであって、外部装置と通信するための命令を含むユーザープログラムを実行するためのユーザープログラム実行部と、複数の通信プログラムのいずれにも接続可能に構成されて、複数の通信プログラムと外部装置との通信を制御する通信インターフェイスと、ユーザープログラム実行部による命令の実行時に、ユーザープログラム実行部から外部装置と通信するデータを受付け、当該データの宛先に基づき、複数の通信プログラムのうちから当該データを外部装置に送信する通信プログラムを決定する決定部と、を備える。
【０００９】
この開示によれば、コントローラ内において、コントローラが有する通信インターフェイスを共用しながら、外部装置と通信する複数のプログラムが備えられる。これにより、コントローラ内で外部装置と通信するための多重化された通信環境が提供される。
【００１０】
上述の開示において、各通信プログラムについて、通信スタックが備えられてもよい。
この開示によれば、通信スタックが、各通信プログラムについて個別に備えられることで、通信スタックレベルでの上記に述べた多重化が可能となる。
【００１１】
上述の開示において、決定部は、各通信プログラムの実行状態と上記の宛先に基づき、複数の通信プログラムのうちからデータを外部装置に送信する通信プログラムを決定してもよい。
【００１２】
この開示によれば、データの宛先に基づき、複数の通信プログラムのうちから、当該データを外部装置に送信するための通信プログラムを決定することができる。
【００１３】
上述の開示において、決定部は、宛先に基づく通信プログラムの実行状態が予め定められた条件を満たすとき、当該通信プログラムを、データを外部装置に送信する通信プログラムとして決定してもよい。
【００１４】
この開示によれば、データを外部装置に送信するための通信プログラムを、データの宛先と通信プログラムの実行状態とに基づいて決定することができる。
【００１５】
上述の開示において、通信プログラムの実行状態は、実行中における当該通信プログラムの通信の応答性能により示されてもよい。
【００１６】
この開示によれば、通信プログラムの応答性能を、当該通信プログラムの実行状態によって示すことができる。
【００１７】
上述の開示において、予め定められた条件は、応答性能の閾値を含み、当該閾値は、応答性能に関連した通信特徴量を用いた機械学習により決定してもよい。
【００１８】
この開示によれば、応答性能を評価するための閾値を、応答性能に関連した通信特徴量を用いた機械学習で決定することができる。
【００１９】
上述の開示において、決定部は、宛先に基づく通信プログラムの実行状態が予め定められた条件を満たさないとき、他の通信プログラムを、データを外部装置に送信する通信プログラムとして決定してもよい。
【００２０】
この開示によれば、宛先に基いて決定された通信プログラムの実行状態が予め定められた条件を満たさなければ、他の通信プログラムによりデータを外部装置に送信することができる。
【００２１】
上述の開示において、決定部は、宛先に基づく通信プログラムの実行状態が予め定められた条件を満たさないとき、データを格納部に出力してもよい。
【００２２】
この開示によれば、宛先に基づく通信プログラムの実行状態が予め定められた条件を満たさないときは、データを格納しておくことで保存することが可能となる。
【００２３】
上述の開示において、宛先に基づく通信プログラムの種類と、上記の所定の通信プログラムの種類とは異なり、通信プログラムの種類は、当該通信プログラムがデータを伝送するための通信プロトコルの種類に対応してもよい。
【００２４】
この開示によれば、データの宛先に基づいた種類の通信プログラムとは異なる種類の通信プログラムを用いて、すなわち異なる伝送プロトコルに従いデータを外部装置に送信することが可能になる。
【００２５】
上述の開示において、外部装置は、データベースサーバーまたはデータベースサーバーとコントローラとの通信を制御する通信部を含み、通信プロトコルの種類は、当該データベースサーバーに接続するための通信プロトコルを含んでもよい。
【００２６】
この開示によれば、コントローラは、上記の多重化された通信環境として、ユーザープログラムからのデータを用いてデータベースへアクセスするための通信環境、またはデータベースサーバーとコントローラとの通信を制御する通信部を中継することによるデータベースへアクセスするための通信環境を提供することが可能となる。
【００２７】
本開示の一例によれば、外部装置と接続するための通信インターフェイスを備えたコントローラによる制御方法が提供される。制御方法は、制御対象を制御するためのユーザープログラムであって、外部装置と通信するための命令を含むユーザープログラムを実行するステップと、通信インターフェイスを介した外部装置との通信を制御する複数の通信プログラムを実行するステップと、命令の実行時に、ユーザープログラムか外部装置と通信するデータを受付け、データの宛先に基づき、複数の通信プログラムのうちからデータを外部装置に送信する通信プログラムを決定するステップ、とを備える。
【００２８】
この開示によれば、コントローラ内において、外部装置と通信するための複数のプログラムが備えられることで、コントローラ内で外部装置と通信するための多重化された通信環境が提供される。
【００２９】
本開示の一例によれば、上記に述べた制御方法をコンピュータに実行させるためのプログラムが提供される。
【発明の効果】
【００３０】
本開示の一例によれば、コントローラ内において、外部装置と通信するための複数のプログラムが備えられることで、コントローラ内で外部装置と通信するための多重化された通信環境が提供される。
【図面の簡単な説明】
【００３１】
【図１】本実施の形態に係るコントローラの適用場面の一例を示す模式図である。
【図２】本実施の形態に係る制御システムの全体構成例を示す図である。
【図３】本実施の形態に係るＰＬＣの主要部を示すハードウェア構成の一例を示す模式図である。
【図４】本実施の形態に係るＰＬＣのソフトウェア構成の一例を示す模式図である。
【図５】本実施の形態に係るサーバーの構成の一例を示す模式図である。
【図６】本実施の形態に係るデータの流れとともにＰＬＣの構成の一例を示す模式図である。
【図７】本実施の形態に係る割付ルールと状態情報の一例を示す模式図である。
【図８】本実施の形態に係るアドレス変換テーブルの一例を示す模式図である。
【図９】本実施の形態に係る割付処理のフローチャートの一例を模式的に示す図である。
【図１０】本実施の形態に係る通信監視処理の一例を模式的に示す図である。
【図１１】本実施の形態に係るデータの流れとともにＰＬＣの構成の他の例を示す模式図である。
【図１２】本実施の形態に係る割付ルールの他の例を示す模式図である。
【図１３】本実施の形態に係る機械学習による閾値の変化パターンの一例を模式的に示す図である。
【図１４】本実施の形態に係るデータの流れとともにＰＬＣの構成のさらなる他の例を示す模式図である。
【図１５】本実施の形態に係る割付ルールのさらなる他の例を模式的に示す図である。
【図１６】本実施の形態に係る割付処理の他の例を示すフローチャートである。
【図１７】本実施の形態に係る通信監視処理の他の例を示すフローチャートであある。
【図１８】本実施の形態に係る通信スタックにおける使用されるメモリサイズの変化の一例を模式的に示す図である。
【図１９】本実施の形態に係る通信クライアントの切替えの態様の一例を模式的に示す図である。
【図２０】本実施の形態に係る通信クライアントの切替えの態様の他の例を模式的に示す図である。
【発明を実施するための形態】
【００３２】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００３３】
＜Ａ．適用例＞
まず、図１を参照して、本発明が適用される場面の一例について説明する。図１は、本実施の形態に係るコントローラの適用場面の一例を示す模式図である。ＰＬＣ１００は、本実施の形態に係る制御システムのコントローラの一例である。コントローラ（例えば、ＰＬＣ１００）は、１または複数の外部装置（例えば、サーバー４００）と接続するための通信インターフェイス（例えば、上位通信コントローラ１６０）と、制御対象を制御するためのユーザープログラム１８６であって、外部装置と通信するための命令を含む当該ユーザープログラム１８６を実行するためのユーザープログラム実行部（例えば、ＣＰＵユニット１０４）と、通信インターフェイスを介した外部装置との通信を制御する複数の通信プログラム（例えば、通信クライン（Ｘ）プログラム１８１，通信クライアント（Ｙ）プログラム１８２）を実行する通信プログラム実行部（例えば、ＣＰＵユニット１０４）と、割付部１８８とを備える。
【００３４】
通信クライン（Ｘ）プログラム１８１と通信クライアント（Ｙ）プログラム１８２とは、実行されることにより、同じ通信機能を提供する。例えば、通信クライアント（Ｙ）プログラム１８２は、通信クライン（Ｘ）プログラム１８１をコピーすることにより作成される。
【００３５】
図１の制御システムでは、例えばサーバークライアントシステムが適用され得る。クライアントとしてのＰＬＣ１００は、アプリケーション層のユーザープログラム１８６を実行しながら、物理層にある電気的な通信回路に相当する通信インターフェイス（例えば、上位通信コントローラ１６０）を介して、例えばＴＣＰ/ＩＰ（Transmission Control Protocol/Internet Protocol）に従い外部装置のサーバー４００と通信する。
【００３６】
ＰＬＣ１００内では、アプリケーション層と物理層との間の層において、例えばセッション層において、割付部１８８および通信クライアント（Ｘ）１８１，通信クライアント（Ｙ）１８２を備えている。ＰＬＣ１００内では、このように階層化を採用することで、各層のプログラムまたはモジュール（回路を含む）を他の層から分離することができる。
【００３７】
ＰＬＣ１００は、例えば汎用のコンピュータが適用され得る。ユーザープログラム１８６は、汎用のコンピュータが備えるＯＳ（Operating System）（より典型的にはリアルタイムＯＳ）のもとで実行されて、各種のフィールド機器との間でデータを遣り取りする。これらのフィールド機器は、制御対象に対して何らかの処理を行うためのアクチュエータまたは制御対象から情報を取得するためのセンサ等を含む。
【００３８】
割付部１８８は、ユーザープログラム実行部による命令の実行時に、ユーザープログラム実行部からサーバー４００と通信するデータを受付け、データの宛先に基づき、複数の通信プログラムのうちからデータをサーバー４００に送信するための通信プログラムを決定する「決定部」の一実施例である。割付部１８８は、典型的にはソフトウェア（プログラム）により提供される。
【００３９】
このように本実施の形態では、ＰＬＣ１００の内部において、実行されることで同じ通信機能を提供する複数の通信プログラムを備えることが可能となる。これにより、ＰＬＣ１００に、複数の通信機器を接続せずとも、ＰＬＣ１００内においてサーバー４００との通信手段を多重化（または冗長化）することができる。また、既存のＰＬＣ１００に複数の通信プログラムおよび決定部（割付部１８８）のプログラムをインストールすることで、ＰＬＣ１００等の機器を交換することなく既存の設備を活かしつつ、ＰＬＣ１００内において上記の多重化を実現することが可能となる。
【００４０】
また、図１のＰＬＣ１００は、複数の通信プログラム（通信クライアント（Ｘ）１８１，通信クライアント（Ｙ）１８２）が１個の通信インターフェイスを共用するよう構成される。すなわち、１個の通信インターフェイスが複数の通信プログラムのいずれにも接続可能に構成されて、複数の通信プログラムとサーバー４００の通信を制御する。これにより、ＰＬＣ１００内における通信手段の多重化の構成を、ＰＬＣ１００の通信インターフェイス１６０等の回路点数の増加を伴わずに実現することができる。
【００４１】
また、本実施の形態では、ＰＬＣ１００は、複数の通信プログラムを、データの宛先によって切替えながら使用することが可能となり、ＰＬＣ１００とサーバー４００の間での通信にかかる負荷を、複数の通信プログラム間で分散し得る環境も提供し得る。
【００４２】
上記のサーバー４００は、例えば各種のサーバーを含み得る。サーバー４００には、データベースサーバーが含まれ得る。ユーザープログラム１８６からのデータは、このデータベースサーバーにアクセスするためのデータベース操作命令（ＳＱＬ文等）を含み得る。また、データには、当該データを伝送するためにユーザープログラム１６８が指定したプロトコル（例えば、ＦＴＰ（File Transfer Protocol）等）が含まれ得る。これのＳＱＬ文または伝送プロトコルは、データの種類を示し得る。
【００４３】
また、割付部１８８は、各通信プログラムの実行状態に基づき、複数の通信プログラムのうちから、データをサーバー４００に送信する通信プログラムを決定する。この実行状態は、各通信プログラムについて測定される通信の応答性能により示され得て、この応答性能は、通信プログラムの実行中に、すなわちデータを送信する場合に測定され得る。
【００４４】
通信プログラムの応答性能としては、例えば通信プログラムの応答時間が含まれ得る。応答時間は、例えば、通信プログラムにデータ通信の要求をしてから要求に対する応答（Ack）を受信するまでの所要時間を測定することで取得され得る。または、通信プログラムにデータを送信し、それに対する応答（例えば、データをサーバー４００に送信完了した旨の応答）を受信するまでの所要時間を測定することにより取得され得る。本実施の形態では、例えば、割付部１８８が有する監視部１８９により、各通信プログラムについて、この応答性能（応答時間）が測定され得る。
【００４５】
ＰＬＣ１００では、各通信プログラムについて、通信スタック（図４の通信スタック１９１，１９２）が個別に備えられる。通信スタックは、１種のメモリ領域であり、例えばＰＬＣ１００の不揮発性メモリの一部に相当する。このように、通信プログラム毎に通信スタックを備えることで、通信スタックレベルでの多重化が可能となる。
【００４６】
通信スタックは、通信プログラムが実行されるときに生成されるオブジェクトを格納する領域に使用される。通信スタックは、使用済領域のサイズが大きくなると、使用済領域を使用可能領域に解放するための処理、いわゆるガベージコレクションがなされる。したがって、一方の通信スタックでガベージコレクションがなされる間は、他方の通信スタックを、この間で生成されるオブジェクトを格納する領域に利用することができる。これにより、上記の多重化において、複数の通信プログラム間で（すなわち、複数の通信スタック間で）通信負荷を分散しながら、ＰＬＣ１００とサーバー４００との通信を継続することが可能になる。
【００４７】
以下、本発明のより具体的な応用例として、本実施の形態に係るコントローラ１００のより詳細な構成および処理について説明する。
【００４８】
＜Ｂ．システム構成＞
本実施の形態に係る制御システムのシステム構成について説明する。本実施の形態においては、機械や設備などの制御対象を制御するＰＬＣをコントローラの典型例として説明を行う。但し、本発明に係るコントローラは、ＰＬＣに限られることなく、各種のコントローラへ適用可能である。
【００４９】
図２は、本実施の形態に係る制御システムの全体構成例を示す図である。図２を参照して、制御システム１は、ＰＬＣ１００と、ＰＬＣ１００に接続されるサポート装置３００と、ＰＬＣ１００からのアクセスを受けるＤＢ（データベース）４３０を備えるサーバー４００とを含む。本実施の形態では、制御システム１が備えるサーバー４００は複数台としているが、少なくとも１台以上を備えていればよい。サーバー４００は、ＤＢ４３０と、ＤＢ４３０へのデータの書き込みおよび読み出しを制御する後述するＤＢＭＳ（Database Management System）を備える。
【００５０】
ＰＬＣ１００は、ユーザープログラム１８６を周期的またはイベント的に実行する。このユーザープログラム１８６にＤＢ４３０へのアクセス命令を含めることができ、ＰＬＣ１００は、このアクセスに従って、サーバー４００にアクセスすることができる。すなわち、ＰＬＣ１００およびサーバー４００は、イーサネット（登録商標）などのネットワーク１１２を介して、データを互いに遣り取りできるように構成される。
【００５１】
サポート装置３００は、ＰＬＣ１００に接続可能な情報処理装置の典型例である。サポート装置３００は、接続ケーブル１１４を介してＰＬＣ１００に接続され、ＰＬＣ１００との間で各種パラメータの設定、プログラミング、モニタ、デバッグなどの機能を提供する。ＰＬＣ１００とサポート装置３００との間は、典型的には、ＵＳＢ（Universal Serial Bus）規格に従って通信可能に構成される。
【００５２】
ＰＬＣ１００は、制御演算を実行するＣＰＵユニット１０４と、１つ以上のＩＯ（Input/Output）ユニット１０６とを含む。これらのユニットは、ＰＬＣシステムバス１０８を介して、データを互いに遣り取りできるように構成される。また、これらのユニットには、電源ユニット１０２によって適切な電圧の電源が供給される。
【００５３】
制御システム１において、ＰＬＣ１００は、（ＰＬＣシステムバス１０８を介して接続される）ＩＯユニット１０６を介して、および／または、フィールドバス１１０を介して、各種のフィールド機器との間でデータを遣り取りする。これらのフィールド機器は、制御対象に対して何らかの処理を行うためのアクチュエータや、制御対象から各種情報を取得するためのセンサなどを含む。図２には、このようなフィールド機器の一例として、検出スイッチ１０、リレー２０およびモータ３２を駆動するサーボモータドライバ３０を含む。また、ＰＬＣ１００は、フィールドバス１１０を介してリモートＩＯターミナル２００も接続されている。リモートＩＯターミナル２００は、基本的には、ＩＯユニット１０６と同様に、一般的な入出力処理に関する処理を行う。より具体的には、リモートＩＯターミナル２００は、フィールドバス１１０でのデータ伝送に係る処理を行うための通信カプラ２０２と、１つ以上のＩＯユニット２０４とを含む。これらのユニットは、リモートＩＯターミナルバス２０８を介して、データを互いに遣り取りできるように構成される。
【００５４】
＜Ｃ．ＰＬＣ１００のハードウェア構成＞
次に、本実施の形態に係るＰＬＣ１００のハードウェア構成について説明する。図３は、本実施の形態に係るＰＬＣ１００の主要部を示すハードウェア構成の一例を示す模式図である。
【００５５】
図３を参照して、ＰＬＣ１００のＣＰＵユニット１０４のハードウェア構成について説明する。ＣＰＵユニット１０４は、プロセッサ１２０と、チップセット１２２と、システムクロック１２４と、主メモリ１２６と、不揮発性メモリ１２８と、ＵＳＢコネクタ１３０と、ＰＬＣシステムバスコントローラ１４０と、フィールドバスコントローラ１５０と、上位通信コントローラ１６０と、メモリカードインターフェイス１７０とを含む。チップセット１２２と他のコンポーネントとの間は、各種のバスを介してそれぞれ結合されている。
【００５６】
プロセッサ１２０およびチップセット１２２は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、プロセッサ１２０は、チップセット１２２から内部クロックに従って順次供給される命令コードを解釈して実行する。チップセット１２２は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、プロセッサ１２０に必要な命令コードを生成する。システムクロック１２４は、予め定められた周期のシステムクロックを発生してプロセッサ１２０に提供する。チップセット１２２は、プロセッサ１２０での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。
【００５７】
ＣＰＵユニット１０４は、記憶手段として、主メモリ１２６および不揮発性メモリ１２８を有する。主メモリ１２６は、揮発性の記憶領域であり、プロセッサ１２０で実行されるべき各種プログラムを保持するとともに、各種プログラムの実行時の作業用メモリとしても使用される。不揮発性メモリ１２８は、ＯＳ、システムプログラム、ユーザープログラム、データ定義情報、ログ情報などの各種プログラムおよびデータを不揮発的に保持する。
【００５８】
ＵＳＢコネクタ１３０は、サポート装置３００とＣＰＵユニット１０４とを接続するためのインターフェイスである。典型的には、サポート装置３００から転送される実行可能なプログラムなどは、ＵＳＢコネクタ１３０を介してＣＰＵユニット１０４に取込まれる。
【００５９】
ＣＰＵユニット１０４は、通信手段として、ＰＬＣシステムバスコントローラ１４０、フィールドバスコントローラ１５０、および上位通信コントローラ１６０を有する。これらの通信回路は、データの送信および受信を行う。
【００６０】
ＰＬＣシステムバスコントローラ１４０は、ＰＬＣシステムバス１０８を介したデータの遣り取りを制御する。より具体的には、ＰＬＣシステムバスコントローラ１４０は、バッファメモリ１４２と、ＰＬＣシステムバス制御回路１４４と、ＤＭＡ（Dynamic Memory Access）制御回路１４６とを含む。ＰＬＣシステムバスコントローラ１４０は、ＰＬＣシステムバスコネクタ１４８を介してＰＬＣシステムバス１０８と接続される。
【００６１】
フィールドバスコントローラ１５０は、バッファメモリ１５２と、フィールドバス制御回路１５４と、ＤＭＡ制御回路１５６とを含む。フィールドバスコントローラ１５０は、フィールドバスコネクタ１５８を介してフィールドバス１１０と接続される。上位通信コントローラ１６０は、バッファメモリ１６２と、上位通信制御回路１６４と、ＤＭＡ制御回路１６６とを含む。上位通信コントローラ１６０は、通信ポート１６８を介してネットワーク１１２と接続される。通信ポート１６８は、上位システムと接続するための物理的なポートに相当し、例えば、通信ポート１６８を接続する上位通信コントローラ１６０は、「通信インターフェイス」の一実施例である。
【００６２】
メモリカードインターフェイス１７０は、ＣＰＵユニット１０４に対して着脱可能なメモリカード１７２とプロセッサ１２０とを接続する。
【００６３】
＜Ｄ．ＰＬＣ１００のソフトウェア構成＞
図４は、本実施の形態に係るＰＬＣ１００のソフトウェア構成の一例を示す模式図である。次に、図４を参照して、本実施の形態に係るＰＬＣ１００が提供する各種機能を実現するためのソフトウェア構成について説明する。これらのソフトウェアに含まれる命令コードは、適切なタイミングで読み出され、ＣＰＵユニット１０４のプロセッサ１２０によって実行される。
【００６４】
ＰＬＣ１００は、ＯＳ１８０の元で実行されるユーザープログラム１８６、通信クライアント（Ｘ）プログラム１８１および通信クライアント（Ｙ）プログラム１８２を含む各プログラムを周期的に実行するためのスケジューラを有する。ＰＬＣ１００は、ユーザープログラム１８６を実行する場合、ＰＬＣ１００内のメモリ領域の情報を読み書きして、ユーザープログラム１８６に示される命令を順に実行する。ＰＬＣ１００は、入出力機能を備えており、センサ出力などＰＬＣ１００の外部からデータを受け付けて、データを蓄積する。ＰＬＣ１００は、蓄積されたデータをＤＢ４３０に格納するためにサーバー４００と通信する。なお、ＰＬＣ１００は、サーバー４００からＤＢ４３０のデータを読出し、ユーザープログラム１８６等に渡すことができる。
【００６５】
図４を参照して、ＰＬＣ１００の各機能は、ＯＳ１８０、システムプログラム１８７、ユーザープログラム１８６等が動作することで発揮される。
【００６６】
ＯＳ１８０は、ＰＬＣ１００のメモリ等を含むハードウェアリソース１９０を管理するオペレーティングシステムであり、タスクのスケジューリングや、サーバー４００へのアクセス処理等を行う機能をＰＬＣ１００に発揮させる。ＯＳ１８０は、例えばリアルタイムＯＳであって、システムプログラム１８７およびユーザープログラム１８６を実行するための基本的な実行環境を提供する。
【００６７】
システムプログラム１８７は、ＰＬＣ１００としての基本的な機能を提供するためのソフトウェア群である。本実施の形態では、システムプログラム１８７は、ＰＬＣ１００がサーバー４００へアクセスするためのプログラム群を含む。このプログラム群は、例えばJava（登録商標）プログラムで実現される通信クライアント（Ｘ）プログラム１８１および通信クライアント（Ｙ）プログラム１８２、これらJavaプログラムを実行するための仮想計算機として実装されたＪＶＭ（Java virtual machine）１８３，１８４、およびＯＳ１８０を介して仮想計算機がハードウェアリソース１９０を利用するために実装されるハイパーバイザ１８５を含む。
【００６８】
例えば、通信クライアント（Ｘ）プログラム１８１および通信クライアント（Ｙ）プログラム１８２は、それぞれ、実行されることによりＰＬＣ１００に対して、サーバー４００と通信するための共通した通信環境を提供する。以下では、通信クライアント（Ｘ）プログラム１８１を、通信クライアント（Ｘ）１８１とも称し、通信クライアント（Ｙ）プログラム１８２を、通信クライアント（Ｙ）１８２とも称する。また、通信クライアント（Ｘ）１８１と通信クライアント（Ｙ）１８２を総称する場合は、通信クライアントと称する。
【００６９】
通信クライアント（Ｘ）１８１はＪＶＭ１８３により実行され、通信クライアント（Ｙ）１８２はＪＶＭ１８４により実行されることにより、通信クライアント（Ｘ）１８１と通信クライアント（Ｙ）１８２は並列に実行され得る。通信クライアント（Ｘ）１８１および通信クライアント（Ｙ）１８２が実行中は、ＪＶＭ１８３およびＪＶＭ１８４は、ハイパーバイザ１８５およびＯＳ１８０を介してハードウェアリソース１９０等の資源を利用する。
【００７０】
このように、ＰＬＣ１００内において、サーバー４００と通信するための通信クライアントを多重化（または冗長化）することができる。なお、ここでは、ＪＶＭ１８３，１８４上で実行されるプログラムは、通信クライアント（Ｘ）１８１および通信クライアント（Ｙ）１８２の２つとしているが、この２つに限定されず、他のJavaプログラムが含まれてもよい。
【００７１】
ハードウェアリソース１９０の不揮発性メモリ１２８等の記憶領域には、通信クライアント（Ｘ）１８１および通信クライアント（Ｙ）１８のそれぞれについて、予め定められたサイズに制限された通信スタック１９１および通信スタック１９２が備えられる。図４では、通信スタック１９１と通信スタック１９２は分離した領域として示されるが、両者は連続した領域であってもよい。
【００７２】
本実施の形態では、ユーザープログラム１８６は、ユーザにおける制御目的（たとえば、対象のラインやプロセス）に応じて作成される。また、通信クライアントのプログラムも、ユーザにおけるＰＬＣ１００とサーバー４００との間の通信の目的に応じて作成される。ユーザープログラム１８６は、典型的には、ＣＰＵユニット１０４のプロセッサ１２０で実行可能なオブジェクトプログラム形式になっている。また、通信クライアント（Ｘ）１８１および通信クライアント（Ｙ）１８２は、ＪＶＭ１８３および１８４により実行可能な形式になっている。ユーザープログラム１８６または通信クライアント（Ｘ）１８１，通信クライアント（Ｙ）１８２は、サポート装置３００等において、作成されてコンパイルされることで生成される。そして、生成されたこれらプログラムは、サポート装置３００からＣＰＵユニット１０４へ転送され、不揮発性メモリ１２８などに格納される。
【００７３】
なお、本実施の形態では、通信クライアント（Ｘ）１８１および通信クライアント（Ｙ）１８２等の通信クライアントのプログラムは、仮想計算機により実行されるとしているが、通信クライアントのプログラムの実行環境は仮想計算機によるものに限定されない。例えば、ユーザープログラム１８６と同様にＣＰＵユニット１０４が備えるＯＳ１８０により実行されるとしてもよい。
【００７４】
＜Ｅ．サーバー４００の構成＞
次に、本実施の形態に係るサーバー４００の構成について説明する。図５は、本実施の形態に係るサーバー４００の構成の一例を示す模式図である。サーバー４００は、典型的には、汎用のコンピュータで構成される。
【００７５】
図５を参照して、サーバー４００は、ＯＳを含む各種プログラムを実行するＣＰＵ４０２と、ＢＩＯＳや各種データを格納するＲＯＭ（Read Only Memory）４０４と、ＣＰＵ４０２でのプログラムの実行に必要なデータを格納するための作業領域を提供するメモリＲＡＭ４０６と、ＣＰＵ４０２で実行されるプログラムなどを不揮発的に格納するハードディスク（ＨＤＤ）４０８とを含む。より具体的には、ハードディスク４０８には、ＤＢ４３０およびＤＢＭＳ４３１のプログラムを含む各種のプログラムおよびデータが格納されている。
【００７６】
サーバー４００は、さらに、ユーザからの操作を受け付けるキーボード３１０およびマウス３１２と、情報をユーザに提示するためのモニタ３１４とを含む。さらに、サーバー４００は、ＰＬＣ１００（ＣＰＵユニット１０４）などと通信するための通信インターフェイス（ＩＦ）４１８を含む。
【００７７】
サーバー４００は、ＤＢ４３０を提供するための公知の構成を有する。ＤＢ４３０としては、例えばリレーショナルデータ型やオブジェクトデータ型といった任意の構成を採用できる。サーバー４００は、汎用的なコンピュータアーキテクチャに従って構成されるため、ここではその詳細な説明は繰り返さない。
【００７８】
サーバー４００は、ＰＬＣ１００からの接続要求またはアクセス要求（リレーショナルデータ型では、ＳＱＬ文）を受けて、必要な処理を実行し、その処理結果などをＰＬＣ１００へ応答する。ここでは、例えば、ＤＢ４３０は、リレーショナルデータ型であって、ＤＢＭＳ４３１は、ＳＱＬ文に従いＤＢ４３０にデータを読書きするが、ＤＢ４３０の型およびＤＢ４３０の操作言語はＳＱＬに限定されない。
【００７９】
＜Ｆ．データの流れと設定データ＞
図６は、本実施の形態に係るデータの流れとともにＰＬＣの構成の一例を示す模式図である。図７は、本実施の形態に係る割付ルールと状態情報の一例を示す模式図である。図７（Ａ）を参照して、割付ルール９０は、複数の異なるレコードを有する。各レコードは、宛先９１と、通信クライアントを識別するためのクライアント識別子９２、および条件９３を関連付けて含む。条件９３は、対応の通信クライアントの応答性能を判断するための閾値９６を含む。条件９３は、例えば、応答時間＜Ｔｍｓ（ただし、Ｔ＞０）を示す。なお、本実施の形態では、通信クライアントの応答性能として例えば応答時間を示すが、応答時間に限定されない。
【００８０】
図７（Ｂ）を参照して、状態情報９５は、通信クライアント（Ｘ）１８１および通信クライアント（Ｙ）１８２のそれぞれに対応して、クライアント識別子９２および当該通信クライアントの状態９４を有する。状態９４は、実行中における当該通信プログラムの通信の応答性能により示される。すなわち、プログラムの実行速度が遅い状態（プログラムの異常も含む）であれば応答性能は低下し（例えば応答時間が長くなる）、プログラムの実行速度が早い状態であれば応答性能は高くなる（例えば応答時間は短くなる）。このような背景のもと、例えば、状態９４には、応答性能の一例である応答時間が閾値９６を含む条件９３（例えば応答時間＜Ｔｍｓ）（ただし、Ｔ＞０）を満たさないことを示す「Time Out発生」、または応答時間が条件９３（例えば応答時間＜Ｔｍｓ）を満たすことを示す「Good」のいずれかが設定される。状態９４は、応答性能の変化に従い、「Time Out発生」→「Good」に切替わり、または「Good」→「Time Out発生」に切替わる。なお、閾値９６は、例えば予め実験等により決定される。
【００８１】
図８は、本実施の形態に係るアドレス変換テーブル８０の一例を示す模式図である。アドレス変換テーブル８０は、宛先９１と、各宛先９１に対応してＩＰアドレス８２を有する。割付ルール９０、状態情報９５およびアドレス変換テーブル８０は、不揮発性メモリ１２８等に格納される。
【００８２】
図６を参照して、ＰＬＣ１００内でのサーバー４００宛のデータの流れを説明する。図６では、ＰＬＣ１００に接続する複数のサーバー４００は、例えばサーバーＡ、サーバーＢおよびサーバーＣの３種類に分類されている。まず、ユーザープログラム１８６中のサーバー４００と通信するための命令が実行されてデータ７０が出力されるとき、ユーザープログラム１８６は、データ７０を、割付部１８８が備える複数のポート６８のうちの１のポートに出力する。このとき、ユーザープログラム１８６は、データ７０の種類に基づき複数のポート６８のうちから１を選択し、選択したポート６８にデータ７０を出力する。
【００８３】
監視部１８９は、通信クライアント（Ｘ）１８１と通信クライアント（Ｙ）１８２の応答時間を測定し、測定の結果に基づき割付指令を出力し、また、状態情報９５を変更する。監視部１８９による割付指令の出力および状態情報９５の変更の詳細は後述する。
【００８４】
割付部１８８は、割付処理を実施する。割付処理では、割付部１８８は、データ７０を受付けたポート６８の番号（識別子に相当する）を、予め定められた変換規則に従い宛先９１に変換する。これにより、データ７０は、その種類毎に宛先９１が決まる。割付部１８８は、監視部１８９からの後述する割付指令に基づき、データ７０を割付ける通信クライアント（通信クライアント（Ｘ）１８１および通信クライアント（Ｙ）１８２のいずれか１方）を決定し、決定した通信クライアントに、宛先９１を付加してデータ７０を渡す。
【００８５】
通信クライアントは、割付部１８８からデータ７０を受付けると、受付けたデータ７０に付加されている宛先９１に基づき、図８のアドレス変換テーブル８０から宛先９１に関連付けられたＩＰアドレス８２を検索する。通信クライアントは、検索されたＩＰアドレス８２をデータ７０に付加し、データ７０を上位通信コントローラ１６０に出力する。上位通信コントローラ１６０は、通信コントローラからデータ７０を受付けて、ＴＣＰ/ＩＰに従い、サーバー４００に送信する。
【００８６】
本実施の形態では、上記のように、データ７０の種類に対応したサーバー４００宛に、データ７０を送信することが可能となる。
【００８７】
割付ルール９０の優先度に従う検索を説明する。図７（Ａ）を参照して、割付ルール９０は例えばテーブル形式を有する。割付ルール９０では、例えば通信クライアント（Ｘ）１８１のクライアント識別子９２を含むレコードが、テーブルのより先頭側に登録され、通信クライアント（Ｙ）１８２のクライアント識別子９２を含むレコードが、それ以降に続いて登録されている。割付部１８８は、割付ルール９０を検索する場合、割付ルール９０のテーブルの先頭側のレコードから下方向に順に検索する。このように、割付ルール９０でレコードが検索される優先度は、通信クライアント毎に異なるように設定され得る、すなわち、データ７０を送信するべき通信クライアントとして割付けられる優先度は、複数の通信クライアント間で異なるように設定され得る。本実施の形態では、図７（Ａ）に示すように、この優先度は、通信クライアント（Ｘ）１８１の方が、通信クライアント（Ｙ）１８２よりも高い。
【００８８】
本実施の形態では、上記の優先度を考慮して、優先度が高い通信クライアント（Ｘ）１８１の閾値９６は「Ｔｍｓ」と設定されて、優先度が低い通信クライアント（Ｙ）１８２の条件９３の閾値９６は「なし」に設定される。
【００８９】
具体的には、閾値９６は、本実施の形態では通信クライアントの通信負荷の大きさにより変更され得る。つまり、通信クライアント（Ｘ）１８１は、データ７０を送信するべき通信クライアントとして割付けられる優先度が高いので、データ７０の送信にかかる負荷が、優先度が低い通信クライアント（Ｙ）１８２の通信負荷に比較して大きくなりやすい。
【００９０】
このような通信負荷のばらつきを考慮して、本実施の形態では、優先度の高い通信クライアント（Ｘ）１８１の閾値９６には、上記のように優先度の低い通信クライアント（Ｙ）１８２の閾値９６よりも厳しめの値が設定される。これにより、通信クライアント(Ｘ)１８１の通信負荷が過剰となり通信不能に陥る前に「Time out発生」に切替えて、通信クライアント(Ｙ)１８２を割付けて、通信負荷の分散を実現することが可能となる。
【００９１】
＜Ｇ．フローチャート＞
図９は、本実施の形態に係る割付処理のフローチャートの一例を模式的に示す図である。図１０は、本実施の形態に係る通信監視処理の一例を模式的に示す図である。まず、図１０を参照して、通信監視処理を説明する。監視部１８９は、割付部１８８がユーザープログラム１８６からデータ７０を受付けたとき、複数の通信クライアントに対して、上記に述べた優先度の高→低の順番に従い、通信の要求を送信する。図１０では、優先度の高い方の通信クライアント（Ｘ）１８１にデータ７０の送信の要求を送信し、要求に対する応答（Ａｃｋ）を受信するまでの所要時間、すなわち応答時間を測定する（ステップＳ１１）。
【００９２】
監視部１８９は応答時間が通信クライアント（Ｘ）１８１に対応の条件９３を満たさないと判断した、すなわち応答時間が条件９３の閾値９６を超えると判断した場合（ステップＳ１３でＮＯ）、監視部１８９は、状態情報９５の通信クライアント（Ｘ）１８１に対応の状態９４の現在値が「Time Out発生」を示すと判断したときは（ステップＳ１５でＹＥＳ）、通信クライアント（Ｙ）１８２を指定する割付指令を生成し、割付部１８８に出力する（ステップＳ１９）。一方、監視部１８９は、通信クライアント（Ｘ）１８１に対応の状態９４の現在値が「Time Out発生」を示さないと判断したときは（ステップＳ１５でＮＯ）、監視部１８９は、通信クライアント（Ｘ）１８１に対応の状態９４を「Time Out発生」に設定し（ステップＳ１７）、ステップＳ１９の処理に移行する。これにより、ＰＬＣ１００では、データ７０を送信する場合に、優先度が高い通信クライアント（Ｘ）１８１の応答時間が条件９３を満たさない場合は、データ７０を送信するための通信クライアントに、次の優先度（すなわち、優先度の低い）である通信クライアント（Ｙ）１８２が割付けられる。
【００９３】
監視部１８９は応答時間が通信クライアント（Ｘ）１８１に対応の条件９３を満たすと判断した、すなわち応答時間が条件９３の閾値９６を超えないと判断した場合（ステップＳ１３でＹＥＳ）、監視部１８９は、通信クライアント（Ｘ）１８１に対応の状態９４の現在値が「Time Out発生」を示すと判断したときは（ステップＳ１９でＹＥＳ）、監視部１８９は、通信クライアント（Ｘ）１８１に対応の状態９４を「Good」に設定し（ステップＳ２１）、通信クライアント（Ｘ）１８１を指定する割付指令を生成し、割付部１８８に出力する（ステップＳ２３）。一方、監視部１８９は、通信クライアント（Ｘ）１８１に対応の状態９４の現在値が「Time Out発生」を示さないと判断したときは（ステップＳ１９でＮＯ）、ステップＳ２３の処理に移行する。これにより、ＰＬＣ１００では、データ７０を送信する場合に、優先度が高い通信クライアント（Ｘ）１８１の応答時間が条件９３を満たす場合は、データ７０を送信するための通信クライアントに、優先度の高い通信クライアント（Ｘ）１８１が割付けられる。
【００９４】
図９を参照して、割付部１８８の処理を説明する。ユーザープログラム１８６は、実行されると（ステップＲ１）、データ７０を割付部１８８に出力する（ステップＲ３）。その後、プログラムの実行を終了すると判断したときは（ステップＲ５でＹＥＳ）、実行を終了するが、実行を終了しないと判断すると（ステップＲ５でＮＯ）、ステップＲ１に戻る。
【００９５】
割付部１８８は、ユーザープログラム１８６からポート６８を介してデータ７０を受付けるか否かを判断する（ステップＳ１）。データ７０を受付けないと判断すると（ステップＳ１でＮＯ）、ステップＳ１の処理を繰り返すが、データ７０を受付けたと判断すると（ステップＳ１でＹＥＳ）、監視部１８９は、上記に述べた図１０の通信監視処理を実施して、割付指令を割付部１８８に出力する（ステップＳ３）。割付部１８８は、監視部１８９から割付指令を用いて上記に述べた割付処理を実施する（ステップＳ５）。
【００９６】
通信クライアント（Ｘ）１８１または通信クライアント（Ｙ）１８２は、プログラム実行中（ステップＲ７）、割付部１８８からデータ７０を受付けて、受付けたデータ７０にＩＰアドレス８２を付加して、上位通信コントローラ１６０に出力する。その後、通信コントローラはプログラムの実行を終了すると判断したときは（ステップＲ８でＹＥＳ）、実行を終了するが、実行を終了しないと判断すると（ステップＲ８でＮＯ）、ステップＲ７に戻る。
【００９７】
（応答時間の変形例）
上記の割付処理では、データ７０を送信する前に、監視部１８９が通信クライアントに要求を送信し、応答（Ack）を受信するまでの時間を測定することで、応答時間を検出したが、応答時間の測定方法は、この方法に限定されない。例えば、割付部１８８は、データ７０を、優先度が高い通信クライアント（Ｘ）１８１に送信し、通信クライアント（Ｘ）１８１から応答（例えば、データ７０をサーバー４００に送信完了した旨の応答等）を受信するまでの時間を測定することで応答時間を取得してもよい。この場合、割付部１８８は、応答時間が通信クライアント（Ｘ）１８１に対応の条件９３を満たすかを判断し、満たさないと判断したときは、次位の優先度の通信クライアント、すなわち通信クライアント（Ｙ）１８２にデータ７０を送信する。また、この変形例においても、割付部１８８は、上述と同様に、通信クライアントの状態９４を設定（変更）する。
【００９８】
上記で述べたように、割付部１８８は、データ７０を送信する通信クライアントとして優先的に通信クライアント（Ｘ）１８１を割付けるが、通信クライアント（Ｘ）１８１の応答時間が条件９３を満たさなくなると、割付け先は通信クライアント（Ｙ）１８２に切り替わる。その後、通信クライアント（Ｘ）１８１の応答時間が条件９３を満たすようになると、割付先は通信クライアント（Ｘ）１８１に戻る。これにより、ＰＬＣ１００はデータ７０をサーバー４００に通信する場合に、ＰＬＣ１００内の多重化された通信クライアント間で通信にかかる負荷を分散させながら、当該通信を継続することができる。
【００９９】
＜Ｈ．割付ルールの変更＞
本実施の形態では、割付ルール９０の条件９３を可変に設定することができる。図１１は、本実施の形態に係るデータの流れとともにＰＬＣの構成の他の例を示す模式図である。図１２は、本実施の形態に係る割付ルールの他の例を示す模式図である。図１３は、本実施の形態に係る機械学習による閾値の変化パターンの一例を模式的に示す図である。図１１を参照して、ＰＬＣ５００は、図６に示したＰＬＣ１００の構成に追加して学習部１８７２と、図１２の割付ルール９０１を備える。ＰＬＣ５００の他の部分は、図６に示したＰＬＣ１００のそれらと同様であるので、説明は繰返さない。
【０１００】
図１２を参照して、割付ルール９０１の各レコードは、宛先９１、クライアント識別子９２および条件９３１を含む。条件９３１は例えば（応答時間＜学習閾値９７）を示す。学習部１８７２は、割付ルール９０１の学習閾値９７を設定（または変更）する。学習部１８７２は、通信クライアントとの通信における各種の通信特徴量を用いた機械学習により、応答性能を予め定められた値に保証するための閾値の変化パターンを検出する。学習部１８７２は、検出した変化パターンに従い、割付ルール９０１の学習閾値９７を設定する。
【０１０１】
図１３を参照して、学習部１８７２が検出する変化パターンＰ１，Ｐ２がグラフで示される。このグラフでは、横軸に「Time Out発生」の間隔（すなわち、「Time Out発生」の検出から次に「Time Out発生」までの時間）、またはサーバー４００への送信データ量がとられて、縦軸に学習閾値９７がとられている。また、図１３のパターンＰ１とＰ２は、応答性能を保証するための最適な閾値の変化パターンの一例である。パターンＰ１は、例えば「Time Out発生」の間隔に対応し、パターンＰ２は例えば送信データ量に対応する。学習部１８７２は、生成した図１３の閾値の変化パターンを不揮発性メモリ１２８に格納する。なお、図１３では、応答性能の変化を、「Time Out発生」の間隔および送信データ量の２種類を例示したが、これらに限定されず、例えば「Good」の継続時間であってもよい。
【０１０２】
学習部１８７２は、例えば、パターンＰ１に基づき学習閾値９７を設定する場合は、ＰＬＣ５００とサーバー４００との通信を実施中に通信クライアント（Ｘ）１８１の「Time Out発生」の間隔の代表値（所定期間における平均値、最頻値等）ＲＰを測定する。学習部１８７２は、パターンＰ１から代表値ＲＰに対応する閾値ＴＨを取得（決定）し、取得した閾値ＴＨを割付ルール９０１の学習閾値９７に設定する。
【０１０３】
これにより、例えば通信クライアントのソフトウェア異常が発生すると、または通信の負荷が過剰になると「Time Out発生」の間隔が変化（長くなる）するが、この場合であっても、「Time Out発生」の間隔の変化に連動して、応答性能を保証するような学習閾値９７に変更することが可能になる。
【０１０４】
また、学習部１８７２は、ＰＬＣ５００とサーバー４００とのネットワーク１１２の輻輳等により通信クライアントの通信負荷が過剰になる事態に対応するように学習閾値９７を変更してもよい。この場合は、学習部１８７２は、ネットワーク１１２の輻輳が発生する時系列・時間帯パターンを学習し、学習結果に基づき、輻輳が発生する前に、閾値を変更するとしてもよい。
【０１０５】
＜Ｉ．通信クライアントの種類による割付け＞
上記に述べた通信クライアント（Ｘ）１８１および通信クライアント（Ｙ）１８２は実行されると、同じ種類の通信機能を提供したが、提供される通信機能は異なる種類であってもよい。図１４は、本実施の形態に係るデータの流れとともにＰＬＣの構成のさらなる他の例を示す模式図である。図１５は、本実施の形態に係る割付ルールのさらなる他の例を模式的に示す図である。図１６は、本実施の形態に係る割付処理の他の例を示すフローチャートである。図１７は、本実施の形態に係る通信監視処理の他の例を示すフローチャートであある。
【０１０６】
図１４を参照してＰＬＣ６００は、アプリケーション層が用いるデータ伝送のプロトコルとして、データベースサーバーに接続するための通信プロトコルであるＤＢ接続プロトコルに従う通信処理を実施するＤＢ接続通信クライアント（Ｘ）１８１１およびＦＴＰ（File Transfer Protocol）通信クライアント（Ｙ）１８２１の２種類を備える。なお、通信クライアントに適用されるデータ伝送のプロトコルの種類はこれらに限定されない。また、ＰＬＣ６００がデータベースサーバーに接続する場合に、当該データベースサーバーとＰＬＣ６００（より特定的にはＤＢ接続通信クライアント（Ｘ）１８１１）との間において、ＤＢ接続プロトコルに従い両者の通信を制御する通信部が介在してもよい。このような通信部としては、例えば両者の通信を中継る通信機器（例えば中継器）またはソフトウェア等を含み得る。また、図１４のＰＬＣ６００は、監視部１８９１を有する割付部１８８と、ユーザープログラム１８６から受付けたデータ７０をデータバッファ１８７４に格納する格納部１８７５を備える。割付部１８８は、割付ルール９０２と状態情報９５を検索する。ＰＬＣ６００の他の部分は、図６または図１１に示されたものと同様であり、説明は繰返さない。
【０１０７】
図１５を参照して割付ルール９０２の各レコードは、図１２の割付ルール９０１のレコードの内容に追加して、アクション識別子９８を含む。アクション識別子９８は、ユーザープログラム１８６からデータ７０を受付けた場合に、割付部１８８がとるべきアクション（処理）を示す。本実施の形態では、このアクション識別子９８は「通信クライアントへ送信」または「バッファ送信」のいずれかを示す。
【０１０８】
ＰＬＣ６００では、監視部１８９１が、ＤＢ接続通信クライアント（Ｘ）１８１１の応答性能（例えば、応答時間）を監視し、応答性能が良いと判断する期間は、ＤＢ接続通信クライアント（Ｘ）１８１１を利用してリアルタイムにデータをサーバー４００のいずれかに送出し、応答性能が劣化している期間に受付けたデータ７０は、格納部１８７５によりデータバッファ１８７４に格納させる。これにより、優先度の高いＤＢ接続通信クライアント（Ｘ）１８１１の応答性能が劣化している期間にユーザープログラム１８６から受付けたデータ７０は、データバッファ１８７４に格納（保存）される。割付部１８８は、データバッファ１８７４に格納されたデータ７０を一括して、ＦＴＰ通信クライアント（Ｙ）１８２１に送出する。ＦＴＰ通信クライアント（Ｙ）１８２１は、データバッファ１８７４格納されていたデータを、サーバー４００にファイル転送する。
【０１０９】
これにより、サーバーＡまたはサーバーＢのサーバー４００がダウンしたとしても、サーバーＣのサーバー４００に上記の保存されていたデータ７０を一括転送することができる。サーバーＣはＰＬＣ６００からファイル転送による受信したデータ７０を、サーバーＡまたはサーバーＢへ送出することができる。サーバーＡまたはサーバーＢのＤＢＭＳ４３１は、サーバーＣからのデータ７０をトレーサビリティ情報として用いて、ダウン期間における更新内容を反映した状態にＤＢ４３０を回復させる。これにより、サーバーＡまたはサーバーＢのＤＢ４３０の正確性を保証することが可能となる。具体的な処理を、図１６と図１７を参照して説明する。
【０１１０】
まず、図１７を参照して監視部１８９１による通信監視処理を説明する。監視部１８９１は、割付部１８８１がユーザープログラム１８６からデータ７０を受付けたとき、上記に述べた優先度の高→低の順番に従い、通信クライアントに通信の要求を送信する。図１４では、優先度の高い方のＤＢ接続通信クライアント（Ｘ）１８１に要求を送信し、要求に対する応答（Ack）を受信するまでの所要時間、すなわち応答時間を測定する（ステップＳ１１）。
【０１１１】
監視部１８９１は応答時間がＤＢ接続通信クライアント（Ｘ）１８１１に対応の条件９３１を満たさないと判断する、すなわち応答時間が条件９３１の学習閾値９７を超えると判断する場合（ステップＳ１３でＮＯ）、監視部１８９１は、状態情報９５のＤＢ通信クライアント（Ｘ）１８１に対応の状態９４の現在値が「Time Out発生」を示すと判断したときは（ステップＳ１５でＹＥＳ）、割付先として格納部１８７５を指定する割付指令を生成し、割付部１８８に出力する（ステップＳ２２）。監視部１８９１は、この割付指令に、割付ルール９０２から読出された対応のアクション識別子９８（「バッファ送信」）を含める。
【０１１２】
一方、監視部１８９１は、ＤＢ接続通信クライアント（Ｘ）１８１１に対応の状態９４の現在値が「Time Out発生」を示さないと判断したときは（ステップＳ１５でＮＯ）、監視部１８９１は、ＤＢ接続通信クライアント（Ｘ）１８１に対応の状態９４を「Time Out発生」に設定し（ステップＳ１７）、ステップＳ２２の処理に移行する。これにより、ＰＬＣ１００では、データ７０を送信する場合に、優先度が高いＤＢ接続通信クライアント（Ｘ）１８１１の応答時間が条件９３を満たさない場合は、データ７０をデータバッファ１８７４に送信するために格納部１８７５が割付けられる。
【０１１３】
監視部１８９１は応答時間が通信クライアント（Ｘ）１８１に対応の条件９３１を満たすと判断する、すなわち応答時間が条件９３１の学習閾値９７を超えないと判断した場合（ステップＳ１３でＹＥＳ）、監視部１８９１は、ＤＢ接続通信クライアント（Ｘ）１８１１に対応の状態９４の現在値が「Time Out発生」を示すと判断したときは（ステップＳ１９でＹＥＳ）、監視部１８９１は、ＤＢ接続通信クライアント（Ｘ）１８１１に対応の状態９４を「Good」に設定し（ステップＳ２１）、優先度の高い通信クライアント、すなわちＤＢ接続通信クライアント（Ｘ）１８１１を指定する割付指令を生成し、割付部１８８に出力する（ステップＳ２５）。監視部１８９１は、この割付指令に、割付ルール９０２の対応のアクション識別子９８（「通信クライアント送信」）を含める。
【０１１４】
一方、監視部１８９は、通信クライアント（Ｘ）１８１に対応の状態９４の現在値が「Time Out発生」を示さないと判断したときは（ステップＳ１９でＮＯ）、ステップＳ２５の処理に移行する。これにより、ＰＬＣ１００では、データ７０を送信する場合に、優先度が高いＤＢ接続通信クライアント（Ｘ）１８１１の応答時間が条件９３１を満たす場合は、データ７０を送信するための通信クライアントに、優先度の高いＤＢ接続通信クライアント（Ｘ）１８１が割付けられる。
【０１１５】
次に、図１６を参照して、割付部１８８１の処理を説明する。割付部１８８１は、ユーザープログラム１８６からポート６８を介してデータ７０かを受付けるか否かを判断する（ステップＳ１）。データ７０を受付けないと判断すると（ステップＳ１でＮＯ）、ステップＳ１の処理を繰り返すが、データ７０を受付けたと判断すると（ステップＳ１でＹＥＳ）、監視部１８９１は、図１７の通信監視処理を実施して、アクション識別子９８を含む割付指令を割付部１８８１に出力する（ステップＳ２）。
【０１１６】
割付部１８８１は、監視部１８９１からの割付指令を用いて割付処理を実施する（ステップＳ４）。具体的には、割付指令が、ＤＢ接続通信クライアント１８１１を示すとき、割付部１８８は、アクション指令（「通信クライアント送信」）に従い、データ７０に宛先９１を付加し、データ７０を割付指令に基づきＤＢ接続通信クライアント１８１１に渡す。一方、割付指令が、格納部１８７５を示すとき、割付部１８８は、アクション指令（「バッファ送信」）に従い、割付指令が示す割付先の格納部１８７５にデータ７０を渡す。
【０１１７】
ＤＢ接続通信クライアント１８１１は、割付部１８８からデータ７０を受付けたとき、受付けたデータ７０にＩＰアドレス８２を付加して、上位通信コントローラ１６０に出力する。
【０１１８】
また、格納部１８７５は、割付部１８８からデータ７０を受付けたとき、例えば受付けた順に従いデータ７０をデータバッファ１８７４に格納する。
【０１１９】
割付部１８８は、ファイル転送するか否かを判断する（ステップＳ７）。例えば、データバッファ１８７４に格納されたデータ７０のうち未送信のデータ７０のサイズが予め定められた閾値を超えたとき、割付部１８８１はファイル転送を実施すると判断する（ステップＳ７でＹＥＳ）。ファイル転送を実施しないと判断すると（ステップＳ７でＮＯ）、処理は終了する。
【０１２０】
ファイル転送を実施すると判断したとき（ステップＳ７でＹＥＳ）、割付部１８８は、データバッファ１８７４から未送信のデータ７０を読出し、ＦＴＰ通信クライアント１８２１に渡す（ステップＳ９）。ＦＴＰ通信クライアント１８２１は、割付部１８８から受付けたデータ７０をＦＴＰに従い、サーバーＣのＩＰアドレスを付したファイル形式でサーバーＣに送信する。
【０１２１】
このように、データ７０を送信する通信クライアントとして優先的にＤＢ接続通信クライアント（Ｘ）１８１１を割付けるが、その後、通信クライアント（Ｘ）１８１１の応答時間が条件９３を満たさすようになると、割付先はＤＢ接続通信クライアント（Ｘ）１８１１に戻る。この期間において、すなわちＤＢ接続通信クライアント（Ｘ）１８１１の応答時間が条件９３を満たさない間において、ユーザープログラム１８６から受付けたデータ７０は、格納部１８７５にサーバーに送信されないが、データバッファ１８７４に格納して、保存しておくことができる。これにより、この期間においてユーザープログラム１８６から出力されるデータ７０の消失を防止することができる。
【０１２２】
データバッファ１８７４のデータは、一括してサーバーＣにファイル転送されて、サーバーＡまたはサーバーＢのＤＢ４３０の回復に利用することができる。
【０１２３】
なお、図１６と図１７に示す割付処理においても、上記に述べた（応答時間の変形例）による応答時間の測定方法を適用することができる。
【０１２４】
＜Ｊ．プログラム＞
本実施の形態に示した各フローチャートの処理を示すプログラムまたは図４に示す少なくとも１つのプログラムは、ＰＬＣ１００の記憶部（不揮発性メモリ１２８、メモリカード１７２等）に格納されている。ＣＰＵ１１０は、記憶部からプログラムを読出し、実行することにより、本実施の形態で説明した通信の制御を実現することが可能となる。
【０１２５】
このようなプログラムは、ＰＬＣ１００に付属するフレキシブルディスク、ＣＤ−ＲＯＭ（Compact  Disk-Read  Only  Memory）、ＲＯＭ、ＲＡＭおよびメモリカード１７２などのコンピュータ読み取り可能な記録媒体にて記録させて、プログラム製品として提供することもできる。あるいは、ＰＬＣ１００に内蔵するハードディスクなどの記録媒体にて記録させて、プログラムを提供することもできる。また、図示しないネットワークから通信インターフェイス（上位通信コントローラ１６０および通信ポート１６８等）を介したダウンロードによって、プログラムを提供することもできる。
【０１２６】
＜Ｋ．実施の形態の利点＞
図１８は、本実施の形態に係る通信スタックにおける使用されるメモリサイズの変化の一例を模式的に示す図である。図１８を参照して、ガベージコレクションを考慮した利点を説明する。
【０１２７】
本実施の形態では、通信クライアントが実行中に、ＪＶＭにより通信スタックに格納されるオブジェクトのサイズが、通信スタックが有する制限サイズを超えると通信クライアントの実行速度が低下する。このようなオブジェクトの格納によるメモリサイズの変化が図１８に例示される。図１８のメモリサイズの変化は、通信スタック１９１および１９２の両方について同様に適用することができる。
【０１２８】
通信スタックの予め定められた制限サイズは、ヒープ領域のサイズに相当する。ヒープ領域は、生成されると直ぐに不要となるような短命オブジェクトを格納するためのNew世代と、比較的に長い時間必要とされる長命オブジェクトを格納するためのold世代とからなる。図１８では、ヒープ領域の使用済サイズ２１４、old世代の使用済サイズ２１１の変化が、時間の経過に従い示されている。
【０１２９】
ＪＶＭは、old世代を含むヒープ領域の略全体を対象にしたフルガベージコレクションと、New領域のみを対象とするガベージコレクションを実施する。図１８では、フルガベージコレクションが実施される時刻２１２、時刻２１３および時刻２１５と、ガベージコレクションの所要時間２１０とが示されている。フルガベージコレクションとフルガベージコレクションとの間の期間において、New領域のみを対象とするガベージコレクションが実施され得る。
【０１３０】
図１８に示されるように、フルガベージコレクションが実施されるとき、ガベージコレクションの所要時間２１０は長くなるので、これに伴いＪＶＭによる通信クライアントの実行速度は低下する。本実施の形態では、フルガベージコレクションの実施時期を通信クライアントの応答時間が条件９３（９３１）を満たさなくなったことで検出（推定）することが可能である。これにより、フルガベージコレクションの実施時間においても、ＰＬＣとサーバーとのデータ７０の通信継続およびデータバッファ１８７４に格納することによるデータ消失を防止することができる。
【０１３１】
＜Ｌ．実施の形態の他の利点＞
図１９は、本実施の形態に係る通信クライアントの切替えの態様の一例を模式的に示す図である。図１９を参照して、例えば通信クライアント（Ｘ）１８１が通信を実行中に異常が発生した場合に、通信クライアント（Ｙ）１８２に切替えることで通信を継続できる場合を説明する。
【０１３２】
まず、通信クライアント（Ｘ）１８１と通信クライアント（Ｙ）１８２のうち、通信クライアント（Ｘ）１８１が実行中の状態ＳＴ３にあり、通信クライアント（Ｙ）１８２は停止している状態ＳＴ１であったとする。通信クライアント（Ｘ）１８１の通信実行中に、通信クライアント（Ｘ）１８１で例えばプログラム異常等が起きて応答時間が条件９３を満たさなくなったとき（状態ＳＴ４）、通信クライアント（Ｘ）１８１は通信を停止し、異常確認または自動復旧処理の実行状態（状態ＳＴ５）に移行する。また、このときデータ７０の割付先は通信クライアント（Ｙ）１８２に切替えられて、通信クライアント（Ｙ）１８２宛に、切替通知がなされる（状態ＳＴ２）。ＪＶＭ１８４は、切替通知を受けると、通信クライアント（Ｙ）１８２を停止状態から通信実行状態（状態ＳＴ６）に切替える。これにより、通信クライアント（Ｙ）１８２により通信が実行されて、サーバー４００にデータ７０が送信される。
【０１３３】
このように、通信クライアント（Ｘ）１８１に異常が生じた場合は、停止状態にある通信クライアント（Ｙ）１８２を停止状態にから通信実行状態に切替えて、通信クライアント（Ｙ）１８２によりサーバー４００にデータ７０を到達させることができる。また、切替通知を受けるまでは、通信クライアント（Ｙ）１８２は停止状態にあるので、この停止状態ある期間は、ＰＬＣ１００におけるプログラム実行にかかる負荷を低減できる。
【０１３４】
＜Ｍ．実施の形態の他の利点＞
図２０は、本実施の形態に係る通信クライアントの切替えの態様の他の例を模式的に示す図である。図２０を参照して、通信クライアント（Ｘ）１８１による通信と通信クライアント（Ｙ）１８２による通信とを同時に実施する場合を説明する。
【０１３５】
図２０を参照して、通信クライアント（Ｘ）１８１によるデータ７０の通信実行状態（状態ＳＴ３）において、応答時間が条件９３を満たさなくなる状態（状態ＳＴ４）になると、割付部１８８は、次に受付けたデータ７０を通信クライアント（Ｙ）１８２に渡す（状態ＳＴ７）。通信クライアント（Ｙ）１８２は通信停止状態（状態ＳＴ１）から通信実行状態（状態ＳＴ６）に移行する。これにより、通信クライアント（Ｘ）１８１の負荷を下げることができる。仮に、割付部１８８は、通信クライアント（Ｙ）１８２のデータ７０の通信が完了する前に、更に次のデータ７０を受付けた場合は、この時点で応答時間が条件９３を満たすことになった通信クライアント（Ｘ）側に当該データ７０を渡すことができる。これにより、ＰＬＣ１００において、通信クライアント（Ｘ）１８１の通信実行状態（状態ＳＴ３）と、通信クライアント（Ｙ）１８２の通信実行状態（状態ＳＴ６）を並行して継続させることができて、通信クライアント（Ｘ）１８１，通信クライアント（Ｙ）１８２の両者によるデータ７０の上位通信コントローラ１６０による多重通信（例えば、時分割多重通信）が可能となる。
【０１３６】
＜Ｎ．実施の形態の更なる他の利点＞
ＰＬＣの利用環境を考慮した利点を説明する。近年、ＰＬＣは、データベースシステムなどの外部装置と接続して、ＰＬＣで保持しているデータを、データベースシステムに蓄積する。これにより、データベースに接続する情報処理装置同士でのデータの共有を容易に、また、各種データを収集して、データの集計や解析などを容易化する。
【０１３７】
このような外部装置と接続するＰＬＣ内蔵の通信機能について、例えばCommon Industrial Protocol（CIP）を用いたＰＬＣ内蔵の通信機能は、２つの通信ポートに対応するために、各ポートに対応した通信スタックを提供する。
【０１３８】
このように２つの通信ポートを用いることで、ＰＬＣ内で通信部を多重化するケースに比較して、本実施の形態に係るＰＬＣは、物理的な通信ポート１６８を共用した通信部の多重化を実現するので、部品点数を少なくすることができる。また、ＰＬＣ内の通信部が多重化されたとしても、サーバー４００側において当該多重化に対応する特別な変更は要求されない。したがって、本実施の形態は、既存の制御システムを利用して実現することが可能となる。
【０１３９】
＜Ｏ．付記＞
上述したような本実施の形態は、以下のような技術思想を含む。
［構成１］
コントローラ（１００）であって、
複数の通信プログラム（１８１，１８２）を実行する通信プログラム実行部（１０４）と、
制御対象を制御するためのユーザープログラム（１８６）であって、外部装置（４００）と通信するための命令を含むユーザープログラムを実行するためのユーザープログラム実行部（１０４）と、
前記複数の通信プログラムのいずれにも接続可能に構成されて、前記複数の通信プログラムと前記外部装置との通信を制御する通信インターフェイス（１６０）と、
前記ユーザープログラム実行部による前記命令の実行時に、前記ユーザープログラム実行部から前記外部装置と通信するデータ（７０）を受付け、前記データの宛先に基づき、前記複数の通信プログラムのうちから前記データを前記外部装置に送信する通信プログラムを決定する決定部（１８８）と、を備える、コントローラ。
［構成２]
前記コントローラは、各通信プログラムについて、通信スタック（１９１，１９２）を備える、構成１に記載のコントローラ。
[構成３]
前記決定部は、
各通信プログラムの実行状態と宛先（９１）に基づき、複数の通信プログラムのうちから前記データを前記外部装置に送信する通信プログラムを決定する、構成１または２に記載のコントローラ。
[構成４]
前記決定部は、
前記宛先に基づく前記通信プログラムの前記実行状態が予め定められた条件（９３）を満たすとき、当該通信プログラムを、前記データを前記外部装置に送信する通信プログラムとして決定する、構成３に記載のコントローラ。
[構成５]
前記通信プログラムの実行状態は、実行中における当該通信プログラムの通信の応答性能により示される、構成４に記載のコントローラ。
[構成６]
前記予め定められた条件は、前記応答性能の閾値（９６）を含み、
前記閾値は、応答性能に関連した通信特徴量を用いた機械学習により決定する、構成４または５に記載のコントローラ。
[構成７]
前記決定部は、
前記宛先に基づく前記通信プログラムの前記実行状態が予め定められた条件を満たさないとき、他の前記通信プログラムを、前記データを前記外部装置に送信する通信プログラムとして決定する、構成４から６のいずれか１に記載のコントローラ。
[構成８]
前記決定部は、
前記宛先に基づく前記通信プログラムの前記実行状態が予め定められた条件を満たさないとき、前記データを格納部（１８７５）に出力する、構成４から６のいずれか１に記載のコントローラ。
[構成９]
前記コントローラは、
前記格納部のデータを、前記通信プログラムのうちの所定の通信プログラム（１８２１）を介して前記外部装置に送信する、構成８に記載のコントローラ。
[構成１０]
前記宛先に基づく前記通信プログラムの種類と、前記所定の通信プログラムの種類とは異なり、
前記通信プログラムの種類は、当該通信プログラムがデータを伝送するための通信プロトコルの種類に対応する、構成９に記載のコントローラ。
［構成１１］
前記外部装置は、データベースサーバーを含み、
前記通信プロトコルの種類は、前記データベースサーバーまたは前記データベースサーバーと前記コントローラとの通信を制御する通信部に接続するための通信プロトコルを含む、構成１０に記載のコントローラ。
[構成１２]
コントローラ（１００）による制御方法であって、
複数の通信プログラム（１８１，１８２）を実行するステップ（Ｒ７）と、
制御対象を制御するためのユーザープログラム（１８６）であって、外部装置（４００）と通信するための命令を含む前記ユーザープログラムを実行するステップ（Ｒ１）と、を備え、
前記コントローラは、
前記複数の通信プログラムのいずれにも接続可能に構成されて、前記複数の通信プログラムと前記外部装置との通信を制御する通信インターフェイス（１６０）を備え、
前記制御方法は、さらに、
前記ユーザープログラムの前記命令が実行されるときに、前記ユーザープログラムから前記外部装置と通信するデータ（７０）を受付け、前記データの宛先に基づき、前記複数の通信プログラムのうちから当該データを前記外部装置に送信する通信プログラムを決定するステップ（Ｓ３，Ｓ５）を備える、制御方法。
[構成１３]
構成１２に記載の制御方法をコンピュータに実行させるためのプログラム。
【０１４０】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１４１】
１  制御システム、６８  ポート、７０  データ、８０  アドレス変換テーブル、９０，９０１，９０２  割付ルール、９５  状態情報、９６，ＴＨ  閾値、９７  学習閾、１００  コントローラ、１１２  ネットワーク、１２０  プロセッサ、１２８  不揮発性メモリ、１６０  上位通信コントローラ、１６８  通信ポート、１８１  通信クライアント(Ｘ)、１８２  通信クライアント（Ｙ）、１８５  ハイパーバイザ、１８６  ユーザープログラム、１８７  システムプログラム、１８８，１８８１  割付部、１８９，１８９１  監視部、１９０  ハードウェアリソース、１９１，１９２  通信スタック、１８１１  ＤＢ接続通信クライアント、１８２１  ＦＴＰ通信クライアント、１８７２  学習部、１８７４  データバッファ、１８７５  格納部、Ｐ１，Ｐ２  パターン、ＲＰ  代表値。
【図１】
2019148890.tif 000003
【図２】
2019148890.tif 000004
【図３】
2019148890.tif 000005
【図４】
2019148890.tif 000006
【図５】
2019148890.tif 000007
【図６】
2019148890.tif 000008
【図７】
2019148890.tif 000009
【図８】
2019148890.tif 000010
【図９】
2019148890.tif 000011
【図１０】
2019148890.tif 000012
【図１１】
2019148890.tif 000013
【図１２】
2019148890.tif 000014
【図１３】
2019148890.tif 000015
【図１４】
2019148890.tif 000016
【図１５】
2019148890.tif 000017
【図１６】
2019148890.tif 000018
【図１７】
2019148890.tif 000019
【図１８】
2019148890.tif 000020
【図１９】
2019148890.tif 000021
【図２０】
2019148890.tif 000022