JP2007241434A - シーケンス処理実行装置 - Google Patents

シーケンス処理実行装置 Download PDF

Info

Publication number
JP2007241434A
JP2007241434A JP2006059789A JP2006059789A JP2007241434A JP 2007241434 A JP2007241434 A JP 2007241434A JP 2006059789 A JP2006059789 A JP 2006059789A JP 2006059789 A JP2006059789 A JP 2006059789A JP 2007241434 A JP2007241434 A JP 2007241434A
Authority
JP
Japan
Prior art keywords
transition
arithmetic
processing
allocation
processing time
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.)
Pending
Application number
JP2006059789A
Other languages
English (en)
Inventor
Teruaki Tanaka
輝明 田中
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
Original Assignee
Mitsubishi Electric Corp
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 filed Critical Mitsubishi Electric Corp
Priority to JP2006059789A priority Critical patent/JP2007241434A/ja
Publication of JP2007241434A publication Critical patent/JP2007241434A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】SFCで記述されたプログラムを、複数の演算装置に割り振る場合に最適な割り振りを行うことのできるシーケンス処理実行装置を得る。
【解決手段】活性ステップ組合せ情報142として、シーケンス処理実行装置内の演算装置上で、SFC言語で記述されたプログラムを実際に実行した場合の複数のステップの組合せの情報を保持する。ステップ対演算装置割当部304において、活性ステップ組合せ情報142に基づいて、各ステップを任意の演算装置に割り振った場合を評価し、その結果に基づいて複数の演算装置110,120で実行するステップの割当を決定する。
【選択図】図1

Description

