(57)【要約】【課題】ユーザの手間が殆ど掛かることなく、表示更新／入力機能の機能低下を防ぐことができる。【解決手段】ユーザ等は、定周期プログラム中の１以上の任意の箇所に特殊命令を挿入する作業を行う。この様な定周期プログラムを実行する場合、このプログラムの各命令を順次実行する過程で特殊命令がある毎に、一旦処理を中断し、表示更新処理を実行する。そして、表示更新処理を実行完了したら中断したところから処理を再開する。【選択図】図３
2009110455.tif 000002
【特許請求の範囲】
【請求項１】
定周期に実行されるプログラムであって該プログラム中の任意の１以上の箇所に特定の命令が挿入されているマクロプログラムを記憶するマクロプログラム記憶手段と、
前記マクロプログラムの実行時以外は表示更新処理を繰り返し実行し、前記マクロプログラムの実行タイミングとなる毎に、該マクロプログラムの各命令を順次実行し、前記特定の命令がある毎に、一旦プログラム実行を中断して前記表示更新処理を実行した後、中断したところからプログラム実行を再開することを繰返すプログラム実行制御手段と、
を有することを特徴とするプログラマブル操作表示器。
【請求項２】
前記プログラム実行制御手段は、前記プログラム実行を中断する際に、前記特定の命令の次の命令の格納位置を示すポインタ情報を記憶すると共に、プログラム実行を中断していることを示す情報を記憶することを特徴とする請求項１記載のプログラマブル操作表示器。
【請求項３】
コンピュータを、
定周期に実行されるプログラムであって該プログラム中の任意の１以上の箇所に特定の命令が挿入されているマクロプログラムを記憶するマクロプログラム記憶手段と、
上記マクロプログラムの実行時以外は表示更新処理を繰り返し実行し、上記マクロプログラムの実行タイミングとなる毎に、前記マクロプログラムの各命令を順次実行し、前記特定の命令がある毎に、一旦プログラム実行を中断して前記表示更新処理を実行した後、中断したところからプログラム実行を再開することを繰返すプログラム実行制御手段と、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブル操作表示器に関する。
【背景技術】
【０００２】
従来、上記プログラマブル操作表示器は、基本的に、ＰＬＣ（プログラマブルコントローラ）本体に接続しており、当該ＰＬＣ本体が制御する各種制御対象機器のデータ（センサによる計測データ等）を、当該ＰＬＣ本体内のメモリから取得して表示する機能を有している。この様な処理（以下、表示更新処理という）は、例えば図１０（ａ）に示す任意の表示サイクルで繰り返し実行されている。この表示サイクルは、一定ではなく、各表示更新処理時間によって決まる。但し、図では、各表示更新処理に掛かる時間は殆ど同じであるものとして示してある。ある表示更新処理を実行完了したら、直ちに次の表示更新処理実行に移る。
【０００３】
プログラマブル操作表示器の表示画面の一例を図１０（ｂ）に示す。この例では、「生産予定」、「生産台数」、「生産残台数」の３種類のデータが表示される。１回の表示更新処理では、この３種類のデータをＰＬＣ本体のメモリから読み出して当該表示画面上のこれら３種類のデータ全ての表示内容を更新することになる。各表示更新処理に掛かる時間が例えば１００ｍｓ（ミリセカンド）ならば、表示内容の更新が１００ms毎に行われることになる。この処理時間が短いほど、応答性能が高いと言える。
【０００４】
また、表示更新処理では、ユーザによる任意の入力も受け付ける。
更に、この様な基本的な機能以外にも、例えばＬＡＮに複数のプログラマブル操作表示器やパソコン等が接続されたネットワークシステムにおいて、他のプログラマブル操作表示器やパソコン等との通信を行ったり、任意の周辺機器の制御を行ったり、画面データの保存を行う等の、様々な処理を行っている。この様な各種処理（マクロ処理）は、上記表示更新処理とは別のサイクルで定期的に（例えば１．３秒毎に）実行されるものであり、以下、「定周期プログラム処理」というものとする。また、この様な「定周期プログラム処理」をＣＰＵ等により実行させるプログラムを、「定周期プログラム」というものとする。
【０００５】
この「定周期プログラム処理」が実行されるときには、１表示サイクルは、図１０（ｃ）に示すように「定周期プログラム処理＋表示更新処理」となる。特に、近年、上記基本的な機能以外に様々な処理機能を追加していった結果、「定周期プログラム処理」の実行時間が長くなる傾向にある。
【０００６】
例えば、１回の表示更新処理に掛かる時間が上記の通り約１００msであるものとし、「定周期プログラム処理」が上記の通り１．３秒毎に実行される設定となっており、仮に１回の「定周期プログラム処理」実行に１秒掛かるとした場合、「定周期プログラム処理」が実行されるときの１表示サイクルは約１．１秒となり、全体としての処理実行状態は図１０（ｄ）に示すようになる。図１０（ｄ）において、図示の“Ａ”は表示更新処理、図示の“Ｂ”は「定周期プログラム処理」の実行を意味する。
【０００７】
図１０（ｄ）に示すように、「定周期プログラム処理」Ｂが表示更新処理Ａに比べて長時間実行されることから、その間、画面表示更新処理が保留されるので応答性能が低くなり、またプログラマブル操作表示器の画面タッチ等のレスポンスに欠ける（最悪、スイッチ操作が停止してしまう）という問題があった。
【０００８】
また、例えば、特許文献１に記載の発明は、表示機能と制御機能の両方を具えると共にデータ処理の高速化を図ったプログラマブル表示装置が開示されている。
【特許文献１】特開平１０−７８８１７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
従来、上記の通り、上記定周期プログラム処理実行が、表示／入力処理機能に悪影響を与え、ユーザによる使い勝手が悪くなるという問題があった。
この様な問題を解決する為に、定周期プログラム処理の実行周期を短くすること等が考えられるが、プログラムの複雑化や大容量化に伴い、限界がある。
【００１０】
この為、定周期プログラムを任意の単位で分割して、１回の表示サイクル当たりの定周期プログラム実行時間を短縮させることが考えられる。その為に、従来では、既存の定周期プログラムに条件判断処理を加える作業等が必要であった。例えば、定周期プログラムを３分割する場合には、条件判断処理を含む定周期プログラムは、当該定周期プログラム処理を３分割したそれぞれの処理を仮に、処理Ａ、処理Ｂ、処理Ｃとすると、例えば以下のようになる。
【００１１】
ＩＦ  ＣＯＵＮＴ＝１
処理Ａ
ＥＬＳＥ  ＩＦ  ＣＯＵＮＴ＝２
処理Ｂ
ＥＬＳＥ  ＩＦ  ＣＯＵＮＴ＝３
処理Ｃ
ＥＮＤＩＦ
尚、上記ＣＯＵＮＴとは、各処理実行する毎に＋１インクリメントされ定周期プログラム実行完了毎に初期化（‘１’にする）されるカウンタ値であり、これを参照して判断する。
【００１２】
この様に従来では、ユーザが条件判断処理を作成する作業等が必要であり、手間が掛かるものであり、またプログラムが煩雑になるという問題もあった。
本発明の課題は、ユーザの手間が殆ど掛かることなく、定周期プログラムを任意に分割して実行させると共にこの各分割処理の合間に表示更新処理を実行させることができるプログラマブル操作表示器、そのプログラムを提供することである。
【課題を解決するための手段】
【００１３】
本発明のプログラマブル操作表示器は、定周期に実行されるプログラムであって該プログラム中の任意の１以上の箇所に特定の命令が挿入されているマクロプログラムを記憶するマクロプログラム記憶手段と、前記マクロプログラムの実行時以外は表示更新処理を繰り返し実行し、前記マクロプログラムの実行タイミングとなる毎に、該マクロプログラムの各命令を順次実行し、前記特定の命令がある毎に、一旦プログラム実行を中断して前記表示更新処理を実行した後、中断したところからプログラム実行を再開することを繰返すプログラム実行制御手段とを有する。
【００１４】
上記プログラム実行制御手段によって、マクロプログラムは特定の命令に基づいて分割実行されることになる。更に、この各分割処理の間に表示更新処理が実行されることになる。よって、たとえマクロプログラムの処理時間が長い場合であっても、各分割処理の処理時間は比較的短くなり、その都度、表示更新処理が実行されるので、表示更新処理が長時間実行されないようなことはなく且つその実行頻度が上がることになる。
【発明の効果】
【００１５】
本発明のプログラマブル操作表示器、そのプログラムによれば、ユーザの手間が殆ど掛かることなく、定周期プログラムを任意に分割して実行させると共にこの各分割処理の合間に表示更新処理を実行させることができる。すなわち、定周期プログラムの処理時間が長くても、長時間、表示更新処理が実行されないような事態にはならず、上記従来の問題が生じることはない。また、ユーザの作業は、定周期プログラム中の任意の箇所に特定の命令を挿入するだけで済む。
【発明を実施するための最良の形態】
【００１６】
以下、図面を参照して本発明の実施の形態について説明する。
図１は、本例のプログラマブル操作表示器の構成例である。
図示のプログラマブル操作表示器１は、表示制御回路１０と、タッチパネル２及びディスプレイ３を有する。表示制御回路１０は、ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、通信コントローラ１４、タッチパネルコントローラ１５、グラフィックコントローラ１６、及びビデオＲＡＭ１７より成り、これらがバス１８に接続されている。
【００１７】
ＣＰＵ１１は表示制御回路１０全体を制御する中央処理装置（演算プロセッサ）である。ＣＰＵ１１はＲＯＭ１２に格納されているシステムプログラムに従って所定の演算動作を行う。各種の演算結果はＲＡＭ１３に適宜格納される。グラフィックコントローラ１６は、当該ＲＡＭ１３に格納された演算結果をビデオＲＡＭ１７上に展開し、このビデオＲＡＭ１７内への書き込み内容に対応した表示をディスプレイ３上で行う。
【００１８】
タッチパネル２に対する押圧操作による指示は、タッチパネルコントローラ１５を介して取り込まれて解析される。これによりタッチパネル２を用いたユーザによる各種手動操作が実現される。また、通信コントローラ１４は、不図示のＰＬＣ本体等の外部機器とのデータ送受信を制御する。
【００１９】
本例の後述する各種プログラム（管理プログラム、マクロプログラム（上記定周期プログラム等）、モニタデータ表示更新プログラム（上記表示更新処理を実行するプログラム）等）は、ＲＯＭ１２に格納されており、上述した通り、これらプログラムはＣＰＵ１１によって読み出されて実行される。また、ＲＡＭ１３は、後述する作業領域を有する。
【００２０】
尚、各種プログラムを格納するメモリは、ＲＯＭ１２に限らず、例えばフラッシュメモリ等を用いても良い。
図２に、上記プログラマブル操作表示器のプログラム実行概念図を示す。
【００２１】
図示の実行概念図は、上記定周期プログラム実行時の処理を示すものであり、定周期プログラム実行時以外には図１０（ａ）に示すように表示更新処理を繰り返し実行している。
【００２２】
本手法では、上述した定周期プログラム実行タイミングとなる毎に（上記一例では１．３秒毎）、図２に示すように、マクロ処理とモニタデータ表示更新処理（上記表示更新処理）とを繰り返し実行することになる。マクロ処理は、上記定周期プログラム処理に相当するが、ここでは定周期プログラム処理を分割した各処理（上述した処理Ａ、処理Ｂ、処理Ｃ等に相当；以下、分割処理というものとする）を意味する。
【００２３】
従って、図２に示す実行概念は、各分割処理を実行する毎に表示更新処理を実行することを繰り返すことを意味する。
尚、図２には示していないが、上記マクロ処理やモニタデータ表示更新処理や、特に説明しない他の処理等の処理実行管理（例えば処理実行スケジュールの管理や割込み制御等
）を行う管理プログラムも、動作している。
【００２４】
尚、モニタデータ表示更新処理には、既に説明した通り、ユーザによる画面（タッチパネル）上での操作指示を受け付ける処理も含まれる。同様に、既に従来等で説明した通り、上記定周期プログラム処理は、プログラマブル操作表示器１に接続される各種外部機器との通信処理や内部演算処理等を行うものである。
【００２５】
尚、本プログラム（定周期プログラム等）は、逐次命令を解読しながら実行するインタープリタ（interpreter）形式のプログラムである。インタープリタとは、ＣＰＵが直接解釈できないプログラミング言語のソースコードを、ＣＰＵが直接解釈できる機械語に逐次的に変換しながら実行する形式のソフトウェアである。変換を逐次的に行う点が、事前にコンパイラによって全ての機械語変換が行われた実行形式のプログラムと異なる。
【００２６】
従来では、図１０（ｃ）に示すように、上述した定周期プログラム実行タイミングとなる毎に、１回の表示サイクルで定周期プログラム処理全体とモニタデータ表示更新処理とを実行した。既に述べた通り、１表示サイクルの期間は一定ではなく変動するものであり、マクロ処理（定周期プログラム処理）が実行される場合、１表示サイクルの期間（実行時間）は、「マクロ処理」の処理負荷と「モニタデータ表示更新処理」の処理負荷とに応じて決まることになる。特に、「マクロ処理」において多様な処理が組み込まれていると、１表示サイクル内で「マクロ処理」全体を実行する場合、その処理時間が長くなるので、上述した従来の問題が生じることになる。
【００２７】
この問題に対して、本手法では、定周期プログラム実行タイミングとなる毎に、複数の表示サイクルにわたって定周期プログラムを実行することになる。すなわち、図２に示す通り、１回の表示サイクルで１つの分割処理と表示更新処理とを実行し、これを複数の表示サイクルにわたって実行することになる。例えば、「定周期プログラム」を３分割した場合には、上記１表示サイクル毎に１つの分割プログラム（分割処理）を実行することになり、３回の表示サイクルで１つの「定周期プログラム処理」が実行完了することになる。
【００２８】
そして、本手法では、定周期プログラム処理を複数に分割して実行させたい場合、ユーザは、予め決められている特殊命令（後述する分割命令等）を、上記マクロプログラム中の所望の箇所に挿入する作業を行うだけで済む。特殊命令は、予め任意に決められている特定の命令である。つまり、既存のどの命令でもない新しい命令であり、プログラマ等により任意に決められたものである。
【００２９】
尚、「定周期プログラム＝マクロプログラム」と考えてよい。定周期プログラムと記す場合もあればマクロプログラムと記す場合もあるが、同じ意味である。
例えば、図３（ａ）に示すマクロプログラム（定周期プログラム）を、図３（ｂ）に示すプログラムＡ、Ｂ，Ｃに３分割したい場合、図３（ｂ）に示すようにプログラムＡとＢとの間、及びプログラムＢとＣとの間に、それぞれ特殊命令を挿入すればよい。特殊命令は、上記の通り既存の命令ではない新たな命令であれば何でもよいが、この特殊命令を上記インタープリタで解釈することで後述するステップＳ２０、Ｓ２１，Ｓ１７の処理が行われるようにしておく。
【００３０】
図４に、例えば図３（ｂ）に示すように特殊命令が挿入されたマクロプログラムを実行した場合の処理フローチャート図を示す。但し、図４に示す処理において、マクロプログラム実行による処理はステップＳ１３〜Ｓ１７、Ｓ２０、Ｓ２１の処理であり、ステップＳ１１、Ｓ１２、Ｓ１８、Ｓ１９の処理は、上記管理プログラムが実行する。
【００３１】
図４の処理において、まず、ブレイクマクロ実行中か否かを判定する（ステップＳ１１）。この判定は、マクロプログラムを最後まで実行している状態であるか、あるいは途中まで実行して中断している状態であるか（例えば図３（ｂ）に示すプログラムＡまで実行、あるいはプログラムＢまで実行している状態）を判定するものであり、最後まで実行している状態であれば、ステップＳ１１の判定はＮＯとなる。
【００３２】
尚、ステップＳ１１の判定は、例えばブレイクマクロ実行中か否かを示す不図示のフラグを参照することで行い、このフラグは後述するステップＳ２１又はＳ１６の処理でＯＮ／ＯＦＦされる。フラグＯＮであればステップＳ１１の判定はＹＥＳとなる。
【００３３】
ブレイクマクロ実行中である場合には（ステップＳ１１，ＹＥＳ）、前回の表示サイクルでの図４の処理における後述するステップＳ２０の処理により記憶していた「次の命令の実行位置」を参照して、当該「次の命令の実行位置」からマクロプログラムの実行を開始させる（ステップＳ１２）。
【００３４】
これによりマクロプログラムの各命令（マクロ命令）を順次実行するが（ステップＳ１４）、このマクロ命令が上記特殊命令であった場合には（ステップＳ１３、ＹＥＳ）、この特殊命令の次のマクロ命令の位置を上記「次の命令の実行位置」として記憶し（ステップＳ２０）、更に上記ブレイクマクロ実行中か否かを示すフラグをＯＮする（ステップＳ２１）。そして、当該マクロ処理から抜けて（ステップＳ１７）、図２に示す「モニタデータ表示更新処理」を実行し、この表示更新処理を実行完了したら、次の表示サイクルに移り、再び図４の処理を開始する。
【００３５】
一方、全マクロ命令を実行完了した場合には（ステップＳ１５，ＹＥＳ）、すなわち上記マクロプログラムの最後のマクロ命令を実行した場合には、上記ブレイクマクロ実行中か否かを示すフラグをＯＦＦして（ステップＳ１６）、上記ステップＳ１７の処理を行う。勿論、この場合も、上記と同様、図２に示す「モニタデータ表示更新処理」を実行し、この処理を実行完了したら、再び図４の処理を開始することになる。
【００３６】
そして、上記ブレイクマクロ実行中か否かを示すフラグがＯＦＦの状態で図４の処理を実行開始した場合には、上記ステップＳ１１の判定はＮＯになることから、ステップＳ１８の処理に移行する。すなわち、予め決められている規定時間経過したか否かを判定し、規定時間経過していない場合には（ステップＳ１８、ＮＯ）、当該マクロ処理から抜けて（ステップＳ１７）、上記「モニタデータ表示更新処理」を実行し、この処理を実行完了したら、再び図４の処理を開始することになる。
【００３７】
尚、上記規定時間とは、マクロプログラム（定周期プログラム）の実行周期であり、例えば上述した一例では“１．３秒”である。
これにより、フラグＯＦＦの場合には、規定時間経過するまでの間、マクロ処理は実行せずに、「モニタデータ表示更新処理」を例えば図１０（ａ）に示す例のように繰り返し実行し続けることになる。そして、規定時間経過したら（ステップＳ１８，ＹＥＳ）、再び上記マクロプログラムを最初のマクロ命令から実行させることになる（ステップＳ１９）。
【００３８】
上記図３（ｂ）に示す例のように特殊命令が挿入されたマクロプログラム（定周期プログラム）を、図４の処理により実行した場合の処理概念図を、図５（ｂ）に示す。尚、比較の為、図５（ａ）に、従来のように１表示サイクルでマクロプログラム全てを実行する場合の処理概念図を示す。
【００３９】
図５（ａ）に示すように（そして従来で説明した通り）、１表示サイクルでマクロプロ
グラム全体を実行すると、比較的長時間（上記の例では１秒）定周期プログラムが実行されている状態（換言すれば表示更新処理が実行されない状態）が続くことになる。
【００４０】
これに対して、本手法では、図５（ｂ）に示すように、定周期プログラムを複数の表示サイクルに渡って分割実行するので、１表示サイクル毎の定周期プログラムの処理時間が短くて済み、各分割処理実行後に表示更新処理が実行されるので、従来のような問題は生じない。そして、上記の通り、ユーザは、特殊命令をマクロプログラム中の任意の箇所に挿入する作業を行うだけで、この様な定周期プログラムの分割実行を行わせることができる。よって、ユーザの作業負担が軽減できる。
【００４１】
尚、図５（ｂ）に示す定周期プログラム処理Ａ、定周期プログラム処理Ｂ、定周期プログラム処理Ｃは、定周期プログラムを３分割した場合の各分割処理である。
以下、上述した処理についてより具体的に説明する。
【００４２】
図６（ａ）に、図３（ｂ）のようにマクロプログラムを３分割した場合のＲＯＭ１２におけるプログラム格納状態を示す。
ＲＯＭ１２内には任意のプログラム領域２０が設けられており、プログラム領域２０は、管理プログラム格納領域２１、マクロプログラム格納領域２２、及びモニタデータ表示更新プログラム格納領域２３より成る。
【００４３】
管理プログラム格納領域２１とモニタデータ表示更新プログラム格納領域２３には、それぞれ上記管理プログラムと上記「モニタデータ表示更新処理」のプログラムとが格納される。
【００４４】
マクロプログラム格納領域２２には、上記マクロプログラム（定周期プログラム）が格納される。そして、このマクロプログラム中には、プログラム中の任意の箇所に上記特殊命令である分割命令が挿入されている。つまり、マクロプログラムが分割命令によって分割されたものとなっている。そして、図示の例では、上記３つの分割処理（上述した処理Ａ、処理Ｂ、処理Ｃ）に分ける例に対応して、２箇所に分割命令が挿入されることで、マクロプログラムが、図示の分割プログラムＡ、分割プログラムＢ、分割プログラムＣに分割されるものとする。
【００４５】
尚、マクロプログラム中の最後のマクロ命令は、当該マクロプログラムの終了を示すＥＮＤ命令となっている。
図６（ｂ）に、ＲＡＭ１３の作業領域に格納される各種データの一例を示す。
【００４６】
図示のように、作業領域３０には、分割命令実行情報３１、マクロ命令実行位置情報３２、次命令ポインタ情報３３、及びタイマ値退避情報３４の各情報格納領域がある。
分割命令実行情報３１は、マクロプログラム内に挿入された分割命令が実行されたときにセットされ、ＥＮＤ命令が実行されたときにリセットされる情報（フラグ等）である。すなわち、分割命令実行情報３１は、分割命令が実行されたか否かを示す状態情報、換言すればマクロプログラムを途中まで実行している（中断している）状態か否かを示す状態情報として扱われる情報である。
【００４７】
マクロ命令実行位置情報３２は、上述した各分割プログラム（上記一例では分割プログラムＡ、分割プログラムＢ、分割プログラムＣ）を順次実行する為に、今回の表示サイクルの処理で実行すべき分割プログラムの先頭アドレスを示す情報である。例えば、ある表示サイクルで処理Ａが実行された後、次の表示サイクルで処理を実行する際にマクロ命令実行位置情報３２を参照すると、マクロ命令実行位置情報３２には分割プログラムＢの先頭アドレスを示すポインタ情報が格納されており、これによって処理Ｂが実行されるよう
になっている。
【００４８】
次命令ポインタ情報３３の記憶領域は、マクロプログラムの各マクロ命令を順次実行中に分割命令があったときに、この分割命令の次の命令の格納アドレスを退避させる為の記憶領域である。すなわち、上記分割命令が格納されている記憶領域の先頭アドレス値に、当該分割命令が占有する記憶領域分を足した値を、次の命令のアドレス値として、次命令ポインタ情報３３の記憶領域に格納する。
【００４９】
尚、詳しくは後に図７を参照して説明するが、上述した例では、処理Ａを実行する表示サイクルにおいて最後に分割プログラムＢの先頭アドレスを次命令ポインタ情報３３に格納しておき、次の表示サイクルにおいて最初の方で次命令ポインタ情報３３をマクロ命令実行位置情報３２にセットすることになる。但し、この様な例に限らないので、例えば次命令ポインタ情報３３は必要無いものとし、処理Ａの最後で上記分割プログラムＢの先頭アドレスをマクロ命令実行位置情報３２に記憶させるようにしてもよい。
【００５０】
タイマ値退避情報３４には、後述する図７のステップＳ３３の処理、すなわち予め決められている規定時間（定周期プログラムの実行周期；本例では上記の通り１．３秒としている）経過したか否かを判定する際に必要となる情報である。詳しくは後に図７のステップＳ３３の処理の説明の際に説明する。
【００５１】
尚、ユーザ等に任意の定周期プログラムに対して任意の箇所に上記特定の命令（特殊命令（分割命令））を挿入する操作を行わせる装置は、例えば既存のプログラム開発（作成）支援装置等である。よく知られているように、この様なプログラム開発支援装置は、例えばパソコン等の汎用コンピュータに、ＰＬＣ本体（コントローラ本体）が実行する制御プログラム等を、ユーザに任意に作成／編集させる為のエディタ機能等が備えられたものである。このエディタ機能として、プログラマブル操作表示器のプログラムをユーザに作成／編集させるものも存在する。
【００５２】
プログラム開発支援装置のハードウェア構成は、一般的なパソコン等の構成であり特に図示しないが、ＣＰＵやハードディスク等の記憶装置、キーボード／マウス等の入力装置、ディスプレイ等から成り、上記エディタ機能は記憶装置に記憶されている所定のアプリケーションプログラムをＣＰＵが読出し・実行することにより実現される。
【００５３】
例えばこのエディタ機能によりプログラム開発支援装置のディスプレイ上に不図示のプログラム作成／編集画面が表示される。この画面には例えば図３（ａ）に示すような定周期プログラムが表示され、ユーザ等は、キーボード／マウス等の入力装置を操作して、このプログラム上の任意の箇所に、例えば図３（ｂ）に示すように特殊命令（分割命令）を挿入することができる。
【００５４】
そして、この様にして編集された定周期プログラムをＲＯＭのマクロプログラム格納領域２２に格納し、このＲＯＭをプログラマブル操作表示器１内に上記ＲＯＭ１２として取り付ける。あるいは、プログラム格納用メモリとしてＲＯＭではなくフラッシュメモリ等を用いる場合には、上記編集された定周期プログラムを所定の通信線等を介して、上記プログラム開発支援装置からプログラマブル操作表示器１へダウンロードして、フラッシュメモリのマクロプログラム格納領域２２に格納させる。
【００５５】
また、上記定周期プログラムを編集する装置は、上記プログラム開発支援装置に限らず、上記エディタ機能を備え且つディスプレイや入力装置を備える装置であればなんでもよい。従って、プログラマブル操作表示器１に上記エディタ機能を備えさせ、定周期プログラムの編集（分割命令の挿入／削除等）が可能となる構成とすることもできる。
【００５６】
図７に、例えば図６（ａ）に示すように特殊命令（分割命令）が挿入されたマクロプログラムを実行した場合の処理フローチャート図を示す。
尚、図７の処理は基本的に図４の処理と略同様である。図７の処理は例えば図６（ｂ）に示すような作業領域３０の各種情報を用いた処理（すなわち、より具体的・詳細な処理）を示すものである。
【００５７】
図７に示す処理は、上記管理プログラムが処理全体の管理制御を行うと共に、図示のステップＳ３１〜Ｓ３４の処理を実行する。このステップＳ３１〜Ｓ３４の処理は、図４におけるステップＳ１１，Ｓ１２，Ｓ１８，Ｓ１９の処理に相当する。
【００５８】
まず、ステップＳ３１の処理では、分割命令実行情報３１を参照して上記フラグ等がセットされているか否かを判定する（ステップＳ３１）。そして、フラグセットされていない場合には（ステップＳ３１，ＮＯ）、まず、予め決められている規定時間（上記の例では１．３秒）経過したか否かを判定する（ステップＳ３３）。
【００５９】
ここで、上記の通り、フラグ等がセットされた状態とは、マクロプログラムを途中まで実行して中断している（分割命令のところで中断している）状態であることを意味する。従って、分割命令実行情報３１がフラグセットされていない場合には（ステップＳ３１，ＮＯ）、現在は、マクロプログラムが実行終了してから次にマクロプログラムを実行するタイミングとなるまでの間であることになるので、次にマクロプログラムを実行するタイミングとなるまで、すなわち予め決められている規定時間（上記の例では１．３秒）経過するまでは、ステップＳ３３の判定（規定時間（１．３秒）経過したか？）はＮＯとなり、ステップＳ４１のモニタデータ表示更新処理が実行されることになる。
【００６０】
モニタデータ表示更新処理後に再びステップＳ３３の判定がＮＯとなると再びモニタデータ表示更新処理が実行されることになる。すなわち、図１０（ｄ）において定周期プログラムＢを実行完了後に、次に定周期プログラムＢを実行するタイミングとなるまで（図示の１．３秒経過するまで）表示更新処理Ａを繰り返し実行する状態を示したが、これと同様の状態になる。
【００６１】
尚、ステップＳ３３の処理は、具体的には以下の一例のような処理を実行する。
すなわち、ステップＳ３３の処理は、不図示のタイマの値と、上記タイマ値退避情報３４とを参照することで行う。タイマ値退避情報３４は前回にステップＳ３３の判定がＹＥＳとなったときのタイマ値が記憶されたものである（初期値は０）。よって、現在のタイマ値とタイマ値退避情報３４との差分を計算することで、規定時間（１．３秒）経過したか否かを判定できる。
【００６２】
そして、規定時間（１．３秒）経過した場合には（ステップＳ３３，ＹＥＳ）、マクロプログラムの最初から処理実行開始する。すなわち、予め登録されているマクロプログラム格納領域２２の先頭アドレス（＝分割プログラムＡの先頭アドレス）を、マクロ命令実行位置情報３２にセットする（ステップＳ３４）。つまり、ステップＳ３４の処理は、マクロプログラムの実行位置を初期化するための処理である。そして、マクロプログラム処理を開始させる。
【００６３】
一方、分割命令実行情報３１がフラグセットされている場合には（ステップＳ３１，ＹＥＳ）、既に説明してあるように、次命令ポインタ情報３３をマクロ命令実行位置情報３２にセットする（ステップＳ３２）。すなわち、ステップＳ３１がＹＥＳになる場合には、前回の処理でマクロプログラムを途中まで実行して中断していることになり、この中断したところの分割命令の次のマクロ命令の格納アドレスが、次命令ポインタ情報３３とし
て記憶されているので、この格納アドレスをマクロ命令実行位置情報３２にセットする。そして、マクロプログラム処理を開始させる。
【００６４】
マクロプログラム処理では、マクロ命令実行位置情報３２が示すアドレスのマクロ命令から順に各マクロ命令を実行する（ステップＳ３６）。そして、１命令実行する毎に、実行するマクロ命令が分割命令であるか否か（ステップＳ３５）あるいはＥＮＤ命令であるか否か（ステップＳ３７）を判定する。実行するマクロ命令が分割命令、ＥＮＤ命令の何れでもない場合には、単にそのマクロ命令の処理を実行することになる。
【００６５】
実行するマクロ命令が分割命令である場合には（ステップＳ３５，ＹＥＳ）、ステップＳ３９、Ｓ４０の処理を実行して、今回の表示サイクルにおけるマクロプログラム（定周期プログラム）の処理は終了（中断）して、今回の表示サイクルにおけるモニタデータ表示更新処理を実行したら（ステップＳ４１）、ステップＳ３１の処理に戻り、次の表示サイクルの処理に移ることになる。
【００６６】
ステップＳ３９，Ｓ４０の処理は、上記ステップＳ２０，Ｓ２１に相当する処理である。ステップＳ３９では、上記ステップＳ３５の分割命令の次のマクロ命令の格納アドレス値を、次命令ポインタ情報３３に記憶する。そして、ステップＳ４０では、分割命令実行情報３１をフラグセットする。
【００６７】
また、実行するマクロ命令がＥＮＤ命令である場合には（ステップＳ３７，ＹＥＳ）、マクロプログラムの実行が完了したこと、換言すれば上記分割プログラムＡ，Ｂ，Ｃ全てを実行したことになるので、分割命令実行情報３１をフラグ・リセットする（ステップＳ３８）。そして、モニタデータ表示更新処理を実行し（ステップＳ４１）、実行完了したら、ステップＳ３１の処理に戻り、次の表示サイクルの処理に移ることになる。そして、上述した通り、マクロプログラムの次の実行タイミングとなるまでの間、表示更新処理を繰返すことになる。
【００６８】
以上説明した図７の処理により、定周期毎（１．３秒等）にマクロプログラム（定周期プログラム）を実行するときに、マクロプログラムの各命令を順次実行する途中で分割命令がある毎に、マクロプログラムの処理を中断して当該処理を抜けて表示更新処理を実行する。すなわち、ある表示サイクルでマクロプログラムの一部（１つの分割プログラム）と表示更新処理とを実行し、次の表示サイクルで中断したマクロプログラムの処理の続き（但し、次の分割命令またはＥＮＤ命令まで；すなわち１つの分割プログラム）と表示更新処理とを実行する、ということを、ＥＮＤ命令となるまで繰り返し実行する。
【００６９】
すなわち、マクロプログラムを分割した各分割処理を各表示サイクル毎に１つずつ実行すると共に、各表示サイクル毎に表示更新処理も実行することになる。
従って、各表示サイクルにおける定周期プログラムの処理時間が短縮されると共に表示更新処理の実行頻度を上げることが可能となる。すなわち、定周期プログラム処理の実行期間中であっても、表示更新処理が長時間実行されないようなことはないので、上記定周期プログラム処理実行期間中に表示／入力処理機能が低下するようなことはなく、ユーザによる使い勝手が悪くなるということはなくなる。
【００７０】
そして、この様に定周期プログラムを複数の表示サイクルに渡って分割実行させる為にユーザが行う作業は、単に予め決められている特定の命令（分割命令）を、定周期プログラム中の所望の箇所に挿入するだけなので、手間が掛かることはなく、また特にプログラムの知識も必要とされないという効果が得られる。
【００７１】
更に、分割数や各分割処理の範囲を自由に決定／変更できるので、ユーザ自身で装置の
実行状態の調整を簡単に行うことが可能となる。図６等に示す例では、各分割処理の範囲はほぼ同じである、すなわち定周期プログラムをほぼ等分割しているが、勿論このようにする必要はなく、例えば処理Ａの処理時間を処理Ｂ，Ｃの処理時間よりも長くする等、ユーザが自由に設定できる。
【００７２】
図８に、本手法による定周期プログラムの分割実行の概念図を示す。
まず、図８（ａ）には、分割命令を挿入する前の定周期プログラムの実行概念を示すと共に、この定周期プログラム中の任意の箇所（ここでは２箇所）に分割命令を挿入するイメージを示す。分割命令を挿入する前では、図示の通り、１表示サイクルで定周期プログラム全てが実行されるので、処理時間が長く、その後に表示更新処理が実行されるが、比較的長時間、表示更新処理が実行できない状態が続くことになる。この為、図示の通り２箇所に分割命令を挿入することで、定周期プログラムを処理Ａ、処理Ｂ、処理Ｃの３つに分けると、図８（ｂ）に示すように処理実行されることになる。
【００７３】
すなわち、図８（ｂ）に示すように、まず最初の表示サイクル１で処理Ａが実行されると共に表示更新処理が実行され、次の表示サイクル２で処理Ｂが実行されると共に表示更新処理が実行され、更に次の表示サイクル３で処理Ｃが実行されると共に表示更新処理が実行されることになる。
【００７４】
更に詳しくは、まず最初は処理Ａを実行することになり、分割命令があるところで処理Ａを終了するときに、次の処理（処理Ｂ）に受け渡す情報を残しておく。この情報は、上記分割命令実行情報３１、次命令ポインタ情報３３等である。処理Ｂは、処理Ａが残した情報を参照することで、処理Ｂが格納された領域の先頭アドレスの命令から実行開始する。そして、処理Ａの場合と同様に、処理Ｂを終了するときには次の処理（処理Ｃ）に受け渡す情報を残しておく。これより、処理Ｃも処理Ｂの場合と同様にして、処理Ｂが残した情報を参照することで、処理Ｃが格納された領域の先頭アドレスの命令から実行開始する。
【００７５】
そして、処理Ｃの実行の際には最後にＥＮＤ命令を実行することになるので、これにより分割された定周期プログラム（処理Ａ、Ｂ，Ｃ）の全てを実行したことになり、分割命令実行情報３１をフラグ・リセットして、処理Ｃを抜ける。
【００７６】
当然、各処理Ａ，Ｂ，Ｃ実行後に、表示更新処理を実行する。
このように、各表示サイクルにおける定周期プログラムの処理時間は、図８（ａ）の場合に比べて非常に短くなり、表示更新処理は各表示サイクルで毎回実行されるので、定周期プログラム実行期間中であっても画面タッチ等のレスポンスや画面更新処理機能が極端に低下するようなことはなくなる（画面表示更新処理が保留されたり、画面タッチ等のレスポンスに欠けるという問題がなくなる）。
【００７７】
図９は、本手法におけるプログラム全体の動きを示す状態遷移図である。
図示のモニタデータ更新状態１とモニタデータ更新状態２は、何れも表示更新処理を実行している状態を意味するが、状態１と状態２とに区別しているのは、定周期プログラム実行期間中に実行される表示更新処理を状態２、それ以外の場合を状態１としているからである。また、図示のマクロプログラム実行状態は、マクロプログラム（各分割プログラム）を実行している状態である。
【００７８】
通常はモニタデータ更新状態１に遷移しており、画面の更新処理に専念している（図１０（ａ）のように表示更新処理を繰り返し実行している）。そして、定期的に（ここでは１．３秒毎に）マクロプログラム実行状態へ遷移する。
【００７９】
マクロプログラム実行状態において分割命令がある毎に、つまり１つの分割プログラムを実行完了する毎に（但し、最後の分割プログラムは除く）、マクロプログラムの実行を一旦中断して、モニタデータ更新状態２へ遷移する。モニタデータ更新状態２では、既に説明した通り、表示更新処理を一度のみ行い、画面データ更新完了したら、再びマクロプログラム実行状態へ遷移する。そして、上記中断されたところの分割命令の次の命令から、マクロプログラム実行を再開する。
【００８０】
この様にすることで、マクロプログラム全体の処理を分割した各分割処理が、複数の表示サイクルそれぞれで実行されるので、その処理負荷は時間的に分散される。この様に分散されたマクロプログラム処理（分割処理）の合間に、モニタデータ表示更新処理を実行するようにしたので、長時間表示更新処理が実行されないようなことはなく、表示更新処理が保留されたり、画面のレスポンスを損なうことがなくなる。
【００８１】
尚、マクロプログラム実行状態においてＥＮＤ命令を実行したら、すなわち最後の分割プログラムを実行完了したら、モニタデータ更新状態１に遷移し、再び画面の更新処理に専念する。
【図面の簡単な説明】
【００８２】
【図１】本例のプログラマブル操作表示器の構成例である。
【図２】本例のプログラマブル操作表示器のプログラム実行概念図である。
【図３】（ａ）は元々の定周期プログラムの一例、（ｂ）はこれに特殊命令を挿入した例である。
【図４】本例のプログラム実行の処理フローチャート図である。
【図５】（ａ）は従来の処理概念図、（ｂ）は図４の処理による処理概念図である。
【図６】（ａ）はプログラム領域、（ｂ）は作業領域のプログラム／データ格納状態を示す図である。
【図７】本例のプログラム実行の詳細な処理フローチャート図である。
【図８】（ａ）は分割命令挿入前の処理概念図、（ｂ）は分割命令挿入後の処理概念図である。
【図９】本手法におけるプログラム全体の動きを示す状態遷移図である。
【図１０】（ａ）〜（ｄ）は、従来の各表示サイクルにおける処理実行の様子を示す図である。
【符号の説明】
【００８３】
１  プログラマブル操作表示器
２  タッチパネル
３  ディスプレイ
１０  表示制御回路
１１  ＣＰＵ
１２  ＲＯＭ
１３  ＲＡＭ
１４  通信コントローラ
１５  タッチパネルコントローラ
１６  グラフィックコントローラ
１７  ビデオＲＡＭ
１８  バス
２０  プログラム領域
２１  管理プログラム格納領域
２２  マクロプログラム格納領域
２３  モニタデータ表示更新プログラム格納領域
３０  作業領域
３１  分割命令実行情報
３２  マクロ命令実行位置情報
３３  次命令ポインタ情報
３４  タイマ値退避情報
【図１】
2009110455.tif 000003
【図２】
2009110455.tif 000004
【図３】
2009110455.tif 000005
【図４】
2009110455.tif 000006
【図５】
2009110455.tif 000007
【図６】
2009110455.tif 000008
【図７】
2009110455.tif 000009
【図８】
2009110455.tif 000010
【図９】
2009110455.tif 000011
【図１０】
2009110455.tif 000012