(57)【特許請求の範囲】
【請求項１】
オブジェクト指向プログラミング言語により記述された、類似する制御機能部品の代表特性部品であるクラスをライブラリとして登録させた第１の記憶手段と、
前記第１の記憶手段にライブラリとして登録させたクラスを基に実動作制御機能部品であるインスタンスを生成するために必要とされるインスタンス生成情報を記憶させた第２の記憶手段と、
前記第１の記憶手段にライブラリとして登録されたクラスと前記第２の記憶手段に記憶されたインスタンス生成情報とに基づいて実動作制御機能部品であるインスタンスを生成するインスタンス生成手段と、
前記インスタンス生成手段にて生成されたインスタンスを含むユーザプログラムを実行するユーザプログラム実行手段とを備え、
前記第２の記憶手段に記憶されたインスタンス生成情報を共通処理、ユーザプログラム実行処理、周辺サービス処理を繰り返す間にサポートツールにより変更可能とし、
共通処理、ユーザプログラム実行処理、周辺サービス処理を繰り返す毎に、前記インスタンス生成情報が変更されたかどうかを判定し、変更されたと判定した場合は、対応するインスタンスを生成し、生成された当該インスタンスを含むユープログラムを実行可能とすることを特徴するプログラマブル・コントローラ。
【請求項２】
新たに作成されたクラスを第１の記憶手段に登録するためのクラス登録制御手段を有することを特徴とする請求項１に記載のプログラマブル・コントローラ。
【請求項３】
第２の記憶手段がサポートツールにより変更可能な入出力メモリやユーザプログラムメモリであることを特徴とする請求項１又は２に記載のプログラマブル・コントローラ。
【請求項４】
前記インスタンス生成情報を入出力メモリやユーザプログラムメモリの電源断記憶エリアに格納したことを特徴とする請求項３に記載のプログラマブル・コントローラ。
【請求項５】
前記インスタンス生成情報が、インスタンス番号と、引用元クラス番号と、動作タイミング設定と、変数のアドレス情報等の初期設定データと、を含んでいることを特徴とする請求項１〜４のいずれかに記載のプログラマブル・コントローラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ユーザにて定義されたファンションブロックから該当する実動作制御機能部品（インスタンス）を自動生成して動作するようにしたプログラマブル・コントローラ（以下、ＰＬＣと言う）に係り、特に、実動作制御機能部品の基となるクラスの記述にオブジェクト指向プログラミング手法を採用することで、ファンクションブロックの新規作成並びに変更をユーザ側でも容易に可能とすると共に、既存技術との親和性も良好なプログラマブル・コントローラに関する。
【０００２】
【従来の技術】
周知のように、スキャニングタイプＰＬＣの基本的な動作は、外部入力回路から取り込まれた入力データを入出力メモリの入力エリアに書き込む処理（入力リフレッシュ処理）、入出力メモリの入出力データに基づいてユーザの作成した制御プログラム（ユーザプログラム）を実行して同メモリの出力エリアの内容を書き替える処理（命令実行処理）、入出力メモリの出力データを外部出力回路へと送出する処理（出力リフレッシュ処理）を繰り返し実行するものである。
【０００３】
ところで、所望の制御仕様を満足させるように作成されるユーザプログラム（プログラムを一部マイクロ化したファンクションブロックを含む）は、個々のＰＬＣ毎に決められた所定の言語を使用してユーザ自身が作成するのが通例である。言語には様々な文法のものが存在するが、概ね、インタプリタ型言語とコンパイラ型言語とに大別され、それら言語には、一長一短がある。
【０００４】
【発明が解決しようとする課題】
しかしながら、ＰＬＣのユーザプログラムの作成方法、実行方法に関しては、従来、以下のような問題点が指摘されている。
（１）インタプリタ型言語で作成したプログラムは、実行用マイクロプロセッサ（ＭＰＵ）が直接実行できるコードになっていないため、逐次解読しながらの実行となり、相対的にコンパイラ言語に比較して処理速度が低下する。
（２）一旦作成した制御機能部品を、制御内容が僅かに異なる部分に流用したり、再利用することが困難である（開発生産性上の問題点）。
（３）コンパイラ型言語においては、プログラムを動的に変更するのが困難である（オンライン編集上の問題点）。
（４）少し異なる部分に対する改造の影響度を完全に検証するのが困難である（開発品質上の問題点）。
さらに、ＩＥＣ１１３１−３等で定義されるファンクションブロック（ＦＢ）を実行するＰＬＣにおいては、従来以下のような問題点があった。
（５）そのようなシステムは、Ｗｉｎｄｏｗｓ等の汎用ＯＳ上で動作するソフトＰＬＣとして実現されているため、一定時間以内に必ず実行を終えるためのリアルタイム性能を保証できないこと、汎用ＯＳの頻繁なアップデート等に対して、構成ソフトを含めた長期に亘るバージョン維持の負担が大きいこと、と言った問題点が指摘されている。
（６）既存のラダーやＳＦＣのみが動作するハードウェアＰＬＣにおいて、そのソフトやハードの資源を利用できるようなファンクションブロックの実行機能を有するＰＬＣが存在しない。
【０００５】
本発明はこのような従来の問題点に着目してなされたもので、その目的とするところは、例えばプロセス制御上の新たな制御機能部品を処理速度に有利なコンパイラ型言語を用いてユーザ側で容易に作成すること、及び、一旦作成した制御機能部品を制御内容が僅かに異なる部分に流用したり、再利用することが容易であり、さらに、プログラムを動的に変更すること、及び、少し異なる部分に対する改造の影響度を完全に検証することも容易であり、加えて、既存のハードウェアＰＬＣユーザがそのソフト資産を必要な部分のみ必要なときにファンクションブロック化することが可能なＰＬＣを提供することにある。
【０００６】
【課題を解決するための手段】
この出願の請求項１に記載の発明は、オブジェクト指向プログラミング言語により記述された、類似する制御機能部品の代表特性部品であるクラスをライブラリとして登録させた第１の記憶手段と、前記第１の記憶手段にライブラリとして登録させたクラスを基に実動作制御機能部品であるインスタンスを生成するために必要とされるインスタンス生成情報を記憶させた第２の記憶手段と、前記第１の記憶手段にライブラリとして登録されたクラスと前記第２の記憶手段に記憶されたインスタンス生成情報とに基づいて実動作制御機能部品であるインスタンスを生成するインスタンス生成手段と、前記インスタンス生成手段にて生成されたインスタンスを含むユーザプログラムを実行するユーザプログラム実行手段とを備え、前記第２の記憶手段に記憶されたインスタンス生成情報を共通処理、ユーザプログラム実行処理、周辺サービス処理を繰り返す間にサポートツールにより変更可能とし、共通処理、ユーザプログラム実行処理、周辺サービス処理を繰り返す毎に、前記インスタンス生成情報が変更されたかどうかを判定し、変更されたと判定した場合は、対応するインスタンスを生成し、生成された当該インスタンスを含むユープログラムを実行可能とすることを特徴するＰＬＣにある。
【０００７】
この出願の請求項２に記載の発明は、新たに作成されたクラスを第１の記憶手段に登録するためのクラス登録制御手段を有することを特徴とする請求項１に記載のＰＬＣにある。
【０００８】
この出願の請求項３に記載の発明は、第２の記憶手段がサポートツールにより変更可能な入出力メモリやユーザプログラムメモリであることを特徴とする請求項１又は２に記載のＰＬＣにある。
【０００９】
この出願の請求項４に記載の発明は、前記インスタンス生成情報を入出力メモリやユーザプログラムメモリの電源断記憶エリアに格納したことを特徴とする請求項３に記載のＰＬＣにある。
【００１０】
この出願の請求項５に記載の発明は、前記インスタンス生成情報が、インスタンス番号と、引用元クラス番号と、動作タイミング設定と、変数のアドレス情報等の初期設定データと、を含んでいることを特徴とする請求項１〜５のいずれかに記載のＰＬＣにある。
【００１２】
このような構成によれば、次のような作用効果が得られることとなる。
（１）作成された制御機能部品の小変更に関しては、インスタンス生成情報を変更するだけで対応することができる。
（２）ＰＬＣのＩ／Ｏメモリ上に設定されたインスタンス生成情報を変更するだけで、対応するインスタンスを動的に再生成することができる。
（３）既存の制御機能部品と全く相違する新規な制御機能部品が求められている場合にも、オブジェクト指向プログラミング言語であるＣ＋＋言語等で新規にクラスの作成・登録が可能となる。
また、ラダーやＳＦＣプログラム等の実行結果やインスタンス生成における参照情報を入出力メモリに格納するように構成すれば、次のような作用効果が得られることとなる。
（４）ラダープログラムの記述がシンプルなものとなる。例えば、インターロック条件、起動条件、工程遷移等はラダーで記述することにより、ハード周りのデバッグ・保守が容易で、ラダーに詳しい保全担当者にわかりやすいものとなる。
（５）インスタンス生成情報（インスタンス番号、引用元クラス番号、動作タイミング設定、変数のアドレス情報等の初期設定データ）を入出力メモリの電源断記憶エリアに格納すれば、電源断時もラダープログラムに関する情報と合わせて一括してバックアップすることができる。
【００１３】
【発明の実施の形態】
以下に、この発明に係るプログラマブル・コントローラ（ＰＬＣ）の好適な実施の一形態を添付図面に基づいて詳細に説明する。
【００１４】
本発明が適用されたＰＬＣの実施の一形態が図１〜図４に示されている。先に説明したように、本発明のＰＬＣは、オブジェクト指向プログラミング言語により記述された、類似する制御機能部品の代表特性部品であるクラスをライブラリとして登録させた第１の記憶手段と、前記第１の記憶手段にライブラリとして登録させたクラスを基に実動作制御機能部品であるインスタンスを生成するために必要とされるインスタンス生成情報を記憶させた第２の記憶手段と、前記第１の記憶手段にライブラリとして登録されたクラスと前記第２の記憶手段に記憶されたインスタンス生成情報とに基づいて実動作制御機能部品であるインスタンスに変換生成するインスタンス生成手段と、前記インスタンス生成手段にて生成されたインスタンスを含むユーザプログラムを実行するユーザプログラム実行手段と、を具備することを特徴とするものである。
【００１５】
この実施形態では、以上の構成に加えて、さらに、新たに作成されたクラスを第１の記憶手段に登録するためのクラス登録制御手段が設けられている。加えて、第２の記憶手段としては、Ｉ／Ｏメモリが使用されている。さらに、ファンクションブロックのインスタンス生成情報（インスタンス番号、引用元クラス番号、動作タイミング設定、変数のアドレス情報等の初期設定データ）を入出力メモリの電源断記憶エリアに格納している。
【００１６】
このＰＬＣの中核をなすＣＰＵモジュールの内部構成が図１に示されている。同図に示されるように、このＰＬＣのＣＰＵモジュール（一般には、ＣＰＵユニット等とも称される）１は、バスコネクタ２を介してＩ／Ｏユニットや各種高機能端末ユニット等が接続された周辺Ｉ／Ｏバス３に接続が可能に構成されている。また、このＣＰＵモジュール１はシリアルポート４を介してサポートツール５にも接続が可能に構成されている。
【００１７】
ＣＰＵモジュール１内には、該モジュール全体を統括制御するためのマイクロプロセッサユニット（以下、ＭＰＵと言う）１０１と、不揮発性ＲＯＭ１０２と、第１のＲＡＭ１０３と、第２のＲＡＭ１０４と、バスアービタ１０５とが含まれている。
【００１８】
不揮発性ＲＯＭ１０２内には、後述するＣＰＵモジュール１としての機能を実現するためにＭＰＵ１０１にて実行されるべきシステムプログラムが格納されている。加えて、この不揮発性ＲＯＭ１０２内には、類似する制御機能部品（例えば、プロセス制御におけるＰＩＤ演算器、等）の代表特性部品であるクラスがライブラリの形態として格納されている。このライブラリを構成する各制御機能部品であるクラスは、オブジェクト指向プログラミング言語（例えば、Ｃ＋＋言語等）により記述されている。なお、ここで『部品』とは、ソフトウェア部品のことを意味している。
【００１９】
第１のＲＡＭ１０３は所謂ユーザプログラムメモリとして機能するものであり、この第１のＲＡＭ１０３には演算途中結果等を一時記憶させるシステムワーク、並びに、ユーザプログラムが格納される。そして、このユーザプログラムには、本発明に関連して自動生成されたファンクションブロック（インスタンス）のほかに、ユーザが任意作成したラダー図を構成する論理命令（ＬＤ，ＡＮＤ，ＯＲ）等が含まれる。
【００２０】
第２のＲＡＭ１０４は所謂Ｉ／Ｏメモリとして機能するものであり、この第２のＲＡＭ１０４には、不揮発性ＲＯＭ１０２にライブラリとして登録させたクラスを基に実動作制御機能部品であるインスタンスを生成するために必要とされるインスタンス生成情報（インスタンス番号、引用元クラス番号、動作タイミング設定、変数のアドレス情報等の初期設定データ）、周辺Ｉ／Ｏモジュール（周辺Ｉ／Ｏユニットの意）のオンオフ状態、ユーザプログラムで行われたデータ演算結果等が格納される。ここで大切なことは、上記のインスタンス生成情報は、第２のＲＡＭ１０４の電源断記憶エリアに配置されている点である。
【００２１】
バスアービタ１０５は、ＭＰＵ１０１と周辺Ｉ／Ｏとが択一的に第２のＲＡＭ１０４をアクセスする作用を調停するものであり、また周辺Ｉ／Ｏバス３はＣＰＵモジュール１が周辺Ｉ／Ｏモジュールに対してＩ／Ｏリフレッシュする際に使用される。
【００２２】
すなわち、この実施形態に示されるＰＬＣは、ＣＰＵモジュール１と周辺Ｉ／Ｏモジュールとを基本として構成されるものであり、そのうちＣＰＵモジュール１のみが図１に示されている。なお、サポートツール５は、部品クラスの作成や登録、インスタンス生成情報の設定のために使用される。
【００２３】
次に、不揮発性ＲＯＭ１０２に格納されたシステムプログラムについて説明する。システムプログラムの構成を示すフローチャートが図２に示されている。
【００２４】
同図において、電源投入により処理が開始されると、先ず、イニシャル処理が実行されて、各種のハードウェアやメモリの初期化処理が行われる（ステップ２０１）。
【００２５】
このようにしてイニシャル処理（ステップ２０１）が終了すると、続いて、本発明の要部であるインスタンス生成処理（ステップ２０２）が実行される。このインスタンス生成処理（ステップ２０２）では、Ｉ／Ｏメモリとして機能する第２のＲＡＭ１０４からユーザプログラム中に含まれるファンクションブロック（ＦＢ）に対応する全インスタンス生成情報を読み出し、実行指定された全てのインスタンスを生成する処理を実行する（ステップ２０２）。
【００２６】
このインスタンス生成処理の過程が、図３のブロック図に概念的に示されている。同図から明らかなように、このインスタンス生成処理では、制御機能部品のクラスＡを基に、Ｉ／Ｏメモリとして機能する第２のＲＡＭ１０４上の各インスタンス生成情報を参照して、インスタンスＡ１〜Ａ３を生成する。
【００２７】
仮想関数を使用した動的リンク方法が図４に示されている。同図に示されるように、制御部品クラスＡから生成される３個のインスタンスをＡ１，Ａ２，Ａ３とすると、インスタンスＡ１，Ａ２，Ａ３とクラスＡの仮想関数テーブルとの間には、それらのインスタンスＡ１，Ａ２，Ａ３の生成時に動的にポインタが張られる。このようにして、各インスタンスＡ１，Ａ２，Ａ３と関数実体Ｆ１，Ｆ２，Ｆ３とが互いに関係付けられる。部品情報エリア並びに各部品データエリアに関する部品インスタンス生成情報テーブル仕様の具体例を参考のために図５に示す。
【００２８】
図２に戻って、インスタンス生成処理（ステップ２０２）が終了したならば、続いて、共通処理（ステップ２０３）が実行される。この共通処理（ステップ２０３）では、例えば、周辺Ｉ／Ｏバス３を介して図示しない周辺Ｉ／Ｏモジュールにアクセスすることで、Ｉ／Ｏリフレッシュ処理を実行する。なお、当業者には周知のように、このＩ／Ｏリフレッシュ処理においては、周辺Ｉ／Ｏモジュールから取り込んだ入力データをＩ／Ｏメモリの入力領域に書き込む処理、並びに、Ｉ／Ｏメモリの出力領域の出力データを周辺Ｉ／Ｏモジュールへと送出する処理が実行される。
【００２９】
共通処理（ステップ２０３）が終了したならば、続いて、ユーザプログラム実行処理（ステップ２０４）が行われる。このユーザプログラムには、本発明に関連して自動生成されたインスタンスである制御機能部品のほかに、ユーザが任意作成したラダー図を構成する論理命令（ＬＤ，ＡＮＤ，ＯＲ）等のインスタンスが含まれる。そして、このユーザプログラム実行処理（ステップ２０４）では、番号の若い順に有効なインスタンスの実行が行われる。
【００３０】
ユーザプログラム実行処理（ステップ２０４）が終了したならば、続いて、周辺サービス処理（ステップ２０５）が実行される。この周辺サービス処理（ステップ２０５）では、リモートＩ／Ｏモジュールと交信したり、各種の高機能端末ユニットとデータのやり取りを行う等の周辺サービス処理が行われる。
【００３１】
この周辺サービス処理には、シリアルポート４を経由するサポートツール５との交信も含まれる。すなわち、作成された制御機能部品の小変更に関しては、サポートツール５からのデータに基づいて、第２のＲＡＭ１０４上のインスタンス生成情報が変更される。また、既存の制御機能部品と全く相違する新規な制御機能部品が求められている場合にも、サポートツール５を操作して、オブジェクト指向プログラミング言語であるＣ＋＋言語等で、フラッシュＲＯＭ等の不揮発性ＲＯＭ１０２上に新規にクラスの作成・登録が行われる。
【００３２】
以上の処理（ステップ２０３，２０４，２０５）を繰り返す間に（ステップ２０６ＮＯ）、周辺サービス処理（ステップ２０５）にてインスタンス生成情報がサポートツール５からのデータにより変更されると、直ちに動的インスタンス変更有りとの判定がなされて（ステップ２０６ＹＥＳ）、対応するインスタンスは部分的に再生成される（ステップ２０７）。すなわち、ＰＬＣのＩ／Ｏメモリ上に設定されたインスタンス生成情報を変更するだけで、対応するインスタンスを動的に再生成することができる。
【００３３】
部品化のためのラダープログラム記述方法の一例が図６に示されている。同図はラダープログラムからファンクションブロックインスタンス（ＰＩＤ１）に対してＡＵＴＯモードで起動するコマンドを発行する例である。ファンクションブロックの入出力変数名をグローバル変数として名称定義されたタグ名として用いて記述することで、ラダープログラムを抽象化し、部品化・再利用を可能とする。また、タッチパネルやＳＣＡＤＡのタグ名としても利用することができる。
【００３４】
このように、以上説明した本発明ＰＬＣの実施形態においては、クラスの作成・登録やインスタンス生成のための情報設定用サポートツール５と、インスタンス生成のための情報を設定するＩ／Ｏメモリとして機能する第２のＲＡＭ１０４と、インスタンス生成情報を基にクラスからインスタンスを生成するためのファームウェア（不揮発性ＲＯＭ１０２に格納されたシステムプログラム）と、インスタンス生成されたオブジェクトを実行する仕組みを有するファームウェア（不揮発性ＲＯＭ１０２に格納されたシステムプログラム）と、それらのファームウェアを実現するＭＰＵ１０１とを具備したことにより、以下の効果が得られる。
（１）作成された制御機能部品の小変更に関しては、インスタンス生成情報を変更するだけで対応することができる。
（２）ＰＬＣのＩ／Ｏメモリ上に設定されたインスタンス生成情報を変更するだけで、対応するインスタンスを動的に再生成することができる。
（３）既存の制御機能部品と全く相違する新規な制御機能部品が求められている場合にも、オブジェクト指向プログラミング言語であるＣ＋＋言語等で新規にクラスの作成・登録が可能となる。
また、ラダーやＳＦＣプログラム等の実行結果やインスタンス生成における参照情報を入出力メモリに格納するように構成すれば、次のような作用効果が得られることとなる。
（４）ラダープログラムの記述がシンプルなものとなる。例えば、インターロック条件、起動条件、工程遷移等はラダーで記述することにより、ハード周りのデバッグ・保守が容易で、ラダーに詳しい保全担当者にわかりやすいものとなる。
（５）インスタンス生成情報（インスタンス番号、引用元クラス番号、動作タイミング設定、変数のアドレス情報等の初期設定データ）を入出力メモリの電源断記憶エリアに格納すれば、電源断時もラダープログラムに関する情報と合わせて一括してバックアップすることができる。
【００３５】
【発明の効果】
以上の実施形態の説明でも明らかなように、この発明によれば、例えばプロセス制御上の新たな制御機能部品をユーザ側で容易に作成すること、及び、一旦作成した制御機能部品を制御内容が僅かに異なる部分に流用したり、再利用することが容易であり、さらに、プログラムを動的に変更すること、及び、少し異なる部分に対する改造の影響度を完全に検証することも容易であり、加えて、既存のハードウェアＰＬＣユーザがそのソフト資産を必要な部分のみ必要なときにファンクションブロック化することが可能なＰＬＣを提供することができる。
【図面の簡単な説明】
【図１】  本発明が適用されたＰＬＣのＣＰＵモジュールの内部ハードウェア構成を示すブロック図である。
【図２】  不揮発性ＲＯＭに記憶されたシステムプログラムの構成を示すフローチャートである。
【図３】  インスタンス生成過程を概念的に説明するためのブロック図である。
【図４】  仮想関数を使用した動的リンク方法を説明するための図である。
【図５】  部品情報エリア並びに各部品データエリアに関する部品インスタンス生成情報テーブル仕様の具体例を示す図である。
【図６】  部品化のためのラダープログラム記述方法の一例を示す説明図である。
【符号の説明】
１      ＣＰＵモジュール
２      バスコネクタ
３      周辺Ｉ／Ｏバス
４      シリアルポート
５      サポートツール
１０１      ＭＰＵ
１０２      不揮発性ＲＯＭ
１０３      第１のＲＡＭ
１０４      第２のＲＡＭ
【図１】
0003829905.tif 000002
【図２】
0003829905.tif 000003
【図３】
0003829905.tif 000004
【図４】
0003829905.tif 000005
【図５】
0003829905.tif 000006
【図６】
0003829905.tif 000007