この発明は、SFC(シーケンシャル・ファンクション・チャート)で記述されたシーケンス処理プログラムを、並列に演算を実行可能なシーケンス処理実行装置(プログラマブル・ロジック・コントローラ)で実行させるシーケンス処理実行装置に関するものである。
シーケンス処理実行装置で、IEC61131−3で定義されているSFCを用いて記述されたシーケンス処理を、並列に動作可能な演算装置で実行する場合、処理を各演算装置に割り振らなければならない。従来は、SFCプログラムを開発および実行する利用者が、明確に処理を実行する複数の演算装置を認識し、各々の演算装置向けにプログラムを分割して実装していた。このように一つの処理を複数のプログラムで実現する事は簡単では無く、開発およびテストの工数が非常にかかるため、元々の一つのSFCプログラムを自動的に分割するための手段の実現が求められていた。
このような問題に対処するため、例えば特許文献1に示すように、複数の演算装置に対するSFCプログラムの割り振り方として、SFCのプログラム記述上で、明示的に並列に実行可能であるように表記されている部分(同時分岐)に対し、ステップおよびトランジションのシーケンスをグループとして識別し、各グループを各演算装置に割り振るという手段を講じたものがあった。グループの割り振りを決定する具体的な方法は、グループの処理時間というものを考え、その定義を、そのグループに含まれている各ステップ・トランジションの処理時間の中で最大のものであるとし、各演算装置上で実行される各グループの処理時間が平均化されるように割り振るというものである。
特開平7−28390号公報
しかしながら、上記従来のような割り振り方法では、SFCプログラムを、並列に実行可能な複数の演算装置を持つシーケンス処理実行装置において、複数の演算装置への処理の割り振りが最適に行われないという問題があった。即ち、同時分岐後の並列に実行可能なステップの間には、制御的な依存関係が存在する場合も多々存在する。例えば、あるステップの処理が実行した場合や完了した場合に成立する条件により、並列に実行されている他のステップが遷移するというような関係が存在する場合である。そのような場合、実際に並列に実行されるステップの組合せは、各グループに属するステップが、各々依存関係が無く実行される場合の組合せよりも少ない組合せとなる。従って、各グループの処理時間を、そのグループに含まれるステップの処理時間中で最大の処理時間と定義し、その処理時間でグループを割り振ると、そのステップの組合せが実際の処理としては発生しない可能性がある。その場合、従来の方式で処理を割り振った場合、必ずしも最適な割り振りとはならないという問題があった。
また、複数の演算装置へのステップの割り振りを一度決めた後、シーケンス処理実行装置で処理を実行中、ステップの処理時間が変動した場合に、必ずしも最適に割り振った状態ではなくなるため、その場合に、再度割り振りを実施する必要がある事を識別し、割り振りの再実行を行う必要があった。
この発明は、上記のような問題点を解決するためになされたものであり、SFCで記述されたプログラムを、複数の演算装置に割り振る場合に最適な割り振りを行うことのできるシーケンス処理実行装置を得ることを目的としている。
この発明に係るシーケンス処理実行装置は、SFC言語で記述されたプログラムを実行し、シーケンス処理を行う複数の演算装置と、これら複数の演算装置で、実際にプログラムを動作させた際に、同時に実行されるSFC記述上の複数のステップの組合せの情報を保持する組合せ情報取得手段と、前記組合せの情報に基づいて、複数の演算装置で実行するステップの割当を行うステップ割当手段とを備えたものである。
この発明のシーケンス処理実行装置は、複数の演算装置で、実際にプログラムを動作させた際に、同時に実行されるSFC記述上の複数のステップの組合せの情報を保持し、この組合せ情報に基づいて複数の演算装置で実行するステップの割当を行うようにしたので、複数の演算装置に最適な割り振りを行うことができる。
実施の形態1.
図1は、この発明の実施の形態1によるシーケンス処理実行装置を示す構成図である。
図2は、この発明の実施の形態1によるシーケンス処理実行装置における演算装置が保有する手段を示す説明図である。
図3は、この発明の実施の形態1によるシーケンス処理実行装置における共有メモリが保有する手段を示す説明図である。
これらの図において、シーケンス処理実行装置は、シーケンス処理実行部100と、外部機器200と、プログラミング装置300と、共有バス400とを備えている。
シーケンス処理実行部100は、実際のシーケンス処理を実行するための装置であり、2台の演算装置110,120と、入出力装置130と、共有メモリ140とを備え、これら演算装置110,120、入出力装置130および共有メモリ140は、共有バス400を介して相互に接続されている。尚、本実施の形態では一例として演算装置を2台設けた場合を説明しているが、この台数に限定されるものではなく、三つ以上の演算装置を保有していてもよい。
各演算装置110,120には、シーケンス処理を実行するためのCPU(中央処理ユニット)111,121と、シーケンス処理に含まれる演算を実行するために必要となるメモリ112,122と、処理時間を計測するためのタイマ113,123を備えている。
また、図2に示すように、各演算装置110,120では、組合せ情報取得手段151ステップ処理時間取得手段152、トランジション処理時間取得手段153を構成している。組合せ情報取得手段151は、実際にSFC(シーケンシャル・ファンクション・チャート)プログラムを動作させた際に、同時に実行されるSFC記述上の複数のステップの組合せの情報を取得する手段であり、ステップ処理時間取得手段152は、SFCプログラムを動作させた際に、実行したSFC記述上のステップの処理時間の情報を取得する手段であり、トランジション処理時間取得手段153は、実際にSFCプログラムを動作させた際に、実行したSFC記述上のトランジションの処理時間の情報を取得する手段である。
尚、これら組合せ情報取得手段151〜トランジション処理時間取得手段153は、それぞれの手段に対応したソフトウェアを、メモリ112,122やタイマ113,123を用いて、CPU111,121が実行することによって実現されるものである。
これら演算装置110,120は、共有バス400によって接続されている。入出力装置130は、外部機器200とのデータおよび信号の入出力を行う装置であり、これらの入出力データを格納する入出力データ格納部131を備えている。共有メモリ140は、複数の演算装置110,120からデータの読み込みおよび書き込みが可能なメモリであり、活性ステップ情報141、活性ステップ組合せ情報142、ステップ処理時間情報143、ステップ対演算装置割当情報144、トランジション処理時間情報145、トランジション対演算装置割当情報146、ステップ閾値データ147、トランジション閾値データ148を保持するよう構成されている。
尚、これら活性ステップ組合せ情報142〜トランジション対演算装置割当情報146は、図3に示す活性ステップ組合せ情報保持手段161〜トランジション対演算装置割当情報保持手段165によって保持されている。即ち、活性ステップ組合せ情報保持手段161が活性ステップ組合せ情報142を、ステップ処理時間情報保持手段162がステップ処理時間情報143を、ステップ対演算装置割当情報保持手段163がステップ対演算装置割当情報144を、トランジション処理時間情報保持手段164がトランジション処理時間情報145を、トランジション対演算装置割当情報保持手段165がトランジション対演算装置割当情報146を各々保持している。
活性ステップ情報141は、SFC言語で記述されたプログラムのステップの実行を制御する情報であり、その時点でアクティブな(活性状態の)ステップの情報を示している。活性ステップ組合せ情報142は、SFCプログラムの同時分岐後の、並列に動作するステップにおいて、実際にどのようなステップの組合せが発生したかを保持するための情報であり、活性ステップ情報141と共に、組合せ情報取得手段151によって取得されるものである。ステップ処理時間情報143は、各ステップを実行した際にどれだけの処理時間がかかったか、その値を保持するための情報であり、ステップ処理時間取得手段152によって取得されるものである。ステップ対演算装置割当情報144は、各ステップをどの演算装置110,120上で実行させるかを指定するための情報であり、後述するステップ対演算装置割当部304によって生成されるものである。
トランジション処理時間情報145は、各トランジションを実行した際に、どれだけの処理時間がかかったかその値を保持するための情報であり、トランジション処理時間取得手段153によって取得されるものである。トランジション対演算装置割当情報146は、各トランジションをどの演算装置110,120上で実行させるかを指定するための割当情報であり後述するトランジション対演算装置割当部306によって生成されるものである。ステップ閾値データ147は、ステップに関連する処理に対する閾値を示すデータであり、トランジション閾値データ148は、トランジションに関連する処理に対する閾値を示すデータである。
外部機器200は、シーケンス処理実行部100が制御対象とする機器であり、入出力装置130を介してデータの授受を行うようになっている。
プログラミング装置300は、シーケンス処理実行部100とは別装置として設けられ、SFCプログラムを作成すると共に、作成したSFCプログラムを、演算装置110,120で実行可能なコードに変換してシーケンス処理実行部100に供給する装置であり、入力部301、プログラムコード変換部302、データ取得部303、ステップ対演算装置割当部304、データ送信部305、トランジション対演算装置割当部306を備えている。入力部301は、SFCプログラムの入力機能を構成し、プログラムコード変換部302は、演算装置110,120上のCPU111,121でプログラムを実行させるために必要となるプログラムコードの変換機能を構成している。データ取得部303は、シーケンス処理実行部100の共有メモリ140に保持された活性ステップ組合せ情報142と、ステップ処理時間情報143を、シーケンス処理実行部100から取り込むための機能を構成している。
ステップ対演算装置割当部304は、ステップ割当手段に相当するもので、シーケンス処理実行部100から取り込んだ、活性ステップ組合せ情報142とステップ処理時間情報143から、SFCのどのステップをどの演算装置上で実行させるかを決定し、ステップ対演算装置割当情報144を生成するための機能を構成している。データ送信部305は、SFCプログラムの各ステップをどの演算装置上で実行させるかを指定するステップ対演算装置割当情報をシーケンス処理実行部100の共有メモリ140上の対応する情報領域に書き込むためのデータ送信機能である。また、トランジション対演算装置割当部306は、トランジション割当手段に相当するもので、シーケンス処理実行部100から取り込んだトランジション処理時間情報145に基づいて、SFCのどのトランジションをどの演算装置上で実行させるかを決定し、トランジション対演算装置割当情報146を生成するための機能を構成している。
また、共有バス400は、シーケンス処理実行部100内の演算装置110,120と入出力装置130および共有メモリ140を接続すると共に、シーケンス処理実行部100とプログラミング装置300とを接続するデータの通信路を構成している。
次に、このように構成されたシーケンス処理実行装置の動作について説明する。
最初に、利用者がプログラミング装置300上で、SFCプログラムを作成する。作成したSFCはプログラミング装置300上のプログラムコード変換部302で、演算装置110,120上のCPU111,121で実行可能な実行可能コードに変換される。また、複数の演算装置110,120では、各々を識別するためのID番号が付加されている。更に、複数の演算装置110,120においては、いわゆる主(マスタ)となる演算装置が一つ規定されている。本実施の形態では、その主となる演算装置を演算装置110とする。その主となる演算装置110は、並列に実行可能なステップが存在しない場合、即ち一つしか実行可能なステップが存在しない場合に処理が実行される演算装置である。
プログラミング装置300上で、実行可能コードに変換されたSFCプログラムは、特に何も指定していなければ、主の演算装置110上で実行される形態となる。この事は、SFCプログラム開発者が、ステップ対演算装置割当部304を使用しない場合に、ステップ対演算装置割当情報144に設定される値が、何も規定されない、もしくは、主となる演算装置110を示すID番号が規定されることを表している。
プログラミング装置300から、本実施の形態では共有バス400を介してシーケンス処理実行部100と通信を行い、シーケンス処理実行部100の各演算装置110,120が保有するメモリ112,122に、実行可能コードがロードされ、シーケンス処理実行部100上でシーケンス処理の実行が開始可能となる。以下、シーケンス処理実行部100上でのシーケンス処理の実行方法について説明する。
シーケンス処理実行部100上では、一定周期毎に図示していないトリガが入出力装置130に対し、処理の実行を通知する。入出力装置130では、トリガによる処理の実行の通知により、接続された外部機器200の状態を、通信により内部の入出力データ格納部131に取り込む。取り込みが完了した後、各演算装置110,120に処理の実行を、図示していないトリガにより通知する。各演算装置110,120は、共有メモリ140上のステップ対演算装置割当情報144を各々読み取り、各々自身に割り振られている、即ちステップ対演算装置割当情報144で、各ステップに指定されている演算装置のIDが、自身のIDと同じであるならば、そのステップを自身が処理しなければならないと認識し、そのステップが活性状態であるかを、共有メモリ140上の活性ステップ情報141で確認する。もし、ステップが活性状態ならば、ステップに関連付けられている処理を実行する。もし活性状態でないのならば何もしない。
各演算装置110,120が、自身に割り振られているステップに対応する処理を全て完了すると、図示していない同期手段により、他の演算装置のステップに対応する処理の完了を待ち合わせる。全ての演算装置110,120のステップに対応する処理が完了すると、全ての演算装置110,120の待ち合わせは解除され、トランジションの処理の実行を開始する。
トランジションの処理の実行も、ステップの場合と同じように、共有メモリ140上に存在しているトランジション対演算装置割当情報146を、各演算装置110,120が各々読み取り、各トランジションに指定されている演算装置のIDが、自身のIDと同じであるならば、そのトランジションを自身が処理しなければならないと認識し、トランジション演算を行う。各演算装置110,120が自身に割り振られているトランジションに対応する処理を全て完了すると、図示していない同期処理により、他の演算装置のトランジションに対応する処理の完了を待ち合わせる。全ての演算装置のトランジションに対応する処理が完了すると、全ての演算装置の待ち合わせは解除され、入出力装置130からの処理開始のトリガを待つ状態に入る。
また、全ての演算装置110,120のトランジションに対応する処理が完了し、全ての演算装置110,120の待ち合わせが解除されたならば、先の主(マスタ)となる演算装置から、図示していない方法で、処理の完了通知が入出力装置130に通知される。入出力装置130では、処理の完了通知を受け取ると、先のステップに関連付けられている処理の結果により更新された入出力データ格納部131上の出力情報を外部機器200に、通信により出力し、次の入出力装置130へのトリガを待つ。このように、シーケンス処理実行部100上では、シーケンス処理が実施される。
このようにシーケンス処理実行部100上でシーケンス処理が実行されるため、一定周期毎の処理の開始のトリガが入った後に、外部機器200から入力となるデータを読み取り、できるだけ短い時間でステップおよびトランジションに関係する処理を実行し、外部機器200へ結果を出力できれば、外部機器200に対して素早い応答性を持つ処理を実行できるため、その高速化が望まれている。
また、シーケンス処理実行部100上で、一定周期毎のトリガで処理の開始をするのではなく、全てのトランジションに関連する処理が完了し、入出力装置130が、外部機器200への出力を完了すると同時に、次の処理を開始するという動作モードも一般的に利用可能である。このケースにおいても、できるだけステップおよびトランジションに関連する処理を高速化することが、素早い応答性と、短い周期で処理を繰り返すことによるきめ細かな処理の実現性から望まれている。処理の高速化は、複数の演算装置を持つシーケンス処理実行装置上で考えると、少しでも短い時間で全ての演算装置に割り振られたステップおよびトランジションに関連する処理を完了できるという事であるため、これを実現できる、いわゆる最適な、ステップおよびトランジションの各演算装置への割り振り方法の実現が必要である。
次に、シーケンス処理実行部100上で、SFCプログラム記述に対応させ、シーケンス処理がどのように実行されるかについて説明する。尚、以下の説明で、ユーザがプログラミング装置300において、図4に示すようなSFCプログラムを記述し、本SFCプログラムに対応した実行コードをシーケンス処理実行部100上で動作させる形態に対する説明を行う。
シーケンス処理の実行が開始されると、シーケンス処理実行部100上では、最初に実行するステップを検出し、そのステップに付随する処理を実行する。一般的にSFC記述では“イニシャルステップ”と呼ばれる最初に実行されるステップの存在が規定されている。イニシャルステップはSFCプログラム記述上で指定し、本シーケンス処理実行部100上では、そのイニシャルステップの、活性ステップ情報141が、最初から活性状態である事でイニシャルステップを認識できるようになっている。図4におけるイニシャルステップを、ここではステップSTEP1であるとする(以下、SFCプログラム記述上のステップを図4に図示しているように英字のSTEPで表す)。
STEP1に付随するステップのトランジション条件TR1が成立するまでは、常にSTEP1に関連付けられた処理が実行される。トランジション条件TR1が成立するとは、トランジションTR1に関連付けられた処理が実行され、その結果の論理値が真となる事を意味している。トランジション条件TR1が成立すると、SFC記述上、STEP2、STEP3、およびSTEP4が並列に実行可能となる。ステップ対演算装置割当情報144に明確な演算装置割当が行われていない場合、各ステップは主(マスタ)となる演算装置上で実行される(もしくはユーザが明確に演算装置割当を行わない場合、自動的に主(マスタ)となる演算装置上で実行されるという設定となる)ように指定されているため、主となる演算装置上でSTEP2、STEP3、およびSTEP4に関連付けられた処理の実行が行われる。その際、各ステップにおいて、処理時間がどれだけかかったが、各演算装置上に保有されているタイマ113および123により取得される。
タイマ113および123は、いわゆるフリーランカウンタであり、各ステップの実行を開始した時点と、ステップの実行を終了した時点のタイマ値が、各々CPU111および121で取得され、その差分により処理時間が計算される。差分として計算された処理時間は、ステップの処理時間として共有メモリ140上に存在するステップ処理時間情報143に保持される。尚、シーケンス処理実行中、何度も実行されるステップ(一般的に各ステップは非活性になるまで何度も実行される)に対しては、上記差分として計算される処理時間は、処理内容の条件分岐等により、毎回異なる値になる場合も多い。
ステップの処理時間として、共有メモリ140上のステップ処理時間情報143に保持される時間情報としては、“(1)計測した処理時間の中で最大値”、“(2)これまで計測した処理時間の平均値”が考えられる。シーケンス処理実行部100では、(1)の最大値のみ、(2)の平均値のみ、もしくは両方の値を保持しておく事も可能である。ステップに関連付けられた処理時間が、最大値もしくは平均値のどちらに対応する値であるかという事は、各演算装置にステップを割り振る際の最適化を考える場合に、最悪値が最適に割り振られるようにする、もしくは平均値が最適に割り振られるようにする、のどちらの戦略をとるかに係るため、ユーザは、このどちらか、もしくは両方を選択して、ステップ処理時間情報143に保持し、後段の割り振り処理で使用することが可能となる。
また、ステップだけではなく、同じくトランジションに関連する処理も、タイマ113および123により取得され、同じく最大値、平均値もしくは両方の値をトランジション処理時間情報145に保持している。
また、ある時点で、実際に実行したステップの組合せとして発生した情報を、共有メモリ140上に存在する活性ステップ組合せ情報142に保持する。実際に実行したステップの組合せとは、ある時点で、活性となったステップが複数存在した事を意味しており、その同時に活性化されたのが、どのステップであったかが、活性ステップ組合せ情報142に保持されることになる。図4のTR1成立後の時点では、{STEP2,STEP3,STEP4}が活性化され、かつ処理が実行されるため、この三つのステップの組合せが実行されたという情報を、活性ステップ組合せ情報142に保持する。
その後、各ステップの後段のステップのトランジション条件(TR2,TR3,TR4)が成立するまで、各ステップは毎回実行され、また各ステップの処理時間は計測および保持され、また発生したステップの組合せは、常に共有メモリ140上に保持される。但し、活性ステップ組合せ情報142は、同時に活性したステップの組合せを知るためだけの情報であるため、履歴を持ったステップの組合せ情報としては保持されない。
トランジション条件は、入出力装置130を介して外部機器200と通信をした結果による外部要因と、内部的なステップに関連する処理の実行結果により真偽が確定し、各々のトランジションに関連するステップが遷移を行う。最終的に、トランジション条件TR8が成立し、STEP11という一つのステップの実行になるまで、図4に記載された
STEP2−[TR2]→STEP5−[TR5]→STEP8
STEP3−[TR3]→STEP6−[TR6]→STEP9
STEP4−[TR4]→STEP7−[TR7]→STEP10
の三つのシーケンスが並列に実行されるが、実際に発生したステップの組合せは、単純にステップの組合せで計算される27種類(=3×3×3)ではなく、図5に記載するように6種類だったとする。
この例は、
STEP4の実行によりTR4が成立しSTEP7に遷移
STEP7の実行によりTR2が成立しSTEP5に遷移
STEP5の実行によりTR3が成立しSTEP6に遷移
STEP6の実行によりTR5およびTR6が成立しSTEP8、STEP9に遷移
STEP8の実行によりTR7が成立しSTEP10に遷移
STEP8,STEP9,STEP10の実行によりTR8が成立しSTEP11に遷移
という制御的な依存性が存在し、その挙動として、この6種類のステップの組合せが発生した場合を示すものである。
この6種類のステップの組合せは、その各々のステップの実行時間が共有メモリ140上のステップ処理時間情報143に保持されると共に、この6種類の組合せが発生したことが同じく共有メモリ140上の活性ステップ組合せ情報142に保持されている。
ここでステップの処理時間(ステップ処理時間情報143)において、先述の“最大値”を選択し、その値を元にステップの割り振りを行う場合を例示する。また、その最大値は図6に示すような値であったとする。もし最大値ではなく“平均値”を考える場合には、以下の扱いとしては全く同じであり、図6の値が平均値の値だったとしても、以下の割り振り方式を実施することが可能である。
利用者は、シーケンス処理実行部100上で、利用者が規定したある期間、シーケンス処理動作を実行する。実行させるシーケンス処理動作の方法であるが、シーケンス処理実行部100に実際に外部機器200を接続し、外部機器200の制御を行うという、実際のシーケンス処理実行部100の使用環境で発生する全ての実動作を実施する場合が考えられる。また、接続される外部機器200として、実際の使用環境を模擬する装置を接続し、作成したSFCプログラムのテストを行うための、全ての可能な実行パターンでテスト実行させる場合も考えられる。このように何かしら利用者が規定したある期間でのプログラム動作を行った後、利用者はプログラミング装置300を使用し、シーケンス処理実行部100の共有メモリ140上に保持されている、活性ステップ組合せ情報142とステップ処理時間情報143およびトランジション処理時間情報145を取得する。
次に、プログラミング装置300上では、取得した活性ステップ組合せ情報142とステップ処理時間情報143およびトランジション処理時間情報145から、各ステップをどの演算装置上で実行させるべきかの割り振りの判定を行う。トランジションにかかる処理時間は一般的にステップの処理時間よりも小さいため、ここでは説明を簡略化するためトランジションにかかる処理時間を無視し、ステップの処理時間のみで割り振りを行う方法について説明する。トランジションの処理時間も含めて判定する場合については、以下の説明の後に行う。
割り振りの判定では、ある時点で並列に処理されるステップの組合せにおいて、各ステップを、存在する演算装置の、どのID番号を持つ演算装置に割り振ると、そのステップの組合せは、各演算装置上でどれだけの処理時間になるか、を導出し、各演算装置上の処理時間の最大値が、全てのステップの組合せに対し最小になるように決定する手段を講じる。この手段は、プログラミング装置300上のステップ対演算装置割当部304により実施される。この割当方法を、フローチャートに沿って具体的に説明する。
図7は、割当処理を示すフローチャートである。
ステップ対演算装置割当部304は、最初に、発生したステップの組合せの中に存在するステップを全て認識する。図5から、ステップとして
{STEP2,STEP3,STEP4,STEP5,STEP6,STEP7,STEP8,STEP9,STEP10}
の9個のステップが存在することが認識される(ステップST1)。次に、任意のステップに対し任意の演算装置への割り振りを一つ設定する(ステップST2)。本実施の形態では演算装置110と演算装置120という二つの演算装置が存在するので、設定として、例えば、図8に示すようなステップと演算装置の組合せを考える。この場合、発生したステップの組合せにおける各演算装置110,120での処理時間の総和は図9のようになる。
図9中で、各演算装置110,120における処理時間総和の最大(MAX)は、
MAX(MAX(演算装置1),MAX(演算装置2))
であり、結果として、「105μs」が、この演算装置へのステップの割り振りでの時間となる(ステップST4)。そして、試した割り振りは最初の1回目であるため、この値がこれまでの最小値として保持すると共に、上記のステップの各演算装置110,120への割り振りを保持しておく(ステップST6)。次のステップST7において、ステップの演算装置への割り振りが全てテストされていないため、ステップST2に戻り、次の組合せとして例えば図10に記載された組合せを考える。このケースでは、図11のように、ステップの組合せにおける各演算装置での各処理時間が計算される(ステップST3)。
この場合の各演算装置における累積処理時間の最大(MAX)となる
MAX(MAX(演算装置1), MAX(演算装置2))は、
60μs
として計算される(ステップST4)。これは、前回求めた105μsよりも小さいため(ステップST5)、この値を最小値として設定し、この場合のステップの演算装置への割り振りを保存しておく(ステップST6)。そして、全ての演算装置110,120への割り振りを完了するまで、割り振りのテストを進める(ステップST7)。図6に示した処理時間となる例では、図10および図11に対応する、60μsを下回る割り振りの組合せは存在しないため、この割り振り結果が、ステップの演算装置110および演算装置120への割り振りの中で最適な結果となり、従って、図10で示す割り振りを確定する。
トランジションの各演算装置への割り振り方法であるが、上記のように、一般的にトランジションの処理時間は短いため、その値を無視して、ステップの処理時間のみで割り振りを考え、ステップの割り振りが確定した後、各ステップに関連するトランジション(各ステップに後続するトランジション)を同じ演算装置に割り振るという方法もある。また、各ステップに関連するトランジションの処理時間を、関連するステップの処理時間に加算し、その値を元に、上記のようにステップの割り振りを決め、各トランジションが関連するステップの割り振りを、トランジション側にも設定するという方法もある。また、トランジションは、トランジションのみで、上記手段により最適割り振りを求め、設定するという方法もある。
トランジションのみで最適割り振りを求める場合、SFC言語で記述されたプログラムを複数の演算装置110,120で、実際にプログラムを動作させた際のトランジションの処理時間を計測してトランジション処理時間情報145で保持する。そして、トランジション対演算装置割当部306において、トランジション処理時間情報145に基づいて、どのトランジションをどの演算装置110,120で実行させたら良いかを求め、この結果をトランジション対演算装置割当情報146としてシーケンス処理実行部100の共有メモリ140に保持させる。
ステップおよびトランジションの割り振りを確定した後、シーケンス処理実行部100の共有メモリ140上に存在するステップ対演算装置割当情報144およびトランジション対演算装置割当情報146に、プログラミング装置300から書き込みを行う。
その後、シーケンス処理実行部100を動作させる事で、最適にステップの割り振りをした結果での、シーケンス処理の事項が、本シーケンス処理実行部100上で実行される。
この様に確定したステップおよびトランジションの演算装置への割り振りに対し、恒常的に固定化した割り振りで処理を継続的に実施させる事も可能であるが、もしステップやトランジションに関連する処理の実行時間が、割り振りを確定した時の入力とした処理時間から大きく変動した場合、その割り振りが最適でなくなる状況が発生する。そのため、動的にステップおよびトランジションの割り振りを変えたい場合も存在する。
その実現を行うため、シーケンス処理実行部100では、ステップに関連する処理に対するステップ閾値データ147と、トランジションに関連する処理に対するトランジション閾値データ148を設定することが可能であり、シーケンス処理実行部100上の各演算装置110,120で実行されているステップおよびトランジションの処理時間が、設定されているステップ閾値データ147もしくはトランジション閾値データ148を超えた場合に、シーケンス処理実行部100からプログラミング装置300側に、閾値を超えた事を通知する信号が、シーケンス処理実行部100とプログラミング装置300を接続した共有バス400を介して送信される。
設定するステップ閾値およびトランジション閾値の例としては、先に求めた各演算装置の最大処理時間と認識した“60μs”や、何かしらシステムとして規定される、超えられない時間(例えば、一回の処理で100μsを超えると、制御している外部機器に問題が発生する場合には“100μs”を設定)があればそれを設定する。
プログラミング装置300側では、本通知信号が送られると、再度シーケンス処理実行部100から、活性ステップ組合せ情報142と、ステップ処理時間情報143およびトランジション処理時間情報145を取り込み、先述の仕組みで再度ステップおよびトランジションの割り振り処理を行って、更新したステップおよびトランジションの割り振りを再度シーケンス処理実行部100に設定する。また、合わせて、ステップ閾値データ147やトランジション閾値データ148も更新する。更新値として設定する値は、例えば、上記最適な割り振りを実行した際に導出される最大処理時間といった値である。また、シーケンス処理実行部100上で、ステップ閾値もしくはトランジション閾値を超えた場合に、プログラミング装置300に再割り振りのための信号を通知するのではなく、閾値オーバーエラーとして、シーケンス処理実行部100が停止するよう構成してもよい。
本実施の形態で、シーケンス処理そのものは各演算装置110,120上のCPU111,121で実施されるが、それ以外の、上記の説明における、プログラミング装置300との通信といったようなシーケンス処理実行部100上で実行される処理は、各演算装置110,120で、シーケンス処理の実行をしていない時間(一定周期のトリガでシーケンス処理が実行される場合、ステップおよびトランジションの処理の実行を完了した後に、次の処理の開始待ちを行っている間)に各CPU111,121で実行してもよいし、入出力装置130がその機能を有しても良い。
また、本実施の形態では、プログラミング装置300が、共有バス400を介してシーケンス処理実行部100と接続されている形態を示したが、シーケンス処理実行部100とプログラミング装置300とを、RS232CやUSBのような一般的な通信形態で接続しても良い。
以上のように、実施の形態1のシーケンス処理実行装置によれば、SFCで記述されたプログラムを実行し、シーケンス処理を行う複数の演算装置と、複数の演算装置で、実際にプログラムを動作させた際に、同時に実行されるSFC記述上の複数のステップの組合せの情報を保持する組合せ情報取得手段と、組合せの情報に基づいて、複数の演算装置で実行するステップの割当を行うステップ割当手段ととを備えたので、SFCで記述されたプログラムを複数の演算装置に割り振る場合、これら複数の演算装置に最適な割り振りを行うことができる。
また、実施の形態1のシーケンス処理実行装置によれば、プログラムを動作させた際に、実行したSFC記述上のステップの処理時間の情報を取得するステップ処理時間取得手段を備えたので、SFCで記述されたプログラムを複数の演算装置に割り振る場合、これら複数の演算装置に対して更に最適な割り振りを行うことができる。
また、実施の形態1のシーケンス処理実行装置によれば、ステップ割当手段は、組合せ情報取得手段で保持した組合せの情報と、ステップ処理時間取得手段で取得した処理時間の情報とに基づいて、複数の演算装置で実行するステップの割当を行うようにしたので、SFCで記述されたプログラムを複数の演算装置に割り振る場合、これら複数の演算装置により最適な割り振りを行うことができる。
また、実施の形態1のシーケンス処理実行装置によれば、ステップ割当手段は、複数の演算装置とは別装置として設けられ、通信路を介して接続されているようにしたので、どのステップをどの演算装置に割り当てるかの演算を、演算装置外部に保有できるため、シーケンス処理を実行する装置の内部構成を簡単にすることができ、従って、シーケンス処理実行装置の開発が容易になると共に、装置上に機能を実現するために必要となる部品(メモリサイズ等)が少なくなり、ユーザに安価なシーケンス処理実行装置を提供することができる。
また、実施の形態1のシーケンス処理実行装置によれば、ステップ割当手段は、各ステップをどの演算装置に割り当てるかの判定を、各ステップを任意の演算装置に割り振った場合を評価し、組合せ情報に対応する各演算装置でのステップ実行時間を導出し、導出した全てのステップの組合せにおける各演算装置でのステップ実行時間の最大値が、全てのステップを任意の演算装置への割り振った場合の中で最も小さくなるようにステップの割当を決定するようにしたので、ステップを演算装置に割り振る際に、最適なステップの割り振りが可能となるため、より最適に、ユーザが記述したSFCプログラムを実行させることが可能になる。
また、実施の形態1のシーケンス処理実行装置によれば、ステップ処理時間の閾値を示すステップ閾値データを設け、ステップ割当手段は、ステップ処理時間取得手段で取得された処理時間が、ステップ閾値データを超えた場合にステップ割当処理を実行するようにしたので、シーケンス処理実行中に最適なステップの割り振りではない状態が発生した場合でも、再度割り振りを実施できるために、より最適にSFCプログラムを実行することができる。
また、実施の形態1のシーケンス処理実行装置によれば、SFCで記述されたプログラムを実行し、シーケンス処理を行う複数の演算装置と、複数の演算装置で、実際にプログラムを動作させた際に、実行したSFC記述上のトランジションの処理時間の情報を取得するトランジション処理時間取得手段と、トランジション処理時間取得手段の処理時間の情報に基づいて、複数の演算装置で実行するトランジションの割当を行うトランジション割当手段とを備えたので、SFCで記述されたプログラム上に存在する、各トランジションの処理時間を正確に求めることが可能になり、トランジションを複数の演算装置に割り振る際に、より最適な割り振りを実行することを可能とすることができる。
また、実施の形態1のシーケンス処理実行装置によれば、トランジション割当手段は、複数の演算装置とは別装置として設けられ、通信路を介して接続されているようにしたので、どのトランジションをどの演算装置に割り当てるかの演算を、演算装置外部に保有できるため、シーケンス処理を実行する装置の内部構成を簡単にすることができ、従って、シーケンス処理実行装置の開発が容易になると共に、装置上に機能を実現するために必要となる部品(メモリサイズ等)が少なくなり、ユーザに安価なシーケンス処理実行装置を提供することができる。
また、実施の形態1のシーケンス処理実行装置によれば、トランジション割当手段は、各トランジションをどの演算装置に割り当てるかの判定を、各トランジションを任意の演算装置に割り振った場合を評価し、各演算装置でのトランジション実行時間を導出し、導出した全てのトランジションを任意の演算装置への割り振った場合の中でトランジション実行時間が最も小さくなるようにトランジションの割当を決定するようにしたので、トランジションを演算装置に割り振る際に、最適なトランジションの割り振りが可能となるため、より最適に、ユーザが記述したSFCプログラムを実行させることが可能になる。
また、実施の形態1のシーケンス処理実行装置によれば、トランジション処理時間の閾値を示すトランジション閾値データを設け、トランジション割当手段は、トランジション処理時間取得手段で取得された処理時間が、トランジション閾値データを超えた場合にトランジション割当処理を実行するようにしたので、シーケンス処理実行中に最適なトランジションの割り振りではない状態が発生した場合でも、再度割り振りを実施できるために、より最適にSFCプログラムを実行することができる。
実施の形態2.
実施の形態1では、シーケンス処理実行部100に対する、ステップおよびトランジションに関連する処理の各演算装置への割り振りを実行する機能(ステップ対演算装置割当部304およびトランジション対演算装置割当部306)が、シーケンス処理実行部100上ではなく、外部のプログラミング装置300上で、必要な情報を通信しながら実施する形態として説明を行ったが、各演算装置110,120への割り振りを実行する機能(ステップ対演算装置割当部304の機能およびトランジション対演算装置割当部306の機能)がシーケンス処理実行部100上に存在する形態の実現も可能である。即ち、シーケンス処理実行部100において、ステップ割当手段とトランジション割当手段とを備えてもよい。これにより、実際にシーケンス処理実行部100が使用されている、工業プラント、工場のライン等で、プログラミング装置300を使用せずに、シーケンス処理実行部100のみで、処理の割り振りの最適化を行うことが可能になる。
このような構成とした場合、ステップ対演算装置割当部304の機能およびトランジション対演算装置割当部306の機能は、各演算装置110,120の、シーケンス処理を実行していない間(一定周期のトリガでシーケンス処理が実行される場合、ステップおよびトランジションの処理の実行を完了した後に、次の処理の開始待ちを行っている間)に、各演算装置110,120のCPU111,121上で実行する形態が存在する。また、これらのステップ対演算装置割当部304の機能およびトランジション対演算装置割当部306の機能を入出力装置130に持たせ、この入出力装置130において、外部機器200と通信を実施していない間に実行される形態も存在する。
以上のように、実施の形態2のシーケンス処理実行装置によれば、ステップ割当手段を、複数の演算装置と同一装置内に設けるようにしたので、ステップの各演算装置への割り振りを、外部の割当を行う装置を用いずに実施できるため、ユーザが本シーケンス処理実行装置を導入する際に必要となる全体の機器コストを抑えることができる。
また、実施の形態2のシーケンス処理実行装置によれば、トランジション割当手段を、複数の演算装置と同一装置内に設けるようにしたので、トランジションの各演算装置への割り振りを、外部の割当を行う装置を用いずに実施できるため、ユーザが本シーケンス処理実行装置を導入する際に必要となる全体の機器コストを抑えることができる。
この発明の実施の形態1によるシーケンス処理実行装置を示す構成図である。 この発明の実施の形態1によるシーケンス処理実行装置における演算装置が保有する手段を示す説明図である。 この発明の実施の形態1によるシーケンス処理実行装置における共有メモリが保有する手段を示す説明図である。 この発明の実施の形態1によるシーケンス処理実行装置で実行するSFCプログラムの記述例を示す説明図である。 この発明の実施の形態1によるシーケンス処理実行装置で実際に発生したステップの組合せを示す説明図である。 この発明の実施の形態1によるシーケンス処理実行装置で実行するステップの処理時間を示す説明図である。 この発明の実施の形態1によるシーケンス処理実行装置におけるステップ割当処理を示すフローチャートである。 この発明の実施の形態1によるシーケンス処理実行装置におけるステップと演算装置の組合せの一例(その1)を示す説明図である。 この発明の実施の形態1によるシーケンス処理実行装置における図8の組合せの各演算装置の処理時間を示す説明図である。 この発明の実施の形態1によるシーケンス処理実行装置におけるステップと演算装置の組合せの一例(その2)を示す説明図である。 この発明の実施の形態1によるシーケンス処理実行装置における図10の組合せの各演算装置の処理時間を示す説明図である。
符号の説明
100 シーケンス処理実行部、110,120 演算装置、141 活性ステップ情報、142 活性ステップ組合せ情報、143 ステップ処理時間情報、144 ステップ対演算装置割当情報、145 トランジション処理時間情報、146 トランジション対演算装置割当情報、147 ステップ閾値データ、148 トランジション閾値データ、151 組合せ情報取得手段、152 ステップ処理時間取得手段、153 トランジション処理時間取得手段、161 活性ステップ組合せ情報保持手段、162 ステップ処理時間情報保持手段、163 ステップ対演算装置割当情報保持手段、164 トランジション処理時間情報保持手段、165 トランジション対演算装置割当情報保持手段、300 プログラミング装置、304 ステップ対演算装置割当部、306 トランジション対演算装置割当部、400 共有バス。

