(57)【要約】【課題】プログラマブルコントローラによる高速演算を実現する。【解決手段】マイクロプロセッサ１は、ＰＬＤ２の入出力レジスタに入力データを書き込み、入出力レジスタに書き込まれた入力データがユーザロジックに出力される。ユーザロジックは、入力データを入力すると、各種の演算を行なうことで出力データを得る。この出力データは、入出力レジスタを介してマイクロプロセッサ１により読み出される。マイクロプロセッサ１は、別の入力データを別途入力した上で、コードメモリ３に記憶される実行コードを読み出して、これらの入力データと出力データとの演算を行なうことで新たな出力データを得る。【選択図】      図１
2011070577.tif 000002
【特許請求の範囲】
【請求項１】
入力値を得た場合に所定の演算を行なうためのディジタル演算回路が書き込まれるプログラマブルロジックデバイスと、
前記演算のための入力値を前記プログラマブルロジックデバイスに入力し、この入力にともなう前記プログラマブルロジックデバイスによる演算結果である出力値を取得した場合に所定の演算を行なうマイクロプロセッサと、
前記マイクロプロセッサによる演算のための実行コードを記憶するコードメモリと
を備えたことを特徴とするプログラマブルコントローラ。
【請求項２】
所定の演算にかかる演算許可信号および当該演算のための入力値を得た場合に当該演算を行なう演算回路が書き込まれるプログラマブルロジックデバイスと、
所定周期で前記演算回路への演算許可信号を出力するタイマ回路と、
前記プログラマブルロジックデバイスの演算回路による演算終了時に前記マイクロプロセッサに割り込み信号を出力する割り込み発生手段と、
前記所定の演算のための入力値を前記プログラマブルロジックデバイスに出力し、この出力後における前記プログラマブルロジックデバイスによる演算結果を前記割り込み発生手段からの割り込み信号を入力した場合に取得するマイクロプロセッサと
を備えたことを特徴とするプログラマブルコントローラ。
【請求項３】
前記プログラマブルロジックデバイスには、
所定の第１の演算にかかる演算許可信号および当該演算のための入力値を得た場合に当該演算を行なう第１の演算回路、および前記第１の演算回路から独立した回路であって所定の第２の演算にかかる演算許可信号および当該演算のための入力値を得た場合に当該演算を行なう第２の演算回路が書き込まれ、
前記タイマ回路は、
所定の第１の周期で前記第１の演算回路への演算許可信号を出力する第１のタイマ回路、および前記第１の周期と異なる所定の第２の周期で前記第２の演算回路への演算許可信号を出力する第２のタイマ回路を有する
ことを特徴とする請求項２に記載のプログラマブルコントローラ。
【請求項４】
前記プログラマブルロジックデバイスには、
所定の演算のための第１の入力値を得た場合に当該演算を行ない、当該演算が終了し、かつ前記所定の演算のための第２の入力値を得た場合に当該演算を行なう単一の演算回路が書き込まれる
ことを特徴とする請求項２に記載のプログラマブルコントローラ。
【請求項５】
前記プログラマブルロジックデバイスは、
前記演算回路による演算結果を前記マイクロプロセッサを介さずに当該マイクロプロセッサと異なる入出力回路に出力する
ことを特徴とする請求項２に記載のプログラマブルコントローラ。
【請求項６】
入力値を得た場合に所定の演算を行なうためのディジタル演算回路が書き込まれるプログラマブルロジックデバイスに前記演算のための入力値を入力し、この入力にともなう前記プログラマブルロジックデバイスによる演算結果である出力値を取得した場合に所定の演算を行なうことを特徴とする演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、各種プラントの制御に用いられるプログラマブルコントローラおよび演算方法に関する。
【背景技術】
【０００２】
従来、一般に、各種プラントの制御に用いられるプログラマブルコントローラにおいては、演算性能の向上を図るため、マイクロプロセッサと専用の演算プロセッサを用いてアプリケーション演算を実行する手法が用いられている。
【０００３】
このようなプログラマブルコントローラとしては、プログラマブルコントローラ用コープロセッサ（ＰＣＣ）を使用するものがある（例えば特許文献１参照）。  
このような構成の場合、マイクロプロセッサでは、演算時間のかかる演算をコープロセッサにて行い、コープロセッサでは経済的でない数値演算の一部の機能をマイクロプロセッサで演算することにより、演算性能の向上を図っている。
【０００４】
また、ロジックをオンボードに書換え可能なデバイス（Field Programmable Gate Array：ＦＰＧＡ）があり、これを適用したプログラマブルコントローラも考案されている（例えば特許文献２参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平６−２５０７１１号公報
【特許文献２】特開２０００−２９５０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述したプログラマブルコントローラにおいては、演算命令がマイクロコードで記述されており、命令を実行するためには、メモリからマイクロコードを読み出し、デコードする必要があるため、演算時間がかかるという課題がある。  
また、互いに独立した、演算プログラムが複数ある場合でも、演算を同時かつ並列に実行できないため、演算時間がかかるという課題がある。
【０００７】
さらに、アプリケーションプログラムをプログラマブルロジックデバイス（Programmable Logic Device：ＰＬＤ）用データに変換して処理する場合、回路規模が大きくなり、デバイスに収納しきれない場合や、回路規模が大きなＰＬＤを採用する必要があり、高価になってしまうという課題があった。
【０００８】
そこで、本発明の目的は、高速演算を実現することが可能になるプログラマブルコントローラおよび演算方法を提供することにある。
【課題を解決するための手段】
【０００９】
すなわち、本発明に係わるプログラマブルコントローラは、入力値を得た場合に所定の演算を行なうためのディジタル演算回路が書き込まれるプログラマブルロジックデバイスと、前記演算のための入力値を前記プログラマブルロジックデバイスに入力し、この入力にともなう前記プログラマブルロジックデバイスによる演算結果である出力値を取得した場合に所定の演算を行なうマイクロプロセッサと、前記マイクロプロセッサによる演算のための実行コードを記憶するコードメモリとを備えたことを特徴とする。
【００１０】
また、本発明に係わるプログラマブルコントローラは、所定の演算にかかる演算許可信号および当該演算のための入力値を得た場合に当該演算を行なう演算回路が書き込まれるプログラマブルロジックデバイスと、所定周期で前記演算回路への演算許可信号を出力するタイマ回路と、前記プログラマブルロジックデバイスの演算回路による演算終了時に前記マイクロプロセッサに割り込み信号を出力する割り込み発生手段と前記所定の演算のための入力値を前記プログラマブルロジックデバイスに出力し、この出力後における前記プログラマブルロジックデバイスによる演算結果を前記割り込み発生手段からの割り込み信号を入力した場合に取得するマイクロプロセッサとを備えたことを特徴とする。
【発明の効果】
【００１１】
本発明によれば、プログラマブルコントローラによる高速演算を実現することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の第１の実施形態におけるプログラマブルコントローラの構成例を示すブロック図。
【図２】本発明の第１の実施形態におけるプログラマブルコントローラのＰＬＤの機能構成の一例を示すブロック図。
【図３】本発明の第１の実施形態におけるプログラマブルコントローラによる実行対象のアプリケーションプログラムの構成例を示す図。
【図４】本発明の第１の実施形態におけるプログラマブルコントローラによる処理動作の一例を示すフローチャート。
【図５】本発明の第１の実施形態におけるプログラマブルコントローラの構成例を示すブロック図。
【図６】本発明の第２の実施形態におけるプログラマブルコントローラのＰＬＤの機能構成の一例を示すブロック図。
【図７】本発明の第２の実施形態におけるプログラマブルコントローラによる処理動作の一例を示すフローチャート。
【図８】本発明の第２の実施形態におけるプログラマブルコントローラによる処理動作の一例を示すタイミングチャート。
【図９】本発明の第３の実施形態におけるプログラマブルコントローラのＰＬＤの機能構成の一例を示すブロック図。
【図１０】本発明の第３の実施形態におけるプログラマブルコントローラによる処理動作の一例を示すフローチャート。
【図１１】本発明の第３の実施形態におけるプログラマブルコントローラによる処理動作の一例を示すタイミングチャート。
【図１２】本発明の第４の実施形態におけるプログラマブルコントローラによる実行対象のアプリケーションプログラムの構成例を示す図。
【図１３】本発明の第４の実施形態におけるプログラマブルコントローラによる処理動作の一例を示すフローチャート。
【図１４】本発明の第４の実施形態におけるプログラマブルコントローラによる処理動作の一例を示すタイミングチャート。
【図１５】本発明の第５の実施形態におけるプログラマブルコントローラの構成例を示すブロック図。
【図１６】本発明の第５の実施形態におけるプログラマブルコントローラのＰＬＤの機能構成の一例を示すブロック図。
【図１７】本発明の第５の実施形態におけるプログラマブルコントローラによる処理動作の一例を示すフローチャート。
【図１８】本発明の第５の実施形態におけるプログラマブルコントローラによる処理動作の一例を示すタイミングチャート。
【発明を実施するための形態】
【００１３】
以下図面により本発明の実施形態について説明する。  
（第１の実施形態）
まず、本発明の第１の実施形態について説明する。  
図１は、本発明の第１の実施形態におけるプログラマブルコントローラの構成例を示すブロック図である。  
図１に示すように、本発明の第１の実施形態におけるプログラマブルコントローラは、マイクロプロセッサ１、ＰＬＤ２、コードメモリ３、マイクロプロセッサ用メモリ４、データメモリ５およびプロセス入出力回路６を備え、それぞれがプロセッサバス７に接続される。
【００１４】
この実施形態では、実行対象のアプリケーションプログラムを、マイクロプロセッサ１にて実行する演算部分とＰＬＤ２にて演算する部分とに分割する。つまり、アプリケーションプログラムをマイクロプロセッサ１の実行コード及びディジタル回路データに展開している。
【００１５】
ＰＬＤ２には、前述したように展開されたディジタル回路データが書き込まれる。コードメモリ３には、マイクロプロセッサ１の実行コードが書き込まれる。マイクロプロセッサ用メモリ４は、マイクロプロセッサ１が演算を行なうため用いられるメモリである。データメモリ５は、演算データを格納するメモリである。
【００１６】
図２は、本発明の第１の実施形態におけるプログラマブルコントローラのＰＬＤの機能構成の一例を示すブロック図である。  
図２に示すように、ＰＬＤ２は、入出力レジスタ８およびユーザロジック９を有する。入出力レジスタ８は、プロセッサバス７に接続されて、マイクロプロセッサ１からアクセス可能なレジスタである。  
ユーザロジック９は、入出力レジスタ８に接続された複数個の演算ロジックである。
【００１７】
図３は、本発明の第１の実施形態におけるプログラマブルコントローラによる実行対象のアプリケーションプログラムの構成例を示す図である。  
図４は、本発明の第１の実施形態におけるプログラマブルコントローラによる処理動作の一例を示すフローチャートである。  
この実施形態では、実行対象のアプリケーションプログラムは、ＰＬＤ２のユーザロジック９にて入力データＤ１，Ｄ２，Ｄ３，Ｄ４から出力データＤ５を得て、この出力データＤ５に対し、マイクロプロセッサ１にて入力データＲ１，Ｒ２を乗算して出力データＲ３を得るようにプログラミングされる。
【００１８】
具体的には、マイクロプロセッサ１は、ＰＬＤ２の入出力レジスタ８に入力データＤ１，Ｄ２，Ｄ３，Ｄ４を書き込み（ステップＳ１）、この書き込まれた入力データＤ１，Ｄ２，Ｄ３，Ｄ４がユーザロジック９に出力される（ステップＳ２）。
【００１９】
ユーザロジック９は、入力データＤ１，Ｄ２，Ｄ３，Ｄ４を入力すると、図３に示すように、入力データＤ１，Ｄ２のＡＮＤ演算を行い、この演算結果に対するＮＯＴ演算を行なう。また、ユーザロジック９は、入力データＤ３，Ｄ４のＡＮＤ演算を行い、この演算結果と前述したＮＯＴ演算結果とのＯＲ演算を行い、さらに、この演算結果に対するＮＯＴ演算を行なうことで出力データＤ５を得る（ステップＳ３）。  
この出力データＤ５は、入出力レジスタ８を介してマイクロプロセッサ１により読み出される（ステップＳ４）。
【００２０】
マイクロプロセッサ１は、入力データＲ１，Ｒ２を別途入力した上で、コードメモリ３に記憶される実行コードを読み出し、入力データＲ１，Ｒ２と出力データＤ５との乗算を行なうことで出力データＲ３を得る（ステップＳ５）。
【００２１】
以上説明したように、本発明の第１の実施形態におけるプログラマブルコントローラは、実行対象のアプリケーションプログラムにおける演算ロジックの一部をＰＬＤにあらかじめプログラミングしている。このロジックはハードウェアロジックであるため演算を瞬時に実行可能であり、この演算はマイクロプロセッサの書き込みから読み出しを行なうまでに既に完了しているため、マイクロプロセッサ側ではこの演算ロジックの演算時間を考慮する必要がない。
【００２２】
つまり、本実施形態によれば、マイクロプロセッサ１はユーザロジック９の演算時間を考慮する必要がなく、ＰＬＤ２の入出力レジスタ８への書込みと読み出しのみで入力データの実行条件が得られるため、この部分の演算に関しては、従来技術の演算手順のようにコードメモリ３からのマイクロコードの読み出し、デコードおよび演算を行なう必要がなくなる。よって、高速演算が可能なプログラムブルコントローラを実現することができる。
【００２３】
また、本実施形態では、複雑な演算はマイクロプロセッサ１で演算し、ロジック演算のような単純な演算はＰＬＤ２で演算することによりＰＬＤ２の製作にかかる手間を必要最小限に抑えた上での高速演算を可能とすることができる。
【００２４】
また、ＰＬＤ２の回路規模を越えるユーザロジックが必要となる場合は、当該ＰＬＤ２に実装しきれないロジックの分についてはマイクロプロセッサ１にて処理するようにプログラムコードを生成することによりＰＬＤ２の回路規模を小さくでき、安価なプログラマブルコントローラを実現できる。このため、高速演算が可能で、かつ安価なプログラマブルコントローラを提供することが可能となる。
【００２５】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。なお、本実施形態におけるプログラマブルコントローラの構成のうち図１に示したものと同一部分の詳細な説明は省略する。  
図５は、本発明の第２の実施形態におけるプログラマブルコントローラの構成例を示すブロック図である。  
図５に示すように、本発明の第２の実施形態におけるプログラマブルコントローラは、マイクロプロセッサ１、ＰＬＤ２、マイクロプロセッサ用メモリ４およびプロセス入出力回路６を備え、それぞれがプロセッサバス７に接続される。  
また、このプログラマブルコントローラは、第１の実施形態と異なり、コードメモリ３およびデータメモリ５は備えない。  
この実施形態では、実行対象のアプリケーションプログラムの全体をＰＬＤ用のディジタルデータに変換してなるディジタルデータがＰＬＤ２に書き込まれる。
【００２６】
図６は、本発明の第２の実施形態におけるプログラマブルコントローラのＰＬＤの機能構成の一例を示すブロック図である。  
図６に示すように、本実施形態では、ＰＬＤ２は、入出力レジスタ８、アプリケーションプログラム１０、タイマ１１および割り込み発生部１２を有する。アプリケーションプログラム１０は、演算ブロックＦＢ１，ＦＢ２，ＦＢ３，ＦＢ４を有するプログラムである。
【００２７】
タイマ１１は、アプリケーションプログラム１０内の演算ブロックＦＢ１に対する演算許可信号ＥＮ０を定周期で有効とする。  
割り込み発生部１２は、アプリケーションプログラム１０による演算終了を検出した場合にマイクロプロセッサ１に割り込み信号ＩＮＴを出力する。
【００２８】
図７は、本発明の第２の実施形態におけるプログラマブルコントローラによる処理動作の一例を示すフローチャートである。  
図８は、本発明の第２の実施形態におけるプログラマブルコントローラによる処理動作の一例を示すタイミングチャートである。  
まず、タイマ１１から演算ブロックＦＢ１への演算許可信号ＥＮ０が有効となると（ステップＳ１１）、演算ブロックＦＢ１は、入出力レジスタ８から入力データＩＮ１，ＩＮ２を入力し（ステップＳ１２）、演算を開始する（ステップＳ１３）。
【００２９】
演算ブロックＦＢ１は、演算を完了すると演算結果ＡＮ１を演算ブロックＦＢ２およびＦＢ３に出力し（ステップＳ１４）、これらの演算ブロックＦＢ２およびＦＢ３への演算許可信号ＥＮ１を有効とする（ステップＳ１５）。  
演算ブロックＦＢ２、ＦＢ３は、演算許可信号ＥＮ１が有効となると、演算ブロックＦＢ１からの演算結果ＡＮ１を入力して、演算を開始する（ステップＳ１６）。
【００３０】
この実施形態では、演算ブロックＦＢ２、ＦＢ３による演算が同時に開始された後、演算ブロックＦＢ３による演算が先に完了して、演算ブロックＦＢ２による演算が後に完了する。  
演算ブロックＦＢ３は、演算を完了すると演算結果ＡＮ３を演算ブロックＦＢ４に出力し（ステップＳ１７）、この演算ブロックＦＢ４への演算許可信号ＥＮ３を有効とする（ステップＳ１８）。
【００３１】
また、演算ブロックＦＢ２は、演算ブロックＦＢ３より遅れたタイミングで演算を完了すると演算結果ＡＮ２を演算ブロックＦＢ４に出力し（ステップＳ１９）、この演算ブロックＦＢ４への演算許可信号ＥＮ２を有効とする（ステップＳ２０）。
【００３２】
演算ブロックＦＢ４は、演算ブロックＦＢ２からの演算許可信号ＥＮ２および演算ブロックＦＢ３からの演算許可信号ＥＮ３がともに有効となった時点で演算を開始する（ステップＳ２１）。
【００３３】
演算ブロックＦＢ４は、演算を完了すると演算結果ＡＮ４を入出力レジスタ８に出力し（ステップＳ２２）、タイマ１１、入出力レジスタ８および割り込み発生部１２への演算許可信号ＥＮ４を有効とする（ステップＳ２３）。
【００３４】
入出力レジスタ８は、演算許可信号ＥＮ４が有効になると、演算結果ＡＮ４を演算ブロックＦＢ４から取り込む。また、タイマ１１は、演算許可信号ＥＮ４が有効になると、演算ブロックＦＢ１への演算許可信号ＥＮ０を無効とする（ステップＳ２４）。これにより演算許可信号ＥＮ１，ＥＮ２，ＥＮ３，ＥＮ４も無効となる（ステップＳ２５）。
【００３５】
また、割り込み発生部１２は、演算許可信号ＥＮ４が有効になると、割り込み信号ＩＮＴをマイクロプロセッサ１に出力することで割り込みを発生させる（ステップＳ２６）。  
割り込みを受けたマイクロプロセッサ１は、演算結果ＡＮ４を入出力レジスタ８から読み出してプロセス入出力回路６に出力するとともに、この出力によりプロセス入出力回路６から新たに得られたデータを入出力レジスタ８に書込むことで、入出力レジスタ８のデータ更新を行なう（ステップＳ２７）。
【００３６】
そして、タイマ１１は、演算許可信号ＥＮ０を最初に有効としたタイミングを起点とした演算周期Ｔが経過した場合には（ステップＳ２８のＹＥＳ）、演算ブロックＦＢ１への演算許可信号ＥＮ０を再び有効とする（ステップＳ２９）。この周期は、演算許可信号ＥＮ０を最初に有効にするタイミングから演算ブロックＦＢ４による演算が完了して入出力レジスタ８が更新されるタイミングまでの時間より長い。これにより定周期での演算を実現する。
【００３７】
以上説明したように、本発明の第２の実施形態におけるプログラマブルコントローラは、第１の実施形態で説明した特徴に加え、アプリケーションプログラムを全てＰＬＤで構成したので、従来技術の演算手順のようにコードメモリからマイクロコードを読み出して、デコードや演算を行なう必要がないう上、演算をシリアルに演算するだけでなく、図６に示すように複数の演算ブロックによる同時かつ並列の演算実行が可能であり、前述のようにマイクロコードを読み出す形態では実現できない高速な演算を実現できる。
【００３８】
（第３の実施形態）
次に、本発明の第３の実施形態について説明する。なお、本実施形態におけるプログラマブルコントローラの構成は図１に示したものと基本的にほぼ同様であるので同一部分の詳細な説明は省略する。  
図９は、本発明の第３の実施形態におけるプログラマブルコントローラのＰＬＤの機能構成の一例を示すブロック図である。  
図９に示すように、本実施形態でのＰＬＤ２は、図６に示した構成と比較して、２つ目のアプリケーションプログラムであるアプリケーションプログラム１３をさらに有し、また、前述したタイマ１１に加え、２つ目のタイマである第２タイマ１４をさらに有する。図９ではタイマ１１を第１タイマと表記している。
【００３９】
アプリケーションプログラム１３は、演算ブロックＦＢ１１，ＦＢ１２，ＦＢ１３，ＦＢ１４を有する。  
第２タイマ１４は、アプリケーションプログラム１３内の演算ブロックＦＢ１１への演算許可信号ＥＮ１０を定周期で有効とする。  
アプリケーションプログラム１０，１３は互いに独立したプログラムであり、それぞれのタイマ１１，１４に設定された異なる演算周期Ｔ１，Ｔ２で演算を実行する構成となっている。
【００４０】
割り込み発生部１２は、アプリケーションプログラム１０による演算終了を検出した場合、もしくはアプリケーションプログラム１３による演算終了を検出した場合にマイクロプロセッサ１に割り込み信号ＩＮＴを出力する。
【００４１】
図１０は、本発明の第３の実施形態におけるプログラマブルコントローラによる処理動作の一例を示すフローチャートである。  
図１１は、本発明の第３の実施形態におけるプログラマブルコントローラによる処理動作の一例を示すタイミングチャートである。  
ここでは、アプリケーションプログラム１０による処理動作は第２の実施形態と同様であるので、アプリケーションプログラム１３による処理動作について説明する。
【００４２】
まず、第２タイマ１４から演算ブロックＦＢ１０への演算許可信号ＥＮ１０が有効となると（ステップＳ４１）、演算ブロックＦＢ１１は、入出力レジスタ８から入力データＩＮ１１、ＩＮ１２を入力し（ステップＳ４２）、演算を開始する（ステップＳ４３）。
【００４３】
演算ブロックＦＢ１１は、演算を完了すると演算結果ＡＮ１１を演算ブロックＦＢ１２およびＦＢ１３に出力し（ステップＳ４４）、これらの演算ブロックＦＢ１２およびＦＢ１３への演算許可信号ＥＮ１１を有効とする（ステップＳ４５）。  
演算ブロックＦＢ１２，ＦＢ１３は、演算許可信号ＥＮ１１が有効となると、演算ブロックＦＢ１１からの演算結果ＡＮ１１を入力して、演算を開始する（ステップＳ４６）。
【００４４】
この実施形態では、演算ブロックＦＢ１２、ＦＢ１３による演算が同時に開始された後、演算ブロックＦＢ１２による演算が先に完了して、演算ブロックＦＢ１３による演算が後に完了する。  
演算ブロックＦＢ１２は、演算を完了すると演算結果ＡＮ１２を演算ブロックＦＢ１４に出力し（ステップＳ４７）、この演算ブロックＦＢ１４への演算許可信号ＥＮ１２を有効とする（ステップＳ４８）。
【００４５】
また、演算ブロックＦＢ１３は、演算ブロックＦＢ１２より遅れたタイミングで演算を完了すると演算結果ＡＮ１３を演算ブロックＦＢ１４に出力し（ステップＳ４９）、この演算ブロックＦＢ１４への演算許可信号ＥＮ１３を有効とする（ステップＳ５０）。
【００４６】
演算ブロックＦＢ１４は、演算ブロックＦＢ１２からの演算許可信号ＥＮ１２および演算ブロックＦＢ１３からの演算許可信号ＥＮ１３がともに有効となった時点で演算を開始する（ステップＳ５１）。
【００４７】
演算ブロックＦＢ１４は、演算を完了すると演算結果ＡＮ１４を入出力レジスタ８に出力し（ステップＳ５２）、第２タイマ１４、入出力レジスタ８および割り込み発生部１２への演算許可信号ＥＮ１４を有効とする（ステップＳ５３）。
【００４８】
入出力レジスタ８は、演算許可信号ＥＮ１４が有効になると、演算結果ＡＮ１４を演算ブロックＦＢ１４から取り込む。また、第２タイマ１４は、演算許可信号ＥＮ１４が有効になると、演算ブロックＦＢ１０への演算許可信号ＥＮ１０を無効とする（ステップＳ５４）。これにより演算許可信号ＥＮ１１，ＥＮ１２，ＥＮ１３，ＥＮ１４も無効となる（ステップＳ５５）。
【００４９】
また、割り込み発生部１２は、演算許可信号ＥＮ１４が有効になると、割り込み信号ＩＮＴをマイクロプロセッサ１に出力することで割り込みを発生させる（ステップＳ５６）。
【００５０】
割り込みを受けたマイクロプロセッサ１は、演算結果ＡＮ１４を入出力レジスタ８から読み出してプロセス入出力回路６に出力するとともに、この出力によりプロセス入出力回路６から新たに得られたデータを入出力レジスタ８に書込むことで、入出力レジスタ８のデータ更新を実施する（ステップＳ５７）。
【００５１】
そして、第２タイマ１１は、演算許可信号ＥＮ１０を最初に有効としたタイミングを起点とした所定の演算周期Ｔ２が経過した場合には（ステップＳ５８のＹＥＳ）、演算ブロックＦＢ１０への演算許可信号ＥＮ１０を再び有効とする（ステップＳ５９）。この周期は、第２の実施形態で説明したアプリケーションプログラム１０に関わる演算周期Ｔ１より短く、演算許可信号ＥＮ１０を最初に有効にするタイミングから演算ブロックＦＢ１４による演算が完了して入出力レジスタ８が更新されるタイミングまでの時間より長い。これにより定周期での演算を実現する。
【００５２】
以上説明したように、本発明の第３の実施形態におけるプログラマブルコントローラは、複数のアプリケーションプログラム及びそれぞれのプログラムについて、演算許可信号を有効とする周期が異なるタイマを備えることにより、演算周期の異なる複数の演算を独立して同時に実行することができる。よって、従来技術の演算手順のようにコードメモリ３からのマイクロコードの読み出し、デコード、演算の必要がない上、シリアルに演算するのではなく、図８に示すように異なった周期での複数の演算が同時かつ並列に実行可能であり、マイクロコードの読み出しでは実現できない、高速演算可能なプログラマブルコントローラを提供することが可能となる。
【００５３】
（第４の実施形態）
次に、本発明の第４の実施形態について説明する。なお、本実施形態におけるプログラマブルコントローラの構成は図１に示したものと基本的にほぼ同様であるので同一部分の詳細な説明は省略する。  
図１２は、本発明の第４の実施形態におけるプログラマブルコントローラによる実行対象のアプリケーションプログラムの構成例を示す図である。  
本実施形態におけるアプリケーションプログラム１０は、演算ブロックＦＢ１，ＦＢ２，ＦＢ３，ＦＢ４の機能に加え、演算ブロックＦＢ５，ＦＢ６の機能をさらに実現するものである。実際には、ＰＬＤ２には、演算ブロックＦＢ５および演算ブロックＦＢ６が書き込まれるのではなく、演算ブロックＦＢ５の機能および演算ブロックＦＢ６の機能を有する演算ブロックＦＢＸが演算ブロックＦＢ１，ＦＢ２，ＦＢ３，ＦＢ４とともに書き込まれる。
【００５４】
演算ブロックＦＢ５による処理と演算ブロックＦＢ６による処理は同一である。演算ブロックＦＢＸは、演算ブロックＦＢ５と演算ブロックＦＢ６とを単一の演算ブロックに置き換えたものであり、演算ブロックＦＢ５による処理と演算ブロックＦＢ６による処理を異なるタイミングでそれぞれ実行するもので、演算ブロックＦＢ５、ＦＢ６と同等の機能で外部との入出力を切り替え可能としたものである。  
また、本実施形態では、ＰＬＤ２は、図６に示すように入出力レジスタ８、アプリケーションプログラム１０、タイマ１１および割り込み発生部１２を有する。
【００５５】
図１３は、本発明の第４の実施形態におけるプログラマブルコントローラによる処理動作の一例を示すフローチャートである。  
図１４は、本発明の第４の実施形態におけるプログラマブルコントローラによる処理動作の一例を示すタイミングチャートである。  
まず、タイマ１１から演算ブロックＦＢ１への演算許可信号ＥＮ０が有効となると（ステップＳ７１）、演算ブロックＦＢ１は、入出力レジスタ８から入力データＩＮ１、ＩＮ２を入力し（ステップＳ７２）、演算を開始する（ステップＳ７３）。
【００５６】
演算ブロックＦＢ１は、演算を完了すると演算結果ＡＮ１を演算ブロックＦＢ２およびＦＢ３に出力し（ステップＳ７４）、これらの演算ブロックＦＢ２およびＦＢ３への演算許可信号ＥＮ１を有効とする（ステップＳ７５）。  
演算ブロックＦＢ２，ＦＢ３は、演算許可信号ＥＮ１が有効となると、演算ブロックＦＢ１からの演算結果ＡＮ１を入力して、演算を開始する（ステップＳ７６）。
【００５７】
この実施形態では、演算ブロックＦＢ２、ＦＢ３による演算が同時に開始された後、演算ブロックＦＢ３による演算が先に完了して、演算ブロックＦＢ２による演算が後に完了する。
【００５８】
演算ブロックＦＢ３は、演算を完了すると演算結果ＡＮ３を演算ブロックＦＢＸに出力し（ステップＳ７７）、この演算ブロックＦＢＸへの演算許可信号ＥＮ３を有効とする（ステップＳ７８）。
【００５９】
演算ブロックＦＢＸは、演算ブロックＦＢ２，ＦＢ３のうち一方である演算ブロックＦＢ３からの演算許可信号ＥＮ３が有効となった時点で第１の演算、つまり図１２に示した演算ブロックＦＢ６による演算を開始する（ステップＳ７９）。
【００６０】
また、演算ブロックＦＢ２は、ステップＳ７６の処理により開始された演算を演算ブロックＦＢ３により遅れたタイミングで完了すると演算結果ＡＮ２を演算ブロックＦＢＸに出力し（ステップＳ８０）、この演算ブロックＦＢＸへの演算許可信号ＥＮ２を有効とする（ステップＳ８１）。
【００６１】
演算ブロックＦＢＸは、ステップＳ７９の処理により開始された第１の演算を完了すると演算結果ＡＮ６を演算ブロックＦＢ４に出力し（ステップＳ８２）、この演算ブロックＦＢ４への演算許可信号ＥＮ６を有効とする（ステップＳ８３）。
【００６２】
すると、演算ブロックＦＢＸは、ステップＳ８３の処理によって演算ブロックＦＢ２からの演算許可信号ＥＮ２が有効となっている事に伴い、第２の演算、つまり図１２に示した演算ブロックＦＢ５による演算を開始する（ステップＳ８４）。
【００６３】
つまり、演算ブロックＦＢＸは、前段の演算ブロックからの演算許可信号ＥＮ２，ＥＮ３が同時または一方が演算中に許可となった場合には、一方の演算許可信号が有効になった事に伴う演算を終了してから、他方の演算許可信号が有効になった事に伴う演算を実行する。
【００６４】
演算ブロックＦＢＸは、ステップＳ８２の処理により開始された第２の演算を完了すると演算結果ＡＮ５を演算ブロックＦＢ４に出力し（ステップＳ８５）、この演算ブロックＦＢ４への演算許可信号ＥＮ５を有効とする（ステップＳ８６）。  
演算ブロックＦＢ４は、演算ブロックＦＢＸからの演算許可信号ＥＮ５および演算許可信号ＥＮ６がともに有効となった時点で演算を開始する（ステップＳ８７）。
【００６５】
演算ブロックＦＢ４は、演算を完了すると演算結果ＡＮ４を入出力レジスタ８に出力し（ステップＳ８８）、タイマ１１、入出力レジスタ８および割り込み発生部１２への演算許可信号ＥＮ４を有効とする（ステップＳ８９）。
【００６６】
入出力レジスタ８は、演算許可信号ＥＮ４が有効になると、演算結果ＡＮ４を演算ブロックＦＢ４から取り込む。また、タイマ１１は、演算許可信号ＥＮ４が有効になると、演算ブロックＦＢ１への演算許可信号ＥＮ０を無効とする（ステップＳ９０）。これにより演算許可信号ＥＮ１，ＥＮ２，ＥＮ３，ＥＮ４も無効となる（ステップＳ９１）。
【００６７】
また、割り込み発生部１２は、演算許可信号ＥＮ４が有効になると、割り込み信号ＩＮＴをマイクロプロセッサ１に出力することで割り込みを発生させる（ステップＳ９２）。  
割り込みを受けたマイクロプロセッサ１は、演算結果ＡＮ４を入出力レジスタ８から読み出して、これをプロセス入出力回路６に出力するとともに、この出力によりプロセス入出力回路６から新たに得られたデータを入出力レジスタ８に書込むことで、入出力レジスタ８のデータ更新を実施する（ステップＳ９３）。
【００６８】
そして、タイマ１１は、演算許可信号ＥＮ０を最初に有効としたタイミングから数えた演算周期Ｔが経過した場合には（ステップＳ９４のＹＥＳ）、演算許可信号ＥＮ０を再び有効とする（ステップＳ９５）。
【００６９】
以上説明したように、本発明の第４の実施形態におけるプログラマブルコントローラは、ＰＬＤにおける同一の処理を行なう演算ブロックを単一の演算ブロックで構成したので、演算ブロックのロジック量を大幅に削減することができ、回路規模の小さなＰＬＤを適用することが可能となる。よって、従来技術の演算手順のようにコードメモリからのマイクロコードの読み出し、デコード、演算の必要がない上、シリアルに演算するだけでなく同時かつ並列に演算実行が可能であり、安価でかつ高速に演算することができるプログラマブルコントローラを提供することが可能となる。
【００７０】
（第５の実施形態）
次に、本発明の第５の実施形態について説明する。なお、本実施形態におけるプログラマブルコントローラの構成のうち図１に示したものと同一部分の詳細な説明は省略する。  
図１５は、本発明の第５の実施形態におけるプログラマブルコントローラの構成例を示すブロック図である。  
図１５に示すように、本発明の第４の実施形態におけるプログラマブルコントローラは、第２の実施形態と同様にマイクロプロセッサ１、ＰＬＤ２、マイクロプロセッサ用メモリ４およびプロセス入出力回路６を備える。
【００７１】
ただし、本実施形態では、マイクロプロセッサ１、ＰＬＤ２、マイクロプロセッサ用メモリ４がプロセッサバス７に接続される一方で、プロセス入出力回路６は、プロセッサバス７を介さずにＰＬＤ２に直接接続される。
【００７２】
図１６は、本発明の第５の実施形態におけるプログラマブルコントローラのＰＬＤの機能構成の一例を示すブロック図である。  
図１６に示すように、本発明の第５の実施形態におけるＰＬＤ２は、プロセス入出力バッファ１５をさらに有する。
【００７３】
本実施形態のプロセス入出力回路６は、ＰＬＤ２の内部に設けたプロセス入出力バッファ１５を介して、アプリケーションプログラム１０と入出力レジスタ８に接続される構成である。
【００７４】
図１７は、本発明の第５の実施形態におけるプログラマブルコントローラによる処理動作の一例を示すフローチャートである。  
図１８は、本発明の第５の実施形態におけるプログラマブルコントローラによる処理動作の一例を示すタイミングチャートである。  
タイマ１１から演算ブロックＦＢ１への演算許可信号ＥＮ０が有効となると（ステップＳ１０１）、演算ブロックＦＢ１は、入出力レジスタ８から入力データＩＮを入力し（ステップＳ１０２）、演算を開始する（ステップＳ１０３）。
【００７５】
演算ブロックＦＢ１は、演算を完了すると演算結果ＡＮ１を演算ブロックＦＢ２，ＦＢ３および入出力レジスタ８に出力し（ステップＳ１０４）、演算ブロックＦＢ２およびＦＢ３への演算許可信号ＥＮ１を有効とする（ステップＳ１０５）。  
演算ブロックＦＢ２，ＦＢ３は、演算許可信号ＥＮ１が有効となると、演算ブロックＦＢ１からの演算結果ＡＮ１を入力して、演算を開始する（ステップＳ１０６）。
【００７６】
この実施形態では、演算ブロックＦＢ２，ＦＢ３による演算が同時に開始された後、演算ブロックＦＢ３による演算が先に完了して、演算ブロックＦＢ２による演算が後に完了する。  
演算ブロックＦＢ３は、演算を完了すると演算結果ＡＮ３を演算ブロックＦＢ４および入出力レジスタ８に出力し（ステップＳ１０７）、この演算ブロックＦＢ４への演算許可信号ＥＮ３を有効とする（ステップＳ１０８）。
【００７７】
演算ブロックＦＢ２は、演算ブロックＦＢ３より遅れたタイミングで演算を完了すると演算結果ＡＮ２を演算ブロックＦＢ４に出力し（ステップＳ１０９）、この演算ブロックＦＢ４への演算許可信号ＥＮ２を有効とする（ステップＳ１１０）。
【００７８】
演算ブロックＦＢ４は、演算ブロックＦＢ２からの演算許可信号ＥＮ２および演算ブロックＦＢ３からの演算許可信号ＥＮ３がともに有効となった時点で演算を開始する（ステップＳ１１１）。
【００７９】
演算ブロックＦＢ４は、演算を完了すると演算結果ＡＮ４を入出力レジスタ８およびプロセス入出力バッファ１５に出力し（ステップＳ１１２）、タイマ１１、プロセス入出力バッファ１５および割り込み発生部１２への演算許可信号ＥＮ４を有効とする（ステップＳ１１３）。
【００８０】
タイマ１１は、演算許可信号ＥＮ４が有効になると、演算ブロックＦＢ１への演算許可信号ＥＮ０を無効とする（ステップＳ１１４）。これにより演算許可信号ＥＮ１，ＥＮ２，ＥＮ３，ＥＮ４も無効となる（ステップＳ１１５）。
【００８１】
また、割り込み発生部１２は、演算許可信号ＥＮ４が有効になると、割り込み信号ＩＮＴをマイクロプロセッサ１に出力することで割り込みを発生させる（ステップＳ１１６）。
【００８２】
割り込みを受けたマイクロプロセッサ１は、入出力レジスタ８にアクセスして演算結果ＡＮ１，ＡＮ３，ＡＮ４を読み出すことで、演算が正常に行なわれているか否かを監視する（ステップＳ１１７）。
【００８３】
また、プロセス入出力バッファ１５への、有効となった演算許可信号ＥＮ４および演算結果ＡＮ４は、プロセス入出力回路６に直接出力される（ステップＳ１１８，Ｓ１１９）。
【００８４】
プロセス入出力回路６は、プロセス入出力バッファ１５からの演算結果ＡＮ４をもとに所定の入出力を行い、外部から入力した信号をプロセス入出力バッファ１５を介して演算ブロックＦＢ１および入出力レジスタ８に出力する。
【００８５】
そして、タイマ１１は、演算許可信号ＥＮ０を最初に有効としたタイミングから数えた演算周期Ｔが経過した場合には（ステップＳ１２０のＹＥＳ）、演算ブロックＦＢ１への演算許可信号ＥＮ０を再び有効とする（ステップＳ１２１）。この周期は、演算許可信号ＥＮ０を最初に有効にするタイミングから演算ブロックＦＢ４による演算が完了してプロセス入出力回路６による入出力や入出力レジスタ８へのアクセスが終了するタイミングまでの時間より長い。これにより定周期での演算を実現する。
【００８６】
以上説明したように本発明の第５の実施形態におけるプログラマブルコントローラは、第２の実施形態と比較してプロセス入出力回路６がＰＬＤ２に直接接続されているため、当該第２の実施形態のようにマイクロプロセッサ１を介してプロセスデータを入出力する場合に比べて、短時間での入出力が可能となるので、入力を受けてから演算を実行して出力を出すまでの時間をさらに短くすることが可能である。よって、従来技術の演算手順のようにコードメモリ３からのマイクロコードの読み出し、デコード、演算の必要がない上、シリアルに演算するだけでなく同時かつ並列に演算実行が可能であり、高速に演算することができるプログラマブルコントローラを提供することが可能となる。
【００８７】
なお、この発明は前記実施形態そのままに限定されるものではなく実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、前記実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を省略してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【００８８】
１…マイクロプロセッサ、２…プログラマブルロジックデバイス（ＰＬＤ）、３…コードメモリ、４…マイクロプロセッサ用メモリ、５…データメモリ、６…プロセス入出力装置、７…プロセッサバス、８…入出力レジスタ、９…ユーザロジック、１０，１３…アプリケーションプログラム、１１，１４…タイマ、１２…割り込み発生部、１５…プロセス入出力バッファ、ＡＮ１，ＡＮ２，ＡＮ３，ＡＮ４，ＡＮ５，ＡＮ６，ＡＮ１１，ＡＮ１２，ＡＮ１３，ＡＮ１４…演算結果、Ｄ１，Ｄ２，Ｄ３，Ｄ４，Ｒ１，Ｒ２…入力データ、Ｄ５，Ｒ３…出力データ、ＥＮ０，ＥＮ１，ＥＮ２，ＥＮ３，ＥＮ４，ＥＮ５，ＥＮ６，ＥＮ１０，ＥＮ１１，ＥＮ１２，ＥＮ１３，ＥＮ１４…演算許可信号、ＦＢ１，ＦＢ２，ＦＢ３，ＦＢ４，ＦＢ５，ＦＢ６、ＦＢＸ，ＦＢ１１，ＦＢ１２，ＦＢ１３，ＦＢ１４…演算ブロック、ＩＮ，ＩＮ１，ＩＮ２，ＩＮ１１，ＩＮ１２…入力データ、ＩＮＴ…割り込み信号。
【図１】
2011070577.tif 000003
【図２】
2011070577.tif 000004
【図３】
2011070577.tif 000005
【図４】
2011070577.tif 000006
【図５】
2011070577.tif 000007
【図６】
2011070577.tif 000008
【図７】
2011070577.tif 000009
【図８】
2011070577.tif 000010
【図９】
2011070577.tif 000011
【図１０】
2011070577.tif 000012
【図１１】
2011070577.tif 000013
【図１２】
2011070577.tif 000014
【図１３】
2011070577.tif 000015
【図１４】
2011070577.tif 000016
【図１５】
2011070577.tif 000017
【図１６】
2011070577.tif 000018
【図１７】
2011070577.tif 000019
【図１８】
2011070577.tif 000020