(57)【特許請求の範囲】
【請求項１】
外部でプログラミングされたユーザプログラムの入出力部と、上記入出力部から取り込んだユーザプログラムが格納される書き換え可能なプログラムメモリと、上記ユーザプログラムから参照可能な変数メモリと、上記プログラムメモリに格納されたユーザプログラムを実行するユーザプログラム実行手段と、パルスジェネレータと、ハードカウンタと、タイマ時間計測手段とを備えてなり、プログラマブルコントローラによって制御される制御対象機器が接続されるＩ／Ｏユニットであって、
上記ユーザプログラムは、
上記パルスジェネレータに設定されるパルスのクロック周波数、及び、上記ハードカウンタに対する動作指令として“起動”又は“停止”を記述したタイマ出力命令を含み、
上記パルスジェネレータは、
上記ユーザプログラム実行手段が上記ユーザプログラム中のタイマ出力命令を実行することによって、上記ユーザプログラム中のタイマ出力命令に記述されているクロック周波数が設定され、設定されたクロック周波数のパルスを上記ハードカウンタに出力し、
上記ハードカウンタは、
上記ユーザプログラム実行手段が上記ユーザプログラム中のタイマ出力命令を実行することによって、上記ユーザプログラム中のタイマ出力命令に記述されている動作指令が“起動”であるなら、上記パルスジェネレータから出力されるパルスのカウントを開始する一方、その動作指令が“停止”であるなら、そのカウント動作を停止し、
上記タイマ時間計測手段は、
上記ハードカウンタにおけるパルスのカウント開始時からカウント停止時までの間に当該ハードカウンタがカウントしたパルスのカウント数と、上記タイマ出力命令に記述されている当該パルスのクロック周波数とから、上記パルスのカウント開始時からカウント停止時までの時間をタイマ時間として求め、求めたタイマ時間を前記変数メモリに格納する
ことを特徴とするプログラマブルコントローラのＩ／Ｏユニット。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、プログラマブルコントローラのＩ／Ｏユニットに関し、詳しくは、Ｉ／Ｏユニットにプログラミング機能を搭載することにより、高精度なタイマ出力機能を具備するようにしたものである。
【０００２】
【従来の技術】
従来、プログラマブルコントローラ（プログラマブルロジックコントローラ）システムにおいては、ＣＰＵユニット、Ｉ／Ｏユニット（入出力ユニット）等のユニットがビルディングブロックタイプに配列されてシステムが構築されている（いわゆる集合ユニット型）。
【０００３】
ＣＰＵユニットは、Ｉ／Ｏユニット等からの入力信号（接点情報）に基づいてユーザプログラムの演算実行を行ない、実行結果をＩ／Ｏユニットに出力する等の処理を行なうとともにプログラマブルコントローラシステム全体を統括制御する。
【０００４】
また、Ｉ／Ｏユニットは直接プログラマブルコントローラシステムにおける制御対象機器が接続されるユニットで、制御対象機器からの入力信号をＣＰＵユニットに送出するとともに、ＣＰＵユニットからの出力信号を受信して制御対象機器に送出する。
【０００５】
ここで、プログラマブルコントローラシステムにおいてタイマ機能を実現する場合、以下の実現方法がある。
（ａ）ＣＰＵユニットにおいて、ラダープログラムでタイマ命令とＯＵＴ命令にてプログラムで実現する方法。
（ｂ）Ｉ／Ｏユニット（高機能Ｉ／Ｏユニット）において、タイマ機能を動作モードとして組み込み、所定条件の下でＩ／Ｏユニットにより指定された時間だけ出力する方法。
【０００６】
なお、高機能Ｉ／Ｏユニットというのは、ＣＰＵユニットの負荷軽減、スキャンタイムの短縮等を目的として従来のＩ／Ｏユニットに新機能を付加したＩ／Ｏユニットである。
【０００７】
ここで、上記（ａ）のＣＰＵユニットのラダープログラムによるタイマ機能を図１１を参照しながら説明すると、
（１）のサイクリック処理における出力開始の条件成立よりタイマ命令を起動し、
これによって（２）でタイマをセットし、
（３）で出力開始条件成立より出力命令が実行され、ＩＯＲＦ（ＩＯリフレッシュ）命令にて外部に出力される。
【０００８】
次に、（４）でサイクリック処理においてタイムアップが検出されると、リセット命令を実行し、
（５）で該実行結果をＩＯＲＦ（ＩＯリフレッシュ）命令にて外部に出力する（（４）でタイムアップが検出されると続いて外部に出力する。すなわち、ユーザプログラムの一巡実行の後のＥＮＤリフレッシュ時に外部出力するのではない。）。
【０００９】
図１２は、上記図１１の処理をタイムチャートで表したもので、
（１）で出力開始指令が時刻ｔ１にあると、
（２）でタイマが時刻ｔ２にカウント割込みを開始し、以後は、割込み、サイクリックセンスなどで出力がＯＦＦになる時刻ｔ４までカウント割込みを行い、
（３）の外部出力は、時刻ｔ３より開始されて、時刻ｔ５に出力ＯＦＦとなる。
【００１０】
なお、図１２において、出力開始指令時刻ｔ１に対する外部出力開始時刻ｔ３の遅れ時間Ｄ１は外部出力するまでのオーバーヘッドであり、タイマ割込みのＯＦＦ時刻ｔ４に対する外部出力ＯＦＦ時刻ｔ５の遅れ時間Ｄ２は出力ＯＦＦするまでのオーバーヘッドである。
【００１１】
なお、出力開始指令時刻ｔ１に対する外部出力開始時刻ｔ３の遅れ時間Ｄ１は、図１１における（１）の出力開始指令がサイクリック処理にて行われること、及び図１１における（３）の外部出力までに（１）、（２）の２命令が挿入されていることに起因する。
【００１２】
また、タイマ割込みのＯＦＦ時刻ｔ４に対する外部出力ＯＦＦ時刻ｔ５の遅れ時間Ｄ２は、タイムアップがサイクリック処理にて検出されること等に起因する。
【００１３】
【発明が解決しようとする課題】
しかしながら、上記の如き従来のＣＰＵユニット及びＩ／Ｏユニット（高機能Ｉ／Ｏユニット）のタイマ機能には、以下の問題点があった。
【００１４】
まず、上記（ａ）のＣＰＵユニットでタイマ機能を実現する場合。
【００１５】
（イ）タイマ命令自体がラダープログラムにおけるサイクリック処理の中で、カウント、カウントアップされるため、サイクルタイムの変動などによりバラツキが生じ、指定時間に対する誤差が大きい。
【００１６】
図１１では、（１）のサイクリック処理でタイマ命令が起動され、（４）のサイクリック処理でタイムアップが検出されている。このように、サイクリックに命令内でカウント動作されるため時間精度としてはよくない。
【００１７】
（ロ）また、図１１では、（３）で出力開始条件成立より出力命令が実行され、ＩＯＲＦ（ＩＯリフレッシュ）命令にて外部に出力されるが、その前の（１），（２）の２命令処理分のオーバーヘッドが出力開始までに発生する。また、ＩＯＲＦ（ＩＯリフレッシュ）命令を使用しないと、ＥＮＤＲＦ（ＥＮＤリフレッシュ）にて外部出力となるため、さらにオーバーヘッドは大きくなる。
【００１８】
このように、タイマ命令とＯＵＴ命令が別々に動作するため、出力操作するまでのオーバーヘッド時間が大きい。
【００１９】
（ハ）また、タイマ精度を上げるために、カウント、カウントアップ処理を割込みで実施した場合、システムとして割込みが発生するため、あまり短い時間間隔での割込みは利用できず、そのため精度も上げられない。
【００２０】
次に、上記（ｂ）のＩ／Ｏユニットでタイマ機能を実現する場合。
【００２１】
（イ）ハードウェアにてタイマ出力精度を確保したとしても、従来の高機能Ｉ／Ｏユニットでは、タイマ出力は特定動作を想定した動作モードとして組み込んであるため、動作モードに自由度がなく、設定した用途以外には利用できない。つまり、Ｉ／Ｏユニットにはじめから内蔵されているものである。
【００２２】
また、ハードウェアのみの構成とすると、時間設定の自由度も低い。
【００２３】
（ロ）特定の出力開始指令に基づいてタイマのカウント割込みを開始し、外部出力を得るので、タイマ動作と出力動作が結合し、上記ＣＰＵユニットに比べて精度は上がる。しかし、内部タイマの割込みを使用するためソフト処理となり、割込み禁止処理などと競合した場合、精度が保てないケースが生じる。
【００２４】
そこで、この発明は、特定の動作モードを固定的に持たせることなく、タイマ出力命令とタイマ出力専用のハードウェアを組み合わせることにより、ユーザにおいて任意の条件、タイミングでタイマ出力できるようにしたプログラマブルコントローラのＩ／Ｏユニットを提供することを目的とする。
【００２５】
【課題を解決するための手段】
上記目的を達成するために、この発明に係わるプログラマブルコントローラのＩ／Ｏユニットは、外部でプログラミングされたユーザプログラムの入出力部と、上記入出力部から取り込んだユーザプログラムが格納される書き換え可能なプログラムメモリと、上記ユーザプログラムから参照可能な変数メモリと、上記プログラムメモリに格納されたユーザプログラムを実行するユーザプログラム実行手段と、パルスジェネレータと、ハードカウンタと、タイマ時間計測手段とを備えてなり、プログラマブルコントローラによって制御される制御対象機器が接続されるＩ／Ｏユニットであって、上記ユーザプログラムは、上記パルスジェネレータに設定されるパルスのクロック周波数、及び、上記ハードカウンタに対する動作指令として“起動”又は“停止”を記述したタイマ出力命令を含み、上記パルスジェネレータは、上記ユーザプログラム実行手段が上記ユーザプログラム中のタイマ出力命令を実行することによって、上記ユーザプログラム中のタイマ出力命令に記述されているクロック周波数が設定され、設定されたクロック周波数のパルスを上記ハードカウンタに出力し、上記ハードカウンタは、上記ユーザプログラム実行手段が上記ユーザプログラム中のタイマ出力命令を実行することによって、上記ユーザプログラム中のタイマ出力命令に記述されている動作指令が“起動”であるなら、上記パルスジェネレータから出力されるパルスのカウントを開始する一方、その動作指令が“停止”であるなら、そのカウント動作を停止し、上記タイマ時間計測手段は、上記ハードカウンタにおけるパルスのカウント開始時からカウント停止時までの間に当該ハードカウンタがカウントしたパルスのカウント数と、上記タイマ出力命令に記述されている当該パルスのクロック周波数とから、上記パルスのカウント開始時からカウント停止時までの時間をタイマ時間として求め、求めたタイマ時間を前記変数メモリに格納することを特徴とする。
【００２６】
ここで、プログラマブルコントローラのＩ／Ｏユニットとはプログラマブルコントローラシステムを構成するユニットの１つであり、多数の制御対象機器が接続されるものであるが、この発明では、Ｉ／Ｏユニットはタイマ出力命令を実行し、高精度で自由度の高いタイマ機能を実現する。
【００２７】
次に、ユーザプログラムの入出力部とは、ツールとの通信を行う部分で、実施形態では図１に示したプログラム入出力部２１である。図１において、プログラム入出力部２１はＩ／Ｏユニット２０の正面に設けられているが、取り付け位置や形態は実施形態に限定されない。この入出力部によって、ユーザがプログラミングするときに用いるプログラム開発用ツールと直接接続でき、プログラムをツールへアップロード、ツールからダウンロードすることができる。
【００２８】
また、上記入出力部から取り込んだユーザプログラムが格納される書き換え可能なプログラムメモリとは、実施形態では、図２に示すＰＲＧメモリ２７である。なお、このメモリは実施形態のように独立した専用のメモリを設けても良いが、他のメモリと兼用してもよい。
【００２９】
なお、Ｉ／Ｏユニットのプログラムを変更するときは、ツールからプログラムを全て上記入出力部を介して再びダウンロードしてＰＲＧメモリ２７の任意のエリアに格納すればよい。また、上書き保存してもよい。
【００３０】
また、オンラインエディットで一部を変更するときなどは、ＰＲＧメモリ２７から一部をツールにアップロードし、ツールにて表示し（例えば）、ユーザがツールで一部変更してから再度ＰＲＧメモリ２７に送るようにすればよい。
【００３１】
また、上記メモリに格納されたユーザプログラムを実行するユーザプログラム実行手段とは、図２及び図３に示すＣＰＵ２５である。
【００３２】
こうして、本発明では、ユーザはＩ／Ｏユニットに後付けでプログラミングされたユーザプログラムを組み込むことができる。
【００３３】
すなわち、Ｉ／Ｏユニットに取り込まれ実行されるプログラムは、ユーザがＩ／Ｏユニットで実行させたいプログラムでユーザが別途作成するカスタマイズされたプログラムである。このプログラムは、プログラマブルコントローラシステムのＣＰＵユニットでなされる処理プログラム（システムプログラムやユーザプログラム）とは独立した別のもので、Ｉ／Ｏユニット向けで独自のＩ／Ｏ制御ロジックや任意の演算処理などを行うプログラムである。外部ツールを用いて作成されるプログラムで、ユーザが新規作成、又は書き換え（変更又は追加）でき、ユーザが自由にプログラミングできるものである。
【００３４】
また、上記パルスジェネレータとは、実施形態では図３に示すパルスジェネレータ３３である。パルスジェネレータは、タイマ出力命令によって出力パルスの周波数を可変設定できる。パルス周波数を大きくするとタイマ精度が上昇し、パルス周波数を小さくするとタイマ時間を長くすることができる。
【００３５】
従って、タイマ出力目的によってパルス周波数を可変設定でき、自由度の高いタイマ出力を実現できる。
【００３６】
また、タイマ出力命令によって出力パルスの周波数を可変設定できるので、ユーザは簡単に出力パルスの周波数を可変設定できる。
【００３７】
上記ハードカウンタとは、実施形態では、図３に示すハードカウンタ３５である。
【００３８】
ハードカウンタは、上記タイマ出力命令によって上記出力パルス数を可変設定できる。
【００３９】
従って、タイマ出力目的によって出力パルス数を可変設定でき、しかも、タイマ出力命令によって出力パルス数を可変設定できるので、ユーザは簡単にタイマ値を可変設定できる。
【００４０】
なお、タイマ出力命令とは、実施形態では図５に示す時間指定付き出力命令７０がタイマ出力命令であり、時間生成の元となる上記パルスジェネレータ３３にクロック周波数７２を設定することによって出力パルスの周波数を可変設定でき、ハードカウンタ３５にクロックカウント数７３を設定することによってタイマ値を可変設定できる。
【００４１】
なお、実施形態では、図３に示す如く、パルスジェネレータ３３とハードカウンタ３５はタイマ出力回路３１を構成し、図２に示す如く、複数のタイマ出力回路３１はタイマ出力回路部（ボード部）２３に搭載されている。
【００４２】
従って、Ｉ／Ｏユニットはユニット本体内のソフトウェア機能とボード部のハードウェア機能の組み合わせによって任意の条件、タイミングでタイマ出力命令を実行でき、自由度の高いタイマ機能を実現できる。
【００４３】
また、パルスジェネレータとハードカウンタはいずれもハードウェアである。
【００４４】
従って、タイマ出力命令があると、以後はソフトウェア処理を介することなくハードウェア処理だけで出力制御ができ、従来のようにＩ／Ｏユニットに割込みによる影響を与えることなく、高精度のタイマ機能を実現できる。
【００６１】
上記タイマ時間計測手段とは、ハードカウンタのＯＮ時間を計測する構成をいう。実施形態では、図７においては、時刻ｔ１に起動入力があり、時刻ｔ２に停止入力がある。この場合、ハードカウンタ３５は時刻ｔ１にタイマ起動命令によりタイマ起動され、時刻ｔ２にタイマ停止命令により停止されている。従って、タイマ時間計測手段は、外部出力がＯＮとなっている時刻ｔ１〜ｔ２までの時間を計測する。この値は現在値として保持される。
【００６２】
これにより、ユーザは、簡単にタイマの動作時間を計測できることになる。
【００７０】
以上の説明では、Ｉ／Ｏユニットにタイマ機能を実現するボードを設けるようにしたが、１つのプログラマブルコントローラユニットでＣＰＵ機能とＩ／Ｏ機能を実現する場合はそのプログラマブルコントローラユニットにタイマ機能を実現するボードを設けることができる。この場合は、Ｉ／Ｏユニットに代えてプログラマブルコントローラユニットにパソコン１０で開発されたプログラムがダウンロードされる。
【００７１】
【発明の実施の形態】
以下、この発明に係わるプログラマブルコントローラのＩ／Ｏユニット及びプログラマブルコントローラの実施の形態を添付図面を参照して詳細に説明する。
【００７２】
図１は、本実施形態に係わるＩ／Ｏユニットに搭載されるユニットプログラムの開発環境の概要を示す概略ブロック図である。
【００７３】
図１において、１０はＩ／Ｏユニット（高機能Ｉ／Ｏユニット）２０に搭載されるユニットプログラムの開発ツールとしてのパソコンで、オンライン、オフラインでプログラムを開発する。
【００７４】
パソコン１０で開発されたプログラムはシリアルＩ／Ｆを使ってＩ／Ｏユニット２０にダウンロードされるが、そのために、Ｉ／Ｏユニット２０はダウンロード用のプログラム入出力部２１を有し、パソコン１０で開発されたプログラムはプログラム入出力部２１を介してＩ／Ｏユニット２０にダウンロードされる。
【００７５】
なお、Ｉ／Ｏユニット２０の表面には、プログラム入出力部２１の他に、制御対象となる入出力機器が接続される汎用デジタル入出力部２２と、タイマ機能を実現するために内部に実装されたボード（図示せず）の制御対象となる入出力機器が接続される入出力部２３ａが設けられている。
【００７６】
なお、図１において、６０はビルディングブロックタイプのプログラマブルコントローラシステムで、ＣＰＵユニット４０と２つのＩ／Ｏユニット２０−１，２０−２を具備している。そこで、パソコン１０で開発されたプログラムはＣＰＵユニット４０を介してＩ／Ｏユニット２０−１（Ｉ／Ｏユニット２０）に転送するよう構成することもできる。この場合、パソコン１０で開発されたプログラムは、ＣＰＵユニット４０の通信ポート４１，プログラマブルコントローラシステムの専用バス６１を介してＩ／Ｏユニット２０−１にダウンロードされる。
【００７７】
なお、図１では、Ｉ／Ｏユニット２０にタイマ機能を実現するボードを設けるようにしたが、１つのプログラマブルコントローラユニットでＣＰＵ機能とＩ／Ｏ機能を実現する場合はそのプログラマブルコントローラユニットにタイマ機能を実現するボードを設けることができる。この場合は、Ｉ／Ｏユニット２０に代えてプログラマブルコントローラユニットにパソコン１０で開発されたプログラムがダウンロードされる。
【００７８】
なお、以下の説明では、Ｉ／Ｏユニット２０にタイマ機能を実現するボードを設ける場合について説明する。
【００７９】
図２は、図１に示したＩ／Ｏユニット２０の電気的な構成を示すブロック図である。
【００８０】
図２において、Ｉ／Ｏユニット２０は、プログラム実行部３０とタイマ出力回路部（ボード部）２３より構成され、プログラム実行部３０は汎用デジタル入出力部２２、バスＩ／Ｆ用デバイス２４、ＣＰＵ２５、ＲＯＭ２６、ＰＲＧメモリ２７、変数メモリ２８を具備し、タイマ出力回路部２３は複数のタイマ出力回路３１−１、３１−２、……、３１−ｎを具備している。
【００８１】
ここで、汎用デジタル入出力部２２は、プログラマブルコントローラシステムにおける制御対象機器が接続されるもので、複数の入力接点、出力接点より構成されている。
【００８２】
バスＩ／Ｆ用デバイス２４は、プログラマブルコントローラシステム６０の専用バス６１に接続され、バス６１とのインタフェースをとるものである。
【００８３】
ＣＰＵ２５は、Ｉ／Ｏユニット２０全体を統括制御するとともに、本実施形態では特に、図１に示したパソコン１０でプログラミングされたユーザプログラムに基づいて、タイマ出力回路部２３に搭載されたタイマ出力回路３１−１、３１−２、……、３１−ｎの制御を行う。
【００８４】
ＲＯＭ２６は、ＣＰＵ２５で実行されるシステムプログラムが格納されるものである。
【００８５】
ＰＲＧ（プログラム）メモリ２７は、パソコン１０でプログラミングされたユーザプログラムがダウンロードされるメモリである。
【００８６】
変数メモリ２８は、ＣＰＵ２５によってタイマ出力回路３１−１、３１−２、……、３１−ｎの制御が行われる場合、さまざまな制御データが格納されるものである。
【００８７】
タイマ出力回路部２３はタイマ機能が実現されるボードで、本実施形態では、複数のタイマ出力回路３１−１、３１−２、……、３１−ｎを具備し、それぞれの回路から任意の条件、タイミングで高精度のタイマ出力を外部に出力できるよう構成されている。
【００８８】
図３は、図２に示したタイマ出力回路３１（タイマ出力回路３１−１、３１−２、……、３１−ｎをタイマ出力回路３１で代表する）の１つとＣＰＵ２５の詳細を示すブロック図である。
【００８９】
図３において、タイマ出力回路３１は、クロック発生器３２、パルスジェネレータ３３、ハードカウンタ３５、ＡＮＤ回路３６より構成されている。
【００９０】
ここで、クロック発生器３２は、正確にタイミングをとったクロックを発生するものである。
【００９１】
パルスジェネレータ３３は、クロック発生器３２の出力に基づいて時間を生成するための元となるクロックを発振するもので、発振クロックの周波数（クロックレート）は任意に設定できるよう構成されている。
【００９２】
ハードカウンタ３５は、パルスジェネレータ３３から出力されるパルスを計数するもので、後述するようにタイマ出力命令起動時にタイマ時間がプリセットされ、同時にハードカウンタ３５からはＡＮＤ回路３６をＯＮするためのカウントアップ信号がＡＮＤ回路３６に対して出力される。
【００９３】
なお、後述するように、ハードカウンタ３５は一定時間を計測するタイマ機能だけでなく、タイマＯＮからの経過時間を計測する計測モードでの使用もできる。
【００９４】
ＡＮＤ回路３６はハードカウンタ３５からのカウントアップ信号とＣＰＵ２５からの汎用出力があるとＯＮされる出力ゲート回路である。
【００９５】
ＣＰＵ２５は、タイマ出力命令起動時に、パルスジェネレータ３３におけるクロック周波数の設定と、ハードカウンタ３５におけるクロックカウント数のプリセットを行い、同時に、汎用ポート２５ａからＡＮＤ回路３６に対する汎用信号の出力を開始する。これによって、タイマ出力命令起動時、ＡＮＤ回路３６に対してＣＰＵ２５からは汎用信号、ハードカウンタ３５からはカウントアップ信号が出力されるので、ＡＮＤ回路３６はＯＮとなる。
【００９６】
図４は、図３に示したハードカウンタ３５、ＡＮＤ回路３６とＣＰＵ２５の動作を示すタイムチャートである。
【００９７】
図４において、時刻ｔ１にタイマ命令が起動されると、（１）に示す如く、ハードカウンタ３５にプリセット値、すなわちタイマ時間Ｔが設定される。
【００９８】
これによって、ハードカウンタ３５は（２）に示す如く、タイマとして起動され、同時に（３）に示す如く、ＡＮＤ回路３６に対してタイマ時間Ｔの間カウントアップ信号を出力する。
【００９９】
また、同時に、（４）に示す如く、ＣＰＵ２５の汎用ポート２５ａからは、ＡＮＤ回路３６に対して汎用信号を出力する。
【０１００】
これによって、（５）に示す如く、ＡＮＤ回路３６では、ハードカウンタ３５からのカウントアップ信号とＣＰＵ２５からの汎用信号のＡＮＤがとられ、タイマ時間Ｔが終了する時刻ｔ２までＡＮＤ回路３６はＯＮとなる。
【０１０１】
図５には、図３及び図４でＣＰＵ２５で実行された時間指定付き出力命令（タイマ出力命令）が示されている。図５に示した時間指定付き出力命令７０は、所定の出力開始の条件成立で起動される応用命令で、図３に示したＡＮＤ回路３６（図２に示す如く、タイマ出力回路３１は複数あるのでＡＮＤ回路３６も複数ある）の出力先端子番号７１、時間生成の元となるパルスジェネレータ３３に設定されるクロック周波数７２、出力時間を決定するためのハードカウンタ３５に設定されるクロックカウント数７３がそれぞれ設定される。
【０１０２】
これによって、各タイマ出力回路３１からは、設定された出力先に、設定されたクロック周波数で、設定されたカウント数のタイマ出力が行われることになる。
【０１０３】
なお、上記パルスジェネレータ３３に設定されるクロック周波数７２は固定とし、上記クロックカウント数７３の代わりに出力時間を設定することもできる。
【０１０４】
このように、本実施形態では、
（１）パソコン１０からＩ／Ｏユニット２０に対して、ユーザがＩ／Ｏ制御ロジック、演算処理のためのプログラムを入力する機能と、
（２）特定の出力先を指定して任意の出力時間を指定できる時間指定付き出力命令７０と、
（３）周波数が変更可能なパルスジェネレータ３３と、
（４）ＣＰＵ２５からのタイマ出力命令に基づいてタイマ時間が設定され、且つＡＮＤ回路３６に対してカウントアップ信号を出力するハードカウンタ３５と、
（５）ハードカウンタ３５からのカウントアップ出力とＣＰＵ２５からの汎用出力があると、所定の外部端子にタイマ出力するＡＮＤ回路３６と、
を具備するようにしたので、以下の効果を奏する。
【０１０５】
（１）Ｉ／Ｏユニット２０のプログラミング機能を利用し、任意の条件、タイミングでタイマ出力命令を実行できるので、高精度且つ自由度の高いタイマ出力を得ることができる。
（２）タイマ機能として、周波数が変更可能なパルスジェネレータ３３を利用するため、実現できる時間範囲、精度範囲が広い。
（３）指定時間の計測はタイマ出力命令実行後はパルスジェネレータ３３、ハードカウンタ３５及びＡＮＤ回路３６で行い、いずれもハードウェアにて行う。つまり、タイマ出力命令実行後はソフトウェア処理を介さない。従って、Ｉ／Ｏユニツト２０に対して割込みによる影響を与えることなく、高精度なタイマ制御を実行できる。
【０１０６】
ところで、図５では、時間指定付き出力命令（タイマ出力命令）７０で所定時間の計測をするようにしたが、次に、ハードカウンタ３５を利用してタイマの起動及び停止を実現する場合について図６を参照して説明する。
【０１０７】
図６に示したタイマ起動／停止命令（タイマ起動命令）８０は、所定の起動または停止の条件成立で起動される応用命令で、タイマ番号（ハードカウンタ３５の番号）８１、時間生成の元となるパルスジェネレータ３３に設定されるクロック周波数８２、起動または停止の動作指令８３が設定される。
【０１０８】
これによって、タイマ番号８１で設定されたハードカウンタ３５からは、クロック周波数８２で設定されたクロック周波数で、動作指令８３で設定された動作モードでタイマ動作が行われることになる。
【０１０９】
例えば、所定の入力条件がタイマ動作の開始を指示するものであると（動作指令８３が起動の場合）、タイマ動作を開始し、入力条件がタイマ動作の停止を指示するものであると（動作指令８３が停止の場合）、タイマ動作を停止する。
【０１１０】
これによって、本発明では、タイマ起動／停止命令によってタイマ起動、タイマ停止を実行でき、ユーザが簡単にタイマの起動、停止を設定できる。
【０１１１】
ところで、図６では、タイマ起動／停止命令（タイマ起動命令）８０によってハードカウンタ３５からタイマ起動またはタイマ停止を得られるようにしたが、次に、このタイマ起動／停止命令８０によって、ハードカウンタ３５が起動してから停止するまでの時間を計測できるようにした場合について、図７を参照しながら説明する。
【０１１２】
図７は、（１）の起動入力が時刻ｔ１にあり、（２）の停止入力が時刻ｔ２にあった場合である。
【０１１３】
この場合、（３）において、ハードカウンタ３５は時刻ｔ１にタイマ起動され、時刻ｔ２に停止されている。
【０１１４】
これによって、（４）において、タイマ（ハードカウンタ）は時刻ｔ１〜ｔ２まで計測中とされ、タイマ停止後は起動から停止までの時間（現在値）を保持することができる。
【０１１５】
このように、図７では、あるカウンタ（タイマ出力回路３１）を起動してから停止するまでの時間を計測することができる。しかも、この場合、図６に示す如く、パルスジェネレータ３３に設定されるクロック周波数８２を可変設定することができる。従って、精度の高い時間計測や計測時間幅を用途に応じて設定することができる。
【０１１６】
また、（４）で計測中のハードカウンタ３５の値は変数メモリ２８に常時反映させ、モニタすることもできる。
【０１１７】
次に、ハードカウンタ３５を計測モードで使用した場合の他の例を図８を参照しながら説明する。
【０１１８】
図８で、ハードカウンタ３５は時刻０（００００００００）から時刻ＦＦＦＦＦＦＦＦまでフリーランカウンタとしてタイマ動作をしている。
【０１１９】
ここで、ユーザはフリーランカウンタとして動作しているタイマに対してプログラムにて任意の経過時間帯域を出力領域として設定することができる。例えば図８では、任意の経過時間帯域で設定値１から設定値５までの出力領域が設定されている。ここで、本実施形態では、現在のタイマ値はどの出力領域の経過時間帯域にあるかを検出できるようにする。
【０１２０】
例えば、タイマ現在値がｔ１〜ｔ２の間にあるときは、タイマ現在値は設定値１と設定値４の経過時間帯域にある。従って、ハードカウンタ３５のタイマ現在値がｔ１〜ｔ２の間にあるとき、本実施形態では、経過時間が設定値１と設定値４の出力領域にあることがわかる。
【０１２１】
図９は、上記の如き出力領域を検出するためのテーブル比較命令である。テーブル比較命令９０は、図８に示した各出力領域を登録する応用命令で、タイマ番号（ハードカウンタ３５の番号）９１、指定動作モード９２、比較テーブルアドレス９３より構成されている。
【０１２２】
ここで、タイマ番号（ハードカウンタ３５の番号）９１は、現在値をカウントするハードカウンタ３５の番号である。
【０１２３】
指定動作モード９２は、テーブル比較命令の動作モードで、例えば、図８に示すように、出力領域がある幅をもって設定されたときはその旨、また出力領域が点で設定されたときはその旨の動作モードが指定される。
【０１２４】
比較テーブルアドレス９３は、図１０に示す比較デーブル１００における各設定値の設定アドレスである。
【０１２５】
図１０には、上記比較テーブル１００が示されている。図１０では、１６の出力領域について、出力領域検出のための比較値が登録されている。
【０１２６】
なお、図８に示した各出力領域は、その下限値（開始時刻）及び上限値（終了時刻）で定義されており、それぞれの値は８桁で登録される。
【０１２７】
そこで、比較テーブル１００には、比較の個数欄１０１（本実施形態では１６）と、各出力領域を特定するための
（１）下限値下位４桁と上位４桁（これによって下限値の８桁が特定できる）
（２）上限値下位４桁と上位４桁（これによって上限値の８桁が特定できる）
（３）出力領域の出力パターン
が登録される。
【０１２８】
従って、比較テーブル１００では、設定値１を登録するために、
（１）設定値１下限値下位４桁１１０−１ａと、
（２）設定値１下限値上位４桁１１０−１ｂと、
（３）設定値１上限値下位４桁１１０−１ｃと、
（４）設定値１上限値上位４桁１１０−１ｄと、
（５）設定値１出力パターン１１０−１ｅと、
が登録される。
【０１２９】
設定値２以下も同様であり、設定値１６を登録するために、
（１）設定値１６下限値下位４桁１１０−１６ａと、
（２）設定値１６下限値上位４桁１１０−１６ｂと、
（３）設定値１６上限値下位４桁１１０−１６ｃと、
（４）設定値１６上限値上位４桁１１０−１６ｄと、
（５）設定値１６出力パターン１１０−１６ｅと、
が登録される。
【０１３０】
ここで、図９に示すテーブル比較命令９０が実行されると、
（１）タイマ番号（ハードカウンタ３５の番号）９１で指定されるハードカウンタ３５のタイマ現在値
（２）図１０の比較テーブル１００に設定された各出力領域の設定情報
に基づいて、現在のタイマ値が検索対象となった出力領域にあるか否か判別される。
【０１３１】
比較結果は、変数メモリ２８に命令実行毎に出力される。
【０１３２】
ここで、現在のタイマ値が検索対象となった出力領域にあると判別された場合は、その出力領域の出力パターンが出力される。例えば、各出力領域の出力パターンが特定のビットパターンで出力されるとすると、検出された出力領域のビットパターンが出力される。
【０１３３】
【発明の効果】
以上説明したように、この発明によれば、外部で組まれたユーザプログラムの入出力部と、上記入出力部から取り込んだユーザプログラムが格納される書き換え可能なメモリと、上記メモリに格納されたユーザプログラムを実行するユーザプログラム実行手段と、上記ユーザプログラムにおけるタイマ出力命令によって所定周波数のパルスを出力するパルスジェネレータと、上記パルスジェネレータの出力パルス数をカウントするハードカウンタと、を有し、上記プログラミングされたユーザプログラムにおけるタイマ出力命令によって任意の条件またはタイミングでタイマ出力命令を実行するようにした。
【０１３４】
従って、本発明では以下の効果を奏する。
（１）タイマ出力目的によってパルス周波数を可変設定でき、自由度の高いタイマ出力を実現できる。また、タイマ出力命令によって出力パルスの周波数を可変設定できるので、ユーザは簡単に出力パルスの周波数を可変設定できる。
（２）タイマ出力目的によって出力パルス数を可変設定でき、しかも、タイマ出力命令によって出力パルス数を可変設定できるので、ユーザは簡単にタイマ値を可変設定できる。
（３）パルスジェネレータとハードカウンタはいずれもハードウェアである。従って、タイマ出力命令があると、以後はソフトウェア処理を介することなくハードウェア処理だけで出力制御ができ、従来のようにＩ／Ｏユニットに割込みによる影響を与えることなく、高精度のタイマ機能を実現できる。
【図面の簡単な説明】
【図１】この発明が適用されたＩ／Ｏユニットに搭載されるユニットプログラムの開発環境の概要を示す概略ブロック図。
【図２】図２に示したＩ／Ｏユニット２０の詳細を示すブロック図。
【図３】図２に示したタイマ出力回路３１とＣＰＵ２５の詳細を示すブロック図。
【図４】図３に示したハードカウンタ３５、ＡＮＤ回路３６及びＣＰＵ２５の動作を示すタイムチャート。
【図５】図３及び図４でＣＰＵ２５で実行された時間指定付き出力命令の説明図。
【図６】ハードカウンタ３５を利用してタイマの起動及び停止を実現する場合の説明図。
【図７】タイマ起動／停止命令によって、ハードカウンタ３５が起動してから停止するまでの時間を計測できるようにした場合の説明図。
【図８】ハードカウンタ３５を計測モードで使用した場合の他の例を示す説明図。
【図９】現在のタイマ値はどの設定値の設定範囲にあるかを検出できるようにするためのテーブル比較命令の説明図。
【図１０】図９のテーブル比較命令で使用される比較テーブルの説明図。
【図１１】従来のプログラマブルコントローラシステムで、ＣＰＵユニットにおいて、ラダープログラムでタイマ命令とＯＵＴ命令にてタイマ命令を実現する場合の説明図。
【図１２】図１１の処理手順を示すタイムチャート。
【符号の説明】
１０  パソコン
２０、２０−１、２０−２  Ｉ／Ｏユニット（高機能Ｉ／Ｏユニット）
２１  プログラム入出力部
２２  汎用デジタル入出力部
２３ａ  ボード挿入口
２３  タイマ出力回路部
２４  バスＩ／Ｆ用デバイス（共有メモリ）
２５  ＣＰＵ
２６  ＲＯＭ
２７  ＰＲＧメモリ
３０  プログラム実行部
３１  タイマ出力回路
６０  プログラマブルコントローラシステム
６１  専用バス
７０  時間指定付き出力命令
７１  出力先端子番号
７２  クロック周波数
７３  クロックカウント数
８０  タイマ起動／停止命令
８１  タイマ番号
８２  クロック周波数
８３  起動または停止の動作指令
９０  比較命令
９１  タイマ番号
９２  指定動作モード
９３  比較テーブルアドレス
【図１】
0004345200.tif 000002
【図２】
0004345200.tif 000003
【図３】
0004345200.tif 000004
【図４】
0004345200.tif 000005
【図５】
0004345200.tif 000006
【図６】
0004345200.tif 000007
【図７】
0004345200.tif 000008
【図８】
0004345200.tif 000009
【図９】
0004345200.tif 000010
【図１０】
0004345200.tif 000011
【図１１】
0004345200.tif 000012
【図１２】
0004345200.tif 000013