Claims (12)

  1. シーケンシャル・ファンクション・チャートで記述されたプログラムを実行し、シーケンス処理を行う複数の演算装置と、
    前記複数の演算装置で、実際に前記プログラムを動作させた際に、同時に実行されるシーケンシャル・ファンクション・チャート記述上の複数のステップの組合せの情報を保持する組合せ情報取得手段と、
    前記組合せの情報に基づいて、前記複数の演算装置で実行するステップの割当を行うステップ割当手段と
    を備えたシーケンス処理実行装置。
  2. プログラムを動作させた際に、実行したシーケンシャル・ファンクション・チャート記述上のステップの処理時間の情報を取得するステップ処理時間取得手段を備えたことを特徴とする請求項1記載のシーケンス処理実行装置。
  3. ステップ割当手段は、組合せ情報取得手段で保持した組合せの情報と、ステップ処理時間取得手段で取得した処理時間の情報とに基づいて、複数の演算装置で実行するステップの割当を行うことを特徴とする請求項2記載のシーケンス処理実行装置。
  4. ステップ割当手段は、複数の演算装置とは別装置として設けられ、通信路を介して接続されていることを特徴とする請求項3記載のシーケンス処理実行装置。
  5. ステップ割当手段は、複数の演算装置と同一装置内に設けられていることを特徴とする請求項3記載のシーケンス処理実行装置。
  6. ステップ割当手段は、各ステップをどの演算装置に割り当てるかの判定を、各ステップを任意の演算装置に割り振った場合を評価し、組合せ情報に対応する各演算装置でのステップ実行時間を導出し、導出した全てのステップの組合せにおける各演算装置でのステップ実行時間の最大値が、全てのステップを任意の演算装置への割り振った場合の中で最も小さくなるようにステップの割当を決定することを特徴とする請求項3から請求項5のうちのいずれか1項記載のシーケンス処理実行装置。
  7. ステップ処理時間の閾値を示すステップ閾値データを設け、
    ステップ割当手段は、ステップ処理時間取得手段で取得された処理時間が、当該ステップ閾値データを超えた場合にステップ割当処理を実行することを特徴とする請求項6記載のシーケンス処理実行装置。
  8. シーケンシャル・ファンクション・チャートで記述されたプログラムを実行し、シーケンス処理を行う複数の演算装置と、
    前記複数の演算装置で、実際に前記プログラムを動作させた際に、実行したシーケンシャル・ファンクション・チャート記述上のトランジションの処理時間の情報を取得するトランジション処理時間取得手段と、
    前記トランジション処理時間取得手段の処理時間の情報に基づいて、前記複数の演算装置で実行するトランジションの割当を行うトランジション割当手段と
    を備えたシーケンス処理実行装置。
  9. トランジション割当手段は、複数の演算装置とは別装置として設けられ、通信路を介して接続されていることを特徴とする請求項8記載のシーケンス処理実行装置。
  10. トランジション割当手段は、複数の演算装置と同一装置内に設けられていることを特徴とする請求項8記載のシーケンス処理実行装置。
  11. トランジション割当手段は、各トランジションをどの演算装置に割り当てるかの判定を、各トランジションを任意の演算装置に割り振った場合を評価し、各演算装置でのトランジション実行時間を導出し、導出した全てのトランジションを任意の演算装置への割り振った場合の中でトランジション実行時間が最も小さくなるようにトランジションの割当を決定することを特徴とする請求項8から請求項10のうちのいずれか1項記載のシーケンス処理実行装置。
  12. トランジション処理時間の閾値を示すトランジション閾値データを設け、
    トランジション割当手段は、トランジション処理時間取得手段で取得された処理時間が、当該トランジション閾値データを超えた場合にトランジション割当処理を実行することを特徴とする請求項11記載のシーケンス処理実行装置。
