(57)【特許請求の範囲】
【請求項１】
ダウンロードされる中間言語形式のプログラムが、新／旧何れのコマンド体系に依るものかを判断する新旧コマンド判断手段と、
新コマンド体系の中間言語を、プログラマブルコントローラ本体側で実行可能な形式のマシン語に変換する新中間言語／マシン語変換手段と、
旧コマンド体系の１または複数の中間言語を、同一の処理内容となり且つ前記プログラマブルコントローラ本体側で正常に動作するような１または複数の新コマンド体系の中間言語へと変換／インタプリトする新中間言語への変換／インタプリト手段とを有し、
該新中間言語への変換／インタプリト手段による変換／インタラプト結果を前記新中間言語／マシン語変換手段に入力させてマシン語へと変換させることを特徴とするプログラマブルコントローラのインタフェース装置。
【請求項２】
前記新中間言語への変換／インタプリト手段は、更に、変換した新コマンド体系のコマンドに変換前の旧コマンドを示す疑似命令を付加し、
該疑似命令を用いて、該新中間言語への変換／インタプリト手段により変換された新コマンド体系の中間言語を、旧コマンド体系の中間言語へと逆変換する中間言語の逆変換手段を更に有することを特徴とする請求項１記載のプログラマブルコントローラのインタフェース装置。
【請求項３】
前記新中間言語への変換／インタプリト手段は、必要に応じて、変換した新コマンド体系の中間言語の前／後に遅延命令またはオペランドを挿入することを特徴とする請求項１または２記載のプログラマブルコントローラのインタフェース装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラマブルコントローラに係わり、特にローダ・インタフェース部に関する。
【０００２】
【従来の技術】
図１２は、従来のプログラマブルコントローラの構成ブロック図である。
同図において、プログラマブルコントローラ１００には、ローダ１１０が接続されている。プログラマブルコントローラ１００内部は、大別して、ローダＩ／Ｆ（インタフェース）部１１１と演算実行部１１２とより成る。ローダＩ／Ｆ（インタフェース）部１１１は、ローダコマンド解読部１１３、中間言語／マシン語変換部１１４より成る。演算実行部１１２は、プログラムメモリ１１５、ＣＰＵ部１１６、Ｉ／Ｏ部１１７等より成る。
【０００３】
ローダ１１０は、プログラマブルコントローラのプログラム作成／動作モニタ等を行うツールであり、パソコン等で実現される。
ローダ１１０においてユーザ等により作成されたアプリケーションプログラムが、ローダ１１０内の不図示のコンパイラにより中間言語にされた後、プログラマブルコントローラ１００側にダウンロードされるときには、ローダコマンド解読部１１３を介して、中間言語／マシン語変換部１１４により中間言語からマシン語に変換される。
【０００４】
ここで、中間言語とは、ローダ１１０等のプログラミングツールとプログラマブルコントローラとの間の機種依存を無くす為に、実際にプログラマブルコントローラ１００上で動作するマシン語とは別の形式のコードで定義されている言語である。従来において中間言語を用いない方式では、ローダにおいてアプリケーションプログラムをマシン語に変換してダウンロードしていた。この為、例えば、プログラマブルコントローラに機種Ａ、機種Ｂ、機種Ｃが存在していた場合、同一のアプリケーションプログラムを各機種にダウンロードする場合であっても、ダウンロード先の機種毎にその機種用のマシン語に変換しなければならなかった（各機種毎にそれぞれ対応するコンパイラが必要であった）。これに対し、中間言語を用いる方式では、ローダ側ではアプリケーションプログラムを中間言語（のプログラム）に変換してダウンロードし、これを各機種側でそれぞれ、中間言語／マシン語変換部１１４が、その機種対応のマシン語に変換してから演算実行部１１２側に渡し、プログラムメモリ１１５に格納していた。
【０００５】
演算実行部１１２においては、ＣＰＵ部１１６が、プログラムメモリ１１５に格納されているマシン語のコードを読み出して、実行／演算することで、Ｉ／Ｏ部１１７を介して接続されている不図示の機器の制御等の処理を実行する。
【０００６】
【発明が解決しようとする課題】
一般に、上述したように中間言語を用いる方式は、中間言語のコードを仲介することにより、プログラマブルコントローラの機種依存性を無くすことを目的とした言語Ｉ／Ｆ方式である。
【０００７】
しかしながら、例えばプログラマブルコントローラのアーキテクチャの変更等により、中間言語自体への追加／変更が必要になる場合があり、この場合には、そのままでは新旧機種相互の接続が出来なくなる場合がある。
【０００８】
上記アーキテクチャの変更等の具体例としては、例えば以下に列挙するものがある。
(1) プログラマブルコントローラの性能ＵＰによる命令速度のＵＰ
(2) 命令機能のＵＰ（１Ｗ（ワード）実行命令であったものを、１Ｗ／２Ｗの両
方を実行できる命令へと、命令機能をＵＰする等）
(3) 新規命令の追加
図１３、図１４は、上記中間言語の追加／変更等が起こった場合の従来の対応方法を説明する為の図である。
【０００９】
図１３に示すように、アーキテクチャが変更前／後で（旧機種のプログラマブルコントローラ１００Ａ、新機種のプログラマブルコントローラ１００Ｂ）、基本的な内部構造が特に変わるわけではないが（図１２と同じ）、中間言語／マシン語変換部１１４には、上記(2)、(3)の機能ＵＰした命令または新規命令に対応する変換コードが、新規に追加されており、新ローダ１１０Ｂと共に新コマンド／新中間言語の命令コード体系が構築されている。
【００１０】
従って、従来機種対応のアプリケーションプログラム（旧ローダ１１０Ａで作成されるコード）をそのまま使用することはできない。このような問題に対して、従来では、コンバート部１２０により、従来機種対応のアプリケーションプログラム（中間言語に変換後のもの）を、上記新命令コード体系で動作できる形に変換して新ローダ１１０Ｂに渡し、新ローダ１１０Ｂから新機種のプログラマブルコントローラ１００Ｂにダウンロードするようにしていた。
【００１１】
図１４は、コンバート部１２０によるコンバート方法の一例を示す図である。図示の例では、例えば旧命令の“ＡＤＤＳ”、“＆”に相当する新命令が、それぞれ、“ＡＤＤ”、“ＡＮＤ”であったとすると、これら旧命令を、新命令に変換する。
【００１２】
また、旧命令体系では１つの命令（命令Ａ）であったものが、新命令体系では複数の命令より成るようになっていた場合には、命令Ａを複数の新命令に変換する。その逆に、旧命令体系では複数の命令より成っていたものが、新命令体系では１つの命令となっていた場合には、複数の旧命令を１つの新命令に変換する。
【００１３】
上記のように、従来でも一応は、従来機種対応のアプリケーションプログラムであっても、新機種のプログラマブルコントローラ１００Ｂで実行させることができるが、以下に述べる問題点があった。
【００１４】
・旧ローダ１１０Ａのローダをそのまま新機種のプログラマブルコントローラ１００Ｂに繋いで動作させることができなかった。
・その逆に、新ローダ１１０Ｂをそのまま旧機種のプログラマブルコントローラ１００Ａに繋いで動作させることもできなかった。
【００１５】
・一般に、ローダからプログラマブルコントローラへのダウンロードだけでなく、プログラマブルコントローラに格納されているプログラムをローダ側にアップロードすることが行われているが、コンバート部１２０では命令の逆変換を行うことができなかった。すなわち、図示の例では示されていないが、例えば新命令“ＡＤＤ”に変換されるべき旧命令が、“ＡＤＤＳ”だけでなく他にも存在する場合、逆変換する際に“ＡＤＤＳ”にすべき否か判断出来なくなる。
【００１６】
また、上記(1) の「命令速度のＵＰ」に関しては、命令間で速度を調整しているような処理の場合、旧機種対応のプログラムをそのまま新機種のプログラマブルコントローラ１００Ｂに用いると、誤動作するか動作不能となる可能性がある。
【００１７】
この為、従来では、コンバート部１２０を経て変換後のプログラムを、新ローダ１１０Ｂ上でユーザ等がデバッグする作業を行った後、新機種のプログラマブルコントローラ１００Ｂにダウンロードさせる、というような手間が掛かっていた。
【００１８】
本発明の課題は、アーキテクチャが変更された機種、または異なるアーキテクチャの機種に対しても、そのままローダを接続してプログラムをダウンロードすれば動作可能とできるプログラマブルコントローラのインタフェース装置を提供することである。
【００１９】
【課題を解決するための手段】
本発明によるプログラマブルコントローラのインタフェース装置は、ダウンロードされる中間言語形式のプログラムが、新／旧何れのコマンド体系に依るものかを判断する新旧コマンド判断手段と、新コマンド体系の中間言語を、プログラマブルコントローラ本体側で実行可能な形式のマシン語に変換する新中間言語／マシン語変換手段と、旧コマンド体系の１または複数の中間言語を、同一の処理内容となり且つ前記プログラマブルコントローラ本体側で正常に動作するような１または複数の新コマンド体系の中間言語へと変換／インタプリトする新中間言語への変換／インタプリト手段とを有し、該新中間言語への変換／インタプリト手段による変換／インタラプト結果を前記新中間言語／マシン語変換手段に入力させてマシン語へと変換させるように構成する。
【００２０】
上記プログラマブルコントローラのインタフェース装置によれば、例えばプログラマブルコントローラを新機種にバージョンアップしたことに伴って中間言語が新コマンド体系へと移行した場合に、旧コマンド体系のプログラム（ローダ側で中間言語に変換されている）であってもそのままダウンロードして動作可能とでき、保守性、プログラムの継承に優れる。
【００２１】
また、例えば、前記新中間言語への変換／インタプリト手段は、更に、変換した新コマンド体系のコマンドに変換前の旧コマンドを示す疑似命令を付加し、該疑似命令を用いて、該新中間言語への変換／インタプリト手段により変換された新コマンド体系の中間言語を、旧コマンド体系の中間言語へと逆変換する中間言語の逆変換手段を更に有するように構成する。
【００２２】
前記新中間言語への変換／インタプリト手段により正しく変換／インタプリトされたか否かを旧ローダ側で確認（verify）する必要がある。これより、逆変換手段により中間言語の逆変換を行うが、その際、例えば旧コマンド体系では１Ｗ（ワード）命令、２Ｗ（ワード）命令に区別されていたものが、新コマンド体系では両方に対応する１つの新命令になっていた場合、この新命令を逆変換する際、そのままでは、１Ｗ（ワード）命令／２Ｗ（ワード）命令のどちらに逆変換すべきか判断できない。よって、変換時に１Ｗ（ワード）命令／２Ｗ（ワード）命令のどちらであったかを示す疑似命令を付加するようにしている。尚、疑似命令は、マシン語に変換する処理の際には、無意味な命令であるとして無視される。
【００２３】
また、例えば、前記新中間言語への変換／インタプリト手段は、必要に応じて、変換した新コマンド体系の中間言語の前／後に遅延命令またはオペランドを挿入する。
【００２４】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態について説明する。
図１は、本実施の形態によるプログラマブルコントローラの構成ブロック図である。
【００２５】
同図において、プログラマブルコントローラ１は、新機種であるものとする。本例によるプログラマブルコントローラ１は、図示の通り、新機種対応のローダ（新ローダ３０Ｂ）だけでなく、旧機種対応のローダ（旧ローダ３０Ａ）も直接接続してプログラム（中間言語）をダウンロードしても動作可能となっている。動作可能となる理由は、プログラマブルコントローラ１内のローダＩ／Ｆ部１０の構成にあり、詳しくは後述する。尚、プログラマブルコントローラ１−新ローダ３０Ｂ／旧ローダ３０Ａ間の接続には、例えばＲＳ−２３２Ｃが用いられている。
【００２６】
プログラマブルコントローラ１内部は、大別して、ローダＩ／Ｆ（インタフェース）部１０と演算実行部２０とより成る。ローダＩ／Ｆ（インタフェース）部１０は、新旧コマンド判断部１１、新コマンド解読部１２、新中間言語／マシン語変換部１３、旧コマンド解読部１４、新中間言語への変換／インタプリト部１５、中間言語の逆変換部１６より成る。演算実行部２０は、従来と変わらず、プログラムメモリ２１、ＣＰＵ部２２、Ｉ／Ｏ部２３等より成る。
【００２７】
ローダ３０Ａ、３０Ｂは、プログラマブルコントローラのプログラム作成／動作モニタ等を行うツールであり、パソコン等で実現される。
ローダ３０Ａまたは３０Ｂにおいてユーザ等により作成されたアプリケーションプログラムは、ローダ内の不図示の構成により中間言語に変換された後、プログラマブルコントローラ１側にダウンロードされる。
【００２８】
プログラマブルコントローラ１側では、これを受けて、まず、新旧コマンド判断部１１により、ローダから送られてきたプログラムのコマンドが、新／旧何れの命令コード体系によるものであるかを判断する。判断方法の具体例は後述する。新旧コマンド判断部１１により新コマンドであると判断された場合には、従来と同様に、新コマンド解読部１２（ローダコマンド解読部１１３に相当）を介して、新中間言語／マシン語変換部１３により中間言語からマシン語に変換すればよい。
【００２９】
一方、新旧コマンド判断部１１により旧コマンドであると判断された場合には、この旧コマンドは、旧コマンド解読部１４を介して、新中間言語への変換／インタプリタ部１５に入力される。そして、この新中間言語への変換／インタプリタ部１５において、後に新中間言語／マシン語変換部１３で正しく変換が行われる形に変えられる。詳しくは、後に具体例を挙げて説明するが、概略的には、図２に示すように、新命令へのコンバート（従来のコンバート部１２０と同様の機能）だけでなく、必要に応じて疑似命令の挿入／旧命令コード体系から新命令コード体系へのインタプリトを行う。疑似命令は、中間言語の逆変換部１６により逆変換処理の際に必要なものであり、これも詳しくは後述する。
【００３０】
尚、旧コマンド解読部１４（及び新コマンド解読部１２）は、図２に示すように、単に、一旦メモリ等に格納した中間言語（のプログラム）から命令（コマンド）を抜き出す処理を行っているだけである。
【００３１】
そして、新中間言語への変換／インタプリタ部１５から出力される新中間言語は、新中間言語／マシン語変換部１３によりマシン語に変換されて、プログラムメモリ２１に格納される。演算実行部２０の動作は、従来と同じであるので、特に説明しない。
【００３２】
上述した処理により、旧ローダ３０Ａからダウンロードされたプログラムであっても新機種で実行可能な形式に変換されて、基本的には新機種で動作可能となるはずであるが、何等かの理由で正しく変換されなかった為に誤動作／動作不能となる可能性もある。よって、正しく変換されたか否かをローダ側で確認（verify）する為に、新中間言語への変換／インタプリト部１５により変換後のコマンド群（新中間言語）を、中間言語の逆変換部１０により逆変換して（すなわち、旧コマンドに戻す）、これを旧ローダ３０Ａに返信する処理を行う必要がある（よって、新ローダ３０Ｂからダウンロードされた場合には逆変換は必要ない）。この逆変換処理の際に上記疑似命令が必要となるのであり、詳しくは後述する。
【００３３】
上記の通り、本例のプログラマブルコントローラ１において特徴的な構成要素は、新旧コマンド判断部１１、新中間言語への変換／インタプリト部１５、中間言語の逆変換部１６であり（特に、新中間言語への変換／インタプリト部１５）、以下、図３以降を参照して、これら構成要素各々について詳細に説明していく。
【００３４】
図３は、新旧コマンド判断部１１の処理内容について説明する為の図である。
新旧コマンド判断部１１は、上記の通り、新コマンドであるか旧コマンドであるかを判断するものであり、具体的な判断方法は様々であってよいが、図３にはその一例を示す。
【００３５】
ここでは、旧コマンドでは「絶対番地アドレス表現」（図示のX`00'）であり、新コマンドでは「論理アドレス表現」（図示のX`30'）であった場合を例にする。
【００３６】
この場合、新旧コマンド判断部１１は、例えば図示のＣＭＤコード部のアドレス表現がどうなっているか（X`00'かX`30'か）によって、新／旧何れであるかを判断する。
【００３７】
勿論、上記一例に限るわけではなく、旧コマンドと新コマンドとでフォーマットが異なっている点を、予め開発者等が判断する等して、これに基づいて新旧コマンドの判断基準を設定しておけばよい。
【００３８】
次に、以下に、新中間言語への変換／インタプリト部１５の処理内容について説明する。
上述してあるように、本発明は、例えば以下に列挙するようなアーキテクチャの変更等に対応するものであり、新中間言語への変換／インタプリト部１５は、これらに対応する処理を実行する。
(1) プログラマブルコントローラの性能ＵＰによる命令速度のＵＰ
(2) 命令機能のＵＰ（例えば１Ｗ（ワード）実行命令であったものを、１Ｗ／２Ｗの両方を実行できる命令へと、命令機能をＵＰする等）
(3) 新規命令の追加
まず、図４を参照して、上記(1) プログラマブルコントローラの性能ＵＰによる処理速度ＵＰに対応する処理について説明する。
【００３９】
同図では、コマンドとして「ＦＡＤＤ」（フローティング加算命令）を例にして説明する。この例では新プログラマブルコントローラにおいても命令「ＦＡＤＤ」自体は変更無しであるが、コントローラの性能がＵＰ（処理速度が向上）しているため、同一のコマンドであっても、旧プログラマブルコントローラの場合と同じ動作を保証することができない（処理動作が早過ぎて、本来とりたいタイミングで動作できなくなる可能性がある）。
【００４０】
これより、本例では、新中間言語への変換／インタプリト部１５は、図示のように、強制的に「遅れ」を入れる為のコマンド（総称として「Ｄｅｌａｙ命令」と呼ぶ）を挿入する。尚、どのコマンドに対してどの程度の遅れを入れるのかは、新機種の命令速度に応じて予め開発者等が判断して設定しておく。
【００４１】
「Ｄｅｌａｙ命令」の一例としては、例えば無意味な命令（ＭＯＶ  Ｂ、Ｂ等）等が挙げられる。あるいは、無意味なサブルーチンを必要回数分ループさせる処理を挿入してもよい。
【００４２】
尚、後に中間言語の逆変換部１６において逆変換を行う際には、「Ｄｅｌａｙ命令」を取り除く処理を行うようにすればよい。
従来のコンバート部１２０では、既に説明しているように、旧命令を新命令に変更することは行っているが、処理タイミングの補正については何等考慮していない。この為、正常に動作するのか確認する為にデバッグ作業等が必要であったが、本例では必要なくなる。
【００４３】
次に、図５、図６は、上記(2) 命令機能のＵＰに対応する処理を説明する為の図である。
まず、図５では、旧コマンド体系では１Ｗ（ワード）実行命令（ＡＤＤＳ）と２Ｗ（ワード）実行命令（ＡＤＤ）とに区別されていたが、新コマンド体系では１Ｗ／２Ｗの両方を実行できる命令（ＡＤＤ）へと命令機能がＵＰされていた場合を例にする。旧コマンド体系におけるＡＤＤ（以下、旧ＡＤＤと呼ぶ）と、新コマンド体系におけるＡＤＤ（以下、新ＡＤＤと呼ぶ）とは、命令語の字面は同じであるが、機能は異なっている。旧ＡＤＤは、最初から２Ｗ（ワード）用の命令であると決まっているので、演算対象データが１Ｗ（ワード）であるか２Ｗ（ワード）であるか判断できない（その必要がなかった）のに対して、新ＡＤＤはオペランドにより１Ｗ／２Ｗを判断する機能を有する命令である。よって、必要に応じて、適切なオペランドが付加できるようにインタプリトする処理も行うが、これについては後に図７、図８等を参照して説明するものとし、ここでは疑似命令の付加について説明する。
【００４４】
図５において、まず１Ｗ／２Ｗの実行命令（ＡＤＤＳ／ＡＤＤ）を、それぞれ、新命令体系のコマンド（ＡＤＤ）に変換する処理は、従来のコンバート部１２０と同様の機能により実現される。本例では、更に、それぞれ、１Ｗ処理疑似命令、２Ｗ処理疑似命令という疑似命令を挿入する。１Ｗ処理疑似命令は、変換前の旧コマンドが１Ｗ処理の命令であったことを示し、同様に２Ｗ処理疑似命令は、変換前の旧コマンドが２Ｗ処理の命令であったことを示す為の命令である。
【００４５】
これら疑似命令は、新中間言語／マシン語変換部１３においては、無意味な命令であるものとして無視して処理される。疑似命令は、上述してあるように、逆変換処理の際に必要となるものであり、中間言語の逆変換部１６は、１Ｗ処理疑似命令を伴う新ＡＤＤはＡＤＤＳへと逆変換し、２Ｗ処理疑似命令を伴う新ＡＤＤは旧ＡＤＤへと逆変換する。尚、疑似命令の具体例を示すことに意味はない。新中間言語への変換／インタプリト部１５と中間言語の逆変換部１６との間で整合がとれていれば良い（例えば、それぞれ、同一内容のテーブル（“疑似命令−旧命令−新命令テーブル”等）を記憶して、このテーブルを参照して上記処理を行うようにすればよい）。
【００４６】
図６には、他の例を示す。
図示の例では、旧命令体系では、ビット命令（＆）、１Ｗ（ワード）命令（ＡＮＤＳ）、２Ｗ（ワード）命令（ＡＮＤ；以後、旧ＡＮＤと呼ぶ）というように各データ型毎にコマンドが存在していたものを、新命令体系では１つの命令（ＡＮＤ；以後、新ＡＮＤと呼ぶ）で各種データ型の演算が可能となったものとする。尚、新ＡＮＤ命令は、新ＡＤＤ命令と同様、オペランドの論理名によって処理対象データのデータ型を判断する。
【００４７】
新中間言語への変換／インタプリト部１５は、図示の通り、旧コマンド「＆」は「ビット処理疑似命令＋（新）ＡＮＤ」に変換し、旧コマンド「ＡＮＤＳ」は「１Ｗ処理疑似命令＋（新）ＡＮＤ」に変換し、旧コマンド「ＡＮＤ」は「２Ｗ処理疑似命令＋（新）ＡＮＤ」に変換する。中間言語の逆変換部１６は、各疑似命令に基づいて逆変換処理を行う。
【００４８】
上記図５、図６では、各コマンドのみを示して説明したが、実際には例えば図７に示すような命令文単位で変換していくことになる。
図７の最も左側に、図示表現プログラムの一例を示す。この例では、入力がＳi０、Ｓi１（それぞれ、論理名で１Ｗ領域を示す）で、これらを加算（＋Ｓ）するコマンドが示されている。これをテキスト表現にしたもの（＋Ｓ  Ｓi０  Ｓi１）をその右側に示す。ここで、旧コマンド「＋Ｓ」に対応する新コマンドが「＋」であり、また「＋Ｓ」は１Ｗ（ワード）命令であり、１Ｗ（ワード）命令に対応する疑似命令として「α」が用意されていたとすると、新中間言語への変換／インタプリト部１５による処理の結果は、図示の通り（＋  αＳi０  αＳi１）となる。
【００４９】
図示していないが、旧コマンドには２Ｗ（ワード）命令も存在するものとし、新コマンド「＋」は、１Ｗ／２Ｗの両方を実行できる命令であるとする。この場合、中間言語の逆変換部１６は、（＋  αＳi０  αＳi１）を逆変換する際、疑似命令「α」があることによって、１Ｗ（ワード）命令すなわち「＋Ｓ」へと逆変換すべきことを判断できるので、図示の通り、（＋Ｓ  Ｓi０  Ｓi１）へと逆変換できる。
【００５０】
ところで、上述した説明中でも少し触れたが、上述したように旧コマンドを新コマンドに変換したり、疑似命令を挿入したりしても、新命令体系で正しく動作させられないケースが存在する。図８にその一例を示す。
【００５１】
図８（ａ）には、１Ｗ（ワード）、２Ｗ（ワード）共に、その最上位ビットを、データとしてではなく、サインフラグとして扱う例を示している。良く知られているように、サインフラグは、正／負を表すフラグであり、負の場合にセット（１）、正の場合にリセット（０）される。
【００５２】
ここで、同図（ｂ）の左側に示すような「1001 1001 1001 1001」というデータがあったものとする。これを１Ｗ（ワード）として扱うか、２Ｗ（ワード）として扱うかによって意味が違ってくる。すなわち、１Ｗ（ワード）として扱う場合には最上位ビット（図上、矢印で示す）がサインフラグを表すものと解釈され、この場合サインフラグが‘１’であるので負を表すことにより、結果、図示の通り、「−１９９９」と解される。
【００５３】
一方、２Ｗ（ワード）として扱う場合には、このデータは２Ｗ（ワード）の中の下位１Ｗ（ワード）と見做され、図示の通り、「００００  ９９９９」と解される（上位１Ｗ（ワード）は図示の通り‘００００’と見做される）。
【００５４】
この為、例えば図９（ａ）に示すように、旧命令体系におけるＢＣＤ変換命令が、ＢＣＤＳ（１Ｗ（ワード）用）、ＢＣＤ（２Ｗ（ワード）用）であったものが、新命令体系においては１Ｗ／２Ｗを区別しない命令（ＢＣＤ；以下、新ＢＣＤと呼ぶ）に変わっていたとする。この場合、疑似命令を付加したとしても、新中間言語／マシン語変換部１３で１Ｗ／２Ｗを区別できるわけではないので、正しい処理が行えなくなる。すなわち、例えば図９（ａ）上側のようにＢＣＤＳへの入力値が「−１２３」である場合、「−１２３」（−０１２３）は１Ｗ（ワード）で扱う場合には２進表記で「1000 0001 0010 0011」（先頭１ビットはサインフラグ）となるが、これを２Ｗ（ワード）とした場合には「８１２３」と解釈されてしまう。（尚、新ローダで作成されたプログラムは、データにオペランドが付加してあり、これによって新ＢＣＤ命令自体は１Ｗ／２Ｗを区別しない命令であっても区別可能となっている）。
【００５５】
このような問題に対し、本例の新中間言語への変換／インタプリト部１５では、図９（ｂ）に示すように、例えば旧命令ＢＣＤＳを新ＢＣＤに変換する際に（図示していないが、疑似命令も付加している）、「１Ｗレジスタ格納命令」を挿入する処理を実行している。これにより、後に演算実行部２０でこの命令を実行する際には、データ「−１２３」が１Ｗレジスタに格納されてＢＣＤ変換処理が実行されることになるので、正しい演算結果が得られる。同様に、旧ＢＣＤ命令を新ＢＣＤ命令に変換する際には、「２Ｗレジスタ格納命令」を挿入すればよい。
【００５６】
図９（ｃ）は図９（ｂ）をテキスト表現で表したものである。
図９（ｃ）において、「：＝」は代入命令を意味し、「ＳＴ０」は１Ｗレジスタを意味する。よって、（：＝  −１２３  ＳＴ０）は、データ−１２３を１Ｗレジスタに格納することを意味する。そして、（ＢＣＤ  ＳＴ０）により、１Ｗレジスタに格納されたデータがＢＣＤ変換される。尚、１命令が複数の命令に変換された場合には、疑似命令は、図示のように複数の命令を囲むように前後に挿入される。これを、一般化して示すと、図１０のようになる。
【００５７】
尚、上記のようなインタプリト処理内容は、予め開発者等が設定しておく。
図１０には、旧命令体系におけるコマンド（命令Ａ）が、複数の命令（前処理、新命令、後処理）にインタプリトされる様子を示す。
【００５８】
命令Ａは例えば上記ＢＣＤＳに相当し、新命令は上記新ＢＣＤに相当し、前処理は上記（：＝  −１２３  ＳＴ０）に相当し、（ＢＣＤ  ＳＴ０）におけるＳＴ０が後処理に相当する。
【００５９】
そして、これら複数の命令の前後に疑似命令（命令Ａ処理始まり、終りをそれぞれ示す疑似命令）を挿入する。これより、中間言語の逆変換部１６では、これら複数の命令は、命令Ａへと逆変換すべきものと判断できる。
【００６０】
上述した例では、旧機種から新機種へのバージョンアップに伴うアーキテクチャの一部変更（アーキテクチャ自体は同じであるが、命令の一部を変更）に対応できるもの（旧／新ローダの混在動作可能）として説明したが、本発明はこれに限るものではなく、全く別のアーキテクチャを持つ機種同士であっても、それぞれのローダで作成されたアプリケーションプログラムを混在動作可能にできる。
【００６１】
例えば、あるアーキテクチャに従ってあるローダで図１１（ａ）に示すプログラム（ＲＤ  Ａ，ＡＮＤ  Ｂ，ＷＴ  Ｃ）が作成されていたとする（その上にはこれのラダー図表現プログラムを示している）。これは通常はこのアーキテクチャに従った機器（プログラマブルコントローラ）にダウンロードして動作させるものであるが、本発明による言語変換方法を利用すれば、別のアーキテクチャに従った機器と接続してダウンロードしても動作させることができる。例えば、８０ｘ８６系のアーキテクチャのプログラマブルコントローラにダウンロードしても、このコントローラのインタフェース部が８０ｘ８６系への命令変換／インタプリト（同じ動作を行わせる命令となるように置き換える）する機能を備えていれば（開発者等が設定しておく）、このコントローラの演算実行部で正しく動作できるようになる。図１１（ｂ）には、図１１（ａ）に示すプログラムを、８０ｘ８６系のアーキテクチャ下で動作するように変換／インタプリトした例を示す。
【００６２】
尚、従来でも、プログラム（ＲＤ  Ａ，ＡＮＤ  Ｂ，ＷＴ  Ｃ）をコンパイルして８６系オブジェクトを生成することは行われていたが、コンバート部１２０の場合と同様、デバッグ作業等が必要であった。
【００６３】
【発明の効果】
以上、詳細に説明したように、本発明のプログラマブルコントローラのインタフェース装置によれば、アーキテクチャが変更された機種、または異なるアーキテクチャの機種に対しても、そのまま旧ローダを接続してプログラムをダウンロードすれば動作可能とできる。
【図面の簡単な説明】
【図１】本実施の形態によるプログラマブルコントローラの構成ブロック図である。
【図２】図１に示す構成の一部を詳細に説明する為の図である。
【図３】新旧コマンド判断部の処理内容について説明する為の図である。
【図４】プログラマブルコントローラの性能ＵＰによる処理速度ＵＰに対応する処理について説明する為の図である。
【図５】命令機能のＵＰに対応する処理を説明する為の図（その１）である。
【図６】命令機能のＵＰに対応する処理を説明する為の図（その２）である。
【図７】命令機能のＵＰに対応する処理を説明する為の図（その３）である。
【図８】インタプリト処理について説明する為の図（その１）である。
【図９】インタプリト処理について説明する為の図（その２）である。
【図１０】インタプリト処理について説明する為の図（その３）である。
【図１１】応用例を説明する為の図である。
【図１２】従来のプログラマブルコントローラの構成ブロック図である。
【図１３】アーキテクチャの一部変更に対する従来の対応方法を説明する為の図（その１）である。
【図１４】アーキテクチャの一部変更に対する従来の対応方法を説明する為の図（その２）である。
【符号の説明】
１  プログラマブルコントローラ
１０  ローダＩ／Ｆ部
１１  新旧コマンド判断部
１２  新コマンド解読部
１３  新中間言語／マシン語変換部
１４  旧コマンド解読部
１５  新中間言語への変換／インタプリト部
１６  中間言語の逆変換部
２０  演算実行部
２１  プログラムメモリ
２２  ＣＰＵ部
２３  Ｉ／Ｏ部
３０Ａ  旧ローダ
３０Ｂ  新ローダ
【図１】
0004258140.tif 000002
【図２】
0004258140.tif 000003
【図３】
0004258140.tif 000004
【図４】
0004258140.tif 000005
【図５】
0004258140.tif 000006
【図６】
0004258140.tif 000007
【図７】
0004258140.tif 000008
【図８】
0004258140.tif 000009
【図９】
0004258140.tif 000010
【図１０】
0004258140.tif 000011
【図１１】
0004258140.tif 000012
【図１２】
0004258140.tif 000013
【図１３】
0004258140.tif 000014
【図１４】
0004258140.tif 000015