(57)【要約】      （修正有）【課題】プログラマブルコントローラ上で動作するリアルタイムオペレーティングシステムにおいて、フリーメモリをバッファとして管理した際に、種類の異なる制御系からのバッファ獲得要求の競合を避け、メモリ資源枯渇による処理の停止やスループットの低下を回避する。【解決手段】リアルタイムオペレーティングシステムでの制御系を、例えば「アプリケーション制御」、「システム管理」、「通信処理」と大別し、これらの大別した種別ごとにフリーメモリ領域にバッファを設け、特定の制御系への処理集中によるメモリ資源枯渇を回避し、安定したスループットを確保する。【選択図】図１
2007011519.tif 000002
【特許請求の範囲】
【請求項１】
リアルタイムオペレーティングシステムと該リアルタイムオペレーティングシステムがアクセスするフリーメモリを備えたプログラマブルコントローラにおいて、
前記フリーメモリを細分化したバッファと、該バッファのアドレスとサイズを指すディスクリプタと、によりメモリを管理する手段と、
前記ディスクリプタを、プログラムコントローラ内の制御機構である、アプリケーション制御、システム管理、通信処理等の制御系ごとに割当て、異なった種別としてディスクリプタ獲得要求を発行する手段と、
前記ディスクリプタ獲得要求を、オペレーティングシステムのバッファ獲得要求として管理するバッファ管理手段と、
を備えることを特徴とするプログラマブルコントローラ。
【請求項２】
請求項１に記載のプログラマブルコントローラにおいて、
前記メモリを管理する手段は、
前記制御系ごとに割当てる前記ディスクリプタの個数あるいは前記バッファのサイズの少なくともいずれかを、制御系ごとに適したサイズに決める、
ことを特徴とするプログラマブルコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リアルタイムオペレーティングシステム上で動作するバッファ管理手段を実装した、プログラマブルコントローラに関する。
【背景技術】
【０００２】
プログラマブルコントローラや産業用ロボット、数値制御などにおいては、主たる処理が高度なリアルタイム性を要求されることが多い。このため、リアルタイム性の必要な制御アプリケーションの使用するメモリ領域は、優先してスタティックなメモリ領域を、例えばユーザメモリ領域として予め確保することが一般的である。初期のプログラマブルコントローラ、産業用組込み機器は、全てのメモリをスタティックに処理に結び付けて抱え、それによりメモリ枯渇などによる処理の停滞や故障状態が発生しないようにしていた。
リアルタイムオペレーティングシステム（以下、リアルタイムＯＳ）上で動作する処理を設計する場合、処理に必要なメモリ領域を各処理が確保する方法は、大別して二つある。一つはその処理に属する固定の領域として、スタティックな物理メモリ領域を確保する方法であり、もう一つはリアルタイムＯＳが管理するフリーメモリ領域から、必要な大きさのバッファを獲得し、処理が終了するとそのバッファを開放して、リアルタイムＯＳのメモリ管理処理に返却する方法である。
【０００３】
前者は、上位層の各処理が定常的に使用する必須のメモリ領域として、或は、必要が発生した時点で必ず確保しなければならないバッファ領域などとして、予め確保しておくために使用される。それに対し、後者は、通信用の送受信バッファなど、短期的な処理にのみ必要であり、定常的に確保しておく必要のないメモリ領域として使用されることが多い。近年においては、メモリ単価の下落や、リアルタイムオペレーティングシステム自体のメモリ管理機能の向上により、処理ごとにスタティック、ダイナミックなバッファの確保方式を使い分ける方式が一般的となってきている。
一般にプログラマブルコントローラなどの組込み機器では、ユーザプログラム、通信、システムを維持するための基本システム処理など、様々な種類の処理が並行的、すなわちマルチタスクで処理されることが多い。これらの各タスクは、リアルタイムＯＳ上で動作する。
【０００４】
図３は、従来のプログラマブルコントローラにおけるバッファ管理処理のソフトウェア構造概略を示す図である。図３において、ユーザがプログラマブルコントローラ上で動作させる目的で用意したユーザアプリケーションプログラム１、これらのユーザアプリケーションプログラム１をタスクとして管理するアプリケーション制御手段４、システム管理や初期化処理などのシステムとして必須な処理であるシステム管理手段２、データ通信処理やデータ転送処理などのデータの送受信を担う通信処理手段３、プログラマブルコントローラを構成するハードウェア６、ハードウェア６上で動作するリアルタイムＯＳ５、リアルタイムＯＳ５からアクセスされるフリーメモリ７を有する。
アプリケーション制御手段４、システム管理手段２、通信処理手段３の各制御手段が、個別に、リアルタイムＯＳ５に対してバッファ獲得要求７（ＯＳコール）を出すことにより、リアルタイムＯＳ５が管理するフリーメモリ７から、必要な大きさのバッファを獲得している。
【０００５】
プログラマブルコントローラにおけるメモリモジュールの具体的な装置としては、例えば特許文献１に記載されたものが知られている。特許文献１に記載された装置では、簡易な構造で構成され、ＣＰＵモジュールとは独立して設けたメモリモジュールの内部に、複数のシーケンス制御用プログラムやデータを保存し管理し、モジュールのプログラムの自動書き換えを可能としている。
【特許文献１】特開２００２−９１５２０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
近年、プログラマブルコントローラなどのリアルタイム制御機器も、USBやEthernet(登録商標)をはじめとするデータ通信、高機能な入出力機器との各種制御用ネットワークを介したメッセージ通信など、通信処理を行うアプリケーションの比率が高まっている。
これまでは、プログラマブルコントローラの通信機能（通信性能の高速化や通信高効率化など）は、オプション的な機能として捉えられてきたが、現在では、制御アプリケーションのリアルタイム性と同様に重視される傾向にある。
リアルタイム制御に必要なバッファ、メモリ領域は定常的に予め確保するのに対し、通信処理に使用するバッファは、通信要求やコネクション要求がユーザアプリケーションやプログラマブルコントローラのシステム処理などから発行された場合に、リアルタイムＯＳにバッファ獲得要求を出して獲得することが多い。通信機能の拡張とともに、通信ポート数、コネクション数、一回の転送データ量などが比例して増加傾向にあり、バッファが必要時点で必要な分だけを使用するほうがメモリの利用効率が高い。
【０００７】
従来技術においては、バッファを必要とする各処理が、個別にリアルタイムＯＳにバッファ獲得要求を出す場合、通信負荷が高くなると、リアルタイムＯＳの管理するフリーメモリ領域の資源が枯渇することが考えられた。枯渇した状態での通信処理における、送信処理・受信処理に関して以下に示す。
送信処理では、上位処理が送信要求のためのバッファを獲得しようとするが、資源枯渇により獲得できない場合は、送信待ち、或はリトライ処理を行うことになるが、許容時間内にバッファが獲得できれば問題は生じない。一方、受信処理では、処理が受動的に行われるため、受信要求を受けた時点でバッファが確保できなければ、受信データを棄却することになる。この結果、通信処理の渋滞や送信元からのリトライ処理により通信性能の低下に繋がる。
【０００８】
しかしながら、通信処理の場合は、フリーメモリ領域の資源の枯渇状態にあっても、リトライ処理、送信待ちなどの処理構造の改善により機能を継続することは可能である。一方、リアルタイムＯＳが管理するフリーメモリ領域の資源が、通信処理の負荷集中により枯渇し、リアルタイム制御系のアプリケーションや、プログラマブルコントローラのシステム管理処理などのバッファ獲得に影響した場合は、例えばシステム処理の停滞、リアルタイム処理の待ち、などが発生し、非常に大きな問題となる。
従い、リアルタイムＯＳのフリーメモリ管理機能によるバッファ管理は、プログラマブルコントローラにとっても非常に便利な機能であり使用したいが、優先度の低い処理からのバッファ獲得要求の集中により資源枯渇となり、結果として重要度の高い処理の停滞を引き起こさないよう管理することが必要となる。
【０００９】
本発明は、上記問題を解決するためになされたもので、リアルタイムＯＳが管理するフリーメモリ領域の資源の枯渇を回避し、スループットを向上させることを課題とする。
【課題を解決するための手段】
【００１０】
上記の課題を解決する手段として、本発明は以下のように構成する。
第１に、リアルタイムオペレーティングシステムと該リアルタイムオペレーティングシステムがアクセスするフリーメモリを備えたプログラマブルコントローラにおいて、前記フリーメモリを細分化したバッファと、該バッファのアドレスとサイズを指すディスクリプタと、によりメモリを管理する手段と、前記ディスクリプタを、プログラムコントローラ内の制御機構である、アプリケーション制御、システム管理、通信処理等の制御系ごとに割当て、異なった種別としてディスクリプタ獲得要求を発行する手段と、前記ディスクリプタ獲得要求を、オペレーティングシステムのバッファ獲得要求として管理するバッファ管理手段と、を備えるように構成する。
第２に、前記メモリを管理する手段は、前記制御系ごとに割当てる前記ディスクリプタの個数あるいは前記バッファのサイズの少なくともいずれかを、制御系ごとに適したサイズに決める、ように構成する。
【発明の効果】
【００１１】
本発明により、プログラマブルコントローラにおける特定の処理負荷の増大によって、他の処理が必要とするバッファの獲得が妨げられることを回避し、処理の渋滞やリトライを回避することができる。このことにより、プログラマブルコントローラの処理全体の安定したスループット確保することが可能となる。
フリーメモリをディスクリプタにより割り付けられたバッファに分割管理することにより、処理ごとのディスクリプタの数によって、バッファ獲得数を制限する管理を行うことができる。
また、ハードウェアのメモリ容量が機種、製品型式などにより異なる場合においても、ディスクリプタの個数をメモリ容量に合せて増減することにより、対応するバッファ領域を簡単に調整可能である。
【発明を実施するための最良の形態】
【００１２】
以下、本発明を実施するための最良の形態について、図面を参照しながら説明する。
図１は、本発明のプログラマブルコントローラのソフトウェア構造概略を示す図である。図１において、図３で示した従来のプログラマブルコントローラのソフトウェア構造概略を示す図と対応する部分は、同一の符号を用いるものとする。
図１で示すように、リアルタイムＯＳ５と、アプリケーション制御手段４、システム管理手段２、通信処理手段３などの各処理の間に、バッファ管理層９を設ける。各処理では、リアルタイムＯＳ５に直接バッファ獲得要求を発行するのではなく、まずバッファ管理層９に、要求元の処理区分に従った種別を指定してディスクリプタ獲得要求１１〜１３を発行する。アプリケーション制御手段４からはディスクリプタ（種別ａ）の獲得要求１１、システム管理手段２からはディスクリプタ（種別ｂ）の獲得要求１２、通信処理手段３からはディスクリプタ（種別ｃ）の獲得要求１３を個別に発行する。
【００１３】
バッファ管理層９は、要求元が指定したディスクリプタの種別に従い、リアルタイムＯＳ５のメモリ管理にバッファ獲得要求８を発行する。リアルタイムＯＳ５のメモリ管理では、フリーメモリ７からディスクリプタの種別に基づいてバッファを切り出し、切り出されたバッファは、それに関連付けられたディスクリプタと一組でバッファ獲得要求元に応答として渡される。要求元処理はバッファを使用し、バッファが不要になったらメモリ管理に対してディスクリプを返却し、メモリ管理はバッファ開放要求を出してフリーメモリ７に戻す。
図２は、バッファディスクリプタによるバッファ管理の一例の説明図である。ここで、バッファとして切り出すメモリは物理的には有限であり、その容量を超えてバッファ獲得要求が発行されると資源枯渇を引き起こす要因となる。本発明では、ディスクリプタの種別、個数およびバッファのサイズを制約することによって、リアルタイムＯＳ５が抱えるフリーメモリ７の容量を超えないように調節する。
【００１４】
例えば、簡略化した例として、バッファのサイズは固定で全て２ＫＢとし、フリーメモリ７が５１２ＫＢあるシステムを考える。ここで、プログラマブルコントローラの処理を、図１のアプリケーション制御手段４、システム管理手段２、通信処理手段３の３つに大別したとして、それぞれの処理に関連付けられた種別ａ、ｂ、ｃのディスクリプタ群を持つとする。ここで、通信処理手段３が他の２つの手段より負荷があることが予め分かっており、その負荷比は、「アプリケーション制御手段４：システム管理手段２：通信処理手段３」が、「１：１：２」だとする。
また全体としては、ディスクリプタの総数は、ディスクリプタａ、ｂ、ｃの各群の個数の総和であり、それを個数Ｘとした場合、Ｘが５１２ＫＢ／２ＫＢすなわち２５６個を超えなければ、リアルタイムＯＳ５の持つバッファ領域の枯渇は発生しないことになる。
【００１５】
ある時点で通信負荷が集中し、通信処理手段３で使用するディスクリプタ種別ｃの個数を使い切ってしまった場合、通信処理３においてはバッファ不足によりリトライなどのリカバリ処理が発生することになるが、他の処理すなわちアプリケーション制御手段４、システム管理手段２の使用するバッファは通信処理手段３の影響を受けることなく確保することができるので、アプリケーション制御手段４、システム管理手段２は正常に処理を継続し、プログラマブルコントローラの処理全体としては安定したスループットを確保することが可能となる。
【図面の簡単な説明】
【００１６】
【図１】本発明のプログラマブルコントローラにおけるバッファ管理処理のソフトウェア構造概略の説明図
【図２】バッファディスクリプタによるバッファ管理の一例の説明図
【図３】従来のプログラマブルコントローラにおけるバッファ管理処理のソフトウェア構造概略の説明図
【符号の説明】
【００１７】
１  ユーザアプリケーションプログラム
２  システム管理手段
３  通信処理手段
４  アプリケーション制御手段
５  リアルタイムＯＳ
６  ハードウェア
７  フリーメモリ
８  リアルタイムＯＳへのバッファの獲得要求（ＯＳコール）
９  バッファ管理層
１１  ディスクリプタ（種別ａ）の獲得要求
１２  ディスクリプタ（種別ｂ）の獲得要求
１３  ディスクリプタ（種別ｃ）の獲得要求
【図１】
2007011519.tif 000003
【図２】
2007011519.tif 000004
【図３】
2007011519.tif 000005