(57)【要約】【課題】制御プログラムと又は制御データが変更される場合に、制御プログラムの書き替えが必要となる量を抑え、制御プログラム及び制御データを容易かつ迅速に変更可能とする。【解決手段】本発明の一態様に係る制御装置は、命令コードと論理的変数名とを含む制御プログラムを記憶する制御プログラム記憶手段と、論理的変数名の実体である制御データを記憶する制御データ記憶手段と、論理的変数名を仮アドレスに変換する第１変換手段３３と、仮アドレスを制御データ記憶手段における制御データの記憶領域を表す物理アドレスに変換する第２変換手段３４と、命令コードと物理アドレスに対するアクセス結果とに基づいて制御を実行する演算手段とを具備する。【選択図】      図４
2006018759.tif 000002
【特許請求の範囲】
【請求項１】
命令コードと論理的変数名とを含む制御プログラムを記憶する制御プログラム記憶手段と、
前記論理的変数名の実体である制御データを記憶する制御データ記憶手段と、
前記論理的変数名を、前記論理的変数名に対応する仮アドレスに変換する第１変換手段と、
前記仮アドレスを、前記制御データ記憶手段における前記制御データの記憶領域を表す物理アドレスに変換する第２変換手段と、
前記命令コードと前記物理アドレスに対するアクセス結果とに基づいて制御を実行する演算手段と
を具備する制御装置。
【請求項２】
請求項１記載の制御装置において、
前記制御プログラム記憶手段は、前記制御プログラムに新規の論理的変数名が追加された変更後の制御プログラムを記憶し、
前記制御データ記憶手段は、空き領域に、前記新規の論理的変数名の実体である新規の制御データを記憶し、
前記第１変換手段は、前記新規の論理的変数名を、前記新規の論理的変数名に対応する新規の仮アドレスに変換し、
前記第２変換手段は、前記新規の仮アドレスを、前記制御データ記憶手段における前記新規の制御データの記憶領域を表す新規の物理アドレスに変換し、
前記演算手段は、前記新規の物理アドレスに対するアクセス結果に基づいて制御を実行する
ことを特徴とする制御装置。
【請求項３】
請求項１記載の制御装置において、
前記第２変換手段は、前記仮アドレスによって示される記憶領域に、前記仮アドレスに対応する前記物理アドレスを記憶するアドレス変換メモリであることを特徴とする制御装置。
【請求項４】
命令コードとオフセットアドレスとを含む制御プログラムを記憶する制御プログラム記憶手段と、
前記制御プログラムで使用される制御データを記憶する制御データ記憶手段と、
前記オフセットアドレスと前記制御データ記憶手段における前記制御データに対応する先頭アドレスを示すベースアドレスとに基づいて、前記制御データ記憶手段における前記制御データの記憶領域を表す物理アドレスを求める変換手段と、
前記命令コードと前記物理アドレスに対するアクセス結果とに基づいて制御を実行する演算手段と
を具備する制御装置。
【請求項５】
命令コードと制御変数とを含む制御プログラムを記憶する制御プログラム記憶手段と、
前記制御プログラムで使用される制御データを記憶する制御データ記憶手段と、
前記制御変数を、前記制御変数に対応するオフセットアドレスに変換する第１変換手段と、
前記オフセットアドレスと、前記制御データ記憶手段における前記制御データに対応する先頭アドレスを示すベースアドレスとに基づいて、前記制御データ記憶手段における前記制御データの記憶領域を表す物理アドレスを求める第２変換手段と、
前記命令コードと前記物理アドレスに対するアクセス結果とに基づいて制御を実行する演算手段と
を具備する制御装置。
【請求項６】
請求項５記載の制御装置において、
前記制御変数は、仮オフセットアドレスであり、
前記第１変換手段は、
前記オフセットアドレスを記憶するアドレス変換メモリと、
前記仮オフセットアドレスと、前記アドレス変換メモリにおける前記オフセットアドレスに対応する先頭アドレスを示す仮ベースアドレスとに基づいて、前記アドレス変換メモリをアクセスし、前記仮オフセットアドレスに対応するオフセットアドレスを得る
ことを特徴とする制御装置。
【請求項７】
命令コードと、ベースアドレスと、オフセットアドレスとを含む制御プログラムを記憶する制御プログラム記憶手段と、
前記制御プログラムで使用される制御データを記憶する制御データ記憶手段と、
前記制御データ記憶手段における前記制御データの記憶領域を表す物理アドレスに対応して設定されている前記ベースアドレスと前記オフセットアドレスとに基づいて、前記物理アドレスを求める変換手段と、
前記命令コードと前記物理アドレスに対するアクセス結果とに基づいて制御を実行する演算手段と
を具備する制御装置。
【請求項８】
命令コード、ベースアドレス、オフセットアドレス、新規の制御変数が追加される前から構造体を構成していた制御変数の数と前記構造体に追加された制御変数の数とのうちのいずれかを示す要素数、前記構造体を含む構造体配列のうちで前記構造体を表すためのインデックス値を含む制御プログラムを記憶する制御プログラム記憶手段と、
前記構造体を構成する制御変数の実体である制御データを記憶する制御データ記憶手段と、
前記制御データ記憶手段における前記制御データの記憶領域を表す物理アドレスに対応して設定されている前記ベースアドレス、前記オフセットアドレス、前記要素数、前記インデックス値とに基づいて、前記物理アドレスを求める変換手段と、
前記命令コードと前記物理アドレスに対するアクセス結果とに基づいて制御を実行する演算手段と
を具備する制御装置。
【請求項９】
請求項１乃至請求項８のいずれか１項に記載の制御装置において、
前記制御プログラムは、制御変数の実体をアクセスするために用いる情報を格納するオペランド部をさらに含み、
指定された制御変数の実体であるデータの内容を表示する手段をさらに具備する制御装置。
【請求項１０】
命令コードと論理的変数名とを含む制御プログラムを制御プログラム記憶手段に記憶するとともに、前記論理的変数名の実体である制御データを制御データ記憶手段に記憶し、
前記論理的変数名を、前記論理的変数名に対応する仮アドレスに変換し、
前記仮アドレスを、前記制御データ記憶手段における前記制御データの記憶領域を表す物理アドレスに変換し、
前記命令コードと前記物理アドレスに対するアクセス結果とに基づいて制御を実行する
ことを特徴とする制御方法。
【請求項１１】
命令コードとオフセットアドレスとを含む制御プログラムを制御プログラム記憶手段に記憶するとともに、前記制御プログラムで使用される制御データを制御データ記憶手段に記憶し、
前記オフセットアドレスと前記制御データ記憶手段における前記制御データに対応する先頭アドレスを示すベースアドレスとに基づいて、前記制御データ記憶手段における前記制御データの記憶領域を表す物理アドレスを求め、
前記命令コードと前記物理アドレスに対するアクセス結果とに基づいて制御を実行する
ことを特徴とする制御方法。
【請求項１２】
命令コードと制御変数とを含む制御プログラムを制御プログラム記憶手段に記憶するとともに、前記制御プログラムで使用される制御データを制御データ記憶手段に記憶し、
前記制御変数を、前記制御変数に対応するオフセットアドレスに変換し、
前記オフセットアドレスと、前記制御データ記憶手段における前記制御データに対応する先頭アドレスを示すブースアドレスとに基づいて、前記制御データ記憶手段における前記制御データの記憶領域を表す物理アドレスを求め、
前記命令コードと前記物理アドレスに対するアクセス結果とに基づいて制御を実行する
ことを特徴とする制御方法。
【請求項１３】
命令コードとベースアドレスとオフセットアドレスとを含む制御プログラムを制御プログラム記憶手段に記憶するとともに、前記制御プログラムで使用される制御データを制御データ記憶手段に記憶し、
前記制御データ記憶手段における前記制御データの記憶領域を表す物理アドレスに対応して設定されている前記ベースアドレスと前記オフセットアドレスとに基づいて、前記物理アドレスを求め、
前記命令コードと前記物理アドレスに対するアクセス結果とに基づいて制御を実行する
ことを特徴とする制御方法。
【請求項１４】
命令コード、ベースアドレス、オフセットアドレス、新規の制御変数が追加される前から構造体を構成していた制御変数の数と前記構造体に追加された制御変数の数とのうちのいずれかを示す要素数、前記構造体を含む構造体配列のうちで前記構造体を表すためのインデックス値を含む制御プログラムを制御プログラム記憶手段に記憶するとともに、前記構造体を構成する制御変数の実体である制御データを制御データ記憶手段に記憶し、
前記制御データ記憶手段における前記制御データの記憶領域を表す物理アドレスに対応して設定されている前記ベースアドレス、前記オフセットアドレス、前記要素数、前記インデックス値とに基づいて、前記物理アドレスを求め、
前記命令コードと前記物理アドレスに対するアクセス結果とに基づいて制御を実行する
ことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御プログラムにしたがって産業用システムを制御する制御装置及び方法に関する。
【背景技術】
【０００２】
例えば、鉄鋼プラント、製紙プラント、自動車の組み立てなどに用いられるＦＡ（Factory Automation）、化学プラントなどに用いられるＰＡ（Process Automation）、上下水道システムを含む公共システムなどのような各種産業用システムは、制御装置を使用して制御される。
【０００３】
図２２は、従来の制御装置の一例を示すブロック図である。
【０００４】
制御装置１の一例としては、プログラマブルコントローラなどがある。制御装置１は、データを入出力モジュール２経由で制御対象３に提供する。また、入出力モジュール２は、制御対象３から受け付けたデータを制御装置１に提供する。制御対象３からのデータは、入出力モジュール２、Ｉ／Ｏインタフェース４、バス５経由で、例えば制御データメモリ６に記憶される。また、例えば制御データメモリ６に記憶されているデータは、バス５、Ｉ／Ｏインタフェース４、入出力モジュール２経由で、制御対象３に提供される。
【０００５】
ＣＰＵ（Central Processing Unit）７は、制御プログラムメモリ８に記憶されている制御プログラム８ａに含まれている命令語にしたがって、制御データメモリ６に対するアクセスを行うとともに、制御処理を実行する。すなわち、ＣＰＵ７は、制御処理を実行し、制御データメモリ６からの制御データの読み出し又は制御データメモリ６への制御データの書き込みを行う。
【０００６】
これにより、制御装置１の制御処理が実行される。制御装置１は、モニタ装置９から通信インタフェース１０により各種命令を受け付ける。
【０００７】
制御装置１には、ＣＰＵ７、制御プログラムメモリ８、Ｉ／Ｏインタフェース４、制御データメモリ６、通信インタフェース１０の他にも、プログラムメモリ１１、データメモリ１２を具備するとしてもよい。制御装置１内の各部分間では、バス５経由でプログラム及び各種データがやり取りされる。
【０００８】
図２３は、制御プログラムメモリ８の内容と制御データメモリ６の内容の一例を示すブロック図である。
【０００９】
制御プログラムメモリ８に記憶されている制御プログラム８ａは命令語１３を含む。命令語１３は、命令コード（ＯＰコード）を格納する命令コード部１３ａと命令コードにしたがってアクセスを行うアクセス先を格納するオペランド部１３ｂとから構成される。オペランド部１３ｂには、通常、制御データの物理アドレスが格納される。
【００１０】
一般的に、ＣＰＵ７は、命令語１３に格納されている物理アドレスにしたがって、制御データ１４をアクセスする。このように、命令語１３のオペランド部１３ｂに物理アドレスを格納することにより、制御プログラム８ａ実行時の処理を簡略化することが可能である。
【００１１】
従来のプログラマブルコントローラとして、命令語のオペランド部に変数名を格納する技術がある（例えば特許文献１参照）。
【特許文献１】特願平１１−１９６４５７号
【発明の開示】
【発明が解決しようとする課題】
【００１２】
命令語１３のオペランド部１３ｂに物理アドレスが格納されている制御装置１では、制御プログラム８ａの変更に伴って制御データの変更（追加、挿入、削除、移動）が発生した場合に、制御プログラム８ａの各オペランド部１３ｂに格納されている物理アドレスを大幅に書き替える必要があり、労力及び時間がかかる。
【００１３】
特に、制御プログラム８ａが変更され、命令語の間に新たな命令語が挿入される場合又は制御データ群の間に新たな制御データが挿入される場合は、制御プログラム８ａ又は制御データにおいて書き替えが必要となる部分が多くなる。
【００１４】
そのため、制御プログラム８ａを変更する場合、一般的には、制御プログラム８ａの実行を長時間停止状態とし、制御プログラム８ａにおけるオペランド部１３ｂの内容の書き替え作業が行われる。
【００１５】
図２４は、制御プログラム８ａが変更された場合の制御プログラムメモリ８の記憶状態の変化例を示すブロック図である。
【００１６】
制御プログラム８ａが制御プログラム１５に変更された場合、一般的に、変更後の制御プログラム１５は、制御プログラムメモリ８の空き領域であり変更前の制御プログラム８ａと別の記憶領域に記憶される。
【００１７】
このように、従来では、制御プログラム８ａを変更すると変更前と後とで記憶領域も変更されるため、制御プログラム８ａを実行させながら制御プログラム８ａを変更させることは困難である。
【００１８】
図２５は、制御プログラム８ａの変更に伴う制御データメモリ６の記憶状態の変化例を示すブロック図である。
【００１９】
制御プログラム８ａから制御プログラム１５に変更された場合に、制御に利用されるデータも制御データ１６から制御データ１７に変更される。従来においては、変更後の制御データ１７は、制御データメモリ６の空き領域であり変更前の制御データ１６と別の記憶領域に記憶される。
【００２０】
このため、制御プログラム１５のオペランド部には、変更後の制御データ１７を示す物理アドレスが格納されるように、制御プログラム１５を書き替える必要がある。物理アドレスの変化した制御データの数が多くなるほど、制御プログラムの書き替えが必要となる量も多くなる。
【００２１】
以上のように、従来においては、制御プログラム８ａ実行中に制御プログラム８ａを変更することは困難であり、また制御プログラム８ａの変更に時間及び労力がかかるという問題がある。
【００２２】
特に、命令語１３のオペランド部１３ｂに物理アドレスが格納されている場合には、制御データの記憶領域が移動すると、各命令語１３のオペランド部１３ｂに格納されている各物理アドレスを書き替える必要がある。
【００２３】
上記特許文献１では、命令語に対して変数名が用いられるが、例えば制御プログラムに新たに変数が追加、挿入、削除されるなどのような、制御プログラムに対して変更が行われる場合については特に考慮されていない。
【００２４】
本発明は、以上のような実情に鑑みてなされたもので、制御プログラムの変更に伴って制御データの追加、挿入、削除などの変更がある場合であっても、制御プログラムの書き替えが必要となる量を抑え、制御プログラム及び制御データを容易かつ迅速に変更可能な制御装置及び方法を提供することを目的とする。
【課題を解決するための手段】
【００２５】
本発明を実現するにあたって講じた具体的手段について以下に説明する。
【００２６】
第１の例として、上記課題は、命令コードと論理的変数名とを含む制御プログラムを記憶する制御プログラム記憶手段と、論理的変数名の実体である制御データを記憶する制御データ記憶手段と、論理的変数名を、論理的変数名に対応する仮アドレスに変換する第１変換手段と、仮アドレスを、制御データ記憶手段における制御データの記憶領域を表す物理アドレスに変換する第２変換手段と、命令コードと物理アドレスに対するアクセス結果とに基づいて制御を実行する演算手段とを具備する制御装置により解決される。
【００２７】
第２の例として、上記課題は、命令コードとオフセットアドレスとを含む制御プログラムを記憶する制御プログラム記憶手段と、制御プログラムで使用される制御データを記憶する制御データ記憶手段と、オフセットアドレスと制御データ記憶手段における制御データに対応する先頭アドレスを示すベースアドレスとに基づいて、制御データ記憶手段における制御データの記憶領域を表す物理アドレスを求める変換手段と、命令コードと物理アドレスに対するアクセス結果とに基づいて制御を実行する演算手段とを具備する制御装置により解決される。
【００２８】
第３の例として、上記課題は、命令コードと制御変数とを含む制御プログラムを記憶する制御プログラム記憶手段と、制御プログラムで使用される制御データを記憶する制御データ記憶手段と、制御変数を、制御変数に対応するオフセットアドレスに変換する第１変換手段と、オフセットアドレスと制御データ記憶手段における制御データに対応する先頭アドレスを示すベースアドレスとに基づいて制御データ記憶手段における制御データの記憶領域を表す物理アドレスを求める第２変換手段と、命令コードと物理アドレスに対するアクセス結果とに基づいて制御を実行する演算手段とを具備する制御装置により解決される。
【００２９】
第４の例として、上記課題は、命令コードと、ベースアドレスと、オフセットアドレスとを含む制御プログラムを記憶する制御プログラム記憶手段と、制御プログラムで使用される制御データを記憶する制御データ記憶手段と、制御データ記憶手段における制御データの記憶領域を表す物理アドレスに対応して設定されているベースアドレスとオフセットアドレスとに基づいて物理アドレスを求める変換手段と、命令コードと物理アドレスに対するアクセス結果とに基づいて制御を実行する演算手段とを具備する制御装置により解決される。
【００３０】
第５の例として、上記課題は、命令コード、ベースアドレス、オフセットアドレス、新規の制御変数が追加される前から構造体を構成していた制御変数の数と構造体に追加された制御変数の数とのうちのいずれかを示す要素数、構造体を含む構造体配列のうちで構造体を表すためのインデックス値を含む制御プログラムを記憶する制御プログラム記憶手段と、構造体を構成する制御変数の実体である制御データを記憶する制御データ記憶手段と、制御データ記憶手段における制御データの記憶領域を表す物理アドレスに対応して設定されているベースアドレス、オフセットアドレス、要素数、インデックス値とに基づいて物理アドレスを求める変換手段と、命令コードと物理アドレスに対するアクセス結果とに基づいて制御を実行する演算手段とを具備する制御装置により解決される。
【発明の効果】
【００３１】
本発明においては、制御プログラムの変更に伴って制御データの追加、挿入、削除などの変更がある場合に、制御プログラム及び制御データの変更部分の数を抑えることができ、制御プログラム及び制御データの変更を容易かつ迅速に行うことができ、制御プログラムの処理を継続させつつ制御プログラムを変更できる。
【発明を実施するための最良の形態】
【００３２】
以下、図面を参照しながら本発明の実施の形態について説明する。なお、上記図２２及び以下の各図において同様の部分については同様の符号を付して説明を省略する。
【００３３】
（第１の実施の形態）
本実施の形態では、制御プログラムの命令語におけるオペランド部に論理的変数名を格納させることにより、制御プログラムについて制御変数が追加、挿入、削除等されるような変更を迅速に実現可能とする制御装置について説明する。
【００３４】
本実施の形態では、論理的変数名を用いたプログラミングを可能とし、制御プログラムに含まれる論理的変数名を自動的に制御データメモリの物理アドレスに変換し、制御データへのアクセスを行う。
【００３５】
また、本実施の形態では、論理的変数名の追加、挿入、削除などの変更が発生した場合に、変更された部分についての論理的変数名と追加された部分に用いられる制御データの記憶されている物理アドレスとの対応関係を記憶し、変更されていない部分については変更されていない部分に用いられる制御データをそのまま継続使用可能とする。これにより、制御プログラムの変更部分を少なくすることができ、制御プログラムが変更された場合でもこの制御プログラムを連続して実行可能となる。
【００３６】
図１は、本実施の形態に係る制御装置の一例を示すブロック図である。
【００３７】
制御装置１８は、制御プログラム実行回路１９、制御プログラムメモリ８、制御データメモリ６、Ｉ／Ｏインタフェース４、通信インタフェース１０を具備する。また、制御装置１８は、ＣＰＵ７、プログラムメモリ１１、データメモリ１２を具備するとしてもよい。
【００３８】
制御装置１８内部では、バス５経由で各構成要素の間の制御プログラム及びデータのやり取りが行われる。制御装置１８の一例としては、プログラマブルコントローラなどがある。
【００３９】
制御プログラム実行回路１９としては、例えばマイクロプロセッサ、中央処理装置などが用いられる。
【００４０】
制御プログラム実行回路１９は、制御プログラムメモリ８から制御プログラム２０の命令語を順次読み出し、この命令語のオペランド部に格納されている論理的変数名を物理アドレスに変換し、この物理アドレスにしたがって制御データメモリ６に対する制御データの読み出し又は書き込みを実行する。
【００４１】
そして、制御プログラム実行回路１９は、制御プログラム２０の命令語に基づいて実行された処理結果を示すデータをＩ／Ｏインタフェース４経由で入出力モジュール２に提供し、あるいは処理結果を示すデータを制御データメモリ６に書き込む。
【００４２】
これにより、制御装置１８による制御処理が実行される。制御装置１８は、通信インタフェース１０によりモニタ装置２１から各種命令を受け付ける。
【００４３】
図２は、制御プログラム２０に含まれている命令語の一例を示すブロック図である。
【００４４】
命令語２２は、命令コード部２２ａとオペランド部２２ｂとを具備する。本実施の形態において、オペランド部２２ｂには、制御データメモリ６の物理アドレスではなく、例えばＡＳＣＩＩコードなどで表現された論理的変数名が格納される。
【００４５】
図３は、制御プログラム実行回路１９の一例を示すブロック図である。
【００４６】
制御プログラム実行回路１９は、データバッファ２３、データレジスタ２４、命令レジスタ２５、命令デコーダ２６、演算部２７、ワークレジスタ２８、アドレス変換部２９、命令カウンタ３０、アドレスバッファ３１、バス制御部３２を具備する。
【００４７】
データバッファ２３は、制御プログラムメモリ８から読み出された命令語を記憶する。また、データバッファ２３は、制御データメモリ６から読み出された制御データを記憶する。また、データバッファ２３は、演算部２７による処理によって得られ、制御データメモリ６に書き込まれる制御データを、データレジスタ２４経由で受け付け、記憶する。
【００４８】
すなわち、このデータバッファ２３は、制御プログラムメモリ８から読み出された命令語、制御データメモリ６から読み出された制御データ、制御プログラム実行回路１９から制御データメモリ６に書き込まれる制御データを一時記憶する。
【００４９】
命令レジスタ２５は、制御プログラムメモリ８から読み出された命令語を、データバッファ２３経由で受け付け、記憶する。
【００５０】
命令デコーダ２６は、命令レジスタ２５に記憶されている命令語をデコードし、演算部２７に提供する。
【００５１】
演算部２７は、データレジスタ２４に記憶されている制御データを用いて、命令デコーダ２６から受け付けたデコード後の命令語にしたがって制御処理を実行する。演算部２７は、制御処理を実行する場合にワークレジスタ２８を用いる場合もある。
【００５２】
データレジスタ２４は、制御データメモリ６から読み出された制御データを、データバッファ２３経由で受け付け、記憶する。また、データレジスタ２４は、演算部２７による処理によって得られ、制御データメモリ６に書き込まれる制御データを記憶する。このデータレジスタ２４に記憶されており制御データメモリ６に書き込まれる制御データは、その後データバッファ２３経由で、制御データメモリ６に記憶される。
【００５３】
アドレス変換部２９は、命令レジスタ２５に記憶されている命令語のオペランド部に格納されている論理変数名を、制御データメモリ６の物理アドレスに変換し、アドレスバッファ３１に提供する。
【００５４】
アドレスバッファ３１は、アドレス変換部２９によって得られた物理アドレスを記憶する。このアドレス変換部２９に記憶されている物理アドレスにしたがって、制御データメモリ６からの制御データの読み出し、又はデータバッファ２３に記憶されている制御データの制御データメモリ６への書き込みが行われる。
【００５５】
命令カウンタ３０は、制御プログラム２０の実行順序を制御する。
【００５６】
バス制御部３２は、他の構成要素からバス５を経由して行われる命令語又は制御データのやり取りを制御する。このバス制御部３２による制御により、制御プログラムメモリ８からバス５経由で命令語が受け付けられ、データバッファ２３に記憶される。また、バス制御部３２による制御により、アドレスバッファ３１に記憶されている物理アドレスで示され制御データメモリ６の記憶領域からバス５経由で制御データが受け付けられ、データバッファ２３に記憶される。また、バス制御部３２による制御により、アドレスバッファ３１に記憶されている物理アドレスで示される制御データメモリ６の記憶領域に、データバッファ２３に記憶されている制御データが書き込まれる。
【００５７】
上述したように、本実施の形態に係る制御プログラム実行回路１９は、制御プログラムメモリ８から命令語を読み出し、この命令語のオペランド部に格納されている論理的変数名を変換して制御データメモリ６に対するアクセスを行う。
【００５８】
制御プログラム実行回路１９では、命令レジスタ２５に記憶された命令語のオペランド部の内容がそのまま制御データメモリ６へのアクセスに使用されるのではなく、命令レジスタ２５に記憶された命令語のオペランド部の内容がアドレス変換部２９を用いて制御データメモリ６の物理アドレスに変換され、制御データメモリ６へのアクセスに使用される。
【００５９】
図４は、アドレス変換部２９の一例を示すブロック図である。
【００６０】
アドレス変換部２９は、変換部３３、アドレス変換メモリ３４を具備する。
【００６１】
変換部３３は、命令レジスタ２５から受け付けた論理的変数名を、例えばＣＲＣ（Cyclic Redundancy Check）演算法などで用いられる多項式を使用して定長の仮アドレスに変換し、この仮アドレスをアドレス変換メモリ３４に与える。
【００６２】
なお、論理的変数名から仮アドレスへの変換は、多項式を用いて行われる手法に限定されるのではなく、例えば、予め定義されている変換ルールを用いて行われるとしてもよい。
【００６３】
アドレス変換メモリ３４は、例えば、各仮アドレスで表される記憶領域に、各仮アドレスに対応する制御データメモリ６の物理アドレスを記憶する。
【００６４】
アドレス変換メモリ３４は、変換部３３から与えられた仮アドレスに対応する物理アドレスを例えばアドレスバッファ３１などのアドレス提供先に提供する。
【００６５】
図５は、本実施の形態に係る制御装置１８による制御処理の一例を示すフローチャートである。
【００６６】
ステップＳ１において、アドレス変換メモリ３４は、仮アドレスの示す記憶領域に、この仮アドレスに対応する制御データメモリ６の物理アドレスを記憶する。なお、この時点で、制御プログラムメモリ８には、論理的変数名を含む制御プログラム２０が記憶されており、制御データメモリ６には、論理的変数名で表される制御変数の実体である制御データが記憶されているとする。
【００６７】
ステップＳ２において、変換部３３は、制御プログラム２０が実行されると、制御プログラム２０に含まれている論理的変数名を仮アドレスに変換する。
【００６８】
ステップＳ３において、アドレス変換メモリ３４は、仮アドレスを制御データメモリ６における記憶領域を表す物理アドレスに変換する。
【００６９】
ステップＳ４において、演算部２７は、制御プログラム２０に含まれている命令コードと物理アドレスに対するアクセス結果とに基づいて制御を実行する。
【００７０】
以下に、制御プログラム２０に新規の論理変数名が追加された場合について説明する。
【００７１】
制御プログラム２０に新規の論理的変数名が追加され制御プログラムメモリ８に記憶された場合、この新規の論理変数名の実体である新規の制御データが制御データメモリ６に記憶される。
【００７２】
新規の論理的変数名は、新規の仮アドレスに変換される。そして、アドレス変換メモリ３４における新規の仮アドレスの示す記憶領域に、制御データメモリ６における新規の制御データの記憶領域を示す新規の物理アドレスが記憶される。
【００７３】
制御プログラム２０の変更後にもそのまま用いられる論理的変数名は、制御プログラム２０変更後であってもそのまま継続して使用可能であり、この変更後にもそのまま用いられる論理的変数名に対応するアドレス変換メモリ３４及び制御データメモリ６の内容についてもそのまま使用可能である。
【００７４】
制御プログラム２０の変更後においては、制御プログラムメモリ８は、新規の論理的変数名を含む変更後の制御プログラムを記憶する。
【００７５】
また、制御データメモリ６は、空き領域に、新規の論理的変数名の実体である新規の制御データを記憶する。
【００７６】
変換部３３、新規の論理的変数名を新規の仮アドレスに変換する。
【００７７】
アドレス変換メモリ３４は、新規の仮アドレスを、新規の制御データの記憶領域を表す新規の物理アドレスに変換する。
【００７８】
演算部２７は、新規の物理アドレスに対応するアクセス結果に基づいて制御を実行する。
【００７９】
本実施の形態では、仮アドレスと物理アドレスとが対応付けられており、この対応関係を用いてアクセス先の物理アドレスが得られるため、論理的変数名を用いて制御プログラム２０を作成することができる。
【００８０】
図６は、新規の論理的変数名が追加された状態の一例を示すブロック図である。
【００８１】
新規の論理的変数名が追加された制御プログラム２０においては、図６に示すように、変更のない部分の制御プログラム、変更のない部分における仮アドレスと物理アドレスとの対応関係、変更のない部分の制御データは変更前の状態でそのまま利用することができる。
【００８２】
制御プログラム２０の変更部分については、新規の仮アドレスと新規の物理アドレスの対応関係がアドレス変換メモリ３４に新たに記憶される。また、制御データメモリ６における新規の物理アドレスの示す記憶領域に、新規の制御データが記憶される。
【００８３】
したがって、制御プログラム２０における論理的変数名の追加が発生した場合であっても、制御プログラム２０の変更のない部分については変更前の状態をそのまま用いることができ、変更に必要な労力と時間を削減できる。また、制御データについても制御プログラム２０の変更のない部分に対応する制御データは変更前の状態をそのまま用いることができ、変更に必要な労力と時間を削減できる。
【００８４】
また、本実施の形態では、制御プログラム２０が論理的変数名を用いて記載されているため、制御データメモリ６において制御データの記憶領域が変更された場合であっても、アドレス変換メモリ３４の内容を書き替えるのみでよく、制御プログラム２０の内容を書き替える必要はない。
【００８５】
すなわち、本実施の形態では、制御プログラム２０における論理的変数名の変更がある場合や制御データの変更がある場合に、制御プログラム及び制御データの変更部分の数を抑えることができ、制御プログラム及び制御データの変更を容易かつ迅速に行うことができる。そして、変更前と変更後とで使用可能な共通部分が増えるため、制御プログラム２０又は制御データの変更を行う場合であっても、制御プログラム２０の動作を継続させることができる。
【００８６】
（第２の実施の形態）
本実施の形態では、制御プログラムメモリに記憶されている制御プログラムが少なくとも一つのプログラム構成単位を含む。以下、プログラム構成単位とは、IEC 61131-3でいうＰＯＵ（Program Organization Unit）であり、例えばファンクションブロック又はファンクションであるとして説明する。
【００８７】
本実施の形態では、ＰＯＵで使用される制御データメモリの先頭アドレスをベースアドレスとし、ＰＯＵで使用される制御データメモリの先頭アドレスからのオフセットアドレス（オフセット値）が命令語のオペランド部に格納され、ＰＯＵで使用される制御データメモリの記憶領域が変更された場合であっても、制御プログラムの変更を不要とする制御装置について説明する。
【００８８】
図７は、本実施の形態に係る制御装置の一例を示すブロック図である。この図７では、制御装置の構成要素のうち、制御プログラムメモリ８、制御プログラム実行回路３５、制御データメモリ６、バス５のみが図示されており、他の構成要素については省略している。
【００８９】
制御プログラムメモリ８には、ＰＯＵ３６を含む制御プログラムが記憶されている。ＰＯＵ３６に含まれている命令語３７のオペランド部３７ｂには、このＰＯＵ３６で使用される制御データ３８に対応する先頭アドレスを示すベースアドレスからのオフセットアドレスが格納される。
【００９０】
例えば、ＰＯＵ３６の命令語のオペランド部３７ｂに格納されているオフセットアドレスとＰＯＵ３６におけるベースアドレスとを合成することにより、この命令語に応じてアクセスされる制御データメモリ６における制御データの物理アドレスが求められる。
【００９１】
ベースアドレスレジスタ３９は、ＰＯＵ３６のベースアドレスを記憶する。例えば、ベースアドレスは、演算部４０によって演算され、ベースアドレスレジスタ３９に設定される。また、ベースアドレスは、演算部４０からアドレス変換部４１に直接提供されるとしてもよい。
【００９２】
演算部４０は、ＰＯＵ３６で使用される制御データ３８の記憶領域が変更された場合、変更後の制御データ３８の先頭アドレスを求め、この先頭アドレスをベースアドレスとして設定する。
【００９３】
アドレス変換部４１は、命令語のオペランド部３７ｂに格納されているオフセットアドレスと、ベースアドレスとの和を物理アドレスとし、この物理アドレスをアドレスバッファ３１に提供する。
【００９４】
このアドレス変換部４１は、命令レジスタ２５からオフセットアドレスを受け付けるとしてもよく、命令デコーダ２６による命令語のデコード後、演算部４０を経由して、オフセットアドレスを受け付けるとしてもよい。
【００９５】
図８は、ＰＯＵ３６で使用される制御データ３８の記憶領域が変更された場合の例を示すブロック図である。
【００９６】
この図８に示すように、例えば制御プログラムのうちＰＯＵ３６ではない部分が変更され、制御データメモリ６においてＰＯＵ３６で使用される制御データ３８の記憶領域が変更された場合であっても、ＰＯＵ３６における各命令語のオペラント部３７ｂの内容は変更させる必要はなく、ベースアドレスのみを変更させればよい。
【００９７】
図９は、本実施の形態に係る制御装置による制御処理の一例を示すフローチャートである。
【００９８】
ステップＴ１において、演算部４０は、ＰＯＵ３６で使用される制御データ３８の先頭アドレスをベースアドレスとしてベースアドレスレジスタ３９に設定する。
【００９９】
ステップＴ２において、アドレス変換部４１は、ＰＯＵ３６に含まれているオフセットアドレスとベースアドレスとを合成し、物理アドレスを求める。
【０１００】
ステップＴ３において、演算部２７は、ＰＯＵ３６に含まれている命令コードと物理アドレスに対するアクセス結果とに基づいて制御を実行する。
【０１０１】
以上説明したように、本実施の形態では、制御データメモリ６に記憶されておりＰＯＵ３６で使用される制御データ３８の記憶領域が変更された場合であっても、記憶領域変更後の制御データの先頭アドレスを新規のベースアドレスとして設定するのみでよい。
【０１０２】
これにより、制御プログラム及び制御データの変更部分の数を抑えることができ、制御プログラム及び制御データの変更を容易かつ迅速に行うことができる。
【０１０３】
また、制御プログラム実行中に制御データの記憶領域を変更させる場合であっても、制御プログラムのオペランドの内容を書き替える必要がないため、制御プログラムの実行を維持しつつ、制御データの記憶領域を変更させることができる。
【０１０４】
なお、本実施の形態において、ＰＯＵ３６におけるオフセットアドレスは、論理的変数名で記載されており、上記第１の実施の形態と同様の変換により、オフセットアドレスを求めるとしてもよい。
【０１０５】
（第３の実施の形態）
本実施の形態においては、上記第１及び第２の実施の形態を組み合わせた制御装置について説明する。
【０１０６】
本実施の形態では、ＰＯＵに含まれる命令語のオペランド部に、仮オフセットアドレスが格納されており、この仮オフセットアドレスと仮ベースアドレスとによりオフセットアドレスへの変換が行われ、このオフセットアドレスとベースアドレスとに基づいて物理アドレスへの変換が行われる。本実施の形態では、制御データメモリにおける制御データの物理アドレスが変更された場合であっても、制御プログラムの変更を不要とする。
【０１０７】
また、同一のＰＯＵがそれぞれ異なる制御プログラムで使用される場合に、異なる制御プログラム毎に、異なるベースアドレスを用いることで、異なる記憶領域をアクセスすることができる。
【０１０８】
図１０は、本実施の形態に係る制御装置の一例を示すブロック図である。
【０１０９】
この図１０では、制御装置の構成要素のうち、制御プログラムメモリ８、制御プログラム実行回路４２、制御データメモリ６、バス５のみが図示されており、他の構成要素については省略している。
【０１１０】
制御プログラムメモリ８には、ＰＯＵ４３を含む制御プログラムが記憶されている。ＰＯＵにおける命令語４４のオペランド部４４ｂには、制御変数が格納されている。本実施の形態では、制御変数として、仮オフセットアドレスが用いられるとする。
【０１１１】
制御データメモリ６は、ＰＯＵ４３で使用される制御データ４５を記憶する。
【０１１２】
アドレス変換部４６は、仮オフセットアドレスを変換し、制御データメモリ６における制御データ４５の記憶領域を表す物理アドレスを求める。
【０１１３】
図１１は、アドレス変換部４６の一例を示すブロック図である。
【０１１４】
アドレス変換部４６は、第１変換部４７、アドレス変換メモリ４８、第２変換部４９を具備する。
【０１１５】
アドレス変換メモリ４８は、制御データメモリ６における制御データ４５に対応する先頭アドレスを示すベースアドレスを用いて、制御データメモリ６における制御データ４５の物理アドレスを求めるためのオフセットアドレスを記憶する。
【０１１６】
ＰＯＵ４３のオペランド部４４ｂには、アドレス変換メモリ４８におけるオフセットアドレスに対応する先頭アドレスを示す仮ベースアドレスを用いて、アドレス変換メモリ４８におけるオフセットアドレスの記憶領域を示す仮アドレスを求めるための仮オフセットアドレスが格納される。
【０１１７】
第１変換部４７は、仮ベースアドレスと仮オフセットアドレスとを合成して、アドレス変換メモリ４８における仮アドレスを求め、この仮アドレスをアドレス変換メモリ４８に与え、オフセットアドレスを求める。
【０１１８】
アドレス変換メモリ４８は、第１変換部４７から与えられた仮アドレスに対応するオフセットアドレスを第２変換部４９に提供する。このアドレス変換メモリ４８は、例えば、各仮アドレスに対応する各オフセットアドレスを記憶する。
【０１１９】
第２変換部４９は、ベースアドレスレジスタ３９に記憶されているベースアドレスとアドレス変換メモリ４８から受け付けたオフセットアドレスとを合成して物理アドレスを作成し、物理アドレスを例えばアドレスバッファ３１などのアドレス提供先に提供する。
【０１２０】
図１２は、本実施の形態に係る制御装置による制御処理の一例を示すフローチャートである。
【０１２１】
ステップＵ１において、アドレス変換メモリ４８は、仮アドレスの示す記憶領域に、この仮アドレスに対応するオフセットアドレスを記憶する。なお、この時点で、制御プログラムメモリ８には、仮オフセットアドレスを含む制御プログラムが記憶されており、制御データメモリ６には、この仮オフセットアドレスで表される変数の実体である制御データ４５が記憶されているとする。
【０１２２】
ステップＵ２において、演算部４０は、ＰＯＵ４３で使用される制御データ４５に対応する先頭アドレスをベースアドレスとしてベースアドレスレジスタ３９に設定する。
【０１２３】
ステップＵ３において、第１変換部４７は、ＰＯＵ４３における仮オフセットアドレスと、アドレス変換メモリ４８に記憶されているオフセットアドレスに対応する先頭アドレスを示す仮ベースアドレスとを合成し、仮アドレスを求める。
【０１２４】
ステップＵ４において、アドレス変換メモリ４８は、仮アドレスをオフセットアドレスに変換する。
【０１２５】
ステップＵ５において、第２変換部４９は、オフセットアドレスと、ベースアドレスレジスタ３９に設定されているベースアドレスとを合成し、物理アドレスを求める。
【０１２６】
ステップＵ６において、演算部４０は、命令コードと物理アドレスに対するアクセス結果とに基づいて制御を実行する。
【０１２７】
以上のような制御装置の動作について以下で説明する。
【０１２８】
本実施の形態では、ＰＯＵ４３に使用される制御データ４５に対応する先頭アドレスがベースアドレスとして用いられる。
【０１２９】
また、ＰＯＵ４３における命令語４４のオペランド部４４ｂには、仮オフセットアドレスが格納されており、この仮オフセットアドレスがオフセットアドレスに変換される。そして、オフセットアドレスとベースアドレスとが合成され、制御データ４５をアクセスするために用いる物理アドレスが得られる。
【０１３０】
本実施の形態において、例えば、制御プログラムメモリ８におけるＰＯＵ４３の記憶領域が変更された場合であっても、ＰＯＵ４３の内容及び制御データ４５に変更を行う必要がない。
【０１３１】
また、例えば、制御データメモリ６における制御データ４５の記憶領域が変更された場合であっても、変更後の記憶領域に対応する変更後のオフセットアドレスを設定するのみでよく、ＰＯＵ４３及びアドレス変換メモリ４８の記憶内容を変更する必要がない。
【０１３２】
図１３は、ＰＯＵ４３が変更され、新規の仮オフセットアドレスが追加された状態の一例を示すブロック図である。
【０１３３】
ＰＯＵ４３が変更され、このＰＯＵ４３に新規の仮オフセットアドレスが追加された場合、ＰＯＵ４３のうち変更のない部分、アドレス変換メモリ４８に記憶されている内容のうちＰＯＵ４３の変更のない部分に対応する部分、ＰＯＵ４３の変更のない部分で使用される制御データは変更前の状態でそのまま利用することができる。
【０１３４】
また、ＰＯＵ４３に新規の仮オフセットアドレスが追加された場合、制御データメモリ６は、空き領域であった新規の物理アドレスの示す記憶領域に、このＰＯＵ４３の変更部分に対応する新規の制御データを記憶する。
【０１３５】
また、アドレス変換メモリ４８は、空き領域であった新規の仮アドレスの示す記憶領域に、新規のオフセットアドレスを記憶する。
【０１３６】
ＰＯＵ４３が変更されたために追加された新規の制御データにアクセスする場合、まず、第１変換部４７は、ＰＯＵ４３に含まれている新規の仮アドレスと仮ベースアドレスとに基づいて、新規の仮アドレスを求める。
【０１３７】
次に、アドレス変換メモリ４８は、新規の仮アドレスの示す記憶領域に記憶されている新規のオフセットアドレスを第２変換部４９に与える。
【０１３８】
そして、第２変換部４９は、新規のオフセットアドレスとベースアドレスとに基づいて、新規の制御データの記憶されている記憶領域を示す新規の物理アドレスを求める。
【０１３９】
以上説明した本実施の形態では、ＰＯＵ４３に仮オフセットアドレス（制御変数）が追加された場合であっても、ＰＯＵ４３の変更のない部分及びＰＯＵ４３の変更のない部分に使用される制御データについては変更前の状態をそのまま用いることができ、変更に必要な労力と時間を削減できる。
【０１４０】
ＰＯＵ４３において変更された部分については、その変更部分に応じてアドレス変換メモリ４８に新規の内容を追加するとともに、制御データメモリ６に新規の制御データを記憶するのみでよい。
【０１４１】
このように、本実施の形態では、ＰＯＵ４３が変更される場合であっても、変更されていない部分をそのまま流用でき、変更後においても変更前と同じ状態で使用可能な部分が増えるため、制御プログラムの動作を継続させることができる。
【０１４２】
図１４は、変更後のＰＯＵ４３が異なる制御プログラムで使用される場合の制御データへのアクセス状態の一例を示すブロック図である。
【０１４３】
この図１４においてＰＯＵ４３は、新規の仮オフセットアドレスが挿入されている。
【０１４４】
本実施の形態では、変更後のＰＯＵ４３が異なる複数の制御プログラム（インスタンス）５０ａ，５０ｂで使用される場合、アドレス変換メモリ４８の内容を一度変更するだけで、全ての変更後のＰＯＵ４３に対処可能である。
【０１４５】
例えば、ＰＯＵ４３に新規の仮オフセットアドレス（制御変数）の追加が発生したとする。また、このＰＯＵ４３の変更により、制御データメモリ６においても、新規の制御データの追加及び制御データ「ＣＤＥ」の記憶領域の変更があったとする。
【０１４６】
本実施の形態では、このような場合に、ＰＯＵ４３に対応するアドレス変換メモリ４８の記憶領域の内容が、制御データメモリ６における新規の制御データの追加及び制御データ「ＣＤＥ」のアドレス変更に応じて変更される。
【０１４７】
すると、その後は、制御プログラム５０ａ，５０ｂのいずれにおいて変更後のＰＯＵ４３が使用される場合であっても、アドレス変換メモリ４８の記憶内容と各制御プログラム５０ａ，５０ｂに応じて設定されている第１又は第２のベースアドレスを用いて、制御データをアクセスすることにより、制御プログラム５０ａ，５０ｂに応じた制御データメモリ６の記憶領域をアクセスすることができる。
【０１４８】
従来においては、複数の制御プログラムで使われているＰＯＵ４３に制御変数の追加が発生すると、このＰＯＵ４３を使用する各制御プログラムについての記憶領域の該当箇所全てに対して制御変数の挿入、移動などの変更を行う必要があり、労力及び時間がかかっていた。
【０１４９】
しかしながら、本実施の形態では、アドレス変換メモリ４８の内容を変更するのみで、複数の制御プログラム５０ａ，５０ｂで使用されるＰＯＵ４３の変更に対処でき、ＰＯＵ４３の変更に迅速かつ容易に対処することができる。
【０１５０】
以上説明したように、本実施の形態では、ＰＯＵ４３において制御変数の追加、挿入、削除などの変更があった場合及び制御データメモリ６において制御データの追加、挿入、削除、移動などの変更が発生した場合であっても、アドレス変換メモリ４８の記憶内容の変更を行うことで、迅速かつ容易に対処可能である。
【０１５１】
本実施の形態では、制御プログラム及び制御データの変更部分の数を抑えることができ、制御プログラム及び制御データの変更を容易かつ迅速に行うことができるため、制御プログラムを中断しなくても制御プログラムを変更可能である。
【０１５２】
なお、本実施の形態では、命令語のオペランド部４４ｂには、仮オフセットアドレスが格納される場合について説明しているが、上記第１の実施の形態と同様に、論理的変数名が格納されるとしてもよい。この場合、第1変換部４７は、論理変数名を仮アドレスに変換する。
【０１５３】
（第４の実施の形態）
本実施の形態では、ベースアドレスを指定可能な制御装置について説明する。本実施の形態におけるアドレス変換の手法は、配列形式の制御変数（インデックス付きの制御変数）に適用される。
【０１５４】
図１５は、本実施の形態に係る制御プログラムに含まれる命令語の一例を示すブロック図である。
【０１５５】
命令語５１は、命令コード部５２とオペランド部５３を具備する。オペランド部５３は、ベースアドレス指定部５３ａとオフセットアドレス指定部５３ｂを具備する。
【０１５６】
ベースアドレス指定部５３ａは、複数のベースアドレスのうちいずれかのベースアドレスを格納する。オフセットアドレス指定部５３ｂは、オフセットアドレスを格納する。
【０１５７】
本実施の形態に係る制御装置の基本的な構成は、上記図７と同様である。なお、本実施の形態では、ベースアドレス指定部５３ａに格納されているベースアドレスがベースアドレスレジスタに記憶されるとする。
【０１５８】
図１６は、本実施の形態に係るアドレス変換部によるアドレス変換の一例を示すブロック図である。
【０１５９】
本実施の形態では、配列形式の制御変数Ａ［０］〜Ａ［９］，Ｂ［０］〜Ｂ［９］を含む制御プログラム５４が変更され、制御プログラム５４に新規の配列形式の制御変数Ａ［１０］〜Ａ［１９］が追加されたとする。制御プログラムメモリ８には、変更後の制御プログラム５４が記録される。
【０１６０】
変更後の制御プログラム５４において、配列形式の制御変数Ａ［０］〜Ａ［９］，Ｂ［０］〜Ｂ［９］に対応する物理アドレスは、変更前のベースアドレス及びオフセットアドレスでで表される。
【０１６１】
変更後の制御プログラム５４において、新規の制御変数Ａ［１０］〜Ａ［１９］に対応する新規の物理アドレスは、新規のベースアドレス及び新規のオフセットアドレスで表される。
【０１６２】
制御データメモリ６では、制御プログラム５４のうち変更されていない部分に対応する制御データについては、制御プログラム５４の変更後においても、変更前と同様の記憶領域に記憶される。例えば、制御変数Ａ［０］〜Ａ［９］，Ｂ［０］〜Ｂ［９］の実体である制御データは、変更前と後とで同一の記憶領域に記憶されている。
【０１６３】
制御データメモリ６では、制御プログラム５４のうち変更された部分に対応する制御データについては、変更前に空き領域であった領域に記憶される。例えば、追加された制御変数Ａ［１０］〜Ａ［１９］の実体である制御データは、制御データメモリ６の変更前に空き領域であった領域に記憶される。
【０１６４】
制御プログラム５４では、新規の制御変数Ａ［１０］〜Ａ［１９］が追加された場合であっても、この追加された部分ではない部分については、そのまま追加前のベースアドレス及びオフセットアドレスが用いられる。
【０１６５】
一方、制御プログラム５４では、新規の制御変数Ａ［１０］〜Ａ［１９］が追加された場合、この追加された部分については、新規のベースアドレス及び新規のオフセットアドレスにより、新規の制御変数Ａ［１０］〜Ａ［１９］の実体である新規の制御データに対する物理アドレスが特定される。
【０１６６】
本実施の形態に係る制御装置に備えられているアドレス変換部５５は、命令語５１の制御変数について、ベースアドレス指定部５３ａに格納されているベースアドレスと、オフセットアドレス指定部５３ｂに格納されているオフセットアドレスとを合成して仮アドレスに変換する。
【０１６７】
以上のような制御装置の動作について以下に説明する。
【０１６８】
制御プログラム５４における制御変数Ａ，Ｂは、当初、インデックス値０〜９に対応するように構成されていたとする。すなわち、配列形式の制御変数Ａ［０］〜Ａ［９］とＢ［０］〜Ｂ［９］とが制御プログラム５４で用いられるとする。
【０１６９】
本実施の形態において、制御変数Ａ［０］〜Ａ［９］のいずれかにアクセスする場合、この制御変数Ａ［０］〜Ａ［９］に関するベースアドレスと、インデックス値０〜９に対応するオフセットアドレスとを加えて物理アドレスを求める。
【０１７０】
ここで、制御プログラム５４において、制御変数Ａについてインデックス値をさらに１０〜１９まで追加し、インデックス修飾の範囲を拡張させるような変更が行われたとする。
【０１７１】
通常、変更前の制御データメモリ６において、制御変数Ａ［９］の記憶領域の後に十分な空き領域が存在する場合、この制御変数Ａ［９］の後の空き領域が、そのまま制御変数Ａ［１０］〜Ａ［１９］の記憶領域として用いられる。
【０１７２】
しかしながら、上記図１６では、制御変数Ａ［９］の記憶領域の後には、制御変数Ｂ［０］〜Ｂ［９］の記憶領域が割り当てられている。
【０１７３】
このため、通常は、拡張後の制御変数Ａ［０］〜Ａ［１９］が新たに別領域に割り当てられるか、あるいは制御変数Ｂ［０］〜Ｂ［９］が別領域に割り当てられた後に、拡張される部分の制御変数Ａ［１０］〜Ａ［１９］がこの制御変数Ｂ［０］〜Ｂ［９］の記憶されていた領域に割り当てられる。
【０１７４】
このような制御データの移動は、制御プログラム５４の実行を遅延させる原因となる場合があり、制御特性を向上させることが困難となる。
【０１７５】
これに対し、本実施の形態では、制御プログラム５４の各命令語５１のベースアドレス指定部５５３ａにおいて、使用するベースアドレスが指定されている。
【０１７６】
これにより、制御変数Ａのインデックス修正領域を拡張する場合に、拡張前から存在する制御変数Ａ［０］〜Ａ［９］と拡張部分の制御変数Ａ［１０］〜Ａ［１９］とについて、ベースアドレスを切替え、新しい記憶領域に拡張部分の制御変数Ａ［１０］〜Ａ［１９］を割り付けることが可能である。
【０１７７】
拡張部分の制御変数Ａ［１０］〜Ａ［１９］に対する新規のベースアドレスには、この拡張部分の制御変数Ａ［１０］〜Ａ［１９］に対応する先頭アドレスを用いることが可能である。
【０１７８】
図１７は、本実施の形態に係る制御装置による制御処理の一例を示すフローチャートである。
【０１７９】
ステップＶ１において、制御プログラムメモリ８は、命令コードとベースアドレスとオフセットアドレスとを含む制御プログラム５４を記憶するとともに、制御データメモリ６は、制御プログラム５４で使用される制御データを記憶する。
【０１８０】
ステップＶ２において、本実施の形態に係る制御装置に備えられている演算部は、制御プログラム５４で指定されているベースアドレスをベースアドレスレジスタに設定する。
【０１８１】
ステップＶ３において、アドレス変換部５５は、制御プログラム５４に含まれているオフセットアドレスとベースアドレスとを合成し、物理アドレスを求める。
【０１８２】
ステップＶ４において、本実施の形態に係る制御装置に備えられている演算部は、制御プログラム５４に含まれている命令コードと物理アドレスに対するアクセス結果とに基づいて制御を実行する。
【０１８３】
以上説明した本実施の形態では、制御プログラム５４に、拡張前から存在する制御変数に対するベースアドレスと、拡張部分に対する新規のベースアドレスとが格納されている。
【０１８４】
そして、拡張部分の制御変数に対するアクセスが必要な場合には、拡張前から存在する制御変数のベースアドレスと異なる新規のベースアドレスを用いることが可能である。
【０１８５】
これにより、制御プログラム５４の書き替え部分を減少させることができ、また制御データの変更部分を減少させることができ、制御プログラム５４を継続実行させながら変更を行うことが可能となる。
【０１８６】
すわなち、本実施の形態では、インデックス付きの制御変数のインデックスの最大値を制御プログラム実行中に変更する場合であっても、ベースアドレスを切替えることにより、制御データのインスタンスの移動を削減し、制御プログラムの実行を継続しつつ制御プログラム及び制御データを変更させることができる。
【０１８７】
なお、本実施の形態において、制御装置は、複数のベースアドレスレジスタを具備し、各ベースアドレスレジスタにそれぞれ異なるベースアドレスが記憶され、ベースアドレス指定部５３ａは、この複数のベースアドレスレジスタのうちのいずれかを指定するベースアドレスレジスタ指定情報を格納するとしてもよい。この場合にも、複数のベースアドレスを用いてアクセス先を指定することができるため、制御プログラム５４で複数のベースアドレスを利用可能である。
【０１８８】
（第５の実施の形態）
本実施の形態におけるアドレス変換の手法は、配列形式の構造体に適用される。なお、構造体は、複数の制御変数を具備する。本実施の形態において、変更前から構造体を構成していた制御変数の数を原要素数とする。また、本実施の形態において、変更後に構造体に追加された制御変数の数を追加要素数とする。
【０１８９】
図１８は、本実施の形態に係る制御プログラムに含まれる命令語の一例を示すブロック図である。
【０１９０】
命令語５６は、命令コード部５７とオペランド部５８を具備する。オペランド部５８は、ベースアドレス指定部５８ａ、オフセットアドレス指定部５８ｂ、要素数指定部５８ｃ、インデックス値指定部５８ｄを具備する。
【０１９１】
ベースアドレス指定部５８ａは、複数のベースアドレスのうちいずれかのベースアドレスを格納する。
【０１９２】
オフセットアドレス指定部５８ｂは、オフセットアドレスを格納する。このオフセットアドレスは、構造体を構成する制御変数のうちどの制御変数についてのアクセスを行うかを指定する。
【０１９３】
要素数指定部５８ｃは、変更前から構造体を構成していた制御変数に対するアクセスが行われる場合には原要素数、変更後に構造体に追加された制御変数に対するアクセスが行われる場合には追加要素数を格納する。
【０１９４】
インデックス値指定部５８ｄは、構造体配列のいずれかをアクセスする場合に、アクセス対象となる構造体の指定に用いられるインデックス値を格納する。
【０１９５】
本実施の形態に係る制御装置の基本的な構成は、上記図７と同様である。なお、本実施の形態では、ベースアドレス指定部５８ａに格納されているベースアドレスがベースアドレスレジスタに記憶されるとする。
【０１９６】
ここで、図１９に、構造体に制御変数が追加された場合における通常のアドレッシング方式の一例を示す。
【０１９７】
変更前の各構造体は、制御変数Ａ，Ｂ，Ｄを含む。図１９では、変更前の状態として、制御データメモリ６に、インデックス値［０］で表される第１の構造体（Ａ［０］，Ｂ［０］，Ｄ［０］）と、インデックス値［１］で表される第２の構造体（Ａ［１］，Ｂ［１］，Ｄ［１］）が記憶されている。
【０１９８】
第１の構造体に新規の制御変数Ｃ［０］を追加し、同様に第２の構造体に新規の制御変数Ｃ［１］を追加する。
【０１９９】
すると、通常のアドレッシング方式では、変更後の第１の構造体に含まれる各制御変数Ａ［０］，Ｂ［０］，Ｃ［０］，Ｄ［０］が順に配置され、その後に変更後の第２の構造体に含まれる各制御変数Ａ［１］，Ｂ［１］，Ｃ［１］，Ｄ［１］を順に配置される。
【０２００】
したがって、制御データメモリ６において、新規に追加される制御変数Ｃ［０］以降の記憶領域については、新たに制御変数Ｃ［０］，Ｃ［１］が追加された状態に書き替えが行われる。この通常のアドレッシング方式における制御変数の追加処理は、単純なブロック転送で実現することは困難であるため、時間及び負荷がかかる。
【０２０１】
これに対して、図２０に、構造体に制御変数が追加された場合における本実施の形態に係るアドレッシング方式の一例を示す。
【０２０２】
本実施の形態において、第１の構造体に制御変数Ｃ［０］が追加され、第２の構造体に制御変数Ｃ［１］が追加される場合、この追加された制御変数Ｃ［０］，Ｃ［１］の実体のみが制御データメモリ６の空き領域に割り付けられる。
【０２０３】
この追加された制御変数Ｃ［０］，Ｃ［１］の記憶領域における先頭アドレスが、この追加された変数に対する新規のベースアドレスとされる。
【０２０４】
この追加された制御変数Ｃ［０］，Ｃ［１］に対してアクセスを行う場合には、要素数指定部５８ｃに、各構造体に追加される制御変数の数である追加要素数「１」が格納される。
【０２０５】
制御変数Ｃ［０］，Ｃ［１］についてのオフセットアドレスは、追加された制御変数Ｃ［０］，Ｃ［１］の順序にしたがって、０から昇順に設定される。本実施の形態では、追加要素数が１であるため、Ｃ［０］に対するオフセットアドレスに０が設定される。同様に、Ｃ［１］に対するオフセットアドレスに１が設定される。
【０２０６】
なお、本実施の形態において、制御変数が追加される前から存在する制御変数Ａ［０］，Ｂ［０］，Ｄ［０］，Ａ［１］，Ｂ［１］，Ｄ［１］の実体については、変更されなくてもよい。
【０２０７】
また、本実施の形態では、制御変数が追加される前から存在する制御変数Ａ［０］，Ｂ［０］，Ｄ［０］，Ａ［１］，Ｂ［１］，Ｄ［１］の実体については変更されないため、本実施の形態における制御プログラムでは、制御変数Ａ［０］，Ｂ［０］，Ｄ［０］，Ａ［１］，Ｂ［１］，Ｄ［１］をアクセスする場合のオペランド部５８について書き替えを行う必要はない。
【０２０８】
本実施の形態に係る制御装置に備えられているアドレス変換部は、以下の（１）式に基づいて物理アドレスを演算する。
【０２０９】
物理アドレス＝指定されているベースアドレス＋要素数×インデックス値＋オフセットアドレス…（１）
例えば、上記図２０の制御変数Ｂ［１］の物理アドレスは、以下の（２）式で演算される。
【０２１０】
Ｂ［１］の物理アドレス＝ベースアドレス＋３×１＋１＝ベースアドレス＋４…（２）
例えば、上記図２０の制御変数Ｃ［１］の物理アドレスは、以下の（３）式で演算される。
【０２１１】
Ｂ［１］の物理アドレス＝新規のベースアドレス＋１×１＋１＝新規のベースアドレス＋１…（３）
図２１は、本実施の形態に係る制御装置による制御処理の一例を示すフローチャートである。
【０２１２】
ステップＷ１において、制御プログラムメモリ８は、命令コードとベースアドレスとオフセットアドレスと要素数とインデックス値とを含む制御プログラムを記憶するとともに、制御データメモリ６は、この制御プログラムで使用される制御データを記憶する。
【０２１３】
ステップＷ２において、本実施の形態に係る制御装置に備えられている演算部は、制御プログラムで指定されているベースアドレスをベースアドレスレジスタに設定する。
【０２１４】
ステップＷ３において、アドレス変換部５５は、上記式（１）に基づいて、オフセットアドレスとベースアドレスと要素数とインデックス値を合成し、物理アドレスを求める。
【０２１５】
ステップＷ４において、本実施の形態に係る制御装置に備えられている演算部は、制御プログラムに含まれている命令コードと物理アドレスに対するアクセス結果とに基づいて制御を実行する。
【０２１６】
以上説明した本実施の形態では、構造体に新規に追加された制御変数Ｃ［０］，Ｃ［１］をアクセスする場合、新規に追加された制御変数をアクセスするための新規のベースアドレスを用いる。
【０２１７】
また、本実施の形態では、追加前から構造体に存在する制御変数がアクセスされる場合には、原要素数が用いられ、追加された制御変数がアクセスされる場合には、追加要素数が用いられる。
【０２１８】
また、本実施の形態では、追加前から構造体を構成している制御変数と、追加された制御変数とが、制御データメモリ６の別領域に格納される。
【０２１９】
これにより、本実施の形態におけるアドレッシング方式では、通常のアドレッシング方式を用いる場合よりも、容易かつ迅速に構造体の制御変数を追加でき、制御プログラム及び制御データの変更部分を減少させることができ、制御プログラム実行中であっても構造体を構成する制御変数を変更させることができる。
【０２２０】
すなわち、本実施の形態では、構造体を構成する制御変数を制御プログラム実行中に変更した場合であっても、オペランドで指定される制御データメモリ６のベースアドレスを複数指定可能な命令語体系を使用することにより、制御変数追加前の制御データの内容を移動又はコピーさせる必要がなく、継続して制御プログラムを実行させることができる。
【０２２１】
（第６の実施の形態）
本実施の形態では、上記第１から第５までの実施の形態におけるモニタ装置について説明する。
【０２２２】
上記図１におけるモニタ装置２１は、制御装置の動作状態をモニタするために、制御変数を指定するモニタ命令を制御装置に送信し、その指定された制御変数の値を時系列で受信し、例えばグラフなどにより表示する。
【０２２３】
例えば、モニタ対象のデータを、制御データメモリの物理アドレスによって指定すると、制御プログラムのオンライン変更時に、モニタ対象のデータの格納されている物理アドレスが変更される場合があり、モニタ対象のデータをそのまま継続受信することは困難である。
【０２２４】
このため、従来においては、モニタを一旦停止して、オンライン変更後の制御データメモリの物理アドレスを再度指定する必要がある。
【０２２５】
これに対し、本実施の形態では、モニタ対象のデータが、例えば、オペランド部の内容（例えば、論理的変数名、オフセットアドレスなど）に対応する制御変数で指定されるとする。上記各実施の形態では、制御プログラムのオンライン変更時又は制御データの追加、挿入、削除、移動が発生した場合であっても、変更された部分ではない制御プログラムのオペランド部の内容は原則として変更されないため、そのまま使用される。
【０２２６】
したがって、制御変数によりモニタ対象のデータを指定することにより、制御プログラムの変更、制御データの追加、挿入、削除、移動に影響されることなく、モニタ対象のデータを継続して表示させることができ、監視できる。
【０２２７】
なお、上記各実施の形態において、各構成要素は、同様の動作を実現可能であれば自由に変形可能であり、配置を変更させてもよく、自由に組み合わせることが可能であり、分割することも可能である。
【０２２８】
また、上記各実施の形態においては、制御プログラムの変更として制御変数の追加が発生した場合について説明しているが、制御変数の削除などの他の変更が発生した場合も同様である。
【図面の簡単な説明】
【０２２９】
【図１】本発明の第１の実施の形態に係る制御装置の一例を示すブロック図。
【図２】同実施の形態における制御プログラムに含まれている命令語の一例を示すブロック図。
【図３】同実施の形態における制御プログラム実行回路の一例を示すブロック図。
【図４】同実施の形態におけるアドレス変換部の一例を示すブロック図。
【図５】同実施の形態に係る制御装置による制御処理の一例を示すフローチャート。
【図６】同実施の形態における新規の論理的変数名が追加された状態の一例を示すブロック図。
【図７】本発明の第２の実施の形態に係る制御装置の一例を示すブロック図。
【図８】同実施の形態においてＰＯＵで使用される制御データの記憶領域が変更された場合の例を示すブロック図。
【図９】同実施の形態に係る制御装置による制御処理の一例を示すフローチャート。
【図１０】本発明の第３の実施の形態に係る制御装置の一例を示すブロック図。
【図１１】同実施の形態におけるアドレス変換部の一例を示すブロック図。
【図１２】同実施の形態に係る制御装置による制御処理の一例を示すフローチャート。
【図１３】同実施の形態においてＰＯＵが変更され、新規の仮オフセットアドレスが追加された状態の一例を示すブロック図。
【図１４】同実施の形態において変更後のＰＯＵが異なる制御プログラムで使用される場合の制御データへのアクセス状態の一例を示すブロック図。
【図１５】本発明の第４の実施の形態に係る制御プログラムに含まれる命令語の一例を示すブロック図。
【図１６】同実施の形態に係るアドレス変換部によるアドレス変換の一例を示すブロック図。
【図１７】同実施の形態に係る制御装置による制御処理の一例を示すフローチャート。
【図１８】本発明の第５の実施の形態に係る制御プログラムに含まれる命令語の一例を示すブロック図。
【図１９】構造体に制御変数が追加された場合における通常のアドレッシング方式の一例を示す図。
【図２０】同実施の形態における構造体に制御変数が追加された場合のアドレッシング方式の一例を示す図。
【図２１】同実施の形態に係る制御装置による制御処理の一例を示すフローチャート。
【図２２】従来の制御装置の一例を示すブロック図。
【図２３】従来の制御装置における制御プログラムメモリの内容と制御データメモリの内容の一例を示すブロック図。
【図２４】従来の制御装置において制御プログラムが変更された場合の制御プログラムメモリの記憶状態の変化例を示すブロック図。
【図２５】従来の制御装置における制御プログラムの変更に伴う制御データメモリの記憶状態の変化例を示すブロック図。
【符号の説明】
【０２３０】
１，１８…制御装置、２…入出力モジュール、３…制御対象、４…Ｉ／Ｏインタフェース、５…バス、６…制御データメモリ、７…ＣＰＵ、８…制御プログラムメモリ、８ａ，１５，２０，５０ａ，５０ｂ，５４…制御プログラム、９，２１…モニタ装置、１０…通信インタフェース、１１…プログラムメモリ、１２…データメモリ、１３，２２，３７，４４，５１，５６…命令語、１３ａ，２２ａ，３７ａ，４４ａ，５２，５７…命令コード部、１３ｂ，２２ｂ，３７ｂ，４４ｂ，５３，５８…オペランド部、１４，１６，１７，３８，４５…制御データ、１９，３５、４２…制御プログラム実行回路、２３…データバッファ、２４…データレジスタ、２５…命令レジスタ、２６…命令デコーダ、２７，４０…演算部、２８…ワークレジスタ、２９，４１，４６，５５…アドレス変換部、３０…命令カウンタ、３１…アドレスバッファ、３２…バス制御部、３３…変換部、３４，４８…アドレス変換メモリ、３６，４３…ＰＯＵ、３９…ベースアドレスレジスタ、４７…第１変換部、４９…第２変換部、５３ａ，５８ａ…ベースアドレス指定部、５３ｂ，５８ｂ…オフセットアドレス指定部、５８ｃ…要素数指定部、５８ｄ…インデックス値指定部
【図１】
2006018759.tif 000003
【図２】
2006018759.tif 000004
【図３】
2006018759.tif 000005
【図４】
2006018759.tif 000006
【図５】
2006018759.tif 000007
【図６】
2006018759.tif 000008
【図７】
2006018759.tif 000009
【図８】
2006018759.tif 000010
【図９】
2006018759.tif 000011
【図１０】
2006018759.tif 000012
【図１１】
2006018759.tif 000013
【図１２】
2006018759.tif 000014
【図１３】
2006018759.tif 000015
【図１４】
2006018759.tif 000016
【図１５】
2006018759.tif 000017
【図１６】
2006018759.tif 000018
【図１７】
2006018759.tif 000019
【図１８】
2006018759.tif 000020
【図１９】
2006018759.tif 000021
【図２０】
2006018759.tif 000022
【図２１】
2006018759.tif 000023
【図２２】
2006018759.tif 000024
【図２３】
2006018759.tif 000025
【図２４】
2006018759.tif 000026
【図２５】
2006018759.tif 000027