(57)【要約】      （修正有）【課題】ＰＬＣにおいてＰＯＵのオンライン変更を安全・確実に実行する。【解決手段】ＰＯＵによって構成されたタスクを制御するＰＬＣのメモリ管理にあたって、ＰＯＵを用途ごとにグループに分割し、該分割されたグループ単位でＰＯＵをプログラムメモリ内に配置して管理する。この分割されたグループのうち、ＰＯＵが一定値よりも大きい場合には専用グループに分類する。また、ＰＬＣの動作中にオンライン変更があれば、ＰＯＵに応じたインスタンス領域１２における定義変数１３の追加・変更・初期化情報１３ｆに印を付与し、オンライン変更時の情報が予め定められた大きさを越えていれば、定義変数１３の変更・等化マップ１３ｈに印を付与する。さらにＰＬＣがマスター／スレーブに二重化されていれば、マスター側からスレーブ側にコピーされない部分を定義変数１３のオンライン変更時等化フィルタにおいて定義する。【選択図】図２
2018156511.tif 000002
【特許請求の範囲】
【請求項１】
ＰＯＵ（Ｐｒｏｇｒａｍ  Ｏｒｇａｎｉｚａｔｉｏｎ  Ｕｎｉｔ）によって構成されたタスクを制御するプログラマブルロジックコントローラのメモリを管理する方法であって、
前記ＰＯＵを用途ごとにグループに分割し、該分割されたグループ単位で前記ＰＯＵをメモリ内に配置して管理する分割管理ステップと、
前記分割管理ステップで分割されたグループのうち、ＰＯＵが一定値よりも大きい場合には専用グループに分類するグループ分類ステップと、
を有することを特徴とするプログラマブルロジックコントローラのメモリ管理方法。
【請求項２】
プログラマブルロジックコントローラの動作中において、
前記ＰＯＵや変数について追加または変更するオンライン変更があれば、該ＰＯＵに応じたインスタンス領域における変数定義の追加・変更・初期化情報に印を付与する印付与ステップをさらに有する
ことを特徴とする請求項１記載のプログラマブルロジックコントローラのメモリ管理方法。
【請求項３】
前記印付与ステップにおいて、
前記オンライン変更時の情報が、予め定められた大きさを越えていれば、前記変数定義の変更・等化マップに印を付与する
ことを特徴とする請求項２記載のプログラマブルロジックコントローラのメモリ管理方法。
【請求項４】
前記プログラマブルロジックコントローラが、マスター／スレーブに二重化されていれば、
マスターからスレーブにコピーされない部分を、前記変数定義において定義するオンライン変更時等化フィルタステップをさらに有する
ことを特徴とする請求項２または３記載のプログラマブルロジックコントローラのメモリ管理方法
【請求項５】
前記印付与ステップにおいて、
プログラマブルロジックコントローラが、追加／変更された部分のデータを取得すれば、
前記各印を消去することを特徴とする請求項２または３記載のプログラマブルロジックコントローラのメモリ管理方法
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルロジックコントローラ（ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｃｏｎｔｒｏｌｌｅｒ：以下、ＰＬＣとする。）のメモリ管理方法に関する。
【背景技術】
【０００２】
現在、コントローラの動作は、専用のプログラムによって制御されることが一般的となっている。このプログラムの記述言語としては、例えばＩＥＣ（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｅｌｅｃｔｒｏｔｅｃｈｎｉｃａｌ  Ｃｏｍｍｉｓｓｉｏｎ）６１１１３１−３規格（ＪＩＳＢ３５０３）に準拠した言語などが使用されている。
【０００３】
このＩＥＣ６１１１３１−３規格に準拠した言語によって作成されるプログラミングは、特許文献１のプログラム作成支援装置などを使用して作成され、次のような特徴を有している。
【０００４】
（１）ＰＯＵ定義，パラメータの設定
ＩＥＣ６１１３１−３規格では、ユーザが作成するプログラムをＰＯＵ（Ｐｒｏｇｒａｍ  Ｏｒｇａｎｉｚａｔｉｏｎ  Ｕｎｉｔ）という型として定義し、これらをタスクや他のＰＯＵに登録することでインスタンス化する。また、汎用のプログラムとは別に数値表示、数値演算、フィードバック制御などの機能を限定したＰＯＵも用意されている。これらのプログラムを効率よく、運用後もなるべくＰＬＣを停止しないように作成することが求められている。なお、ＰＬＣは、一般的にシーケンサという商品名も用いられている。
【０００５】
（２）ＰＯＵ，変数定義，変数パラメータのオンライン変更
ＰＬＣの運転開始後は、ＰＬＣを停止せずにＰＯＵなどを入れ替えるオンライン変更が行われるため、インスタンスとしてのサイズやアドレス、ＰＯＵ内部の変数がプログラム変更前後で変わらないようにプログラミングツールで管理されている。この状態の入れ替えは、オンライン変更と呼ばれている。
【０００６】
（３）二重化されたＰＬＣでのプログラムのオンライン変更
ＰＬＣは、冗長化機能（障害発生時のバックアップ等）としてマスター・スレーブの二重化構成を組むことが少なくない。この二重化構成によれば、プログラムの入れ替えはマスター側で行われ、スレーブ側には入れ替えられたプログラムがコピーされる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００８−２０４２３７
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従来、ラダーなどの軽微な変更や設定値などの変更については、オンライン変更が可能なものの、入れ替えたいプログラムが元のプログラムの大きさの何倍にもなる場合には入れ替えができなかった。
【０００９】
すなわち、従来の技術でもオンライン変更は可能ではあるが、予めメモリ上に空き領域を持っておかなければならないため、全体が肥大化してしまうため、変更できるＰＯＵのメモリ上の大きさが数十バイトまでに制限されていた。
【００１０】
また、図７に示すように、ＰＯＵは、大きく分けると、変数定義の部分とロジックの定義部分との２つに分かれ、この両者をアプリケーションファイルとして転送する。この変数定義の部分には現場機器から計測値などがコピーされ、ロジックの定義部分には該計測値を参照しながら演算を行う。
【００１１】
このとき二重化されたＰＬＣでは、マスターからスレーブにデータをコピーすることでマスターに異常があった場合にスレーブが瞬時にマスターに切り替わることを可能としている。ところが、スレーブにはスレーブ固有の情報があり、そのデータをマスターからデータをコピーすることはできない。
【００１２】
また、積算などのＰＯＵについても、積算の計算途中でマスターからスレーブへとデータコピーしてよい部分と、よくない部分が存在し、その内容はＰＯＵごとに異なっている。
【００１３】
本発明は、このような従来の問題を解決するためになされ、ＰＬＣにおいてＰＯＵのオンライン変更を安全・確実に実行することを解決課題としている。
【課題を解決するための手段】
【００１４】
本発明は、ＰＯＵ（Ｐｒｏｇｒａｍ  Ｏｒｇａｎｉｚａｔｉｏｎ  Ｕｎｉｔ）によって構成されたタスクを制御するプログラマブルロジックコントローラのメモリを管理する方法に関する。この方法は、前記ＰＯＵを用途ごとにグループに分割し、該分割されたグループ単位で前記ＰＯＵをメモリ内に配置して管理する分割管理ステップと、前記分割管理ステップで分割されたグループのうち、ＰＯＵが一定値よりも大きい場合には専用グループに分類するグループ分類ステップと、を有する。
【００１５】
本発明の一態様は、プログラマブルロジックコントローラの動作中において、前記ＰＯＵや変数について追加または変更するオンライン変更があれば、該ＰＯＵに応じたインスタンス領域における変数定義の追加・変更・初期化情報に印を付与する印付与ステップをさらに有している。
【００１６】
この場合、前記印付与ステップにおいて、前記オンライン変更時の情報が予め定められた大きさを越えていれば、前記変数定義の変更・等化マップに印を付与することもできる。
【００１７】
また、前記プログラマブルロジックコントローラが、マスター／スレーブに二重化されていれば、マスターからスレーブにコピーされない部分を、前記変数定義において定義するオンライン変更時等化フィルタステップを有していてもよい。
【００１８】
なお、前記印付与ステップにおいて、プログラマブルロジックコントローラが、追加／変更された部分のデータを取得すれば、前記各印を消去することもできる。
【発明の効果】
【００１９】
本発明によれば、ＰＬＣにおいてＰＯＵのオンライン変更を安全・確実に実行することができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施形態に係るメモリ管理方法におけるメモリ配置の概念図。
【図２】同  変数定義の詳細図。
【図３】（ａ）は同メモリ管理方法を実行するシステムの構成図、（ｂ）は（ａ）に示すＰＬＣの構成図。
【図４】図３のシステムに基づきプログラミングの作業フロー図。
【図５】自動生成されたプログラムＰＯＵの一例を示す図。
【図６】個別パラメータ調整画面図。
【図７】従来例のメモリ配置の概念図。
【発明を実施するための形態】
【００２１】
以下、本発明の実施形態に係るメモリ管理方法を説明する。このメモリ管理方法は、ＰＬＣの記憶装置内にＰＯＵのインスタンス格納領域をタスクごとに確保し、該インスタンス格納領域内にＰＯＵのインスタンス領域を置いてＰＬＣのメモリを管理する。
【００２２】
≪実行システム≫
図３に基づき前記メモリ管理方法を実行するシステム１の構成を説明する。図３（ａ）中のＰＬＣ２は、主にＪＩＳＢ３５０３規格に沿った計装用のアプリケーション作成に使用されている。
【００２３】
このＰＬＣ２は、計装用の様々な機能ごとにＰＯＵが用意され、ＰＡＤＴ（Ｐｒｏｇｒａｍｉｎｇ  Ａｎｄ  Ｄｅｂｕｇ  Ｔｏｏｌ）４からの指示にしたがってプログラムの作成・編集（変更）・デバッグなどの処理を実行する。このＰＡＤＴ４は、ＰＬＣ２とイーサネット（登録商標）７で接続されたコンピュータ３に実装され、該コンピュータ３には計器作成支援ツール５が実装されている。
【００２４】
また、ＰＬＣ２は、図３（ｂ）に示すように、各種演算制御を実行する管理ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１ａと、ＰＯＵを格納して管理するプログラムメモリ１１ｂと、各ＰＯＵに対応するインスタンス格納領域に配置されたデータメモリ１１ｃとを備えている。この図３（ｂ）中では、ＰＯＵ（１）に対応してインスタンス格納領域ｉ1が配置され、ＰＯＵ（２）に対応してインスタンス格納領域ｉ2が配置され、ＰＯＵ（ｎ）に対応してインスタンス格納領域ｉnが配置されている。
【００２５】
この各インスタンス格納領域ｉ1〜ｉnには、図２に示すタスク単位のインスタンス領域（以下、インスタンス領域と省略する。）１２が置かれ、インスタンス領域１２には、ＰＯＵの変数定義１３が記憶されている。具体的には一般変数定義１１ａの場合は、型情報１３ｃ，初期値１３ｄ，現在値１３ｅ，追加・変更・初期化情報１３ｆ，等化フィルタ情報１３ｇが格納される。また、一定サイズ以上の大きさの変数定義１３ｂでは、さらに変更・等化マップ１３ｈが追加されている。なお、前記変数定義１３ｂに該当するか否かは、予め定められた閾値との対比により決定してもよい。
【００２６】
管理ＣＰＵ１１ａは、図示省略の二枚のベースボード間がケーブルによって接続され、それぞれに管理ＣＰＵモジュールが実装され、各管理ＣＰＵモジュールの電源断・故障や動作モード、即ちマスター（常用）モード／スレーブ（待機）モードを通知し、マルチＣＰＵによるＰＬＣ二重化システムを実現させる。このＰＬＣ二重化システムによれば、各管理ＣＰＵモジュールは、同じメモリ構成であり、かつ同じアプリケーションプログラムを動作させる。なお、前記各管理ＣＰＵモジュールは、図１中では、ＣＰＵ（１）（２）として示され、ＣＰＵ（１）はマスター側に実装され、ＣＰＵ（２）はスレーブ側に実装されている。
【００２７】
≪作業手順≫
（１）入力支援
前記システム１を用いた作業手順（ステップ）を説明する。従来は、図４に示すように、計装項目表Ｄを元に数値表示や数値積算などの機能をつくりこんだＰＯＵ（以下、機能ＰＯＵとする。）を配置してパラメータを設定する単純作業の繰り返しにより、プログラミングできるように工夫されてきた。
【００２８】
しかしながら、計測項目表Ｄを見ながらユーザ（人間）がパラメータをプログラミングするため、入力ミスが多く見受けられた。そこで、前記システム１では、計器作成支援ツール５を用いることで自動生成する部分を増加させ、ユーザの入力の手間を省いている。
【００２９】
詳細を説明すれば、ユーザは、従来のＳ０１，Ｓ０２と同じく、作成するプロラムの計数項目表Ｄを作成し、手入力によりシステム構成を定義する（Ｓ０１，Ｓ０２）。ただし、Ｓ０３，Ｓ０４に示すグローバル変数の定義と機能ＰＯＵの定義に計器作成支援ツール５が用いられている点で従来と相違する。
【００３０】
すなわち、計器作成支援ツール５にて計装項目表Ｄと計装初期値ファイルＦ１からデータを読み込み、作成する機能ＰＯＵ数や名前のルールを計器作成支援ツール５で設定する。ここでは機能ＰＯＵに入力するグローバル変数を構造体として定義し、登録された機能ＰＯＵの部品ごとにパラメータ設定ダイアログを用意し、入力を容易化させることができる。
【００３１】
そして、計器作成支援ツール５にて、計装項目表Ｄおよび計装初期値ファイルＦ１から機能ＰＯＵのグローバル変数用ＣＳＶファイルＦ２と、機能ＰＯＵを配置したプログラムＰＯＵ用ＸＭＬファイルＦ３とをＰＡＤＴ４に出力する。
【００３２】
また、ＰＡＤＡ４は、前記ＣＳＶファイルＦ２および前記ＸＭＬファイルＦ３を読み込み、グローバル変数と機能ＰＯＵを自動プログラミングする。ここで計装項目表Ｄと計装初期値ファイルＦ１と違うパラメータを設定する場合にはＰＡＤＴ４にて設定する。なお、図５は、計器作成支援ツール５から出力された前記ＸＭＬファイルＦ３を取り込んで自動生成された機能ＰＯＵの画面表示Ｇ１を示し、表１は、計器作成支援ツール５から出力されたＣＳＶファイルＦ２を取り込んで自動生成されたグローバル変数を示している。
【００３３】
【表１】
2018156511.tif 000003
【００３４】
このとき計装項目表と計装初期値ファイルＦ１とは違うパラメータを設定する場合はプログラミングツールで設定する。ここでは図６の矢印Ｇ１に示すように、前記自動生成後に表１中のパラメータ（変数名称）をダブルクリックすることで各計装部品用の画面Ｇ２が表示され、パラメータを変更することができる。
【００３５】
（２）オンライン変更等
ＰＡＤＴ４でコンパイルを実行し（Ｓ０５）、アプリケーション６のファイルを生成する。このとき作成されたアプリケーション６は、図１（ａ）に示すように、用途ごとにグループに分割されている。すなわち、ユーザが作成するアプリケーションは、機能ごとに目的の異なるグループに分割することができる。ここではユーザが行う作業は、グループ単位に集中して行うことが多いため、機能ＰＯＵをグループ単位に管理する。
【００３６】
例えば図１（ａ）のアプリケーションプログラム６においては、グループ１でＰＯＵ１（ロジック最大設定）が管理され、グループ２（変数最大設定）で機能ＰＯＵ２，３が管理されている。ここでは分割されたグループのうち機能ＰＯＵが、予め定められた閾値よりも大きいものついては、機能ＰＯＵ毎の専用グループとして分類する。例えば図１（ａ）中の機能ＰＯＵ３のサイズが閾値よりも大きければ、機能ＰＯＵ２とは別の専用グループとして分類することができる。
【００３７】
そして、生成されたアプリケーションプログラム６は、イーサネット６経由でＰＬＣ２に転送され（Ｓ０６）、運転が開始される（Ｓ０７）。このときＰＬＣ２は、二重化されているため、マスターからスレーブにコピーされ、マスターに異常があればスレーブが瞬時にマスター側に切り替わる。
【００３８】
ただし、マスター側のアプリケーションファイル６ａからスレーブ側のアプリケーションプログラム６ｂにコピーされない部分を定義するオンライン変更時等化フィルタ１４が用意されている。このオンライン変更時等化フィルタ１４は、マスターからスレーブへとデータコピーしてよい部分と、コピーしてよくない部分とを区別し、後者の部分を定義する。ここで定義された情報が等化フィルタ情報１３ｇに記述される。なお、オンライン変更時等化フィルタ１４に定義される部分の内容は機能ＰＯＵ毎に異なるものとする。
【００３９】
また、ＰＡＤＴ４がオンライン変更モード（Ｓ０８，Ｓ０９）での動作中は、修正・追加した機能ＰＯＵおよび変数の追加・変更・初期化情報１３ｆに印を付与する。このときサイズの大きい構造体などの変数定義については、追加・変更・初期化情報１３ｆも大きくなるおそれがある。そこで、処理高速の観点から修正や追加などの箇所をビット単位で分かるように変更・等化マップ１３ｈに印を付与する。例えば２バイト単位のビットインデックスを用いることができる。
【００４０】
このように追加変更初期化情報１３ｆや変更・等化マップ１３ｈに印を付与した場合にＰＬＣ２に追加・修正部分などのダウンロード（Ｓ１０）が完了すれば、前記各印を消去するものとする。なお、前記ダウンロードを実行していなくても、ＰＡＤＴ４の通常モードでビルドを行った場合も同様に前記各印は消去される。
【００４１】
≪作用効果≫
（１）ユーザのアプリケーションに既存の数Ｋバイトの大きな機能ＰＯＵを張り付けても、オンラインで変更することが可能となる。
【００４２】
すなわち、機能ＰＯＵをグループに分割し、グループ単位，ＰＯＵ単位，変数単位に変更を管理できるようにし、かつ予め数Ｋバイト安易の追加変更を行うグループを全体が最大サイズの固定長で作成できるようにしたことで大きな部品についてもオンライン変更が可能となった。
【００４３】
（２）オンライン変更時等化フィルタ１４と変更・等化マップ１３ｈとによりデータ等化処理が制限され、二重化運転中のオンライン変更も安全・高速に行える。また、機能ＰＯＵのパラメータ部分をグローバル変数にすることで、変数のアドレスが固定化され、安全にオンライン変更することができる。
【００４４】
（３）なお、機能ＰＯＵのパラメータ部分をグローバル変数にすることで、プログラミングの手間は増えるものの、計器作成支援ツール５で自動生成される部分が増加するため、トータルではプログラミングのコストを低く抑えることができる。
【符号の説明】
【００４５】
１…システム
２…ＰＬＣ
３…コンピュータ
４…ＰＡＤＴ
５…計器作成支援ツール
６…アプリケーション
７…イーサネット
１１ａ…管理ＣＰＵ
１１ｂ…プログラムメモリ
１１ｃ…データメモリ
１２…タスク単位  インスタンス領域
１３…変数定義
１３ａ…一般変数定義
１３ｂ…一定サイズ以上の大きな変数定義
１３ｃ…型情報
１３ｄ…初期値
１３ｅ…現在値
１３ｆ…追加・変更・初期化情報
１３ｇ…等化フィルタ情報
１３ｈ…変更・等化マップ
１４…オンライン変更時等化フィルタ
【図１】
2018156511.tif 000004
【図２】
2018156511.tif 000005
【図３】
2018156511.tif 000006
【図４】
2018156511.tif 000007
【図５】
2018156511.tif 000008
【図６】
2018156511.tif 000009
【図７】
2018156511.tif 000010