JP5414909B2 - プログラマブルコントローラ - Google Patents
プログラマブルコントローラ Download PDFInfo
- Publication number
- JP5414909B2 JP5414909B2 JP2012540782A JP2012540782A JP5414909B2 JP 5414909 B2 JP5414909 B2 JP 5414909B2 JP 2012540782 A JP2012540782 A JP 2012540782A JP 2012540782 A JP2012540782 A JP 2012540782A JP 5414909 B2 JP5414909 B2 JP 5414909B2
- Authority
- JP
- Japan
- Prior art keywords
- connection
- priority
- communication
- unit
- response
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Programmable Controllers (AREA)
- Computer And Data Communications (AREA)
Description
本発明は、産業用機器を制御するプログラマブルコントローラ(PLC)に関する。
PLCには、ネットワークを介してパーソナルコンピュータ(以下、パソコン)やプログラマブル表示器など上位装置を接続できるものがある。ネットワークの通信方式としては、例えばイーサネット(登録商標)が用いられる。接続された上位装置は種々のアプリケーションを用いてPLCにアクセスを行う。
ここで、アプリケーションの種類によって必要とする応答速度が異なる。例えば、プログラミング表示器を構成するアプリケーションは、PLCのデバイス値をリアルタイムにモニタリングする性質上、高速な応答が必要となる。また、1dayなどある程度長いスパンの周期毎に生産データなどを収集する生産管理ソフトは、リアルタイムモニタリングを行うアプリケーションほどは高速な応答を必要としない。このように、PLCに接続するアプリケーションには、高速な応答を必要とするものやそうでないものがある。
しかしながら、高速高精度の制御を行うことが求められるPLCでは、上位装置との間の通信に割り当てられるCPU時間が限られている。したがって、PLC側で高速な応答を要求するアプリケーションに対して優先的に応答できるようにする仕組みの実装が求められる。
この要望に関連する技術として、例えば特許文献1には、通信装置の物理ポートに対して伝送優先度を設定できる技術が開示されている。
しかしながら、上記従来の技術によれば、物理ポートに対して優先度を設けるようになっているので、例えば1つのコンピュータ上で動作する複数のアプリケーションが通信する場合、当該複数のアプリケーションは全て同一の優先度が適用されてしまうという問題があった。
本発明は、上記に鑑みてなされたものであって、高速な応答を必要とするアプリケーションに対して優先的に応答できるプログラマブルコントローラを得ることを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、デバイス値を格納する入出力メモリ領域を備え、接続されている上位装置からデバイス値の要求を受信したとき、要求されたデバイス値を応答するプログラマブルコントローラであって、前記上位装置で実行されているアプリケーション毎にコネクションを確立し、前記確立したアプリケーション毎のコネクションを介して前記上位装置からの要求の受信および前記上位装置への応答の送信を行うコネクション部と、前記コネクション部が受信した要求をコネクション毎に一時記憶する通信バッファと、前記上位装置から要求されたデバイス値を前記入出力メモリ領域から読み出す要求処理部と、コネクション毎の優先度の設定を記憶する優先度記憶領域と、前記通信バッファから要求を逐次取得して前記取得した要求を前記要求処理部に転送し、前記転送した要求に対応する前記要求処理部が読み出したデバイス値を応答として前記コネクション部に転送する通信スケジューリング部と、を備え、前記通信スケジューリング部は、前記優先度記憶領域に設定されている優先度が高いコネクションほど高い頻度で、前記優先度が低いコネクションほど低い頻度で、前記通信バッファから要求を取得する、ことを特徴とする。
本発明にかかるプログラマブルコントローラは、高い優先度が設定されたコネクションにかかる通信処理ほど高い頻度で実行するので、高速な応答を必要するアプリケーションに対して優先的に応答できるという効果を奏する。
また、本発明にかかるプログラマブルコントローラは、高速な応答を要求するアプリケーションがある一方、低速な応答を許容するアプリケーションが存在する場合、サービス処理の実行時間を少なくしても、高速な応答を要求するアプリケーションとのコネクションに高い優先度を設定すれば、高速な応答を要求するアプリケーションに対して、高速に応答できるという効果を奏する。
以下に、本発明にかかるPLCの実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
実施の形態1.
図1は、本発明にかかる実施の形態1のPLCの使用の様態を示す図である。図示するように、PLC1は、ネットワークハブ2を介してパソコンが複数(ここでは2台のパソコン3a、3b)にネットワークを介して接続されている。ネットワークの通信方式には例えばイーサネット(登録商標)が採用される。そして、パソコン3aではアプリケーションaとアプリケーションbとが実行されており、パソコン3bではアプリケーションcが実行されている。アプリケーションa、b、cは、PLC1に対して要求を発行し、PLC1は要求発行元に対して応答を返す。要求とは、デバイス値の読み出し要求であり、応答とは、自身が備える入出力メモリ領域から読み出した、読み出し要求されたデバイス値である。すなわち、パソコン3a、3b(アプリケーションa、b、c)はPLC1の上位装置として機能する。なお、PLC1の上位装置として機能する装置には、パソコンのほかには、プログラマブル表示器などがある。
図1は、本発明にかかる実施の形態1のPLCの使用の様態を示す図である。図示するように、PLC1は、ネットワークハブ2を介してパソコンが複数(ここでは2台のパソコン3a、3b)にネットワークを介して接続されている。ネットワークの通信方式には例えばイーサネット(登録商標)が採用される。そして、パソコン3aではアプリケーションaとアプリケーションbとが実行されており、パソコン3bではアプリケーションcが実行されている。アプリケーションa、b、cは、PLC1に対して要求を発行し、PLC1は要求発行元に対して応答を返す。要求とは、デバイス値の読み出し要求であり、応答とは、自身が備える入出力メモリ領域から読み出した、読み出し要求されたデバイス値である。すなわち、パソコン3a、3b(アプリケーションa、b、c)はPLC1の上位装置として機能する。なお、PLC1の上位装置として機能する装置には、パソコンのほかには、プログラマブル表示器などがある。
図2は、実施の形態1と比較されるPLCにおける上位装置との間の通信処理の特徴を説明するフローチャートである。通信処理とは、より詳しくは、PLCの通信バッファに蓄積された上位装置からの要求を読み出して応答を返す動作をいう。なお、このフローチャートに示す例を比較例ということとする。
比較例によれば、PLCでは、ラダー実行処理、エンド処理、およびサービス処理により構成される1スキャンにかかる処理が、ステップS1〜S3、ステップS4〜S6、ステップS7〜S9のようにサイクリックに実行される。ステップS7〜S9のスキャンの次はステップS1〜S3のスキャンが実行される。ラダー実行処理(ステップS1、S4、S7)においてはユーザプログラムが実行され、エンド処理(ステップS2、S5、S8)においてはユーザプログラムの演算結果を入出力メモリ領域に反映させる処理が実行される。サービス処理(ステップS3、S6、S9)においては、上位装置との通信処理が実行される。
サービス処理に割り当てられているCPU時間は一定時間に限られている。したがって、ここでは、上位装置のアプリケーションとの間で16個の接続(コネクション)がなされている場合、1回目のスキャンのサービス処理(ステップS3)で16個のコネクションのうちの5つのコネクション(コネクションNo.1〜5)にかかる通信処理がなされ、2回目のスキャンのサービス処理(ステップS6)で次の5つのコネクション(コネクションNo.6〜10)にかかる通信処理がなされ、3回目のサービス処理(ステップS9)において最後の6つのコネクション(コネクションNo.11〜16)にかかる通信処理がなされる。このように、比較例によれば、複数スキャンによって全てのコネクションの通信処理が一通り完了する。また、各コネクションに対して同じ頻度で通信処理が実行される。
前述のように、PLC1に接続されるアプリケーション毎に必要とする通信速度が異なる。しかしながら、図2の比較例では、どのアプリケーションに対しても3スキャンに1回の頻度で通信処理を行うので、全アプリケーションに対して同じ応答速度で通信を行うこととなってしまう。そこで、本発明の実施の形態1では、アプリケーション毎に設定された優先度に応じて通信処理を行う頻度を変化させ、結果として応答速度を変化させることができるようにした。
図3は、本発明の実施の形態1の通信処理の特徴を説明するフローチャートである。図示するように、本発明の実施の形態1によれば、比較例と同じく、各スキャンでラダー実行処理、エンド処理、およびサービス処理が実行される。そして、コネクション毎に3段階の優先度が設定される。ここでは、コネクションNo.1および16により接続されるアプリケーションに対しては優先度「高」、コネクションNo.2および3により接続されるアプリケーションに対しては優先度「中」、コネクションNo.6により接続されるアプリケーションに対しては優先度「低」が設定されている。そして、優先度「高」のコネクションにかかる通信処理は、3回のスキャンのうちの2回のスキャンにおけるサービス処理(ステップS13、16)で実行され、優先度「中」のコネクションにかかる通信処理は3回のスキャンのうちの1回のスキャンにおけるサービス処理(ステップS19)で実行される。そして、優先度「低」のコネクションにかかる通信処理は、ユーザにより予め設定された時間間隔毎にサービス処理において実行される(ここではステップS19のサービス処理で実行されている)。このように、実施の形態1では、接続機器上で動作しているアプリケーションとの間の通信処理が夫々予め設定された優先度に基づいた頻度で実行され、優先度が高く設定されたアプリケーションほど高速に応答を返すことができるようになっている。
図1の例では、PLC1には、アプリケーションa、b、cに対する通信優先度として、高、低、中が夫々設定されている。PLC1は、優先度高のアプリケーションaとの間で最高頻度で通信処理を行い、優先度中のアプリケーションcとの間でアプリケーションaよりも低い頻度で通信処理を行う。また、PLC1は、優先度低のアプリケーションbとの間で、アプリケーションcの通信処理の間隔よりも低い、予めユーザにより設定された時間の間隔(間隔時間)で通信処理を実行する。
図4は、実施の形態1のPLC1のハードウェア構成例を説明する図である。図示するように、PLC1は、CPU(Central Processing Unit)11、ROM(Read Only Memory)12、RAM(Random Access Memory)13、および通信インタフェース(I/F)14を備えた、通常のコンピュータと同様の構成を備えている。CPU11、ROM12、RAM13および通信I/F14は夫々バスラインを介して接続されている。
ROM12は、PLC1のシステムプログラム15およびユーザが作成したユーザプログラム16が格納されている。システムプログラム15は、PLC1のリソース管理の一環として、上述のサービス処理中の通信処理の優先度管理を実行する。ユーザプログラム16は、CPU11によってラダー実行処理中に実行される。
RAM13は、プログラム展開領域、ワークエリア領域、入出力メモリ領域などが確保されている。
CPU11は、システムプログラム15およびユーザプログラム16を実行する。具体的には、システムプログラム15およびユーザプログラム16は、ROM12から読み出されてRAM13に確保されたプログラム展開領域に展開される。CPU11は、RAM13に展開されたシステムプログラム15を実行することによって、後述の機能を実現して、サービス処理において優先度に基づく通信処理を実行する。また、ラダー実行処理において、CPU11は、RAM13に展開されたユーザプログラム16を実行する。CPU11は、エンド処理を実行することによって入出力メモリ領域に格納されたデバイス値の入出力を実行する。
通信I/F14は、PLC1がネットワークと接続するための接続インタフェースであって、ネットワークコントローラユニットや物理的なコネクタを総称したものである。
図5は、システムプログラム15の実行により実現される本発明の実施の形態1のPLC1の機能構成を説明する図である。図示するように、PLC1は、コネクション部21、通信スケジューリング部22、システム主要部(要求処理部)23、計時部24、優先度記憶領域26および設定時間記憶領域27を備えている。コネクション部21、通信スケジューリング部22、システム主要部23、計時部24、優先度記憶領域26および設定時間記憶領域27はRAM13内に形成される。また、コネクション部21は、通信バッファ25を備えている。なお、通信I/F14はメモリやレジスタなどの記憶装置を具備し、コネクション部21は当該記憶装置を通信バッファ25として使用するようにしてもよい。
システム主要部23は、PLC1のリソース管理を含む基本的な制御を実行する。ここでは特に、システム主要部23は、コネクション部21が受信した要求によって要求されたデバイス値をRAM13内の入出力メモリ領域から読み出す。
通信バッファ25は、上位装置との間の通信のためのバッファメモリである。上位装置からの要求は当該通信バッファ25に一時記憶(バッファリング)される。
コネクション部21は、接続される上位装置のインターネットプロトコル(IP)アドレスおよびポート番号と、自PLC1のポート番号と、を対応づけてコネクションを確立するとともに、上位装置からの要求の通信バッファ25へのバッファリングおよびシステム主要部23が生成した上位装置への応答の送信をコネクション毎に実行する。コネクションの確立のための通信プロトコルには、BSDソケットなど一般的な通信プロトコルを採用することができるし、専用の通信プロトコルを作成して採用することもできる。また、今後開発されるどのような通信プロトコルでも採用することができる。
優先度記憶領域26は、コネクション毎の優先度を定義した情報(優先度情報)が設定される。優先度情報は、ユーザによって例えばプログラミング装置などを用いて設定されるものである。図6は、優先度記憶領域26に格納される優先度情報のデータ構造の一例を示す図である。図示するように、優先度情報28は、コネクションの識別番号と優先度とがコネクション毎に対応づけたデータ構造を備えている。
図7は、プログラミング装置における優先度情報28の作成画面の一例を示す図である。図示するように、作成画面例では、プロトコル、自局(自PLC1)のポート番号、交信相手(接続される上位装置)のIPアドレス、交信相手のポート番号(上位装置上で実行されるアプリケーションが使用するポート番号)、および優先度を記入するフィールドを備えたテーブルが表示されている。ユーザは、本テーブルに所望の値の入力を行うことにより、16個までのコネクションとコネクション毎の優先度とを設定することができる。PLC1では、当該作成画面に入力された情報に基づいて優先度情報28が登録され、コネクション部21がコネクションを確立する。
設定時間記憶領域27は、優先度「低」のコネクションにかかる通信処理を実行する間隔時間の設定を記憶する。当該間隔時間は、優先度などと同様にプログラミング装置などにより設定される。
計時部24は、経過時間をカウントする。
通信スケジューリング部22は、サービス処理において、優先度記憶領域26が記憶する優先度情報28を参照して、又は計時部24のカウント値を参照して設定時間記憶領域27に設定された間隔時間が経過したことを確認して、通信処理を実行するコネクションを選択する。そして、通信バッファ25から前記選択したコネクションにかかる要求を取得し、取得した要求をシステム主要部23へ転送する。また、通信スケジューリング部22は、通信バッファ25からのシステム主要部23へ転送した要求に対応してシステム主要部23が読み出したデバイス値を応答としてコネクション部21へ転送する。
図8は、本発明の実施の形態1のPLC1の動作を説明するフローチャートである。図示するように、PLC1がユーザプログラム16にかかる動作(RUN)を開始すると、まず、通信スケジューリング部22は、優先度情報28を参照して全コネクションの優先度を、設定時間記憶領域27を参照して設定された間隔時間を、夫々取得する(ステップS21)。なお、PLC1のRUNが開始されると、コネクション部21が上位装置との間でコネクションを確立するが、ここではその動作の説明を省略している。また、ここでは設定時間記憶領域27には間隔時間として10secが設定されているものとする。
ステップS22からステップS32までのループ処理は、サービス処理において1つ以上のスキャンに分けて実行される。1スキャンの中で通信処理に割り当てられているCPU時間はユーザの所望の時間に限られているからである。ステップS22において、通信スケジューリング部22は、優先度「高」のコネクションにかかる要求を通信バッファ25から1つ取得して(ステップS22)、システム主要部23へ渡す(ステップS23)。通信スケジューリング部22は、システム主要部23から渡した要求に対応する応答を受け取ると、受信した応答をコネクション部21へ転送し、コネクション部21は転送されてきた応答を上位装置へ送信する(ステップS24)。
そして、通信スケジューリング部22は、優先度「高」のコネクションにかかる通信処理を全て実行したか否かを判定し(ステップS25)、未実行の通信処理がある場合(ステップS25、No)、ステップS22へ移行する。
優先度「高」のコネクションにかかる通信処理を全て実行した場合(ステップS25、Yes)、通信スケジューリング部22は、優先度「高」のコネクションにかかる通信処理を全て2回ずつ実行したか否かを判定し(ステップS26)、全て2回ずつの実行を完了していない場合(ステップS26、No)、ステップS22へ移行する。
優先度「高」のコネクションにかかる通信処理を全て2回ずつ実行した場合(ステップS26、Yes)、通信スケジューリング部22は、優先度「中」のコネクションにかかる要求を1つ取得する(ステップS27)。そして、通信スケジューリング部22は、取得した要求をシステム主要部23へ渡す(ステップS28)。通信スケジューリング部22は、システム主要部23から渡した要求に対応する応答を受け取ると、受信した応答をコネクション部21へ転送し、コネクション部21は転送されてきた応答を上位装置へ送信する(ステップS29)。
そして、通信スケジューリング部22は、優先度「中」のコネクションにかかる通信処理を全て実行したか否かを判定し(ステップS30)、実行を完了していない場合(ステップS30、No)、ステップS27へ移行する。
優先度「中」のコネクションにかかる通信処理を全て実行した場合(ステップS30、Yes)、通信スケジューリング部22は、計時部24のカウント値を参照して、優先度「低」のコネクションにかかる通信処理を最後に実行してから10秒が経過したか否かを判断する(ステップS31)。10秒が経過していない場合(ステップS31、No)、ステップS22へ移行する。
優先度「低」のコネクションにかかる通信処理を最後に実行してから10秒が経過した場合(ステップS31、Yes)、通信スケジューリング部22は、優先度「低」のコネクションにかかる要求を1つ取得する(ステップS32)。そして、通信スケジューリング部22は、取得した要求をシステム主要部23へ渡す(ステップS33)。通信スケジューリング部22は、システム主要部23から渡した要求に対応する応答を受け取ると、受け取った応答をコネクション部21へ転送し、コネクション部21は転送されてきた応答を上位装置へ送信する(ステップS34)。
そして、通信スケジューリング部22は、優先度「低」のコネクションにかかる通信処理を全て実行したか否かを判定し(ステップS35)、実行を完了していない場合(ステップS35、No)、ステップS32へ移行する。優先度「低」のコネクションにかかる通信処理を全て実行した場合(ステップS35、Yes)、ステップS22へ移行する。
なお、以上の説明においては、優先度を「高」、「中」、「低」の3段階に設定できるものとして説明したが、3段階以外の複数段階の優先度を設定できるようにしても構わない。
また、優先度が「低」に設定されたコネクションにかかる通信処理の頻度は間隔時間の設定により規定されるようにしているが、「低」以外の他の優先度にかかるコネクションも同様に間隔時間の設定により頻度を規定できるようにしても構わない。
また、全ての優先度にかかるコネクションを間隔時間の設定ではなく以上に説明した優先度が「高」および「中」のコネクションと同様に通信処理の回数により頻度を規定するようにしても構わない。すなわち、例えば、優先度が「高」のコネクションにかかる通信処理を3回ずつ実行し、優先度が「中」のコネクションにかかる通信処理を2回ずつ実行し、優先度が「低」のコネクションにかかる通信処理を1回ずつ実行するようにする。
このように、本発明の実施の形態1によれば、アプリケーション毎のコネクションを介して上位装置からの要求の受信および上位装置への応答の送信を行うコネクション部21と、コネクション部21が受信した要求をコネクション毎に一時記憶する通信バッファ25と、上位装置から要求されたデバイス値を入出力メモリ領域から読み出すシステム主要部(要求処理部)23と、コネクション毎の優先度の設定を記憶する優先度記憶領域26と、通信バッファから要求を逐次取得して要求処理部23に転送し、システム主要部23が読み出したデバイス値を応答としてコネクション部21に転送する通信スケジューリング部22と、を備え、通信スケジューリング部22は、優先度記憶領域26に設定されている優先度が高いコネクションほど高い頻度で通信バッファ25から要求を取得する、ように構成したので、高い優先度が設定されたコネクションにかかる通信処理ほど高い頻度で実行するので、高速な応答を必要とするアプリケーションに対して優先的に応答できるようになる。
また、経過時間をカウントする計時部24と、間隔時間の設定を記憶する設定時間記憶領域27と、をさらに備え、通信スケジューリング部22は、計時部24のカウント値を参照して設定時間記憶領域27に設定されている間隔時間が経過したか否かを判定し、間隔時間が経過したとき、優先度記憶領域26に特定の優先度が設定されているコネクションにかかる要求を通信バッファ25から取得する、ように構成したので、ユーザは、特定のアプリケーションに対して所望の時間間隔で通信処理を実行することができるようになる。
実施の形態2.
実施の形態2においては、各アプリケーションのコネクションにかかる通信処理状況を定量的に知ることができるように、PLCは、各優先度のコネクションにかかる通信要求に対する時間当たりの応答回数を入出力メモリ領域にデバイス値として記録する。ユーザは、プログラマブル表示器などを用いて当該デバイス値を参照することによって、着目したアプリケーションに関して所望の優先度による通信処理が行われていることを確認することができる。
実施の形態2においては、各アプリケーションのコネクションにかかる通信処理状況を定量的に知ることができるように、PLCは、各優先度のコネクションにかかる通信要求に対する時間当たりの応答回数を入出力メモリ領域にデバイス値として記録する。ユーザは、プログラマブル表示器などを用いて当該デバイス値を参照することによって、着目したアプリケーションに関して所望の優先度による通信処理が行われていることを確認することができる。
図9は、実施の形態2のPLCの機能構成を説明する図である。なお、実施の形態1と同じ構成要素には同一の符号を付し、重複する説明を省略する。
図9に示すように、実施の形態2のPLC4は、コネクション部41、通信スケジューリング部42、システム主要部(要求処理部)23、計時部24、優先度記憶領域26、設定時間記憶領域27、入出力メモリ領域43を備えている。コネクション部41は、通信バッファ25および応答回数記憶領域44を備えている。
応答回数記憶領域45は、メモリやレジスタなどの記憶装置によって構成され、コネクション毎の応答回数を記憶する。なお、応答回数記憶領域45が配置される位置は、通信バッファ25と同様、特定の位置に限定されない。
入出力メモリ領域43は、RAM13内に確保されており、応答回数にかかる状態情報が格納される応答回数デバイス44が割り当てられている。応答回数デバイス44には、コネクション毎に状態情報が格納される。状態情報とは、ここでは、各コネクションにかかる単位時間当たりの応答回数であるものとする。応答回数デバイス44は、システム主要部23によって更新される。なお、入出力メモリ領域43には、応答回数デバイス44のほかに、ユーザプログラム16にかかるデバイス(前述のエンド処理によって更新されるデバイス)が割り当てられているが、ここでは図示を省略している。
コネクション部41は、実施の形態1と同様の動作の他に、応答回数記憶領域45の記憶値の管理を実行する。具体的には、コネクション部41は、応答を上位装置に送信する毎に、応答回数記憶領域45に記録されている応答先のコネクションにかかる応答回数をインクリメントする。
通信スケジューリング部42は、実施の形態1と同様の動作の他に、応答回数記憶領域45の記憶値に基づいて状態情報(ここでは単位時間当たりの応答回数)を算出し、当該算出した状態情報を応答回数デバイス44に格納する状態情報算出部として機能する。ここでは、応答回数デバイス44には、コネクション毎の状態情報が格納されるとしているので、通信スケジューリング部42は、状態情報をコネクション毎に算出する。
図10は、実施の形態2のPLC4の動作を説明するフローチャートである。なお、ここでは、優先度記憶領域26に格納されている優先度情報および設定時間記憶領域27に格納されている間隔時間の設定値は実施の形態1と同様とする。すなわち、優先度「高」にかかる通信処理は3回のスキャンのうちの2回のスキャンにおけるサービス処理で実行され、優先度「中」のコネクションにかかる通信処理は3回のスキャンのうちの1回のスキャンにおけるサービス処理で実行される。そして、優先度「低」のコネクションにかかる通信処理は10sec毎に実行される。
通信スケジューリング部42は、PLC4がユーザプログラム16にかかる動作(RUN)を開始すると、まず、通信スケジューリング部42は、優先度情報28を参照して全コネクションの優先度を、設定時間記憶領域27を参照して設定された間隔時間を、夫々取得する(ステップS41)。そして、コネクション部41に指示して、各コネクションにかかる通信要求に対する応答回数を記憶する応答回数記憶領域45の初期化を実行させる(ステップS42)。
次に、通信スケジューリング部42は、優先度「高」のコネクションにかかる要求を通信バッファ25から一つ取得し(ステップS43)、取得した要求をシステム主要部23に渡す(ステップS44)。その後、通信スケジューリング部42はシステム主要部23から受信した要求の応答を、コネクション部41を介して上位装置へ送信する(ステップS45)。この時、コネクション部41は、応答先のコネクションにかかる通信要求に対する応答回数記憶領域45の記憶値に1を加算する(ステップS46)。
そして、通信スケジューリング部42は、優先度「高」のコネクションにかかる通信処理を全て実行したか否かを判定し(ステップS47)、未実行の通信処理がある場合(ステップS47、No)、ステップS43に移行する。優先度「高」のコネクションにかかる通信処理を全て実行した場合(ステップS47、Yes)、通信スケジューリング部42は、優先度「高」のコネクションにかかる通信処理を全て2回ずつ実施したか否かを判断し(ステップS48)、全て2回の実行を完了していない場合(ステップS48、No)、ステップS43へ移行する。
優先度「高」のコネクションにかかる通信処理を全て2回ずつ実行した場合(ステップS48、Yes)、通信スケジューリング部42は、優先度「中」のコネクションにかかる要求を1つ取得する(ステップS49)。そして、通信スケジューリング部42は、取得した要求をシステム主要部23へ渡す(ステップS50)。通信スケジューリング部42は、システム主要部23から前記渡した要求に対応する応答を受け取ると、受信した応答をコネクション部41へ転送し、コネクション部41は転送されてきた応答を上位装置へ送信する(ステップS51)。この時、コネクション部41は、応答先のコネクションにかかる通信要求に対する応答回数記憶領域45の記憶値に1加算する(ステップS52)。
そして、通信スケジューリング部42は、優先度「中」のコネクションにかかる通信処理を全て実行したか否かを判定し(ステップS53)、実行を完了していない場合(ステップS53、No)、ステップS49へ移行する。
優先度「中」のコネクションにかかる通信処理を全て実行した場合(ステップS53、Yes)、通信スケジューリング部42は、計時部24のカウント値を参照して、優先度「低」のコネクションにかかる通信処理を最後に実行してから10秒が経過したか否かを判定する(ステップS54)。優先度「低」のコネクションにかかる最後の通信処理から10秒が経過していない場合(ステップS54、No)、ステップS43へ移行する。
優先度「低」のコネクションにかかる通信処理を最後に実行してから10秒が経過した場合(ステップS54、Yes)、通信スケジューリング部42は、優先度「低」のコネクションにかかる要求を1つ取得する(ステップS55)。そして、通信スケジューリング部42は、取得した要求をシステム主要部23へ渡す(ステップS56)。通信スケジューリング部42は、システム主要部23から前記渡した要求に対応する応答を受け取ると、受け取った応答をコネクション部41へ転送し、コネクション部41は転送されてきた応答を上位装置へ送信する(ステップS57)。この時、コネクション部41は、応答先のコネクションにかかる通信要求に対する応答回数記憶領域45の記憶値に1加算する(ステップS58)。
そして、通信スケジューリング部42は、優先度「低」のコネクションにかかる通信処理を全て実行したか否かを判定し(ステップS59)、実行を完了していない場合(ステップS59、No)、ステップS55へ移行する。
優先度「低」のコネクションにかかる通信処理を全て実行した場合(ステップS59、Yes)、通信スケジューリング部42は、計時部24のカウント値を参照し、ステップS42の処理を実行してからの経過時間、即ちコネクション毎に応答回数記憶領域45に記録されている応答回数を最後に初期化してからの経過時間を算出する(ステップS60)。そして、通信スケジューリング部42は、コネクション部41から、1つのコネクションにかかる通信要求に対する応答回数記憶領域45の記憶値を取得し、取得したコネクションにかかる通信要求に対する応答回数記憶領域45の記憶値をステップS60の処理により算出した経過時間で除算して、当該コネクションにかかる通信処理にかかる単位時間当たりの応答回数を算出する(ステップS61)。そして、通信スケジューリング部42は、当該算出した単位時間当たりの応答回数を、システム主要部23に渡し、システム主要部23は受取った単位時間当たりの応答回数を、応答回数デバイス44に格納する(ステップS62)。
その後、通信スケジューリング部42は、全てのコネクションにかかる単位時間当たりの応答回数を算出したか否かを判定し(ステップS63)、単位時間当たりの応答回数を算出していないコネクションがある場合(ステップS63、No)、ステップS61に移行する。全コネクションにかかる単位時間当たりの応答回数の算出を完了した場合(ステップS63、Yes)、ステップS42に移行する。
このように、本発明の実施の形態2によれば、応答回数をコネクション毎に記憶する応答回数記憶領域45を備え、通信スケジューリング部42は、応答回数記憶領域45の記憶値に基づいて応答回数にかかる状態情報をコネクション毎に算出し、算出したコネクション毎の状態情報を入出力メモリ領域43内の所定のデバイス(応答回数デバイス44)に格納する、ように構成したので、ユーザは、当該デバイスの値を参照することで、各アプリケーションのコネクションにかかる通信処理の状況を定量的に知ることができる。
なお、以上の説明においては、応答回数記憶領域45は通信要求に対する応答回数をコネクション単位で記憶し、通信スケジューリング部42は単位時間当たりの応答回数をコネクション単位で算出するものと説明したが、応答回数の記録および単位時間当たりの応答回数の算出をコネクション単位ではなく、コネクション単位よりも粒度が大きい単位である優先度単位で実行するようにしてもよい。即ち、応答回数記憶領域45は、少なくとも優先度毎に応答回数を記憶し、応答回数デバイス44は、少なくとも優先度毎に状態情報が格納され、通信スケジューリング部42は、少なくとも優先度毎に状態情報を算出するようにしてよい。
また、単位時間当たりの応答回数の算出のタイミングは、優先度「低」のコネクションにかかる通信処理が全て実行された後のタイミングだけに限定されない。例えば、各コネクションの通信処理が終了した後のタイミングや、夫々の優先度について全コネクションにかかる通信処理が完了した後のタイミングで単位時間当たりの応答回数を算出するようにしてもよい。
また、応答回数デバイス44に格納される状態情報は、単位時間当たりの応答回数であるとして説明したが、応答に関する状態を確認できる情報であればどのような値を採用するようにしてもよい。例えば、応答回数の積算値を採用することができる。
実施の形態3.
実施の形態1および実施の形態2においては、優先度が「低」にかかる通信処理は、設定時間記憶領域27に間隔時間として10secが設定されており、優先度が「低」にかかる通信処理は、10sec毎に行われる。ここで、優先度「低」のアプリケーションcのタイムアウト値が9secに設定されているとする。優先度「低」のコネクションにかかる通信処理が行われた直後に優先度「低」のアプリケーションcの要求が通信バッファ25に格納された場合、アプリケーションcの要求に対する応答の転送は、アプリケーションcの要求が通信バッファ25に格納されてから概ね10sec後に実行される。しかしながら、当該要求が実行されたときには、アプリケーションcは既にタイムアウトしており、応答の転送はエラーとなる。タイムアウトエラーにより優先度が「低」の通信処理による通信が不能となる事態から脱却するために、実施の形態3によれば、優先度「低」のコネクションにかかる通信処理において、応答の転送がエラーとなった場合、設定時間記憶領域27の設定時間がより小さい値に変更されるようにした。
実施の形態1および実施の形態2においては、優先度が「低」にかかる通信処理は、設定時間記憶領域27に間隔時間として10secが設定されており、優先度が「低」にかかる通信処理は、10sec毎に行われる。ここで、優先度「低」のアプリケーションcのタイムアウト値が9secに設定されているとする。優先度「低」のコネクションにかかる通信処理が行われた直後に優先度「低」のアプリケーションcの要求が通信バッファ25に格納された場合、アプリケーションcの要求に対する応答の転送は、アプリケーションcの要求が通信バッファ25に格納されてから概ね10sec後に実行される。しかしながら、当該要求が実行されたときには、アプリケーションcは既にタイムアウトしており、応答の転送はエラーとなる。タイムアウトエラーにより優先度が「低」の通信処理による通信が不能となる事態から脱却するために、実施の形態3によれば、優先度「低」のコネクションにかかる通信処理において、応答の転送がエラーとなった場合、設定時間記憶領域27の設定時間がより小さい値に変更されるようにした。
図11は、本発明の実施の形態3のPLCの機能構成を説明する図である。なお、実施の形態1と同じ構成要素には同一の符号を付し、重複する説明を省略する。
図11に示すように、実施の形態3のPLC5は、コネクション部21、通信スケジューリング部51、システム主要部(要求処理部)23、計時部24、優先度記憶領域26、および設定時間記憶領域27を備えている。コネクション部21は、通信バッファ25を備えている。
通信スケジューリング部51は、実施の形態1と同じ動作を実行する他に、設定時間記憶領域27に設定されている間隔時間毎に通信処理を実行するという優先度(即ち優先度「低」)が設定されているコネクションに関してタイムアウトエラーが発生した場合に設定時間記憶領域27に設定されている間隔時間をより小さい値に再設定する設定時間再設定部として機能する。なお、通信スケジューリング部51がタイムアウトエラーの発生を検知する手法は特に限定されない。ここでは、一例として、コネクション部21は、タイムアウトエラー(以降、単にエラー)の発生を記憶しておき、通信スケジューリング部51は、当該コネクション部21に問い合わせることでタイムアウトエラーが発生しているか否かを認識するものとする。
図12は、本実施の形態3のPLC5の動作を説明するフローチャートである。なお、ここでは、優先度記憶領域26に格納されている優先度情報および設定時間記憶領域27に格納されている間隔時間の設定値は実施の形態1と同様とする。すなわち、優先度「高」にかかる通信処理は3回のスキャンのうちの2回のスキャンにおけるサービス処理で実行され、優先度「中」のコネクションにかかる通信処理は3回のスキャンのうちの1回のスキャンにおけるサービス処理で実行される。そして、優先度「低」のコネクションにかかる通信処理は10sec毎に実行される。また、通信スケジューリング部51は、一例として、タイムアウトによるエラーが発生した際には、間隔時間の設定値を4秒だけ短縮した値で更新するものとする。
図示するように、実施の形態1におけるステップS21〜ステップS34と同等の処理がステップS71〜ステップS84において夫々実行される。
ステップS84の処理の後、通信スケジューリング部51は、優先度「低」のコネクションにかかる通信処理を全て実行したか否かを判定し(ステップS85)、実行を完了していない場合(ステップS85、No)、ステップS82へ移行する。優先度「低」のコネクションにかかる通信処理を全て実行した場合(ステップS85、Yes)、通信スケジューリング部51は、コネクション部21に、優先度「低」のコネクションにかかる通信処理に対して、応答の転送がエラーとなったものがあるか否かを問い合わせる(ステップS86)。優先度「低」のコネクションにかかる通信要求に対する応答の転送がエラーとなったものがなかった場合(ステップS86、No)、ステップS72に移行する。優先度「低」のコネクションにかかる通信処理に対して、応答の転送がエラーとなったものがあった場合(ステップS86、Yes)、通信スケジューリング部51は、設定時間記憶領域27が記憶する間隔時間の値を4秒減少させ(ステップS87)、ステップS71に移行する。
図13は、本実施の形態3における通信処理のタイムラインを説明する図である。本図は、優先度が「低」に設定されているアプリケーションcからの要求が処理される様子を示している。縦軸は時間を示し、横軸は各優先度のコネクションにかかる通信処理状況を示している。白抜きの四角が各優先度のコネクションにかかる処理を全て実行していることを示している。
まず、アプリケーションcからの要求が通信バッファ25に格納される(ステップS91)。その間、優先度「高」のコネクションにかかる通信処理が全て2回実行される(ステップS92、S93)。そして、優先度「中」のコネクションにかかる通信処理が全て実行される(ステップS94)。その後、優先度「低」のコネクションにかかる通信処理が最後に実行されてから10秒が経過するまで、優先度「高」および優先度「中」のコネクションにかかる処理が実行される(ステップS95〜S107)。
この間に、アプリケーションcが要求を送信してから9秒が経過し、アプリケーションcはタイムアウトする(ステップS106)。
そして、優先度「中」のコネクションにかかる通信処理が全て実行された後に、優先度「低」のコネクションにかかる通信処理が最後に実行されてから10秒が経過したことを検出されると、優先度「低」のコネクションにかかる通信処理が実行される(ステップS108)。そして、アプリケーションcに要求に対する応答が転送されるが、アプリケーションcは既にタイムアウトしているので、応答は無視され、エラーとなる(ステップS109)。
通信スケジューリング部51は、アプリケーションcのコネクションにかかる通信要求に対する応答の転送がエラーとなったことを検出すると、設定時間記憶領域27が記憶している優先度「低」のコネクションにかかる通信要求処理を実行する間隔時間を4秒減少させる。
その後の処理においては、優先度「低」のコネクションにかかる通信要求処理を実行する間隔時間は6秒となる。具体的には、優先度「低」のコネクションにかかる通信処理(ステップS110)が終了した直後に、アプリケーションcから再び要求が送信される(ステップS111)。それと同時に、優先度「高」のコネクションにかかる通信処理が開始され、優先度「低」のコネクションにかかる前回の通信処理(ここではステップS110の処理)から設定時間記憶領域27が記憶する間隔時間(6秒)が経過するまで、優先度「高」のコネクションにかかる通信処理および優先度「中」のコネクションにかかる通信処理が実行される(ステップS112〜S120)。
優先度「中」のコネクションにかかる通信処理を全て実行した後に、ステップS110の処理から6秒が経過しているのが検出されると、優先度「低」のコネクションにかかる通信処理が実行される(ステップS121)。そして、アプリケーションcはタイムアウトする前に、即ちステップS111の処理において要求を送信してから9秒が経過する前に、要求の応答を受信する(ステップS122)。
このように、優先度「低」のコネクションにかかる通信要求に対する応答の転送がエラーとなった場合、通信スケジューリング部51が優先度「低」のコネクションにかかる通信処理の間隔時間を減少させていくことで、タイムアウトによる通信不能を回避することができる。
なお、本実施の形態3においては、間隔時間の値が変更されるため、通信処理の頻度が変化し、優先度に基づいた通信処理が行われなくなる場合がある。これを防ぐために、間隔時間の値を短縮する処理を実行させるか否かをユーザが設定できるように構成してもよい。
また、以上の説明において、優先度「低」のコネクションにかかる通信要求に対する応答の転送がエラーとなったものがある場合、減少させる間隔時間を4秒としているが、減少幅は4秒に限定されない。間隔時間の減少幅をユーザが任意に設定できるように構成しても構わない。
このように、本発明の実施の形態3によれば、優先度「低」のコネクションに関してタイムアウトエラーが発生した場合に、通信スケジューリング部51が優先度「低」のコネクションにかかる通信処理を実行する間隔時間を現在設定されている値よりも小さい値に再設定するように構成したので、連続してタイムアウトエラーが発生することを防止することができる。即ち、優先度「低」のコネクションに関してタイムアウトエラーによる通信不能を回避することができるようになる。
以上のように、本発明にかかるプログラマブルコントローラは、産業用機器を制御するプログラマブルコントローラに適用して好適である。
1、4、5 PLC
2 ネットワークハブ
3a、3b パソコン
11 CPU
12 ROM
13 RAM
14 通信I/F
15 システムプログラム
16 ユーザプログラム
21、41 コネクション部
22、42、51 通信スケジューリング部
23 システム主要部
24 計時部
25 通信バッファ
26 優先度記憶領域
27 設定時間記憶領域
28 優先度情報
43 入出力メモリ領域
44 応答回数デバイス
45 応答回数記憶領域
2 ネットワークハブ
3a、3b パソコン
11 CPU
12 ROM
13 RAM
14 通信I/F
15 システムプログラム
16 ユーザプログラム
21、41 コネクション部
22、42、51 通信スケジューリング部
23 システム主要部
24 計時部
25 通信バッファ
26 優先度記憶領域
27 設定時間記憶領域
28 優先度情報
43 入出力メモリ領域
44 応答回数デバイス
45 応答回数記憶領域
Claims (7)
- デバイス値を格納する入出力メモリ領域を備え、接続されている上位装置からデバイス値の要求を受信したとき、要求されたデバイス値を応答するプログラマブルコントローラであって、
前記上位装置で実行されているアプリケーション毎にコネクションを確立し、前記確立したアプリケーション毎のコネクションを介して前記上位装置からの要求の受信および前記上位装置への応答の送信を行うコネクション部と、
前記コネクション部が受信した要求をコネクション毎に一時記憶する通信バッファと、
前記上位装置から要求されたデバイス値を前記入出力メモリ領域から読み出す要求処理部と、
コネクション毎の優先度の設定を記憶する優先度記憶領域と、
前記通信バッファから要求を逐次取得して前記取得した要求を前記要求処理部に転送し、前記転送した要求に対応する前記要求処理部が読み出したデバイス値を応答として前記コネクション部に転送する通信スケジューリング部と、
を備え、
前記通信スケジューリング部は、前記優先度記憶領域に設定されている優先度が高いコネクションほど高い頻度で、前記優先度が低いコネクションほど低い頻度で、前記通信バッファから要求を取得する、
ことを特徴とするプログラマブルコントローラ。 - 経過時間をカウントする計時部と、
間隔時間の設定を記憶する設定時間記憶領域と、
をさらに備え、
前記通信スケジューリング部は、前記計時部のカウント値を参照して前記設定時間記憶領域に設定されている間隔時間が経過したか否かを判定し、前記間隔時間が経過したとき、前記優先度記憶領域に特定の優先度が設定されているコネクションにかかる要求を前記通信バッファから取得する、
ことを特徴とする請求項1に記載のプログラマブルコントローラ。 - 前記コネクション部は、接続相手の上位装置のユーザにより指定されたポートと前記ユーザにより指定された自プログラマブルコントローラのポートとの間でアプリケーション毎のコネクションを確立する、
ことを特徴とする請求項1に記載のプログラマブルコントローラ。 - 前記入出力メモリ領域は、前記上位装置への応答回数にかかる少なくとも優先度毎の状態情報が格納される応答回数デバイスを備え、
前記上位装置への応答回数を少なくとも優先度毎に記憶する応答回数記憶領域と、
前記応答回数記憶領域に記憶されている応答回数に基づいて状態情報を算出して、前記算出した状態情報を前記応答回数デバイスに格納する状態情報算出部と、
をさらに備える、
ことを特徴とする請求項1に記載のプログラマブルコントローラ。 - 前記状態情報は、単位時間当たりの応答回数である、
ことを特徴とする請求項4に記載のプログラマブルコントローラ。 - 前記応答回数記憶領域は、前記上位装置への応答回数をコネクション毎に記憶し、
前記応答回数デバイスは、コネクション毎の状態情報が格納される、
ことを特徴とする請求項4に記載のプログラマブルコントローラ。 - 前記特定の優先度が設定されているコネクションに関してタイムアウトエラーが発生した場合、前記設定時間記憶領域が記憶している間隔時間の設定値をより小さい値に再設定する設定時間再設定部をさらに備える、
ことを特徴とする請求項2に記載のプログラマブルコントローラ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012540782A JP5414909B2 (ja) | 2010-10-27 | 2011-10-17 | プログラマブルコントローラ |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2010/069107 WO2012056537A1 (ja) | 2010-10-27 | 2010-10-27 | プログラマブルコントローラ |
JPPCT/JP2010/069107 | 2010-10-27 | ||
PCT/JP2011/073853 WO2012056930A1 (ja) | 2010-10-27 | 2011-10-17 | プログラマブルコントローラ |
JP2012540782A JP5414909B2 (ja) | 2010-10-27 | 2011-10-17 | プログラマブルコントローラ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP5414909B2 true JP5414909B2 (ja) | 2014-02-12 |
JPWO2012056930A1 JPWO2012056930A1 (ja) | 2014-03-20 |
Family
ID=50202834
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012540782A Expired - Fee Related JP5414909B2 (ja) | 2010-10-27 | 2011-10-17 | プログラマブルコントローラ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5414909B2 (ja) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08278935A (ja) * | 1995-04-05 | 1996-10-22 | Mitsubishi Electric Corp | プログラマブルコントローラ |
JP2004054622A (ja) * | 2002-07-19 | 2004-02-19 | Hitachi Ltd | コントローラおよび情報通信サービス方法 |
-
2011
- 2011-10-17 JP JP2012540782A patent/JP5414909B2/ja not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08278935A (ja) * | 1995-04-05 | 1996-10-22 | Mitsubishi Electric Corp | プログラマブルコントローラ |
JP2004054622A (ja) * | 2002-07-19 | 2004-02-19 | Hitachi Ltd | コントローラおよび情報通信サービス方法 |
Also Published As
Publication number | Publication date |
---|---|
JPWO2012056930A1 (ja) | 2014-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2012056930A1 (ja) | プログラマブルコントローラ | |
US20180337832A1 (en) | Traffic management apparatus and traffic management method | |
US20190342396A1 (en) | Data server unit and communication system | |
JP2019079268A (ja) | データ収集装置及びデータ収集方法 | |
EP3026556A1 (en) | Event generation management for an industrial controller | |
US10712731B2 (en) | Control device, control method, and non-transitory computer-readable recording medium | |
US10346332B2 (en) | Slave device | |
JP2019096210A (ja) | 制御装置、制御方法、およびプログラム | |
US20060123163A1 (en) | Communication control circuit and communication control method | |
JP5414909B2 (ja) | プログラマブルコントローラ | |
CN116886576A (zh) | 一种多控存储集群通信超时控制方法、装置、设备及介质 | |
JP5121347B2 (ja) | ネットワークアプリケーションの利用制限システム、利用制限方法、及びプログラム。 | |
JP7334474B2 (ja) | データ中継装置、データ中継方法、監視システム、サーバ装置、端末装置及びコンピュータプログラム | |
JP5183829B1 (ja) | 通信装置及び通信方法及びプログラム | |
JP6786835B2 (ja) | 管理装置、サーバ、シンクライアントシステム、管理方法及びプログラム | |
JP2005293312A (ja) | コントローラおよびツール | |
JP6554011B2 (ja) | タイムアウト時間設定装置とタイムアウト時間設定方法 | |
JP2010049543A (ja) | プログラマブルコントローラ、入出力装置、および動作パラメータアクセスシステム | |
JP6175759B2 (ja) | コントローラ、制御システム、プログラム、および情報処理装置 | |
JP3821711B2 (ja) | 通信管理装置,通信管理プログラム | |
KR100724830B1 (ko) | 원격 제어시스템에서의 원격 화면제어 방법 | |
JP2022111807A (ja) | マスタ装置、スレーブ装置、通信ケーブル評価システム、通信ケーブル評価方法およびコンピュータプログラム | |
JP2020067899A (ja) | データ処理装置、データ処理方法、及びデータ処理プログラム | |
JPH11305810A (ja) | プログラマブルコントローラ用のネットワークユニット | |
JP2013110586A (ja) | 通信システム、通信装置及び通信方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20131015 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20131112 |
|
LAPS | Cancellation because of no payment of annual fees |