(57)【特許請求の範囲】
【請求項１】
プログラムを実行し演算処理を行う主ＣＰＵと、前記主ＣＰＵにて行う演算処理のうちで特定の演算処理を前記主ＣＰＵからの指令により代行する専用ＣＰＵとを備え、前記専用ＣＰＵは、前記特定の演算処理を行っている間は前記主ＣＰＵを動作停止状態とし、前記特定の演算処理が終了したときあるいは前記特定の演算処理以外の演算処理を行う必要が生じたとき若しくは外部からの停止要求信号入力があったときに前記主ＣＰＵの動作停止状態を解除するようにして成るプログラマブルコントローラにおいて、外部機器とのデータ通信を行うとともに所定の一区切りのデータを受信する毎に前記主ＣＰＵに割り込み要求を行うシリアルコントロール部と、前記主ＣＰＵの動作用のクロック信号を発生するとともに該クロック信号を前記停止要求信号として前記専用ＣＰＵに出力するタイマ部と、前記シリアルコントロール部からの割り込み要求を受けた前記主ＣＰＵによって転送制御が行われて外部機器から受信したデータが格納されるメモリ部とを備え、前記シリアルコントロール部にて前記一区切りのデータを受信するのに要する受信時間以下の値に前記クロック信号の周期を設定したことを特徴とするプログラマブルコントローラ。
【請求項２】
前記主ＣＰＵが実行するタイマ命令におけるタイマ時間の約数に前記クロック信号の周期を設定したことを特徴とする請求項１記載のプログラマブルコントローラ。
【請求項３】
前記シリアルコントロール部におけるデータ通信の通信速度を１９２００ビット毎秒とするとともに前記一区切りのデータのデータ長を１０ビット以上とし併せて前記クロック信号の周期を約５００μ秒として成ることを特徴とする請求項２記載のプログラマブルコントローラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラムを実行し演算処理を行う主ＣＰＵと、前記主ＣＰＵにて行う演算処理のうちで特定の演算処理を前記主ＣＰＵからの指令により代行する専用ＣＰＵとを備えたプログラマブルコントローラに関するものである。
【０００２】
【従来の技術】
従来より、主ＣＰＵの負担軽減や処理時間短縮のため、主ＣＰＵにて行う演算処理のうちで特定の演算処理を代行する専用ＣＰＵを備えたプログラマブルコントローラが提供されており、図６はこのような従来例の構成を示すブロック図である。専用ＣＰＵ１１は高速演算用のＣＰＵであって、特定の演算処理について主ＣＰＵ１０の代わりにその演算処理を実行するものである。ここで、主ＣＰＵ１０が特定の演算処理に必要な各種パタメータを専用ＣＰＵ１１の有するレジスタ（図示せず）に設定することによって専用ＣＰＵ１１が起動し、専用ＣＰＵ１１から主ＣＰＵ１０に対してホールド（ＨＯＬＤ）信号が出力される。主ＣＰＵ１０ではこのホールド信号の入力があると応答信号（ＡＣＫ）を専用ＣＰＵ１１に出力し、その動作を停止状態（ホールド状態）とする。そして、この間に専用ＣＰＵ１１が演算処理を実行し、その処理が終了すれば専用ＣＰＵ１１は主ＣＰＵ１０のホールド状態を解除する信号を出力する。これにより、主ＣＰＵ１０のホールド状態が解除され、主ＣＰＵ１０が他の演算処理を実行する。また、演算処理を実行中に、専用ＣＰＵ１１が自ら実行不可能な命令（主ＣＰＵ１０でのみ実行可能な命令）を読み出した場合や、外部から専用ＣＰＵ１１に対して停止要求信号が入力された場合にも、専用ＣＰＵ１１は処理を中断して主ＣＰＵ１０のホールド状態を解除する。
【０００３】
また、上記従来例では、タイマ部１２からの内部タイミングクロック信号（以下、「クロック信号」と略す）が主ＣＰＵ１０の割込ポートｉｎｔと専用ＣＰＵ１１とに入力されている。すなわち、主ＣＰＵ１０がホールド状態の場合には割込要求が受け付けられないので、主ＣＰＵ１０で実行するタイマ命令の経過時間を測定するためには、クロック信号を停止要求信号として専用ＣＰＵ１１に入力し、一旦主ＣＰＵ１０のホールド状態を解除した上で主ＣＰＵ１０にクロック信号による割込要求を行ない、カウンタ（図示せず）のカウント値をインクリメントする処理（タイマ割込処理）を行わなければならない。例えば、上記従来例では１０ｍｓのタイマ命令の経過時間を精度４分の１で測定するために、クロック信号の周期を２．５ｍｓに設定している（図７参照）。
【０００４】
ところで、上記従来例においては、プログラミング装置等の周辺機器（外部機器）とのデータ通信を行うために、通信用のシリアルコントロール部１３がアドレスデータバス１４によって主ＣＰＵ１０や専用ＣＰＵ１１等と接続されている。また、上記アドレスデータバス１４にはＲＡＭ（書込／消去可能なメモリ）から成るメモリ部１５と、主ＣＰＵ１０に代わってメモリ部１５とシリアルコントロール部１３との間のデータ転送を制御するＤＭＡ（ダイレクト・メモリ・アクセス）コントローラ部（以下、「ＤＭＡ部１６」と略す）が接続されており、外部へ送信するデータのメモリ部１５からの読み出し及び外部から受信したデータのメモリ部１５への書込みは、全てＤＭＡ部１６によって制御されている。このように、シリアルコントロール部１３とメモリ部１５との間のデータ転送をＤＭＡ部１６によって制御することにより、シリアルコントロール部１３から主ＣＰＵ１０への割込処理用のプログラム等が必要でないため、ソフトウェアの負担と全体の処理時間や処理効率が向上することになる。
【０００５】
【発明が解決しようとする課題】
ところが、上記従来例のようにＤＭＡ部１６を用いた場合には、種々の利点はあるもののＤＭＡ部１６が比較的に高価であるため、コストダウンが困難であって割高になるという問題があった。
本発明は上記問題点の解決を目的とするものであり、データ転送の処理効率を低下させることなくコストダウンが可能なプログラマブルコントローラを提供しようとするものである。
【０００６】
【課題を解決するための手段】
請求項１の発明は、上記目的を達成するために、プログラムを実行し演算処理を行う主ＣＰＵと、前記主ＣＰＵにて行う演算処理のうちで特定の演算処理を前記主ＣＰＵからの指令により代行する専用ＣＰＵとを備え、前記専用ＣＰＵは、前記特定の演算処理を行っている間は前記主ＣＰＵを動作停止状態とし、前記特定の演算処理が終了したときあるいは前記特定の演算処理以外の演算処理を行う必要が生じたとき若しくは外部からの停止要求信号入力があったときに前記主ＣＰＵの動作停止状態を解除するようにして成るプログラマブルコントローラにおいて、外部機器とのデータ通信を行うとともに所定の一区切りのデータを受信する毎に前記主ＣＰＵに割り込み要求を行うシリアルコントロール部と、前記主ＣＰＵの動作用のクロック信号を発生するとともに該クロック信号を前記停止要求信号として前記専用ＣＰＵに出力するタイマ部と、前記シリアルコントロール部からの割り込み要求を受けた前記主ＣＰＵによって転送制御が行われて外部機器から受信したデータが格納されるメモリ部とを備え、前記シリアルコントロール部にて前記一区切りのデータを受信するのに要する受信時間以下の値に前記クロック信号の周期を設定したものであり、専用ＣＰＵにおける特定の演算処理の実行中にも前記クロック信号に同期して主ＣＰＵの動作停止状態が解除され、しかも、シリアルコントロール部からの割込要求が発生する時間間隔すなわちシリアルコントロール部にて前記一区切りのデータを受信するのに要する受信時間よりも短い時間間隔で主ＣＰＵが動作可能状態となり、主ＣＰＵによってシリアルコントロール部とメモリ部との間のデータ転送を制御することができる。つまり、従来例のように高価なＤＭＡコントローラを用いることなく、専用ＣＰＵの演算処理実行中にもシリアルコントロール部とメモリ部との間でデータ転送が行え、データ転送の処理効率を低下させることなくコストダウンが可能となる。
【０００７】
請求項２の発明は、請求項１の発明において、前記主ＣＰＵが実行するタイマ命令におけるタイマ時間の約数に前記クロック信号の周期を設定したものであり、主ＣＰＵが動作可能状態となる周期がタイマ命令のための時間測定の周期と一致することになり、係る時間測定が所定の精度で容易に行うことができる。
請求項３の発明は、請求項２の発明において、前記シリアルコントロール部におけるデータ通信の通信速度を１９２００ビット毎秒とするとともに前記一区切りのデータのデータ長を１０ビット以上とし併せて前記クロック信号の周期を約５００μ秒として成るものであり、主ＣＰＵは約５００μ秒毎に動作可能状態に戻ることから、シリアルコントロール部が最短で約５２０．８μ秒毎に割込要求を行うような上記通信フォーマットにおいても、ＤＭＡコントローラを用いずにデータ転送処理を効率良く行うことができる。
【０００８】
【発明の実施の形態】
以下、本発明の実施形態を図面を参照して詳細に説明する。
図１は本実施形態のプログラマブルコントローラの基本構成を示すブロック図であり、プログラムを実行し演算処理を行う主ＣＰＵ１と、主ＣＰＵ１にて行う演算処理のうちで特定の演算処理を主ＣＰＵ１からの指令により代行する専用ＣＰＵ２と、外部機器とのデータ通信を行うとともに所定の一区切りのデータを受信する毎に主ＣＰＵ１に割り込み要求を行うシリアルコントロール部３と、主ＣＰＵ１の動作用のクロック信号を発生するタイマ部４と、シリアルコントロール部３からの割り込み要求を受けた主ＣＰＵによって転送制御が行われて外部機器から受信したデータが格納されるメモリ部５とを備えている。なお、これら各部はアドレスデータバス６によって主ＣＰＵ１及び専用ＣＰＵ２に各々接続されている。また、タイマ部４のクロック信号及びシリアルコントロール部３の割込要求信号が割込コントロール部７に入力されており、割込コントロール部７が有するレジスタの所定のビットがクロック信号並びに割込要求信号によって変化することにより、主ＣＰＵ１がタイマ部４とシリアルコントロール部３の割込要求を個別に認識することができる。
【０００９】
専用ＣＰＵ２は、従来例で説明したように、特定の演算処理を主ＣＰＵ１に代わって実行するのであって、専用ＣＰＵ２が演算処理を行っている間は主ＣＰＵ１がホールド状態（動作停止状態）となり、専用ＣＰＵ２の演算処理が終了したとき、あるいは専用ＣＰＵ２が主ＣＰＵ１にて実行すべき命令を読み出した場合のように特定の演算処理以外の演算処理を行う必要が生じたとき、若しくは外部からの停止要求信号入力があったときに主ＣＰＵ１のホールド状態を解除するようにしてある。なお、主ＣＰＵ１がホールド状態にあるときには、割込コントロール部７からの割込要求は受け付けられない。
【００１０】
アドレスデータバス６に接続されたメモリ部５は、例えばＲＡＭのような書込／消去可能な半導体メモリで構成されている。また、後述するように、本実施形態の場合にはＤＭＡコントローラを具備しておらず、シリアルコントロール部３とメモリ部５との間のデータ転送は主ＣＰＵ１によって制御される。
シリアルコントロール部３はプログラミング装置等の外部機器との間でデータ通信を行うものであって、例えば１バイトのバッファを有しており、バッファに１バイトのデータを受信する毎に割込要求を行い、アドレスデータバス６へ１ビットずつデータを送出したり、あるいは１ビットずつデータを取込む。
【００１１】
タイマ部４は、一定周期のパルス信号から成るクロック信号を発生し、割込コントロール部７と専用ＣＰＵ２とに出力している。ここで、専用ＣＰＵ２に入力されるクロック信号は停止要求信号となり、例えば、クロック信号がＨレベルに立ち上がる毎に専用ＣＰＵ２が実行中の演算処理を中断するとともに主ＣＰＵ１のホールド状態を解除するのである。一方、割込コントロール部７にクロック信号が入力されることにより、ホールド状態が解除された主ＣＰＵ１にタイマ部４からの割込要求（以下、「タイマ割込要求」と呼ぶ）が行われる。但し、上記動作は専用ＣＰＵ２にて特定の演算処理が実行されている場合であって、専用ＣＰＵ２が動作せずに主ＣＰＵ１が演算処理を実行している場合には、タイマ割込要求のみが行われる。
【００１２】
次に、本実施形態の動作について図２〜図５のフローチャートを参照して説明する。
まず、図２は全体動作を示すフローチャートであり、プログラマブルコントローラの一般的な動作と同様に、電源投入により各種のハードウェアやパラメータ等の初期化を行なった後、ユーザプログラムを実行してＩ／Ｏリフレッシュ、演算処理、通信コマンドの実行処理を繰り返すものである。
【００１３】
図３は主ＣＰＵ１の演算処理のうちで、特に高速な処理が必要となるような特定の演算処理を専用ＣＰＵ２にて実行する場合の主ＣＰＵ１と専用ＣＰＵ２のそれぞれの動作を示すフローチャートである。まず、主ＣＰＵ１は、専用ＣＰＵ２で処理させる命令（コマンド）を読み出すと、専用ＣＰＵ２のレジスタに各種パラメータを設定し、専用ＣＰＵ２に起動をかける。
【００１４】
一方、起動した専用ＣＰＵ２から主ＣＰＵ１へＨＯＬＤ信号が出力され、主ＣＰＵ１がホールド状態となる。なお、ＨＯＬＤ信号を受け取った応答として、主ＣＰＵ１から専用ＣＰＵ２へはＡＣＫ信号（アクノリッジ信号）が出力される。そして、専用ＣＰＵ２は読み出した命令が実行可能な命令であれば演算処理を行ない、実行不可能な命令（例えば、主ＣＰＵ１で実行すべき命令）を読み出した場合には演算処理を中断し、主ＣＰＵ１のホールド状態を解除して制御を主ＣＰＵ１に戻す。また、専用ＣＰＵ２が演算処理を実行中に外部からの停止要求信号あるいはタイマ部４からのクロック信号が入力されれば、同様に主ＣＰＵ１のホールド状態を解除する。反対に、停止要求信号やクロック信号が入力されなければ、その間は特定の演算処理を終了まで続行し、終了すれば主ＣＰＵ１のホールド状態を解除して制御を主ＣＰＵ１に戻す。
【００１５】
それに対して、主ＣＰＵ１はホールド状態が解除されるとその解除の要因を調べ、主ＣＰＵ１の実行命令であればその演算処理を行う。このとき、主ＣＰＵ１は、割込コントロール部７からのタイマ割込要求若しくはシリアルコントロール部３からの割込要求（以下、これを「データ転送割込要求」という）の有無を調べ、割込要求に応じて各々のルーチン、すなわちタイマ割込処理ルーチン若しくはデータ転送処理ルーチンを実行する。そして、各ルーチンの処理終了後は再び専用ＣＰＵ２を起動することにより、専用ＣＰＵ２が中断した演算処理を続行する。
【００１６】
図４はタイマ割込処理ルーチンのフローチャートである。主ＣＰＵ１は補助カウンタ（図示せず）をデクリメントし、そのカウント値がゼロでなければタイマ割込処理ルーチンを終了して元の処理に戻る。一方、補助カウンタのカウント値がゼロであれば、補助カウンタに初期値（＝５）を設定するとともに２．５ｍｓカウンタ（図示せず）をインクリメントした後、タイマ割込処理ルーチンを終了して元の処理に戻る。つまり、本実施形態ではタイマ部５のクロック信号の周期を５００μｓに設定しているため、主ＣＰＵ１はクロック信号の周期（５００μｓ）に同期してタイマ割込処理ルーチンを実行することになり、タイマ割込処理ルーチンを１回実行する毎に補助カウンタのカウント値を初期値（＝５）から０までデクリメントすることになる。その結果、主ＣＰＵ１は５００μｓ×５＝２．５ｍｓの時間測定を行っており、従来例と同様に１０ｍｓタイマ命令のための経過時間測定を４分の１の精度で実行可能としている。
【００１７】
図５はデータ転送処理ルーチンのフローチャートである。主ＣＰＵ１は、データ転送割込要求があればデータ転送処理ルーチンに分岐し、シリアルコントロール部３より受信データを１バイト読み出すとともに、受信バッファ（図示せず）のポインタを読み出す。このポインタはメモリ部５のアドレスを示しており、主ＣＰＵ１は、読み出したポインタのアドレスに受信データをセットすることにより、受信データをメモリ部５に記憶する。その後、次の受信データのセットに備えて、主ＣＰＵ１は受信ポインタをインクリメントしてデータ転送処理ルーチンを終了し、元の処理に戻る。
【００１８】
ここで、外部機器とシリアルコントロール部３との間で行うデータ通信のフォーマットは、例えば、調歩同期通信であって、スタートビットが１ビット、データ長が８ビット、パリティ奇数、ストップビットが１ビットで通信速度が１９２００ｂｐｓである。この場合、シリアルコントロール部３で一区切りのデータを受信してから次の一区切りのデータを受信完了するまでの時間間隔、すなわち、シリアルコントロール部３からのデータ転送割込要求の発生時間間隔は、１÷１９２００×（１＋８＋１＋１）＝５７２．９μｓとなる。また、別のフォーマット（ストップビットが１ビット、データ長が７ビット、パリティ寄数、ストップビットが１ビット）の場合には、その時間間隔は１÷１９２００×（１＋７＋１＋１）＝５２０．８μｓとなる。
【００１９】
そこで、通信速度が１９２００ｂｐｓであって、一区切りのデータが１０ビット以上である通信フォーマットの場合には、シリアルコントロール部３からのデータ転送割込要求が５２０．８μｓよりも短い時間間隔で行われることはないから、これよりも短い時間間隔で主ＣＰＵ１を動作可能な状態に戻すようにすれば、従来例のようにＤＭＡコントローラを用いなくても、主ＣＰＵ１がシリアルコントロール部３とメモリ部５との間のデータ転送を制御することができ、高価なＤＭＡコントローラを使用しないことでコストダウンが図れる。そのために、本実施形態ではタイマ部４のクロック信号の周期を５００μｓに設定し、クロック信号を専用ＣＰＵ２の停止要求信号としている。さらに、クロック信号の周期を５００μｓとしたことにより、クロック信号の周期が１０ｍｓタイマ命令の経過時間を測定するための２．５ｍｓカウンタのカウント時間（２．５ｍｓ）の約数となり、従来例と同様にタイマ命令の経過時間測定が行えるのである。
【００２０】
上述のように、本実施形態では、シリアルコントロール部３にて一区切りのデータを受信するのに要する受信時間（５２０．８μｓ）以下であって、且つ主ＣＰＵ１が実行するタイマ命令におけるタイマ時間（２．５ｍｓ）の約数（最大公約数）である５００μｓにタイマ部４のクロック信号の周期を設定したため、専用ＣＰＵ２による演算処理実行中であっても、クロック信号の周期に同期して主ＣＰＵ１がホールド状態から動作可能な状態へ復帰して、この間にシリアルコントロール部３からのデータ転送割込要求があればデータ転送処理ルーチンを実行して受信データをシリアルコントロール部３からメモリ部５へ転送することができる。すなわち、ＤＭＡコントローラを使わずにコストダウンを図るとともに、ソフトウェアの割込回数を最小とすることで主ＣＰＵ１への負荷も減少させることができるのである。
【００２１】
【発明の効果】
請求項１の発明は、プログラムを実行し演算処理を行う主ＣＰＵと、前記主ＣＰＵにて行う演算処理のうちで特定の演算処理を前記主ＣＰＵからの指令により代行する専用ＣＰＵとを備え、前記専用ＣＰＵは、前記特定の演算処理を行っている間は前記主ＣＰＵを動作停止状態とし、前記特定の演算処理が終了したときあるいは前記特定の演算処理以外の演算処理を行う必要が生じたとき若しくは外部からの停止要求信号入力があったときに前記主ＣＰＵの動作停止状態を解除するようにして成るプログラマブルコントローラにおいて、外部機器とのデータ通信を行うとともに所定の一区切りのデータを受信する毎に前記主ＣＰＵに割り込み要求を行うシリアルコントロール部と、前記主ＣＰＵの動作用のクロック信号を発生するとともに該クロック信号を前記停止要求信号として前記専用ＣＰＵに出力するタイマ部と、前記シリアルコントロール部からの割り込み要求を受けた前記主ＣＰＵによって転送制御が行われて外部機器から受信したデータが格納されるメモリ部とを備え、前記シリアルコントロール部にて前記一区切りのデータを受信するのに要する受信時間以下の値に前記クロック信号の周期を設定したので、専用ＣＰＵにおける特定の演算処理の実行中にも前記クロック信号に同期して主ＣＰＵの動作停止状態が解除され、しかも、シリアルコントロール部からの割込要求が発生する時間間隔すなわちシリアルコントロール部にて前記一区切りのデータを受信するのに要する受信時間よりも短い時間間隔で主ＣＰＵが動作可能状態となり、主ＣＰＵによってシリアルコントロール部とメモリ部との間のデータ転送を制御することができ、従来例のように高価なＤＭＡコントローラを用いることなく、専用ＣＰＵの演算処理実行中にもシリアルコントロール部とメモリ部との間でデータ転送が行え、データ転送の処理効率を低下させることなくコストダウンが可能となるという効果がある。
【００２２】
請求項２の発明は、前記主ＣＰＵが実行するタイマ命令におけるタイマ時間の約数に前記クロック信号の周期を設定したので、主ＣＰＵが動作可能状態となる周期がタイマ命令のための時間測定の周期と一致することになり、係る時間測定が所定の精度で容易に行うことができるという効果がある。
請求項３の発明は、前記シリアルコントロール部におけるデータ通信の通信速度を１９２００ビット毎秒とするとともに前記一区切りのデータのデータ長を１０ビット以上とし併せて前記クロック信号の周期を約５００μ秒として成るので、主ＣＰＵは約５００μ秒毎に動作可能状態に戻ることから、シリアルコントロール部が最短で約５２０．８μ秒毎に割込要求を行うような上記通信フォーマットにおいても、ＤＭＡコントローラを用いずにデータ転送処理を効率良く行うことができるという効果がある。
【図面の簡単な説明】
【図１】実施形態を示すブロック図である。
【図２】同上の動作を説明するためのフローチャートである。
【図３】同上の動作を説明するためのフローチャートである。
【図４】同上の動作を説明するためのフローチャートである。
【図５】同上の動作を説明するためのフローチャートである。
【図６】従来例を示すブロック図である。
【図７】同上の動作を説明するためのフローチャートである。
【符号の説明】
１  主ＣＰＵ
２  専用ＣＰＵ
３  シリアルコントロール部
４  タイマ部
５  メモリ部
６  アドレスデータバス
７  割込コントロール部
【図１】
0003627352.tif 000002
【図２】
0003627352.tif 000003
【図３】
0003627352.tif 000004
【図４】
0003627352.tif 000005
【図５】
0003627352.tif 000006
【図６】
0003627352.tif 000007
【図７】
0003627352.tif 000008