JP2007241556A - 複数の演算装置によるシーケンス処理実行装置 - Google Patents
複数の演算装置によるシーケンス処理実行装置 Download PDFInfo
- 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
Links
Images
Landscapes
- Programmable Controllers (AREA)
Abstract
【解決手段】共有メモリ30に保有されている複数の割当テーブルの中から、予め設定されたテーブル切替条件に合致する割当テーブルを選択する割当テーブル切替機能430,440を設け、その割当テーブル切替機能430,440により選択された割当テーブルにしたがってシーケンス制御用プログラムにおける個々のステップ/トランジションを演算装置10,20に割り当てる。
【選択図】図1
Description
例えば、以下の特許文献1に開示されているシーケンス処理実行装置では、シーケンス制御用プログラムにおいて、明示的に並列に実行可能であるように表記されている部分(同時分岐)に対し、ステップ及びトランジションのシーケンスをグループとして識別し、各グループを複数の演算装置に割り当てるという手段を講じている。
グループの割り当てを決定する方法としては、グループに含まれているステップ及びトランジションの処理時間の中で、最大の処理時間をグループの処理時間に設定し、複数の演算装置が実行するグループの処理時間が均一になるように、複数のグループを複数の演算装置に割り当てる方法を採用している。
ただし、演算装置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の処理時間が560μs(=180+380μs)になり、演算装置Bの処理時間が620μsになる。
これにより、演算装置Aの処理時間が660μs(=180+380+100μs)になり、演算装置Bの処理時間が620μsになる。
図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とデータ入出力を実施している。
演算装置10,20はシーケンス制御用プログラムにおける個々のシーケンス処理を並列に実行することが可能な処理実行手段を保有し、例えばCPU11や専用回路13を搭載している(図2を参照)。
図1では、シーケンス処理実行装置1が演算装置を2個実装している例を示しているが、演算装置を3個以上実装してもよい。
入出力装置40は、シーケンス処理実行装置1が、その制御対象である外部機器3とデータ入出力を行うための機能を有しており、シーケンス処理実行装置1内部で演算した結果の外部への出力や、シーケンス処理実行装置1内部で演算を実行するために必要となるデータの外部からの入力を取り扱っている。
割当テーブル保有手段503は、各処理実行手段501が実行するシーケンス処理の割り当てを記述した割当テーブルを複数個保有する。割当テーブル切替手段504は、共有情報保有手段502が保持するシーケンス処理実行時情報が、割当テーブルを選定するための切替条件に合致した割当テーブルを選択する。この選択のために、割当テーブル切替手段504は、切替条件と、切替条件を満たしたときに選定される割当テーブルの識別子とを記述したテーブル切替情報を保有する。
そして、処理実行手段501は、割当テーブル切替手段504により選択された割当テーブルで指定された割り当てに従って、シーケンス処理を実行する。
図2において、CPU11はソフトウェアで実現されているシーケンス処理を実行する処理実行部である。
メモリ12はCPU11が実行するプログラムや被演算データや、専用回路13が使用する被演算データ等の各種情報を保持している。
専用回路13は特定シーケンス処理を実行する処理実行部であり、専用回路13としては、例えば、ASSP(Application Specific Standard Product)やASIC(Application Specific IC)のような形態も存在すれば、例えば、FPGAのような任意の回路を実現可能な形態も存在する。また、例えば、FPGA上に、ある特定シーケンス処理のみを実行可能な回路を実現するという手段も存在する。
計時用機能部14はCPU11及び専用回路13により実行されるシーケンス処理に対する処理時間を計測する機能を備えている。
また、図2では、メモリ12がCPU11や専用回路13とは独立した構成要素である例を示しているが、メモリ12がCPU11又は専用回路13の内部に存在する構成や、CPU11及び専用回路13の双方の内部に存在する構成も考えられる。
また、メモリ12が図1の共有メモリ30上に、各々の演算装置10,20がメモリ領域を予約して、対応するメモリ領域として使用する構成も存在する。
さらに、図2では、計時用機能部14がCPU11や専用回路13とは独立した構成要素である例を示しているが、計時用機能部14がCPU11や専用回路13の内部に存在する構成も存在する。
演算装置10,20は共有メモリ30にアクセスするための共有メモリアクセス機能400、複数のステップ割当テーブルの中からステップ割当テーブル切替条件に合致するステップ割当テーブルを選択するステップ割当テーブル切替機能430、複数のトランジション割当テーブルの中からトランジション割当テーブル切替条件に合致するトランジション割当テーブルを選択するトランジション割当テーブル切替機能440、ステップ割当テーブルを更新するステップ割当更新機能450、トランジション割当テーブルを更新するトランジション割当更新機能460を備えている。
また、演算装置10,20はステップ割当テーブル切替機能430およびトランジション割当テーブル切替機能440が選択した割当テーブル上の割り当てにしたがってシーケンス制御プログラムにおける個々のステップおよびトランジションを実行するためのステップ/トランジション実行機能410、他の演算装置20,10と同期を図る装置間同期機能420を備えている。
なお、演算装置10,20が保有している機能は、CPU11又は専用回路13で実行される。あるいは、CPU11及び専用回路13の双方で実行される。
共有メモリ30は、どのステップを次の処理開始のタイミングで実行するかを指定する活性ステップ情報100、どのステップをどの演算装置で実行するかを指定する複数のステップ割当テーブル110、ステップ割当テーブル110における特定のテーブルID(テーブルの識別子)を保持しているステップ割当テーブル参照変数120、ステップ割当テーブル110の中から割当テーブルを選択するための切替条件と、切替条件に対応する割当テーブルの識別子(テーブルID)との組を複数保有するステップ割当テーブル切替テーブル130を保有している。
また、共有メモリ30は、どのトランジションをどの演算装置で実行するかを指定する複数のトランジション割当テーブル140、トランジション割当テーブル140における特定のテーブルIDを保持しているトランジション割当テーブル参照変数150、トランジション割当テーブル140の中から割当テーブルを選択するための切替条件と、切替条件に対応する割当テーブルの識別子(テーブルID)との組を複数保有するトランジション割当テーブル切替テーブル160を保有している。
なお、ここでステップ割当テーブル切替テーブル130とトランジション割当テーブル切替テーブル160は、テーブル切替情報である。ステップ割当テーブル110とトランジション割当テーブル140は、割当テーブル保有手段503で保有され、この手段は共有メモリ30で実現される。
シーケンス処理実行装置1がシーケンス制御用プログラムを実行するに先立って、シーケンス処理実行装置1の利用者がプログラミング装置2を使用して、シーケンス制御用プログラムを作成する。
シーケンス制御用プログラムは、図5に示すように、IEC61131−3規格で規定されているシーケンス制御向けのプログラミング言語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で、ステップS1を記述したブロックの両脇が二重線になっているが、これはステップS1がイニシャルステップであることを示している。イニシャルステップとは、SFCプログラムの実行を開始するステップを示している。したがって、図5のSFCプログラムにおいては、ステップS1から実行が開始される。
シーケンス処理実行装置1の利用者は、このようなプログラミング記述で表されるシーケンス制御用プログラムをプログラミング装置2上のプログラミング環境を使用して作成する。
即ち、プログラミング装置2は、シーケンス制御用プログラムをシーケンス処理実行装置1上で実行可能なプログラムに変換するプログラム変換機能を実装しており、シーケンス処理実行装置1に搭載されている演算装置10,20の種別情報を参照して、シーケンス制御用プログラムを変換する。ここで、種別情報とは、演算装置10、20が保有しているCPU11や専用回路13等がどのようなものであるかを特定するための情報である。
プログラミング装置2における種別情報の獲得の仕方としては、シーケンス処理実行装置1の種類毎に種別情報が確定している場合に、その情報をそのままつかう場合もあれば、シーケンス処理実行装置1から種別情報をアップロードするようにしてもよい。
プログラミング装置2により作成されたSFCプログラムにおいて、演算装置10,20で実行される、いわゆるシーケンス処理の内容は、SFCプログラム上のアクション部に記述された処理内容と、トランジション部に記述された処理内容である。
プログラミング装置2では、SFCプログラム上のアクション部に記述された内容及びトランジション部に記述された内容を、以下に示すような方法で、実行可能なプログラムに変換する。
CPU11は一般的なCPUであるため、プログラミング装置2は、作成したSFCプログラムをコンパイルして、CPU11上で直接実行可能なオブジェクトコードに変換する。
ただし、CPU11が、何かしらの中間コードをインタプリットして実行する形態のインタプリタ方式を採用している場合には、対応する中間コードに変換する。
ここでは、専用回路13が、図9に示すように、フィルタ回路1100と、コンフィグレーションデータ1000と、実行制御回路1200とから構成されているものとして説明する。ただし、図9は専用回路13の構成例であり、専用回路13の構成が図9の構成例に限定されるものではない。
フィルタ回路1100には、コンフィグレーションデータ1000(フィルタ回路1100の内部処理の実行に必要となる設定データ)が付加されている。
コンフィグレーションデータ1000は、16進数で示している各アドレス(例えば、左側のh00,h04など)に対応するデータ領域を定義している。
図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”にクリアされる。
内部変数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部分)。
FLT_NUM回分のループ処理を完了した後、図10のWRITE部で、OUT_ADDR+iの値に対応するアドレスに“SUM”の値を書き込む。上記処理を内部変数iに対応するforループの“IO_NUM”の回数分だけ実施した後、done信号をHighにして、再度、start信号がHighになるのを待つ。
このように、フィルタ回路1100ではフィルタ処理が実施される。回路の挙動として、クロック信号(clock)のエッジに同期した形で一般的に処理が実行されるが、本説明では、図10中の、どの処理タイミングがクロックエッジに同期しているかの詳細な説明は省略する。
例えば、利用者により記述されたSFCプログラムの処理(アクション)において、図10のプログラムで、下記の(A)ように設定すれば(右辺の数値の接頭文字“d”は、10進数であることを示している)、処理が実現可能なコンフィグレーションデータ1000は、下記の(B)のように生成される。
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
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
上記の例では、CPU11又は専用回路13に対して、SFCプログラムから実行可能なプログラムを生成する手段を説明したが、CPU11及び専用回路13を共に保有する演算装置においては、CPU11及び専用回路13の両者に対するプログラム生成処理が行われる。
このように生成された実行可能プログラムは、プログラミング装置2から共有バス50を介して、シーケンス処理実行装置1に送られ、シーケンス処理実行装置1の演算装置10,20上にロードされる。
これ以降の説明においては、説明の簡単化のため、割当単位をステップとして記述するが、例えば、アクション毎に割当を実現するなど、より細かな粒度に拡張することは容易である。
図11は活性ステップ情報100の一例を示す説明図であり、図11の一番左の列は、どのステップに関する情報であるかを示しており、その次の「X」の列は、今回どのステップが活性状態(アクティブ)であるかを示している。「X」の表記は、IEC61131−3のステップの活性状態X(S1.X等で変数としてシーケンス処理プログラム中から参照可能)に対応している。IEC61131−3の定義では、ステップは活性/非活性の2つの状態を保有している。ここでは活性の場合、前記Xが“1”であり、非活性の場合、前記Xが“0”となるような、論理変数として表現されているとする。なお、活性/非活性を表すXの具体的な値のことを、活性状態データと呼称する。活性ステップ状態100では、全てのステップに対する、この活性状態データが保持されている。
その次の「Xnext」の列は、次の実行のタイミングにおいて、各ステップが活性かどうか(実行するかどうか)を示している。
また、その次の「P」の列は、アクションクオリファイヤPに対応する情報を保持している列であり、次の実行タイミングにおいて、アクションクオリファイヤPで指定されたアクションを実行するか否かを判断する情報を保持している。
この初期の活性ステップ情報100も、先の実行可能プログラムと同様に、プログラミング装置2からシーケンス処理実行装置1の共有メモリ30にロードされる。
図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を示している)で実行するかを示す情報が含まれている。
トランジション割当テーブル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に設定されるとする。また、明示していないが、トランジションに対しても同様な設定がなされるとする。
CPU11により実行される場合には、CPU上で実行されるシステムソフトウェアが本機能を保有し、専用回路13上で実行される場合には、図9の実行制御回路1200が本機能を保有している。
ただし、図6のフローチャートでは、“ステップ”をSFCプログラム上の“ステップ”と区別するため、ステップの符号として“ST”を付している。
図6において、ステップST200,ST300,ST400,ST500は、各々の内部にフローチャートを持つように階層化されている。
即ち、ST200の詳細な処理内容は図7、ST300の詳細な処理内容は図8、ST400の詳細な処理内容は図7、ST500の詳細な処理内容は図8に示している。
一般的に、シーケンス制御プログラムを実行するシーケンス処理実行装置1は、このように一定の周期でシーケンス処理が実行される。この一定周期は、一般的にスキャン周期と呼ばれる。
演算装置10,20は、処理の開始要求を受けると、自装置に割り当てられたステップの実行を開始する(ステップST200)。
即ち、演算装置10,20は、共有メモリ30に保有されている活性ステップ情報100(図11を参照)を参照して、全ての行について評価を実施したか否かを判定する(図7のステップST810)。
演算装置10,20は、全ての行について評価を実施していなければ、活性ステップ情報100から一つの行を取得する(ステップST820)。
演算装置10,20は、その行のステップがアクティブでなければ、ステップST810の処理に戻るが、その行のステップがアクティブであれば、共有メモリ30に保有されている複数のステップ割当テーブル110の中から、今回使用するステップ割当テーブルをステップ割当テーブル参照変数120に基づいて特定し、特定したステップ割当テーブルから該当するSFCステップの割当情報を取得する(ステップST840)。
演算装置10,20は、自演算装置に割り当てられていないステップであれば、ステップST810の処理に戻るが、自演算装置に割り当てられているステップであれば、そのステップに対応する処理、具体的には、そのステップに関連付けられているアクションを実行し(ステップST860)、ステップST810の処理に移行する。
即ち、演算装置10,20は、自演算装置に割り当てられている全てのステップの処理を実行すると、全ての処理が完了した旨を示す処理完了通知を他の演算装置20,10に送信する(図8のステップST910)。
演算装置10,20は、処理完了通知を他の演算装置20,10に送信すると、他の演算装置20,10との同期を図るため、他の演算装置20,10から送信される処理完了通知を受信するまで待機し、他の演算装置20,10から送信される処理完了通知を受信すると(ステップST920)、同期処理を終了する。
自装置に割り当てられたトランジションの実行は、ステップST200におけるSFCステップの実行とほぼ同様であり、図7のフローチャートにしたがって動作する。
自装置に割り当てられたトランジションを実行する場合、共有メモリ30に保有されているトランジション割当テーブル140の中から、今回使用するトランジション割当テーブルをトランジション割当テーブル参照変数150に基づいて特定し、特定したトランジション割当テーブル140から該当するトランジションの割当情報を取得する(ステップST840)。
演算装置10,20は、自演算装置に割り当てられていないトランジションであれば、ステップST810の処理に戻るが、自演算装置に割り当てられているトランジションであれば、そのトランジションに対応する処理を実行し(ステップST860)、ステップST810の処理に移行する。
なお、各トランジション処理の演算結果(真偽値)は、活性ステップ情報100のXnext列に設定される(図11を参照)。
演算装置10,20は、他の演算装置20,10との同期を図ると、活性ステップ情報100の更新を実行する(ステップST600)。
活性ステップ情報100の更新は、図11のテーブルに対して、次活性状態を示すXnext列の値をX列に書き写し、例えば、P列のようなアクションクオリファイヤの情報を設定する処理である。
例えば、P列の値は、「〜X ∧ Xnext」の論理式で計算される(〜は値の反転を表し、∧は論理積を表す。今回のXが非活性で、次回のXnextが活性ならばPは真(1)になる)。
ステップST600の処理を、どの演算装置が実行するかは、予め設定されている特定の演算装置が実施してもよいし、任意の演算装置に処理を割り振るようにしてもよい。
シーケンス処理実行装置1で実行されている各ステップ(厳密にはアクション)の実行時間は、常に一定とは限らない。
各アクションの処理内容が、例えば、図15に示すように、条件分岐を多用して記述されている場合、入力データである外部入力変数X0が真偽のどちらであるか、中間処理データである内部変数M0が真偽のどちらであるかにより、実行する処理ブロックが異なり(処理ブロック1、処理ブロック2又は処理ブロック3を実行する)、各処理ブロックの実行時間が大きく異なる場合、同じアクションではあるが、その実行時間は異なるものとなる。
また、SFCプログラムの作成時に先見的に分かる処理分岐(例えば、外部入力変数X0が偽であれば、処理ブロック3が実行される)であれば、その分岐に対応する割当テーブルを用意しておくことが割当の即応性から望まれる。
この実施の形態1では、シーケンス処理実行装置1におけるステップ割当テーブル切替機能430及びトランジション割当テーブル切替機能440が、実行するシーケンス処理の実行時間や変数値の計測結果に基づいて、動的な割当の変更や先見的な割当の変更を行う。
以下、ステップ割当テーブル切替機能430及びトランジション割当テーブル切替機能440の動作について説明する。
図5のSFCプログラムでは、先見的にステップS2とステップS3とステップS4が同時にアクティブになることが自明である。
このステップの組み合せにおけるシーケンス処理が実行されているとき、ステップS3およびステップS4の処理時間が図14の通りであるとする。また、ステップS2については、図14での処理時間とは異なり、アクションa2の処理内容が図15であり、図15における各処理ブロックの処理時間が図16の通りであるとする。
〜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
ステップS2 → 演算装置20
ステップS3 → 演算装置20
ステップS4 → 演算装置10
このとき、演算装置10,20のシーケンス処理の合計実行時間は、次のようになる。
演算装置10 → 160μs
演算装置20 → 175μs
ステップS2 → 演算装置20
ステップS3 → 演算装置20
ステップS4 → 演算装置10
このとき、演算装置10,20のシーケンス処理の合計実行時間は、次のようになる。
演算装置10 → 160μs
演算装置20 → 240μs
ここで切替条件に合致するとは、ステップ割当テーブル切替テーブル130に設定されている切替条件に対して、共有メモリ30上に存在している、その外部入力変数X0や内部変数M0や、ステップの活性状態に対応するデータを読み出し、切替条件に設定されている式を評価し、結果として真偽値を求め、その結果が真であるということである。なお、これら切替条件への入力データとして評価される、入力データ、中間処理データ、ステップの活性状態のうち、少なくとも1以上のデータを、シーケンス処理実行時情報と呼称する。シーケンス処理実行時情報は、共有情報保有手段502により保有され、この手段は共有メモリ30で実現される。
これにより、利用者により指定された任意の条件にしたがって使用する割当テーブルを切り替えることが可能になる。
ここでは、ステップの割当について説明を行ったが、トランジションに対しても同様な機能を実現するトランジション割当テーブル切替機能440及びトランジション割当テーブル切替テーブル160が存在する。
また、ステップ割当テーブル切替テーブル130及びトランジション割当テーブル切替テーブル160に設定する切替条件としては、単純な論理式のみではなく、様々な算術演算結果の比較による真偽値のような複雑な演算も定義可能である。
また、切替条件として、単純な論理式や先述の複雑な演算や、先述の同一スキャン周期における各ステップの組合せを示す活性状態の論理式の組合せの論理式も定義可能である。
また、ステップ割当テーブル切替テーブル130及びトランジション割当テーブル切替テーブル160で設定されている切替条件の各々は、独立した条件である必要はなく、例えば、図13の上の行ほど、優先順位が高い条件として設定すれば、高い優先順位の条件が真となれば、対応するテーブルへの切り替えを発生させることも可能である。
シーケンス処理実行装置1のステップ割当更新機能450は、処理実行手段が計測した実行中のステップの処理時間に対し、その処理時間に基づいて割当を更新する機能を提供している。
演算装置10,20は、図2に示すように、タイマ等で実現された計時用機能部14が存在しており、ステップおよびトランジションの実行時間を計測することが可能である。
また、共有メモリ30には、図4に示すように、ステップの実行時間を保持するステップ実行時間情報200と、トランジションの実行時間を保持するトランジション実行時間情報210とが存在している。
ここでは、各ステップに対する演算装置10,20の処理時間に対し、1つのサンプル値だけ保持する例を示したが、例えば、そのサンプル値が、時系列での処理時間の最大値であってもよいし、平均値であってもよいし、その他の一般的な統計量であってもよい。
また、保持するサンプル数が1つだけでなくても、過去何回かの実行時間の系列であっても構わない。どのような情報を保持しておくかを指定する設定が、共有メモリ30上にプロファイル制御用パラメータ300として存在している。
プロファイル制御用パラメータ300のパラメータ値を変更すれば、上記の様々な方式のサンプル値が取得可能である。なお、トランジション実行時間情報210も、上記のステップ実行時間情報200の説明と同様である。
その均等となるような割当を決定する処理には、様々な方法が存在し、共有メモリ30上に存在する割当方式決定用パラメータ310により割当方式の切替が可能である。
例えば割当決定のために幾らでも時間をかけても良い場合に、均等化される処理時間の最小値を求める手段もあれば、ある限られた時間の中で決定するために極小値を求める手段も存在する。
以下、幾つかの割当方式について説明する。
ある時点における全てのステップ/トランジションの処理時間から、全ての割当テーブル上に存在するステップ/トランジションの組み合せに対し、演算装置10,20で実行される処理時間の最大値が最も小さくなるような割当を計算し、計算が完了した時点で、全ての割当テーブルの設定を変更する。変更完了後、再度計算を開始するか、何スキャン周期後から計算を開始する。
現在使用中の割当テーブルに存在するステップ/トランジションの組み合せに対し、演算装置10,20で実行される処理時間の最大値が最も小さくなるような割当を計算し、計算が完了した時点で、使用中の割当テーブルの設定を変更する。
計算が完了するまでの間に割当テーブルが切り替わった場合には、計算を中断して切り替わった割当テーブルに対して同様の処理を開始するか、もしくは、切り替わった場合でも現在計算中の割当テーブルを把握しておき、計算完了後、その割当テーブルに対して設定を変更する。変更完了後、直ぐに計算を再度開始するか、何周期後から計算を開始する。
次のスキャン周期で実行されるステップの組み合せと、次のスキャン周期で使用される割当テーブルが決定した後で、該当するステップの組み合せに対し、演算装置10,20で実行される処理時間の最大値が最も小さくなるような割当を計算し、計算が完了した時点で、該当する割当テーブルの設定を変更する。
また、上記の割当方式の計算においては、ステップ実行可能装置指定フラグ320及びトランジション実行可能装置指定フラグ330が参照される。
これらは、任意のステップもしくはトランジションが、任意の演算装置上で実行可能か否かを示すフラグが、その組み合せだけ定義されており、割当不可能である旨の指定がされている場合には、その装置へのステップもしくはトランジションの割当は行われない。
値が“1”のとき実行可能、“0”のとき実行不可能を表している。
図18の例では、演算装置10がステップS2,S4,S7,S8を実行することが可能であることを表し、演算装置20が全てのステップを実行することが可能であることを表している。
また、ステップ割当テーブル切替機能430とトランジション割当テーブル切替機能440は、ステップ割当テーブル110やトランジション割当テーブル140に対して、新たなテーブルの生成機能を有しており、また、新たに作成したテーブルへの切替条件と対応するテーブルIDをステップ割当テーブル切替テーブル130やトランジション割当テーブル切替テーブル160に追加する機能も有している。
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のようにテーブルという形態で説明したが、テーブルという形態ではなく、割当テーブル切替手段をプログラムの形態で実現してもよい。なお、本情報に該当するものをテーブル切替情報と呼称する。
例えば、図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が処理を実行している間は、白い四角で表されている。
ステップ割当更新機能450とトランジション割当更新機能460は、演算装置10,20のIDLE時間を利用して更新処理を実施することが可能である。
更新処理の内容によっては、TIME1−1もしくはTIME1−2の同期タイミングを完了してから実行しなければならないケースも存在するが、そのような更新処理実行タイミングは、上記の各々の割当方式を実装する際、明確に指定されている場合もあれば、共有メモリ30上に存在する更新処理実行タイミング指定パラメータ340で切り替えることも可能である。
これにより、一度、あるシーケンス処理実行装置1において、最適な割振りを、テーブルの自動生成等を実施して決定したもの、いわゆる学習したものを、他の、同じシーケンス処理を行うシーケンス処理実行装置1上で利用可能となるため、他のシーケンス処理実行装置1上で新たに学習をさせなくとも、同様な効果を、即時に利用することが可能となる。
この実施の形態1によれば、演算装置10,20がシーケンス処理を実行していないタイミング又はユーザにより指定されたタイミングで割当テーブルの切替処理を実行するように構成したので、演算装置10,20が持つ演算リソースを効率的に活用することが可能になり、限られた時間内でも最適なシーケンス処理の割り当てを実行することができる効果を奏する。
また、この実施の形態1によれば、割当テーブルを生成する際、特定のシーケンス処理を実行することが可能であるかを示す割当可否情報を参照して、演算装置10,20にシーケンス処理を割り当てるように構成したので、特定のシーケンス処理を実行することができない演算装置に、その特定のシーケンス処理を割当てるという状況を回避することができる効果を奏する。
Claims (9)
- シーケンス制御用プログラムにおける個々のシーケンス処理を実行する複数の処理実行手段と、各処理実行手段がシーケンス処理に伴う入力データ、中間処理データ、およびスキャン周期で処理を実行する処理過程における、処理実行手段で求められた次の周期で行うべき個々の処理の活性状態データのうち少なくとも1以上のデータを含むシーケンス処理実行時情報が保持されている共有情報保有手段と、各処理実行手段が実行する個々のシーケンス処理の割り当てを記述した割当テーブルを複数保有する割当テーブル保有手段と、前記割当テーブルを選定するための切替条件と、その切替条件を満たしたときに選定される割当テーブルの識別子とを記述したテーブル切替情報を有し、前記シーケンス処理実行時情報が前記切替条件に合致した割当テーブルを選択する割当テーブル切替手段とを備え、上記複数の処理実行手段は、上記割当テーブル切替手段により選択された割当テーブルで指定された割り当てにしたがってシーケンス制御用プログラムにおける個々のシーケンス処理を実行することを特徴とするシーケンス処理実行装置。
- 切替条件は、シーケンス制御用プログラムの変数値間の論理式、または変数値相互間もしくは変数値と所定値との比較を表した条件式として設定した切替条件であることを特徴とする請求項1に記載のシーケンス処理実行装置。
- 切替条件は、シーケンス処理における同一スキャン周期内で活性化する複数のシーケンス処理の組合せで構成された切替条件であることを特徴とする請求項1に記載のシーケンス処理実行装置。
- 切替条件は、シーケンス処理における同一スキャン周期内で活性化する1つのシーケンス処理、または複数のシーケンス処理の組合せと、変数値間の論理式、または変数値相互間もしくは変数値と所定値との比較で表した条件式とで構成された、切替条件であることを特徴とする請求項1に記載のシーケンス処理実行装置。
- 処理実行手段は、シーケンス制御プログラムの個々のシーケンス処理の実行時間を計測し、前記計測した個々の処理の実行時間を保持する実行時間保持手段と、前記実行時間を基準にして、複数の処理実行手段に対する割当テーブル上の個々の処理の割り当てを更新する割当テーブル更新手段を備えたことを特徴とする請求項1記載のシーケンス処理実行装置。
- 割当テーブル更新手段は、処理実行手段がシーケンス処理を実行していないタイミング又はユーザにより指定されたタイミングで割当テーブルの更新処理を実行することを特徴とする請求項5記載のシーケンス処理実行装置。
- 割当テーブル切替手段は、切替条件として設定されていない、スキャン周期でシーケンス処理を実行する処理過程における、処理実行手段で求められた次の周期で行うべき個々のシーケンス処理の組合せが、割当テーブル切替情報の中に切替条件として存在しないとき、前記次の周期で行うべき個々のシーケンス処理の組合せ中に存在している各シーケンス処理に対して、処理実行手段の割り当てを指定した割当テーブルを新規に生成し、この新規作成割当テーブルの識別子と、前記個々のシーケンス処理の組合せを示す切替条件とを割当テーブル切替情報の中に設定するとともに、前記新規作成割当テーブルにおけるシーケンス処理の処理実行手段への割り当てを各処理実行手段に割り当てられるシーケンス処理の実行にかかる時間が各処理実行手段間で均等になるように、割り当てを更新することを特徴とする請求項5記載のシーケンス処理実行装置。
- 割当テーブル切替手段は、割当テーブルを生成するとき、割当テーブル切替手段による選択頻度が最も小さい既存の割当テーブルを破棄することを特徴とする請求項7記載のシーケンス処理実行装置。
- 外部の装置との間で複数の割当テーブルおよび割当テーブル切替情報を入出力する手段を有することを特徴とする請求項1から請求項8のうちのいずれか1項記載のシーケンス処理実行装置。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016076236A1 (ja) * | 2014-11-12 | 2016-05-19 | 株式会社東芝 | 分散制御システム、制御装置、制御方法及びプログラム |
Citations (6)
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の制御方法 |
-
2006
- 2006-03-07 JP JP2006061481A patent/JP4547469B2/ja not_active Expired - Fee Related
Patent Citations (6)
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)
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 |