(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2022-03-09
(45)【発行日】2022-03-17
(54)【発明の名称】シーケンサー
(51)【国際特許分類】
G05B 19/05 20060101AFI20220310BHJP
【FI】
G05B19/05 A
(21)【出願番号】P 2021001810
(22)【出願日】2021-01-08
【審査請求日】2021-05-10
【早期審査対象出願】
(73)【特許権者】
【識別番号】513214033
【氏名又は名称】株式会社ザイテック
(72)【発明者】
【氏名】岡本 俊之
(72)【発明者】
【氏名】晴山 穹一
(72)【発明者】
【氏名】鬼鞍 哲夫
【審査官】影山 直洋
(56)【参考文献】
【文献】特開2006-338622(JP,A)
【文献】特開平06-259114(JP,A)
【文献】特開平11-202912(JP,A)
【文献】特開2008-097281(JP,A)
【文献】特開2001-256059(JP,A)
【文献】特許第6787616(JP,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/05
(57)【特許請求の範囲】
【請求項1】
任意の出力信号の立上
りまたは立下り動作を、任意の入出力信号の立上
りまたは立下りの状態変化に応じて制御するシーケンサーにおいて、
該シーケンサーがプログラムを実行することによって動作するマイクロコンピュータ
ーまたはプロセッサーを有し、
任意の入出力信号の立上
りまたは立下りを検出するエッジ検出のため
に、
該エッジ検出する入出力信号名と、前記エッジ検出する立上
りまたは立下り
の選択情報
と、が記述された1
つまたは複数のエッジ検出情報
を有し、
さらに、
1つまたは複数の
該エッジ検出情報の内の1つに記述された前記入出力信号の立上
りまたは立下りの時間から指定された遅延時間だけ遅れて任意の出力信号の立上
りまたは立下
りを実行するエッジ実行のため
に、
該エッジ実行する出力信号名と、前記エッジ実行する立上
りまたは立下りの選択
情報と、前記エッジ実行の起点となる前記エッジ検出情報を特定するエッジ検出対象情報と、前記遅延時間の情報
と、が記述された1
つまたは複数のエッジ実行情
報を有するのであって、
前記マイクロコンピュータ
ーまたは前記プロセッサーが前記エッジ検出を実行する
ために、
1つまたは複数の
前記エッジ検出情報を基に各々生成された1
つまたは複数のエッジ検出プログラムと
、
前記マイクロコンピューターまたは前記プロセッサーが前記エッジ実行を実行する
ために、
1つまたは複数の
前記エッジ実行情報を基に各々生成された1
つまたは複数のエッジ実行プログラム
とが、
少なくとも1つ
、並列に動作するマルチスレッド動作として実行されることを特徴とするシーケンサー。
【請求項2】
任意の出力信号の立上
りまたは立下り動作を、任意の入出力信号の立上
りまたは立下りの状態変化に応じて制御するシーケンサーにおいて、
該シーケンサーがプログラムを実行することによって動作するマイクロコンピュータ
ーまたはプロセッサーを有し、
任意の入出力信号の立上り、または立下りを検出するエッジ検出のため
に、
該エッジ検出する入出力信号名と、前記エッジ検出する立上
りまたは立下り
の選択情報
と、が記述された1
つまたは複数のエッジ検出情報
を有し、
さらに、
1つまたは複数の
該エッジ検出情報の内の1つに記述された前記入出力信号の立上
りまたは立下りの時間から指定された遅延時間だけ遅れて任意の出力信号の立上り、または立下
りを実行するエッジ実行のため
に、
該エッジ実行する出力信号名と、前記エッジ実行する立上
りまたは立下りの選択
情報と、前記エッジ実行の起点となる前記エッジ検出情報を特定するエッジ検出対象情報と、前記遅延時間の情報
と、が記述された1
つまたは複数のエッジ実行情
報を有するのであって、
前記マイクロコンピューター、または前記プロセッサーが前記エッジ検出を実行する
ために、
1つまたは複数の
前記エッジ検出情報を基に各々生成された1
つまたは複数のエッジ検出プログラムと
、
前記マイクロコンピューター、または前記プロセッサーが前記エッジ実行を実行する
ために、
1つまたは複数の
前記エッジ実行情報を基に各々生成された1
つまたは複数のエッジ実行プログラム
とが
、
1つまたは複数の
前記エッジ検出情報
と1つまたは複数の
前記エッジ実行情報とが記述された順番に従って各々プログラムの終了を待って次の順番のプログラムを実行するシングルスレッド動作を行うプログラムか、
あるいは少なくとも1つのプログラムが並列に動作するマルチスレッド動作を行うプログラムであって
、
1つまたは複数の
前記エッジ検出情報
と1つまたは複数の
前記エッジ実行情報とが順番に記述され
たプロセス情
報の動作を繰り返して実行する少なくとも
1つまたは複数の繰り返し実行情報
を 、
あるいは
前記プロセス情報の動作を実行する少なくとも1
つまたは複数のプロセス実行情報を有
するのであって、
前記
マイクロコンピューターまたは前記プロセッサーが前記繰り返し実行を実行するために、
少なくとも1
つまたは複数の
前記繰り返し実行情報を基に生成された少なくとも1
つまたは複数の繰り返し実行プログラムと
、
前記マイクロコンピューターまたは前記プロセッサーが前記プロセス実行を実行するために、
少なくとも1
つまたは複数の
前記プロセス実行情報
を基に各々生成された少なくとも1
つまたは複数のプロセス実行プログラムと、
がシングルスレッドとして実行されるか、
また
は並列に動作するマルチスレッド動作として実行されることを特徴とするシーケンサー。
【請求項3】
請求項1に記載のエッジ検出プログラム、エッジ実行プログラムが、
順番に各々のプログラムの終了を待たずに次の順番のプログラムを実行するか、
あるいは順番に各々のプログラムの終了を待って次の順番のプログラムを実行するか
、
の各々のプログラム毎に指定した選択情報を
、
請求項1に記載のエッジ検出情報とエッジ実行情報と共に有することを特徴とする請求項1に記載のシーケンサー、
または、
請求項2に記載のエッジ検出プログラム、エッジ実行プログラム、繰り返し実行プログラム、プロセス実行プログラムが、
順番に各々のプログラムの終了を待たずに次の順番のプログラムを実行するか、
あるいは順番に各々のプログラムの終了を待って次の順番のプログラムを実行するか
、
の各々のプログラム毎に指定した選択情報を
、
請求項2に記載のエッジ検出情報とエッジ実行情報と繰り返し実行情報、または請求項2に記載のエッジ検出情報とエッジ実行情報とプロセス実行情報と共に有することを特徴とする請求項2に記載のシーケンサー。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、任意の出力信号の立上り、または立下り動作を、任意の入力信号、あるいは任意の出力信号の立上り、または立下りの状態変化に応じて制御するシーケンサーに関するものである。
【背景技術】
【0002】
従来より、任意の出力信号の立上り、または立下り動作を、任意の入力信号、あるいは任意の出力信号の立上り、または立下りの状態変化に応じて制御するシーケンサーの例として、プログラマブル・ロジック・コントローラー、あるいはPLCと称する機器が利用されている。プログラマブル・ロジック・コントローラーは、一般的には、リレー回路と同様な記述ができるラダープログラム、あるいはラダー図と呼ばれるプログラムによって動作する。ラダープログラムによって動作させるラダー方式以外に、ファンクションブロック方式やストラクチャード・テキスト方式など、異なった形式のプログラムによって動作させることも可能である。
【0003】
しかしながら、プログラマブル・ロジック・コントローラーは、幾つか異なったプログラムによって動作させることが可能ではあるが、いずれのプログラムを用いて開発する場合も、専門的知識を有する技術者が、ある程度の時間をかけて開発する必要があった。例えば、ある出力信号の立上り動作を、別の出力信号の立上りの一定遅延時間後に実行する場合を想定してラダープログラムによって記述すると、ある出力信号の立上りで対象となるリレーをオンしてコイルーをオンするプログラム記述と、そのコイルのオン状態を保持するプログラム記述と、さらにそのコイルが保持されている期間タイマーを動作させるプログラム記述と、一定の遅延時間を経た後にタイマーをオンして別の出力信号の対象となるリレーをオンするプログラムを記述する必要がある。このように、プログラムが非常に煩雑になると共に、プログラムの行数も複数行必要となった。
【0004】
上記課題を解決するため、ラダープログラムのような複雑なプログラムを必要としないシーケンサーとして、例えば特開平11―202912号があった。全ての入出力信号の状態を一定に刻まれた時間間隔で定義し、入出力信号の1つ、または複数の信号の状態が変化する毎に、定められた論理に従って他の入出力信号の論理を変化、または保持することによって出力信号の状態を制御するシーケンサーである。かかる例では、各々の信号をタイミングチャートに類似した表現で記述することによって任意の出力信号の状態を制御することが可能となるため複雑なプログラムは不要となり、専門的知識を有する技術者ではなくてもシーケンサーを実現することができ、またシーケンサー実現に費やす時間も大幅に短縮することができた。
【0005】
しかしながら、特開平11―202912号に記載のシーケンサーにおいては、全ての入出力状態を1つの階層で記述する必要があり、シーケンサーを実現するための基となる情報が非常に見通しが悪いものになるばかりではなく、複数の技術者が並行して開発することが困難であった。1つの階層で記述する必要があることは、例えばあるまとまったシーケンス動作を実現するために入出力状態を記述した別のファイルを呼び出すなど、いわゆるサブルーチン呼出、あるいはモジュール呼出などと呼ばれる動作は不可能であり、このこともプログラム全体が非常に見通しが悪いものになるばかりではなく、複数の技術者が並行して開発することが困難になる要因に繋がる。また、ある一定の動作を繰り返して反復する動作を実現する場合、同じ処理を複数回記述する必要があり、手間がかかるだけではなく、シーケンス動作の若干の変更があった場合変更箇所が多岐に及ぶため、間違いを誘発するリスクが高い問題があった。さらに、常に全ての入出力の状態を一定の時間間隔で監視する必要があり、シーケンサーを実現する心臓部、つまりマイクロコンピュータやプロセッサーの負担が重くなる欠点があった。
【先行技術文献】
【特許文献】
【0006】
【発明の概要】
【発明が解決しようとする課題】
【0007】
解決しようとする問題点は、ラダープログラムのような複雑なプログラムを必要としないシーケンサーを提供することである。そのシーケンサーにおいては、出力信号の立上り、立下り動作を制御するプログラムを特別な技術を要しない担当者でも記述できること、一旦別のファイルとして完成されたまとまったプログラムを呼び出す機能を持たせることにより、プログラムをより見通しの良いものとし、さらにプログラムの分解と組立が容易にでき複数の担当者が並行してプログラム開発を行えるなど、より効率的にプログラム開発を行えること、簡単なプログラムから実現できるシーケンス動作に高い汎用性を持たせること、シーケンサーを実現する心臓部、つまりマイクロコンピュータやプロセッサーの負担を軽くすること、などが本発明の主たる目的である。
【0008】
なお、前記においてプログラムと称したものには、タイミングチャートをはじめ、入出力信号の状態などを記述した情報など、シーケンサーの動作を実現するために記述された情報も含まれる。また、前記においてファイルと称したものは上記プログラムが格納された電子ファイルであり、マイクロソフトのエクセルや、あるいはC言語やPython言語などの高級プログラム言語が格納されたテキストファイルなど様々な様態を指す。
【課題を解決するための手段】
【0009】
本発明は、任意の出力信号の立上り、または立下り動作を、任意の入力信号、あるいは任意の出力信号の立上り、または立下りの状態変化に応じて制御するシーケンサーにおいて、前記のような従来例における問題点を解消するために、シーケンサーがプログラムを実行することによって動作するマイクロコンピューターやプロセッサーなどのコンピューターを有し、任意の入出力信号の立上り、または立上りを検出するエッジ検出のため、エッジ検出する入力信号名、または出力信号名と、エッジ検出する立上り、または立下りの各々を選択する情報を記述したエッジ検出情報と、エッジ検出情報に記述された入出力信号の立上り、または立下りの時間から指定された遅延時間だけ遅れて任意の出力信号の立上り、または立下りの変化を実行するエッジ実行のため、エッジ実行する出力信号名と、エッジ実行する立上り、または立下りの選択と、エッジ検出情報に記述された入出力信号名、立上り、または立下りの各々の選択情報を有するエッジ検出対象情報、及び遅延時間の情報を記述したエッジ実行情報を有し、エッジ検出情報とエッジ実行情報とを基に各々生成された、あるいは合成されたマイクロコンピューターやプロセッサーなどのコンピューターがエッジ検出を実行するエッジ検出プログラムとエッジ実行を実行するエッジ実行プログラムが並列に動作するマルチスレッド動作として実行されることを特徴とする。
エッジ検出情報とエッジ実行情報は、シーケンス動作を実現するための情報であり一種のプログラムである。本発明では、一種のプログラムであるエッジ検出情報とエッジ実行情報を基にして、マイクロコンピューターやプロセッサーなどのコンピューターを動作し易いプログラムとして生成された、マイクロコンピューターやプロセッサーなどのコンピューターを動作するための機械語、あるいはマシン語、プロセッサーを動作するためのC言語やPython言語などの高級プログラム言語などで記述されたエッジ検出プログラムとエッジ実行プログラムを全て含めてプログラムと称している。
これらのエッジ検出情報とエッジ実行情報は、各入出力信号毎に記述されるもので、通常は複数の情報として実行する順番に記述されているが、1つの情報、つまりプログラムの実行完了を待たずして次の情報、つまりプログラムの実行を可能にするため、マルチスレッド動作として実行されるものである。
【0010】
性能を高めるため、マルチスレッド動作を行うエッジ検出プログラム、またはエッジ実行プログラムのいずれかが複数存在し、各々のエッジ検出情報とエッジ実行情報とが記述された順番に従って生成、記述された各々のエッジ検出プログラム、あるいはエッジ実行プログラムが、順番にエッジ検出、またはエッジ実行の終了を待って次の順番のエッジ検出、またはエッジ実行を実行するか、あるいは順番にエッジ検出、またはエッジ実行の終了を待たずに次の順番のエッジ検出、またはエッジ実行を実行するかの選択情報をエッジ検出情報とエッジ実行情報と共に有することを特徴とする。
エッジ検出情報、エッジ実行情報とがマルチスレッド動作して実行されるため、前記のように、情報、つまりプログラムが記述された順番に終了を待って次の情報、つまりプログラムを実行するか、あるいは終了を待たずに実行するかの選択が可能になる。そして、この選択情報は、一種のプログラムであり、エッジ検出情報、エッジ実行情報と共に記述される。なお、選択情報がエッジ検出情報とエッジ実行情報と共に記述されていない場合は順番にエッジ検出、またはエッジ実行の終了を待たずに次の順番のエッジ検出、またはエッジ実行を実行するように定義することもでき、この場合も含めて、次の順番のエッジ検出、またはエッジ実行を実行するかの選択情報が記載されているものと広義の意味で解釈できる。
【0011】
性能を高めるため、エッジ検出情報とエッジ実行情報とが順番に記述されて構成された複数のプロセス情報から構成され、複数のプロセス情報は階層構造を有し、各階層のプロセス情報には下位階層のプロセス情報の動作を1回の繰り返しを含めて繰り返して実行する繰り返し実行情報をエッジ検出情報とエッジ実行情報と共に有することを特徴とする。
プロセス情報も一種のプログラムであり、プロセス情報の中に、エッジ検出情報とエッジ実行情報に加えて、下位階層のプロセス情報の動作を1回の繰り返しを含めて繰り返して実行する繰り返し実行情報が記述されることを特徴とする。
この繰り返し実行情報を基に生成された繰り返し実行プログラムもまた、エッジ検出プログラムやエッジ実行プログラムと同様に各々のプログラムと並列に動作するマルチスレッド動作として実行されるものである。特別な場合として、繰り返し実行プログラムがシングルスレッドとして実行される場合もあり得る。そして、各々のエッジ検出プログラムとエッジ実行プログラムと繰り返し実行プログラムとがマルチスレッド動作として実行される場合、エッジ検出情報とエッジ実行情報と繰り返し実行情報とが記述された順番に従って実行される各々のプログラムの実行の終了を待って次の順番のプログラムを実行するか、あるいはその順番に従って実行される各々のプログラムの実行の終了を待たずに次の順番のプログラムを実行するかの選択情報を各々のエッジ検出情報とエッジ実行情報と共に有することを特徴とする。
なお、本発明において、任意のプロセス情報に記述された繰り返し実行情報によって呼び出される別のプロセス情報を下位階層のプロセス情報と称しており、複数のプロセス情報が階層構造を有すると表現している。
【0012】
性能を高めるため、エッジ検出情報とエッジ実行情報とが順番に記述されて構成された複数のプロセス情報から構成され、複数のプロセス情報は階層構造を有し、各階層のプロセス情報には下位階層のプロセス情報の動作を実行するプロセス実行情報をエッジ検出情報とエッジ実行情報と共に有し、下位階層のプロセス情報によって生成されたプロセス実行プログラムが、エッジ検出プログラムとエッジ実行プログラムと共に並列に動作するマルチスレッド動作として実行されることを特徴とする。繰り返し実行プログラムと同様、プロセス実行プログラムも、特別な場合として、シングルスレッドとして実行される場合もあり得る。
サブルーチン、あるいはモジュールとして用意された一種のプログラムであるプロセス情報が、上位階層のプロセス情報としてエッジ検出情報とエッジ実行情報と共に順番に記述されることを意味し、サブルーチン、あるいはモジュールとして用意された一種のプログラムであるプロセス情報もまたマルチスレッド動作として実行されることを特徴とする。
前記のように、エッジ検出情報とエッジ実行情報とが記述された順番に従って生成、記述された各々のエッジ検出プログラム、あるいはエッジ実行プログラムが、順番にエッジ検出、またはエッジ実行の終了を待って、あるいは待たずに次の順番のエッジ検出、またはエッジ実行を実行する機能を有するのと同じように、下位階層のプロセス情報の動作を実行する情報を基にして生成されたプロセス実行プログラムもまた、マルチスレッド動作として実行される場合、同様の機能を有することを特徴とする。
このように、階層構造を有する各々のプロセス情報には、各々の情報が記述されていない場合も含めて、エッジ検出情報、エッジ実行情報、繰り返し実行情報、プロセス実行情報、及び各々の個別の情報に付随したプログラムの終了を待って実行する順序待ち実行、あるいは終了を待たないで実行する並列実行の選択情報が記述されている。この場合、各々の情報から生成される各々のプログラムは、各々のプログラムと並列に実行されるマルチスレッド動作として実行される場合、順序待ち実行の選択情報が無い場合は、おのずと並列実行が選択されて前に記述されたプログラムの終了を待たずプログラムが実行することは明らかである。
なお、本発明において、任意のプロセス情報に記述されたプロセス実行情報によって呼び出される別のプロセス情報を繰り返し実行情報によって呼び出される別のプロセス情報の場合と同様に下位階層のプロセス情報と称しており、複数のプロセス情報が階層構造を有すると表現している。
【発明の効果】
【0013】
以上述べたように、本発明に係るシーケンサーでは、任意の出力の立上り、あるいは立下りの動作を行うエッジ実行プログラムと、そのエッジ実行の起点となる入出力信号の立上り、あるいは立下りのを動作を検出するエッジ検出プログラムが、プログラムが実行される順番に記述されており、その各々のプログラムが並列に動作するマルチスレッド動作として実行されて各々の出力の立上り、あるいは立下りの動作を制御することができ、ラダープログラムのような複雑なプログラムを必要としないシーケンサーを提供することができる。各々のプログラムが並列に動作するマルチスレッド動作として実行されるため、記述された順番に従って実行するのみならず、前の順番に記述されたプログラムの終了を待たずに次の順番に記述されたプログラムを実行することも可能となり、汎用性の高いシーケンサーを提供することができる。
例えば、ある出力信号Aの立上りを実行するエッジ実行情報が別の出力信号Bの立上りを実行するエッジ実行情報の後に記述されていても、出力信号Aの立上りを実行する時刻が出力信号Bの立上りを実行する時刻よりも早くなるように各々のエッジ実行情報にその情報が記述されてる場合においては、出力信号Bの立上りを待たずに出力信号Aを立上げることが可能となり、より簡単なプログラムによってシーケンサーを動作させることができるのである。その理由の詳細は、後記の本発明の実施例において説明する。
さらに、好ましい様態として、エッジ検出情報とエッジ実行情報とが順番に記述されて構成された複数のプロセス情報から構成され、複数のプロセス情報は階層構造を有し、各階層のプロセス情報には下位階層のプロセス情報の動作を1回の繰り返しを含めて繰り返して実行する繰り返し実行情報をエッジ検出情報とエッジ実行情報と共に有することによって、さらに複雑な動作が可能なシーケンサーを提供することができ、プログラムの作成においては複数の技術者が並行して行うことが可能となり、またその構成が分かり易く見通しの良いプログラムを作成することが可能となる。この繰り返し実行情報に基に生成される繰り返し実行プログラムは、順番に動作を行うシングルスレッドとして実行される場合と、エッジ検出プログラムとエッジ実行プログラムと共に並列に動作するマルチスレッド動作として実行される場合とを有している。繰り返し実行プログラムがマルチスレッド動作として実行される場合は、各々のエッジ検出プログラムとエッジ実行プログラムと繰り返し実行プログラムとが、エッジ検出情報とエッジ実行情報と繰り返し実行情報とが記述された順番に従って実行される各々のプログラムの実行の終了を待って次の順番のプログラムを実行するか、あるいはその順番に従って実行される各々のプログラムの実行の終了を待たずに次の順番のプログラムを実行するかの選択情報を各々のエッジ検出情報とエッジ実行情報と共に有するため、さらに汎用性の高いシーケンサーを提供することができる。
さらに、性能を高めるために、エッジ検出情報とエッジ実行情報とが順番に記述されて構成された複数のプロセス情報から構成され、複数のプロセス情報は階層構造を有し、各階層のプロセス情報には下位階層のプロセス情報の動作を実行するプロセス実行情報をエッジ検出情報とエッジ実行情報と共に有し、下位階層のプロセス情報によって生成されたプロセス実行プログラムは、順番に動作を行うシングルスレッドとして実行される場合と、エッジ検出プログラムとエッジ実行プログラムと共に並列に動作するマルチスレッド動作として実行される場合とを有している。プロセス実行プログラムがマルチスレッド動作として実行される場合は、エッジ検出プログラムとエッジ実行プログラムと繰り返し実行プログラムと同様、プロセス情報として順番に記述された各々の情報から生成され、順番に実行される各々のプログラムの実行の終了を待って次の順番のプログラムを実行するか、あるいはその順番に従って実行される各々のプログラムの実行の終了を待たずに次の順番のプログラムを実行するかの選択情報をプロセス情報として有することによって、さらに複雑な動作が可能なシーケンサーを提供することができ、プログラムの作成においても、さらに効率良く進めることが可能となり、またその構成はさらに分かり易く見通しの良いプログラムにすることができる。
【0014】
以上述べたように、本発明に係るシーケンサーでは、ラダープログラムのような複雑なプログラムを必要としないシーケンサーを提供できる。そのシーケンサーにおいては、出力信号の立上り、または立下りの動作を出力信号の立上り、または立下り動作の記述の順番に殆ど依存せずに実行でき、より簡単なプログラムでシーケンサーを動作させることができる。また、プログラムに階層構造を持たせると共に、一旦別のファイルとして完成されたまとまったプログラムを呼び出す機能や、そのプログラムを繰り返し反復する機能を有することにより、汎用性の高いものとなる。さらに、各々のプログラムはマルチスレッド動作として実行される場合も有しているため、マルチスレッド動作として実行される場合は、プロセス情報として順番に記述された各々の情報から生成され、順番に実行される各々のプログラムの実行の終了を待って次の順番のプログラムを実行するか、あるいはその順番に従って実行される各々のプログラムの実行の終了を待たずに次の順番のプログラムを実行するかの選択情報をプロセス情報として有し、さらに汎用性の高いものとなる。さらに、ある特定の入出力の状態のみを監視して任意の出力信号の立上り、あるいは立下り動作を制御することにより、シーケンサーを実現する心臓部、つまりコンピュータやプロセッサーの負担を軽くすることも可能となる。
【図面の簡単な説明】
【0015】
【
図1】
図1は本発明のシーケンサーの実施例1を示すプログラムである。(実施例1)
【
図2】
図2は本発明のシーケンサーの実施例1を示すプログラムによって本発明のシーケンサーが動作した結果の出力信号の状態を示すものである。(実施例1)
【
図3】
図3は本発明のシーケンサーの実施例2を示すプログラムである。(実施例2)
【
図4】
図4は本発明のシーケンサーの実施例3を示すプログラムである。(実施例3)
【
図5】
図5は本発明のシーケンサーの実施例3を示すプログラムによって本発明のシーケンサーが動作した結果の出力信号の状態を示すものである。(実施例3)
【
図6】
図6は本発明のシーケンサーの実施例4を示すプログラムである。(実施例4)
【
図7】
図7は本発明のシーケンサーの実施例4を示すプログラムによって本発明のシーケンサーが動作した結果の出力信号の状態を示すものである。(実施例4)
【
図8】
図8は本発明のシーケンサーの実施例4を示す別プログラムである。(実施例4)
【
図9】
図9は本発明のシーケンサーの実施例4を示すさらに別のプログラムである。(実施例4)
【
図10】
図10は本発明のシーケンサーの実施例5を示すプログラムである。(実施例5)
【
図11】
図11は本発明のシーケンサーの実施例5を示すプログラムによって本発明のシーケンサーが動作した結果の出力信号の状態を示すものである。(実施例5)
【
図12】
図10は本発明のシーケンサーの実施例5を示す別のプログラムである。(実施例5)
【
図13】
図13は本発明のシーケンサーの実施例5を示すプログラムのパラメータを一部変更したプログラムによって本発明のシーケンサーが動作した結果の出力信号の状態を示すものである。(実施例5)
【
図14】
図14は本発明のシーケンサーの実施例5を示すプログラムのパラメータを更に一部変更したプログラムによって本発明のシーケンサーが動作した結果の出力信号の状態を示すものである。(実施例5)
【
図15】
図15は本発明のシーケンサーの実施例6を示すプログラムである。(実施例6)
【
図16】
図16は本発明のシーケンサーの実施例6を示す子プロセス1のプログラムによって本発明のシーケンサーが動作した結果の出力信号の状態を示すものである。(実施例6)
【
図17】
図17は本発明のシーケンサーの実施例7を示すプログラムである。(実施例7)
【
図18】
図18は本発明のシーケンサーの実施例7を示す子プロセス1のプログラムによって本発明のシーケンサーが動作した結果の出力信号の状態を示すものである。(実施例7)
【発明を実施するための形態】
【0016】
任意の出力信号の立上り、または立下り動作を、任意の入力信号、あるいは任意の出力信号の立上り、または立下りの状態変化に応じて制御するシーケンサーにおいて、実行される順番に従って記述されたエッジ検出情報とエッジ実行情報とを基に各々生成されたマイクロコンピューターやプロセッサーなどのコンピューターがエッジ検出を実行するエッジ検出プログラムとエッジ実行を実行するエッジ実行プログラムが並列に動作するマルチスレッド動作として実行されるシーケンサーを実現した。以下、本発明の実施例について、添付図面を参照して説明する。
【実施例1】
【0017】
図1は、本発明の第1の実施例に係るシーケンサーの実施例1を示すプログラムである。
図1に示すように、シーケンサーの制御を行う情報として、エッジ検出情報とエッジ実行情報とが記述されている。それら複数の情報は、対象となる入力信号と出力信号毎に記述されており、各々の情報は、左の欄から「番号」、「アクション」、「対象番号」、「入力/出力」、「立上り/立下り」、「遅延時間」を記述する欄を有している。「番号」は、プログラムを実行する順番を示す。「アクション」は、情報の種類を示す。「対象番号」は、エッジ実行を行う基となるエッジ検出情報の番号を示す。「入力/出力」は、信号の種類を示す。「立上り/立下り」は、信号のエッジ変化の方向を示す。「遅延時間」は、エッジ検出からエッジ実行を行うまでの遅延時間を示す。
【0018】
次に、
図1に示す本発明の第1の実施例に係るシーケンサーの実施例1を示すプログラムの詳細を説明する。0番目は、入力信号1の立上りを検出する項目で、ここに記述された情報を基に、入力信号1の立上りを検出するプログラムが生成される。1番目は、出力信号5の立上りを検出する項目で、ここに記述された情報を基に、出力信号5の立上りを検出するプログラムが生成される。2番目は、出力信号5の立上りを実行する項目で、対象番号0に記述された情報である入力信号1の立上りを検出して、出力信号5の立上りを1秒後に実行するプログラムが生成される。以降、各々の情報に基づいて、各々のアクションを実行するプログラムが順番に生成される。
【0019】
このプログラムでは、入力信号1の立上り、出力信号5の立上り、及び出力信号5の立下りの3種類のエッジ検出によって、各々の出力信号の状態を切り替えるものである。プログラムを解読すると、入力信号1の立上りの1秒後に出力信号5を立上げ、出力信号5の立上りの1秒後に出力信号10を、2秒後に出力信号15を立上げる。次に、出力信号5の立上りの3秒後に出力信号5を立下げ、出力信号5の立下りの1秒後に出力信号10を、2秒後に出力信号15を立下げる。
【0020】
図2は、段落0019で説明した通り、
図1に示す本発明の第1の実施例に係るシーケンサーの実施例1を示すプログラムによってシーケンサーが動作した結果の出力信号の状態を示す。
この例では、例えば出力信号5の1回目の立上りから一定時間遅延させた後ある出力情報を立上げる場合を示したが、出力信号5の2回目の立上りから一定時間遅延させた後ある出力情報を立上げる場合は、出力信号5の2回目のエッジ検出情報の前に1回目のエッジ検出を待つのエッジ検出待ち情報を記述することによって可能となる。ある出力信号の2回目の立上りを検出を参照として別の出力信号を立上げる動作は、本発明の第4の実施例として後記する。
【実施例2】
【0021】
図3は、本発明の第2の実施例に係るシーケンサーの実施例2を示すプログラムである。
図3に示すプログラムは、
図1に示すプログラムにおいて、番号3と4、及び番号7と8の記述の順番を各々入れ替えたものである。この場合においても、順番に記述された各々のエッジ検出情報やエッジ実行情報から生成されたエッジ検出プログラムとエッジ実行プログラムが並列に動作するマルチスレッド動作として実行されるため出力信号の状態変化は
図2と同じになり、
図1に示した本発明の第1の実施例に係るシーケンサーの実施例1を示すプログラムの実行結果と同じ結果になる。その理由を次に説明する。
【0022】
順番に記述されたプログラムは、本発明のシーケンサーに搭載されたはマイクロコンピューター、あるいはプロセッサーなどのコンピューターで順次実行されるが、そのプログラムの読込と実行速度は、一般に100万分の1秒以下である。一方で、通常のシーケンサーで使われる時間ステップは1万分の1秒から1000分の1秒程度であるため(このプログラムの場合は、説明の都合上、遅延時間を秒単位とした)、その時間と比較すると、順番に記述されたプログラムは瞬時に読み込まれて実行に移される。そのため、順番に記述されたプログラムの読込と実行への移行時間は、信号のエッジ状態を変化させるまでの時間、つまりエッジ実行情報に記述された遅延時間に比べてはるかに短く、各々のエッジ検出情報やエッジ実行情報から生成されたエッジ検出プログラムとエッジ実行プログラムが並列に動作するマルチスレッド動作として実行されるため、順番が入れ替わっても実行結果は殆ど同じになるのである。
【実施例3】
【0023】
図4は、本発明の第3の実施例に係るシーケンサーの実施例3を示すプログラムである。
図4に示すプログラムは、
図3に示すプログラムにおいて、番号3と4の間にエッジ実行待ち情報を記述したものである。
図4に示した通り、出力信号10を立上げる5番目のエッジ実行情報の前に、3番目に記述されたエッジ実行情報によって実行される出力信号15の立上り動作の終了を待つことを示す情報であるエッジ実行待ち情報が記述されているため、
図5の本発明の第3の実施例に係るシーケンサーの実施例3を示すプログラムによってシーケンサーが動作した結果の出力信号の状態に示した通り、出力信号15の立上りの直後に出力信号10を立上りが実行される。出力信号10の立上り動作は、出力信号5の立上り動作の1秒後であるため出力信号15の立上りの直後に出力信号10を立上りが実行されるが、この遅延情報が出力信号15の立上り動作の遅延時間である2秒を超える場合、その時間を待って実行されることは明らかである。
なお、
図4に示す本発明の第3の実施例に係るシーケンサーの実施例3を示すプログラムでは、エッジ実行待ち情報がその信号のエッジ実行情報の直後に記述された例を示したが、幾つかの他の信号のエッジ実行情報を記述した後に記述することによって、幾つかの他の信号のエッジ実行を先に実行した後に対象となる信号のエッジ実行の終了を待つシーケンス動作も可能となる。
【実施例4】
【0024】
図6は、本発明の第4の実施例に係るシーケンサーの実施例4を示すプログラムである。
図6に示すプログラムは、
図1に示すプログラムにおいて、6番目のエッジ実行情報の記述の後に1番目に記述されたエッジ検出情報によって実行される出力信号5の立上がり動作の終了を待つことを示す情報であるエッジ検出待ち情報が記述されている。この1番目に記述されたエッジ検出情報を参照としたエッジ検出待ち情報の代わりに出力信号5の立上がり動作を終了を待つことを示す情報であるエッジ実行待ち情報を2番目に記述された出力信号5のエッジ実行情報が参照するように記述しても良い。
図6に示す実施例4を示すプログラムでは、7番目のエッジ検出待ち情報に記述されている通り、1番目に記述されたエッジ検出情報によって実行される出力信号5の立上がり動作の終了を待った後に8番目に出力信号5の立上がり検出を行うエッジ検出情報と9番目に出力信号5の立上り実行を行うエッジ実行情報が記述されており、1番目に記述された出力信号5の立上がり、つまり1回目の立上がりを検出したことを待って出力信号5の立上がり、つまり2回目の立上がりのエッジ検出とエッジ実行の動作を行うものである。
ちなみに、7番目に記述したエッジ検出情報がない場合は、8番目以降に記述された情報が瞬時に読込まれて実行されるため、8番目に記述された出力信号5のエッジ検出情報は1番目に記述された出力信号5のエッジ検出情報と同等と見なされ、その情報を参照してエッジ実行される12番目に記述された出力信号10のエッジ実行動作は1番目に記述された出力信号5のエッジ検出情報を参照することになる。その結果、12番目に記述されたエッジ実行情報によって実行される出力信号10の立上げ動作は、3番目に記述されたエッジ実行情報と同等とみなされる。つまり、8番目に記述されたエッジ検出情報と12番目に記述されたエッジ実行情報は無意味な情報となり、出力信号10の2回目の立上げ動作は行われない。
【0025】
図7は、段落0024で説明した通り、
図6に示す本発明の第4の実施例に係るシーケンサーの実施例4を示すプログラムによってシーケンサーが動作した結果の出力信号の状態を示す。
【0026】
図8は、本発明の第4の実施例に係るシーケンサーの実施例4を示す別のプログラムである。
図8に示すプログラムは、
図6に示すプログラムにおいて、7番目に記述されたエッジ検出待ち情報を2番目の位置に移動させ、それに伴ってそのエッジ検証情報を参照するエッジ実行情報における参照番号を修正したものである。1番目に記述された出力信号5の立上りエッジを検出するエッジ検出情報の後にそのエッジ検出を待つエッジ検出待ち情報が記述されており、各々の情報はシーケンス動作に比較して瞬時に読取って実行されるため、
図7に示すシーケンス動作と同様の結果になることは明らかである。
【0027】
図9は、本発明の第4の実施例に係るシーケンサーの実施例4を示すさらに別のプログラムである。
図9に示すプログラムは、
図8に示すプログラムにおいて、2番目に記述した出力信号5の1回目の立上がり動作を待つ情報であるエッジ検出待ち情報を5番目に移動し、さらに6番目に記述した出力信号5の立下がり動作を検出するエッジ検出情報を2番目に移動すると共に、そのエッジ検出情報を参照するエッジ実行情報の参照番号を修正したものである。この場合も、出力信号5の1回目の立上がりの検出を待った後に2回目の立上がりを検出するエッジ検出情報が記載されているため、
図7に示すシーケンス動作と同様の結果になることは明らかである。
【0028】
以上、本発明の第4の実施例で示したように、同じ信号の2回目のエッジ立上げを検出する際、その検出情報の記述の前に1回目のエッジ立上げを検出する動作を待つエッジ検出待ち情報を記述するなど僅かなルールを守る以外は、各々のエッジ検出情報やエッジ実行情報、エッジ検出待ち情報、エッジ実行待ち情報の記述の順番の制約は殆どないため、プログラムを記述する上で誤りを発生させるリスクが少なく、また簡単にプログラムを記述することができる。
【実施例5】
【0029】
図10は、本発明の第5の実施例に係るシーケンサーの実施例5を示すプログラムである。シーケンサーの動作を制御する全体のプログラムは、エッジ検出情報やエッジ実行情報を記述したプロセスである親プロセスと子プロセス1の2つのプロセスから構成され、親プロセスには子プロセス1を繰り返し実行する情報が記述されている。
【0030】
図10に示すように、子プロセス1のプログラムは、第1の実施例において入力信号1の立上りを検出した1秒後に出力信号5を立上げるのに対して子プロセス1の実行が始まった直後に出力信号5を即時立上げる動作が異なる以外は全く同じである。
図10に示すように、親プロセスのプログラムは、入力信号1の立上りを検出して1秒の遅延時間を待った後に子プロセス1の実行を開始し、子プロセスの繰り返し時間、つまりサイクル時間を5.5秒として2回繰り返し動作を行う情報が記述されている。この子プロセス1のシーケンス動作においては、出力信号5が立上がってから出力信号15が立下がるまで5秒を要するので、出力信号15が立下がった0.5秒後に1回の繰り返し動作を完了し、再び出力信号5の立上げを行う動作を2回繰り返して終了することになる。なお、
図10に示す子プロセス1に記述されたエッジ検出待ちのアクションでは1秒の遅延情報が記述されているが、例えば
図9に示すプログラムに記述されたエッジ検出待ちのアクションのように空欄の場合は、エッジ検出を確認して直ぐに次のアクションの実行に移る。
【0031】
図11は、段落0030で説明した通り、
図10に示す本発明の第5の実施例に係るシーケンサーの実施例5を示すプログラムによってシーケンサーが動作した結果の出力信号の状態を示す。
【0032】
なお、通常は、各階層のプロセスのプログラムでは、下位階層のプロセス情報の動作を1回の繰り返しを含めて繰り返して実行する繰り返し実行情報をエッジ検出情報とエッジ実行情報と共に有し、それらは複数記述されるが、繰り返し実行情報が記述される手前までのエッジ検出情報とエッジ実行情報とに従って実行されたエッジ検出とエッジ実行の終了を待って繰り返し実行情報に従った下位階層のプロセス情報の動作を繰り返すよう、繰り返し実行情報の記述の前にエッジ実行待ち情報が記述される。
図10に示す親プロセスのプログラムの1番目に記述されたエッジ検出待ち情報がそれに相当する。オプションの記述として、繰り返し実行情報が記述される手前までのエッジ検出情報とエッジ実行情報とに従って処理されるエッジ検出とエッジ実行の終了を待たずに繰り返し実行情報に従ってプロセス情報の動作を繰り返す場合は、
図10に示す親プロセスのプログラムを例に挙げると、繰り返し実行情報の記述の前の1番目に記述されたエッジ検出待ち情報を記述しなければ良い。繰り返し実行情報を基に生成される繰り返し実行プログラムが、特別な場合に記述される他の各々のプログラムの実行の終了を待って順番に実行されるシングルスプレッド動作するオプションではなく、他の各々のプログラムの実行と並行に動作するマルチスレッド動作として実行されるからである。このように、繰り返し実行プログラムがマルチスプレッドとして実行される場合は、プロセス情報に記述された各々のプログラム毎の終了を待つか待たないかの選択情報によって、並行に動作するプログラムの種類を選択することができる。なお、エッジ実行待ち情報を記述した場合は勿論のこと、記述しない場合もプロセス情報に記述された各々のプログラム毎の終了を待つか待たないかの選択情報によって、並行に動作するプログラムの種類を選択したことに他ならない。
【0033】
また、
図10の親プロセスに記述された繰り返しのアクションは即時リピートを実行するリピート即時実行アクションであるが、あるアクションの実行を待って繰り返しを実行するリピート待ち実行アクションも用いることができる。
図12は、本発明の第5の実施例に係るシーケンサーの実施例5を示す別のプログラムである。
図10に示すプログラムに記述されたエッジ検出待ち情報を記述せずに、リピート待ち実行を記述して0番目に記述されたエッジ検出を確認して1秒の遅延時間を待った後に繰り返しを実行するものである。
図10に示したプログラムも
図12に示したプログラムも、同様のシーケンス動作を実現でき、それらプログラムによってシーケンサーが動作した結果の出力信号の状態は
図11に示す通りである。
【0034】
下位階層のプロセスに記述されたプログラムに従って下位階層のシーケンス動作が実行される場合において、通常は、全ての実行が完了するまでに要する時間が経過してはじめて繰り返し動作を完了するよう、繰り返し動作を行う下位階層のプロセスには最後のエッジ実行プログラムの終了を待つ情報として対象となる信号のエッジ実行待ち情報が記述される。
図10に示す子プロセス1のプログラムの8番目のエッジ実行待ち情報は、そのための情報である。
図10に示す親プロセスのプログラムの場合、子プロセス1の繰り返し時間は5.5秒と記述されているが、4.5秒と記述されている場合の実際の繰り返し時間は、子プロセス1のシーケンス動作が完了するのに必要な5秒が実際の繰り返し時間となる。
【0035】
図13は、段落0034で説明した場合の記述によってシーケンサーが動作した結果の出力信号の状態を示す。
【0036】
図10に示す子プロセス1のプログラムのオプションの記述として8番目のエッジ実行待ち情報を記述しない場合は、子プロセス1の全てのシーケンス動作の完了を待たずに記述された繰り返し時間が経過すれば1回の繰り返し動作を完了して再び次の繰り返し動作に移行する。繰り返し実行情報を基に生成された繰り返し実行プログラムが、特別な場合に記述されるシングルスプレッドとして動作するオプションではなく、通常は他の各々のプログラムの実行と並行に動作するマルチスレッド動作として実行されるからである。
図10に示す子プロセス1のプログラムのオプションの記述として8番目のエッジ実行待ち情報を記述しない場合で、
図11に示す親プロセスのプログラムにおいて子プロセス1の繰り返し時間が4.5秒と記述されている場合の実際の繰り返し時間は4.5秒となることは明らかである。
【0037】
図14は、段落0036で説明した場合の記述によってシーケンサーが動作した結果の出力信号の状態を示す。
【実施例6】
【0038】
図15は、本発明の第6の実施例に係るシーケンサーの実施例6を示すプログラムである。シーケンサーの動作を制御する全体のプログラムは、エッジ検出情報やエッジ実行情報を記述したプロセスである親プロセスと子プロセス1と孫プロセス1の3つのプロセスから構成され、親プロセスには子プロセス1を繰り返し実行する情報が記述されている。
【0039】
図15に示すように、子プロセス1のプログラムは、下位階層のプロセスである孫プロセス1のプロセス情報の動作を実行するプロセス実行情報がエッジ検出情報とエッジ実行情報と共に有しており、孫プロセス1のプロセス情報によって生成されたプロセス実行プログラムが、特別な場合に記述される他の各々のプログラムの実行の終了を待って順番に実行されるシングルスプレッド動作するオプションではなく、エッジ検出プログラムとエッジ実行プログラムと共に並列に動作するマルチスレッド動作として実行される。そのため、子プロセス1の2番目の情報である孫プロセス1の実行情報に従って孫プロセス1のシーケンス動作が実行されるが、そのシーケンスの終了を待たずに3番目の情報である出力信号10の立上げ動作に移行する。そのため、子プロセス1において、孫プロセス1の実行情報の次の順番に記述された出力信号5、出力信号10、及び出力信号15の立上げ、立下げ動作は、孫プロセス1に記述された出力信号8、出力信号20、及び出力信号25の立上げ、立下げ動作と並行して順次実行される。
【0040】
図16は、本発明のシーケンサーの実施例5を示す子プロセス1のプログラムによって本発明のシーケンサーが動作した結果の出力信号の状態を示す。
図16に示す通り、子プロセス1において、孫プロセス1の実行情報の次の順番に記述された出力信号5、出力信号10、及び出力信号15の立上げ、立下げ動作は、孫プロセス1に記述された出力信号8、出力信号20、及び出力信号25の立上げ、立下げ動作と並行して順次実行される。子プロセス1のシーケンス動作が開始された直後に出力信号5は即時立上げが実行されると同時に、その0.5秒後に孫プロセス1のシーケンス動作が開始される。
子プロセス1では、出力信号5の立上げの1秒後に出力信号出力信号10を、2秒後に出力信号15を立上げる。次に、出力信号5の立上りの3秒後に出力信号5を立下げ、出力信号5の立下りの1秒後に出力信号10を、2秒後に出力信号15を立下げる。これらの子プロセス1によるシーケンス動作に並行して、孫プロセス1では、出力信号8の立上げの1秒後に出力信号出力信号20を、2秒後に出力信号25を立上げる。次に、出力信号8の立上りの3秒後に出力信号8を立下げ、出力信号8の立下りの1秒後に出力信号20を、2秒後に出力信号25を立下げる。
図15に示すように、親プロセスのプログラムは、入力信号1の立上りを検出した直後に子プロセス1の実行を開始し、子プロセスの繰り返し時間、つまりサイクル時間を5.5秒として2回繰り返し動作を行う情報が記述されており、
図16に示した子プロセス1のシーケンス動作を5.5秒の繰り返し時間で2回繰り返してシーケンス動作を終了する。なお、
図15に示す子プロセスの9番目には8番目にエッジ実行した出力信号15の立下りの終了を待つエッジ実行待ち情報が記述されているが、繰り返し動作が開始した5秒後に出力信号15が立下がり、繰り返し時間5.5秒よりも早く全ての動作が終了するため、この場合は出力信号15の立下りの終了を待つエッジ実行待ち情報を記述しなくても同じ動作となる。
【実施例7】
【0041】
図17は、本発明の第7の実施例に係るシーケンサーの実施例7を示すプログラムである。シーケンサーの動作を制御する全体のプログラムは、エッジ検出情報やエッジ実行情報を記述したプロセスである親プロセスと子プロセス1と孫プロセス1の3つのプロセスから構成され、親プロセスには子プロセス1を繰り返し実行する情報が記述されている。
【0042】
図17に示すように、親プロセスと孫プロセス1は第5の実施例と全く同じである。第6の実施例と異なる点は、子プロセス1において、3番目の情報として、2番目に記述された孫プロセス1の実行情報に従って実行される孫プロセス1のシーケンス動作の終了を待つことを示すプロセス終了待ち情報が記述されている点である。そのため、子プロセス1の4番目に記述された出力信号10の立上げ動作は、孫プロセス1のシーケンスが終了直後に行われる。従って、
図17に示す子プロセス1のシーケンス動作は、
図18に示すようになる。
子プロセス1の4番目に記述された出力信号10の立上げ動作と、子プロセス1の5番目に記述された出力信号15の立上げ動作と、子プロセス1の6番目に記述された出力信号5の立下げ動作は、3番目に記述されたプロセス終了待ち情報が無い場合には孫プロセス1のシーケンス動作と並行してで実行されるが、プロセス終了待ち情報が記述されているため、孫プロセス1のシーケンス動作が終了した直後、つまり出力信号25が立下がった直後に実行される。出力信号20と出力信号25の立下り動作は、各々出力信号5の立下りの1秒後、及び2秒後に実行される。
【0043】
図17に示す子プロセス1のプログラム例では、プロセス終了待ち情報がそのプロセス実行情報の直後に記述された例を示したが、幾つかの他の信号のエッジ実行情報などを記述した後に記述することによって、幾つかの他の信号のエッジ実行を先に実行した後に対象となる信号のエッジ実行の終了を待つシーケンス動作も可能となる。また、
図17に示す子プロセス1のプログラムにおいて、全てのエッジ実行情報の最後にプロセス終了待ち情報を記述した場合は、対象となるプロセスの終了を待って1回の繰り返し動作を完了するシーケンス動作となる。つまり、
図17に示す子プロセス1の10番目には、子プロセス1の最後のエッジ実行となる出力信号15の立下り動作の終了待ち情報が記述されているが、さらに11番目に孫プロセス1のプロセス終了待ち情報を記述する場合に相当する。
図16に示す子プロセス1のように、孫プロセス1のプロセス終了待ち情報が記述されておらず、そのプロセスの全てのシーケンス動作が完了するまでに要する時間より短い繰り返し時間が上位プロセス(この場合は親プロセス)において繰り返し情報として記述されている場合は、プロセス実行情報に記述された対象となるプロセス(この場合は孫プロセス1)の終了を待たずに1回の繰り返し動作を終了し、再び次の繰り返し動作に移行することもできる。
この場合において、エッジ実行待ち情報やプロセス終了待ち情報を記述した場合は勿論のこと、記述しない場合もプロセス情報に記述された各々のプログラム毎の終了を待つか待たないかの選択情報によって、並行に動作するプログラムの種類を選択したことに他ならない。
【0044】
第7の実施例では、親プロセス、子プロセス1、孫プロセス1の3階層の階層構造を有するプロセス情報から構成されるプログラムを基に、マイクロコンピューターやプロセッサーなどのコンピューターを実行するプログラムを生成し、シーケンス動作を実行する例を示した。また、子プロセス1には繰り返し動作の機能を、孫プロセス1には他のプログラムと並列に動作するマルチスレッド動作の機能を設けた。同じように、さらに曾孫プロセスを設けて4階層のプログラムから構成したり、さらに深い階層を設けることや、同じ階層のプログラムを複数設けることも可能となり、より汎用性の高いシーケンサーを実現することができる。
【0045】
以上の実施例では説明を分かり易くするため、エッジ検出情報とエッジ実行情報とを別の行で記述した。例えば、
図1に示す本発明のシーケンサーの実施例1を示すプログラムでは、1番目に出力信号5の立上がりエッジを検出するためのエッジ検出情報を、2番目に同じ出力信号5を立上げるエッジ実行情報を、つまりエッジ検出情報とエッジ実行情報を別の行で記述している。一方で、この場合は、いずれも出力信号5の立上りエッジに関する情報であるため、2番目のエッジ実行情報にまとめてエッジ検出情報も盛り込まれているものと考えることもできる。そのため、1番目のエッジ検出情報を分離して記述せずに2番目のエッジ実行情報のみを記述することによって、この記述には出力信号5の立上りエッジのエッジ検出情報とエッジ実行情報が含まれていると見なし、この情報からエッジ検出プログラムとエッジ実行プログラムを生成することも可能である。従って、この場合も、本発明のシーケンサーがエッジ検出情報とエッジ実行情報とを有していることに相違ない。
なお、
図1に示す本発明のシーケンサーの実施例1を示すプログラムにおいて、0番目に入力信号1の立上がりエッジを検出するためのエッジ検出情報が記述されているが、この記述は例えばボタン押下などによる入力信号の検出であるためエッジ実行の記述はなく、単独で記述されるものである。
【0046】
以上の実施例で説明したアクション、及び類似のアクションを整理すると次のようになる。
入力信号に関するアクションは、入力信号のエッジ検出、入力信号の強制的な即時立上げと即時立下げ、入力信号の強制的な待ち立上げと待ち立下げである。入力信号の検出は、ボタン押下などによる入力信号の立上げ、あるいは立下げの検出である。また、入力信号のエッジ検出については、入力信号のエッジ実行情報に盛り込むこともできる。入力信号の強制的な即時立上げと即時立下げは、記述された情報を読み取った直後に入力信号をプルアップ、あるいはプルダウンするものである。入力信号の強制的な待ち立上げと待ち立下げは、対象となるアクション(実施例の場合は番号で記述した)が実行された後、指定の遅延時間を待った後に入力信号をプルアップ、あるいはプルダウンするものである。
出力信号に関するアクションは、出力信号のエッジ検出、出力信号の即時立上げと即時立下げ、出力信号の待ち立上げと待ち立下げである。段落0045で説明した通り、出力信号のエッジ検出については、出力信号のエッジ実行情報に盛り込むこともできる。出力信号の即時立上げと即時立下げは、記述された情報を読み取った直後に出力信号を立上げる、あるいは立下げるものである。出力信号の待ち立上げと待ち立下げは、対象となるアクション(実施例の場合は番号で記述した)が実行された後、指定の遅延時間を待った後に出力信号を立上げる、あるいは立下げるものである。
エッジ検出情報とエッジ実行情報が独立して記述される場合、エッジ検出情報には入出力信号名を特定する情報とエッジ検出する立上り、または立下りの各々を選択する情報が記述され、エッジ実行情報には入出力信号名を特定する情報とエッジ検出する立上り、または立下りの各々を選択する情報とエッジ実行の起点となるエッジ検出情報を特定するエッジ検出対象情報とエッジ検出情報に記述された入出力信号の立上り、または立下りの時間から指定された遅延時間だけ遅れてエッジ実行を行うための遅延時間が記述される。この場合、この入力信号、または出力信号のエッジ実行を起点として別の入力信号、または出力信号のエッジ実行が行なわれる場合、そのエッジ実行情報のエッジ検出対象情報は起点となる入力信号、または出力信号のエッジ検出情報を特定する情報で、例えばそのエッジ検出情報に記述された番号などである。
また、これらのエッジ検出情報とエッジ実行情報に記述された入出力信号名とエッジの立上り、または立下りの各々を選択する情報とが同じ場合は、エッジ実行情報にエッジ検出情報を盛り込んで記述することができる。つまり、エッジ実行情報には入出力信号名を特定する情報とエッジ検出する立上り、または立下りの各々を選択する情報とエッジ実行の起点となるエッジ検出情報を特定するエッジ検出対象情報とエッジ検出情報に記述された入出力信号の立上り、または立下りの時間から指定された遅延時間だけ遅れてエッジ実行を行うための遅延時間が記述される。この場合、この入力信号、または出力信号のエッジ実行を起点として別の入力信号、または出力信号のエッジ実行が行なわれる場合、そのエッジ実行情報のエッジ検出対象情報は起点となる入力信号、または出力信号のエッジ実行情報を特定する情報で、例えばそのエッジ実行情報に記述された番号などである。このように、エッジ検出情報がエッジ実行情報に盛り込まれいてる場合においては、エッジ実行情報を広義の意味でエッジ検出情報と見なすことができるためである。このような場合も含めて、本発明の特許請求の範囲に記載のエッジ検出情報は、広義の意味でエッジ検出情報を盛り込んだエッジ実行情報と読み替えることができる。また、この場合においては、エッジ検出対象情報とは、対象となるエッジ実行情報を特定する情報であることは言うまでもない。
繰り返し実行情報に関するアクションは、繰り返し検出、繰り返し即時実行と繰り返し待ち実行である。繰り返し検出はエッジ検出の広義の検出アクションで、出力信号のエッジ検出の場合と同様に繰り返し検出情報として独立に記述をしても良いし、繰り返し実行情報に盛り込むこともできる。繰り返し即時実行は、記述された情報を読み取った直後に繰り返し実行情報に基いて繰り返し動作を実行するものであり、
図10に示す親プロセスの2番目の記述に相当する。繰り返し待ち実行は、対象となるアクション(実施例の場合は番号で記述した)が実行された後、指定の遅延時間を待った後に繰り返し実行情報に基いて繰り返し動作を実行するものであり、
図12に示す親プロセスの2番目の記述に相当する。
プロセス実行情報に関するアクションは、プロセス検出、プロセス即時実行とプロセス待ち実行である。プロセス検出は繰り返し検出の場合と同様にエッジ検出の広義の検出アクションで、プロセス検出情報として独立に記述をしても良いし、プロセス実行情報に盛り込むこともできる。プロセス即時実行は、記述された情報を読み取った直後にプロセス実行情報に基いて指定のプロセスを実行するものである。プロセス待ち実行は、対象となるアクション(実施例の場合は番号で記述した)が実行された後、指定の遅延時間を待った後にプロセス実行情報に基いて指定のプロセスを実行するものであり、
図15に示す子プロセス1の2番目の記述に相当する。
以上のように、入出力信号の立上げ、立下げ動作や繰り返し実行、プロセス実行は、記述された情報を読み取った直後に実行する即時実行と、対象となるアクション(実施例の場合は番号で記述した)が実行された後、指定の遅延時間を待った後に実行する待ち実行とを有している。それらアクションには、アクションを実行したことを確認する検出情報を各々の実行情報とは別に記述する場合と、実行情報に検出情報も盛り込む方法とが可能である。
これらのアクションに、各々のアクションが終了することを待つ検出待ち情報、あるいは実行待ち情報が組み合わされて、本発明のシーケンサーのプロセス情報、つまりプログラムが構成される。
【0047】
以上は、本発明のシーケンサーの基本的なシーケンス動作を説明したが、各々のプロセスにおけるプログラムにおいて、様々な条件設定が可能となる。例えば、シーケンス動作が下位プロセスの繰り返し動作を行うとき、繰り返し毎にカウントアップするカウンターを設け、繰り返し情報と共にカウンターの値によって、例えばエッジ検出情報やエッジ実行情報によるプログラムの実行を有効か無効にする機能も拡張機能として可能となる。また、グラフィカル・ユーザー・インターフェイスと称する、シーケンサーを操作するオペレーターの操作とシーケンサーの制御を連動させる例えばタッチパネル上にオンとオフを切り替えるための任意のチェックボックスを用意し、そのチェックボックスのオン、オフの状態によって、指定されたエッジ検出情報やエッジ実行情報によるプログラムの実行を有効か無効にする機能も拡張機能として可能となる。
また、例えばエッジ実行情報に記述された遅延時間や繰り返し情報に記述された繰り返し時間や繰り返し回数など、実施例では直接数値で指定したが、例えばデータメモリーファイルと称して別のファイルにメモリー番地とその番地に格納された数値を格納し、指定のメモリー番地に格納された数値を参照する方法も考えられる。そのような応用においては、グラフィカル・ユーザー・インターフェイスとなる例えばタッチパネル上に、指定されたメモリー番地に格納される数値を入力することによって簡単に数値を変更することができ、より使い易いシーケンサーを提供することが可能になる。
なお、実施例においては、エッジ検出情報やエッジ実行情報をマイクロソフトのエクセルファイルでの入力を模擬して記述したが、タイミングチャートのような図形による記述や、他様々なエディターによる記述も可能で、それらは全て本発明の情報記述に含まれることは明らかである。
例えばタイミングチャートでは、出力信号の立上りと立下りの変化を時刻の経過とともに表したもので、ある入力信号、あるいは出力信号の立下り、あるいは立上りの動作に対して定められた時間だけ遅れて別の出力信号を立上げる、あるいは立下げる情報をそれらエッジが変化する順番に記述したもので、本発明で説明したエッジ検出情報とエッジ実行情報が記述されたプロセス、ついまりプログラムと同じであることは言うまでもない。
以上のように、本発明のシーケンサーは様々な拡張機能を設けることができ、より汎用性を持ったシーケンサーとして提供することができる。
【産業上の利用可能性】
【0048】
任意の出力信号の立上り、または立下り動作を、任意の入力信号、あるいは任意の出力信号の立上り、または立下りの状態変化に応じて制御するシーケンサー全般に適用できる。
【要約】
【課題】
ラダープログラムのような複雑なプログラムを必要とせず、タイミングチャートのような簡単なプログラムによって、プログラムの分解と組立が容易にでき複数の担当者が並行してプログラム開発を行えるプログラムの開発が効率的で、かつ汎用性の高いシーケンサーを実現する。
【解決手段】
入出力信号のエッジ検出と出力信号のエッジ変化を実行するプログラムが並列に動作するマルチスレッド動作として実行され、それら複数のプログラムが階層構造を有しており、各々のプログラムが記述された順番を待って、あるいは待たずに実行する選択機能を有しているいることを特徴とする。
【選択図】
図1