(57)【特許請求の範囲】
【請求項１】
ユーザがＰＬＣのラック構成図を事前に生成しておき、ラック上の高機能ユニットをプログラミングツールの変数テーブルにドラッグ・アンド・ドロップすると、その高機能ユニットのパラメータを構造体変数として登録することができるようにし、
前記自動生成された構造体は、高機能ユニットの最上位機種をベースとして生成され、対象とした機種で使用できる構造体のメンバ変数だけが変数テーブル上で有効となり、ラック構成図上で下位の型式に変更すると、有効であった変数が無効になった場合でも、その変数を使用していた回路の全ての命令をＮＯＰ命令にすることで、高機能ユニットの型式を変更してもプログラムをそのまま使用できる、ようにしたことを特徴とするＰＬＣのプログラム開発支援装置。
【請求項２】
ユーザがＰＬＣのラック構成図を事前に生成しておき、ラック上の高機能ユニットをプログラミングツールの変数テーブルにドラッグ・アンド・ドロップすると、その高機能ユニットのパラメータを構造体変数として登録することができるようにし、
前記自動生成された構造体は、高機能ユニットの最上位機種をベースとして生成され、対象とした機種で使用できる構造体のメンバ変数だけが変数テーブル上で有効となり、ラック構成図上で下位の型式に変更すると、有効であった変数が無効になった場合、その変数を使用していた命令だけをＮＯＰ命令にすることで、高機能ユニットの型式を変更してもプログラムをそのまま利用できる、ようにしたことを特徴とするＰＬＣのプログラム開発支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ビルディング・ブロック型のプログラマブル・コントローラ（以下、ＰＬＣと言う）における高機能ユニット用制御プログラム（ユーザプログラム）の構築に好適なＰＬＣのプログラム開発支援装置に関する。
【背景技術】
【０００２】
ＩＥＣ６１１３１−３では、ユーザ定義変数として構造体変数が定義されている。この構造体変数は、ＰＬＣのプログラミング言語で使用することができる。ＰＬＣの高機能ユニットは、多くのパラメータを保有している。これらのパラメータは、階層構造で設計されていることが多い。そのため、パラメータを構造体で表現することは合理的である。
【０００３】
このような高機能ユニットの制御をラダー言語でプログラミングする場合、高機能ユニットのパラメータをラダー命令のオペランドとして使用することになる。
【０００４】
従来、このようなプログラミングに際しては、ユーザが高機能ユニットのマニュアルを参照しながら、手入力で変数として登録する必要があった。そのため、複数の高機能ユニットを制御する場合は、ユニットごとに異なる複数のマニュアルを見ながら変数登録を行なう必要があった。
【０００５】
また、高機能ユニットのパラメータに割り当てるアドレスは、高機能ユニットに設定するユニット番号から所定の計算式で算出される。そのため、ユーザは、各パラメータのそれぞれについて、マニュアルを見ながら手計算でアドレスを算出する必要があった。
【０００６】
なお、高機能ユニットのパラメータ情報をラック構成図を使用して管理することは、この種のＰＬＣのプログラム開発支援装置において、従来より行われている（例えば、特許文献１参照）。
【特許文献１】特開２００６−２４３８４１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
従来、ラック構成図を作成することで、高機能ユニットのパラメータ情報をラック構成図で管理するようにしたＰＬＣのプログラム開発支援装置において、ラダー言語によるプログラミングを行う場合には、ユーザは、マニュアルを見ながら、必要なパラメータを変数として登録しなければならなかった。
【０００８】
高機能ユニットにはユニット番号を各パラメータに割り付けることになるが、ミスや仕様変更などによりユニット番号の変更が発生した場合、パラメータに割り付けられたアドレスを変更する必要がある。その際には、ユーザは登録した変数のアドレスを手作業で変更しなければならなかった。
【０００９】
高機能ユニットとしては、通常、複数の型式のものが提供されている。処理するデータ量や一部の機能のありなしなどの違いはあるが、同じタイプの高機能ユニットであれば、型式が異なっても基本的に同じ動作をする。
【００１０】
ユーザは、通常、できるだけ低価格のユニットを使用するため、制御に不要な機能を省いた型式のユニットを採用することになるが、制御対象の変更により上位の型式の機能が必要になることもある。例えば、位置制御などは、１軸、２軸、４軸の軸数の違いで型式が異なるが、各軸の動作仕様などは同じである。
【００１１】
しかし、従来のプログラム開発支援装置にあっては、２軸から１軸に変更した場合でも、１軸から２軸に変更した場合でも、その都度、プログラムの追加や削除と言った作業が必要であった。
【００１２】
この発明は、上述の問題点に着目してなされたものであり、その目的とするところは、ラック構成図を作成することで、高機能ユニットのパラメータ情報をラック構成図で管理するようにしたＰＬＣのプログラム開発支援装置において、ラダー言語によるプログラミングを行う場合には、ユーザは、マニュアルを見ずとも、必要なパラメータを変数として登録可能とすることにある。
【００１３】
この発明の他の目的とするところは、ラック構成図を作成することで、高機能ユニットのパラメータ情報をラック構成図で管理するようにしたＰＬＣのプログラム開発支援装置において、ミスや仕様変更などによりユニット番号の変更が発生した場合、その変更操作をできるだけ簡便なものとすることにある。
【００１４】
この発明の他の目的とするところは、ラック構成図を作成することで、高機能ユニットのパラメータ情報をラック構成図で管理するようにしたＰＬＣのプログラム開発支援装置において、諸々の事情で高機能ユニットが下位の型式のものから上位の型式のものへと、或いは上位の型式のものから上位の型式のものへと変更されて場合にあっても、それに伴うプログラムの削除や変更の手間を不要とすることにある。
【課題を解決するための手段】
【００１５】
以上の発明が解決しようとする課題は、以下の構成を有するＰＬＣのプログラム開発支援装置により解決することができるものと考えられる。
【００１６】
すなわち、このＰＬＣのプログラム開発支援装置は、ユーザがＰＬＣのラック構成図を事前に生成しておき、ラック上の高機能ユニットをプログラミングツールの変数テーブルにドラッグ・アンド・ドロップすると、その高機能ユニットのパラメータを構造体変数として登録することができる、ようにしたことを特徴とするものである。
【００１７】
このような構成によれば、ラック構成図を作成することで、高機能ユニットのパラメータ情報をラック構成図で管理するようにしたＰＬＣのプログラム開発支援装置において、ラダー言語によるプログラミングを行う場合には、ユーザは、マニュアルを見ずとも、必要なパラメータを変数として登録可能となる。
【００１８】
好ましい実施の形態としては、前記ラック構成図からドラッグ・アンド・ドロップして生成した構造体変数は、ラック構成図のユニット番号の変更が発生しても、構造体変数に割り付いているアドレスが自動的に更新される、ようにしてもよい。
【００１９】
このような構成によれば、ラック構成図を作成することで、高機能ユニットのパラメータ情報をラック構成図で管理するようにしたＰＬＣのプログラム開発支援装置において、ミスや仕様変更などによりユニット番号の変更が発生した場合、その変更操作が簡便なものとなる。
【００２０】
好ましい実施の形態としては、前記自動生成された構造体は、高機能ユニットの最上位機種をベースとして生成され、対象とした機種で使用できる構造体のメンバ変数だけが変数テーブル上で有効となり、ラック構成図上で下位の型式に変更すると、有効であった変数が無効になった場合でも、その変数を使用していた回路の全ての命令をＮＯＰ命令にすることで、高機能ユニットの型式を変更してもプログラムをそのまま使用できる、ようにしてもよい。
【００２１】
好ましい実施の形態としては、前記自動生成された構造体は、高機能ユニットの最上位機種をベースとして生成され、対象とした機種で使用できる構造体のメンバ変数だけが変数テーブル上で有効となり、ラック構成図上で下位の型式に変更すると、有効であった変数が無効になった場合、その変数を使用していた命令だけをＮＯＰ命令にすることで、高機能ユニットの型式を変更してもプログラムをそのまま利用できる、ようにしてもよい。
【００２２】
このような構成によれば、ラック構成図を作成することで、高機能ユニットのパラメータ情報をラック構成図で管理するようにしたＰＬＣのプログラム開発支援装置において、諸々の事情で高機能ユニットが下位の型式のものから上位の型式のものへと、或いは上位の型式のものから上位の型式のものへと変更されて場合にあっても、それに伴うプログラムの削除や変更の手間を不要とすることができる。
【発明の効果】
【００２３】
本発明によれば、ラック構成図を作成することで、高機能ユニットのパラメータ情報をラック構成図で管理するようにしたＰＬＣのプログラム開発支援装置において、ラダー言語によるプログラミングを行う場合には、ユーザは、マニュアルを見ずとも、必要なパラメータを変数として登録可能となる。
【００２４】
また、本発明によれば、ラック構成図を作成することで、高機能ユニットのパラメータ情報をラック構成図で管理するようにしたＰＬＣのプログラム開発支援装置において、ミスや仕様変更などによりユニット番号の変更が発生した場合、その変更操作が簡便なものとなる。
【００２５】
また、本発明によれば、ラック構成図を作成することで、高機能ユニットのパラメータ情報をラック構成図で管理するようにしたＰＬＣのプログラム開発支援装置において、諸々の事情で高機能ユニットが下位の型式のものから上位の型式のものへと、或いは上位の型式のものから上位の型式のものへと変更されて場合にあっても、それに伴うプログラムの削除や変更の手間を不要とすることができる。
【発明を実施するための最良の形態】
【００２６】
以下に、この発明に係るＰＬＣのプログラム開発支援装置の好適な実施の一形態を添付図面を参照しながら詳細に説明する。
【００２７】
まず、本発明を概念的に理解するための説明図が図１に示されている。同図に示されるＰＬＣのプログラム開発支援装置にあっては、主として４つの新機能が備えられている。
【００２８】
まず、第１の機能は、ユーザがＰＬＣのラック構成図を事前に生成しておき、ラック上の高機能ユニットをプログラミングツールの変数テーブルにドラッグ＆ドロップすると、その高機能ユニットのパラメータを構造体変数として登録することができるという機能である。
【００２９】
次に、第２の機能としては、ラック構成図からドラッグ＆ドロップして生成した構造体変数は、ラック構成図のユニット番号の変更が発生しても、構造体変数に割り付けているアドレスが自動的に更新されるといった機能である。
【００３０】
第３の機能は、自動生成した構造体は高機能ユニットの最上位機種をベースに生成し、対象とした機種で使用できる構造体のメンバ変数だけが変数テーブル上で有効となり、ラック構成図上で下位の型式に変更すると、有効であった変数が無効になった場合、その変数を使用していた回路のすべての命令をＮＯＰ命令にすることで、高機能ユニットの型式を変更してもプログラムをそのまま利用できるようにするといった機能である。
【００３１】
第４の機能は、自動生成した構造体は高機能ユニットの最上位機種をベースに生成し、対象とした機種で使用できる構造体のメンバ変数だけが変数テーブル上で有効となり、ラック構成図上で下位の型式に変更すると、有効であった変数が無効になった場合、その変数を使用していた命令だけどＮＯＰ命令にすることで、高機能ユニットの型式を変更してもプログラムをそのまま利用できるようにするといった機能である。
【００３２】
次に、以上の４つの機能を実現するためのプログラム開発支援装置のハードウェア構成及びソフトウェア構成について順次説明を加えていく。
【００３３】
プログラム開発支援装置のハードウェア構成図が図２に示されている。当業者にはよく知られているが、この種のプログラム開発支援装置は、パーソナルコンピュータ（以下、パソコンと称する）のハードウェアの上に、プログラム開発並びに編集などに必要な各種のソフトウェアを組み込むことで構成される。
【００３４】
すなわち、プログラム開発支援装置１は、パソコン本体１０と、ディスプレイ１１と、キーボード１２と、マウスなどのポインティングデバイス１３とを主体として構成されている。
【００３５】
パソコン本体１０は、装置全体を統括制御するためのＣＰＵ１０ａと、ＲＡＭで構成される第１メモリ１０ｂと、ＲＯＭ／ＨＤＤで構成される第２メモリ１０ｃと、ＰＬＣとの接続を行うためのＣＯＭポート（シリアル通信部）１０ｄとを含んで構成される。
【００３６】
ＣＰＵ１０ａは、マイクロプロセッサを主体として構成され、第２メモリ（ＲＯＭ／ＨＤＤ）１０ｃに格納された各種のプログラムやユニット情報等々を、第１メモリ（ＲＡＭ）１０ｂをワークエリアとして実行することによって、プログラム開発支援装置としての各種の機能を実現するように構成されている。
【００３７】
パソコン本体１０とユーザとのインタフェースは、ディスプレイ１１、キーボード１２、及びポインティングデバイス１３を使用したグラフィック・ユーザ・インタフェース（ＧＵＩ）を介して行われる。
【００３８】
次に、この発明に係るプログラム開発支援装置のソフトウェア構成を図３〜図１０のフローチャートを参照しつつ順次に説明する。
［ラック構成図へのユニットの登録］
プログラム開発支援装置１において、ラック構成図へのユニットの登録処理を示すフローチャートが図３に示されている。
【００３９】
同図に示されるように、先ず、ユーザは、装置１に内蔵されたプログラミングツール（プログラミング用の各種の機能が組み込まれたソフトウェア）で、新規にプロジェクトを作成する（ステップ１０１）。このようにして作成されたプロジェクトが図１１に示されている。
【００４０】
次に、ユーザは、プログラミングツールのプロジェクトワークスペース上の「Ｉ／Ｏテーブル・ユニット設定」をダブルクリックして、ラック構成図を起動する（ステップ１０２）。このようにして起動されるラック構成図が図１２に示されている。
【００４１】
次に、ラック構成図の指定されたスロット位置がユーザによりクリックされると、ラックに装着するユニットを決めるための、ユニット型式一覧が表示される（ステップ１０３）。このようにして表示されるユニット型式一覧のダイアログを図１３に示す。
【００４２】
次に、ユーザは、図１３に示されるユニット型式一覧から装着するユニットを選択する（ステップ１０４）。すると、ラック構成図は選択された型式のプロファイル情報が保存されたＣＰＳファイルを第２のメモリに設定されたユニット情報記憶部から検索する（ステップ１０５）。
【００４３】
次に、検索したＣＰＳファイルからユニット種別を取得する（ステップ１０６）。しかるのち、ユニット種別が高機能ユニットかどうかを判別する（ステップ１０７）。
【００４４】
次に、ユニット種別が高機能ユニットの場合（ステップ１０７ＹＥＳ）、図１４のユニット番号を入力するダイアログを表示する（ステップ１０８）。
【００４５】
次に、ラック構成図は、ユーザが入力したユニット番号から、高機能ユニットの各パラメータのアドレスを算出する（ステップ１０９）。さらに、ＣＰＳファイルから構造体のメンバ変数となるパラメータを抽出し、各パラメータにＣＰＳで定義されている、先頭からのオフセット値とパラメータデータ型から、アドレスを割り当てる（ステップ１１０）。
【００４６】
例えば、位置制御ユニットのパラメータの場合、以下のようにメンバ変数となるパラメータに物理的なアドレスを割り当てる。
NCParameter.CommonParam.OperatingDataAreaDesignation             D20100
NCParameter.CommonParam.BeginingWordOfOperatingDataArea          D20101
…
NCParameter.AxisParam[0].OutputPulseSelection                    D20104
NCParameter.AxisParam[0].OutputPulseDirection                    D20105
…
NCParameter.AxisParam[1].OutputPulseSelection                    D20132
NCParameter.AxisParam[1].OutputPulseDirection                    D20133
次に、ユニット種別が高機能ユニットでない場合は、何も表示せずラック構成図の指定されたスロット位置に選択されたユニットを登録する（ステップ１１１）。以上で１ユニットの登録が完了となる。
【００４７】
複数ユニットの登録処理を行う場合は、再度ステップ１０３の処理から開始する。スロット１に入力ユニット、スロット２に出力ユニット、スロット３に位置制御ユニットを登録したラック構成図の例を図１５に示す。
【００４８】
一方、ステップ１０７で高機能ユニットではないと判定されると、ステップ１１２へと進み、ユニットのビット数分、０ＣＨから前詰めでアドレスを確保する（ステップ１１２）。
［ラック構成図の高機能ユニットから構造体変数を生成］
ラック構成図上の高機能ユニットをプログラミングツールの変数テーブルにドラッグ＆ドロップして、構造体変数を生成するフローチャートを図４に示す。
【００４９】
同図において処理が開始されると、ユーザは、ラック構成図の高機能ユニットをドラッグして、プログラミングツールの変数テーブルへドロップする（ステップ２１０）。イメージ図を図１６に示す。
【００５０】
次に、プログラミングツールはラック構成図からアドレスが割り当てられたパラメータリストの情報を取得する（ステップ２０２）。パラメータリストには、パラメータ毎に以下のデータをセットする。
【００５１】
例として前述の“NCParam.AxisParam[1].OutputPulseDirectionで説明する。
【００５２】
・パラメータ名（メンバ変数名となる。例では、OutputPulseDirection）
・階層構造名（構造体型を生成するための上位の構造。例では、NCParam.AxisParam[1]）
・データ型（メンバ変数のデータ型）
・有効フラグ（メンバ変数がこの型式で使用できるかどうかを判別するフラグ）
・アドレス（メンバ変数に割り当てられるアドレス）
・コメント（各メンバ変数に割り当てられるコメント）
次に、上記のパラメータリストのパラメータリスト、階層構造名、データ型、コメントから構造体定義を生成し、構造体型定義に登録する（ステップ２０３）。構造体型定義の例を図１７に示す。
【００５３】
次に、上記構造体型から構造体変数を生成し、アドレスを割り当て、図１８のように変数テーブルに構造体変数を登録する（ステップ２０４）。
［高機能ユニットのユニット番号変更による構造体変数の割付アドレスの変更］
ラック構成図上の高機能ユニットのユニット番号を変更することにより、プログラミングツールの変数テーブルのその高機能ユニットの構造体変数に割り当てられているアドレスを変更するフローチャートを図５に示す。
【００５４】
同図において、処理が開始されると、ユーザは、ラック構成図の高機能ユニットを選択し、ユニット番号の変更機能を実行する（ステップ３０１）。ユニット番号の変更ダイアログを図１９に示す。
【００５５】
次に、ユニット番号が変更されると、ラック構成図は各パラメータに割り当てたアドレスを再計算し、パラメータリストを更新する（ステップ３０２）。
【００５６】
次に、ラック構成図からプログラミングツールに構造体変数のアドレス割付の変更が発生したことを通知し、ラック構成図からプログラミングツールに更新したパラメータリストを渡す（ステップ３０３）。
【００５７】
次に、プログラミングツールは更新されたパラメータリストから構造体変数のアドレスの再割り当てを実行する（ステップ３０４）。ユニット番号が１から２に変更された場合の構造体変数への割付アドレスの変更例を図２０に示す。
［高機能ユニットの型式変更による構造体変数を使用したプログラムの有効／無効化］
ラック構成図上の高機能ユニットの型式を変更することにより、パラメータの一部が有効あるいは無効となる。有効／無効の変更により、変数テーブルの構造体変数およびその構造体変数を使用している回路の有効／無効を切り替えるフローチャートを図７に示す。
【００５８】
同図において、処理が開始されると、ユーザは、ラック構成図の高機能ユニットを選択し、ユニット変更を実行すると、同一種別の変更可能な型式一覧を表示する（ステップ５０１）。型式一覧ダイアログを図２１に示す。
【００５９】
次に、ラック構成図は、変更された型式のＣＰＳファイルを図２の第２記憶部に設定されたユニット情報記憶部から読み出し、そのＣＰＳファイルからパラメータリストを取り出し、アドレスの再割付を行う（ステップ５０２）。
【００６０】
次に、ラック構成図からプログラミングツールに高機能ユニットの型式変更が発生したことを通知し、ラック構成図がプログラミングツールに更新したパラメータリストを渡す（ステップ５０３）。
【００６１】
次に、プログラミングツールの変数テーブルは、前回のパラメータリストの各パラメータの有効フラグと今回取得したパラメータリストの各パラメータの有効フラグとを比較する（ステップ５０４）。比較した結果、メンバ変数の有効フラグに変更があればステップ５０６の処理を実行し、変更がなければステップ５０９の処理を実行する。
【００６２】
ステップ５０６の処理において、有効フラグの変更が、有効から無効に変更されたのであればステップ５０７の処理を実行し、無効から有効に変更された場合はステップ５０８の処理を実行する。
【００６３】
ステップ５０７の処理においては、有効から無効に変わった構造体変数のメンバ変数は、変数テーブル上で無効とし、そのメンバ変数をグレー表示して使用不可であることをユーザに通知し、アドレスを未割付の状態にする。グレー表示した場合の構造体のメンバ変数の表示例を図２２に示す。また、そのメンバ変数を有効フラグの変更情報と共に変更リストに登録する。
【００６４】
ステップ５０８の処理においては、変数テーブルのグレー表示していたメンバ変数を通常の表示にし、割付アドレスも表示する。また、そのメンバ変数を有効フラグの変更情報と共に変更リストに登録する。
【００６５】
次に、対象とする構造体変数の全メンバ変数に対して比較処理が完了するのを待って（ステップ５０９ＹＥＳ）、ラダープログラムの変改処理（ステップ５１０）を実行する。
［構造体メンバ変数の有効／無効化の変更によるプログラムの変更］
［高機能ユニットの型式変更による構造体変数を使用したプログラム有効／無効化」で有効フラグが変更となったメンバ変数を使用しているラダー回路の変更を行うフローチャートを図８に示す。
【００６６】
同図において、処理が開始されると、まず、プログラムの先頭から１回路を読み出す（ステップ６０１）。
【００６７】
次に、回路の変換方式が「回路の全面例をＮＯＰ命令に変換する」か「対象メンバ変数を使用している命令だけをＮＯＰ命令に変換する」かを判別する（ステップ６０２）。回路の変換方式の変更は、後述する「下位の形式に変換された場合に無効となるメンバ変数を使用している回路のＮＯＰ変換方法を変更する」の項を参照されたい。
【００６８】
「回路の全命令をＮＯＰ命令に変換する」場合、「回路の全命令を変更」のフローチャート処理を実行する（ステップ６０３）。「対象メンバ変数を使用している命令だけをＮＯＰ命令に変換する」場合、「対象メンバ変数を使用した命令の変更」のフローチャート処理を実行する（ステップ６０４）。
【００６９】
しかるのち、すべての回路に対して、ステップ６０１からの処理を繰り返し実行する（ステップ６０５ＮＯ）。
［回路の全命令を変更］
回路の変換方式が「回路の全命令をＮＯＰ命令に変換する」場合のラダー回路の変更フローチャートを図９に示す。
【００７０】
同図において、処理が開始されると、「高機能ユニットの型式変更による構造体変数を使用したプログラムの有効／無効化」で生成した、変更リスト内に未チェックの変数が存在するかどうかをチェックする（ステップ７０１）。存在する場合はステップ７０２の処理を実行する。存在しない場合は本フローチャート処理を終了する。
【００７１】
次に、変更リストから１変数を取得する（ステップ７０２）。さらに、その変数が回路で使用されているかどうかをチェックする（ステップ７０３）。回路で使用されていれば、ステップ７０４の処理を実行する。使用されていなければ、次の変数をチェックするためステップ７０１の処理に戻る。
【００７２】
次に、変数が「有効から無効」に変更されたか、「無効から有効」に変更されたかをチェックする（ステップ７０４）。「有効から無効」に変更された場合はステップ７０５の処理を実行する。「無効から有効」に変更された場合はステップ７０６の処理を実行する。
【００７３】
「有効から無効」状態に変更されたメンバ変数を使用している回路は、グレー表示に変更し、この回路が実行されないことをユーザに通知する。また、ＰＬＣのオブジェクトへ変換する場合、無効回路はすべてＮＯＰ命令に置き換える。ＮＯＰ命令に置き換える場合、オブジェクトサイズが変更しないようにＮＯＰ命令を生成し、本フローチャート処理を終了する（ステップ７０５）。グレー表示した回路の例を図２３に、ＮＯＰ命令に置き換える例を図２４にそれぞれ示す。
【００７４】
「無効から有効」状態に変更されたメンバ変数を使用している回路はグレー表示の状態から通常表示に戻し、使用可能になったことが分かるようにユーザに通知する。ただし、本回路で「有効から無効」に変更されたメンバ変数が存在している場合、そのメンバ変数を優先するため、チェックを継続する（ステップ７０６）。使用可能状態になった回路の例を図２５に示す。
［対象メンバ変数を使用した命令の変更］
回路の変換方式が対象メンバ変数を使用している命令のみＮＯＰ命令にする場合のラダー回路の変更フローチャートを図１０に示す。
【００７５】
同図において、処理が開始されると、まず、変更リスト内に未チェックの変数が存在するかどうかをチェックする（ステップ８０１）。存在する場合はステップ８０２の処理を実行する。存在しない場合は本フローチャート処理を終了する。
【００７６】
次に、変更リストから位置変数を取得する（ステップ８０２）。さらに、その変数が回路で使用されているかどうかをチェックする（ステップ８０３）。回路で使用されていればステップ８０４の処理を実行する。使用されていなければ、次の変数をチェックするためステップ８０１の処理に戻る。
【００７７】
次に、変数が「有効から無効」に変更されたか、「無効から有効」に変更されたかをチェックする（ステップ８０４）。「有効から無効」に変更された場合はステップ８０５の処理を実行する。「無効から有効」に変更された場合はステップ８０６の処理を実行する。
【００７８】
ステップ８０５の処理においては、「有効から無効」状態に変更されたメンバ変数を使用している命令をグレー表示に変更し、この命令の実行されないことをユーザに通知する。また、ＰＬＣのオブジェクト変換する場合、無効命令はＮＯＰ命令に置き換える。ＮＯＰ命令に置き換える場合、オブジェクトサイズが変更しないようにＮＯＰ命令を生成する。グレー表示した命令を持つ回路の例を図２６に、ＮＯＰ命令に置き換える例を図２８にそれぞれ示す。
【００７９】
ステップ８０６の処理においては、「無効から有効」状態に変更されたメンバ変数を使用している命令はグレー表示の状態から通常表示に戻し、使用可能になったことがわかるようにユーザに通知する（ステップ８０６）。使用可能状態になった回路の例を図２９に示す。
【００８０】
次に、変更リスト内に未チェックの変数が存在するかどうかをチェックする（ステップ８０７）。存在する場合はステップ８０２の処理を実行する。存在しない場合は本フローチャート処理を終了する。
［下位の型式に変換された場合に無効となるメンバ変数を使用している回路のＮＯＰ変換方法を変更する］
ラック構成図上の高機能ユニットの型式が下位の型式に変更されることにより、その高機能ユニットから生成された構造体のメンバ変数の一部を無効状態とし、そのメンバ変数を使用しているラダー回路の全命令をＮＯＰ命令に変換する（「高機能ユニットの型式変更による構造体変数を使用したプログラムの有効／無効化」参照）。
【００８１】
しかし、そのメンバ変数を使用している命令だけをＮＯＰ命令に置き換えることも可能とする。構造体のメンバ変数が無効となったとき、そのメンバ変数を使用している回路の全命令をＮＯＰ命令にする設定から、そのメンバ変数を使用している命令だけをＮＯＰ命令に変更するフローチャートを図６に示す。
【００８２】
同図において、処理が開始されると、下位の型式では無効となるメンバ変数を使用して回路を表示する（ステップ４０１）。
【００８３】
回路の例を図２７に示す。次に、その回路を選択し、回路のプロパティを表示する（ステップ４０２）。回路のプロパティダイアログを図２９に示す。デフォルトでは「変数が無効になれば回路の全命令をＮＯＰに置き換える」チェックボックスがチェックされている。
【００８４】
次に、回路のプロパティダイアログの「変数が無効になれば回路の全命令をＮＯＰに置き換える」チェックボックスのチェックを外し、ダイアログを終了する（ステップ４０３）。
【００８５】
以上、添付図面を参照しながら詳細に説明した実施形態によれば、次のような作用効果がある。
【００８６】
プログラミングツールは、ＰＬＣのユニットの型式ごとにそれらのユニットのプロファイル情報を保存したＣＰＳ（Component Profile Sheet）ファイルを管理している。高機能ユニットの関しては、その高機能ユニットがサポートしているパラメータの転移情報がＣＰＳに格納されている。
【００８７】
ＰＬＣのラック構成図を作成するときに、ユーザは高機能ユニットを装着する時点でユニット番号を登録する。その結果、ＣＰＳに格納されている高機能ユニットのパラメータを取得し、アドレスを計算して、各パラメータにアドレスを割り付けることができる。
【００８８】
従来まで、ユーザがこれらのパラメータをラダープログラムで使用する場合、マニュアルを見ながらプログラミングツールの変数テーブルで変数を入力しなければならなかったが、本発明では、ラック構成図上に登録した高機能ユニットをドラッグし、プログラミングツールの変数テーブルにドロップすることで、自動的に変数テーブルへ構造体変数として生成することができる。
【００８９】
また、高機能ユニットのユニット番号は実際のユニットの前面にあるロータリースイッチで設定することとなる。そのため、実際のロータリースイッチとラック構成図のユニット番号が不一致となるミスや、開発途中でのユニット数の増加や減少により管理しやすいようにユニット番号を見直すなど、ラック構成図上の高機能ユニットのユニット番号が変更されることがある。本発明では、このユニット番号の変更にともなう構造体変数のアドレスの再割付も自動的に行うことができる。
【００９０】
高機能ユニットは通常複数の型式が提供されている。処理するデータ量や一部の機能のありなしなどの違いはあるが、同じタイプの高機能ユニットであれば型式が異なっても基本的に同じ動作をするユニットである。
【００９１】
ユーザは通常できるだけコストの安いユニットを使用するため、制御に不要な機能を省いた型式のユニットを採用することとなるが、制御対象の変更により上位の型式の機能が必要になることもある。例えば、位置制御などは１軸、２軸、４軸の軸数の違いで型式が異なるが、各軸の動作仕様などは同じである。
【００９２】
しかし、２軸から１軸に変更した場合でも、１軸から２軸に変更した場合でも、プログラムの追加や削除の変更作業は必要であった。本発明では、ユーザはまず最上位型式のフルスペックベースでプログラミングを行っておく。使用する型式を下位のものに変更した場合、プログラミングツールは下位の機種が未サポートの機能を動作しないようにする。具体的には、下位の機種では未サポートの構造体のメンバ変数（パラメータ）を使用している命令を非実行命令（ＮＯＰ命令で実現）とするか、あるいはその変数を使用している回路のすべての命令を非実行命令とする。
【００９３】
これにより、型式の変更を行っても未サポートの機能のプログラムを削除・変更することなく、そのまま再利用できる。逆に下位から上位に戻した場合は非実行命令にした命令を通常の命令に戻すだけとなり、この場合もプログラムの変更は不要である。
【産業上の利用可能性】
【００９４】
本発明によれば、ラック構成図を作成することで、高機能ユニットのパラメータ情報をラック構成図で管理するようにしたＰＬＣのプログラム開発支援装置において、ラダー言語によるプログラミングを行う場合には、ユーザは、マニュアルを見ずとも、必要なパラメータを変数として登録可能となる。
【００９５】
また、本発明によれば、ラック構成図を作成することで、高機能ユニットのパラメータ情報をラック構成図で管理するようにしたＰＬＣのプログラム開発支援装置において、ミスや仕様変更などによりユニット番号の変更が発生した場合、その変更操作が簡便なものとなる。
【００９６】
また、本発明によれば、ラック構成図を作成することで、高機能ユニットのパラメータ情報をラック構成図で管理するようにしたＰＬＣのプログラム開発支援装置において、諸々の事情で高機能ユニットが下位の型式のものから上位の型式のものへと、或いは上位の型式のものから上位の型式のものへと変更されて場合にあっても、それに伴うプログラムの削除や変更の手間を不要とすることができる。
【図面の簡単な説明】
【００９７】
【図１】本発明を概念的に理解するための説明図である。
【図２】プログラム開発支援装置のハードウェア構成図である。
【図３】ラック構成図へのユニットの登録処理を示すフローチャートである。
【図４】変数テーブルへの構造体変数生成処理を示すフローチャートである。
【図５】ラック構成図上のユニット番号変更処理を示すフローチャートである。
【図６】未仕様メンバ変数だけをＮＯＰに置換するように設定する処理を示すフローチャートである。
【図７】ラック構成図上のユニットの型式を変更する処理を示すフローチャートである。
【図８】プログラムの変換処理を示すフローチャートである。
【図９】回路の全命令の変更処理を示すフローチャートである。
【図１０】対象メンバ変数を使用した命令の変更処理を示すフローチャートである。
【図１１】プログラミングツールでの新規プロジェクト作成時の画面説明図である。
【図１２】ＰＬＣのラック構成図を示す画面説明図である。
【図１３】ユニット一覧を示す画面説明図である。
【図１４】ユニット番号入力のための操作案内の画面説明図である。
【図１５】ラック構成図の登録例を示す画面説明図である。
【図１６】高機能ユニットを変数テーブルへドラッグ＆ドロップする操作の説明図である。
【図１７】構造体型定義を表にして示す画面説明図である。
【図１８】構造体変数の登録を表にして示す画面説明図である。
【図１９】ユニット番号の変更のための操作案内の画面説明図である。
【図２０】ユニット番号変更によるアドレス変更の例を示す画面説明図である。
【図２１】ユニット変更ダイアログの画面説明図である。
【図２２】構造体変数の一部のメンバ変数が無効状態となった場合の画面説明図である。
【図２３】無効状態となったラダー図である。
【図２４】ＮＯＰ命令への置換例である。
【図２５】使用可能状態となったラダー図である。
【図２６】メンバ変数を使用している命令だけ無効となる回路例である。
【図２７】構造体のメンバ変数を使用する回路例である。
【図２８】ＮＯＰ命令への置換例である。
【図２９】回路の全命令をＮＯＰに変換しないための操作案内の画面説明図である。
【符号の説明】
【００９８】
１        プログラム開発支援装置
１０      パソコン本体
１０ａ    ＣＰＵ
１０ｂ    第１メモリ（ＲＡＭ）
１０ｃ    第２メモリ（ＲＯＭ／ＨＤＤ）
１０ｄ    ＣＯＭポート（シリアル通信部）
１１      ディスプレイ
１２      キーボード
１３      ポインティングデバイス
【図１】
0005141889.tif 000002
【図２】
0005141889.tif 000003
【図３】
0005141889.tif 000004
【図４】
0005141889.tif 000005
【図５】
0005141889.tif 000006
【図６】
0005141889.tif 000007
【図７】
0005141889.tif 000008
【図８】
0005141889.tif 000009
【図９】
0005141889.tif 000010
【図１０】
0005141889.tif 000011
【図１１】
0005141889.tif 000012
【図１２】
0005141889.tif 000013
【図１３】
0005141889.tif 000014
【図１４】
0005141889.tif 000015
【図１５】
0005141889.tif 000016
【図１６】
0005141889.tif 000017
【図１７】
0005141889.tif 000018
【図１８】
0005141889.tif 000019
【図１９】
0005141889.tif 000020
【図２０】
0005141889.tif 000021
【図２１】
0005141889.tif 000022
【図２２】
0005141889.tif 000023
【図２３】
0005141889.tif 000024
【図２４】
0005141889.tif 000025
【図２５】
0005141889.tif 000026
【図２６】
0005141889.tif 000027
【図２７】
0005141889.tif 000028
【図２８】
0005141889.tif 000029
【図２９】
0005141889.tif 000030