(57)【特許請求の範囲】
【請求項１】
シーケンスプログラムの実行処理およびＥＮＤ処理を実行しながらシーケンス制御を行なうプログラマブルコントローラにおいて、
前記ＥＮＤ処理を行なう際に所定回数のスキャン毎に１回の割合で実行すればよい所定回限定スキャン機能を何回目のスキャンで実行するかをスケジューリングして、各スキャン毎の所定回限定スキャン機能をスキャン手順情報として設定するスケジューリング部と、
各スキャンを実行する際に、前記ＥＮＤ処理として毎回実行する必要のある機能と、前記スキャン手順情報に従って、各回のスキャンに設定されている前記所定回限定スキャン機能と、を実行するＥＮＤ処理部と、
前記各スキャンの実行時間を測定する実行時間測定部と、
を備え、
前記スケジューリング部は、前記実行時間測定部が測定した各スキャンの実行時間に基づいて、各回のスキャンに設定される前記所定回限定スキャン機能の実行に要する合計時間がそれぞれ所定の範囲内に入るようスキャン手順情報を設定し、
前記実行時間測定部は、前記スケジューリング部において設定された前記スキャン手順情報に従って前記ＥＮＤ処理部がＥＮＤ処理を行なっている間に、前記各スキャンの実行時間を再測定し、
前記スケジューリング部は、前記実行時間測定部が再測定した各スキャンの実行時間に基づいて前記スキャン手順情報を再設定することを特徴とするプログラマブルコントローラ。
【請求項２】
前記スケジューリング部は、前記各所定回限定スキャン機能に予めデフォルトとして設定されている実行時間に基づいて前記スキャン手順情報を設定することを特徴とする請求項１に記載のプログラマブルコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＥＮＤ処理のスケジューリングを行なうプログラマブルコントローラに関するものである。
【背景技術】
【０００２】
プログラマブルコントローラ（シーケンサ）では、シーケンサＣＰＵ（Central  Processing  Unit）がシーケンスプログラム実行処理（制御処理）やＥＮＤ処理（情報処理）のスキャンを行ないながら種々のシーケンス制御を行なっている。このようなシーケンス制御では、近年のネットワークやインタネットの普及に伴い、情報処理に対するユーザ要求が多くなり、ＥＮＤ処理が増える傾向にある。
【０００３】
従来、シーケンサＣＰＵでは、ＥＮＤ処理を行なう際に、毎スキャン実行する必要がない処理であっても、毎スキャン実行していた。このため、シーケンサＣＰＵのＥＮＤ処理に新機能を追加した場合、新たに追加した機能の処理分だけスキャンタイムが遅延してしまう。
【０００４】
このようなスキャンタイムの遅延は、スループットを悪化させる要因となるので、スキャンタイムを遅延させないための技術の開発が進められている。例えば、特許文献１に記載のジョブスケジュール制御方法は、ジョブクラスの実行本数や実行優先順位を定めたジョブ実行スケジュールに従って複数のイニシエータを作動させるシステムにおいて、実行中のジョブを開始してからの経過時間が基準の実行時間を越えた場合に、実行中のジョブが属するジョブクラスにイニシエータの増設と割当てを行なっている。
【０００５】
【特許文献１】特開平３−６７３８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記従来の技術では、イニシエータ本数の加減やジョブの優先順位が必要となるので、ジョブスケジュールの制御が複雑になる。このため、装置構成が複雑になるとともに、ジョブスケジュールを制御する際の負荷が大きくなるという問題があった。
【０００７】
また、一部のジョブクラスにイニシエータの増設と割当てを行なっているので、ジョブ毎にイニシエータ本数のばらつきが生じる。このため、被制御装置の動作が不安定になるという問題があった。
【０００８】
本発明は、上記に鑑みてなされたものであって、簡易な構成で、ＥＮＤ処理に対するスキャンタイムの遅延を防止するとともに被制御装置を安定して動作させることができるプログラマブルコントローラを得ることを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、本発明は、シーケンスプログラムの実行処理およびＥＮＤ処理を実行しながらシーケンス制御を行なうプログラマブルコントローラにおいて、前記ＥＮＤ処理を行なう際に所定回数のスキャン毎に１回の割合で実行すればよい所定回限定スキャン機能を何回目のスキャンで実行するかをスケジューリングして、各スキャン毎の所定回限定スキャン機能をスキャン手順情報として設定するスケジューリング部と、各スキャンを実行する際に、前記ＥＮＤ処理として毎回実行する必要のある機能と、前記スキャン手順情報に従って、各回のスキャンに設定されている前記所定回限定スキャン機能と、を実行するＥＮＤ処理部と、前記各スキャンの実行時間を測定する実行時間測定部と、を備え、前記スケジューリング部は、前記実行時間測定部が測定した各スキャンの実行時間に基づいて、各回のスキャンに設定される前記所定回限定スキャン機能の実行に要する合計時間がそれぞれ所定の範囲内に入るようスキャン手順情報を設定し、前記実行時間測定部は、前記スケジューリング部において設定された前記スキャン手順情報に従って前記ＥＮＤ処理部がＥＮＤ処理を行なっている間に、前記各スキャンの実行時間を再測定し、前記スケジューリング部は、前記実行時間測定部が再測定した各スキャンの実行時間に基づいて前記スキャン手順情報を再設定することを特徴とする。
【発明の効果】
【００１０】
設定されたスキャン手順情報に従ってＥＮＤ処理を行なっている間に、各スキャンの実行時間を再測定し、再測定した各スキャンの実行時間に基づいてスキャン手順情報を再設定するので、簡易な構成で、ＥＮＤ処理に対するスキャンタイムの遅延を防止するとともに被制御装置を安定して動作させることができるという効果を奏する。
【発明を実施するための最良の形態】
【００１１】
以下に、本発明に係るプログラマブルコントローラの実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１２】
実施の形態１．
図１は、本発明の実施の形態１に係るプログラマブルコントローラのシーケンサＣＰＵの構成を示す図である。シーケンサＣＰＵ１は、動的スケジューリングの対象になる機能（動的スケジュール対象機能）（新機能）を何スキャン目に行なうかを決定してＥＮＤ処理（スキャン処理順序）の動的スケジューリングを行なうＣＰＵである
【００１３】
シーケンサＣＰＵ１は、シーケンスプログラム実行部１１、ＥＮＤ処理部１２、機能テーブル記憶部１３、動的スケジューリング部１４を有している。シーケンサＣＰＵ１内では、ＥＮＤ処理部１２がシーケンスプログラム実行部１１と動的スケジューリング部１４とに接続し、機能テーブル記憶部１３が動的スケジューリング部１４に接続している。
【００１４】
シーケンスプログラム実行部１１は、ラダープログラムを解析して、シーケンスプログラムの実行処理（制御処理）を行なう。ＥＮＤ処理部１２は、動的スケジューリング部１４によって作成されるＥＮＤ処理の動的スケジュール（後述の動的スケジューリングテーブル５３）に基づいて、ＥＮＤ処理（情報処理）を行なう。
【００１５】
機能テーブル記憶部１３は、動的スケジュール対象機能に関する情報テーブル（後述の動的スケジュール対象機能テーブル５０）を記憶する不揮発性メモリなどである。動的スケジュール対象機能は、スキャンが毎回必要な機能とは異なり、１日に１回や１０秒に１回など、所定回数に１回の割合でスキャンすればよい機能である。本実施の形態では、スキャンが毎回必要な機能を基本機能とし、所定回数に１回の割合でスキャンすればよい動的スケジュール対象機能を新機能（後述の新機能ｆ１〜ｆ６）として説明する。動的スケジュール対象機能は、例えば、ＳＮＴＰ（Simple  Network  Time  Protocol）の実行機能やＦＴＰ（File  Transfer  Protocol）の要求確認機能である。
【００１６】
動的スケジューリング部１４は、各新機能を何スキャン目に実行するかの動的スケジューリングを行う。動的スケジューリング部１４は、機能テーブル記憶部１３に格納されている動的スケジュール対象機能テーブル５０から動的スケジュール対象機能やデフォルト処理時間を読み込むとともに、所定のメモリから目標スキャンタイム（１スキャン内で新機能に与えられる処理時間）（後述の許容スキャンタイム）を読み込んで、動的スケジュール対象機能の実行スキャン順序を決定する。許容スキャンタイムは、使用者などがマウスやキーボードなどの入力手段（図示せず）によって設定し、機能テーブル記憶部１３などの記憶手段に記憶させておいてもよいし、動的スケジュール対象機能テーブル５０内に含めておいてもよい。
【００１７】
このように、本実施の形態のシーケンサＣＰＵ１は、従来のシーケンサＣＰＵに動的スケジューリング部１４を新たに追加するとともに、従来のＥＮＤ処理部を改修したＥＮＤ処理部１２を備える構成となっている。
【００１８】
つぎに、シーケンサＣＰＵ１の動作手順について説明する。まず、動的スケジューリング部１４による動的スケジュール（動的スケジューリングテーブル５３など）の作成処理手順について説明し、その後、ＥＮＤ処理部１２によるＥＮＤ処理の手順について説明する。
【００１９】
図２は、実施の形態１に係るシーケンサＣＰＵの動的スケジュール作成処理手順を示すフローチャートである。動的スケジューリング部１４は、機能テーブル記憶部１３に格納されている動的スケジュール対象機能テーブル５０を読み込む（ステップＳ１１０）。
【００２０】
ここで、動的スケジュール対象機能テーブル５０の構成について説明する。図３は、動的スケジュール対象機能テーブルの構成を示す図である。動的スケジュール対象機能テーブル（機能名列挙テーブル）５０は、動的スケジュール対象機能毎の情報テーブル群である。図３では、動的スケジュール対象機能テーブル５０が、新機能の情報テーブルである新機能テーブルＴ１〜Ｔ６を含んで構成されている場合を示している。なお、ここでの新機能が特許請求の範囲に記載の所定回限定スキャン機能に対応している。
【００２１】
各新機能テーブルＴ１〜Ｔ６は、動的スケジュール対象機能を識別する「ＩＤ」、動的スケジュール対象機能の「機能名」、動的スケジュール対象機能のスキャンに要するデフォルトの「処理時間」（μｓｅｃ）を対応付けた情報テーブルである。
【００２２】
新機能テーブルＴ１は、「ＩＤ」が「００１」であり、「機能名」が「新機能ｆ１」であり、「処理時間」が「５０」である動的スケジュール対象機能の情報テーブルである。新機能テーブルＴ２は、「ＩＤ」が「００２」であり、「機能名」が「新機能ｆ２」であり、「処理時間」が「５０」である動的スケジュール対象機能の情報テーブルである。新機能テーブルＴ３は、「ＩＤ」が「００３」であり、「機能名」が「新機能ｆ３」であり、「処理時間」が「２５」である動的スケジュール対象機能の情報テーブルである。
【００２３】
新機能テーブルＴ４は、「ＩＤ」が「００４」であり、「機能名」が「新機能ｆ４」であり、「処理時間」が「２０」である動的スケジュール対象機能の情報テーブルである。新機能テーブルＴ５は、「ＩＤ」が「００５」であり、「機能名」が「新機能ｆ５」であり、「処理時間」が「２５」である動的スケジュール対象機能の情報テーブルである。新機能テーブルＴ６は、「ＩＤ」が「００６」であり、「機能名」が「新機能ｆ６」であり、「処理時間」が「２０」である動的スケジュール対象機能の情報テーブルである。
【００２４】
また、動的スケジューリング部１４は、機能テーブル記憶部１３などから許容スキャンタイムを読み込んでおく。許容スキャンタイムは、１スキャンのうち、動的スケジュール対象機能に与えられるスキャン時間（処理時間の閾値）である。このため、許容スキャンタイム内に収まる範囲内であれば、許容スキャンタイム内で複数の動的スケジュール対象機能をスキャンさせてもよい。本実施の形態では、許容スキャンタイムが５０μｓｅｃである場合について説明する。
【００２５】
動的スケジューリング部１４は、機能テーブル記憶部１３から読み込んだ動的スケジュール対象機能テーブル５０に基づいて、初期スケジューリングテーブル５１を作成する（ステップＳ１２０）。具体的には、動的スケジューリング部１４は、新機能テーブルＴ１〜Ｔ６のそれぞれから「ＩＤ」、「機能名」、「処理時間」を抽出する。そして、動的スケジューリング部１４は、各新機能テーブルＴ１〜Ｔ６の「ＩＤ」と「機能名」を、「ＩＤ」の値の小さい順番に並べて１つの情報テーブルを作成する。
【００２６】
図４は、初期スケジューリングテーブルの構成を示す図である。初期スケジューリングテーブル（機能名テーブル）５１は、「スキャン番号」、「ＩＤ」、「機能名」、「処理時間」を対応付けした情報テーブルである。「スキャン番号」は、各動的スケジュール対象機能を１つずつスキャンしていく場合のスキャン順序である。
【００２７】
初期スケジューリングテーブル５１では、各動的スケジュール対象機能に対して、「ＩＤ」の値の小さい順番にスキャン順序を設定している。具体的には、「ＩＤ」の値が最も小さい１つ目の動的スケジュール対象機能（新機能ｆ１）には、スキャン順序として１スキャン目を設定し、「ＩＤ」の値が２番目に小さい２つ目の動的スケジュール対象機能（新機能ｆ２）には、スキャン順序として２スキャン目を設定している。また、「ＩＤ」の値が３番目に小さい３つ目の動的スケジュール対象機能（新機能ｆ３）には、スキャン順序として３スキャン目を設定し、「ＩＤ」の値が４番目に小さい４つ目の動的スケジュール対象機能（新機能ｆ４）には、スキャン順序として４スキャン目を設定している。また、「ＩＤ」の値が５番目に小さい５つ目の動的スケジュール対象機能（新機能ｆ５）には、スキャン順序として５スキャン目を設定し、「ＩＤ」の値が６番目に小さい６つ目の動的スケジュール対象機能（新機能ｆ６）には、スキャン順序として６スキャン目を設定している。
【００２８】
つぎに、動的スケジューリング部１４は、作成した初期スケジューリングテーブル５１の各新機能ｆ１〜ｆ６を処理時間の長い順番に並べ替えた処理時間順テーブル５２を作成する（ステップＳ１３０）。
【００２９】
図５は、処理時間順テーブルの構成を示す図である。処理時間順テーブル５２は、初期スケジューリングテーブル５１を処理時間の長い順番に並べ替えた情報テーブルである。初期スケジューリングテーブル５１では、新機能ｆ１と新機能ｆ２の処理時間が５０μｓｅｃであり、新機能ｆ３と新機能ｆ５の処理時間が２５μｓｅｃであり、新機能ｆ４と新機能ｆ６の処理時間が２０μｓｅｃである。
【００３０】
したがって、処理時間順テーブル５２では、「スキャン番号」以外の項目を、新機能ｆ１、新機能ｆ２、新機能ｆ３、新機能ｆ５、新機能ｆ４、新機能ｆ６の順番に並べ替えている。すなわち、初期スケジューリングテーブル５１の、４スキャン目の動的スケジュール対象機能（新機能ｆ４）と、５スキャン目の動的スケジュール対象機能（新機能ｆ５）と、を入れ替えている。具体的には、４スキャン目の動的スケジュール対象機能を「ＩＤ」が「００５」、「機能名」が「新機能ｆ５」、「処理時間」が２５μｓｅｃの動的スケジュール対象機能とし、５スキャン目の動的スケジュール対象機能を「ＩＤ」が「００４」、「機能名」が「新機能ｆ４」、「処理時間」が２０μｓｅｃの動的スケジュール対象機能としている。
【００３１】
つぎに、動的スケジューリング部１４は、処理時間順テーブル５２と許容スキャンタイムに基づいて、各新機能のスキャン順序に関するスケジューリングを行なう。動的スケジューリング部１４は、各新機能ｆ１〜ｆ６に対し、順番にスキャン順序（スキャン番号）を設定していく。
【００３２】
動的スケジューリング部１４は、設定対象となる「スキャン番号」をプラス１する（「スキャン番号」に１をプラスする）（ステップＳ１４０）。初期状態では、設定対象の「スキャン番号」が０であるので、動的スケジューリング部１４は、０にプラス１して設定対象の「スキャン番号」を１（１スキャン目）とする。
【００３３】
そして、動的スケジューリング部１４は、設定対象の新機能に設定対象の「スキャン番号」を割り付ける（ステップＳ１５０）。具体的には、動的スケジューリング部１４は、設定対象の１つ目の新機能ｆ１に、現在設定対象となっている「スキャン番号」の１を割り付ける。
【００３４】
動的スケジューリング部１４は、設定対象となっている「スキャン番号」に割り付けられた新機能の合計処理時間が許容スキャンタイムを超えているか否かを判断する（ステップＳ１６０）。
【００３５】
設定対象となっている「スキャン番号」に割り付けられた新機能の合計処理時間が許容スキャンタイムを超えている場合（ステップＳ１６０、Ｎｏ）、動的スケジューリング部１４は、設定対象の新機能を次の新機能へ進める（ステップＳ１７０）。
【００３６】
一方、設定対象となっている「スキャン番号」に割り付けられた新機能の合計処理時間が許容スキャンタイムを超えている場合（ステップＳ１６０、Ｙｅｓ）、動的スケジューリング部１４は、設定対象の「スキャン番号」をプラス１する（ステップＳ１４０）。
【００３７】
「スキャン番号」の１に割り付けられている新機能は新機能ｆ１である。そして、この新機能ｆ１の処理時間は５０μｓｅｃであり、許容スキャンタイムの５０μｓｅｃと同じである。したがって、動的スケジューリング部１４は、設定対象の新機能を次の新機能へ進める。具体的には、動的スケジューリング部１４は、ステップＳ１７０の処理として設定対象の新機能を新機能ｆ１から次の新機能である新機能ｆ２に進める。
【００３８】
そして、動的スケジューリング部１４は、未割付の新機能があるか否かを判断する（ステップＳ１８０）。未割付の新機能ｆ２があるので、動的スケジューリング部１４は、未割付の新機能があると判断して（ステップＳ１８０、Ｙｅｓ）、設定対象の新機能に設定対象の「スキャン番号」を割り付ける（ステップＳ１５０）。具体的には、動的スケジューリング部１４は、設定対象の２つ目の新機能ｆ２に、現在設定対象となっている「スキャン番号」の１を割り付けてみる。
【００３９】
そして、動的スケジューリング部１４は、設定対象となっている「スキャン番号」に割り付けられた新機能の合計処理時間が許容スキャンタイムを超えているか否かを判断する（ステップＳ１６０）。
【００４０】
「スキャン番号」の１に割り付けられている新機能は新機能ｆ１と新機能ｆ２である。そして、この新機能ｆ１と新機能ｆ２の合計処理時間は１００μｓｅｃであり、許容スキャンタイムの５０μｓｅｃを超えている。したがって、動的スケジューリング部１４は、設定対象の「スキャン番号」をプラス１する（ステップＳ１４０）。具体的には、動的スケジューリング部１４は、ステップＳ１４０の処理として「スキャン番号」の１にプラス１して設定対象の「スキャン番号」を２（２スキャン目）とする。
【００４１】
そして、動的スケジューリング部１４は、設定対象の新機能に設定対象の「スキャン番号」を割り付ける（ステップＳ１５０）。具体的には、動的スケジューリング部１４は、設定対象となっている２つ目の新機能ｆ２に、現在設定対象となっている「スキャン番号」の２を割り付ける。換言すると、動的スケジューリング部１４は、新機能ｆ２に設定した「スキャン番号」の１を「スキャン番号」の２に変更（再設定）する。
【００４２】
動的スケジューリング部１４は、設定対象となっている「スキャン番号」に割り付けられた新機能の合計処理時間が許容スキャンタイムを超えているか否かを判断する（ステップＳ１６０）。
【００４３】
「スキャン番号」の２に割り付けられている新機能は新機能ｆ２である。そして、この新機能ｆ２の処理時間は５０μｓｅｃであり、許容スキャンタイムの５０μｓｅｃと同じである。したがって、動的スケジューリング部１４は、設定対象の新機能を次の新機能へ進める。具体的には、動的スケジューリング部１４は、ステップＳ１７０の処理として設定対象の新機能を新機能ｆ２から次の新機能である新機能ｆ３に進める。
【００４４】
そして、動的スケジューリング部１４は、未割付の新機能があるか否かを判断する（ステップＳ１８０）。未割付の新機能ｆ３があるので、動的スケジューリング部１４は、未割付の新機能があると判断して（ステップＳ１８０、Ｙｅｓ）、設定対象の新機能に設定対象の「スキャン番号」を割り付ける（ステップＳ１５０）。具体的には、動的スケジューリング部１４は、設定対象の３つ目の新機能ｆ３に、現在設定対象となっている「スキャン番号」の２を割り付けてみる。
【００４５】
そして、動的スケジューリング部１４は、設定対象となっている「スキャン番号」に割り付けられた新機能の合計処理時間が許容スキャンタイムを超えているか否かを判断する（ステップＳ１６０）。
【００４６】
「スキャン番号」の２に割り付けられている新機能は新機能ｆ２と新機能ｆ３である。そして、この新機能ｆ２と新機能ｆ３の合計処理時間は７５μｓｅｃであり、許容スキャンタイムの５０μｓｅｃを超えている。したがって、動的スケジューリング部１４は、設定対象の「スキャン番号」をプラス１する（ステップＳ１４０）。具体的には、動的スケジューリング部１４は、ステップＳ１４０の処理として「スキャン番号」の２にプラス１して設定対象の「スキャン番号」を３（３スキャン目）とする。
【００４７】
そして、動的スケジューリング部１４は、設定対象の新機能に設定対象の「スキャン番号」を割り付ける（ステップＳ１５０）。具体的には、動的スケジューリング部１４は、設定対象となっている３つ目の新機能ｆ３に、現在設定対象となっている「スキャン番号」の３を割り付ける。換言すると、動的スケジューリング部１４は、新機能ｆ３に設定した「スキャン番号」の２を「スキャン番号」の３に変更する。
【００４８】
動的スケジューリング部１４は、設定対象となっている「スキャン番号」に割り付けられた新機能の合計処理時間が許容スキャンタイムを超えているか否かを判断する（ステップＳ１６０）。
【００４９】
「スキャン番号」の３に割り付けられている新機能は新機能ｆ３である。そして、この新機能ｆ３の処理時間は２５μｓｅｃであり、許容スキャンタイムの５０μｓｅｃよりも短い時間である。したがって、動的スケジューリング部１４は、設定対象の新機能を次の新機能へ進める。具体的には、動的スケジューリング部１４は、ステップＳ１７０の処理として設定対象の新機能を新機能ｆ３から次の新機能である新機能ｆ５に進める。
【００５０】
そして、動的スケジューリング部１４は、未割付の新機能があるか否かを判断する（ステップＳ１８０）。未割付の新機能ｆ５があるので、動的スケジューリング部１４は、未割付の新機能があると判断して（ステップＳ１８０、Ｙｅｓ）、設定対象の新機能に設定対象の「スキャン番号」を割り付ける（ステップＳ１５０）。具体的には、動的スケジューリング部１４は、設定対象の４つ目の新機能ｆ５に、現在設定対象となっている「スキャン番号」の３を割り付けてみる。
【００５１】
そして、動的スケジューリング部１４は、設定対象となっている「スキャン番号」に割り付けられた新機能の合計処理時間が許容スキャンタイムを超えているか否かを判断する（ステップＳ１６０）。
【００５２】
「スキャン番号」の３に割り付けられている新機能は新機能ｆ３と新機能ｆ５である。そして、この新機能ｆ３と新機能ｆ５の合計処理時間は５０μｓｅｃであり、許容スキャンタイムの５０μｓｅｃと同じである。したがって、動的スケジューリング部１４は、設定対象の新機能を次の新機能へ進める。具体的には、動的スケジューリング部１４は、ステップＳ１７０の処理として設定対象の新機能を新機能ｆ５から次の新機能である新機能ｆ４に進める。
【００５３】
そして、動的スケジューリング部１４は、未割付の新機能があるか否かを判断する（ステップＳ１８０）。未割付の新機能ｆ４があるので、動的スケジューリング部１４は、未割付の新機能があると判断して（ステップＳ１８０、Ｙｅｓ）、設定対象の新機能に設定対象の「スキャン番号」を割り付ける（ステップＳ１５０）。具体的には、動的スケジューリング部１４は、設定対象の５つ目の新機能ｆ４に、現在設定対象となっている「スキャン番号」の３を割り付けてみる。
【００５４】
そして、動的スケジューリング部１４は、設定対象となっている「スキャン番号」に割り付けられた新機能の合計処理時間が許容スキャンタイムを超えているか否かを判断する（ステップＳ１６０）。
【００５５】
「スキャン番号」の３に割り付けられている新機能は新機能ｆ３、新機能ｆ５、新機能ｆ４である。そして、この新機能ｆ３〜新機能ｆ５の合計処理時間は７０μｓｅｃであり、許容スキャンタイムの５０μｓｅｃを超えている。したがって、動的スケジューリング部１４は、設定対象の「スキャン番号」をプラス１する（ステップＳ１４０）。具体的には、動的スケジューリング部１４は、ステップＳ１４０の処理として「スキャン番号」の３にプラス１して設定対象の「スキャン番号」を４（４スキャン目）とする。
【００５６】
そして、動的スケジューリング部１４は、設定対象の新機能に設定対象の「スキャン番号」を割り付ける（ステップＳ１５０）。具体的には、動的スケジューリング部１４は、設定対象となっている５つ目の新機能ｆ４に、現在設定対象となっている「スキャン番号」の４を割り付ける。換言すると、動的スケジューリング部１４は、新機能ｆ４に設定した「スキャン番号」の３を「スキャン番号」の４に変更する。
【００５７】
動的スケジューリング部１４は、設定対象となっている「スキャン番号」に割り付けられた新機能の合計処理時間が許容スキャンタイムを超えているか否かを判断する（ステップＳ１６０）。
【００５８】
「スキャン番号」の４に割り付けられている新機能は新機能ｆ４である。そして、この新機能ｆ４の処理時間は２０μｓｅｃであり、許容スキャンタイムの５０μｓｅｃよりも短い時間である。したがって、動的スケジューリング部１４は、設定対象の新機能を次の新機能へ進める。具体的には、動的スケジューリング部１４は、ステップＳ１７０の処理として設定対象の新機能を新機能ｆ４から次の新機能である新機能ｆ６に進める。
【００５９】
そして、動的スケジューリング部１４は、未割付の新機能があるか否かを判断する（ステップＳ１８０）。未割付の新機能ｆ６があるので、動的スケジューリング部１４は、未割付の新機能があると判断して（ステップＳ１８０、Ｙｅｓ）、設定対象の新機能に設定対象の「スキャン番号」を割り付ける（ステップＳ１５０）。具体的には、動的スケジューリング部１４は、設定対象の６つ目の新機能ｆ６に、現在設定対象となっている「スキャン番号」の４を割り付けてみる。
【００６０】
そして、動的スケジューリング部１４は、設定対象となっている「スキャン番号」に割り付けられた新機能の合計処理時間が許容スキャンタイムを超えているか否かを判断する（ステップＳ１６０）。
【００６１】
「スキャン番号」の４に割り付けられている新機能は新機能ｆ４と新機能ｆ６である。そして、この新機能ｆ４と新機能ｆ６の合計処理時間は４０μｓｅｃであり、許容スキャンタイムの４０μｓｅｃより短い時間である。したがって、動的スケジューリング部１４は、設定対象の新機能を次の新機能へ進める。
【００６２】
そして、動的スケジューリング部１４は、未割付の新機能があるか否かを判断する（ステップＳ１８０）。未割付の新機能が無いので、動的スケジューリング部１４は、未割付の新機能が無いと判断して（ステップＳ１８０、Ｎｏ）、動的スケジュールの作成処理を終了する。これにより、動的スケジューリング部１４によって作成される動的スケジューリングテーブルは、図６に示す動的スケジューリングテーブル５３となる。
【００６３】
動的スケジューリングテーブル（スキャン手順情報）５３では、新機能ｆ３と新機能ｆ５の合計処理時間が５０μｓｅｃであり、許容スキャンタイムを超えていないので、同じ「スキャン番号」の３が設定されている。また、新機能ｆ３と新機能ｆ５の合計処理時間が４０μｓｅｃであり、許容スキャンタイムを超えていないので、同じ「スキャン番号」の４が設定されている。
【００６４】
これにより、１スキャン目〜４スキャン目までの各処理時間は、５０μｓｅｃ、５０μｓｅｃ、５０μｓｅｃ、４０μｓｅｃとなり、平均化されている。換言すると、各スキャンの処理時間にばらつきがなくなっている。
【００６５】
なお、図２では、各スキャンで実行される新機能が１つまたは２つの場合について説明したが、許容スキャンタイムを超えなければ、各スキャンで実行される新機能は３つ以上であってもよい。
【００６６】
動的スケジューリング部１４は、作成した動的スケジューリングテーブル５３を、ＥＮＤ処理部１２に送り、ＥＮＤ処理部１２は、動的スケジューリングテーブル５３に従って各新機能ｆ１〜ｆ６を実行する。
【００６７】
つぎに、シーケンサＣＰＵ１によるスキャン処理の手順について説明する。図７は、スキャン処理の処理手順を示すフローチャートである。図７では、シーケンサＣＰＵ１によるスキャン処理の手順として、シーケンスプログラム実行部１１によるシーケンスプログラムの実行処理手順と、ＥＮＤ処理部１２によるＥＮＤ処理手順とを示している。
【００６８】
まず、シーケンスプログラム実行部１１は、１スキャン目の処理としてラダープログラムを解析し、シーケンスプログラムを実行する（ステップＳ２１０）。ＥＮＤ処理部１２は、スキャン毎に実行が必要な基本機能をスキャンする。何れの機能が基本機能であるかを示す基本機能情報は、予め所定の記憶手段（例えば機能テーブル記憶部１３）に格納しておき、ＥＮＤ処理部１２は、基本機能情報に基づいて基本機能のスキャンを実行する（ステップＳ２２０）。
【００６９】
ＥＮＤ処理部１２は、基本機能のスキャンを実行した後に、現在は何スキャン目であるか（スキャン番号）を確認する（ステップＳ２３０）。そして、ＥＮＤ処理部１２は、動的スケジューリングテーブル５３に従って、各スキャン処理時にスキャン番号に応じた新機能を実行していく。
【００７０】
現在のスキャンが１スキャン目である場合（ステップＳ２３０、１スキャン目）、動的スケジューリングテーブル５３の１スキャン目には新機能ｆ１が設定されているので、ＥＮＤ処理部１２は、新機能ｆ１のスキャンを実行する（ステップＳ２４０）。これにより、シーケンサＣＰＵ１では、１スキャン目の処理を完了し、次のスキャン処理（２スキャン目）を実行する。
【００７１】
シーケンスプログラム実行部１１は、２スキャン目の処理としてラダープログラムを解析し、シーケンスプログラムを実行する（ステップＳ２１０）。ＥＮＤ処理部１２は、スキャン毎に実行が必要な基本機能をスキャンする（ステップＳ２２０）。さらに、ＥＮＤ処理部１２は、現在は何スキャン目であるかを確認する（ステップＳ２３０）。
【００７２】
現在のスキャンが２スキャン目である場合（ステップＳ２３０、２スキャン目）、動的スケジューリングテーブル５３の２スキャン目には新機能ｆ２が設定されているので、ＥＮＤ処理部１２は、新機能ｆ２のスキャンを実行する（ステップＳ２５０）。これにより、シーケンサＣＰＵ１では、２スキャン目の処理を完了し、次のスキャン処理（３スキャン目）を実行する。
【００７３】
シーケンスプログラム実行部１１は、３スキャン目の処理としてラダープログラムを解析し、シーケンスプログラムを実行する（ステップＳ２１０）。ＥＮＤ処理部１２は、スキャン毎に実行が必要な基本機能をスキャンする（ステップＳ２２０）。さらに、ＥＮＤ処理部１２は、現在は何スキャン目であるかを確認する（ステップＳ２３０）。
【００７４】
現在のスキャンが３スキャン目である場合（ステップＳ２３０、３スキャン目）、動的スケジューリングテーブル５３の３スキャン目には新機能ｆ３と新機能ｆ５が設定されているので、ＥＮＤ処理部１２は、新機能ｆ３のスキャンと新機能ｆ５のスキャンを実行する（ステップＳ２６０，Ｓ２７０）。これにより、シーケンサＣＰＵ１では、３スキャン目の処理を完了し、次のスキャン処理（４スキャン目）を実行する。
【００７５】
シーケンスプログラム実行部１１は、４スキャン目の処理としてラダープログラムを解析し、シーケンスプログラムを実行する（ステップＳ２１０）。ＥＮＤ処理部１２は、スキャン毎に実行が必要な基本機能をスキャンする（ステップＳ２２０）。さらに、ＥＮＤ処理部１２は、現在は何スキャン目であるかを確認する（ステップＳ２３０）。
【００７６】
現在のスキャンが４スキャン目である場合（ステップＳ２３０、４スキャン目）、動的スケジューリングテーブル５３の４スキャン目には新機能ｆ４と新機能ｆ６が設定されているので、ＥＮＤ処理部１２は、新機能ｆ４のスキャンと新機能ｆ６のスキャンを実行する（ステップＳ２８０，Ｓ２９０）。これにより、シーケンサＣＰＵ１では、４スキャン目の処理を完了する。
【００７７】
動的スケジューリングテーブル５３には、１スキャン目〜４スキャン目までが設定されているので、シーケンサＣＰＵ１は、１スキャン目〜４スキャン目まで実行すると、５スキャン目として再び１スキャン目を実行する。したがって、シーケンサＣＰＵ１では、４スキャン目を実行した後、次のスキャン処理として１スキャン目を実行する。これにより、シーケンサＣＰＵ１は、１スキャン目〜４スキャン目までの処理を繰り返す。このように、本実施の形態では、ＥＮＤ処理部１２は、動的スケジュール対象機能を、動的スケジューリング部１４で決めたスキャン時に実行する。
【００７８】
ここで、本実施の形態におけるシーケンサＣＰＵ１と、従来用いられていたシーケンサＣＰＵの動作の差異を明確にするため、従来用いられていたシーケンサＣＰＵの動作手順について説明する。
【００７９】
従来のシーケンサＣＰＵは、シーケンスプログラムの実行を行なった後、ＥＮＤ処理で全ての機能のスキャンを実行している。換言すると、１回のスキャンで、シーケンスプログラムの実行と、スキャンが毎回必要な機能のスキャンと、所定回数に１回の割合でスキャンすればよい全ての機能のスキャンと、を行なっている。
【００８０】
例えば、スキャンが毎回必要な機能が機能Ｘであり、所定回数に１回の割合でスキャンすればよい機能が、機能Ａ、機能Ｂ、機能Ｃである場合、従来のシーケンサＣＰＵでは、ＥＮＤ処理を行なう度に、機能Ｘ、機能Ａ、機能Ｂ、機能Ｃの全てのスキャンを行なっている。このため、１日に１回や１０秒に１回など、所定回数に１回の割合でスキャンすればよい機能であっても、ＥＮＤ処理で毎回スキャンされることとなり、スキャンタイムが遅延していた。
【００８１】
一方、本実施の形態のシーケンサＣＰＵ１は、ＥＮＤ処理でスキャンする新機能を、各スキャン処理に分割（配分）させている。このため、従来のように、所定回数に１回の割合でスキャンすればよい機能を、ＥＮＤ処理で毎回スキャンすることはない。したがって、ＥＮＤ処理に新機能ｆ１〜ｆ６などを追加した場合であっても、スキャン処理の負荷を分散させることが可能となる。
【００８２】
また、本実施の形態のシーケンサＣＰＵ１は、各スキャンでの新機能の合計処理時間が許容スキャンタイムを超えないよう各スキャンのスケジューリングを行なっているので、各スキャンの処理時間のばらつきを小さくし平均化することが可能となる。
【００８３】
また、本実施の形態のシーケンサＣＰＵ１は、各スキャンでの新機能の合計処理時間が許容スキャンタイムに近付くよう、各スキャンのスケジューリングを行なっているので、各スキャンの処理時間のばらつきを小さくし平均化することが可能となる。
【００８４】
つぎに、シーケンサＣＰＵ１の具体的な構成の一例について説明する。図８は、シーケンサＣＰＵを有したユニットの構成を示す図である。本実施の形態のシーケンサＣＰＵ１は、例えばＣＰＵ９１、ＳＤＲＡＭ（Synchronous  Dynamic  Random  Access  Memory）９２、ＡＳＩＣ（Application  Specific  Integrated  Circuit）９３、ＦＬＡＳＨメモリ９４、ＢＵＳ９５、ＭＣ（Memory  Card）９６、ＵＳＢ（Universal  Serial  Bus）４９７などを有したユニット１００として構成されており、ユニット１００は、ＢＵＳ９５を介してプログラマブルコントローラ１０１のバックプレーン（シーケンサバス８０）などに着脱自在に配設される。
【００８５】
また、プログラマブルコントローラ１０１のシーケンサバス８０には、図示しない電源ユニットなどのユニット１００以外のユニットが接続されており、各ユニット間で情報などの送受信を行なっている。
【００８６】
ＡＳＩＣ９３は、ＣＰＵ９１、ＳＤＲＡＭ９２、ＦＬＡＳＨメモリ９４、ＢＵＳ９５、ＭＣ９６、ＵＳＢ９７をそれぞれ接続している。ＡＳＩＣ９３は、ＰＣＩバスなどを介してＭＣ９６、ＵＳＢ９７などが接続されている。
【００８７】
ユニット１００では、ＣＰＵ９１がＥＮＤ処理部１２や動的スケジューリング部１４として動作し、ＦＬＡＳＨメモリ９４が動的スケジュール対象機能テーブル５０を記憶しておく。また、ＡＳＩＣ９３は、ＲＡＭやＲＯＭ（Read  Only  Memory）を備えており、シーケンスプログラム実行部１１として動作する。
【００８８】
ＡＳＩＣ９３は、シーケンスプログラム実行処理用のハードウェア要素を有するシーケンスプログラム実行処理用途向けのＩＣ（Integrated  Circuit）である。具体的には、ＡＳＩＣ９３は、ＣＰＵ９１からシーケンスプログラムの実行を指示する処理要求が入力されると、ＲＯＭ内からシーケンスプログラムの実行プログラムやアプリケーションプログラムなどを読み出してＲＡＭ内のプログラム格納領域に展開してシーケンスプログラムの実行に関する種々の処理を行なう。
【００８９】
なお、本実施の形態では、動的スケジュール対象機能となる新機能が新機能ｆ１〜ｆ６の６つである場合について説明したが、新機能は５つ以下であってもよいし、７つ以上であってもよい。
【００９０】
また、本実施の形態では、図２に示した手順によって各スキャンの処理時間を平均化させたが、各スキャンの処理時間を平均化させる方法は他の方法であってもよい。例えば、設定対象の「スキャン番号」に割り付ける新機能を種々組み合わせることによって、各スキャンの処理時間を平均化させてもよい。この場合、種々の組み合わせの中から、各「スキャン番号」に割り付けられる新機能の合計処理時間のばらつき（標準偏差など）が最も小さい組合せなどを動的スケジューリング部１４に設定する。
【００９１】
また、本実施の形態では、初期スケジューリングテーブル５１の各新機能ｆ１〜ｆ６を処理時間の長い順番に並べ替えた処理時間順テーブル５２を作成してから動的スケジューリングテーブル５３を作成したが、初期スケジューリングテーブル５１の各新機能ｆ１〜ｆ６を処理時間の短い順番に並べ替えた処理時間順テーブル５２を作成してから動的スケジューリングテーブル５３を作成してもよい。
【００９２】
また、本実施の形態では、初期スケジューリングテーブル５１の各新機能ｆ１〜ｆ６を処理時間の長い順番に並べ替えた処理時間順テーブル５２を作成してから動的スケジューリングテーブル５３を作成したが、各新機能ｆ１〜ｆ６を処理時間などに基づいて並べ替えることなく、初期スケジューリングテーブル５１から動的スケジューリングテーブル５３を作成してもよい。
【００９３】
また、各スキャンの処理時間を平均化させた後、各「スキャン番号」に割り付けられる新機能の合計処理時間に所定の待機時間を加算して、それぞれの合計処理時間を許容スキャンタイムと同じ時間になるよう、各スキャンの処理時間を調整してもよい。
【００９４】
また、本実施の形態では、各スキャンでの新機能の合計処理時間が許容スキャンタイムを超えないよう各スキャンのスケジューリングを行なったが、各スキャンでの新機能の合計処理時間が許容スキャンタイムに近付くよう各スキャンのスケジューリングを行なってもよい。例えば、新機能の合計処理時間と許容スキャンタイムとの差が所定の範囲内に入るよう各スキャンのスケジューリングを行なうことによって、スキャンタイムを平均化することができる。
【００９５】
このように実施の形態１によれば、新機能ｆ１〜ｆ６のスキャンを複数回のスキャンに分配し、スキャン処理の負荷分散を行なっているので、簡易な構成で容易にスキャンタイムの遅延を防止できる。また、スキャンタイムを平均化しているので、プログラマブルコントローラによって制御される被制御装置の動作を簡易な構成で容易に安定させることが可能となる。
【００９６】
また、予め作成されている動的スケジュール対象機能テーブル５０を用いて動的スケジューリングテーブル５３を作成しているので、簡易な構成で容易にＥＮＤ処理のスケジューリングを行なうことが可能となる。
【００９７】
実施の形態２．
つぎに、図９および図１０を用いてこの発明の実施の形態２について説明する。実施の形態２では、新機能ｆ１〜ｆ６のスキャンに要する時間（実行時間）を測定し、この測定結果に基づいて動的スケジューリングテーブル５３を作成する。
【００９８】
図９は、本発明の実施の形態２に係るプログラマブルコントローラのシーケンサＣＰＵの構成を示す図である。図９の各構成要素のうち図１に示す実施の形態１のシーケンサＣＰＵ１と同一機能を達成する構成要素については同一番号を付しており、重複する説明は省略する。
【００９９】
シーケンサＣＰＵ２は、シーケンスプログラム実行部１１、ＥＮＤ処理部１２、機能テーブル記憶部１３、動的スケジューリング部１４に加えて、実行時間測定部２１を有している。
【０１００】
実行時間測定部２１は、ＥＮＤ処理部１２および動的スケジューリング部１４に接続している。実行時間測定部２１は、ＥＮＤ処理部１２から受ける新機能ｆ１〜ｆ６のスキャン開始通知とスキャン終了通知に基づいて、各新機能ｆ１〜ｆ６の実行時間（処理時間）を測定する。実行時間測定部２１は、測定した各新機能ｆ１〜ｆ６の実行時間を動的スケジューリング部１４に送る。
【０１０１】
本実施の形態では、動的スケジューリング部１４は、実行時間測定部２１から送られてくる新機能ｆ１〜ｆ６の実行時間を用いて各新機能を何スキャン目に実行するかの動的スケジューリングを行う。
【０１０２】
つぎに、シーケンサＣＰＵ２の動作手順として、動的スケジューリング部１４による動的スケジュールの作成処理手順について説明する。なお、図２で説明した実施の形態１のシーケンサＣＰＵ１と同様の処理を行なう手順については、その説明を省略する。
【０１０３】
図１０は、実施の形態１に係るシーケンサＣＰＵの動的スケジュール作成処理手順を示すフローチャートである。シーケンサＣＰＵ２へは、新機能ｆ１〜ｆ６のデフォルトの処理時間（実行時間）を登録しておく。登録しておくデフォルトの処理時間は、図４に示した初期スケジューリングテーブル５１であってもよいし、図５に示した処理時間順テーブル５２であってもよい。また、図６に示した動的スケジューリングテーブル５３であってもよい。また、各新機能ｆ１〜ｆ６の処理時間を０に設定登録しておいてもよい。新機能ｆ１〜ｆ６のデフォルトの処理時間は、デフォルトのスケジューリングテーブルとして、例えば機能テーブル記憶部１３などの記憶手段に格納しておく（ステップＳ３１０，Ｓ３２０）。
【０１０４】
この後、シーケンサＣＰＵ２は、予め登録しておいたデフォルトのスケジューリングテーブルに基づいてスキャン処理を開始する（ステップＳ３３０）。シーケンサＣＰＵ２では、シーケンスプログラム実行部１１によるシーケンスプログラム実行処理とＥＮＤ処理部１２によるＥＮＤ処理とを行なう。例えば、デフォルトのスケジューリングテーブルが図６に示した動的スケジューリングテーブル５３の場合、シーケンサＣＰＵ２は、図７に示したスキャン処理の処理手順にしたがってスキャン処理を行なう。
【０１０５】
このとき、ＥＮＤ処理部１２は、各新機能ｆ１〜ｆ６のスキャンを開始する際に、実行時間測定部２１にスキャンの開始通知を送る。また、ＥＮＤ処理部１２は、各新機能ｆ１〜ｆ６のスキャンを終了する際に、実行時間測定部２１にスキャンの終了通知を送る。
【０１０６】
実行時間測定部２１は、各新機能ｆ１〜ｆ６の開始通知から終了通知までの時間を、ＡＩＳＩＣに内蔵されているμｓｅｃカウンタなどで新機能ｆ１〜ｆ６毎に計測する。具体的には、新機能ｆ１〜ｆ６の開始通知があるとμｓｅｃカウンタを開始し、新機能ｆ１〜ｆ６の終了通知があるとμｓｅｃカウンタを停止させ、μｓｅｃカウンタの開始から停止までの時間をスキャンの実行時間とする。これにより、実行時間測定部２１は、新機能ｆ１〜ｆ６の各実行時間を測定する（ステップＳ３４０）。
【０１０７】
実行時間測定部２１は、デフォルトのスケジューリングテーブルに設定されている新機能の実行時間を全て測定すると、測定した各新機能ｆ１〜ｆ６の実行時間を動的スケジューリング部１４に送るとともに、再スケジューリング要求フラグをＯＮさせる。
【０１０８】
動的スケジューリング部１４は、実行時間測定部２１から送られてくる新機能ｆ１〜ｆ６の実行時間を用いて、初期スケジューリングテーブル５１の作成を行なう（ステップＳ３５０）。動的スケジューリング部１４は、作成した初期スケジューリングテーブル５１を機能テーブル記憶部１３に格納する。
【０１０９】
なお、機能テーブル記憶部１３内に既に初期スケジューリングテーブル５１がある場合、動的スケジューリング部１４は、既に格納されている初期スケジューリングテーブル５１を、作成した初期スケジューリングテーブル５１で上書きする。
【０１１０】
この後、シーケンサＣＰＵ２は、シーケンサＣＰＵ１と同様の処理によって、処理時間順テーブル５２を作成し、その後、動的スケジューリングテーブル５３を作成（再設定）する（ステップＳ３６０，Ｓ３７０）。この処理時間順テーブル５２と動的スケジューリングテーブル５３の作成処理は、図２に示したステップＳ１３０〜Ｓ１８０の処理に対応している。
【０１１１】
シーケンサＣＰＵ２は、作成した動的スケジューリングテーブル５３に従って、スキャン処理を行なう。シーケンサＣＰＵ２は、シーケンサＣＰＵ１と同様の処理手順によってスキャン処理を行なうのでその説明を省略する。
【０１１２】
この後、シーケンサＣＰＵ２では、スキャン処理を行なう度に、実行時間測定部２１が新機能ｆ１〜ｆ６の各実行時間を測定し、動的スケジューリング部１４が動的スケジューリングテーブル５３を作成する処理を繰り返す（ステップＳ３３０〜Ｓ３７０）。このとき、シーケンサＣＰＵ２で、新機能ｆ１〜ｆ６の何れかの実行時間が変動した場合に、動的スケジューリング部１４が動的スケジューリングテーブル５３を再作成し、新機能ｆ１〜ｆ６の何れかの実行時間が変動していなければ動的スケジューリング部１４は動的スケジューリングテーブル５３の作成を行なわない。
【０１１３】
なお、動的スケジューリングテーブル５３を再作成するか否か（実行時間を測定するか否か）は、再スケジューリングのあり／なし設定により判断してもよい。この再スケジューリングのあり／なし設定は、予め使用者が設定してもよいし、実行時間の測定実績（履歴）に基づいて、シーケンサＣＰＵ２（ＥＮＤ処理部１２、動的スケジューリング部１４、実行時間測定部２１）が設定してもよい。例えば、測定した実行時間が所定回数変動しなければ、シーケンサＣＰＵ２は、再スケジューリングを行なわない。なお、本実施の形態では、図８に示したユニット１００のＣＰＵ９１が、ＥＮＤ処理部１２、動的スケジューリング部１４、実行時間測定部２１として動作する。
【０１１４】
このように実施の形態２によれば、実際に測定した各新機能ｆ１〜ｆ６の実行時間に基づいて、動的スケジューリングテーブル５３を作成しているので、各スキャンでの処理時間を正確に平均化することが可能となる。これにより、実施の形態１のシーケンサＣＰＵ１よりも、効率良くスキャン処理の負荷分散を行なうことが可能となる。したがって、実施の形態１のシーケンサＣＰＵ１よりも効率良くスキャンタイムの遅延を防止できる。またプログラマブルコントローラによって制御される被制御装置の動作を、実施の形態１のシーケンサＣＰＵ１よりも安定させることが可能となる。
【０１１５】
また、実際に測定した各新機能ｆ１〜ｆ６の実行時間に基づいて、動的スケジューリングテーブル５３を再作成しているので、各スキャンでの処理時間が変動した場合であっても各スキャンでの処理時間を正確に平均化することが可能となる。
【産業上の利用可能性】
【０１１６】
以上のように、本発明に係るプログラマブルコントローラは、ＥＮＤ処理のスケジューリングに適している。
【図面の簡単な説明】
【０１１７】
【図１】実施の形態１に係るプログラマブルコントローラのシーケンサＣＰＵの構成を示す図である。
【図２】実施の形態１に係るシーケンサＣＰＵの動的スケジュール作成処理手順を示すフローチャートである。
【図３】動的スケジュール対象機能テーブルの構成を示す図である。
【図４】初期スケジューリングテーブルの構成を示す図である。
【図５】処理時間順テーブルの構成を示す図である。
【図６】動的スケジューリングテーブルの構成を示す図である。
【図７】スキャン処理の処理手順を示すフローチャートである。
【図８】シーケンサＣＰＵを有したユニットの構成を示す図である。
【図９】実施の形態２に係るプログラマブルコントローラのシーケンサＣＰＵの構成を示す図である。
【図１０】実施の形態２に係るシーケンサＣＰＵの動的スケジュール作成処理手順を示すフローチャートである。
【符号の説明】
【０１１８】
１，２  シーケンサＣＰＵ
１１  シーケンスプログラム実行部
１２  ＥＮＤ処理部
１３  機能テーブル記憶部
１４  動的スケジューリング部
２１  実行時間測定部
５０  動的スケジュール対象機能テーブル
５１  初期スケジューリングテーブル
５２  処理時間順テーブル
５３  動的スケジューリングテーブル
８０  シーケンサバス
９１  ＣＰＵ
９２  ＳＤＲＡＭ
９３  ＡＳＩＣ
９４  ＦＬＡＳＨメモリ
９５  ＢＵＳ
９６  ＭＣ
９７  ＵＳＢ
１００  ユニット
１０１  プログラマブルコントローラ
Ｔ１〜Ｔ６  新機能テーブル
【図１】
0004901775.tif 000002
【図２】
0004901775.tif 000003
【図３】
0004901775.tif 000004
【図４】
0004901775.tif 000005
【図５】
0004901775.tif 000006
【図６】
0004901775.tif 000007
【図７】
0004901775.tif 000008
【図８】
0004901775.tif 000009
【図９】
0004901775.tif 000010
【図１０】
0004901775.tif 000011