JP2007241556A - 複数の演算装置によるシーケンス処理実行装置 - Google Patents

複数の演算装置によるシーケンス処理実行装置 Download PDF

Info

Publication number
JP2007241556A
JP2007241556A JP2006061481A JP2006061481A JP2007241556A JP 2007241556 A JP2007241556 A JP 2007241556A JP 2006061481 A JP2006061481 A JP 2006061481A JP 2006061481 A JP2006061481 A JP 2006061481A JP 2007241556 A JP2007241556 A JP 2007241556A
Authority
JP
Japan
Prior art keywords
sequence
allocation table
processing
allocation
execution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006061481A
Other languages
English (en)
Other versions
JP4547469B2 (ja
Inventor
Teruaki Tanaka
輝明 田中
Tadashi Yoshimoto
忠司 吉本
Kanenaga Seto
謙修 瀬戸
Masahiro Fujita
昌宏 藤田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
University of Tokyo NUC
Original Assignee
Mitsubishi Electric Corp
University of Tokyo NUC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp, University of Tokyo NUC filed Critical Mitsubishi Electric Corp
Priority to JP2006061481A priority Critical patent/JP4547469B2/ja
Publication of JP2007241556A publication Critical patent/JP2007241556A/ja
Application granted granted Critical
Publication of JP4547469B2 publication Critical patent/JP4547469B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Programmable Controllers (AREA)

Abstract

【課題】負荷状況に変動が発生したら、その負荷状況に応じて複数の演算装置に対する処理の割り当てを最適化することができるシーケンス処理実行装置を得ることを目的とする。
【解決手段】共有メモリ30に保有されている複数の割当テーブルの中から、予め設定されたテーブル切替条件に合致する割当テーブルを選択する割当テーブル切替機能430,440を設け、その割当テーブル切替機能430,440により選択された割当テーブルにしたがってシーケンス制御用プログラムにおける個々のステップ/トランジションを演算装置10,20に割り当てる。
【選択図】図1

Description

この発明は、例えば、SFC(シーケンシャル・ファンクション・チャート)で記述されているシーケンス制御用プログラムにおける個々のシーケンス処理を並列に実行する複数の演算装置を搭載しているシーケンス処理実行装置に関するものである。
シーケンス制御用プログラム(IEC61131−3で定義されているSFCを用いて記述されているプログラム)における個々のシーケンス処理を複数の演算装置で並列に実行させる場合、シーケンス制御用プログラムにおける個々のシーケンス処理を複数の演算装置に割り当てる必要がある。
例えば、以下の特許文献1に開示されているシーケンス処理実行装置では、シーケンス制御用プログラムにおいて、明示的に並列に実行可能であるように表記されている部分(同時分岐)に対し、ステップ及びトランジションのシーケンスをグループとして識別し、各グループを複数の演算装置に割り当てるという手段を講じている。
グループの割り当てを決定する方法としては、グループに含まれているステップ及びトランジションの処理時間の中で、最大の処理時間をグループの処理時間に設定し、複数の演算装置が実行するグループの処理時間が均一になるように、複数のグループを複数の演算装置に割り当てる方法を採用している。
例えば、グループGR1〜GR4を演算装置A又は演算装置Bに割り当てる場合において、グループGR1〜GR4の処理時間が下記の通りであるとする。
ただし、演算装置Aには既にグループGR1が割り当てられており、演算装置Bには未だグループが割り当てられていないとする。
GR1=180μs
GR2=620μs
GR3=380μs
GR4=100μs
この場合、演算装置Bの処理時間が0であり、演算装置Bの処理時間が演算装置Aの処理時間(=180μs)より短いため、演算装置Bがグループの割当対象に選択され、グループGR2〜GR4の中で処理時間が最長のグループGR2が演算装置Bに割り当てられる。
これにより、演算装置Aの処理時間が180μsになり、演算装置Bの処理時間が620μsになる。
次に、演算装置Aの処理時間(=180μs)が演算装置Bの処理時間(=620μs)より短いため、演算装置Aがグループの割当対象に選択され、グループGR3〜GR4の中で処理時間が最長のグループGR3が演算装置Aに割り当てられる。
これにより、演算装置Aの処理時間が560μs(=180+380μs)になり、演算装置Bの処理時間が620μsになる。
次に、演算装置Aの処理時間(=560μs)が演算装置Bの処理時間(=620μs)より短いため、演算装置Aがグループの割当対象に選択され、グループGR4が演算装置Aに割り当てられる。
これにより、演算装置Aの処理時間が660μs(=180+380+100μs)になり、演算装置Bの処理時間が620μsになる。
特開平7−28390号公報(段落番号[0021]、図7)
従来のシーケンス処理実行装置は以上のように構成されているので、演算装置Aと演算装置Bが並列にシーケンス処理を実行する前に、演算装置Aと演算装置Bの処理時間が均一になるように、グループGR1〜GR4が固定的に割り当てられる。しかし、シーケンス制御用プログラムにおける個々のシーケンス処理を実行しているとき、例えば、負荷状況の変動が発生して、グループGR1〜GR4の処理時間が変動しても、演算装置A及び演算装置Bに対するグループGR1〜GR4の割り当てを変更することができず、演算装置A及び演算装置Bが効率的にシーケンス処理を実行することができなくなることがあるなどの課題があった。
この発明は上記のような課題を解決するためになされたもので、負荷状況に変動が発生したら、その負荷状況に応じて複数の演算装置に対するシーケンス処理の割り当てを最適化することができるシーケンス処理実行装置を得ることを目的とする。
この発明に係るシーケンス処理実行装置は、シーケンス処理実行時情報が切替条件に合致した割当テーブルを選択する割当テーブル切替手段を備え、複数の処理実行手段が割当テーブル切替手段により選択された割当テーブルで指定された割り当てにしたがってシーケンス制御用プログラムにおける個々のシーケンス処理を実行するようにしたものである。
この発明によれば、シーケンス処理実行時情報が切替条件に合致した割当テーブルを選択する割当テーブル切替手段を備え、複数の処理実行手段が割当テーブル切替手段により選択された割当テーブルで指定された割り当てにしたがってシーケンス制御用プログラムにおける個々のシーケンス処理を実行するように構成したので、負荷状況に変動が発生したら、変動後の負荷状況に応じて複数の処理実行手段に対するシーケンス処理の割り当てを最適化することができるようになり、その結果、シーケンス制御用プログラムの処理時間を短縮することができる効果がある。
実施の形態1.
図1はこの発明の実施の形態1によるシーケンス処理実行装置を示す構成図であり、図において、シーケンス処理実行装置1はプログラミング装置2及び外部機器3と接続されている。
プログラミング装置2はシーケンス処理実行装置1の利用者がプログラム開発を行う装置であり、シーケンス処理実行装置1にダウンロード又はアップロードするシーケンス制御用プログラムや各種データを生成する機能を有している。
また、プログラミング装置2は後述する割当テーブルやテーブル切替条件などを必要に応じてシーケンス処理実行装置1に与える一方、シーケンス処理実行装置1に保有されている割当テーブルやテーブル切替条件などを収集する機能を有している。
図1の例では、プログラミング装置2がシーケンス処理実行装置1の共有バス50に接続されているが、例えば、“RS232C”や“Ethernet(登録商標)”のような一般的な通信手段を用いてシーケンス処理実行装置1と接続するようにしてもよい。
外部機器3はシーケンス処理実行装置1の制御対象であり、シーケンス処理実行装置1はシーケンス処理の実行結果となる出力データを外部機器3に対して出力したり、シーケンス処理の入力となるデータを外部機器3から取り込んだりする。シーケンス処理実行装置1の内部では、入出力装置40を介して、外部機器3とデータ入出力を実施している。
シーケンス処理実行装置1は演算装置10,20、共有メモリ30、入出力装置40及び共有バス50から構成されている。
演算装置10,20はシーケンス制御用プログラムにおける個々のシーケンス処理を並列に実行することが可能な処理実行手段を保有し、例えばCPU11や専用回路13を搭載している(図2を参照)。
図1では、シーケンス処理実行装置1が演算装置を2個実装している例を示しているが、演算装置を3個以上実装してもよい。
共有メモリ30は例えばプログラミング装置2から取得した割当テーブル(ステップ割当テーブル、トランジション割当テーブル)やテーブル切替条件(ステップ割当テーブル切替条件、トランジション割当テーブル切替条件)などを保有しているメモリである。
入出力装置40は、シーケンス処理実行装置1が、その制御対象である外部機器3とデータ入出力を行うための機能を有しており、シーケンス処理実行装置1内部で演算した結果の外部への出力や、シーケンス処理実行装置1内部で演算を実行するために必要となるデータの外部からの入力を取り扱っている。
図19はこの発明の実施の形態1によるシーケンス処理実行装置1の構成ブロックである。このシーケンス処理実行装置1はシーケンス制御用プログラムにおける個々のシーケンス処理を実行する2つの処理実行手段A(501)と処理実行手段B(501)とを備える。各処理実行手段A,B(501)は、共有情報保有手段502が保持する次のスキャン周期で行うべきシーケンス処理の活性状態データに基づきシーケンス処理を実行する。ここで、入力データ、中間処理データの活性状態データのうち少なとも1のデータを含むデータをシーケンス処理実行時情報と呼ぶ。上述のシーケンス処理の実行において、シーケンス処理に伴う入力データを共有情報保有手段502から取得し、中間処理データを共有情報保有手段502ヘ出力する。また、処理実行手段A,B(501)は、シーケンス処理の実行結果によって、次のスキャン周期で行うべきシーケンス処理の活性状態を定める。以上は、各シーケンス処理を実行する処理実行手段501が割り当てられている場合の処理であるが、以下はシーケンス処理の処理実行手段501ヘの割り当てについて説明する。
割当テーブル保有手段503は、各処理実行手段501が実行するシーケンス処理の割り当てを記述した割当テーブルを複数個保有する。割当テーブル切替手段504は、共有情報保有手段502が保持するシーケンス処理実行時情報が、割当テーブルを選定するための切替条件に合致した割当テーブルを選択する。この選択のために、割当テーブル切替手段504は、切替条件と、切替条件を満たしたときに選定される割当テーブルの識別子とを記述したテーブル切替情報を保有する。
そして、処理実行手段501は、割当テーブル切替手段504により選択された割当テーブルで指定された割り当てに従って、シーケンス処理を実行する。
また、処理実行手段501は、シーケンス処理の実行時間を計測し、前記計測した実行時間を実行時間保有手段505に記憶する。割当テーブル更新手段506は、実行時間を基準にして、複数の処理実行手段に対する割当テーブル上のシーケンス処理の割り当てを更新するように構成することもできる。
図1では、図3にその詳細を示すように、演算装置10,20が、共有メモリ30に保有されている複数のステップ割当テーブル110(トランジション割当テーブル140)の中から、ステップ割当テーブル切替テーブル130(トランジション割当テーブル切替テーブル160)に保有されているステップ割当テーブル切替条件(トランジション割当テーブル切替条件)に合致するステップ割当テーブル(トランジション割当テーブル)を選択するステップ割当テーブル切替機能(トランジション割当テーブル切替機能)や、そのステップ割当テーブル(トランジション割当テーブル)にしたがってシーケンス制御用プログラムにおける個々のシーケンス処理であるステップ(トランジション)を自己に割り当てるステップ/トランジション実行機能などを備えていることを想定しているが、ステップ割当テーブル切替機能が、シーケンス処理実行装置1の内部において、明示していない管理装置上で実現され、本管理装置が共有バス50に接続されるような形態も存在する。
図2はこの発明の実施の形態1によるシーケンス処理実行装置1の演算装置10を示す構成図である。図2では演算装置10の内部構成を示しているが、演算装置20の内部構成は演算装置10の内部構成と同じである。
図2において、CPU11はソフトウェアで実現されているシーケンス処理を実行する処理実行部である。
メモリ12はCPU11が実行するプログラムや被演算データや、専用回路13が使用する被演算データ等の各種情報を保持している。
専用回路13は特定シーケンス処理を実行する処理実行部であり、専用回路13としては、例えば、ASSP(Application Specific Standard Product)やASIC(Application Specific IC)のような形態も存在すれば、例えば、FPGAのような任意の回路を実現可能な形態も存在する。また、例えば、FPGA上に、ある特定シーケンス処理のみを実行可能な回路を実現するという手段も存在する。
計時用機能部14はCPU11及び専用回路13により実行されるシーケンス処理に対する処理時間を計測する機能を備えている。
図2では、CPU11と専用回路13が共に存在する構成を示しているが、CPU11を含まない構成や、専用回路13を含まない構成も考えられ、CPU11又は専用回路13のどちらか一方が存在していればよい。
また、図2では、メモリ12がCPU11や専用回路13とは独立した構成要素である例を示しているが、メモリ12がCPU11又は専用回路13の内部に存在する構成や、CPU11及び専用回路13の双方の内部に存在する構成も考えられる。
また、メモリ12が図1の共有メモリ30上に、各々の演算装置10,20がメモリ領域を予約して、対応するメモリ領域として使用する構成も存在する。
さらに、図2では、計時用機能部14がCPU11や専用回路13とは独立した構成要素である例を示しているが、計時用機能部14がCPU11や専用回路13の内部に存在する構成も存在する。
図3はこの発明の実施の形態1によるシーケンス処理実行装置1の演算装置10が保有している機能を示す説明図である。図3では演算装置10が保有している機能を示しているが、演算装置20が保有している機能は演算装置10が保有している機能と同じである。
演算装置10,20は共有メモリ30にアクセスするための共有メモリアクセス機能400、複数のステップ割当テーブルの中からステップ割当テーブル切替条件に合致するステップ割当テーブルを選択するステップ割当テーブル切替機能430、複数のトランジション割当テーブルの中からトランジション割当テーブル切替条件に合致するトランジション割当テーブルを選択するトランジション割当テーブル切替機能440、ステップ割当テーブルを更新するステップ割当更新機能450、トランジション割当テーブルを更新するトランジション割当更新機能460を備えている。
また、演算装置10,20はステップ割当テーブル切替機能430およびトランジション割当テーブル切替機能440が選択した割当テーブル上の割り当てにしたがってシーケンス制御プログラムにおける個々のステップおよびトランジションを実行するためのステップ/トランジション実行機能410、他の演算装置20,10と同期を図る装置間同期機能420を備えている。
なお、演算装置10,20が保有している機能は、CPU11又は専用回路13で実行される。あるいは、CPU11及び専用回路13の双方で実行される。
図4はこの発明の実施の形態1によるシーケンス処理実行装置1の共有メモリ30が保有している情報を示す説明図である。
共有メモリ30は、どのステップを次の処理開始のタイミングで実行するかを指定する活性ステップ情報100、どのステップをどの演算装置で実行するかを指定する複数のステップ割当テーブル110、ステップ割当テーブル110における特定のテーブルID(テーブルの識別子)を保持しているステップ割当テーブル参照変数120、ステップ割当テーブル110の中から割当テーブルを選択するための切替条件と、切替条件に対応する割当テーブルの識別子(テーブルID)との組を複数保有するステップ割当テーブル切替テーブル130を保有している。
また、共有メモリ30は、どのトランジションをどの演算装置で実行するかを指定する複数のトランジション割当テーブル140、トランジション割当テーブル140における特定のテーブルIDを保持しているトランジション割当テーブル参照変数150、トランジション割当テーブル140の中から割当テーブルを選択するための切替条件と、切替条件に対応する割当テーブルの識別子(テーブルID)との組を複数保有するトランジション割当テーブル切替テーブル160を保有している。
なお、ここでステップ割当テーブル切替テーブル130とトランジション割当テーブル切替テーブル160は、テーブル切替情報である。ステップ割当テーブル110とトランジション割当テーブル140は、割当テーブル保有手段503で保有され、この手段は共有メモリ30で実現される。
また、共有メモリ30は、ステップの実行時間を示すステップ実行時間情報200、トランジションの実行時間を示すトランジション実行時間情報210、どのような実行時間情報を保持するかを指定するプロファイル制御用パラメータ300、どのようにシーケンス処理を複数の演算装置に割当てるかの割当方式を示す割当方式決定用パラメータ310、ステップ実行可能装置を指定するステップ実行可能装置指定フラグ320(割当可否情報)、トランジション実行可能装置を指定するトランジション実行可能装置指定フラグ330(割当可否情報)、更新処理の実行タイミングを指定する更新処理実行タイミング指定パラメータ340を保有している。ステップ実行時間情報200とトランジション実行時間情報210は、実行時間保有手段505で保有され、この手段は共有メモリ30で実現される。
次に動作について説明する。
シーケンス処理実行装置1がシーケンス制御用プログラムを実行するに先立って、シーケンス処理実行装置1の利用者がプログラミング装置2を使用して、シーケンス制御用プログラムを作成する。
シーケンス制御用プログラムは、図5に示すように、IEC61131−3規格で規定されているシーケンス制御向けのプログラミング言語SFC(シーケンシャル・ファンクション・チャート)を使用したプログラムである。
図5のSFCプログラムについて簡単に説明する。
SFCプログラムは、処理を実行する「ステップ」と、条件の成立によりステップの遷移を制御する「トランジション」という概念で、シーケンス処理記述を行う構成となっている。
図5において、接頭文字として“S”が付加されているブロックが「ステップ」を表しており、S1〜S11までの11個の「ステップ」が存在している。
ステップS1〜S11には、アクションクオリファイヤとアクションブロックが関連付けられている。
アクションブロックは、実際に行う処理の中身をIL(インストラクションリスト)、LD(ラダーダイヤグラム)、FB(ファンクションブロック)や、ST(ストラクチャードテキスト)などのような高級プログラミング言語で記述されたブロックである。
図5では、例えば、ステップS1に対してアクションブロックa1が関連付けられており、ステップS2に対してアクションブロックa2が関連付けられている。
また、各アクションブロックに付随する形で、アクションクオリファイヤが存在する。
アクションクオリファイヤは、ステップSに付随するアクションの実行条件が定義されたものであり、IEC61131−3規格では、例えば、下記に示すような複数のアクションクオリファイヤが定義されている。
N 非保持:そのステップが活性の間、継続実行される。
P パルス:そのステップが活性に変化した時、パルス的に1回だけ実行される。
アクションクオリファイヤのグラフィカルな表現としては、ステップのブロックと、アクションブロックを接続する部分のブロックとして表される。
図5では、ステップS1に付随するアクションa1には、アクションクオリファイヤとして“N”が指定され、ステップS11に付随するアクションa11には、アクションクオリファイヤとして“P”が指定されている。
また、ステップとステップを接続する線の途中の部分にある横線が「トランジション」を表している。
図5では、接頭文字として“t”が使用されている部分が「トランジション」を示しており、t1〜t8までの8個のトランジションが存在している。
トランジションt1〜t8には、BOOL型変数や、上述したIL,LD,STなどのプログラム言語で真偽値を返す処理が記述されており、条件が成立したときに(結果が真のとき)、その次のステップに遷移することを示している。
図5では、例えば、ステップS2において、トランジションt2が成立すればステップS5に遷移を行い、ステップS3において、トランジションt3が成立すればステップS6に遷移を行うことを示している。
なお、図5では、説明の簡単化のため、各ステップに対して、各々一つずつのアクションしか記述していないが、各ステップに対して、複数のアクションを関連付けることも可能である。
また、図5で、ステップS1を記述したブロックの両脇が二重線になっているが、これはステップS1がイニシャルステップであることを示している。イニシャルステップとは、SFCプログラムの実行を開始するステップを示している。したがって、図5のSFCプログラムにおいては、ステップS1から実行が開始される。
シーケンス処理実行装置1の利用者は、このようなプログラミング記述で表されるシーケンス制御用プログラムをプログラミング装置2上のプログラミング環境を使用して作成する。
プログラミング装置2は、シーケンス制御用プログラムを作成すると、そのシーケンス制御用プログラムをシーケンス処理実行装置1上で実行可能なプログラムに変換する。
即ち、プログラミング装置2は、シーケンス制御用プログラムをシーケンス処理実行装置1上で実行可能なプログラムに変換するプログラム変換機能を実装しており、シーケンス処理実行装置1に搭載されている演算装置10,20の種別情報を参照して、シーケンス制御用プログラムを変換する。ここで、種別情報とは、演算装置10、20が保有しているCPU11や専用回路13等がどのようなものであるかを特定するための情報である。
プログラミング装置2における種別情報の獲得の仕方としては、シーケンス処理実行装置1の種類毎に種別情報が確定している場合に、その情報をそのままつかう場合もあれば、シーケンス処理実行装置1から種別情報をアップロードするようにしてもよい。
プログラミング装置2により作成されたSFCプログラムにおいて、演算装置10,20で実行される、いわゆるシーケンス処理の内容は、SFCプログラム上のアクション部に記述された処理内容と、トランジション部に記述された処理内容である。
プログラミング装置2では、SFCプログラム上のアクション部に記述された内容及びトランジション部に記述された内容を、以下に示すような方法で、実行可能なプログラムに変換する。
(1)演算装置10,20がCPU11のみで構成されている場合、SFCプログラムを次のように変換する。
CPU11は一般的なCPUであるため、プログラミング装置2は、作成したSFCプログラムをコンパイルして、CPU11上で直接実行可能なオブジェクトコードに変換する。
ただし、CPU11が、何かしらの中間コードをインタプリットして実行する形態のインタプリタ方式を採用している場合には、対応する中間コードに変換する。
(2)演算装置10,20が専用回路13のみで構成されている場合、SFCプログラムを次のように変換する。
ここでは、専用回路13が、図9に示すように、フィルタ回路1100と、コンフィグレーションデータ1000と、実行制御回路1200とから構成されているものとして説明する。ただし、図9は専用回路13の構成例であり、専用回路13の構成が図9の構成例に限定されるものではない。
フィルタ回路1100には、コンフィグレーションデータ1000(フィルタ回路1100の内部処理の実行に必要となる設定データ)が付加されている。
コンフィグレーションデータ1000は、16進数で示している各アドレス(例えば、左側のh00,h04など)に対応するデータ領域を定義している。
図10はフィルタ回路1100が実行する処理内容(アルゴリズムのリスト)を示す説明図である。
図10の処理内容を、フィルタ回路1100の外部入出力信号(例えば、start,doneなど、フィルタ回路1100に入出力される信号)と照らし合わせながら簡単に説明する。
フィルタ回路1100では、クロック信号(clock)が入力される度に、start信号がactive(High状態)になっているか否かを確認する。
フィルタ回路1100は、start信号が“active”であれば、内部のforループの実行を開始する。
最初に、フィルタ回路1100は、コンフィグレーションデータ1000のアドレスh08に格納されている“IO_NUM”を取得する。
内部変数iが、“IO_NUM”の値より小さければ、本forループを“IO_NUM”の回数だけ実行する。
内部変数iに関連するforループ部の実行が開始されると、内部変数SUMが“0”にクリアされる。
その次に、フィルタ回路1100は、コンフィグレーションデータ1000のアドレスh0Cに格納されている“FLT_NUM”を取得する。
内部変数jが、“FLT_NUM”の値より小さければ、本forループを“FLT_NUM”の回数だけ実行する。本forループでは、まず、コンフィグレーションデータ1000のアドレスh00に格納されている“IN_ADDR”に対して、内部変数iと内部変数jを加算した値をアドレスとして生成し、そのアドレスに対応するデータ値をフィルタ回路1100の外部から読み込む(図10のREAD部分)。その際、図9のフィルタ回路1100からは、ADDR[31:0]信号に該当するアドレス値が出力されると共に、read_req信号がHighになる。
このread_req信号は、実行制御回路1200を介して、専用回路13の外部にアクセスされ、該当アドレスのデータ値が、IO_DATA[31:0]を介してフィルタ回路1100に取り込まれ、内部変数data_inに格納される。
また、フィルタ回路1100の内部では、コンフィグレーションデータ1000上に保持されているフィルタ係数値(w0,w1,w2など)を読み取り、weight変数に取り込む(図10のWEIGHT_VALUE部分)。
WEIGHT_VALUE(j)では、指定された内部変数jの値が“0”であればw0の値、内部変数jの値が“1”であればw1の値を順次取り込む。その後、data_inとweightの値を掛け合わせ、その結果を内部変数SUMに追加加算する。
FLT_NUM回分のループ処理を完了した後、図10のWRITE部で、OUT_ADDR+iの値に対応するアドレスに“SUM”の値を書き込む。上記処理を内部変数iに対応するforループの“IO_NUM”の回数分だけ実施した後、done信号をHighにして、再度、start信号がHighになるのを待つ。
このように、フィルタ回路1100ではフィルタ処理が実施される。回路の挙動として、クロック信号(clock)のエッジに同期した形で一般的に処理が実行されるが、本説明では、図10中の、どの処理タイミングがクロックエッジに同期しているかの詳細な説明は省略する。
図10に示されるような処理内容を持つフィルタ回路1100において、実現可能であるSFCプログラム中の処理記述がなされている場合、実行可能なプログラムに変換する方法としては、対応するコンフィグレーションデータ1000に設定される適切な値を持つコンフィグレーションデータを生成することである。
例えば、利用者により記述されたSFCプログラムの処理(アクション)において、図10のプログラムで、下記の(A)ように設定すれば(右辺の数値の接頭文字“d”は、10進数であることを示している)、処理が実現可能なコンフィグレーションデータ1000は、下記の(B)のように生成される。
(A)IN_ADDR = h0050_0000;
OUT_ADDR = h0050_0800;
IO_NUM = d1024
FLT_NUM = d11
w0 = d512
w1 = d256
w2 = d128
w4 = d64
w5 = d32
w6 = d16
w7 = d8
w8 = d4
w9 = d2
w10 = d1
(B)h00: h0050_0000
h04: h0050_0800
h08: d1024
h0c: d11
h10: d512
h14: d256
h18: d128
h1c: d64
h20: d32
h24: d16
h28: d8
h2c: d4
h30: d2
h34: d1
本例では、専用回路13に対して実行可能なプログラムを生成する手段として、特定処理に対応する処理回路が既に実現されており、その演算に必要となる各種の被演算データをコンフィグレーションデータ1000として設定することで、利用者が指定した処理を専用回路13で実現する仕組みを説明したが、他の実行可能プログラムの生成方式としては、例えば、C言語等の高級プログラミング言語で記述された処理コードから専用回路13の記述を生成するようなツール(いわゆる高位合成ツール)を用いて回路を生成し、例えば、FPGAで実現されている専用回路13の領域に実装するという手段も考えられる。その場合、プログラムとは、いわゆるFPGAでのコンフィグレーションデータである。
上記の例では、CPU11又は専用回路13に対して、SFCプログラムから実行可能なプログラムを生成する手段を説明したが、CPU11及び専用回路13を共に保有する演算装置においては、CPU11及び専用回路13の両者に対するプログラム生成処理が行われる。
このように生成された実行可能プログラムは、プログラミング装置2から共有バス50を介して、シーケンス処理実行装置1に送られ、シーケンス処理実行装置1の演算装置10,20上にロードされる。
次に、利用者により記述されたSFCプログラムをシーケンス処理実行装置1上で実行させるに際して、どのステップの処理と、どのトランジションの処理を、どの演算装置で実行させるかの割当機能と割当データについて説明する。
これ以降の説明においては、説明の簡単化のため、割当単位をステップとして記述するが、例えば、アクション毎に割当を実現するなど、より細かな粒度に拡張することは容易である。
シーケンス処理実行装置1が搭載している共有メモリ30は、図4に示すように、どのステップを次の処理開始のタイミングで実行するかを指定する活性ステップ情報100が存在する。
図11は活性ステップ情報100の一例を示す説明図であり、図11の一番左の列は、どのステップに関する情報であるかを示しており、その次の「X」の列は、今回どのステップが活性状態(アクティブ)であるかを示している。「X」の表記は、IEC61131−3のステップの活性状態X(S1.X等で変数としてシーケンス処理プログラム中から参照可能)に対応している。IEC61131−3の定義では、ステップは活性/非活性の2つの状態を保有している。ここでは活性の場合、前記Xが“1”であり、非活性の場合、前記Xが“0”となるような、論理変数として表現されているとする。なお、活性/非活性を表すXの具体的な値のことを、活性状態データと呼称する。活性ステップ状態100では、全てのステップに対する、この活性状態データが保持されている。
その次の「Xnext」の列は、次の実行のタイミングにおいて、各ステップが活性かどうか(実行するかどうか)を示している。
また、その次の「P」の列は、アクションクオリファイヤPに対応する情報を保持している列であり、次の実行タイミングにおいて、アクションクオリファイヤPで指定されたアクションを実行するか否かを判断する情報を保持している。
SFCプログラムを最初に実行する場合においては、どのステップがイニシャルステップであるかを指定する必要があるが、図5のSFCプログラムでは、イニシャルステップとしてステップS1が指定されているため、このようなSFCプログラムに対応する活性ステップ情報100では、ステップS1の「X」と「P」が“1”で、それ以外の全てが“0”に初期化される。
この初期の活性ステップ情報100も、先の実行可能プログラムと同様に、プログラミング装置2からシーケンス処理実行装置1の共有メモリ30にロードされる。
また、シーケンス処理実行装置1が搭載している共有メモリ30は、図4に示すように、どのステップをどの演算装置で実行するかを指定するステップ割当テーブル110と、どのトランジションをどの演算装置で実行するかを指定するトランジション割当テーブル140が存在する。
図12はステップ割当テーブル110の一例を示す説明図であり、図12の例では、ステップ割当テーブル110が4つのテーブル(A)〜(D)から構成されている。
ステップ割当テーブル110のテーブル(A)〜(D)は、テーブルを区別するテーブルの識別子であるテーブルID(ID:TABLE0、ID:TABLE1、ID:TABLE2、ID:TABLE3)と、どのステップ(S1〜S11)をどの演算装置(図12では、PE1が演算装置10を示し、PE2が演算装置20を示している)で実行するかを示す情報が含まれている。
テーブル(A)〜(D)の行数は可変であり、また必ずしも各テーブルが、SFCプログラム中の全てのステップに関する演算装置の指定を含む必要はない。
トランジション割当テーブル140は、その詳細を図示してはいないが、図12のステップ割当テーブル110と同様な構成を取っている。
共有メモリ30は、ステップ割当テーブル110とトランジション割当テーブル140に各々対応して、ステップ割当テーブル参照変数120とトランジション割当テーブル参照変数150が存在している。両変数は、各々、ステップ割当テーブル110とトランジション割当テーブル140に存在する特定のテーブルへのテーブルIDを一つ保持しており、本変数が指し示す特定の割当テーブル上に指定されている演算装置への割り当てにしたがって、各シーケンス処理が対応する演算装置上で実行される。
少なくとも、シーケンス処理実行装置1が、SFCプログラムで記述されたシーケンス処理を開始する際(本例では、イニシャルステップS1の実行を開始する際)には、ステップ割当テーブル110の内部には一つのテーブルと、トランジション割当テーブル140の内部には一つのテーブルと、各々のテーブルに対応したテーブルIDが、ステップ割当テーブル参照変数120とトランジション割当テーブル参照変数150に設定されている必要がある。そのため、本例における説明では、図12に示されているテーブル(A)がステップ割当テーブル110に設定され、テーブル(A)に対応するテーブルIDである“TABLE0”がステップ割当テーブル参照変数120に設定されるとする。また、明示していないが、トランジションに対しても同様な設定がなされるとする。
次に、演算装置10,20上で、SFCプログラムがどのように実行されるかについて説明する。ここで説明する機能は、図3におけるステップ/トランジション実行機能410が保有する機能であり、演算装置10,20のCPU11又は専用回路13により実行される。
CPU11により実行される場合には、CPU上で実行されるシステムソフトウェアが本機能を保有し、専用回路13上で実行される場合には、図9の実行制御回路1200が本機能を保有している。
図6は演算装置10,20の処理実行手段のフローチャートを示している。
ただし、図6のフローチャートでは、“ステップ”をSFCプログラム上の“ステップ”と区別するため、ステップの符号として“ST”を付している。
図6において、ステップST200,ST300,ST400,ST500は、各々の内部にフローチャートを持つように階層化されている。
即ち、ST200の詳細な処理内容は図7、ST300の詳細な処理内容は図8、ST400の詳細な処理内容は図7、ST500の詳細な処理内容は図8に示している。
最初に、演算装置10,20は、処理の開始要求が発生しているか否かを確認する(ステップST100)。処理の開始要求は、例えば、周期的に発生するシグナル信号によって演算装置10,20に同時に通知される。
一般的に、シーケンス制御プログラムを実行するシーケンス処理実行装置1は、このように一定の周期でシーケンス処理が実行される。この一定周期は、一般的にスキャン周期と呼ばれる。
演算装置10,20は、処理の開始要求を受けると、自装置に割り当てられたステップの実行を開始する(ステップST200)。
即ち、演算装置10,20は、共有メモリ30に保有されている活性ステップ情報100(図11を参照)を参照して、全ての行について評価を実施したか否かを判定する(図7のステップST810)。
演算装置10,20は、全ての行について評価を実施していなければ、活性ステップ情報100から一つの行を取得する(ステップST820)。
演算装置10,20は、一つの行を取得すると、その行の列「X」が“1”であるか否かを調べることにより、その行のステップがアクティブか否かを判断する(ステップST830)。
演算装置10,20は、その行のステップがアクティブでなければ、ステップST810の処理に戻るが、その行のステップがアクティブであれば、共有メモリ30に保有されている複数のステップ割当テーブル110の中から、今回使用するステップ割当テーブルをステップ割当テーブル参照変数120に基づいて特定し、特定したステップ割当テーブルから該当するSFCステップの割当情報を取得する(ステップST840)。
演算装置10,20は、該当するSFCステップの割当情報を取得すると、その割当情報を参照して、当該ステップが、自演算装置に割り当てられているステップか否かを判定する(ステップST850)。
演算装置10,20は、自演算装置に割り当てられていないステップであれば、ステップST810の処理に戻るが、自演算装置に割り当てられているステップであれば、そのステップに対応する処理、具体的には、そのステップに関連付けられているアクションを実行し(ステップST860)、ステップST810の処理に移行する。
演算装置10,20は、自演算装置に割り当てられている全てのステップの処理を実行すると、他の演算装置20,10との同期を図る処理を実行する(図6のステップST300)。
即ち、演算装置10,20は、自演算装置に割り当てられている全てのステップの処理を実行すると、全ての処理が完了した旨を示す処理完了通知を他の演算装置20,10に送信する(図8のステップST910)。
演算装置10,20は、処理完了通知を他の演算装置20,10に送信すると、他の演算装置20,10との同期を図るため、他の演算装置20,10から送信される処理完了通知を受信するまで待機し、他の演算装置20,10から送信される処理完了通知を受信すると(ステップST920)、同期処理を終了する。
演算装置10,20は、他の演算装置20,10との同期を図ると、自装置に割り当てられたトランジションの実行を開始する(ステップST400)。
自装置に割り当てられたトランジションの実行は、ステップST200におけるSFCステップの実行とほぼ同様であり、図7のフローチャートにしたがって動作する。
自装置に割り当てられたトランジションを実行する場合、共有メモリ30に保有されているトランジション割当テーブル140の中から、今回使用するトランジション割当テーブルをトランジション割当テーブル参照変数150に基づいて特定し、特定したトランジション割当テーブル140から該当するトランジションの割当情報を取得する(ステップST840)。
演算装置10,20は、該当するトランジションの割当情報を取得すると、その割当情報を参照して、当該トランジションが、自演算装置に割り当てられているトランジションか否かを判定する(ステップST850)。
演算装置10,20は、自演算装置に割り当てられていないトランジションであれば、ステップST810の処理に戻るが、自演算装置に割り当てられているトランジションであれば、そのトランジションに対応する処理を実行し(ステップST860)、ステップST810の処理に移行する。
なお、各トランジション処理の演算結果(真偽値)は、活性ステップ情報100のXnext列に設定される(図11を参照)。
演算装置10,20は、自演算装置に割り当てられている全てのトランジションの処理を実行すると、ステップST300の処理と同様に、他の演算装置20,10との同期を図る処理を実行する(図6のステップST500)。
演算装置10,20は、他の演算装置20,10との同期を図ると、活性ステップ情報100の更新を実行する(ステップST600)。
活性ステップ情報100の更新は、図11のテーブルに対して、次活性状態を示すXnext列の値をX列に書き写し、例えば、P列のようなアクションクオリファイヤの情報を設定する処理である。
例えば、P列の値は、「〜X ∧ Xnext」の論理式で計算される(〜は値の反転を表し、∧は論理積を表す。今回のXが非活性で、次回のXnextが活性ならばPは真(1)になる)。
ステップST600の処理を、どの演算装置が実行するかは、予め設定されている特定の演算装置が実施してもよいし、任意の演算装置に処理を割り振るようにしてもよい。
次に、シーケンス処理実行装置1が実行するシーケンス処理の負荷状況が変動したとき、複数の演算装置に割り当てるシーケンス処理を動的に変更し、処理の割り当てを最適化する手段について説明する。
シーケンス処理実行装置1で実行されている各ステップ(厳密にはアクション)の実行時間は、常に一定とは限らない。
各アクションの処理内容が、例えば、図15に示すように、条件分岐を多用して記述されている場合、入力データである外部入力変数X0が真偽のどちらであるか、中間処理データである内部変数M0が真偽のどちらであるかにより、実行する処理ブロックが異なり(処理ブロック1、処理ブロック2又は処理ブロック3を実行する)、各処理ブロックの実行時間が大きく異なる場合、同じアクションではあるが、その実行時間は異なるものとなる。
外部入力変数X0や内部変数M0の値が、外部要因によって変更される場合や、ある任意の時間、処理を実行した結果として値が変動する場合には、その変動に応じて、各処理が実行される演算装置の割当を動的に変更することが、処理割当の最適性から望まれる。
また、SFCプログラムの作成時に先見的に分かる処理分岐(例えば、外部入力変数X0が偽であれば、処理ブロック3が実行される)であれば、その分岐に対応する割当テーブルを用意しておくことが割当の即応性から望まれる。
この実施の形態1では、シーケンス処理実行装置1におけるステップ割当テーブル切替機能430及びトランジション割当テーブル切替機能440が、実行するシーケンス処理の実行時間や変数値の計測結果に基づいて、動的な割当の変更や先見的な割当の変更を行う。
以下、ステップ割当テーブル切替機能430及びトランジション割当テーブル切替機能440の動作について説明する。
最初に、先見的にプログラミング装置2上で実施する割当テーブルの設定及び切替条件指定について説明する。
図5のSFCプログラムでは、先見的にステップS2とステップS3とステップS4が同時にアクティブになることが自明である。
このステップの組み合せにおけるシーケンス処理が実行されているとき、ステップS3およびステップS4の処理時間が図14の通りであるとする。また、ステップS2については、図14での処理時間とは異なり、アクションa2の処理内容が図15であり、図15における各処理ブロックの処理時間が図16の通りであるとする。
この場合、ステップ割当テーブル切替テーブル130に対応した図である図13の1行目から3行目に示すような割当テーブルの切替条件が設定される。
〜X0
X0 ∧ M0
X0 ∧ 〜M0
また、上記の3つの切替条件に対して、各々、割当テーブルおよび対応する割当テーブルの識別子が準備される。
TABLE1
TABLE2
TABLE3
ここで、“〜”は値の反転を表し、∧は論理積を表している。
テーブルIDであるTABLE1,TABLE2,TABLE3が各々指し示す割当テーブル(B)(C)(D)に対して、演算装置10及び演算装置20に最適なシーケンス処理を割り当てるための戦略は様々存在するが、演算装置10,20に各々割り当てたシーケンス処理の合計処理時間の最大が最も小さくなる方式を例にとると、TABLE1に対する割当は、次のようになる。
ステップS2 → 演算装置10
ステップS3 → 演算装置20
ステップS4 → 演算装置20
このとき、演算装置10,20のシーケンス処理の合計実行時間は、次のようになる。
演算装置10 → 200μs
演算装置20 → 320μs
同様に、TABLE2に対する割当は、次のようになる。
ステップS2 → 演算装置20
ステップS3 → 演算装置20
ステップS4 → 演算装置10
このとき、演算装置10,20のシーケンス処理の合計実行時間は、次のようになる。
演算装置10 → 160μs
演算装置20 → 175μs
同様に、TABLE3に対する割当は、次のようになる。
ステップS2 → 演算装置20
ステップS3 → 演算装置20
ステップS4 → 演算装置10
このとき、演算装置10,20のシーケンス処理の合計実行時間は、次のようになる。
演算装置10 → 160μs
演算装置20 → 240μs
この場合の設定値は、図12の表(B)(C)(D)中に記載した演算装置割当に対応している。また、テーブル値の設定と共に、ステップ割当テーブルの切替条件と対応するテーブルIDも図13のように設定し、シーケンス処理実行装置1の共有メモリ30上に存在するステップ割当テーブル切替テーブル130に設定する。
シーケンス処理実行装置1のステップ割当テーブル切替機能430は、共有メモリ30に設定されているステップ割当テーブル切替テーブル130、即ち、図13におけるテーブルの切替条件に合致したならば、利用者により指定されたテーブルIDを共有メモリ30に保有されているステップ割当テーブル参照変数120に設定する。
ここで切替条件に合致するとは、ステップ割当テーブル切替テーブル130に設定されている切替条件に対して、共有メモリ30上に存在している、その外部入力変数X0や内部変数M0や、ステップの活性状態に対応するデータを読み出し、切替条件に設定されている式を評価し、結果として真偽値を求め、その結果が真であるということである。なお、これら切替条件への入力データとして評価される、入力データ、中間処理データ、ステップの活性状態のうち、少なくとも1以上のデータを、シーケンス処理実行時情報と呼称する。シーケンス処理実行時情報は、共有情報保有手段502により保有され、この手段は共有メモリ30で実現される。
これにより、利用者により指定された任意の条件にしたがって使用する割当テーブルを切り替えることが可能になる。
ここでは、ステップの割当について説明を行ったが、トランジションに対しても同様な機能を実現するトランジション割当テーブル切替機能440及びトランジション割当テーブル切替テーブル160が存在する。
また、シーケンス処理実行装置1のステップ割当テーブル切替機能430は、図13のTABLE4及びTABLE5を指定する行の条件が成立したとき、すなわち条件中に含まれる同一スキャン周期における各ステップの組合せを示す活性状態の論理式が真となったとき、テーブルを切り替えることも可能である。
また、図13の“other”で示した行のように、成立条件が存在しない場合には、標準で使用されるテーブル(TABLE0)を設定することが可能である。
また、ステップ割当テーブル切替テーブル130及びトランジション割当テーブル切替テーブル160に設定する切替条件としては、単純な論理式のみではなく、様々な算術演算結果の比較による真偽値のような複雑な演算も定義可能である。
また、切替条件として、単純な論理式や先述の複雑な演算や、先述の同一スキャン周期における各ステップの組合せを示す活性状態の論理式の組合せの論理式も定義可能である。
また、ステップ割当テーブル切替テーブル130及びトランジション割当テーブル切替テーブル160で設定されている切替条件の各々は、独立した条件である必要はなく、例えば、図13の上の行ほど、優先順位が高い条件として設定すれば、高い優先順位の条件が真となれば、対応するテーブルへの切り替えを発生させることも可能である。
次に、演算装置10,20に対するシーケンス処理の動的な割当変更について説明する。
シーケンス処理実行装置1のステップ割当更新機能450は、処理実行手段が計測した実行中のステップの処理時間に対し、その処理時間に基づいて割当を更新する機能を提供している。
演算装置10,20は、図2に示すように、タイマ等で実現された計時用機能部14が存在しており、ステップおよびトランジションの実行時間を計測することが可能である。
また、共有メモリ30には、図4に示すように、ステップの実行時間を保持するステップ実行時間情報200と、トランジションの実行時間を保持するトランジション実行時間情報210とが存在している。
即ち、ステップ実行時間情報200は、図14に示すように、演算装置10,20が各ステップの処理を実行した場合の実行時間を保持するものであり、演算装置10,20における処理実行手段が各ステップの処理を実行する度に、その処理時間を計測して、図14の対応する欄に実行時間値を格納する。
ここでは、各ステップに対する演算装置10,20の処理時間に対し、1つのサンプル値だけ保持する例を示したが、例えば、そのサンプル値が、時系列での処理時間の最大値であってもよいし、平均値であってもよいし、その他の一般的な統計量であってもよい。
また、保持するサンプル数が1つだけでなくても、過去何回かの実行時間の系列であっても構わない。どのような情報を保持しておくかを指定する設定が、共有メモリ30上にプロファイル制御用パラメータ300として存在している。
プロファイル制御用パラメータ300のパラメータ値を変更すれば、上記の様々な方式のサンプル値が取得可能である。なお、トランジション実行時間情報210も、上記のステップ実行時間情報200の説明と同様である。
このようにステップ実行時間情報200及びトランジション実行時間情報210に取得されたデータから、ステップ割当テーブル110及びトランジション割当テーブル140に対して、最適な割当を計算し、適切なテーブルに対して割当の更新を行う処理をステップ割当更新機能450が実施する。最適な割当とは、各演算装置に割り当てられ、各々実行される複数のシーケンス処理の処理時間が均等になるような割当のことである。
その均等となるような割当を決定する処理には、様々な方法が存在し、共有メモリ30上に存在する割当方式決定用パラメータ310により割当方式の切替が可能である。
例えば割当決定のために幾らでも時間をかけても良い場合に、均等化される処理時間の最小値を求める手段もあれば、ある限られた時間の中で決定するために極小値を求める手段も存在する。
以下、幾つかの割当方式について説明する。
[割当方式1]
ある時点における全てのステップ/トランジションの処理時間から、全ての割当テーブル上に存在するステップ/トランジションの組み合せに対し、演算装置10,20で実行される処理時間の最大値が最も小さくなるような割当を計算し、計算が完了した時点で、全ての割当テーブルの設定を変更する。変更完了後、再度計算を開始するか、何スキャン周期後から計算を開始する。
[割当方式2]
現在使用中の割当テーブルに存在するステップ/トランジションの組み合せに対し、演算装置10,20で実行される処理時間の最大値が最も小さくなるような割当を計算し、計算が完了した時点で、使用中の割当テーブルの設定を変更する。
計算が完了するまでの間に割当テーブルが切り替わった場合には、計算を中断して切り替わった割当テーブルに対して同様の処理を開始するか、もしくは、切り替わった場合でも現在計算中の割当テーブルを把握しておき、計算完了後、その割当テーブルに対して設定を変更する。変更完了後、直ぐに計算を再度開始するか、何周期後から計算を開始する。
[割当方式3]
次のスキャン周期で実行されるステップの組み合せと、次のスキャン周期で使用される割当テーブルが決定した後で、該当するステップの組み合せに対し、演算装置10,20で実行される処理時間の最大値が最も小さくなるような割当を計算し、計算が完了した時点で、該当する割当テーブルの設定を変更する。
このような機能をステップ割当更新機能450とトランジション割当更新機能460が有している。
また、上記の割当方式の計算においては、ステップ実行可能装置指定フラグ320及びトランジション実行可能装置指定フラグ330が参照される。
これらは、任意のステップもしくはトランジションが、任意の演算装置上で実行可能か否かを示すフラグが、その組み合せだけ定義されており、割当不可能である旨の指定がされている場合には、その装置へのステップもしくはトランジションの割当は行われない。
図18はステップ実行可能装置指定フラグ320の一例を示す説明図である。
値が“1”のとき実行可能、“0”のとき実行不可能を表している。
図18の例では、演算装置10がステップS2,S4,S7,S8を実行することが可能であることを表し、演算装置20が全てのステップを実行することが可能であることを表している。
また、ステップ割当テーブル切替機能430とトランジション割当テーブル切替機能440は、ステップ割当テーブル110やトランジション割当テーブル140に対して、新たなテーブルの生成機能を有しており、また、新たに作成したテーブルへの切替条件と対応するテーブルIDをステップ割当テーブル切替テーブル130やトランジション割当テーブル切替テーブル160に追加する機能も有している。
例えば、下記の条件は、図13のステップ割当テーブル切替テーブル130には登録されていない切替条件であるとする。
S2.X ∧ S6.X ∧ S10.X
上記の条件が、次のスキャン周期でアクティブになるステップの組み合せになると、上記の条件に対応するテーブル(例えば、TABLE6)を自動的に生成し、そのテーブルにステップS2,S6,S10を任意の演算装置で実行するように指定(例えば、S2→PE1,S6→PE1,S10→PE2)し、ステップ割当テーブル切替テーブル130に、下記の条件を追加する。
S2.X ∧ S6.X ∧ S10.X → TABLE6
これにより、それ以降、同時に実行される新たなステップの組み合せが発生した場合に、その動作パターンに対応する割当テーブルが自動的に生成され、そのテーブルに対して動的な割当を行うことが可能になる。
なお、新たな割当テーブルを生成し、そのテーブルに対する切替条件と対応するテーブルIDを、テーブル切替テーブルに設定する場合には、図13におけるotherの条件が設定されていないか、もしくは、設定されていたとしてもその条件を無視するように構成されている。
なお、上記の例では、新たに生成するステップ割当テーブル110における、各シーケンス処理をどの演算装置で実行するかの割当を、任意に設定するとして説明したが、ステップ割当テーブル切替テーブル130において切替条件がotherの場合における割当テーブルに記載されている割当を設定しても良い。
また、新たな割当テーブルを生成する際に、共有メモリ30の空き領域が少ない場合、使用頻度が最も少ない割当テーブルを破棄するようにすることも可能である。これにより、限られたメモリ量の中で、必要となる最適な割当を実現する事が可能となる。
なお、上記では、テーブル切替情報をステップ割当テーブル切替テーブル130や、トランジション割当テーブル切替テーブル160のようにテーブルという形態で説明したが、テーブルという形態ではなく、割当テーブル切替手段をプログラムの形態で実現してもよい。なお、本情報に該当するものをテーブル切替情報と呼称する。
また、ステップ割当更新機能450とトランジション割当更新機能460は、演算装置10,20が処理を実行していないIDLE時に行うことが可能である。
例えば、図17において、TIME1が図6のフローチャートにおける処理開始要求が発生した時刻(ステップST100)であり、TIME1−1がステップST300に対応する演算装置間の同期が完了した時刻であり、TIME1−2がステップST500に対応する演算装置間の同期が完了した時刻であり、TIME2が次の処理開始要求が発生した時刻(ステップST100)であるとする。
また、TIME1からTIME2の間に、ステップS2,S3,S4及びトランジションt2,t3,t4が、図示された割り当てで処理されているとする。
また、図17において、上から下向きが時間の流れを表し、S2,S3,S4,t2,t3,t4が処理を実行している間は、白い四角で表されている。
シーケンス処理実行装置1における演算装置10,20間では、適宜、同期を取り処理を進めていかなければならないため、図上の斜線で示した部分(IDLE1、IDLE2、IDLE3、IDLE4)では、演算装置10,20は何も処理を実行していない。
ステップ割当更新機能450とトランジション割当更新機能460は、演算装置10,20のIDLE時間を利用して更新処理を実施することが可能である。
更新処理の内容によっては、TIME1−1もしくはTIME1−2の同期タイミングを完了してから実行しなければならないケースも存在するが、そのような更新処理実行タイミングは、上記の各々の割当方式を実装する際、明確に指定されている場合もあれば、共有メモリ30上に存在する更新処理実行タイミング指定パラメータ340で切り替えることも可能である。
また、ユーザは、プログラミング装置2を使用して、シーケンス処理実行装置1上の、ステップ割当テーブル110、ステップ割当テーブル切替テーブル130、トランジション割当テーブル140、トランジション割当テーブル切替テーブル160など、共有メモリ30に存在する情報をアップロードし、プログラミング装置2上のファイルに保存することが可能である。また、保存されていた情報をシーケンス処理実行装置1上の共有メモリ30にダウンロードすることも可能である。これにより、同様な構成を取る他のシーケンス処理実行装置1に対して、最適な割り当てを短時間に設定することが可能となる。
これにより、一度、あるシーケンス処理実行装置1において、最適な割振りを、テーブルの自動生成等を実施して決定したもの、いわゆる学習したものを、他の、同じシーケンス処理を行うシーケンス処理実行装置1上で利用可能となるため、他のシーケンス処理実行装置1上で新たに学習をさせなくとも、同様な効果を、即時に利用することが可能となる。
なお、本例では、プログラミング装置2を介して、シーケンス処理実行装置1から、ステップ割当テーブル110、ステップ割当テーブル切替テーブル130、トランジション割当テーブル140、トランジション割当テーブル切替テーブル160等をアップロードし、他のシーケンス処理実行装置1に提供する形態について説明を行ったが、他のシーケンス処理実行装置1が共有バス50のような、何かしらの通信手段を使用して接続し、直接前記割当テーブル、割当テーブル切替テーブルのような共有メモリ30上のデータの入出力を行う方式も考えられる。なお、シーケンス処理実行装置1が、説明した本方式のようにデータの入出力を行う外部装置は、プログラミング装置2や、他のシーケンス処理実行装置1のみに限定するものではない。
シーケンス処理実行装置1は、このように構成され動作するため、実行中にシーケンス処理時間の変動が発生した場合にも、シーケンス処理の割り当てが自動的に計算され、応答性の高いシーケンス処理実行装置1を実現することが可能である。また、先見的な知識を元に、特定の処理パターンを実行する場合に、予め、そのパターンに対して最適なシーケンス処理の割当を規定した割当テーブルが用意されているため、処理パターンの切り替えが発生した場合にも、即座に応答性の高いシーケンス処理が実行可能である。また、先見的に明白ではない処理パターンに対しても、自動的に専用の割当を管理するテーブルが生成されるため、自動的に応答性の高いシーケンス処理の実行を実現することが可能である。
以上で明らかなように、この実施の形態1によれば、共有メモリ30に保有されている複数の割当テーブルの中から、予め設定されたテーブル切替条件に合致する割当テーブルを選択する割当テーブル切替機能430,440を設け、その割当テーブル切替機能430,440により選択された割当テーブルにしたがってシーケンス制御用プログラムにおける個々のステップ/トランジションを演算装置10,20に割り当てるように構成したので、負荷状況に変動が発生したら、変動後の負荷状況に応じて演算装置10,20に対するシーケンス処理の割り当てを最適化することができるようになり、その結果、シーケンス制御用プログラムの処理時間を短縮することができる効果を奏する。
また、この実施の形態1によれば、演算装置10,20の実行時間を基準にして、演算装置10,20に対する割当テーブル上の個々のシーケンス処理の割り当てを変更するように構成したので、シーケンス処理の実行状況に変動が発生したら、その変動に応じて演算装置10,20に対するシーケンス処理の割り当てを最適化することができるようになり、その結果、シーケンス制御用プログラムの処理時間を短縮することができる効果を奏する。
また、この実施の形態1によれば、現在選択中の割当テーブルがテーブル切替条件に合致しなくなると、そのテーブル切替条件に合致する他の割当テーブルに切り替えるように構成したので、負荷状況が変動しても、変動後の負荷状況に応じて演算装置10,20に対するシーケンス処理の割り当てを最適化することができる効果を奏する。
この実施の形態1によれば、演算装置10,20がシーケンス処理を実行していないタイミング又はユーザにより指定されたタイミングで割当テーブルの切替処理を実行するように構成したので、演算装置10,20が持つ演算リソースを効率的に活用することが可能になり、限られた時間内でも最適なシーケンス処理の割り当てを実行することができる効果を奏する。
この実施の形態1によれば、割当テーブル切替条件に登録されていない活性化したステップの組み合せ条件が発生した際に、自動的に割当テーブルを生成し、その割当テーブルを使用するための条件を割当テーブル切替条件に自動的に登録するため、事前に全ての割当テーブルを準備しなくともよく、最適なシーケンス処理の割り当てを決定するための開発期間が短縮されると共に、シーケンス処理実行装置1上で使用されるメモリ量の削減を図ることができるという効果を奏する。
この実施の形態1によれば、割当テーブルを生成する際、既存の割当テーブルの中で選択頻度が最も小さい割当テーブルを破棄するように構成したので、共有メモリ30の空き容量が少ない場合でも、最適なシーケンス処理の割り当てを実現することができる効果を奏する。
また、この実施の形態1によれば、割当テーブルを生成する際、特定のシーケンス処理を実行することが可能であるかを示す割当可否情報を参照して、演算装置10,20にシーケンス処理を割り当てるように構成したので、特定のシーケンス処理を実行することができない演算装置に、その特定のシーケンス処理を割当てるという状況を回避することができる効果を奏する。
この実施の形態1によれば、プログラミング装置2等の外部装置から複数の割当テーブルやテーブル切替条件を取得する機能を有するとともに、保有している複数の割当テーブルやテーブル切替条件をプログラミング装置2等の外部装置に出力する機能を有するように構成したので、同様な構成をとる他のシーケンス処理実行装置でも、短時間に最適なシーケンス処理の割り当てを利用することができる効果を奏する。
この発明の実施の形態1によるシーケンス処理実行装置を示す構成図である。 この発明の実施の形態1によるシーケンス処理実行装置の演算装置10を示す構成図である。 この発明の実施の形態1によるシーケンス処理実行装置の演算装置10が保有している機能を示す説明図である。 この発明の実施の形態1によるシーケンス処理実行装置の共有メモリ30が保有している情報を示す説明図である。 この発明の実施の形態1によるシーケンス制御用プログラムの一例を示す説明図である。 この発明の実施の形態1による演算装置10、20の処理実行手段のフローチャートである。 この発明の実施の形態1による演算装置10,20におけるアクションの実行手段を示すフローチャートである。 この発明の実施の形態1による演算装置10、20における他の演算装置20、10との同期処理を示すフローチャートである。 この発明の実施の形態1による演算装置10,20における専用回路13の構成例を示す構成図である。 この発明の実施の形態1による専用回路13のフィルタ回路が実行する処理内容(アルゴリズムのリスト)を示す説明図である。 この発明の実施の形態1による活性ステップ情報100の一例を示す説明図である。 この発明の実施の形態1によるステップ割当テーブル110の一例を示す説明図である。 この発明の実施の形態1によるステップ割当テーブル切替テーブル130の一例を示す説明図である。 この発明の実施の形態1によるステップ実行時間情報200の一例を示す説明図である。 この発明の実施の形態1によるアクションの処理内容を示す説明図である。 この発明の実施の形態1による各処理ブロックの処理時間を示す説明図である。 この発明の実施の形態1による割当更新機能の処理時間を示す説明図である。 この発明の実施の形態1によるステップ実行可能装置指定フラグ320の一例を示す説明図である。 この発明の実施の形態1によるシーケンス処理実行装置の構成ブロックである。
符号の説明
1 シーケンス処理実行装置、2 プログラミング装置、3 外部機器、10,20 演算装置、30 共有メモリ(共有情報保有手段、割当テーブル保有手段)、40 入出力装置、50 共有バス、11 CPU(処理実行手段、割当テーブル切替手段)、12 メモリ、13 専用回路(処理実行手段、割当テーブル切替手段)、14 計時用機能部、100 活性ステップ情報、110 ステップ割当テーブル、120 ステップ割当テーブル参照変数、130 ステップ割当テーブル切替テーブル、140 トランジション割当テーブル、150 トランジション割当テーブル参照変数、160 トランジション割当テーブル切替テーブル、200 ステップ実行時間情報、210 トランジション実行時間情報、300 プロファイル制御用パラメータ、310 割当方式決定用パラメータ、320 ステップ実行可能装置指定フラグ、330 トランジション実行可能装置指定フラグ、340 更新処理実行タイミング指定パラメータ、400 共有メモリアクセス機能、410 ステップ/トランジション実行機能、420 装置間同期機能、430 ステップ割当テーブル切替機能、440 トランジション割当テーブル切替機能、450 ステップ割当更新機能、460 トランジション割当更新機能、501 処理実行手段A,B、502 共有情報保有手段、503 割当テーブル保有手段、504 割当テーブル切替手段、505 実行時間保有手段、506 割当テーブル更新手段、1000 コンフィグレーションデータ、1100 フィルタ回路、1200 実行制御回路。

Claims (9)

  1. シーケンス制御用プログラムにおける個々のシーケンス処理を実行する複数の処理実行手段と、各処理実行手段がシーケンス処理に伴う入力データ、中間処理データ、およびスキャン周期で処理を実行する処理過程における、処理実行手段で求められた次の周期で行うべき個々の処理の活性状態データのうち少なくとも1以上のデータを含むシーケンス処理実行時情報が保持されている共有情報保有手段と、各処理実行手段が実行する個々のシーケンス処理の割り当てを記述した割当テーブルを複数保有する割当テーブル保有手段と、前記割当テーブルを選定するための切替条件と、その切替条件を満たしたときに選定される割当テーブルの識別子とを記述したテーブル切替情報を有し、前記シーケンス処理実行時情報が前記切替条件に合致した割当テーブルを選択する割当テーブル切替手段とを備え、上記複数の処理実行手段は、上記割当テーブル切替手段により選択された割当テーブルで指定された割り当てにしたがってシーケンス制御用プログラムにおける個々のシーケンス処理を実行することを特徴とするシーケンス処理実行装置。
  2. 切替条件は、シーケンス制御用プログラムの変数値間の論理式、または変数値相互間もしくは変数値と所定値との比較を表した条件式として設定した切替条件であることを特徴とする請求項1に記載のシーケンス処理実行装置。
  3. 切替条件は、シーケンス処理における同一スキャン周期内で活性化する複数のシーケンス処理の組合せで構成された切替条件であることを特徴とする請求項1に記載のシーケンス処理実行装置。
  4. 切替条件は、シーケンス処理における同一スキャン周期内で活性化する1つのシーケンス処理、または複数のシーケンス処理の組合せと、変数値間の論理式、または変数値相互間もしくは変数値と所定値との比較で表した条件式とで構成された、切替条件であることを特徴とする請求項1に記載のシーケンス処理実行装置。
  5. 処理実行手段は、シーケンス制御プログラムの個々のシーケンス処理の実行時間を計測し、前記計測した個々の処理の実行時間を保持する実行時間保持手段と、前記実行時間を基準にして、複数の処理実行手段に対する割当テーブル上の個々の処理の割り当てを更新する割当テーブル更新手段を備えたことを特徴とする請求項1記載のシーケンス処理実行装置。
  6. 割当テーブル更新手段は、処理実行手段がシーケンス処理を実行していないタイミング又はユーザにより指定されたタイミングで割当テーブルの更新処理を実行することを特徴とする請求項5記載のシーケンス処理実行装置。
  7. 割当テーブル切替手段は、切替条件として設定されていない、スキャン周期でシーケンス処理を実行する処理過程における、処理実行手段で求められた次の周期で行うべき個々のシーケンス処理の組合せが、割当テーブル切替情報の中に切替条件として存在しないとき、前記次の周期で行うべき個々のシーケンス処理の組合せ中に存在している各シーケンス処理に対して、処理実行手段の割り当てを指定した割当テーブルを新規に生成し、この新規作成割当テーブルの識別子と、前記個々のシーケンス処理の組合せを示す切替条件とを割当テーブル切替情報の中に設定するとともに、前記新規作成割当テーブルにおけるシーケンス処理の処理実行手段への割り当てを各処理実行手段に割り当てられるシーケンス処理の実行にかかる時間が各処理実行手段間で均等になるように、割り当てを更新することを特徴とする請求項5記載のシーケンス処理実行装置。
  8. 割当テーブル切替手段は、割当テーブルを生成するとき、割当テーブル切替手段による選択頻度が最も小さい既存の割当テーブルを破棄することを特徴とする請求項7記載のシーケンス処理実行装置。
  9. 外部の装置との間で複数の割当テーブルおよび割当テーブル切替情報を入出力する手段を有することを特徴とする請求項1から請求項8のうちのいずれか1項記載のシーケンス処理実行装置。
JP2006061481A 2006-03-07 2006-03-07 複数の演算装置によるシーケンス処理実行装置 Expired - Fee Related JP4547469B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006061481A JP4547469B2 (ja) 2006-03-07 2006-03-07 複数の演算装置によるシーケンス処理実行装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006061481A JP4547469B2 (ja) 2006-03-07 2006-03-07 複数の演算装置によるシーケンス処理実行装置

Publications (2)

Publication Number Publication Date
JP2007241556A true JP2007241556A (ja) 2007-09-20
JP4547469B2 JP4547469B2 (ja) 2010-09-22

Family

ID=38587055

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006061481A Expired - Fee Related JP4547469B2 (ja) 2006-03-07 2006-03-07 複数の演算装置によるシーケンス処理実行装置

Country Status (1)

Country Link
JP (1) JP4547469B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016076236A1 (ja) * 2014-11-12 2016-05-19 株式会社東芝 分散制御システム、制御装置、制御方法及びプログラム

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63127303A (ja) * 1986-11-17 1988-05-31 Toshiba Corp プログラマブルコントロ−ラ
JPH02280266A (ja) * 1989-04-21 1990-11-16 Toshiba Corp 並列電子計算機システム
JPH04340135A (ja) * 1991-05-16 1992-11-26 Nec Corp 複数処理型間のcpu時間配分率制御方式
JPH06259114A (ja) * 1993-03-02 1994-09-16 Hitachi Ltd プログラマブルコントローラ
JPH11213143A (ja) * 1998-01-23 1999-08-06 Fuji Xerox Co Ltd 画像処理装置および画像処理時間予測方法
JP2006039821A (ja) * 2004-07-26 2006-02-09 Canon Inc マルチプロセッサ搭載システムlsiの制御方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63127303A (ja) * 1986-11-17 1988-05-31 Toshiba Corp プログラマブルコントロ−ラ
JPH02280266A (ja) * 1989-04-21 1990-11-16 Toshiba Corp 並列電子計算機システム
JPH04340135A (ja) * 1991-05-16 1992-11-26 Nec Corp 複数処理型間のcpu時間配分率制御方式
JPH06259114A (ja) * 1993-03-02 1994-09-16 Hitachi Ltd プログラマブルコントローラ
JPH11213143A (ja) * 1998-01-23 1999-08-06 Fuji Xerox Co Ltd 画像処理装置および画像処理時間予測方法
JP2006039821A (ja) * 2004-07-26 2006-02-09 Canon Inc マルチプロセッサ搭載システムlsiの制御方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016076236A1 (ja) * 2014-11-12 2016-05-19 株式会社東芝 分散制御システム、制御装置、制御方法及びプログラム
JP2016095586A (ja) * 2014-11-12 2016-05-26 株式会社東芝 分散制御システム、制御装置、制御方法及びプログラム
US10520935B2 (en) 2014-11-12 2019-12-31 Kabushiki Kaisha Toshiba Distributed control system, control device, control method, and computer program product

Also Published As

Publication number Publication date
JP4547469B2 (ja) 2010-09-22

Similar Documents

Publication Publication Date Title
US20180095738A1 (en) Method, device, and system for creating a massively parallilized executable object
US20130218299A1 (en) MCP Scheduling For Parallelization Of LAD/FBD Control Program In Multi-Core PLC
US20170329632A1 (en) Device scheduling method, task manager and storage medium
Heulot et al. Spider: A synchronous parameterized and interfaced dataflow-based rtos for multicore dsps
EP0418980A2 (en) System for combining independently clocked simulators
CN113284038B (zh) 用于执行计算的方法、计算设备、计算系统和存储介质
US20040268335A1 (en) Modulo scheduling of multiple instruction chains
JP4547469B2 (ja) 複数の演算装置によるシーケンス処理実行装置
JP2012208680A (ja) 並列処理システム及び並列処理システムの動作方法
JP5580404B2 (ja) 半導体装置
US10747546B2 (en) Distributed allocation device, distributed allocation system, and distributed allocation method
US11374788B2 (en) Network system having master device carrying out part of a process and slave device carrying out remainder of the process
JP7066080B1 (ja) 通信制御装置、通信制御方法及びプログラム
JP6729567B2 (ja) パラメータ決定装置、パラメータ決定方法、および、プログラム
JP4481783B2 (ja) シミュレーションモデル作成装置及びシミュレーション装置とシステム並びに方法とプログラム
EP3495960A1 (en) Program, apparatus, and method for communicating data between parallel processor cores
JP6878705B1 (ja) 通信装置、通信システム、通信方法、およびプログラム
CN114172940B (zh) 烹饪设备的控制方法及装置、存储介质、终端
JP7034399B1 (ja) 入力ユニット、制御システム、通信方法及びプログラム
JPH06259115A (ja) プログラマブルコントローラ
KR20220140167A (ko) Plc의 태스크 운용 장치
JP6452904B1 (ja) 設計支援装置、設計支援方法及びプログラム
EP2703918A1 (en) Configuration of control applications on multi-host controllers
CN117573210A (zh) 同步控制方法、装置及设备
CN116137951A (zh) 通信装置、通信系统、通信控制方法以及程序

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20070926

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071121

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20080821

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091006

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091008

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091204

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100223

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100316

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100324

R150 Certificate of patent or registration of utility model

Ref document number: 4547469

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130716

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees