(57)【特許請求の範囲】
【請求項１】
シーケンスプログラムのスキャンに伴って対象機器を制御するプログラマブルコントローラであって、条件としての規定の１ビットの変化点を検出すると１スキャンタイム長のパルスを出力するパルス出力命令を有し、パルス出力命令の出力を格納する出力記憶手段と、出力記憶手段と同容量であって前回のスキャン時における条件を格納する前回条件記憶手段と、アドレス修飾のためのインデックスレジスタと、インデックスレジスタの内容を用いてアドレス修飾を行なう修飾演算機能部とを備え、パルス出力命令をアドレス修飾可能とし、パルス出力命令は、インデックスレジスタを用いて出力記憶手段および前回条件記憶手段のアドレスを求める過程と、前回条件記憶手段の前記アドレスから読み出した前回のスキャン時の条件を汎用レジスタに転送する過程と、今回のスキャンで得られアキュムレータに格納された条件を一時レジスタに転送する過程と、アキュムレータに格納された今回のスキャン時の条件と汎用レジスタに格納された前回のスキャン時の条件とを比較して変化点の有無を検出する過程と、変化点を検出すると出力記憶手段の前記アドレスにそれ以前とは異なる値を格納する過程と、前記一時レジスタの格納値を前回条件記憶手段の前記アドレスに格納する過程とからなり、条件の変化点を検出することを特徴とするパルス出力命令を持つプログラマブルコントローラ。
【請求項２】
前記変化点は条件の立ち上がり点であることを特徴とする請求項１記載のパルス出力命令を持つプログラマブルコントローラ。
【請求項３】
前記変化点は条件の立ち下がり点であることを特徴とする請求項１記載のパスル出力命令を持つプログラマブルコントローラ。
【請求項４】
変化点の有無は、アキュムレータに格納された今回のスキャン時の条件と汎用レジスタに格納された前回のスキャン時の条件との排他的論理和により検出されることを特徴とする請求項１記載のパルス出力命令を持つプログラマブルコントローラ。
【請求項５】
前記排他的論理和とアキュムレータに格納された今回のスキャン時の条件と汎用レジスタに格納された前回のスキャン時の条件との論理積を出力記憶手段に格納することを特徴とする請求項４記載のパルス出力命令を持つプログラマブルコントローラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、パルス出力命令を持つプログラマブルコントローラに関するものである。
【０００２】
【従来の技術】
一般に、プログラマブルコントローラにおいて、特定の条件の成立に基づいて制御を行なうためにパルスを発生させることが多い。たとえば、押釦スイッチの押操作に基づいて何らかの制御を行なうとすれば、押操作の時間のばらつきによる不都合を回避するために一定時間幅のパルスを生成する。また、計測器などからのデータを所定のタイミング信号の立ち上がりで補足するためにパルスを生成するのも一般的に行なわれていることである。このようなパルスは入力信号の立ち上がりや立ち下がりのタイミングで生成される。
【０００３】
立ち上がりパルスを生成するには、図４に示すようなシーケンスプログラム（ラダー図として示してある）が必要である。図４においてＸ０は入力、Ｍ０は出力を示し、Ｒ０はパルス出力を生成するために用いるリレーを示している。この構成ではプログラマブルコントローラのスキャン動作を利用してパルスを生成している。すなわち、図４の構成では図５のように、入力Ｘ０の立ち上がりが検出されると、１スキャンタイム長のパルスが出力Ｍ０として得られるのである。
【０００４】
【発明が解決しようとする課題】
ところで、このようなシーケンスプログラムでパルスを生成するとすれば４ステップの記述が必要であり、シーケンスプログラムが長くなってシーケンスプログラムの開発効率が悪くなるという問題が生じ、また入力Ｘ０と出力Ｍ０とのほかにリレーＲ０の記述が必要であるから、可読性が悪くなって修正や保守が面倒になるという問題が生じる。
【０００５】
さらに、シーケンスプログラムの小容量化を図るにはアドレス修飾を行なうのが有効であるが（特開昭６２−１７１００２号公報等参照）、上述したパルス発生用のシーケンスプログラムにおいてアドレス修飾を行なうとすれば、入力Ｘ０、出力Ｍ０、リレーＲ０のそれぞれにアドレス修飾用の命令を用いる必要があり、しかもアドレス修飾を行なうと直接アドレス指定に比べて占有ステップ数（ワード数）が２倍になるから、１回のパルスの発生について８ステップが必要になって、シーケンスプログラムが一層長くなり可読性が一層低下するという問題が生じる。
【０００６】
本発明は上記事由に鑑みて為されたものであり、その主な目的は、パルスを発生する専用の命令を持つことによりシーケンスプログラムの記述量を低減させることが可能なパルス出力命令を持つプログラマブルコントローラを提供することにある。また、請求項２の発明においては、パルス出力命令をアドレス修飾可能としてシーケンスプログラムの一層の小容量化を図ったプログラマブルコントローラを提供することを目的としている。
【０００７】
【課題を解決するための手段】
請求項１の発明は、シーケンスプログラムのスキャンに伴って対象機器を制御するプログラマブルコントローラであって、条件としての規定の１ビットの変化点を検出すると１スキャンタイム長のパルスを出力するパルス出力命令を有し、パルス出力命令の出力を格納する出力記憶手段と、出力記憶手段と同容量であって前回のスキャン時における条件を格納する前回条件記憶手段と、アドレス修飾のためのインデックスレジスタと、インデックスレジスタの内容を用いてアドレス修飾を行なう修飾演算機能部とを備え、パルス出力命令をアドレス修飾可能とし、パルス出力命令は、インデックスレジスタを用いて出力記憶手段および前回条件記憶手段のアドレスを求める過程と、前回条件記憶手段の前記アドレスから読み出した前回のスキャン時の条件を汎用レジスタに転送する過程と、今回のスキャンで得られアキュムレータに格納された条件を一時レジスタに転送する過程と、アキュムレータに格納された今回のスキャン時の条件と汎用レジスタに格納された前回のスキャン時の条件とを比較して変化点の有無を検出する過程と、変化点を検出すると出力記憶手段の前記アドレスにそれ以前とは異なる値を格納する過程と、前記一時レジスタの格納値を前回条件記憶手段の前記アドレスに格納する過程とからなり、条件の変化点を検出するものである。この構成によれば、前回条件記憶手段に格納した前回のスキャン時の条件に基づいて条件の変化点を検出するから、条件の変化点を検出してパルスを出力することができるのである。また、前回条件記憶手段を出力記憶手段と同容量としているから、条件の変化点を検出するためのシーケンスプログラムをその都度記述する必要がなく、前回条件記憶手段に格納された前回のスキャン時の条件を読み出して今回のスキャン時の条件と比較する作業をパルス出力命令の中で実行することで、シーケンスプログラムの記述量を大幅に低減することができる。
【０００８】
また、パルス出力命令を用いる際にアドレス修飾を行なうことができるから、シーケンスプログラムの小容量化につながる。つまり、１命令でパルスを発生させることができるから、アドレス修飾を行なう場合も２ステップで記述することができ、従来構成に比較するとシーケンスプログラムの記述量が１パルス当たり４分の１になる。
【００１０】
請求項２の発明は、請求項１の発明において、前記変化点が条件の立ち上がり点であることを特徴とするものである。この構成は望ましい実施態様である。
請求項３の発明は、請求項１の発明において、前記変化点が条件の立ち下がり点であることを特徴とするものである。この構成は望ましい実施態様である。
【００１１】
請求項４の発明は、請求項１の発明において、変化点の有無が、アキュムレータに格納された今回のスキャン時の条件と汎用レジスタに格納された前回のスキャン時の条件との排他的論理和により検出されるものである。この構成は望ましい実施態様である。
請求項５の発明は、請求項４の発明において、前記排他的論理和とアキュムレータに格納された今回のスキャン時の条件と汎用レジスタに格納された前回のスキャン時の条件との論理積を出力記憶手段に格納するものである。この構成は望ましい実施態様である。
【００１２】
【発明の実施の形態】
本実施形態は、図１に示す処理手順を有したパルス出力命令をプログラマブルコントローラに持たせたものである。プログラマブルコントローラは、図２に示すように、マイクロプロセッサ１と、システムプログラムを格納したシステムメモリ２と、シーケンスプログラムを格納するプログラムメモリ３と、各種データを格納するデータメモリ４と、外部機器を接続する入出力部５とを備える。また、図示していないがプログラム支援装置を接続するポートなども設けられる。
【００１３】
マイクロプロセッサ１は、演算処理ユニット１１とアキュムレータ１２とのほかインデックスレジスタ１３、汎用レジスタ１４、一時レジスタ１５を備え、図１に示す処理の実行が可能になっている。また、データメモリ４にはパルス出力命令の実行結果を格納する出力記憶手段としての出力記憶領域Ｄ1 およびパルス出力命令を実行したときの条件を記憶する前回条件記憶手段としての条件記憶領域Ｄ2 が設けられている。出力記憶領域Ｄ1 と条件記憶領域Ｄ2 とは同容量で複数ビットのビットデータが格納可能になっている。
【００１４】
本実施形態で説明するパルス出力命令は、アドレス修飾が可能になっている。すなわち、シーケンスプログラムには、インデックスレジスタの内容を書き込むステップとパルス出力命令を実行するステップとの２ステップを記述するだけでアドレス修飾指定を行なってパルスを出力することができる。ここに、アドレス修飾を実行するアドレス修飾機能部は、マイクロプロセッサ１、システムメモリ２、プログラムメモリ３により構成されることになる。
【００１５】
以下に図１に示す処理手順について説明する。パルス出力命令を実行すると、インデックスレジスタ１３の内容を用いて、出力記憶領域Ｄ1 の所望のアドレスと、条件記憶領域Ｄ2 における対応するアドレスとが計算される（Ｓ１）。こうして出力記憶領域Ｄ1 および条件記憶領域Ｄ2 のアドレスが求められると、今回のスキャンでのパルス出力命令の実行結果を格納する領域が確保され、かつ前回のスキャン時にパルス出力命令を実行したときの条件を獲得することができる。ここで、条件の立ち上がりを検出したときにパルスを発生するのであれば、条件記憶領域Ｄ2 の初期値は０になる（論理値が０から１に変化することを立ち上がりとしている）。
【００１６】
出力記憶領域Ｄ1 および条件記憶領域Ｄ2 のアドレスを求めた後には、条件記憶領域Ｄ2 より得られた前回のスキャン時の条件を汎用レジスタ１４に格納し、アキュムレータ１２に格納された今回のスキャン時の条件を一時レジスタ１５に格納する。この条件は次回のスキャン時に変化点（立ち上がり点、立ち下がり点）の検出用に用いることになる。さらに、条件に変化点があるか否かを検出するために、アキュムレータ１２に格納された今回のスキャン時の条件と汎用レジスタ１４に格納した前回のスキャン時の条件との排他的論理和を求める。この論理演算によって、条件の変化点の有無を検出することができる。つまり、条件に変化があれば論理演算の結果は１になり、条件に変化がなければ０になる。さらに、上述の排他的論理和の結果と現在のスキャン時の条件との論理積を求める。これにより、今回のスキャン時の条件が０であれば変化点の有無にかかわらず論理演算の結果が０であり、今回のスキャン時の条件が１であって変化点が検出されれば論理演算の結果が１になる。つまり、条件の立ち上がり点が検出されたときにのみ出力値が１になる。また、条件に変化がないか、条件の立ち下がり点が検出されたときには出力値が０になる。つまり、条件の立ち上がり点から１スキャンタイム長のパルスが出力されることになる。この演算結果はアキュムレータ１２に格納される（Ｓ２）。
【００１７】
次に、アキュムレータ１２の内容が出力記憶領域Ｄ1 のうちステップＳ１で求めたアドレスに格納される（Ｓ３）。また、一時レジスタ１５の内容が条件記憶領域Ｄ2 のうちステップＳ１で求めたアドレスに格納される（Ｓ４）。これらの処理によって、出力記憶領域Ｄ1 のうちステップＳ１で求めたアドレスの内容は、条件の立ち上がりから１スキャンタイム長の間だけ１になりパルスとして用いられることになる。また、今回のスキャン時の条件が一時レジスタ１５から条件記憶領域Ｄ2 に転送されるから、この条件を次回のスキャン時に変化点の有無の検出に用いることになる。上述の説明から明らかなように、パルスは出力記憶領域Ｄ1 の特定アドレスに格納された値の変化として得られるから、他のビット演算において自由に参照することができる。
【００１８】
上述のようなパルス出力命令を用いてビット演算を行なうことで、シーケンスプログラム中でアドレス修飾を行なってパルスを発生させることができるのであって、たとえば、図３に示すように、アドレス修飾を行なった入力ｉＸｎとアドレス修飾を行なった出力ｉＰｎ（パルスリレー）とを記述するだけでパルスを用いることができるのである。このようにシーケンスプログラムを従来よりも簡単に記述することができるから、シーケンスプログラムのステップ数が低減され、かつ不要な命令の記述がなくなり、シーケンスプログラムの作成、修正、保守が容易になるのである。
【００１９】
【発明の効果】
請求項１の発明は、シーケンスプログラムのスキャンに伴って対象機器を制御するプログラマブルコントローラであって、条件としての規定の１ビットの変化点を検出すると１スキャンタイム長のパルスを出力するパルス出力命令を有し、パルス出力命令の出力を格納する出力記憶手段と、出力記憶手段と同容量であって前回のスキャン時における条件を格納する前回条件記憶手段と、アドレス修飾のためのインデックスレジスタと、インデックスレジスタの内容を用いてアドレス修飾を行なう修飾演算機能部とを備え、パルス出力命令をアドレス修飾可能とし、パルス出力命令は、インデックスレジスタを用いて出力記憶手段および前回条件記憶手段のアドレスを求める過程と、前回条件記憶手段の前記アドレスから読み出した前回のスキャン時の条件を汎用レジスタに転送する過程と、今回のスキャンで得られアキュムレータに格納された条件を一時レジスタに転送する過程と、アキュムレータに格納された今回のスキャン時の条件と汎用レジスタに格納された前回のスキャン時の条件とを比較して変化点の有無を検出する過程と、変化点を検出すると出力記憶手段の前記アドレスにそれ以前とは異なる値を格納する過程と、前記一時レジスタの格納値を前回条件記憶手段の前記アドレスに格納する過程とからなり、条件の変化点を検出するものであり、前回条件記憶手段に格納した前回のスキャン時の条件に基づいて条件の変化点を検出するから、条件の変化点を検出してパルスを出力することができ、しかも、前回条件記憶手段を出力記憶手段と同容量としているから、条件の変化点を検出するためのシーケンスプログラムをその都度記述する必要がなく、前回条件記憶手段に格納された前回のスキャン時の条件を読み出して今回のスキャン時の条件と比較する作業をパルス出力命令の中で実行することで、シーケンスプログラムの記述量を大幅に低減することができるという利点がある。
【００２０】
また、パルス出力命令を用いる際にアドレス修飾を行なうことができるから、シーケンスプログラムの小容量化につながるという利点がある。つまり、１命令でパルスを発生させることができるから、アドレス修飾を行なう場合も２ステップで記述することができ、従来構成に比較するとシーケンスプログラムの記述量が１パルス当たり４分の１になるという利点がある。さらに、パルスは出力記憶手段の特定アドレスに格納された値の変化として得られるから、他のビット演算において自由に参照することができる。
【図面の簡単な説明】
【図１】本発明の実施形態で用いるパルス出力命令の手順を示す動作説明図である。
【図２】同上を実行するプログラマブルコントローラのブロック図である。
【図３】同上を用いて記述したシーケンスプログラムの一部を示す図である。
【図４】従来のシーケンスプログラムの一部を示す図である。
【図５】同上の動作説明図である。
【符号の説明】
１  マイクロプロセッサ
２  システムメモリ
３  プログラムメモリ
１１  演算処理ユニット
１２  アキュムレータ
１３  インデックスレジスタ
１４  汎用レジスタ
１５  一時レジスタ
Ｄ1   出力記憶領域
Ｄ2   条件記憶領域
【図１】
0003695078.tif 000002
【図２】
0003695078.tif 000003
【図３】
0003695078.tif 000004
【図４】
0003695078.tif 000005
【図５】
0003695078.tif 000006