JP3838124B2 - プログラムの実行方式及びプログラム開発支援装置 - Google Patents
プログラムの実行方式及びプログラム開発支援装置 Download PDFInfo
- Publication number
- JP3838124B2 JP3838124B2 JP2002070856A JP2002070856A JP3838124B2 JP 3838124 B2 JP3838124 B2 JP 3838124B2 JP 2002070856 A JP2002070856 A JP 2002070856A JP 2002070856 A JP2002070856 A JP 2002070856A JP 3838124 B2 JP3838124 B2 JP 3838124B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- execution
- task
- function block
- block
- 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.)
- Expired - Lifetime
Links
Images
Landscapes
- Programmable Controllers (AREA)
Description
【発明の属する技術分野】
この発明は、プログラムからファンクションブロックを呼び出してこれを実行するようにしたプログラムの実行方式、及びプログラムの作成やその支援を行う、プログラム開発支援装置に関する。
【0002】
【従来の技術】
プログラマブルコントローラに対するプログラム規格としてIEC61131−3等がある。このIEC61131−3のプログラミングの構成要素としてファンクションブロックが規定されている。
このファンクションブロックは、プログラムを構造化するためのプログラミング手法であって、データ入力、データ出力及びファンクションブロックの内部変数からなるデータ構造(インスタンス)と、これらのデータを用いて実行されるプログラムとから構成されている。
【0003】
図8は、ファンクションブロックFBの外形を表したものである。矩形がファンクションブロックFB本体を表し、その矩形内の上部中央に示す文字列(図8の場合、“CTU”)101が、このファンクションブロックFBの名称である。矩形左辺に接続される線102は、ファンクションブロックFBへの入力を表し、それと対になる矩形内左辺の文字列103は入力変数名である。同様に、矩形右辺に接続される線104はファンクションブロックFBからの出力を表し、それと対となる矩形内右辺に示す文字列105は出力変数名である。
【0004】
前記プログラム規格IEC61131−3では、プログラムの構造化、カプセル化によるプログラムの可読性の向上並びにメンテナンス性の向上、基本機能のファンクションブロックライブラリ化によるプログラム品質の向上、納期の短期化等の面から、ファンクションブロックによるプログラミングを推奨している。このファンクションブロックによるプログラミングを行う場合には、まず、機能単位等でファンクションブロックを作成し、これらのファンクションブロックを呼び出すプログラムを作成し、このプログラムを、定周期、割り込み、イベント等その実行タイミングの制御単位であるタスクに割りつけることで、プログラムを作成している。
【0005】
図9は、プログラム規格IEC61131−3によるアプリケーションプログラムの構成を示す概念図である。アプリケーションプログラム200は、1つ又は図9に示すように複数のプログラム201及び202と、このプログラム201及び202によって呼び出されるファンクションブロックFB211〜213と、これらに関する定義とから構成されている。
そして、図1に示すように、プログラミングツール1で生成され、コンパイラ2で機械語プログラムに変換されたアプリケーションプログラム200は、伝送装置3によって、制御装置4に送信される。この制御装置4は、制御装置4自身の管理、並びにアプリケーションプログラム200を実行するための基本処理プログラム(OS)221を備えている。この基本処理プログラム(OS)221は、プログラム201、202の実行周期を管理するためのタスク231、232を制御する。
【0006】
このタスク231、232は、プログラムの実行周期の制御単位であって、例えば、定周期或いはイベント等があり、基本処理プログラム(OS)221では、各タスクに登録されているプログラムを、タスク毎に設定されているタイミングで実行するようになっている。
【0007】
【発明が解決しようとする課題】
ここで、上位のプログラムからファンクションブロックを呼び出すようにした場合、ファンクションブロックの実行周期は、このファンクションブロックを呼び出しているプログラムの実行周期と等しくなることになる。
例えば、モータの駆動制御等のフィードバック制御を行うアプリケーションプログラムに適用した場合、例えば、モータの駆動信号を制御するモータの制御部分の方が、フィードバック制御によりモータの駆動量の目標値を設定する上位プログラムよりも高速に実行されるのが一般的である。しかしながら、図10に示すように制御部分のプログラムをファンクションブロックFB215とし、このファンクションブロックFB215の上位のフィードバックループ部分をプログラム205とした場合、プログラム205とファンクションブロックFB215との実行周期は同じになる。このため、モータの駆動制御を行うために比較的短い周期で実行させる必要のあるファンクションブロックFB215の制御周期に、このファンクションブロックFB215を含むプログラム205全体の実行周期を合わせる必要がある。
【0008】
したがって、フィードバックループを必要以上に早い制御周期で実行させることになるため、実行効率が低下するという問題がある。また、このようにフィードバック制御を行うアプリケーションプログラムを実行させるプログラマブルコントローラの性能によっては、高速に実行することの可能なプログラムサイズが制限されるため、真に高速化したい内部制御部分のプログラムサイズが、全体のプログラムサイズによって制限されてしまうという問題がある。
【0009】
そこで、この発明は、上記従来の未解決の問題点に着目してなされたものであり、上位プログラムから呼び出されるファンクションブロックが制約を受けることなく、且つ、プログラム全体の実行効率の低下を回避することの可能な、プログラムの実行方式及びプログラム開発支援装置を提供することを目的としている。
【0010】
【課題を解決するための手段】
上記目的を達成するために、本発明の請求項1に係るプログラムの実行方式は、プログラム及び当該プログラムから呼び出されるファンクションブロックの実行タイミングを個別に設定し、この設定に応じて前記ファンクションブロック及びその呼び出し元のプログラムを対応するタスクに割り付け、前記ファンクションブロック及びその呼び出し元のプログラムを、割り付けられたタスクで実行するようにしたプログラムの実行方式であって、前記プログラムからの出力データを保持する保持手段を設け、前記プログラムは、当該プログラムに割り付けられたタスクの実行タイミングで、前記ファンクションブロックへの出力データを前記保持手段に格納すると共に、当該保持手段に新たにデータが格納されたことを表すフラグを設定し、前記ファンクションブロックは、当該ファンクションブロックに割り付けられたタスクの実行タイミングで前記フラグを参照し、当該フラグに基づき前記保持手段に新たにデータが格納されたことを検出したときにのみ前記保持手段から出力データを入力して前記フラグをリセットし、前記出力データをもとに所定の処理を実行することを特徴としている。
【0012】
また、請求項2に係るプログラム開発支援装置は、プログラムの実行タイミングを設定するタイミング設定手段と、前記プログラムから読み出される機能ブロックの実行タイミングを、前記プログラムとは異なる実行タイミングに設定するブロックタイミング設定手段と、前記プログラムを、前記タイミング設定手段で設定された実行タイミングに対応するタスクに割り付けると共に前記プログラムを実行する処理装置で実行可能な機械語プログラムに変換し、且つ、前記プログラムが呼び出す機能ブロックが、その呼び出し元のプログラムとは別の実行タイミングに設定された別実行ブロックである場合には、前記プログラムを前記タイミング設定手段で設定された実行タイミングに対応するタスクに割り付けると共に、前記別実行ブロックを前記ブロックタイミング設定手段で設定された実行タイミングに対応するタスクに割り付ける変換手段と、を備えたプログラム開発支援装置において、前記別実行ブロックへのその呼び出し元のプログラムからの出力データを保持する保持手段と、前記保持手段に新たにデータが格納されたことを表すフラグと、を備え、前記変換手段は、前記別実行ブロックとその呼び出し元のプログラムとの間のデータ授受状況に基づき、前記プログラムに割り付けられたタスクの実行タイミングで、前記別実行ブロックへのその呼び出し元のプログラムからの出力データを前記保持手段に格納し、且つ前記別実行ブロックは、当該ファンクションブロックに割り付けられたタスクのタイミングで前記フラグを参照し、当該フラグに基づき前記保持手段に新たにデータが格納されたことを検出したときにのみ前記保持手段から出力データを入力して前記フラグをリセットし、前記出力データをもとに所定の処理を実行するように前記機械語プログラムへの変換を行うことを特徴としている。
【0013】
この請求項2に係る発明では、プログラムから呼び出される機能ブロックを、プログラムとは別の実行タイミングに設定するためのブロックタイミング設定手段が設けられ、プログラムを機械語プログラムに変換する際に、プログラム及びこのプログラムとは別の実行タイミングに設定された機能ブロックは、それぞれ指定された実行タイミングに対応するタスクに割りつけられる。
したがって、このプログラムを実行した場合、プログラムはタイミング設定手段で設定された実行タイミングで実行され、一方、プログラムから呼び出される機能ブロックは、ブロックタイミング設定手段で設定された実行タイミングで実行されるから、プログラムとこのプログラムから呼び出される機能ブロックとは、異なる実行タイミングで実行されることになる。
【0015】
また、呼び出し元のプログラムとは別の実行タイミングが設定された別実行ブロックへの呼び出し元のプログラムからの出力データを保持するための保持手段が設けられ、呼び出し元のプログラムからの別実行ブロックへの出力データは呼び出し元プログラムの実行タイミングで保持手段に格納され、別実行ブロックでは、この別実行ブロックの実行タイミングで、前記保持手段からデータを入力するから、呼び出し元のプログラムと別実行ブロックとはそれぞれ異なる実行タイミングで実行されるが、別実行ブロックの処理実行中に、呼び出し元のプログラムによって別実行ブロックへの入力データが更新されることはない。
【0016】
また、保持手段へのデータが更新されたときに、データが更新されたことを表すフラグが設定され、別実行ブロックでは、前記フラグが設定されているときに、保持手段で保持するデータを入力する。したがって、別実行ブロックと、この呼び出し元のプログラムとの実行タイミングが異なることに起因して、プログラムによって保持手段のデータが更新されていないにも関わらず、別実行ブロックが保持手段のデータを入力するといった無駄な処理が行われることが回避される。
【0017】
さらに、請求項3に係るプログラム開発支援装置は、前記プログラムは、前記機能ブロックを用いた回路図で作成されたプログラムであって、前記回路図に基づいて前記データ授受状況を検出する授受状況検出手段を備えることを特徴としている。
この請求項3に係る発明では、機能ブロックを用いた回路図、いわゆる機能ブロック図言語で作成されたプログラムである場合には、前記回路図に基づいて、ブロックタイミング設定手段で設定された機能ブロックと、この機能ブロックの呼び出し元のプログラムとの間のデータ授受状況が検出される。
【0018】
【発明の実施の形態】
以下に、本発明の実施の形態を説明する。
図1は、本発明を適用したプログラマブルコントローラの開発支援装置の一例を示す構成図であって、1はオペレータがプログラムの作成を行うためのプログラミングツール、2は、プログラミングツール1で生成されたプログラムを機械語プログラムに変換するためのコンパイラ、3はコンパイラ2で変換された機械語プログラムを、プログラマブルコントローラ等の制御装置4に入力するための伝送装置である。
【0019】
前記プログラミングツール1は、オペレータがアプリケーションプログラムを作成するための入力装置11、入力装置11での入力に応じて所定のデータを表示するための表示装置12、作成されたアプリケーションプログラム等を記憶するための記録媒体13、及び、前記入力装置11、表示装置12及び記録媒体13を制御する処理装置14を備えている。
なお、前記コンパイラ2はプログラミングツール1の一部としてプログラミングツール1内部に存在してもよく、また、制御装置4側に存在してもよい。また、これらプログラミングツール1、コンパイラ2、制御装置4で保持する機能全てを一つのプログラムとし、パーソナルコンピュータ等で構成するようにしてもよい。
【0020】
そして、処理装置14では、プログラム規格IEC61131−3に準拠する公知のプログラミングツールと同様に、入力装置11での入力に応じて、例えばファンクションブロック図、或いは命令リストによるプログラム作成を支援するための作成画面、或いはタスク割り付け画面等を表示装置12に表示すると共に、所定の情報を記録媒体13に格納する。
図2は、前記タスク割り付け画面Tの一例を示したものである。プログラムの割り付けは、公知のプログラミングツールと同様に、予め作成し記録媒体13に格納しているプログラムを特定する情報、例えば名称を、タスク割り付け画面Tにおいて、前記プログラムの実行周期に対応するタスクと対応させることによって行う。また、プログラムによって呼び出されるファンクションブロックFBも、タスクへの割り付けが可能であり、プログラムの割り付けと同様に、タスク割り付け画面Tにおいて、ファンクションブロックFBを、所望の実行周期に対応するタスクと対応させることによって、ファンクションブロックFBのタスクへの割り付けを行う。なお、ファンクションブロックFBを、その呼び出し元のプログラムと同じ実行タイミングで実行させる場合には、タスクの割り付けは行わない。
【0021】
つまり、図2の場合には、タスクA(TASK−A)にプログラム1〜3(PROG1〜3)が割りつけられ、また、タスクB(TASK−B)にファンクションブロック12(FB12)が割りつけられている。そして、タスクが、このタスクに割りつけられたプログラム或いはファンクションブロックFBの実行タイミングを管理し、予めタスクに割りつけられた実行タイミングで、割りつけられたプログラム或いはファンクションブロックを起動させるようになっている。また、タスクには、このタスクに割りつけられたファンクションブロックFBへの入力データを格納するためのバッファ及びバッファへの書き込みが完了したか否かを表すためのフラグが設けられ、このバッファ及びフラグは各タスク毎に設けられている。
【0022】
図3は、プログラムを、ファンクションブロック図を用いた回路図、いわゆる機能ブロック図言語で作成した場合の、このプログラムに対する、コンパイラ2でのコンパイル手順の一例を示すフローチャートである。
このコンパイラ2は起動されると、まず、図2に示すタスク割り付け画面Tを参照し、タスクに割りつけられているプログラムそれぞれについてプログラム内を検索し、ファンクションブロックFBを呼び出しているか否かを判定する。そして、ファンクションブロックFBを呼び出している場合には、タスク割り付け画面Tでのタスク割り付け情報に基づいて、プログラムにより呼び出されているファンクションブロックFBがこれを呼び出しているプログラムとは異なるタスクに割りつけられているかを判定する(ステップS2)。
【0023】
そして、プログラムにより呼び出されるファンクションブロックFBが、このプログラムとは異なるタスクに割りつけられていない場合には、ステップS4に移行し、設定されたプログラム及びそのタスク割り付け情報とに基づいて、公知のコンパイラと同様にして機械語プログラムへの変換を行う。
例えば、図4(a)に示すように、図2においてタスクA(TASK−A)に割りつけられているプログラムPROG1が、ファンクションブロックFB1及びFB2を呼び出し、ファンクションブロックFB1の出力をファンクションブロックFB2に入力し、その結果を得るようなプログラムである場合には、これら間のデータ授受に関わる部分に相当する、変換後の機械語プログラムは、図4(b)に示すニーモニック表示したプログラムとなる。つまり、ファンクションブロックFB1の出力A及びBをファンクションブロックFB2の入力C及びDにコピーし(41)、ファンクションブロックFB2を呼び出す(42)。そして、ファンクションブロックFB2の出力E、Fを、これを参照するための変数G、Hにコピーする(43)。
【0024】
一方、ステップS2でファンクションブロックFBを呼び出しているプログラムがあり且つこのプログラムにより呼び出されるファンクションブロックFBがその呼び出し元のプログラムとは異なるタスクに割りつけられている場合には、ステップS6に移行し、ファンクションブロックがタスクに割り付けされた時のコンパイル処理を行う。
つまり、タスクに割りつけられたファンクションブロックFBを呼び出していないプログラムについては、前記ステップS4と同様に公知の手順にしたがって機械語への変換を行う。
【0025】
一方、タスクに割りつけられたファンクションブロックFBを呼び出しているプログラムについては、機械語プログラムへの変換を同様に行うが、機能ブロック図言語からなるプログラムにおいて、回路図におけるファンクションブロックFBとの接続状況から、ファンクションブロックFBとその呼び出し元のプログラムとの間のデータの授受状況を検出する。そして、このデータの授受状況に基づいて、タスクに割りつけられたファンクションブロックFBへの出力を、このファンクションブロックFBが割りつけられたタスクに設けられたバッファの所定領域に格納し、タスクに割りつけられたファンクションブロックFBはこのバッファの所定領域に格納された、このファンクションブロックFBに対応するデータを入力するように機械語プログラムへの変換を行う。
【0026】
例えば、図5(a)に示すように、図2に示すプログラムPROG2が、ファンクションブロックFB11及びFB12を呼び出し、ファンクションブロックFB11の出力をファンクションブロックFB12に入力してこのファンクションブロックFB12 の出力を得るようなプログラムであり、且つファンクションブロックFB12がプログラムPROG2とは異なるタスクB(TASK−B)に割りつけられた場合には、これらファンクションブロックFB間のデータの授受部分に相当する変換後の機械語プログラムは、図5(b)に示す、ニーモニック表示したプログラムとなる。
【0027】
つまり、タスクA(TASK−A)に割りつけられたプログラムPROG2は次の処理となる機械語プログラムに変換される。ファンクションブロックFB11の出力A及びBを、タスクB(TASK−B)に設けられているバッファ51の変数C′及びD′へコピーし(56)、タスクB(TASK−B)に設けられている書き込み完了フラグFLG52を書き込み完了に設定する(57)。そして、タスクB(TASK−B)に割りつけられたファンクションブロックFB12の出力E及びFを、これを参照するための、プログラムPROG2上の変数G及びHにコピーする(58)。
【0028】
一方、タスクB(TASK−B)に割りつけられたファンクションブロックFB12は、図6に示す手順となる機械語プログラムに変換される。すなわち、まず、書き込み完了フラグFLG52を参照し、ここに、書き込み完了を表すTRUEが設定されているかどうかを判定する(ステップS11)。そして、TRUEが設定されている場合には、ステップS12に移行し、バッファ51の変数C′及びD′をファンクションブロックFB12の入力変数C及びDにコピーした後、ステップS13に移行して書き込み完了フラグFLG52を、読み取り完了を表すOFFに設定し、ステップS14に移行してファンクションブロックFB12をコールする。
【0029】
一方、ステップS11で書き込み完了フラグFLG52に書き込み完了を表すTRUEが設定されていない場合には、そのままステップS14に移行する。
つまり、ファンクションブロックFB12での処理結果がバッファ51に書き込まれて更新されたときに、バッファ51のデータをファンクションブロックFB12の入力C、Dにコピーし(ステップS11、S12)、書き込み完了フラグFLG52をOFFにした後(ステップS13)、ファンクションブロックFB12をコールする(ステップS14)。そして、書き込み完了フラグFLG52がOFFである間は、所定のタイミングでファンクションブロックFB12を繰り返し呼び出し(ステップS14)、書き込み完了フラグFLG52がFLG=TRUEとなりそのデータが更新されたときにバッファ51のデータをファンクションブロックFB12にコピーし(ステップS12)、書き込み完了フラグFLG52をOFFにする。
【0030】
このようにすることによって、データが更新されていないのにも関わらずバッファ51からファンクションブロックFB12へのコピーを行うことによって不要な処理を行うことを回避するようになっている。
したがって、このような手順で変換された機械語プログラムを伝送装置3によって制御装置4に伝送し、制御装置でこの機械語プログラムを実行することによって、図2に示す割り付けが行われたアプリケーションプログラムは、そのプログラムPROG1〜3は、タスクAで規定されるタイミングで実行制御が行われると共に、ファンクションブロックFB12は、タスクBで規定されるタイミングで実行制御が行われる。そして、ファンクションブロックFB12を呼び出すプログラムPROG2においては、プログラムPROG2を実行制御するタスクAと、ファンクションブロックFB12を実行制御するタスクBとの間で、図5(a)に示すように、データの授受が行われ、ファンクションブロックFB12は、プログラムPROG2とは異なる実行タイミングで実行されることになる。
【0031】
また、例えば前記従来の図9に示すアプリケーションプログラム200の構成において、ファンクションブロックFB213をプログラム202とは異なる制御周期で実行する場合には、表示装置12のタスク割り付け画面Tにおいて、図7に示すように、タスク231にプログラム201を割り付け、タスク232にプログラム202を割り付け、さらに、プログラム202において呼び出しているファンクションブロックFB213をタスク233に割り付け、これをコンパイラ2で変換する。
【0032】
これによって、プログラム201及びプログラム202は、従来と同様にして機械語プログラムへの変換が行われるが、プログラム202においては、ファンクションブロックFB213がタスク233に割りつけられているから、プログラム202では、プログラム201からの入力であるファンクションブロックFB213への入力を、タスク233に設けた図示しないバッファにコピーすると共に、タスク233に設けた図示しない書き込み完了フラグFLGを書き込み完了に設定し、さらに、ファンクションブロックFB213の出力を、これを参照するための、プログラム202上の変数Fにコピーするように変換される。また、ファンクションブロックFB213については、図6のフローチャートに示すように、書き込み完了フラグFLGが書き込み完了に設定されているときにタスク233に設けられた図示しないバッファのデータをファンクションブロックFB213の入力にコピーしてファンクションブロックFB213をコールし、書き込み完了フラグFLGが書き込み完了に設定されていないときにはバッファのデータのコピーを行わず、ファンクションブロックFB213をコールするように変換される。
【0033】
そして、このようにして機械語プログラムに変換された図7に示すアプリケーションプログラムを実行すると、プログラム201は、タスク231で規定されるタイミング、プログラム202はタスク232で規定されるタイミングで実行されるが、このプログラム202で呼び出されるファンクションブロック213はタスク233で規定されるタイミングで実行される。
このように、ファンクションブロックFBを、これを呼び出しているプログラムとは別のタイミングで実行させることができる。したがって、ファンクションブロックFBが、例えばフィードバック制御による制御処理を行うファンクションブロックFBである場合であっても、このファンクションブロックFBをその上位プログラムとは異なるタスクに割りつけることによって、ファンクションブロックFB及びその上位プログラムをそれぞれに適したタイミングで実行することができる。
【0034】
よって、従来のように必要以上の制御周期で上位プログラムを実行させる必要がないから、真に高速に動かしたい処理を、処理時間、また、プログラム容量等の観点からみて、効率よく実行させることができる。
また、タスクに割りつけられたファンクションブロックFBでは、書き込み完了フラグを設け、これに書き込み完了が設定されているときにのみ、バッファのデータをファンクションブロックFBにコピーするようにしているから、ファンクションブロックFBとこのファンクションブロックFBの呼び出し元のプログラムとの実行タイミングが異なることに起因して、バッファのデータが更新されていないにも関わらず、バッファのデータをファンクションブロックFBの入力にコピーするといった不要な処理を行うことを回避することができる。
【0035】
また、バッファを設け、タスクに割りつけられたファンクションブロックFBに入力するためのデータを一旦バッファに格納し、このバッファからファンクションブロックFBへのデータをコピーするようにしたから、タスクに割りつけられたファンクションブロックFBとこのタスクの呼び出し元のプログラムとのタスクが異なり、つまり、実行周期が異なることに起因してファンクションブロックFBが処理実行中に、ファンクションブロックFBへの入力データが書き換えられてしまうことを回避することができる。
【0036】
また、機能ブロック図言語で作成された、ファンクションブロックFBを含む回路図をもとに、ファンクションブロックFB間或いはプログラム間の接続状況から、ファンクションブロックFB間或いはプログラム間のデータの授受状況を検出し、これに基づいて、呼び出し元のプログラムとは別のタスクに割りつけられたファンクションブロックFBへの入力データの格納先のバッファ、或いは別タスクに割りつけられたファンクションブロックのデータの入力元のバッファ、及びこのファンクションブロックの出力データのコピー先等といった、データの授受状況を解析し、これに基づいて機械語プログラムに変換するようにしたから、オペレータはタスク割り付け画面Tにおいて、プログラムをタスクに割りつける場合と同様の手順で、ファンクションブロックFBを所望のタスクに割りつけるといった簡単な操作を行うだけで、ファンクションブロックFBを、その呼び出し元のプログラムとは別の実行タイミングで容易に実行させることができる。
【0037】
なお、上記実施の形態においては、タスクに1つのファンクションブロックFBを割りつけるようにした場合について説明したが、複数のファンクションブロックFBを同一のタスク或いは個別のタスクに設定することも可能であり、この場合も上記実施の形態と同様に処理を行うようにすればよい。
また、同一のタスクに複数のファンクションブロックFBが設定された場合には、ファンクションブロックFB毎にそれぞれに対応するバッファ領域を設けるようにすればよい。このとき、プログラムから呼び出される複数のファンクションブロックFBが、同一のタスクに割りつけられている場合には、各ファンクションブロックFB毎に書き込み完了フラグFLGを設ける必要はなく、各ファンクションブロックFBへの入力データをバッファにコピーした後に、書き込み完了フラグFLGを書き込み完了に設定するようにしてもよい。
【0038】
また、上記実施の形態においては、機能ブロック図言語で作成されたプログラムに対してコンパイルを行うようにした場合について説明したが、これに限るものではなく、例えば命令リストによるプログラムをコンパイルするようにした場合であっても適用することができる。この場合には、図2に示すようなタスク割りつけ画面Tにおいて、タスクの割り付けを行うと共に、呼び出し元のプログラムとは異なるタスクに割りつけられたファンクションブロックFBへの入力データを、バッファにコピーすると共に割り付け完了フラグFLGを書き込み完了に設定し、つまり、図5(b)に示すような処理を行うプログラムリストを作成し、前記ファンクションブロックFBでは、バッファからデータを入力データとしてコピーしこれをもとに処理を行うように、プログラム作成時に、オペレータが設定するようにすればよい。このようにすることによって、上記と同等の作用効果を得ることができる。
【0039】
また、上記実施の形態においては、ファンクションブロックFBの出力をその呼び出し元のプログラム上の出力変数にコピーするようにしているが、このとき、ファンクションブロックFBの出力と呼び出し元のプログラムの出力変数とに設定されているデータの間で、データの一意性を保証する必要がある場合には、ファンクションブロックFBの出力をその呼び出し元のプログラムの出力変数にコピーする処理の前後で、割り込み処理を禁止する等の処理を行うようにすればよい。
【0040】
また、上記実施の形態においては、プログラマブルコントローラのプログラム開発支援装置に適用した場合について説明したが、これに限らず、プログラムからファンクションブロックを呼び出してこれを実行するようにしたプログラムの開発支援装置に広く適用することができる。
また、上記実施の形態においては、図2に示すように、ツリー構造からなるタスク割り付け画面Tを用いた場合について説明したが、これに限らず、ファンクションブロックFBをタスクに割りつけることが可能であればよい。
【0041】
なお、上記実施の形態において、表示装置12に表示されるタスク割り付け画面Tがタイミング設定手段及びブロックタイミング設定手段に対応し、コンパイラ2が変換手段に対応し、バッファ51が保持手段に対応し、書き込み完了フラグFLGがフラグに対応し、図3のステップS6の処理で、機能ブロック図言語からなるプログラムにおいて、タスクに割りつけられているファンクションブロックFBの接続状況から、ファンクションブロックFBとその呼び出し元のプログラムとの間のデータの授受状況を検出する処理が授受状況検出手段をに対応している。
【0042】
【発明の効果】
以上説明したように、本発明の請求項1に係るプログラムの実行方式によれば、プログラム及びこのプログラムから呼び出されるファンクションブロックの実行タイミングを個別に設定し、この設定に応じて前記ファンクションブロック及びその呼び出し元のプログラムを対応するタスクに割り付け、これらを割り付けられたタスクで実行するようにしたから、ファンクションブロック及びプログラムをそれぞれに適した実行タイミングでなんら制約を受けることなく駆動することができ、プログラム全体の実行効率が低下することを回避することができる。
【0043】
また、ファンクションブロックへのプログラムからの出力データを保持手段に格納しておき、ファンクションブロックは前記保持手段から前記出力データを入力するようにしたから、ファンクションブロックが処理実行中に、ファンクションブロックに入力される前記プログラムからの出力データが更新されることを回避することができる。
また、保持手段に新たにデータが格納されたかどうかを表すフラグを設け、これに基づき保持手段に新たにデータが格納されたと判定されるとき、保持手段から出力データを入力するようにしたから、同じ出力データを入力するといった無駄な動作を行うことを回避することができる。
【0044】
また、請求項2に係るプログラム開発支援装置によれば、プログラムから呼び出される機能ブロックを、プログラムとは別の実行タイミングに設定するためのブロックタイミング設定手段を設け、プログラムを機械語プログラムに変換する際に、それぞれ指定された実行タイミングに対応するタスクに割りつけるようにしたから、プログラムから呼び出される機能ブロックと、その呼び出し元のプログラムとを異なる実行タイミングで実行することができる。
【0045】
また、別実行ブロックへの呼び出し元のプログラムからの出力データを保持手段に格納し、別実行ブロックでは、この保持手段からデータを入力するようにしたから、呼び出し元のプログラムと別実行ブロックとが異なる実行タイミングで実行されることに起因して、別実行ブロックが処理を実行中に、別実行ブロックに入力されるデータが更新されることを回避することができる。
【0046】
また、保持手段に新たにデータが格納されたときに、新たにデータが格納されたことを表すフラグを設定し、別実行ブロックでは、当該別実行ブロックの実行タイミングで、前記フラグが設定されているときに、保持手段で保持するデータを入力するようにしたから、保持手段のデータが新たに格納されておらずすなわち更新されていないときに、保持手段のデータを入力するといった、無駄な処理を行うことを回避することができる。
【0047】
さらに、請求項3に係るプログラム開発支援装置によれば、機能ブロックを用いた回路図に基づいて、ブロックタイミング設定手段で設定された機能ブロックと、この機能ブロックの呼び出し元のプログラムとのデータ授受状況を検出するようにしたから、データ授受状況を容易に検出することができる。
【図面の簡単な説明】
【図1】本発明を適用したプログラム開発支援装置の一例を示す構成図である。
【図2】タスク割り付け画面Tの一例である。
【図3】図1のコンパイラにおける処理手順の一例を示すフローチャートである。
【図4】本発明の動作説明に供する説明図である。
【図5】本発明の動作説明に供する説明図である。
【図6】呼び出し元のプログラムとは異なるタスクに割りつけられたファンクションブロックFBに対するコンパイル処理の処理手順の一例を示すフローチャートである。
【図7】本発明の動作説明に供する説明図である。
【図8】ファンクションブロックの一例である。
【図9】従来のアプリケーションプログラムの一例を示す構成図である。
【図10】フィードバックのあるプログラムの一例を示すブロック図である。
【符号の説明】
1 プログラミングツール
2 コンパイラ
3 伝送装置
4 制御装置
Claims (3)
- プログラム及び当該プログラムから呼び出されるファンクションブロックの実行タイミングを個別に設定し、
この設定に応じて前記ファンクションブロック及びその呼び出し元のプログラムを対応するタスクに割り付け、前記ファンクションブロック及びその呼び出し元のプログラムを、割り付けられたタスクで実行するようにしたプログラムの実行方式であって、
前記プログラムからの出力データを保持する保持手段を設け、
前記プログラムは、当該プログラムに割り付けられたタスクの実行タイミングで、前記ファンクションブロックへの出力データを前記保持手段に格納すると共に、当該保持手段に新たにデータが格納されたことを表すフラグを設定し、
前記ファンクションブロックは、当該ファンクションブロックに割り付けられたタスクの実行タイミングで前記フラグを参照し、当該フラグに基づき前記保持手段に新たにデータが格納されたことを検出したときにのみ前記保持手段から出力データを入力して前記フラグをリセットし、前記出力データをもとに所定の処理を実行することを特徴とするプログラムの実行方式。 - プログラムの実行タイミングを設定するタイミング設定手段と、
前記プログラムから読み出される機能ブロックの実行タイミングを、前記プログラムとは異なる実行タイミングに設定するブロックタイミング設定手段と、
前記プログラムを、前記タイミング設定手段で設定された実行タイミングに対応するタスクに割り付けると共に前記プログラムを実行する処理装置で実行可能な機械語プログラムに変換し、且つ、前記プログラムが呼び出す機能ブロックが、その呼び出し元のプログラムとは別の実行タイミングに設定された別実行ブロックである場合には、前記プログラムを前記タイミング設定手段で設定された実行タイミングに対応するタスクに割り付けると共に、前記別実行ブロックを前記ブロックタイミング設定手段で設定された実行タイミングに対応するタスクに割り付ける変換手段と、を備えたプログラム開発支援装置において、
前記別実行ブロックへのその呼び出し元のプログラムからの出力データを保持する保持手段と、
前記保持手段に新たにデータが格納されたことを表すフラグと、を備え、
前記変換手段は、前記別実行ブロックとその呼び出し元のプログラムとの間のデータ授受状況に基づき、前記プログラムに割り付けられたタスクの実行タイミングで、前記別実行ブロックへのその呼び出し元のプログラムからの出力データを前記保持手段に格納し、且つ前記別実行ブロックは、当該ファンクションブロックに割り付けられたタスクのタイミングで前記フラグを参照し、当該フラグに基づき前記保持手段に新たにデータが格納されたことを検出したときにのみ前記保持手段から出力データを入力して前記フラグをリセットし、前記出力データをもとに所定の処理を実行するように前記機械語プログラムへの変換を行うことを特徴とするプログラム開発支援装置。 - 前記プログラムは、前記機能ブロックを用いた回路図で作成されたプログラムであって、
前記回路図に基づいて前記データ授受状況を検出する授受状況検出手段を備えることを特徴とする請求項2記載のプログラム開発支援装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002070856A JP3838124B2 (ja) | 2002-03-14 | 2002-03-14 | プログラムの実行方式及びプログラム開発支援装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002070856A JP3838124B2 (ja) | 2002-03-14 | 2002-03-14 | プログラムの実行方式及びプログラム開発支援装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003271207A JP2003271207A (ja) | 2003-09-26 |
JP3838124B2 true JP3838124B2 (ja) | 2006-10-25 |
Family
ID=29201308
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002070856A Expired - Lifetime JP3838124B2 (ja) | 2002-03-14 | 2002-03-14 | プログラムの実行方式及びプログラム開発支援装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3838124B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014170992A1 (ja) * | 2013-04-18 | 2014-10-23 | 三菱電機株式会社 | プログラミングツール |
-
2002
- 2002-03-14 JP JP2002070856A patent/JP3838124B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP2003271207A (ja) | 2003-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5553297A (en) | Industrial control apparatus | |
WO2004079583A1 (ja) | データ転送制御装置およびdmaデータ転送制御方法 | |
US10877803B2 (en) | Control apparatus, control method and non-transitory storage medium | |
JP2009146229A (ja) | プログラマブルコントローラシステム | |
JP7423920B2 (ja) | 制御システム、設定装置およびコンピュータプログラム | |
JPH05134861A (ja) | コンピユータ・システム | |
JP2009157533A (ja) | プログラマブルコントローラシステム | |
JP6292096B2 (ja) | プログラマブルコントローラシステム、その支援装置 | |
JP2013084112A (ja) | プログラマブルコントローラシステム、そのプログラミング装置、プログラマブルコントローラ、プログラム、デバッグ方法 | |
JP2006202211A (ja) | 画像描画装置および画像描画方法 | |
JP3838124B2 (ja) | プログラムの実行方式及びプログラム開発支援装置 | |
JP4319082B2 (ja) | プログラミングシステム | |
JP2011186607A (ja) | フィールドデバイス、フィールドデバイスの設定方法、フィールドデバイス管理装置及びプログラム | |
JP2019139365A (ja) | アプリケーションプログラムを生成する方法、装置、プログラム | |
CN110806891A (zh) | 嵌入式设备软件版本的生成方法及装置 | |
JP2005108082A (ja) | デバイスドライバのインターフェース方法 | |
JPH0534895A (ja) | 製版用画像処理システム | |
JP2019159632A (ja) | 制御システム、開発支援装置、および開発支援プログラム | |
JP5870214B2 (ja) | プログラマブルコントローラシステム、そのプログラマブル表示器、支援装置、プログラム | |
JPH0410081B2 (ja) | ||
JP2000163109A (ja) | ラダープログラミング装置及びラダープログラミング方法 | |
JP7318829B2 (ja) | 生産システム、プログラム作成装置、生産方法、及びプログラム | |
WO2023166691A1 (ja) | 産業機械の制御装置 | |
EP3933523A1 (en) | Engineering device, engineering method, and program | |
JP6295914B2 (ja) | プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20040210 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20040217 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040611 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060308 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060314 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060512 |
|
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: 20060711 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060724 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 3838124 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: 20090811 Year of fee payment: 3 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090811 Year of fee payment: 3 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090811 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100811 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110811 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110811 Year of fee payment: 5 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110811 Year of fee payment: 5 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110811 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120811 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120811 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130811 Year of fee payment: 7 |
|
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 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |