(57)【要約】【課題】シーケンス制御を高速に実行することのできるメモリ制御装置を得る。【解決手段】ビット演算テーブル格納部１０は、ビット単位の論理演算の結果を予めテーブルとして保持する。ルックアップテーブル部１９は、ビット演算テーブル格納部１０の１つのテーブルを保持する。データラッチ部１７は、ビット抽出挿入部１６が抽出したビットデータをラッチし、ビットセレクタ部１８は、データラッチ部１７がラッチしたビットデータの出力に応じて、ルックアップテーブル部１９に保持したテーブルから１つのビットを選択する。リードライト制御部２０は、デバイスメモリ６への書きこみに対してデバイスメモリ６から読み出したワードデータのうち１ビットをビットセレクタ部１８が出力する１ビットと入れ替えたワードデータを再度デバイスメモリ６へ書き戻す制御を行う。【選択図】図１
2015014934.tif 000002
【特許請求の範囲】
【請求項１】
接点の論理演算からなるラダーを処理するプログラマブルコントローラにおけるデバイスメモリの値を制御するメモリ制御装置において、
ビット単位の前記論理演算の結果を予めテーブルとして保持するビット演算テーブル格納部と、
前記ビット演算テーブル格納部から１つのテーブルを取得して保持するルックアップテーブル部と、
前記デバイスメモリから読み出されたワードデータからビット選択入力に基づいてビットデータを抽出するビット抽出挿入部と、
前記ビット抽出挿入部が抽出したビットデータをラッチするデータラッチ部と、
前記データラッチ部がラッチしたビットデータの出力に応じて、前記ルックアップテーブル部に保持したテーブルから１つのビットを選択するビットセレクタ部と、
前記デバイスメモリへの書きこみに対して当該デバイスメモリからワードデータを読み出し、このワードデータのうち１ビットを前記ビットセレクタ部が出力する１ビットと入れ替えたワードデータを再度前記デバイスメモリへ書き戻す制御を行うリードライト制御部とを備えたことを特徴とするメモリ制御装置。
【請求項２】
ＣＰＵが実行する命令により前記接点の論理演算からなるラダーを処理するとともに、前記ビット選択入力は前記ＣＰＵより与えられることを特徴とする請求項１記載のメモリ制御装置。
【請求項３】
請求項１記載のメモリ制御装置を用い、コイルが複数あるブロックに対しては、前記ビット抽出挿入部からの出力を、出力すべきコイルの個数だけ前記デバイスメモリに連続して書き込むことを特徴とするメモリ制御方法。
【請求項４】
請求項１記載のメモリ制御装置を用い、接点とコイルは異なるが論理回路の構成が同じブロックの処理に対しては、前記ルックアップテーブル部にロードするテーブルは同じものを使用し、前記データラッチ部には異なる接点をラッチし、それぞれ該当するブロックのコイルに書き込むことを特徴とするメモリ制御方法。
【請求項５】
請求項１記載のメモリ制御装置を用い、ラダーのブロックに含まれる接点の個数が、予め定めた設定値よりも多いブロックに対して、中間変数を用いてブロックを分割して処理を行うことを特徴とするメモリ制御方法。
【請求項６】
前記ビットセレクタ部からの出力を前記データラッチ部に入力し、次のテーブルを前記ルックアップテーブル部にロードするタイミングで前記ビットセレクタ部から出力される中間変数を前記データラッチ部にラッチすることを特徴とする請求項５記載のメモリ制御方法。
【請求項７】
ラダーのブロックに含まれる接点の数がＮであり、２Nの値がテーブルのビット数Ｍより少ない場合、２Nビットのテーブルを並べてビット数Ｍに拡張したデータをテーブルとして前記ルックアップテーブル部にロードし、含まれる接点の値をラッチすることで演算結果を得ることを特徴とする請求項５記載のメモリ制御方法。
【請求項８】
前記ビットセレクタ部と前記ルックアップテーブル部とからなる演算部を複数備えるとともに、前記複数の演算部からの出力を選択する演算結果セレクタ部と、前記複数の演算部の中から、前記テーブルをロードする演算部を選択するためのテーブルセレクタ部とを備えたことを特徴とする請求項１記載のメモリ制御装置。
【請求項９】
請求項８記載のメモリ制御装置を用い、前記複数の演算部に連続して前記テーブルをロードしておき、ラダーのブロックを処理することを特徴とするメモリ制御方法。
【請求項１０】
請求項８記載のメモリ制御装置を用い、前記複数の演算部に、シーケンスに含まれるすべてのブロックについてのテーブルをロードして、ラダーのブロックを処理することを特徴とするメモリ制御方法。
【請求項１１】
接点の論理演算からなるラダーを処理するプログラマブルコントローラにおけるデバイスメモリの値を制御するメモリ制御装置において、
ＣＰＵからの開始イベント通知により、前記接点の論理演算からなるラダーの処理を開始し、処理が終了した場合に終了イベントを前記ＣＰＵに通知する命令処理部と、
ビット単位の前記論理演算の結果を予めテーブルとして保持するビット演算テーブル格納部と、
前記ビット演算テーブル格納部から１つのテーブルを取得して保持するルックアップテーブル部と、
前記デバイスメモリから読み出されたワードデータから、前記命令処理部から送出されるビット選択入力に基づいてビットデータを抽出するビット抽出挿入部と、
前記ビット抽出挿入部が抽出したビットデータをラッチするデータラッチ部と、
前記データラッチ部がラッチしたビットデータの出力に応じて、前記ルックアップテーブル部に保持したテーブルから１つのビットを選択するビットセレクタ部と、
前記デバイスメモリへの書きこみに対して当該デバイスメモリからワードデータを読み出し、このワードデータのうち１ビットを前記ビットセレクタ部が出力する１ビットと入れ替えたワードデータを再度前記デバイスメモリへ書き戻す制御を行うリードライト制御部と、
前記ＣＰＵと前記命令処理部との前記デバイスメモリへのアクセスを調停するバス調停部とを備えたことを特徴とするメモリ制御装置。
【請求項１２】
請求項１１記載のメモリ制御装置を用い、前記命令処理部による前記接点の論理演算と、前記ＣＰＵによる当該論理演算以外の処理とを並列に実行することを特徴とするメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、シーケンス処理のビット演算を行うプログラマブルコントローラにおけるデバイスメモリの値を制御するメモリ制御装置及びメモリ制御方法に関するものである。
【背景技術】
【０００２】
従来のプログラマブルコントローラにおける論理演算処理を行う装置では、レジスタ、命令デコーダ実行部、命令処理実行部、メモリリード・ライト実行部を備え、シーケンス処理を実行する（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平２−７５００３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＣＰＵを用いたプログラマブルコントローラでラダー図に従ったシーケンス制御を実行するにあたっては、シーケンス制御中の接点の論理演算およびコイル出力からなる回路ブロックを処理する際に１ビットの演算および１ビットのデータをワードデータから抽出、挿入する操作が必要となる。１ビットの接点データをデバイスメモリから取得する際に特定の１ビットを抽出する操作が必要となり、接点同士の論理演算においてビット演算が必要となる。また、演算した１ビットの結果をコイルとして出力するためにデバイスメモリに書き込みを行うが、このときにワードデータに１ビットを挿入するリードモディファイライトの処理が必要となる。
【０００５】
このようなビット処理を行うための命令を備えていないＣＰＵを用いてシーケンス制御を高速に実行することを考えた場合、ＣＰＵに対してビット演算処理用の命令回路を付加するか、ＣＰＵの既存の命令を複数組み合わせてビット処理を実行することが必要になる。既存のＣＰＵに対して新たなビット演算処理用の命令回路を付加するといった手段の場合は、回路の大規模な修正が必要となるという問題があった。また、既存の命令を複数組み合わせてビット処理を実行するようにした場合は、ビット演算処理のために実行する命令サイクルが余分に必要となり、その結果、処理時間が長くなって、シーケンス制御を高速に実行することが困難であるという課題があった。
【０００６】
この発明は上記のような課題を解決するためになされたもので、シーケンス制御を高速に実行することのできるメモリ制御装置及びメモリ制御方法を得ることを目的とする。
【課題を解決するための手段】
【０００７】
この発明に係るメモリ制御装置は、接点の論理演算からなるラダーを処理するプログラマブルコントローラにおけるデバイスメモリの値を制御するメモリ制御装置において、ビット単位の論理演算の結果を予めテーブルとして保持するビット演算テーブル格納部と、ビット演算テーブル格納部から１つのテーブルを取得して保持するルックアップテーブル部と、デバイスメモリから読み出されたワードデータからビット選択入力に基づいてビットデータを抽出するビット抽出挿入部と、ビット抽出挿入部が抽出したビットデータをラッチするデータラッチ部と、データラッチ部がラッチしたビットデータの出力に応じて、ルックアップテーブル部に保持したテーブルから１つのビットを選択するビットセレクタ部と、デバイスメモリへの書きこみに対してデバイスメモリからワードデータを読み出し、このワードデータのうち１ビットをビットセレクタ部が出力する１ビットと入れ替えたワードデータを再度デバイスメモリへ書き戻す制御を行うリードライト制御部とを備えたものである。
【発明の効果】
【０００８】
この発明のメモリ制御装置は、ビット単位の論理演算の結果を予めテーブルとして保持し、接点データを１ビットずつ読み出すことによりこのデータをアドレスとしてテーブルから正しい演算結果を選択し、求めた１ビットの演算結果をデバイスメモリに書き込むようにしたので、シーケンス制御の接点の論理演算のブロックに対して、ビット演算を処理実行用の複数命令を実行せずにビット演算処理が可能になり、高速なプログラマブルコントローラが実現可能となる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態１によるメモリ制御装置の構成図である。
【図２】ラダー図のａ接点、ｂ接点、コイルを示す説明図である。
【図３】シーケンス制御のラダー図の一例を示す説明図である。
【図４】コイルを３つ有するブロックの例を示す説明図である。
【図５】接点が７つあるブロックの例を示す説明図である。
【図６】図５に示すブロックを分割した場合のブロックを示す説明図である。
【図７】本発明の実施の形態４によるメモリ制御装置の構成図である。
【図８】本発明の実施の形態５によるメモリ制御装置の演算部を示す構成図である。
【図９】本発明の実施の形態５によるメモリ制御装置の構成図である。
【図１０】本発明の実施の形態６によるメモリ制御装置の構成図である。
【図１１】本発明の実施の形態６によるメモリ制御装置の命令格納部に記録される命令列の例を示す説明図である。
【発明を実施するための形態】
【００１０】
実施の形態１．
図１は、この発明の実施の形態１によるメモリ制御装置を示す構成図である。
図１に示すメモリ制御装置は、ＣＰＵ（マイクロプロセッサ）１、ＣＰＵアドレス線２、ＣＰＵデータ線３、ライトイネーブル線４、リードイネーブル線５、デバイスメモリ６、デバイスメモリデータ線７、デバイスメモリリードイネーブル線８、デバイスメモリライトイネーブル線９、ビット演算テーブル格納部１０、メモリアドレス線１１、メモリデータ線１２、メモリリードイネーブル線１３、ビット選択線１４、演算結果ビット線１５、ビット抽出挿入部１６、データラッチ部１７、ビットセレクタ部１８、ルックアップテーブル部１９、リードライト制御部２０、テーブルアドレス生成部２１を備えている。
【００１１】
ＣＰＵ１は、ラダー図の論理演算を行うと共に、これ以外の応用命令や算術演算命令等による演算処理を行うプロセッサであり、デバイスメモリ６とはＣＰＵアドレス線２で接続され、リードライト制御部２０に対しては、ライトイネーブル線４とリードイネーブル線５とが接続されている。ＣＰＵアドレス線２の信号線のうち、デバイスメモリ６とは、デバイスメモリ６の容量分の信号数が接続されている。また、ＣＰＵアドレス線２の信号線のうちいくつかがビット選択線１４として取り出されてビット抽出挿入部１６に接続されている。デバイスメモリ６のワードサイズが１６ビットの場合に必要なビット選択線１４は４本、３２ビットの場合は５本となる。デバイスメモリ６のデバイスメモリデータ線７はビット抽出挿入部１６に接続されている。またＣＰＵ１のリードイネーブル線５はリードライト制御部２０とデータラッチ部１７に接続されている。
【００１２】
ＣＰＵ１とテーブルアドレス生成部２１とはＣＰＵデータ線３およびライトイネーブル線４で接続されている。デバイスメモリ６は、ラダー図の接点、コイルのオンかオフかを１、０で示す情報を記憶するメモリであり、ビット抽出挿入部１６とはデバイスメモリデータ線７で接続され、また、リードライト制御部２０とは、デバイスメモリリードイネーブル線８およびデバイスメモリライトイネーブル線９で接続されている。ビット演算テーブル格納部１０は、ラダー図におけるビット単位の論理演算の結果を予めテーブルとして保持するテーブル格納部であり、テーブルアドレス生成部２１からはメモリアドレス線１１を介してアドレスが与えられ、かつ、メモリリードイネーブル線１３からリードの有効／無効が指定される。さらに、読み出されたテーブルはメモリデータ線１２を介してルックアップテーブル部１９に送出されるよう構成されている。演算結果ビット線１５はビットセレクタ部１８からビット抽出挿入部１６に対して演算結果を送出するための信号線である。
【００１３】
ビット抽出挿入部１６は、デバイスメモリ６から読み出されたワードデータからビット選択線１４のビット選択入力に基づいてビットデータを抽出するとともに、演算結果ビット線１５のビットデータを入れ替えたワードデータをデバイスメモリ６に書き戻す回路である。データラッチ部１７は、リードイネーブル線５の有効／無効に基づいて、ビット抽出挿入部１６が出力するビットデータをラッチする回路である。ビットセレクタ部１８は、データラッチ部１７にラッチされた接点情報を元にルックアップテーブル部１９のテーブルから演算結果の１ビットを選択して演算結果ビット線１５に出力する回路である。ルックアップテーブル部１９は、ビット演算テーブル格納部１０のテーブルを格納する回路である。リードライト制御部２０は、デバイスメモリ６への書きこみに対してデバイスメモリ６からワードデータを読み出し、このワードデータのうち１ビットをビットセレクタ部１８が出力する１ビットと入れ替えたワードデータを再度デバイスメモリ６へ書き戻す制御を行うための制御部である。テーブルアドレス生成部２１は、ＣＰＵデータ線３からのアドレスに基づいてビット演算テーブル格納部１０におけるテーブルを選択するためのアドレスをメモリアドレス線１１を介してビット演算テーブル格納部１０に与えるとともに、メモリリードイネーブル線１３を有効にしてビット演算テーブル格納部１０からテーブルを読み出すための回路である。
【００１４】
本発明はラダー図で示されるシーケンス制御を実行する装置である。図２に示すａ接点とｂ接点の個数が合計５個でこれらを並列接続、直列接続で接続し、１つのコイルに接続された構成をとる組み合わせを１つのブロックとする。このような論理演算からなるブロックを含むシーケンス制御のラダー図の例を図３に示す。本装置はこのブロックの演算を実行する際に高速化の効果が得られる。
【００１５】
本装置のビット演算テーブル格納部１０には、シーケンス制御を開始する前に、図２のシーケンス制御の演算結果を示すテーブルが格納される。例えば、図３に示されるブロックｍでは接点は５つあるためこれらの論理演算結果のパターンは２5（３２）通りである。０か１かの論理値を取る接点の値Ｐm[0]−Ｐm[4]が確定すれば３２通りのうち１つの演算結果を確定できる。テーブルは演算結果の３２通りを３２個の１、０の値で示して並べたものを１つとする。ビット演算テーブル格納部１０は、シーケンス制御のブロックごとのテーブルを保持する。
【００１６】
次に、動作の一例として図３に示されるブロックｍを処理する手順について説明する。
最初にこのブロックｍの演算結果に該当するテーブルをビット演算テーブル格納部１０より読み出すためにＣＰＵ１はライトイネーブル線４を有効にして、ＣＰＵデータ線３からビット演算テーブル格納部１０のメモリに対してアドレスを出力する。ライトイネーブル線４とＣＰＵデータ線３はテーブルアドレス生成部２１に接続されており、テーブルアドレス生成部２１は、ビット演算テーブル格納部１０に対して、メモリアドレス線１１からテーブルのアドレスを出力し、メモリリードイネーブル線１３を有効にすることで演算を実行するラダーブロックのテーブルを読み出すことができる。読み出されたラダーブロックのテーブルはメモリデータ線１２を介してルックアップテーブル部１９に保持される。テーブルをビット演算テーブル格納部１０より読み出してルックアップテーブル部１９に格納する処理はＣＰＵ１のストア命令の１命令サイクルで実行可能となっている。
【００１７】
ブロックの処理を行うためにＣＰＵ１はリードイネーブル線５を有効にして、ＣＰＵアドレス線２からブロック内の接点を含むワードを読み出すためのアドレスを出力する。リードライト制御部２０はリードイネーブル線５が有効でライトイネーブル線４が無効の場合にデバイスメモリリードイネーブル線８を有効にする。ビット選択線１４にはそのワードのどの位置に接点の１ビットが含まれているかを示す信号を出力する。１ワードが１６ビットの場合、ビット選択線１４の４本の信号で任意の１ビットを選択できる。デバイスメモリ６は演算を実行する接点を含むワードデータをデバイスメモリデータ線７でビット抽出挿入部１６へ出力する。ビット抽出挿入部１６はビット選択線１４の情報を元に演算を実行する接点の１ビットのみを抽出する。リードイネーブル線５が有効になっているため、データラッチ部１７は抽出した１ビット情報をラッチする。以上の１つの接点のビットデータをデバイスメモリ６から読み出し、データラッチ部１７にラッチするまでにＣＰＵ１はロード命令を１回実行する。図３に示すブロックｍを演算するためにはＰm[0]−Ｐm[4]の５つの接点の１ビット情報を読み出必要があり、ＣＰＵ１はロード命令を５回実行することで５つの接点情報をデータラッチ部１７に保持するができる。
【００１８】
データラッチ部１７とルックアップテーブル部１９はビットセレクタ部１８に接続されており、ビットセレクタ部１８はデータラッチ部１７にラッチされた接点情報を元にルックアップテーブル部１９のテーブルから演算結果の１ビットを選択して、演算結果ビット線１５に出力する。
【００１９】
ＣＰＵ１はデバイスメモリ６の中のコイルのオン、オフ情報を示すＱmを含むワードを指定するアドレスをＣＰＵアドレス線２で指定し、ライトイネーブル線４を有効にする。ライトイネーブル線４が接続されたリードライト制御部２０はリードイネーブル線５が無効、ライトイネーブル線４が有効になっている場合はデバイスメモリリードイネーブル線８を有効にし、ＣＰＵアドレス線２で指定されたワードをデバイスメモリ６から読み出し、デバイスメモリデータ線７に出力させる。次にデバイスメモリデータ線７からビット抽出挿入部１６に入力されるワードのうちビット選択線１４で指定するＱmのビットを演算結果ビット線１５の信号に置き換えたデータを生成する。そしてデバイスメモリリードイネーブル線８を無効にし、デバイスメモリライトイネーブル線９を有効に、そのデータをデバイスメモリデータ線７でデバイスメモリ６へ出力することでデバイスメモリ６のコイルＱmの出力情報を演算によって変更した値を書き込む。この際、次のシーケンス制御のブロックを演算するためのテーブルをビット演算テーブル格納部１０からリードするためにＣＰＵデータ線３から、テーブルのメモリ位置を示すアドレス情報を出力する。これによってコイル情報Ｑmのリードモディファイライトとともに次のブロックのテーブルをルックアップテーブル部１９にロードすることを同時に行うことができる。
【００２０】
以上の処理を連続実行することによってシーケンス制御の中で５つの接点と１つのコイルを含むブロックの処理をＣＰＵ１のロード命令５回とストア命令１回で処理できるという効果が得られる。
【００２１】
以上説明したように、実施の形態１のメモリ制御装置によれば、接点の論理演算からなるラダーを処理するプログラマブルコントローラにおけるデバイスメモリの値を制御するメモリ制御装置において、ビット単位の前記論理演算の結果を予めテーブルとして保持するビット演算テーブル格納部と、ビット演算テーブル格納部から１つのテーブルを取得して保持するルックアップテーブル部と、デバイスメモリから読み出されたワードデータからビット選択入力に基づいてビットデータを抽出するビット抽出挿入部と、ビット抽出挿入部が抽出したビットデータをラッチするデータラッチ部と、データラッチ部がラッチしたビットデータの出力に応じて、ルックアップテーブル部に保持したテーブルから１つのビットを選択するビットセレクタ部と、デバイスメモリへの書きこみに対してデバイスメモリからワードデータを読み出し、このワードデータのうち１ビットをビットセレクタ部が出力する１ビットと入れ替えたワードデータを再度デバイスメモリへ書き戻す制御を行うリードライト制御部とを備えたので、シーケンス制御を構成する接点の論理演算からなるブロックに対して、テーブルをルックアップテーブル部に取り込み、デバイスメモリから接点の数だけビットデータを読み出して、コイルを含むワードをデバイスメモリに書き込むだけで処理できる。すでに演算された結果としてテーブルを持つため接点の入力データのみによって結果を選択するだけであるため、個別の論理演算用の回路は不要で簡単な回路で実現できる。
【００２２】
また、実施の形態１のメモリ制御装置によれば、ＣＰＵが実行する命令により接点の論理演算からなるラダーを処理するとともに、ビット選択入力はＣＰＵより与えられるようにしたので、ビット演算処理を持たないＣＰＵを用いた場合であっても、回路の大規模な修正等も必要なく、かつ、シーケンシャル制御を高速に実行することができる。
【００２３】
実施の形態２．
実施の形態１ではコイルが１つのブロックに関しての実行であったが、コイルは複数あってもよい。図４に示すブロックを実行する際は３つのコイルに出力する必要があるが、実施の形態１の接点のデータラッチによって演算結果ビット線１５に演算結果が出力された後、３回、対象となるコイルを含むデバイスメモリの中のワードに対する書きこみを実行すればよい。即ち、コイルが複数あるブロックに対しては、ビット抽出挿入部１６からの出力を、出力すべきコイルの個数だけデバイスメモリ６に連続して書き込む。
【００２４】
実施の形態２では、最初の２回の書きこみでＣＰＵデータ線３からは現在実行しているブロックのテーブルを示すアドレスを出力してルックアップテーブル部１９におけるルックアップテーブルが変わらないようにして、３回目のコイルの書き込みでＣＰＵデータ線３から次のブロックのテーブルを示すアドレスを出力すると良い。
【００２５】
以上説明したように、実施の形態２のメモリ制御方法によれば、実施の形態１に記載したメモリ制御装置を用い、コイルが複数あるブロックに対しては、ビット抽出挿入部からの出力を、出力すべきコイルの個数だけデバイスメモリに連続して書き込むようにしたので、シーケンス制御のブロックに複数コイル出力のあるブロックに対しても実施の形態１の処理を実現することができる。
【００２６】
実施の形態３．
論理演算回路が同じであるが、接点が異なる複数ブロックに関してはビット演算テーブル格納部１０に保持するテーブルを共有してもよい。例えば、図３に示されるシーケンス制御のうちブロックｋとブロックｔについて、接点は異なるが同じ論理演算であるため１つのテーブルを共有できる。テーブルをロードするときには当該テーブルをビット演算テーブル格納部１０より読み出し、演算実行時にデータラッチ部１７にラッチする接点を変更すればよい。すなわち、接点とコイルは異なるが論理回路の構成が同じブロックの処理に対しては、ルックアップテーブル部１９にロードするテーブルは同じものを使用し、データラッチ部１７には異なる接点をラッチし、それぞれ該当するコイルに書き込む。
このように同じ論理演算回路で異なる接点を用いるブロックに対してテーブルを共有化することでビット演算テーブル格納部１０のメモリ容量を減らす効果がある。
【００２７】
以上説明したように、実施の形態３のメモリ制御方法によれば、接点とコイルは異なるが論理回路の構成が同じブロックの処理に対しては、ルックアップテーブル部にロードするテーブルは同じものを使用し、データラッチ部には異なる接点をラッチし、それぞれ該当するブロックのコイルに書き込むようにしたので、テーブルの数を少なくすることができ、ビット演算テーブル格納部のメモリ容量を節約することができる。
【００２８】
実施の形態４．
演算を行うシーケンス制御の１ブロックの中に接点は５個に限る必要はなく任意の個数Ｘ個でよい。データラッチ部１７に１ビットを保持できるレジスタの個数をＸ個とする。シーケンス制御の１ブロックに含まれる接点の個数がＸ個より少ないＹ個の場合は、演算結果のテーブルは２Yビットからなるが、２Yビットのデータを２X―Y個並べて２xビットとしてビット演算テーブル格納部１０におく。演算結果は接点のビット情報のロードをＹ回実行すれば、ビット演算テーブル格納部１０からルックアップテーブル部１９にロードした２xビットからビットセレクタ部１８が選択することができる。シーケンス制御の１ブロックに含まれる接点の個数がＸ個より多いブロックを処理する際は、中間データ保持変数を作り、Ｘ個ずつの接点を含むブロックに分割する。これによりブロックに含まれる接点の個数によって可変サイズのデータラッチ部１７を構成する必要がなくなり、またビット演算テーブル格納部１０に格納するテーブルのサイズが巨大になりすぎることを防ぐ効果が得られる。
【００２９】
例えば、接点の数が５より大きい７個を含むブロックを示す図５に対して、中間変数を導入することにより２つのブロックに分割した様子を図６に示す。図５に示すラダーブロックは７個の接点を含むが、中間変数としてＭmを用いると図６に示すようにブロックａとブロックｂの２つのブロックに分割できる。それぞれの接点が５個以下なので実施の形態１で示したメモリ制御装置によって演算が実行できるようになる。その際、実施の形態１のままではブロックａの処理完了時にＭmの値をデバイスメモリ６に書き、ブロックｂを処理する際に再び読み出すという手順が必要となり、ストアとロードの２回の命令サイクルを要することになる。
【００３０】
そこで、実施の形態４では、図７に示すように、演算結果ビット線１５、ＣＰＵアドレス線２、ライトイネーブル線４をデータラッチ部１７に接続する。そして、ＣＰＵアドレス線２で定義するアドレスに対して、データラッチ部１７は演算結果ビット線１５に出力されている値をライトイネーブル線４が有効なときに保持するようにする。このようにするとＭmの値が確定した後、ＣＰＵ１はＣＰＵデータ線３に次のブロックのテーブルを示すアドレスを出力しライトイネーブル線４を有効にすることでルックアップテーブル部１９にテーブルをロードするとともにＭmをデータラッチ部１７に取り込むことができる。従ってＭmをデバイスメモリ６から読み出す、ロード命令サイクルが不要となり命令サイクルを２回から１回に減らす効果が得られる。なお、図７におけるその他の構成は図１に示した実施の形態１と同様である。
【００３１】
以上説明したように、実施の形態４のメモリ制御方法によれば、実施の形態１のメモリ制御装置を用い、ラダーのブロックに含まれる接点の個数が、予め定めた設定値よりも多いブロックに対して、中間変数を用いてブロックを分割して処理を行うようにしたので、テーブルサイズを一定にすることができ、ブロックに含まれる接点の数に応じて指数関数的にテーブルサイズが大きくなることを防ぐことができる。
【００３２】
また、実施の形態４のメモリ制御方法によれば、ビットセレクタ部からの出力をデータラッチ部に入力し、次のテーブルをルックアップテーブル部にロードするタイミングでビットセレクタ部から出力される中間変数をデータラッチ部にラッチするようにしたので、ブロックを分割して処理する際の中間変数をデバイスメモリに書き、再度読み出してラッチする処理を不要とすることができる。
【００３３】
また、実施の形態４のメモリ制御方法によれば、ラダーのブロックに含まれる接点の数がＮであり、２Nの値がテーブルのビット数Ｍより少ない場合、２Nビットのテーブルを並べてビット数Ｍに拡張したデータをテーブルとしてルックアップテーブル部にロードし、含まれる接点の値をラッチすることで演算結果を得るようにしたので、ブロックに含まれる接点数が少ない場合でも同一回路で処理を行うことができる。
【００３４】
実施の形態５．
図８のようにビットセレクタ部１８とルックアップテーブル部１９を組み合わせた演算部２２を複数個備えてもよい。その場合には図９に示すように演算結果セレクタ部２４とテーブルセレクタ部２３を設ける。データラッチ部１７でラッチした接点の値はすべて演算部２２のそれぞれに入力されている。ＣＰＵ１から出力するＣＰＵデータ線３の信号によって、テーブルセレクタ部２３はビット演算テーブル格納部１０から得られるテーブルをどの演算部２２にロードするかを決定する。また、ＣＰＵ１から出力されるＣＰＵデータ線３の信号を演算結果セレクタ部２４がデコードして複数有する演算部２２の結果から必要な演算結果を選択する。その他の構成は図１に示した実施の形態１の構成と同様であるため、対応する部分に同一符号を付してその説明を省略する。
【００３５】
このように、実施の形態５では、シーケンス制御の論理演算のブロックと同じ数だけの演算部２２を備えることにより、ビット演算テーブル格納部１０からテーブルをロードするのは最初の一回で済むことになる。また、シーケンス制御に含まれる論理演算のブロックと同じ数の演算部２２を持つことが回路の規模の点などから不可能であった場合でも、できるだけ多くの演算部２２を持つことで連続してテーブルをロードすることができるようになる。
【００３６】
実施の形態１ではブロックを処理するごとに１回のテーブルをロードしていたが、連続してテーブルをロードすることができるようになると、ビット演算テーブル格納部１０のメモリがフラッシュメモリやＤＲＡＭ、あるいはネットワークによって接続された記録装置を使用する場合は１回のリードよりも連続してリードするほうが高速にアクセスできるため、本装置の処理性能を向上させる効果が得られる。
【００３７】
以上説明したように、実施の形態５のメモリ制御装置によれば、ビットセレクタ部とルックアップテーブル部とからなる演算部を複数備えるとともに、複数の演算部からの出力を選択する演算結果セレクタ部と、複数の演算部の中から、テーブルをロードする演算部を選択するためのテーブルセレクタ部とを備えたので、ビット演算テーブル格納部からのテーブルのロードを連続で実行できることにより、連続アクセスが速いフラッシュメモリやＤＲＡＭで高速化の効果が得られる。また、シーケンスに含まれるすべての論理演算のブロックを演算部にロードすることができる場合は１回だけテーブルをロードするだけで処理を行うことができる。
【００３８】
また、実施の形態５のメモリ制御方法によれば、実施の形態５のメモリ制御装置を用い、複数の演算部に連続してテーブルをロードしておき、ラダーのブロックを処理するようにしたので、ビット演算テーブル格納部からのテーブルのロードを連続で実行できることにより、連続アクセスが速いフラッシュメモリやＤＲＡＭで高速化の効果が得られる。また、シーケンスに含まれるすべての論理演算のブロックを演算部にロードすることができる場合は１回だけテーブルをロードするだけで処理を行うことができる。
【００３９】
また、実施の形態５のメモリ制御方法によれば、実施の形態５のメモリ制御装置を用い、複数の演算部に、シーケンスに含まれるすべてのブロックについてのテーブルをロードして、ラダーのブロックを処理するようにしたので、シーケンスに含まれるすべての論理演算のブロックを演算部にロードすることができる場合は１回だけテーブルをロードするだけで処理を行うことができる。
【００４０】
実施の形態６．
実施の形態１ではＣＰＵ１の実行するロード命令、ストア命令を使用して接点情報のロード、コイルの書き込み処理を行っていたが図１０に示す実施の形態６では命令処理部３５によって命令コードを記録した命令格納部３２から命令コードを読み出し、シーケンス制御の論理演算のブロックを処理する。命令格納部３２は図１１に示すオペコードとオペランドからなる命令列が格納されているメモリである。オペコードとしてロード、オペランドとしてアドレスの組からなる命令とオペコードとしてストア、オペランドとしてアドレス、データの組みからなる命令を有する。ＣＰＵ１とバス調停部３８とは、ＣＰＵリードイネーブル線３６、ＣＰＵライトイネーブル線３７、ＣＰＵバスリクエスト線２６、ＣＰＵバスアクノリジ線３９、ＣＰＵアドレス線２、ＣＰＵデータ線３によって接続されている。
【００４１】
また、命令処理部３５とバス調停部３８とは、バスリクエスト線２９、バスアクノリジ線４０、バスアドレス線３０で接続されている。バスアドレス線３０からは、実施の形態１のＣＰＵアドレス線２と同様に、信号線のうちいくつかがビット選択線１４として取り出されてビット抽出挿入部１６に接続されている。バス調停部３８とデバイスメモリ６とは、デバイスメモリアドレス線２５、デバイスメモリリードイネーブル線８、ビット選択線１４、デバイスメモリデータ線７で接続されている。また、バス調停部３８とビット抽出挿入部１６とはバスデータ線４１で接続されている。
【００４２】
バス調停部３８は、ＣＰＵバスリクエスト線２６とバスリクエスト線２９がともに有効になり、ＣＰＵ１と命令処理部３５の両者がデバイスメモリ６へのアクセスを要求したときにどちらか一方へアクセス許可を与える調停部である。片方しか要求がない場合はアクセス要求をしている方に許可を与える。アクセス許可はＣＰＵ１に対してはＣＰＵバスアクノリジ線３９を有効にすることで与える。命令処理部３５へはバスアクノリジ線４０を有効にすることで許可を与える。このバス調停部３８の機能によってＣＰＵ１と命令処理部３５はともにデバイスメモリ６へアクセスができるようになる。
【００４３】
命令処理部３５は、命令格納部３２に収められている命令のうちどのアドレスから実行を開始するかを指定するアドレスを保持する開始アドレスレジスタ４２と、どの命令まで実行するかを示すアドレスを保持する終了アドレスレジスタ４３とを有している。これらのレジスタはＣＰＵ１から書きこみアクセスによって設定できる。また、命令処理部３５からはライトイネーブル線４とリードイネーブル線５とがリードライト制御部２０に、テーブルデータ線３１がテーブルアドレス生成部２１にそれぞれ接続されている。さらに、リードライト制御部２０からはバス調停部３８に対して、バスリードイネーブル線２７とバスライトイネーブル線２８とが接続されている。
【００４４】
命令処理部３５はＣＰＵ１に接続された開始イベント線３４が有効になると命令格納部３２から開始アドレスレジスタ４２に保持されているアドレスの命令を取り出す。そして命令をデコードして実行を行う。命令実行後、アドレスをインクリメントして次の命令を命令格納部３２より取り出して、命令をデコードして実行を行う。これらの命令実行の１連の処理は実施の形態１においてＣＰＵ１が実施していたものと同様の実行処理である。アドレスが終了アドレスレジスタ４３と一致するところで実行を停止する。そして終了イベント線３３を有効にしてＣＰＵ１に処理が完了したことを通知する。その他の構成及び動作は実施の形態１と同様である。
【００４５】
以上の形態により、命令処理部３５が論理演算のブロックを実行している間、ＣＰＵ１は基本命令、応用命令を含むブロックを処理することで、並列化実行を行いシーケンス制御の高速化の効果が得られる。
【００４６】
以上説明したように、実施の形態６のメモリ制御装置によれば、接点の論理演算からなるラダーを処理するプログラマブルコントローラにおけるデバイスメモリの値を制御するメモリ制御装置において、ＣＰＵからの開始イベント通知により、接点の論理演算からなるラダーの処理を開始し、処理が終了した場合に終了イベントをＣＰＵに通知する命令処理部と、ビット単位の論理演算の結果を予めテーブルとして保持するビット演算テーブル格納部と、ビット演算テーブル格納部から１つのテーブルを取得して保持するルックアップテーブル部と、デバイスメモリから読み出されたワードデータから、命令処理部から送出されるビット選択入力に基づいてビットデータを抽出するビット抽出挿入部と、ビット抽出挿入部が抽出したビットデータをラッチするデータラッチ部と、データラッチ部がラッチしたビットデータの出力に応じて、ルックアップテーブル部に保持したテーブルから１つのビットを選択するビットセレクタ部と、デバイスメモリへの書きこみに対してデバイスメモリからワードデータを読み出し、このワードデータのうち１ビットをビットセレクタ部が出力する１ビットと入れ替えたワードデータを再度デバイスメモリへ書き戻す制御を行うリードライト制御部と、ＣＰＵと命令処理部とのデバイスメモリへのアクセスを調停するバス調停部とを備えたので、ＣＰＵは接点の論理演算からなるラダー処理を行う必要がない。
【００４７】
また、実施の形態６のメモリ制御方法によれば、実施の形態６のメモリ制御装置を用いて、命令処理部による接点の論理演算と、ＣＰＵによる論理演算以外の処理とを並列に実行するようにしたので、例えば、命令処理部が接点の論理演算を実行している間にＣＰＵが論理演算以外の複雑な処理を行う、といった並列処理が可能となる。
【００４８】
なお、本願発明はその発明の範囲内において、各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
【符号の説明】
【００４９】
１  ＣＰＵ（マイクロプロセッサ）、２  ＣＰＵアドレス線、３  ＣＰＵデータ線、４  ライトイネーブル線、５  リードイネーブル線、６  デバイスメモリ、７  デバイスメモリデータ線、８  デバイスメモリリードイネーブル線、９  デバイスメモリライトイネーブル線、１０  ビット演算テーブル格納部、１１  メモリアドレス線、１２  メモリデータ線、１３  メモリリードイネーブル線、１４  ビット選択線、１５  演算結果ビット線、１６  ビット抽出挿入部、１７  データラッチ部、１８  ビットセレクタ部、１９  ルックアップテーブル部、２０  リードライト制御部、２１  テーブルアドレス生成部、２２  演算部、２３  テーブルセレクタ部、２４  演算結果セレクタ部、２５  デバイスメモリアドレス線、２６  ＣＰＵバスリクエスト線、２７  バスリードイネーブル線、２８  バスライトイネーブル線、２９  バスリクエスト線、３０  バスアドレス線、３１  テーブルデータ線、３２  命令格納部、３３  終了イベント線、３４  開始イベント線、３５  命令処理部、３６  ＣＰＵリードイネーブル線、３７  ＣＰＵライトイネーブル線、３８  バス調停部、３９  ＣＰＵバスアクノリジ線、４０  バスアクノリジ線、４１  バスデータ線、４２  開始アドレスレジスタ、４３  終了アドレスレジスタ。
【図１】
2015014934.tif 000003
【図２】
2015014934.tif 000004
【図３】
2015014934.tif 000005
【図４】
2015014934.tif 000006
【図５】
2015014934.tif 000007
【図６】
2015014934.tif 000008
【図７】
2015014934.tif 000009
【図８】
2015014934.tif 000010
【図９】
2015014934.tif 000011
【図１０】
2015014934.tif 000012
【図１１】
2015014934.tif 000013