(57)【要約】【課題】既存のシーケンス・プログラムの再利用において、サブプログラムとして標準化することが容易にできるプログラマブルコントローラの周辺装置を提供する。【解決手段】シーケンス・プログラム編集処理部４００は、シーケンス・プログラム表示処理部４４０と、指定した範囲のラダー回路を選択してコピーする選択処理部４１０およびコピー処理部４２０と、サブプログラム名を入力しサブプログラム形式にするサブプログラム化処理部４３１と、サブプログラム形式にされたラダー回路を、サブプログラム領域に貼り付けるサブプログラム貼り付け処理部４３０と、サブプログラム命令挿入処理部４３３と、サブプログラム呼び出し命令とその次ステップとの間にサブプログラムの表示を展開するサブプログラム表示展開処理部４４１と、表示を折り畳むサブプログラム表示折り畳み処理部４４２と、表示の展開と折り畳みとを切り替える表示切替処理部４４３とを備える。【選択図】図４
2014071862.tif 000002
【特許請求の範囲】
【請求項１】
機器を制御するためのシーケンス・プログラムを編集するシーケンス・プログラム編集処理部を備えるプログラマブルコントローラの周辺装置において、
前記シーケンス・プログラムは、接点およびコイル等の回路要素を含むラダー回路により記述され、メインプログラムとサブプログラム形式からなる複数のサブプログラムとから構成され、
前記シーケンス・プログラム編集処理部は、
前記シーケンス・プログラムを表示装置に表示するシーケンス・プログラム表示処理部と、
前記表示装置に表示された前記シーケンス・プログラムから指定した範囲のラダー回路を選択する選択処理部と、
前記選択処理部により選択した範囲のラダー回路をコピーするコピー処理部と、
前記コピー処理部によりコピーされたラダー回路にサブプログラム名を入力し、前記サブプログラム形式にするサブプログラム化処理部と、
前記サブプログラム形式にされたラダー回路を、前記シーケンス・プログラムのサブプログラム領域に貼り付けるサブプログラム貼り付け処理部と、
指定された位置にサブプログラム呼び出し命令を挿入するサブプログラム命令挿入処理部と、
前記サブプログラム呼び出し命令とその次ステップとの間に前記サブプログラムの表示を展開するサブプログラム表示展開処理部と、
前記サブプログラム呼び出し命令とその次ステップとの間の前記サブプログラムの表示を折り畳むサブプログラム表示折り畳み処理部と、
前記サブプログラムの表示の展開と折り畳みとを切り替える表示切替処理部と
を備えることを特徴としたプログラマブルコントローラの周辺装置。
【請求項２】
請求項１に記載のプログラマブルコントローラの周辺装置であって、
前記シーケンス・プログラムは、変数を使用して記述され、
前記シーケンス・プログラムに対応して変数の情報を保持する変数情報テーブルと、
前記変数情報テーブルの前記変数とデバイスのアドレスとの関連付けをおこなう変数情報テーブル編集処理部を備え、
前記サブプログラム化処理部は、
前記サブプログラム形式にされたラダー回路に対し、
サブプログラム末尾の復帰命令の前ステップに、前記変数の値を内部デバイスに設けられた退避領域に転送する転送命令を挿入し、
サブプログラム先頭のラベル命令の後ステップに、前記退避領域から前記変数に値を転送する転送命令を挿入する、
サブプログラム変数保持処理部を備え、
前記変数情報テーブル編集処理部は、
前記サブプログラムにて使用される前記変数に内部デバイスのアドレスを関連付け、
前記退避領域のアドレスが前記サブプログラムの呼び出しごとに異なるアドレスとなるようにすることを特徴としたプログラマブルコントローラの周辺装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルコントローラの周辺装置に関する。
【背景技術】
【０００２】
生産設備には、設備を構成する機器を制御対象としたプログラマブルコントローラが数多く使用されている。これらのプログラマブルコントローラのシーケンス・プログラムは、周辺装置を用いて、ラダー回路等のプログラミング言語により作成されている。このプログラミングでは、従来デバイスのアドレスにより記述する方式が一般的であったが、近年では変数名を用いて記述し、変数名とデバイスのアドレスとの関連付けを別途おこなう方式も一般化してきている。このような変数を用いたプログラミング（以下、変数プログラミングという）では、シーケンス・プログラムがデバイスに対して、変数名を介してアドレスに依存しない記述となっている。そのため、変数プログラミングでは、制御対象とする機器に応じて変数名とデバイスのアドレスとの関連付けを変更することで、シーケンス・プログラムを再利用することができる。このように、変数プログラミングはデバイスを用いたプログラミングに比べ、再利用に対する柔軟性が高いといえる。
【０００３】
例えば、特許文献１では、全く同じ機能を有する複数台のプログラマブルコントローラを、統括的な役割を果たす１台のプログラマブルコントローラが制御するような制御システムを開発する場合において、各プログラマブルコントローラ間で同じ変数名（ラベル名）を用いて変数プログラミングができるプログラマブルコントローラの周辺装置が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−２６５２５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、既存のシーケンス・プログラムの再利用において、変数名とデバイスのアドレスとの関連付けを変更するだけでは対応できない場合がある。例えば、２台の同じ搬送装置が左右に配置された設備を制御するシーケンス・プログラムの作成において、この搬送装置が１台配置された設備を制御する既存のシーケンス・プログラムを再利用するような場合である。
【０００６】
このような再利用では、上記の搬送装置に関わる制御部分のコピーを２セット作成して、２台分の制御をする方法がある。この方法ではセット間で変数名が重複するので、変数名とデバイスのアドレスとの関連付けを変更する前に、変数名を付け直して重複を解消する必要がある。このプログラム構成は保守性が低いといえる。
【０００７】
また、上記の搬送装置に関わる制御部分をサブプログラムにして、このサブプログラムを多重に呼び出すことにより、２台の搬送装置を制御する再利用の方法がある。このプログラム構成は保守性が高いといえる。これには、制御部分をサブプログラムの形式にするだけではなく、サブプログラムの多重呼び出しが可能になるように変更する必要がある。このようにサブプログラムを多重呼び出し可能に変更することを、以下の説明ではサブプログラムの標準化という。
【０００８】
サブプログラムの標準化による再利用は、使用頻度の高い演算処理をファンクションまたはファンクションブロックとして関数化して再利用するのに比べ、再利用の規模が大きく、利便性の高いものとすることができる。また、プログラム構造として保守性が高いものとすることができる。
【０００９】
サブプログラムの標準化には、入出力回路の分離、変数の内部デバイス化、実行結果を保持する変数の対応等があり、さらに、メインプログラム側にもサブプログラムの入力要素に値を受け渡す入力回路の作成、サブプログラムからの出力要素の値を受け渡す出力回路の作成等があり、手間がかかるという問題があった。
【００１０】
本発明は、上記問題点を解決するためになされたものであって、本発明が解決しようとする課題は、既存のシーケンス・プログラムの再利用において、サブプログラムとして標準化することが容易にできるプログラマブルコントローラの周辺装置を提供することにある。
【課題を解決するための手段】
【００１１】
請求項１に係わる発明は、機器を制御するためのシーケンス・プログラムを編集するシーケンス・プログラム編集処理部を備えるプログラマブルコントローラの周辺装置において、前記シーケンス・プログラムは、接点およびコイル等の回路要素を含むラダー回路により記述され、メインプログラムとサブプログラム形式からなる複数のサブプログラムとから構成され、前記シーケンス・プログラム編集処理部は、前記シーケンス・プログラムを表示装置に表示するシーケンス・プログラム表示処理部と、前記表示装置に表示された前記シーケンス・プログラムから指定した範囲のラダー回路を選択する選択処理部と、前記選択処理部により選択した範囲のラダー回路をコピーするコピー処理部と、前記コピー処理部によりコピーされたラダー回路にサブプログラム名を入力し、前記サブプログラム形式にするサブプログラム化処理部と、前記サブプログラム形式にされたラダー回路を、前記シーケンス・プログラムのサブプログラム領域に貼り付けるサブプログラム貼り付け処理部と、指定された位置にサブプログラム呼び出し命令を挿入するサブプログラム命令挿入処理部と、前記サブプログラム呼び出し命令とその次ステップとの間に前記サブプログラムの表示を展開するサブプログラム表示展開処理部と、前記サブプログラム呼び出し命令とその次ステップとの間の前記サブプログラムの表示を折り畳むサブプログラム表示折り畳み処理部と、前記サブプログラムの表示の展開と折り畳みとを切り替える表示切替処理部とを備えることを特徴とする。
【００１２】
上記のように構成した請求項１の発明によれば、プログラマブルコントローラの周辺装置のシーケンス・プログラム編集処理部は、現在編集中のシーケンス・プログラムとは別の再利用するシーケンス・プログラムを読み出して、シーケンス・プログラム表示処理部により、表示装置に表示することができる。そして、表示装置に表示されたシーケンス・プログラムから、制御対象となる機器に関わり、サブプログラムとして標準化する制御部分の範囲のラダー回路を選択処理部により選択することができる。そして、「コピー」の編集コマンドを実行すると、コピー処理部が呼び出される。コピー処理部は、選択した範囲のラダー回路をバッファメモリ上に一時的にコピーして保持する。次に、現在編集中のシーケンス・プログラムにおいて、上記の制御対象となる機器を制御するステップ位置にて、「サブプログラムとして貼り付け」の編集コマンドを実行すると、サブプログラム化処理部とサブプログラム貼り付け処理部が呼び出される。サブプログラム化処理部は、サブプログラム名の入力を指示し、サブプログラム名が入力されると、サブプログラム命令挿入処理部が呼び出される。サブプログラム命令挿入処理部は、コマンドを実行したステップ位置に、サブプログラム呼び出し命令を挿入する。このサブプログラム呼び出し命令のオペランドには、先に入力したサブプログラム名が設定される。一方、バッファメモリ上のラダー回路は、サブプログラム貼り付け処理部により、サブプログラム領域に貼り付けられ、サブプログラム化処理部により、サブプログラム形式にされる。
【００１３】
シーケンス・プログラム表示処理部は、上記のサブプログラム呼び出し命令を表示するとともに、サブプログラム表示展開処理部により、サブプログラム呼び出し命令とその次ステップとの間にサブプログラムの表示を展開する。この展開されたサブプログラムの表示は、表示切替処理部を呼び出すことにより、サブプログラム表示折り畳み処理部にて、サブプログラムの表示を折り畳むことができる。
【００１４】
シーケンス・プログラム編集処理部は、サブプログラム表示の展開と折り畳みとに関わらず編集可能であり、サブプログラム表示を展開のまま編集することで、メインプログラムとサブプログラムとが同じ領域で連続したラダー回路であるかのように編集することができる。このようにメインプログラムとサブプログラムとの間の編集をスムーズにおこなうことができるので、サブプログラムを標準化する作業を容易におこなうことができる。
【００１５】
請求項２に係わる発明は、請求項１に記載のプログラマブルコントローラの周辺装置であって、前記シーケンス・プログラムは、変数を使用して記述され、前記シーケンス・プログラムに対応して変数の情報を保持する変数情報テーブルと、前記変数情報テーブルの前記変数とデバイスのアドレスとの関連付けをおこなう変数情報テーブル編集処理部を備え、前記サブプログラム化処理部は、前記サブプログラム形式にされたラダー回路に対し、サブプログラム末尾の復帰命令の前ステップに、前記変数の値を内部デバイスに設けられた退避領域に転送する転送命令を挿入し、サブプログラム先頭のラベル命令の後ステップに、前記退避領域から前記変数に値を転送する転送命令を挿入する、サブプログラム変数保持処理部を備え、前記変数情報テーブル編集処理部は、前記サブプログラムにて使用される前記変数に内部デバイスのアドレスを関連付け、前記退避領域のアドレスが前記サブプログラムの呼び出しごとに異なるアドレスとなるようにすることを特徴とする。
【００１６】
上記のように構成した請求項２の発明によれば、プログラマブルコントローラの周辺装置のサブプログラム変数保持処理部は、サブプログラム形式にされたラダー回路に対し、サブプログラムの先頭と末尾に、それぞれ内部デバイスに設けられた退避領域から変数に値を転送する転送命令および変数の値を退避領域に転送する転送命令を挿入している。
【００１７】
また、変数情報テーブル編集処理部は、サブプログラムにて使用される変数に内部デバイスのアドレスを関連付け、退避領域の内部デバイスのアドレスがサブプログラムの呼び出しごとに異なるアドレスとなるようにしている。このようにしてサブプログラム化されたラダー回路は、変数の前回値を保持することができるので、多重の呼び出しにも対応することができる。
【発明の効果】
【００１８】
本発明によれば、既存のシーケンス・プログラムの再利用において、サブプログラムとして標準化することが容易にできるプログラマブルコントローラの周辺装置を提供することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施形態に係る周辺装置のシステム構成図である。
【図２】本発明の実施形態に係るプログラマブルコントローラの構成図である。
【図３】本発明の実施形態に係る周辺装置のプログラミング・モデルである。
【図４】本発明の実施形態に係る周辺装置のシーケンス・プログラム編集処理部のプログラム構成図である。
【図５】本発明の実施形態に係る周辺装置のダイアログボックスの画面例である。
【図６】本発明の実施形態に係る周辺装置のシーケンス・プログラム表示例１である。
【図７】本発明の実施形態に係る周辺装置のシーケンス・プログラム表示例２である。
【図８】本発明の実施形態に係るシーケンス・プログラムの動作説明図である。
【図９】本発明の実施形態に係る変数情報テーブルの説明図である。
【発明を実施するための形態】
【００２０】
プログラマブルコントローラの周辺装置には、専用のハードウェアにより構成されるものや、汎用のパーソナルコンピュータ（以下、ＰＣと記す）で構成されるもの等、種々のタイプが存在する。図１は、本実施形態の周辺装置ソフトウェアをインストールしたＰＣを周辺装置１０として使用した場合のシステム構成図である。
以下、本発明の実施形態のプログラマブルコントローラの周辺装置１０のシステム構成を図面に従って説明する。
【００２１】
図１に示すように、周辺装置１０は、ＣＰＵ（central processing unit）１１のシステム・バス１２を介して、システムメモリ２８、ＨＤＤ（hard  disk  drive）２４、通信インターフェース２７、キーボード２２、マウス２３、ディスプレイ２１が接続されている。ＨＤＤ２４には、周辺装置ソフトウェア２６がインストールされている。
【００２２】
システムメモリ２８は、ＲＡＭ（random access memory）１４及びＲＯＭ（read only memory）１３等から構成される記憶手段である。ＲＡＭ１４は、ＣＰＵ１１によりＨＤＤ２４から各プログラムを読み出して実行するのに使用される。また、ＲＡＭ１４は、各プログラムの実行に要するデータを一時記憶するデータ領域、各種情報を生成するワークエリアとして使用される。ＲＯＭ１３には、ＢＩＯＳ（basic  input/output  system）プログラム１３ａが記憶されており、周辺装置１０の起動時において、初期設定をするとともに、ＨＤＤ２４にインストールされているＯＳ（operating  system）２５の起動をおこなう。通信インターフェース２７は、通信ケーブル（図示せず）を介して、プログラマブルコントローラとの通信をおこなう。ディスプレイ２１は、出力デバイスであり、周辺装置ソフトウェア２６により、シーケンス・プログラムの編集等をおこなう場合の画面表示の出力に使用される。キーボード２２およびマウス２３は、それぞれ入力デバイスであり、周辺装置ソフトウェア２６により、シーケンス・プログラムの編集をおこなう場合等の情報の入力に使用される。ＨＤＤ２４は、ハードディスクにて構成される記憶装置であり、周辺装置ソフトウェア２６およびＯＳ２５等がインストールされている。
【００２３】
周辺装置ソフトウェア２６は、シーケンス・プログラム編集プログラム２６ａ、変換プログラム２６ｂ、コンパイル処理プログラム２６ｃ、変数情報テーブル編集プログラム２６ｄ等が含まれている。周辺装置１０は、周辺装置ソフトウェア２６の各プログラムにより、各機能が実装されている。ＯＳ２５は、例えば、Ｗｉｎｄｏｗｓ７（マイクロソフト社の登録商標）等が適用される。
【００２４】
シーケンス・プログラム編集プログラム２６ａは、ラダー回路図の形式のシーケンス・プログラム（ソースコード）１４ａを編集する。変数情報テーブル編集プログラム２６ｄは、シーケンス・プログラム（ソースコード）１４ａにて使用する変数情報テーブルを編集する。シーケンス・プログラム（ソースコード）１４ａは、シーケンス・プログラム（バイナリコード）（図示せず）を読み出し、変換プログラム２６ｂによりに変換したものである。編集後のシーケンス・プログラム（ソースコード）１４ａは、変情報数テーブル１４ｂとともにコンパイル処理プログラム２７ｂにより、コンパイルされ、変換プログラム２６ｂによりシーケンス・プログラム（バイナリコード）に変換される。
【００２５】
図２は、プログラマブルコントローラ１００の構成図である。
ＣＰＵユニット１１０は、ＣＰＵ１１１の内部バス１１２を介して、ＲＯＭ１１５、ＲＡＭ１１４、プログラムメモリ１１３、入出力制御回路１１８、通信インターフェース１１９が接続されている。通信インターフェース１１９は、通信ケーブル（図示せず）を介して、周辺装置１０との通信をおこなう。周辺装置１０により、通信インターフェース１１９を介して、書き込まれたシーケンス・プログラムおよびパラメータは、プログラムメモリ１１３に格納される。ＲＯＭ１１５には、システムプログラム１１５ａが、ＲＡＭ１１４には、内部メモリ１１４ａが記憶されている。システムプログラム１１５ａは、ＣＰＵユニット１１０を制御するとともに、シーケンス・プログラム１１３ａを実行することにより、シーケンス制御をおこなっている。
【００２６】
図３は、周辺装置１０におけるプログラマブルコントローラ１００のプログラミング・モデル２００である。
シーケンス・プログラム１１３ａは、メインプログラム１１３ｂおよびサブプログラム形式からなるサブプログラム１１３ｃから構成され、メインプログラム１１３ｂが格納されるメインプログラム領域２１１および複数のサブプログラム１１３ｃが格納されるサブプログラム領域２１２を有している。メインプログラム領域２１１とサブプログラム領域２１２を区分するのは、メインプログラム１１３ｂの末尾ステップを示すプログラムエンド命令である。シーケンス・プログラム１１３ａの容量は、対応するプログラマブルコントローラ１００の仕様およびパラメータにより規定されている。
【００２７】
シーケンス・プログラム１１３ａは、プログラマブルコントローラ１００のプログラムメモリに格納されて実行される。メインプログラム１１３ｂは、プログラマブルコントローラ１００のスキャンごとに先頭ステップから末尾ステップに至るまでシーケンシャルに実行される。サブプログラム１１３ｃは、メインプログラム１１３ｂから呼び出されて実行される。
【００２８】
サブプログラム１１３ｃは、サブプログラム形式のプログラムであり、先頭ステップにラベル命令（ＬＡＢＥＬ）、末尾ステップに復帰命令（ＲＥＴＵＲＮ）を有し、この２つの命令の間がプログラム本体として構成されている。ラベル命令は、オペランドにサブプログラム名称を有し、このサブプログラム名称により他のサブプログラム１１３ｃと区別されている。
【００２９】
サブプログラム１１３ｃは、サブプログラム呼び出し命令（ＣＡＬＬ）により呼び出される。呼び出されるサブプログラム１１３ｃは、オペランドに設定されたサブプログラム名称のサブプログラム１１３ｃである。メインプログラム１１３ｂから呼び出されたサブプログラム１１３ｃは、先頭ステップのラベル命令（ＬＡＢＥＬ）からシーケンシャルに実行された後、末尾ステップの復帰命令（ＲＥＴＵＲＮ）により、呼び出し元のメインプログラム１１３ｂに復帰する。
【００３０】
内部デバイス２３１は、プログラマブルコントローラ１００の内部メモリである。変数情報テーブル２２０には、内部デバイス２３１のアドレスと変数名との関連付けが示されている。通常、変数情報テーブル２２０の内部デバイス２３１は、コンパイル処理により、変数名ごとに異なるアドレスが割り付けられている。
【００３１】
入出力デバイス２３２は、制御対象の機器１６０と入出力制御回路を介して接続されるプログラマブルコントローラ１００の入出力部である。変数情報テーブル２２０には、入出力デバイス２３２のアドレスと変数名の関連付けが示されている。通常、変数情報テーブル２２０の入出力デバイス２３２は、機器１６０との接続位置によりアドレスが割り付けられている。すなわち、入出力デバイス２３２のアドレスは設計時において決定されている。
【００３２】
変数プログラミングにおいては、シーケンス・プログラム１１３ａの各要素は変数名で記述され、シーケンス・プログラム１１３ａは、変数情報テーブル２２０を介して、デバイス種別およびアドレスが関係付けられている。
【００３３】
図４は、プログラマブルコントローラ１００の周辺装置１０のシーケンス・プログラム編集処理部４００のプログラム構成である。
このように構成されたシーケンス・プログラム編集処理部４００において、既存のシーケンス・プログラムの再利用において、サブプログラムとして標準化する処理について説明する。
【００３４】
最初に、シーケンス・プログラム編集処理部４００は、現在編集中のシーケンス・プログラムとは別の再利用するシーケンス・プログラムを読み出して、シーケンス・プログラム表示処理部４４０により、表示装置に表示する。
【００３５】
そして、選択処理部４１０により、表示装置に表示されたシーケンス・プログラムから、制御対象となる機器に関わる制御部分のラダー回路の範囲を特定して、このラダー回路の範囲を選択する。
【００３６】
次に「コピー」の編集コマンドを実行するとコピー処理部４２０が呼び出される。
コピー処理部４２０は、選択した範囲のラダー回路および変数情報テーブルをバッファメモリ上に一時的にコピーして保持する。
【００３７】
次に、現在編集中のシーケンス・プログラムにおいて、上記の制御対象となる装置を制御するステップ位置にて、「サブプログラムとして貼り付け」の編集コマンドを実行すると、サブプログラム化処理部４３１とサブプログラム貼り付け処理部４３０が呼び出される。
【００３８】
サブプログラム化処理部４３１は、図５に示すサブプログラム名称を問い合わせるダイアログボックス３１０を表示して、サブプログラム名３１１の入力を指示する。
【００３９】
ダイアログボックス３１０にサブプログラム名３１１（図５）が入力されると、図４のサブプログラム命令挿入処理部４３３が呼び出される。サブプログラム命令挿入処理部４３３は、コマンドを実行した編集カーソルの位置に、サブプログラム呼び出し命令（ＣＡＬＬ）を挿入する。このサブプログラム呼び出し命令（ＣＡＬＬ）のオペランドには、先にダイアログボックス３１０（図５）で入力したサブプログラム名３１１（図５）と、後述する退避領域のアドレスが設定される。
【００４０】
一方、サブプログラム貼り付け処理部４３０は、バッファメモリ上のラダー回路をサブプログラム領域に貼り付ける。また、サブプログラム化処理部４３１は、サブプログラム領域に貼り付けたラダー回路をサブプログラム形式にする。すなわち、先頭ステップにラベル命令（ＬＡＢＥＬ）を挿入し、末尾ステップに復帰命令（ＲＥＴＵＲＮ）を追加する。このオペランドには、先に入力したサブプログラム名３１１（図５）が設定される。
【００４１】
サブプログラム変数保持処理部４３２は、末尾ステップの復帰命令（ＲＥＴＵＲＮ）の前ステップに、変数の値を内部デバイスに設けられた退避領域に転送する転送命令（ＭＯＶＥ）を挿入し、先頭ステップのラベル命令（ＬＡＢＥＬ）の後ステップに、退避領域から変数に値を転送する転送命令（ＭＯＶＥ）を挿入する。この退避領域のアドレスは、サブプログラムの呼び出しごとに異なるアドレスとなるように、サブプログラム呼び出し命令（ＣＡＬＬ）のオペランドで設定される。転送するデータサイズはサブプログラムにて使用されるすべての変数の領域のサイズとされる。
【００４２】
また、バッファメモリ上の変数情報テーブルを現在編集中のシーケンス・プログラムの変数情報テーブルに追加するとともに、サブプログラムにて使用されるすべての変数に内部デバイスを関連付ける。そして、変数情報テーブル編集処理部４５０が、これら内部デバイスにアドレスを関連付ける。変数のアドレスは空きアドレスから順に詰められて、サブプログラムにて使用される変数の領域が連続したメモリブロックとなっている。
【００４３】
シーケンス・プログラム表示処理部４００は、上記のサブプログラム呼び出し命令（ＣＡＬＬ）を表示するとともに、サブプログラム表示展開処理部４４１により、サブプログラム呼び出し命令（ＣＡＬＬ）とその次ステップとの間にサブプログラムの表示を展開する。一方、サブプログラム表示折り畳み処理部４４２は、この展開されたサブプログラムの表示を折り畳むことができる。
【００４４】
シーケンス・プログラム表示処理部４００は、表示切替処理部４４３を呼び出すことにより、サブプログラムの表示の展開と折り畳みを切り替えることができる。なお、ここに表示されるサブプログラムはサブプログラムそのものあるが、サブプログラムの実体は表示された位置ではなく、サブプログラム領域に存在している。
【００４５】
図６および図７は、シーケンス・プログラム表示処理部４００による、シーケンス・プログラムの表示例である。
図６に示すように、シーケンス・プログラムは、ラダー回路を構成する接点、コイル等の回路要素が格子状のシートに配置されて表示される。この格子の１つには編集カーソル３４０が表示されており、マウスやキーボードの方向キーで格子間を移動することができる。そして、編集操作により、編集カーソル３４０が示す位置の回路要素を編集することができる。
【００４６】
図６は、サブプログラム表示展開処理部４４１（図４）により、ステップ０１０３のサブプログラム呼び出し命令（ＣＡＬＬ）とその次ステップ０１０４との間にサブプログラムＳＵＢ０１０の表示が展開された状態を示している。また、サブプログラムＳＵＢ０１０の範囲が、区切り線３３１、３３２により示されている。
【００４７】
図７は、サブプログラム表示折り畳み処理部４４２（図４）により、ステップ０１０３のサブプログラム呼び出し命令（ＣＡＬＬ）とその次ステップ０１０４との間のサブプログラムＳＵＢ０１０の表示を折り畳んだ状態を示している。
【００４８】
図６のマウスカーソル（矢印アイコン）３８０を、この区切り線３３１、３３２上に移動させると、マウスカーソル（矢印アイコン）３８０は、マウスカーソル（折り畳みアイコン）３８１に切り替わる。マウスカーソル（折り畳みアイコン）３８１の状態でクリックすると、表示切替処理部４４３（図４）からサブプログラム表示折り畳み処理部４４２（図４）が呼び出され、図７に示すように、サブプログラムＳＵＢ０１０の表示を折り畳むことができる。このとき、区切り線３３１、３３２は１つとなる。
【００４９】
マウスカーソル（矢印アイコン）３８０を、１つになった区切り線３３１、３３２上に移動させると、マウスカーソル（矢印アイコン）３８１は、マウスカーソル（展開アイコン）３８２に切り替わる。マウスカーソル（展開アイコン）３８２の状態でクリックすると、表示切替処理部４４３（図４）からサブプログラム表示展開処理部４４１（図４）が呼び出され、図６に示す表示に戻り、サブプログラムＳＵＢ０１０の表示を展開することができる。
【００５０】
編集カーソル３４０は、サブプログラム表示の展開と折り畳みとに関わらず、区切り線３３１、３３２をまたいで移動することができる。
【００５１】
このように、シーケンス・プログラム編集処理部４００は、サブプログラム表示の展開と折り畳みとに関わらず編集可能であり、サブプログラム表示を展開のまま編集することで、メインプログラムとサブプログラムとが同じ領域で連続したラダー回路であるかのように編集することができる。
【００５２】
次に、このようにして作成されたシーケンス・プログラムの動作について説明する。
図１の周辺装置１０は、通信ケーブル（図示せず）を介して接続された図２のプログラマブルコントローラ１００のプログラムメモリ１１３に、シーケンス・プログラム１１３ａを格納する。
【００５３】
図８に示すシーケンス・プログラム１１３ａは、図２のプログラムメモリ１１３に格納され、システムプログラム１１５ａにより実行される、メインプログラムおよび標準化したサブプログラムＳＵＢ０１０である。このサブプログラムＳＵＢ０１０は、２台の同じ機器（機器１、機器２）が左右に配置された設備を制御するシーケンス・プログラム１１３ａから多重に呼び出されて、機器１、機器２を個別に制御するものである。
【００５４】
図９は、サブプログラムＳＵＢ０１０に対応する変数情報テーブル５００である。サブプログラムの標準化により、サブプログラムが使用するすべての変数は内部デバイスが割り付けられている。シーケンス・プログラム１１３ａは、変数名とデバイスのアドレスとの関連付けられた変数情報テーブルを参照して、使用されるすべての変数にアドレスが関連付けられた状態で、プログラマブルコントローラ１００のプログラムメモリ１１３に格納されている。
【００５５】
図８に示す内部デバイスは、図２のＲＡＭ１１４の内部メモリ１１４ａであり、サブプログラムＳＵＢ０１０は、領域ｓｐ０の変数値を参照して実行される。領域ｓｐ１，ｓｐ２は、退避領域であり、サブプログラムの呼び出し命令（ＣＡＬＬ）ごとに異なるアドレスとなるとなるように、オペランドで設定されている。なお、領域ｓｐ０，ｓｐ１，ｓｐ２のサイズは、サブプログラムにて使用されるすべての変数の領域のサイズと同じである。
【００５６】
図８に示すように、シーケンス・プログラム１１３ａは、機器１を制御するステップ位置において、サブプログラム呼び出し命令（ＣＡＬＬ）６０１を実行する。このオペランドにおいてサブプログラム名ＳＵＢ０１０と退避領域のアドレス（ｓｐ１）が設定されている。サブプログラム呼び出し命令（ＣＡＬＬ）６０１が実行されると、実行ステップのポインタがサブプログラムＳＵＢ０１０のラベル命令（ＬＡＢＥＬ）に移る。
【００５７】
次に、ラベル命令（ＬＡＢＥＬ）の次ステップの転送命令（ＭＯＶＥ）が実行されると、内部デバイスの領域ｓｐ１から領域ｓｐ０に変数の前回値が転送される。サブプログラムＳＵＢ０１０は、領域ｓｐ０の変数値を参照して、プログラム本体部を実行することにより、機器１の制御を実行する。そして、復帰命令（ＲＥＴＵＲＮ）の前ステップの転送命令（ＭＯＶＥ）が実行されることにより、領域ｓｐ０から領域ｓｐ１に変数の今回値が転送される。
【００５８】
また、シーケンス・プログラム１１３ａは、機器２を制御するステップ位置において、サブプログラム呼び出し命令（ＣＡＬＬ）６０２を実行する。このオペランドにおいてサブプログラム名ＳＵＢ０１０と退避領域のアドレス（ｓｐ２）が設定されている。サブプログラム呼び出し命令（ＣＡＬＬ）６０２が実行されると、実行ステップのポインタがサブプログラムＳＵＢ０１０のラベル命令（ＬＡＢＥＬ）に移る。
【００５９】
次に、ラベル命令（ＬＡＢＥＬ）の次ステップの転送命令（ＭＯＶＥ）が実行されると、内部デバイスの領域ｓｐ２から領域ｓｐ０に変数の前回値が転送される。サブプログラムＳＵＢ０１０は、領域ｓｐ０の変数値を参照して、プログラム本体部を実行することにより、機器２の制御を実行する。そして、復帰命令（ＲＥＴＵＲＮ）の前ステップの転送命令（ＭＯＶＥ）が実行されることにより、領域ｓｐ０から領域ｓｐ２に変数の今回値が転送される。
【００６０】
このように、標準化されたサブプログラムＳＵＢ０１０は、変数の前回値の復帰と今回値を保持をおこなうことができるので、サブプログラムＳＵＢ０１０を多重に呼び出して、機器１、機器２を別個に制御することができる。本実施形態によれば、このようなサブプログラムを標準化する作業を容易におこなうことができる。
【００６１】
本発明は、上記実施形態に限定されるものではなく、特許請求の範囲に記載された発明の範囲内で適宜変更することが可能である。例えば、本実施形態ではサブプログラムの表示切替を、区切り線上でマウスカーソルをクリックすることでおこなっているが、例えば、表示コマンド「サブプログラム表示切替」による方法でもよい。また、メインプログラムとサブプログラムとの境界を区切り線にて示しているが、背景色等により境界を示すようにしてもよい。
【符号の説明】
【００６２】
１０：周辺装置、  １１：ＣＰＵ、  １２：内部バス、  １３：ＲＯＭ、
１３ａ：ＢＩＯＳ、  １４：ＲＡＭ、
１４ａ：シーケンス・プログラム（ソースコード）、  １４ｂ：変数情報テーブル、
１４ｃ：パラメータ、  ２１：ディスプレイ、  ２２：キーボード、  ２３：マウス、
２４：ＨＤＤ、  ２５：ＯＳ、  ２６：周辺装置ソフトウェア、
２６ａ：シーケンス・プログラム編集プログラム、  ２６ｂ：変換プログラム、
２６ｃ：コンパイル処理プログラム、  ２６ｄ：変数情報テーブル編集プログラム、
２７：通信インターフェース、  ２８：システムメモリ、
１００：プログラマブルコントローラ、  １１０：ＣＰＵユニット、  １１１：ＣＰＵ、
１１２：内部バス、  １１３：プログラムメモリ、  １１３ａ：シーケンス・プログラム、
１１３ｂ：メインプログラム、  １１３ｃ：サブプログラム、  １１４：ＲＡＭ、
１１４ａ：内部メモリ、  １１５：ＲＯＭ、  １１５ａ：システムプログラム、
１１８：入出力制御回路、  １１９：通信インターフェース、  １６０：機器、
２００：プログラミング・モデル、  ２２０：変数情報テーブル、
２３１：内部デバイス、  ２３２：入出力デバイス、
３１０：サブプログラムとして貼り付けダイアログボックス、
３１１：サブプログラム名、  ３３１，３３２：区切り線、  ３４０：編集カーソル、
３８０：マウスカーソル（矢印アイコン）、
３８１：マウスカーソル（折り畳みアイコン）、
３８２：マウスカーソル（展開アイコン）、
４００：シーケンス・プログラム編集処理部、  ４１０：選択処理部、
４２０：コピー処理部、  ４３０：サブプログラム貼り付け処理部、
４３１：サブプログラム化処理部、  ４３２：サブプログラム変数保持処理部、
４３３：サブプログラム命令挿入処理部、  ４４０：シーケンス・プログラム表示処理部、
４４１：サブプログラム表示展開処理部、  ４４２：サブプログラム表示折り畳み処理部、
４４３：表示切替処理部、  ４５０：変数情報テーブル編集処理部、
５００：変数情報テーブル、  ６０１，６０２：サブプログラム呼び出し命令
【図１】
2014071862.tif 000003
【図２】
2014071862.tif 000004
【図３】
2014071862.tif 000005
【図４】
2014071862.tif 000006
【図５】
2014071862.tif 000007
【図６】
2014071862.tif 000008
【図７】
2014071862.tif 000009
【図８】
2014071862.tif 000010
【図９】
2014071862.tif 000011