JP2006059789A 2006-03-06 2006-03-06 シーケンス処理実行装置 Pending JP2007241434A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006059789A JP2007241434A (ja) 2006-03-06 2006-03-06 シーケンス処理実行装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006059789A JP2007241434A (ja) 2006-03-06 2006-03-06 シーケンス処理実行装置

Publications (1)

Publication Number Publication Date
JP2007241434A true JP2007241434A (ja) 2007-09-20

Family

ID=38586950

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006059789A Pending JP2007241434A (ja) 2006-03-06 2006-03-06 シーケンス処理実行装置

Country Status (1)

Country Link
JP (1) JP2007241434A (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0651818A (ja) * 1992-08-04 1994-02-25 Omron Corp プログラマブルコントローラ
JPH0728390A (ja) * 1993-06-25 1995-01-31 Okuma Mach Works Ltd プログラマブルコントローラ
JP2002351509A (ja) * 2001-05-25 2002-12-06 Mitsubishi Electric Corp プログラミングツール及びプログラミング方法
JP2006039821A (ja) * 2004-07-26 2006-02-09 Canon Inc マルチプロセッサ搭載システムlsiの制御方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0651818A (ja) * 1992-08-04 1994-02-25 Omron Corp プログラマブルコントローラ
JPH0728390A (ja) * 1993-06-25 1995-01-31 Okuma Mach Works Ltd プログラマブルコントローラ
JP2002351509A (ja) * 2001-05-25 2002-12-06 Mitsubishi Electric Corp プログラミングツール及びプログラミング方法
JP2006039821A (ja) * 2004-07-26 2006-02-09 Canon Inc マルチプロセッサ搭載システムlsiの制御方法

Similar Documents

Publication Publication Date Title
US8346378B2 (en) Programmable controller
US9778630B2 (en) Control device and system program for maintaining global variable and reference data consistency during parallel processing of multiple tasks
CN102667648B (zh) 并行程控
JP5747584B2 (ja) 制御装置およびシステムプログラム
US10365624B2 (en) Slave device, method for controlling slave device, and non-transitory computer-readable recording medium
US10025281B2 (en) Control device and system program, and recording medium
KR102258542B1 (ko) 프로그래머블 컨트롤러, 관리 장치 및 제어 시스템
CN111095138B (zh) 控制装置、控制装置的控制方法、信息处理程序及记录介质
JP4993208B2 (ja) 産業用コントローラ用機器
JP5849592B2 (ja) プログラマブルコントローラシステム、そのプログラミング装置、プログラマブルコントローラ、プログラム、デバッグ方法
JP7298210B2 (ja) 設定情報生成装置、設定情報生成方法、及び制御プログラム
JP2007241434A (ja) シーケンス処理実行装置
US20180074470A1 (en) Apparatus and method for generating program
KR101957400B1 (ko) 프로그래머블 논리 제어 시스템
JP7067869B2 (ja) 画像処理システム、情報処理装置、情報処理方法、および情報処理プログラム
JP5774941B2 (ja) コンフィグレーション装置及びコンフィグレーション方法
CN111143051A (zh) 通过异构资源执行人工神经网络来执行任务的系统和方法
CN111726186A (zh) 嵌入式芯片和外部设备的同步的配置方法及嵌入式芯片
JP4547469B2 (ja) 複数の演算装置によるシーケンス処理実行装置
JP2009289269A (ja) バッファメモリにおけるメモリの割り当て方法
JP6289197B2 (ja) プラント制御装置エンジニアリングツール
JP2009289269A6 (ja) バッファメモリにおけるメモリの割り当て方法
WO2015136686A1 (ja) 情報処理装置及び方法
JP5088566B2 (ja) 割込機能を備えたplc
WO2017208365A1 (ja) 制御装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Effective date: 20071017

Free format text: JAPANESE INTERMEDIATE CODE: A621

RD04 Notification of resignation of power of attorney

Effective date: 20071022

Free format text: JAPANESE INTERMEDIATE CODE: A7424

RD04 Notification of resignation of power of attorney

Effective date: 20080627

Free format text: JAPANESE INTERMEDIATE CODE: A7424

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100330

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100420

A521 Written amendment

Effective date: 20100616

Free format text: JAPANESE INTERMEDIATE CODE: A523

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100921