(57)【特許請求の範囲】
【請求項１】
プログラマブルコントローラのＣＰＵユニットに接続される複数のユニットをラック内における複数のスロットにそれぞれ配置するためのユニット構成を作成する制御プログラム開発支援装置であって、
前記複数のユニットにおける複数のポートに対してそれぞれ一意に決められた複数のポートＩＤに対応して前記ＣＰＵユニットにおけるメモリのメモリアドレスの割り付けを行うメモリ割り付け手段と、
前記複数のポートＩＤに対応して関連付けられるメモリアドレスと前記複数のポートＩＤとの対応関係を示すアドレステーブルを作成するアドレステーブル作成手段と、
前記複数のポートＩＤに対応して関連付けられる変数と前記複数のポートＩＤとの対応関係を示す変数テーブルを作成する変数テーブル作成手段と、
前記変数に対応するポートＩＤを前記変数テーブルから取得し、取得したポートＩＤに対応するメモリアドレスを前記アドレステーブルから取得するアドレス取得手段と、
前記ポートＩＤに対して、前記ラックに対応するラックパス名、前記複数のスロットのうち何れか一つのスロットに対応するスロットパス名、前記何れか一つスロットに対する複数のチャネルのうち何れか一つのチャネルに対応するチャネルパス名及び前記何れか一つのチャネルに対する複数のビットのうち何れか一つのビットに対応するビットパス名を順に階層的に表したパス形式でパスを設定して表示画面に表示させるパス設定表示手段と
を備え、
前記アドレステーブル作成手段は、前記アドレステーブルに対して、変更前のユニットにおけるポートＩＤを、変更後のユニットにおけるポートＩＤに書き換える
ことを特徴とする制御プログラム開発支援装置。
【請求項２】
請求項１に記載の制御プログラム開発支援装置であって、
前記変数の入力情報を受け付ける変数情報受け付け手段と、前記複数のポートの階層的な物理構成に基づいて前記変数を自動的に設定する変数情報自動設定手段とを備える
ことを特徴とする制御プログラム開発支援装置。
【請求項３】
プログラマブルコントローラのＣＰＵユニットに接続される複数のユニットをラック内における複数のスロットにそれぞれ配置するためのユニット構成を作成する制御プログラム開発支援装置であって、
前記複数のユニットにおける複数のポートに対してそれぞれ一意に決められた複数のポートＩＤに対応して前記ＣＰＵユニットにおけるメモリのメモリアドレスの割り付けを行うメモリ割り付け手段と、
前記複数のポートＩＤに対応して関連付けられるメモリアドレスと前記複数のポートＩＤとの対応関係を示すアドレステーブルを作成するアドレステーブル作成手段と、
前記複数のポートＩＤに対応して関連付けられる変数と前記複数のポートＩＤとの対応関係を示す変数テーブルを作成する変数テーブル作成手段と、
前記変数に対応するポートＩＤを前記変数テーブルから取得し、取得したポートＩＤに対応するメモリアドレスを前記アドレステーブルから取得するアドレス取得手段と、
前記変数の入力情報を受け付ける変数情報受け付け手段と、
前記複数のポートの階層的な物理構成に基づいて前記変数を自動的に設定する変数情報自動設定手段と
を備え、
前記アドレステーブル作成手段は、前記アドレステーブルに対して、変更前のユニットにおけるポートＩＤを、変更後のユニットにおけるポートＩＤに書き換える
ことを特徴とする制御プログラム開発支援装置。
【請求項４】
請求項１から請求項３までの何れか一つに記載の制御プログラム開発支援装置であって、
前記複数のユニットの少なくとも一つのユニットを一つずつ、前記ラックにおける前記複数のスロットの何れか一つに位置変更可能に配置してユニット構成図を作成し、前記複数のユニットの何れか一つのユニットの配置位置が変更された場合に、前記複数のユニットのうち何れのユニットが何れのスロットに移動したかを検出するユニット構成図作成手段を備え、
前記アドレステーブル作成手段は、前記アドレステーブルに対して、前記ユニット構成図作成手段にて検出した変更前のユニットにおけるポートＩＤを、前記ユニット構成図作成手段にて検出した変更後のユニットにおけるポートＩＤに書き換える
ことを特徴とする制御プログラム開発支援装置。
【請求項５】
請求項４に記載の制御プログラム開発支援装置であって、
前記ラック及び前記複数のユニットをイラスト化したイラスト情報を前記複数のユニットに関するユニット情報と関連付けて格納するユニット情報記憶部を備え、
前記ユニット構成図作成手段は、前記ユニット情報記憶部に格納した前記ラックのイラスト情報に対応するイラストを表示画面に表示し、前記ユニット情報記憶部に格納した前記イラスト情報に対応する前記複数のユニットの少なくとも一つのイラストを一つずつ、前記ラックにおける前記複数のスロットの何れか一つのイラストに対してドラッグ・アンド・ドロップにより前記表示画面に移動表示可能に配置してユニット構成図を作成する
ことを特徴とする制御プログラム開発支援装置。
【請求項６】
プログラマブルコントローラのＣＰＵユニットに接続される複数のユニットをラック内における複数のスロットにそれぞれ配置するためのユニット構成を作成する制御プログラム開発支援装置における制御部を、
前記複数のユニットにおける複数のポートに対してそれぞれ一意に決められた複数のポートＩＤに対応して前記ＣＰＵユニットにおけるメモリのメモリアドレスの割り付けを行うメモリ割り付け手段と、
前記複数のポートＩＤに対応して関連付けられるメモリアドレスと前記複数のポートＩＤとの対応関係を示すアドレステーブルを作成するアドレステーブル作成手段と、
前記複数のポートＩＤに対応して関連付けられる変数と前記複数のポートＩＤとの対応関係を示す変数テーブルを作成する変数テーブル作成手段と、
前記変数に対応するポートＩＤを前記変数テーブルから取得し、取得したポートＩＤに対応するメモリアドレスを前記アドレステーブルから取得するアドレス取得手段と、
前記ポートＩＤに対して、前記ラックに対応するラックパス名、前記複数のスロットのうち何れか一つのスロットに対応するスロットパス名、前記何れか一つスロットに対する複数のチャネルのうち何れか一つのチャネルに対応するチャネルパス名及び前記何れか一つのチャネルに対する複数のビットのうち何れか一つのビットに対応するビットパス名を順に階層的に表したパス形式でパスを設定して表示画面に表示させるパス設定表示手段と
を含む手段として機能させるための制御プログラム開発支援用プログラムであり、
前記アドレステーブル作成手段は、前記アドレステーブルに対して、変更前のユニットにおけるポートＩＤを、変更後のユニットにおけるポートＩＤに書き換える
ことを特徴とする制御プログラム開発支援用プログラム。
【請求項７】
プログラマブルコントローラのＣＰＵユニットに接続される複数のユニットをラック内における複数のスロットにそれぞれ配置するためのユニット構成を作成する制御プログラム開発支援装置における制御部を、
前記複数のユニットにおける複数のポートに対してそれぞれ一意に決められた複数のポートＩＤに対応して前記ＣＰＵユニットにおけるメモリのメモリアドレスの割り付けを行うメモリ割り付け手段と、
前記複数のポートＩＤに対応して関連付けられるメモリアドレスと前記複数のポートＩＤとの対応関係を示すアドレステーブルを作成するアドレステーブル作成手段と、
前記複数のポートＩＤに対応して関連付けられる変数と前記複数のポートＩＤとの対応関係を示す変数テーブルを作成する変数テーブル作成手段と、
前記変数に対応するポートＩＤを前記変数テーブルから取得し、取得したポートＩＤに対応するメモリアドレスを前記アドレステーブルから取得するアドレス取得手段と、
前記変数の入力情報を受け付ける変数情報受け付け手段と、
前記複数のポートの階層的な物理構成に基づいて前記変数を自動的に設定する変数情報自動設定手段と
を含む手段として機能させるための制御プログラム開発支援用プログラムであり、
前記アドレステーブル作成手段は、前記アドレステーブルに対して、変更前のユニットにおけるポートＩＤを、変更後のユニットにおけるポートＩＤに書き換える
ことを特徴とする制御プログラム開発支援用プログラム。
【請求項８】
請求項６又は請求項７に記載の制御プログラム開発支援用プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御プログラム開発支援装置に関し、特に、プログラマブルコントローラのＣＰＵユニットに接続される複数のユニットをラック内における複数のスロットにそれぞれ配置するためのユニット構成を作成する制御プログラム開発支援装置、制御プログラム開発支援用プログラム及び記録媒体に関する。
【背景技術】
【０００２】
生産工場の製造現場などに設置されるＦＡ（ファクトリーオートメーション）システムの制御を司るＰＬＣ（プログラマブルコントローラ）は、一般的に、制御プログラム（ユーザプログラム）に基づいて演算実行するＣＰＵ（Central Processing Unit）ユニットに対して、センサやスイッチなどの入力機器を接続してそれらのオン・オフ信号を入力信号として取り込む入力ユニット、アクチュエータやリレーなどの出力機器を接続してそれらに対して出力信号を送り出す出力ユニット、上位端末装置などと接続してそれと情報をやりとりする通信ユニット、各ユニットに電源を供給する電源ユニット、などの各種ユニットを接続し、これらの各種ユニットがそれぞれ１段又は多段のラックに配置されて構成されている。
【０００３】
図１８は、ＣＰＵユニット２２と各種ユニット３１，３２，…とを接続するシステム構成の一例を示すプログラマブルコントローラ（ＰＬＣ）２００の概略構成図である。
【０００４】
ＰＬＣ２００は、電源ユニット２１及びＣＰＵユニット２２を含む「ＣＰＵラック００」を備える。また、ＰＬＣ２００には、電源ユニット２１を含む増設ラック（「ラック０１」，「ラック０２」，…）が増設されることもある。
【０００５】
「ＣＰＵラック００」には、電源ユニット２１及びＣＰＵユニット２２に加えて、複数のユニット（基本入力ユニット、基本出力ユニット、高機能入力ユニット、高機能出力ユニットやＣＰＵ高機能ユニット等の構成ユニット）が配置される。また、ラックが増設される場合、「ＣＰＵラック００」には、さらにＩ／Ｏ（入出力）コントロールユニット４０が配置され、「ラック０１」，「ラック０２」，…には、Ｉ／Ｏインターフェースユニット５０、複数のユニット（基本入力ユニット、基本出力ユニット、高機能入力ユニット、高機能出力ユニットやＣＰＵ高機能ユニット等の構成ユニット）が配置され、Ｉ／Ｏコントロールユニット４０とＩ／Ｏインターフェースユニットユニット５０とが配線ケーブルＣＢを介して互いに接続される。
【０００６】
図１８の例では、「ＣＰＵラック００」には、複数のスロット（スロット０，スロット１，…）のうち、スロット０に入力ユニット３１が、スロット１に出力ユニット３２が配置されている。また、「ラック０１」には、スロット０，スロット１，…のうち、スロット０にＣＰＵ高機能ユニット３３が、スロット１に入力ユニット３４が、スロット２に出力ユニット３５が配置されている。
【０００７】
また、入力ユニット３１，３４には、センサやスイッチ等の接点に相当する「入力ポート００」，「入力ポート０１」，「入力ポート０２」，…が設けられており、出力ユニット３２，３５には、アクチュエータやリレー等の接点に相当する「出力ポート００」，「出力ポート０１」，「出力ポート０２」，…が設けられている。
【０００８】
ＣＰＵユニット２２は、制御プログラムを記憶するプログラムメモリ２２ａと、入力ユニット３１，３４が取り込んだ入力信号と制御プログラムの演算結果である出力信号とをそれぞれ記憶するデータメモリ２２ｂと、制御プログラムに基づく演算処理等をする処理プロセッサ部２２ｃとを備えている。また、ＰＬＣ２００は、プログラミングツール装置として作用する制御プログラム開発支援装置１０を接続し、制御プログラム開発支援装置１０によって、作成、編集され、さらに、ＣＰＵユニット２２で実行可能なオブジェクトコードに変換された制御プログラムを実行する。
【０００９】
詳しくは、制御プログラムは、ＰＬＣ２００を稼働させる前に、使用者（ユーザ）が制御プログラム開発支援装置１０を操作することにより、例えば、ラダー図（ラダーチャート）で表現されるラダー言語で記述されて作成される。
【００１０】
そして、作成された制御プログラムは、制御プログラム開発支援装置１０によってラダー図のシンボルが命令語に変換され、ＣＰＵユニット２２に応じたオペランドが規定され、ＣＰＵユニット２２にダウンロードされる。
【００１１】
ＣＰＵユニット２２の処理プロセッサ部２２ｃは、プログラムメモリ２２ａから制御プログラムの命令語を順次読み出して、読み出した命令語のオペランドに従うＩ／Ｏメモリ等のメモリＭのメモリアドレスに基づいてデータメモリ２２ｂから入力信号のデータを読み出す。読み出したデータを制御プログラムに従って論理演算し、演算結果をデータメモリ２２ｂに記憶する。記憶した演算結果を出力信号として出力ユニット３２，３５へ出力する。ＣＰＵユニット２２の処理プロセッサ部２２ｃは、入力信号の読み出し処理と、制御プログラムの実行処理と、出力処理の出力処理とをサイクリックに実行する。
【００１２】
制御プログラム、例えば、ラダー言語のラダー図を用いて作成された場合、制御プログラム上で接点を表すシンボルの上に、制御プログラムを実行するＣＰＵユニット２２において使用するメモリＭにおけるメモリアドレスを併記する。接点は、例えば、ＣＰＵユニット２２がＩ／Ｏデータ（Ｉ／Ｏポートの入力データ若しくは出力データ）として扱う対象を指し、具体的にはセンサやスイッチの接点をいう。シンボルは、ラダー言語で書かれた制御プログラム上で接点を示す表現記号のことで、例えば、入力接点のシンボルは「−││−」であり、出力接点のシンボルは「−○−」である（以下の説明では、ラダー図で書かれた制御プログラムにおけるシンボル又は接点を特に区別しない場合は、「シンボル・接点」ということもある）。メモリアドレスは、例えば、ＣＰＵユニット２２がＩ／Ｏデータとして扱う場合、接点に対応する各Ｉ／Ｏポートをメモリ割り付けすることで決まるもので、ＣＰＵユニット２２が演算に使用する各Ｉ／Ｏデータが格納されるメモリＭのアドレス番号を示す。
【００１３】
従来の制御プログラム開発支援装置１０は、構成ユニット３１，３２，…におけるスロット０，スロット１，…の配置位置（スロット装着位置）によりメモリアドレスを決定する。具体的には、スロット０，スロット１に配置（装着）された入力ユニット３１，３４における「入力ポート００」，「入力ポート０１」，「入力ポート０２」，…に対応してメモリＭのメモリアドレスを割り付け、スロット１，スロット２に配置（装着）された出力ユニット３２，３５における「出力ポート００」，「出力ポート０１」，「出力ポート０２」，…に対応してメモリＭのメモリアドレスを自動的に割り付けるようになっている（特許文献１参照）。
【００１４】
以下に、構成ユニット３１，３２，…におけるスロット０，スロット１，…の配置位置によりメモリＭのメモリアドレスを自動的に割り付ける手順について説明する。
【００１５】
図１９は、制御プログラム開発支援装置１０の基本画面を示す表示画面である。図２０は、制御プログラム開発支援装置１０で作成されたラダー図の一例を示す表示画面である。図２１は、ユニット構成情報画面の一例を示す表示画面である。
【００１６】
制御プログラム開発支援装置１０では、ユーザプログラム作成機能（ソースコードエディタ）で制御プログラム（例えば、ラダー言語によるラダー図）が作成されるにあたり、図１９に示すような基本画面を表示する。基本画面では、右側のウインドウＷ１に制御プログラムを作成する画面が表示され、左側のウインドウにこれから登録するユニット構成に関するプロジェクト情報のプロジェクト選択画面Ｗ２が表示された状態となる。ユーザは、ソースコードエディタを用いて、右側のウインドウＷ１内に制御プログラムを作成する（図２０参照）。
【００１７】
次に、図１９に示す基本表示画面に対し、ユーザは、ポインティングデバイス１２ｂ（図１８参照）を操作してプロジェクト選択画面Ｗ２中にツリー表示された「ユニット構成情報」をダブルクリック等により選択すると、制御プログラム開発支援装置１０は、図２１に示すユニット構成情報画面を表示する。
【００１８】
この例では、予め、「ＣＰＵラック００」を含めて最大８個のラックを接続するシステムに対応できるようにしているため、初期画面では、「ＣＰＵラック００」，「ラック０１」，「ラック０２」，「ラック０３」，…，「ラック０７」のみが図のようにツリー状に表示され、各ラックのユニット構成が表示されずに閉じた状態で表示される。
【００１９】
なお、ユニット構成情報画面（図２１参照）を表示する前には、「ＣＰＵラック００」のＣＰＵユニット２２を登録処理する。つまり、制御プログラム開発支援装置１０は、ユーザに対して、ユニット構成を新規登録するかどうかを促す画面をダイアログウインドウ画面にて表示する。そして、制御プログラム開発支援装置１０は、ユーザ操作により登録する旨の入力を受信し、次に、ＰＬＣ２００におけるＣＰＵユニット２２の種別および型式を選択する画面（図示せず）を表示し、選択入力を促す。
【００２０】
具体的には、制御プログラム開発支援装置１０は、ユーザ操作によりＣＰＵユニット２２の種別および型式情報の入力を受信する。例えば、ユーザによって「ＣＪ２Ｈ−ＣＰＵ６８−ＥＩＰ」という型式のＣＰＵユニット２２が選択されることにより、制御プログラム開発支援装置１０は、対象のＣＰＵユニット２２の種別とＣＰＵラックのユニット構成の初期情報を登録する。こうして登録されたＣＰＵユニット２２の型式が、図２１のユニット構成情報画面のツリー表示の最上段に表示される。
【００２１】
次いで、ユニット構成情報画面にユニット（高機能Ｉ／Ｏユニット、基本Ｉ／Ｏユニット）を登録する。
【００２２】
図２２は、図２１に示すユニット構成情報画面に対してラック項目を開いた状態を示す表示画面である。
【００２３】
具体的には、設定しようとするラック項目が、初期画面等のように閉じている場合には、使用する（設定する）ラック項目のツリー表示の先頭に表示された［＋］ボタンがクリックされて、図２２に示すように適宜のラック項目を開く。図２２は、「ＣＰＵラック００」を開いた状態を示している。図２２の例では、各ラック項目には、最大で１０台分のユニット（ＣＰＵラックについては、ＣＰＵユニットを除いて１０台分のユニット）を登録することができるようになっている。初期では「ＣＰＵラック００」のＣＰＵユニット２２以外は登録されていないから、１０台分の各ユニットのツリー表示はすべて「空きスロット」と表示される。すなわち、「ＣＰＵラック００」（ベースユニット）に用意されたスロットに装着されるべきユニットは設定されていない。
【００２４】
次に、実際のユニットの登録処理を行う場合について説明する。図２３は、ユニット一覧の一例を示す画面説明図である。
【００２５】
ユニットが新規登録の場合には、ユーザはポインティングデバイス１２ｂ（図１８）を操作して、図２２に示すツリー表示中の「空きスロット」の欄を選択し、ダブルクリックすると、図２３に示すユニット選択画面が別ウインドウで表示される。
【００２６】
制御プログラム開発支援装置１０は、ユニットに関するユニット情報を格納したユニット情報記憶部（図示省略）を参照してユニット選択画面を表示する。ユニット情報記憶部に格納されるユニットに関するユニット情報は、例えば、ユニットの種類や、型式等の一覧リストや、各ユニットについての機能や、設定対象となるパラメータ、さらには、各型式で特定されるユニットについてのチャネル情報や、それぞれがメモリ容量を特定するための情報である。
【００２７】
図２３に示すユニット選択画面は、ＰＬＣ２００を構成する対象ユニットを種別ごとにツリー構造で表示する。例えば「アナログＩ／Ｏユニット」、「センサユニット」、「モーションコントローラ」、「位置制御ユニット」、「温度調節ユニット」、「基本Ｉ／Ｏユニット」、「通信ユニット」などの各種ユニットがツリー表示される。
【００２８】
制御プログラム開発支援装置１０は、ツリー表示画面の「＋」をユーザによるポインティングデバイス１２ｂのクリック操作を受信すると、ユニット情報記憶部を参照して得られたユニットの型式情報を表示する。こうして表示された画面において、ユーザは使用するユニットをユニット一覧から探し出し、選択し、登録する（図示の例では「ＣＪＷ−ＮＣ２１３」）。
【００２９】
図２４は、ユニット登録操作を実行した後のユニット構成画面を示す表示画面である。図２５は、ユニットの追加画面の一例を示す表示画面である。
【００３０】
図２４に示すように、すでにユニット登録されている場合には、設定されたユニットの型式が表示され、未登録の場合には、「空きスロット」と表示される。また、登録されたユニットの場合、ユニット情報記憶部に格納された「型式」の情報を読み出して表示する。型式の後に（）で示された具体的な名称は、ユニット情報記憶部の「型式」の欄に登録されているものを表示する。
【００３１】
さらに、図２４に示すように、選択されたユニットが、位置制御ユニットのような高機能Ｉ／Ｏユニットの場合には、図２５に示すユニットの追加画面を表示し、ユニット番号の登録を行う。
【００３２】
次に、対象ユニットの機種情報定義ファイルをテーブルから検索し、機種情報定義ファイルから占有チャネル数、入力チャネル数、出力チャネル数を取得する。高機能ユニットの場合には、対応するユニットについての機種情報定義ファイルを読み出すことで必要な情報を取得する。また、基本Ｉ／Ｏユニットの場合には、占有チャネル数と入出力タイプから必要な情報を求める。
【００３３】
例えば、高機能ユニットの場合には、ユニットのユニット番号から先頭アドレスを算出し、占有チャネル数、入力チャネル数、出力チャネル数から、高機能ユニットに割付けられる入力ポートアドレス及び出力ポートアドレスを計算する。かかる入出力アドレスの計算は、以下のようにして行う。
【００３４】
すなわち、この例では、高機能ユニットには、ＣＰＵユニット２２のメモリＭのメモリアドレス「００００」チャネルからのメモリ領域を用意し、１ユニット（占有チャネルが１）当たり１０チャネル分のメモリエリアを確保している。従って、仮にユニット番号が００番の高機能ユニットの場合、ＣＰＵユニットのメモリＭのその高機能ユニット用に使用するメモリ領域の先頭アドレスは、「００００」チャネルとなり、メモリアドレス「００００」チャネルから「０００９」チャネルまでが確保される。同様に、ユニット番号が０１番の高機能ユニットの場合、ＣＰＵユニットのメモリＭのその高機能ユニットの先頭アドレスは、「００１０」チャネルとなり、メモリアドレス「００１０」チャネルから「００１９」チャネルまでが確保される。つまり、ユニット番号をＮとすると、そのユニット番号Ｎの高機能ユニットに割り当てられるメモリエリアの先頭アドレスは、「００＋１０×Ｎ」チャネルといった簡単な式で求めることができる。さらに、占有チャネル数に基づき、そのユニットに割り当てられるメモリエリアの最終アドレスを求めることができる。
【００３５】
また、基本Ｉ／Ｏユニットの場合には、制御プログラム開発支援装置１０による入力チャネルと出力チャネルのメモリアドレスのメモリ自動割付は、以下のルールに従って行う。すなわち、各ユニットのスロットの配置位置は、ラック番号とスロット番号により一義的に決定される。そこで、ラック番号（「ＣＰＵラック００」のラック番号は「００」）が若い順にソートし、同一のラック番号の場合にはスロット番号が若い順にソートし、先頭のユニットから順にＣＰＵユニット２２のメモリＭのメモリアドレスの割り付けを行う。そして、割り付けるメモリＭは、高機能ユニットの場合と相違して連続して割り付けるようにする。
【００３６】
以上説明したメモリアドレスの割り付け動作を行うことにより、後述する図２６に示すような、ユニットの入出力テーブルＴＢを作成できる。なお、入出力テーブルＴＢは、例えば、制御プログラム開発支援装置１０におけるＲＡＭ等の揮発性メモリ（図示せず）に一時的に格納されたり、或いは、ハードディスク等の不揮発性メモリ（図示せず）に格納されたりする。
【００３７】
図２６は、制御プログラム開発支援装置１０に格納される入出力テーブルＴＢのデータ構造の一例を示す模式図である。
【００３８】
この例では、「ラック００」のスロット０に配置される入力ユニット３１についてメモリＭのメモリアドレス「００００」チャネルの「００」ビット，「０１」ビット，「０２」ビット，…を割り付けることで、「入力ポート００」，「入力ポート０１」，「入力ポート０２」，…（図１８参照）に対応させさせることができ、メモリＭのメモリアドレス「０００１」チャネルの「００」ビット，「０１」ビット，「０２」ビット，…を割り付けることで、「入力ポート１０」，「入力ポート１１」，「入力ポート１２」，…に対応させることができる。また、「ラック００」のスロット１に配置される出力ユニット３２についてメモリＭのメモリアドレス「００１０」チャネルの「００」ビット，「０１」ビット，「０２」ビット，…を割り付けることで、「出力ポート００」，「出力ポート０１」，「出力ポート０２」，…（図１８参照）に対応させさせることができ、メモリＭのメモリアドレス「００１１」チャネルの「００」ビット，「０１」ビット，「０２」ビット，…を割り付けることで、「出力ポート１０」，「出力ポート１１」，「出力ポート１２」，…に対応させることができる。
【００３９】
「ラック０１」のスロット１に配置される入力ユニット３４及び「ラック０１」のスロット２に配置される出力ユニット３５についても同様にてメモリＭのメモリアドレスの割り付けを行うことができる。なお、「ラック０２」以降の同様である。
【００４０】
そして、ユーザは、制御プログラム開発支援装置１０のソースコードエディタを用いて制御プログラムを作成するにあたって、前述の図２０に示すように、図中のシンボル・接点にメモリＭのメモリアドレス（アドレス値）を入力する。
【００４１】
図２７は、変数に対するアドレス等の各種データを示す表示画面である。図２７に示すように、ユーザは、割り付けられたメモリアドレスに対してどのユニットのどのような種類のポートが割り付けられているかが分かるように、メモリアドレスに対応付けてポートの種類を示す変数を設定することもある。なお、図２０及び図２７において、メモリアドレス（ＸＸ．ＹＹ）の「ＸＸ」はチャネルを表しており、「ＹＹ」は「ＸＸ」チャネルのビットを表している。また、図２０において、メモリアドレス（ＸＸ．ＹＹ）の前に示す「Ｉ」は、入力エリア用メモリアドレスを表しており、「Ｑ」は、出力エリア用メモリアドレスを表している。
【００４２】
具体的には、ユーザは、入力ポートの種類を示す変数「Ｉｎｐｕｔ１」について「００００」チャネルの「００」ビットのメモリアドレス（０．００）を記述（入力）すると共に、出力ポートの種類を示す変数「Ｏｕｔｐｕｔ１」について「００１０」チャネルの「００」ビットのメモリアドレス（１０．００）を記述（入力）することで（図２０参照）、変数「Ｉｎｐｕｔ１」の入力ポート（接点）がオンすると、変数「Ｏｕｔｐｕｔ１」の出力ポート（接点）がオンするラダー図を作成する。また、ユーザは、変数「Ｉｎｐｕｔ２」について「０００１」チャネルの「００」ビットのメモリアドレス（１．００）を入力し、変数「Ｏｕｔｐｕｔ２」について「００１１」チャネルの「００」ビットのメモリアドレス（１１．００）を入力することで（図２０参照）、変数「Ｉｎｐｕｔ２」の入力ポート（接点）がオンすると、変数「Ｏｕｔｐｕｔ２」の出力ポート（接点）がオンするラダー図を作成する。
【００４３】
一方、ＰＬＣ２００では、ユーザによって、制御プログラム開発支援装置１０でメモリ割り付けしたユニット構成の通りに、各種ユニットが装着されると、特定のメモリアドレスを割り当て、ＣＰＵユニット２２のメモリＭに各種ユニット用の領域が予め確保される。すなわち、ＰＬＣ２００で実際に配置した各種ユニットのメモリアドレスの割り当てと、制御プログラム開発支援装置１０で構成した各種ユニットのメモリアドレスの割り付けとが一致することになる。
【００４４】
そして、制御プログラム開発支援装置１０では、制御プログラムに記述されたメモリアドレスを用いて該制御プログラムをＣＰＵユニット２２で実行可能なオブジェクトコードに変換し、ＰＬＣ２００へダウンロードする。ＰＬＣ２００では、制御プログラム開発支援装置１０から送られてきたオブジェクトコードをＣＰＵユニット２２で実行する。
【先行技術文献】
【特許文献】
【００４５】
【特許文献１】特開２００６−２４３８４１号公報
【発明の概要】
【発明が解決しようとする課題】
【００４６】
ところで、ＰＬＣ２００では、ユニット構成は、各種ユニットが一度配置されてしまえば改変しないということはなく、必要に応じて改変（具体的にはユニットの移動、変更、追加或いは削除）されることがある。
【００４７】
このように、ユニット構成が改変されると、ＰＬＣ２００で実際に配置した各種ユニットのメモリアドレスの割り当てが変わってしまうため、ＣＰＵユニット２２のメモリＭに割り当てたメモリアドレスに対して、ＰＬＣ２００で実行される制御プログラムに記述したメモリアドレス、さらには、メモリアドレスに対応して設定した「Ｉｎｐｕｔ１」や「Ｏｕｔｐｕｔ１」等の変数が異なってしまい、その結果、制御プログラムに記述されたメモリアドレス、さらには変数と、ポートとの関連付けが意味をなさないものとなってしまうといった不都合を招く。
【００４８】
このため、ユーザは制御プログラム開発支援装置１０によって制御プログラムに記述したメモリアドレスの変更作業や、メモリアドレスに対して設定した変数の変更作業を行わなければならず、ユニット構成の改変に伴う利便性がよくない。
【００４９】
そこで、本発明は、プログラマブルコントローラのＣＰＵユニットに接続される複数のユニットをラック内における複数のスロットにそれぞれ配置するためのユニット構成を作成する制御プログラム開発支援装置であって、たとえユニット構成が改変されたとしても、制御プログラムにおけるメモリアドレスの変更等の作業を行う必要がなく、これにより、ユニット構成の改変に伴う利便性を向上させることが可能な制御プログラム開発支援装置、制御プログラム開発支援用プログラム及び記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００５０】
本発明は、前記課題を解決するために、次の第１態様及び第２態様の制御プログラム開発支援装置、第１態様及び第２態様の制御プログラム開発支援用プログラム並びに記録媒体を提供する。
【００５１】
（１）第１態様の制御プログラム開発支援装置
プログラマブルコントローラのＣＰＵユニットに接続される複数のユニットをラック内における複数のスロットにそれぞれ配置するためのユニット構成を作成する制御プログラム開発支援装置であって、前記複数のユニットにおける複数のポートに対してそれぞれ一意に決められた複数のポートＩＤに対応して前記ＣＰＵユニットにおけるメモリのメモリアドレスの割り付けを行うメモリ割り付け手段と、前記複数のポートＩＤに対応して関連付けられるメモリアドレスと前記複数のポートＩＤとの対応関係を示すアドレステーブルを作成するアドレステーブル作成手段と、前記複数のポートＩＤに対応して関連付けられる変数と前記複数のポートＩＤとの対応関係を示す変数テーブルを作成する変数テーブル作成手段と、前記変数に対応するポートＩＤを前記変数テーブルから取得し、取得したポートＩＤに対応するメモリアドレスを前記アドレステーブルから取得するアドレス取得手段と、前記ポートＩＤに対して、前記ラックに対応するラックパス名、前記複数のスロットのうち何れか一つのスロットに対応するスロットパス名、前記何れか一つスロットに対する複数のチャネルのうち何れか一つのチャネルに対応するチャネルパス名及び前記何れか一つのチャネルに対する複数のビットのうち何れか一つのビットに対応するビットパス名を順に階層的に表したパス形式でパスを設定して表示画面に表示させるパス設定表示手段とを備え、前記アドレステーブル作成手段は、前記アドレステーブルに対して、変更前のユニットにおけるポートＩＤを、変更後のユニットにおけるポートＩＤに書き換えることを特徴とする制御プログラム開発支援装置。
（２）第２態様の制御プログラム開発支援装置
プログラマブルコントローラのＣＰＵユニットに接続される複数のユニットをラック内における複数のスロットにそれぞれ配置するためのユニット構成を作成する制御プログラム開発支援装置であって、前記複数のユニットにおける複数のポートに対してそれぞれ一意に決められた複数のポートＩＤに対応して前記ＣＰＵユニットにおけるメモリのメモリアドレスの割り付けを行うメモリ割り付け手段と、前記複数のポートＩＤに対応して関連付けられるメモリアドレスと前記複数のポートＩＤとの対応関係を示すアドレステーブルを作成するアドレステーブル作成手段と、前記複数のポートＩＤに対応して関連付けられる変数と前記複数のポートＩＤとの対応関係を示す変数テーブルを作成する変数テーブル作成手段と、前記変数に対応するポートＩＤを前記変数テーブルから取得し、取得したポートＩＤに対応するメモリアドレスを前記アドレステーブルから取得するアドレス取得手段と、前記変数の入力情報を受け付ける変数情報受け付け手段と、前記複数のポートの階層的な物理構成に基づいて前記変数を自動的に設定する変数情報自動設定手段とを備え、前記アドレステーブル作成手段は、前記アドレステーブルに対して、変更前のユニットにおけるポートＩＤを、変更後のユニットにおけるポートＩＤに書き換えることを特徴とする制御プログラム開発支援装置。
【００５２】
（３）第１態様の制御プログラム開発支援用プログラム
プログラマブルコントローラのＣＰＵユニットに接続される複数のユニットをラック内における複数のスロットにそれぞれ配置するためのユニット構成を作成する制御プログラム開発支援装置における制御部を、前記複数のユニットにおける複数のポートに対してそれぞれ一意に決められた複数のポートＩＤに対応して前記ＣＰＵユニットにおけるメモリのメモリアドレスの割り付けを行うメモリ割り付け手段と、前記複数のポートＩＤに対応して関連付けられるメモリアドレスと前記複数のポートＩＤとの対応関係を示すアドレステーブルを作成するアドレステーブル作成手段と、前記複数のポートＩＤに対応して関連付けられる変数と前記複数のポートＩＤとの対応関係を示す変数テーブルを作成する変数テーブル作成手段と、前記変数に対応するポートＩＤを前記変数テーブルから取得し、取得したポートＩＤに対応するメモリアドレスを前記アドレステーブルから取得するアドレス取得手段と、前記ポートＩＤに対して、前記ラックに対応するラックパス名、前記複数のスロットのうち何れか一つのスロットに対応するスロットパス名、前記何れか一つスロットに対する複数のチャネルのうち何れか一つのチャネルに対応するチャネルパス名及び前記何れか一つのチャネルに対する複数のビットのうち何れか一つのビットに対応するビットパス名を順に階層的に表したパス形式でパスを設定して表示画面に表示させるパス設定表示手段とを含む手段として機能させるための制御プログラム開発支援用プログラムであり、前記アドレステーブル作成手段は、前記アドレステーブルに対して、変更前のユニットにおけるポートＩＤを、変更後のユニットにおけるポートＩＤに書き換えることを特徴とする制御プログラム開発支援用プログラム。
（４）第２態様の制御プログラム開発支援用プログラム
プログラマブルコントローラのＣＰＵユニットに接続される複数のユニットをラック内における複数のスロットにそれぞれ配置するためのユニット構成を作成する制御プログラム開発支援装置における制御部を、前記複数のユニットにおける複数のポートに対してそれぞれ一意に決められた複数のポートＩＤに対応して前記ＣＰＵユニットにおけるメモリのメモリアドレスの割り付けを行うメモリ割り付け手段と、前記複数のポートＩＤに対応して関連付けられるメモリアドレスと前記複数のポートＩＤとの対応関係を示すアドレステーブルを作成するアドレステーブル作成手段と、前記複数のポートＩＤに対応して関連付けられる変数と前記複数のポートＩＤとの対応関係を示す変数テーブルを作成する変数テーブル作成手段と、前記変数に対応するポートＩＤを前記変数テーブルから取得し、取得したポートＩＤに対応するメモリアドレスを前記アドレステーブルから取得するアドレス取得手段と、前記変数の入力情報を受け付ける変数情報受け付け手段と、前記複数のポートの階層的な物理構成に基づいて前記変数を自動的に設定する変数情報自動設定手段とを含む手段として機能させるための制御プログラム開発支援用プログラムであり、前記アドレステーブル作成手段は、前記アドレステーブルに対して、変更前のユニットにおけるポートＩＤを、変更後のユニットにおけるポートＩＤに書き換えることを特徴とする制御プログラム開発支援用プログラム。
【００５３】
（５）記録媒体
前記本発明に係る第１態様の制御プログラム開発支援用プログラム又は前記本発明に係る第２態様の制御プログラム開発支援用プログラムを記録したコンピュータ読み取り可能な記録媒体。
【００５４】
なお、言うまでもないが、本発明にいう前記「ＩＤ」は「identification」の略であり、識別コードを意味する。また、前記ラックは、単一のものであってもよいし、複数のラックで構成されていてもよい。
【００５５】
本発明によれば、前記アドレステーブルに対して、変更前のユニットにおけるポートＩＤを、変更後のユニットにおけるポートＩＤに書き換え、前記変数に対応するポートＩＤを前記変数テーブルから取得し、取得したポートＩＤに対応するメモリアドレスを前記アドレステーブルから取得する。こうすることで、たとえユニット構成が改変されたとしても、制御プログラムにおけるメモリアドレスの変更等の作業を行う必要がなく、これにより、ユニット構成の改変に伴う利便性を向上させることができる。
しかも、第１態様では、前記ポートＩＤに対して、前記ラックパス名、前記スロットパス名、前記チャネルパス名及び前記ビットパス名を順に階層的に表した前記パス形式でパスを設定して表示画面に表示させることで、ユーザは、前記パスによって前記複数のユニットの配置位置を容易に認識することが可能となる。
また、第２態様では、前記変数情報受け付け手段にて前記変数の入力情報を入力するか、或いは、前記変数情報自動設定手段にて前記変数を自動的に設定するかを、ユーザが必要に応じて使い分けすることが可能となる。
【００５８】
本発明に係る第１態様において、ユーザが前記変数の情報を入力するために、前記変数の入力情報を受け付ける変数情報受け付け手段を備えていてもよいが、この場合、ユーザが前記変数を自由に作成できるという利点がある反面、前記変数に対応する名称を作成するのに手間がかかるという不都合もある。
【００５９】
そこで、本発明に係る第１態様において、前記変数の入力情報を受け付ける変数情報受け付け手段と、前記複数のポートの階層的な物理構成に基づいて前記変数を自動的に設定する変数情報自動設定手段とを備える態様を例示できる。
【００６０】
この特定事項では、前記変数情報受け付け手段にて前記変数の入力情報を入力するか、或いは、前記変数情報自動設定手段にて前記変数を自動的に設定するかを、ユーザが必要に応じて使い分けすることが可能となる。
【００６１】
本発明において、前記複数のユニットの少なくとも一つのユニットを一つずつ、前記ラックにおける前記複数のスロットの何れか一つに位置変更可能に配置してユニット構成図を作成し、前記複数のユニットの何れか一つのユニットの配置位置が変更された場合に、前記複数のユニットのうち何れのユニットが何れのスロットに移動したかを検出するユニット構成図作成手段を備え、前記アドレステーブル作成手段は、前記アドレステーブルに対して、前記ユニット構成図作成手段にて検出した変更前のユニットにおけるポートＩＤを、前記ユニット構成図作成手段にて検出した変更後のユニットにおけるポートＩＤに書き換える態様を例示できる。
【００６２】
この特定事項では、前記ユニット構成図を作成するときに、前記複数のユニットのうち何れのユニットが何れのスロットに移動したかを検出することができ、これにより、前記複数のユニットの何れか一つのユニットの配置位置の変更を効率的に検出することが可能となる。
【００６３】
本発明において、前記ラック及び前記複数のユニットをイラスト化したイラスト情報を前記複数のユニットに関するユニット情報と関連付けて格納するユニット情報記憶部を備え、前記ユニット構成図作成手段は、前記ユニット情報記憶部に格納した前記ラックのイラスト情報に対応するイラストを表示画面に表示し、前記ユニット情報記憶部に格納した前記イラスト情報に対応する前記複数のユニットの少なくとも一つのイラストを一つずつ、前記ラックにおける前記複数のスロットの何れか一つのイラストに対してドラッグ・アンド・ドロップにより前記表示画面に移動表示可能に配置してユニット構成図を作成する態様を例示できる。なお、ここでいう「イラスト（イラストレーションの略）」は、図、絵、写真等のイラスト画像を含む概念である。
【００６４】
この特定事項では、前記ユニット情報記憶部に格納した前記イラスト情報に対応する前記複数のユニットの少なくとも一つのイラストを一つずつ、前記ラックにおける前記複数のスロットの何れか一つのイラストに対してドラッグ・アンド・ドロップにより前記表示画面に移動表示可能に配置してユニット構成図を作成するので、前記ユニット構成図におけるユニット構成を、イラストによって視覚的に改変することができ、ユニット構成の改変作業の容易化を実現することが可能となる。
【発明の効果】
【００６５】
以上説明したように、本発明によると、前記アドレステーブルに対して、変更前のユニットにおけるポートＩＤを、変更後のユニットにおけるポートＩＤに書き換え、前記変数に対応するポートＩＤを前記変数テーブルから取得し、取得したポートＩＤに対応するメモリアドレスを前記アドレステーブルから取得することで、たとえユニット構成が改変されたとしても、制御プログラムにおけるメモリアドレスの変更等の作業を行う必要がなく、これにより、ユニット構成の改変に伴う利便性を向上させることが可能となる。
【図面の簡単な説明】
【００６６】
【図１】制御プログラム開発支援装置及び制御プログラム開発支援装置が設定対象としているＰＬＣの概略的に示しシステム構成図である。
【図２】図１に示す制御プログラム開発支援装置の内部構造を概略的に示すシステム構成図である。
【図３】図２に示す制御プログラム開発支援装置における制御部を概略的に示すシステム構成図である。
【図４】複数のユニットにおける複数のポートに対応してＣＰＵユニットにおけるメモリのアドレスの割り付け動作を行う割り付け処理の一例を示す前半部分のフローチャートである。
【図５】複数のユニットにおける複数のポートに対応してＣＰＵユニットにおけるメモリのアドレスの割り付け動作を行う割り付け処理の一例を示す後半部分のフローチャートである。
【図６】ユニット情報記憶部におけるユニット情報の一部のデータ構造の一例を示す概略構成図である。
【図７】「ＣＰＵラック００」及び「ＣＰＵラック００」に配置されるユニットをイラストで表したユニット構成図を表示する表示画面である。
【図８】ユニット一覧の一例を示す画面説明図である。
【図９】図７に示すユニット構成図からユニット構成を改変した後の状態を示す表示画面である。
【図１０】図７に示すユニット構成図で構成されたユニットにおけるポートＩＤに対してアドレスを格納するアドレステーブルのデータ構造の一例を示す模式図である。
【図１１】図７に示すユニット構成図を階層的に表示した表示画面である。
【図１２】ポートＩＤを階層的に表したパス形式で表示した表示画面である。
【図１３】図１０に示すアドレステーブルにおいてパス名を追加したデータ構造の一例を示す模式図である。
【図１４】ポートの階層的な物理構成の名称から抽出して自動的に設定した変数を表示した表示画面である。
【図１５】パスが設定されたポートＩＤに対して変数を格納する変数テーブルのデータ構造の一例を示す模式図である。
【図１６】図１３に示すアドレステーブルにおいてユニット構成が改変された後のデータ構造の一例を示す模式図である。
【図１７】図１２に示す表示画面においてユニット構成が改変された後に表示した表示画面である。
【図１８】ＣＰＵユニットと各種ユニットとを接続するシステム構成の一例を示すプログラマブルコントローラ（ＰＬＣ）の概略構成図である。
【図１９】制御プログラム開発支援装置の基本画面を示す表示画面である。
【図２０】制御プログラム開発支援装置で作成されたラダー図の一例を示す表示画面である。
【図２１】ユニット構成情報画面の一例を示す表示画面である。
【図２２】図２１に示すユニット構成情報画面に対してラック項目を開いた状態を示す表示画面である。
【図２３】ユニット一覧の一例を示す画面説明図である。
【図２４】ユニット登録操作を実行した後のユニット構成画面を示す表示画面である。
【図２５】ユニットの追加画面の一例を示す表示画面である。
【図２６】制御プログラム開発支援装置に格納される入出力テーブルのデータ構造の一例を示す模式図である。
【図２７】変数に対するメモリアドレス等の各種データを示す表示画面である。
【発明を実施するための形態】
【００６７】
以下、本発明の実施の形態について添付図面を参照しつつ説明する。なお、以下の実施の形態は、本発明を具体化した例であって、本発明の技術的範囲を限定する性格のものではない。
【００６８】
図１は、制御プログラム開発支援装置１００及び制御プログラム開発支援装置１００が設定対象としているＰＬＣ２００の概略的に示しシステム構成図である。
【００６９】
プログラマブルコントローラ（以下、ＰＬＣという）２００は、図１８に示すＰＬＣ２０と同様の構成とされている。図１において、図１８に示す部材と同様の部材には同一符号を付している。
【００７０】
すなわち、ＰＬＣ２００は、「ＣＰＵラック００」と、増設ラック（「ラック０１」，「ラック０２」，…）とから構成されている。
【００７１】
「ＣＰＵラック００」及び増設ラック（「ラック０１」，「ラック０２」，…）は、それぞれ電源ユニット２１を備え、一つのラック内に配置されたユニットは、そのラックに接続された電源ユニット２１からの電力供給を受ける。
【００７２】
「ＣＰＵラック００」は、ＣＰＵユニット２２を備えている。増設ラック（「ラック０１」，「ラック０２」，…）は、ＣＰＵユニットを備えておらず、「ＣＰＵラック００」におけるＣＰＵユニット２２により管理（ＩＯリフレッシュ等）される。
【００７３】
「ＣＰＵラック００」には、Ｉ／Ｏコントロールユニット４０が配置され、増設ラック（「ラック０１」，「ラック０２」，…）には、Ｉ／Ｏインターフェースユニット５０が配置されている。「ＣＰＵラック００」及び増設ラック（「ラック０１」）は、配線ケーブルＣＢを介してＩ／Ｏコントロールユニット４０及びＩ／Ｏインターフェースユニット５０で互いに接続されている。さらに、増設ラック（「ラック０１」，「ラック０２」，…）は、配線ケーブルＣＢを介してＩ／Ｏインターフェースユニット５０で互いに接続されている。これにより、「ＣＰＵラック００」及び増設ラック（「ラック０１」，「ラック０２」，…）が相互に通信可能に連携することができ、ＰＬＣ２００が所望の制御を行うために必要な各種のユニット（Ｉ／Ｏユニット，マスタユニット，通信ユニット，高機能ユニット等の構成ユニット）が互いに連結される。この例では３つのラックを連結してＰＬＣ２００が構築されているが、勿論、ＰＬＣ２００を構築するラックの個数は任意であり、１つのラック（「ＣＰＵラック００」のみ）の場合もあり得る。すなわち、増設ラックは一つであってもよい。また、増設ラックを設けず、「ＣＰＵラック００」だけであってもよい。また、「ＣＰＵラック００」や増設ラック（「ラック０１」，「ラック０２」，…）に実装される電源ユニット２１は、同一タイプのものでもよいし、異なるタイプのものでもよい。
【００７４】
図１の例では、「ＣＰＵラック００」には、複数のスロット（スロット０，スロット１，…）のうち、スロット０に入力ユニット３１が、スロット１に出力ユニット３２が配置されている。また、「ラック０１」には、スロット０，スロット１，…のうち、スロット０にＣＰＵ高機能ユニット３３が、スロット１に入力ユニット３４が、スロット２に出力ユニット３５が配置されている。
【００７５】
また、入力ユニット３１，３４には、センサやスイッチ等の接点（例えば８点、１６点、３２点、６４点等）に相当する「入力ポート００」，「入力ポート０１」，「入力ポート０２」，…が設けられており、出力ユニット３２，３５には、アクチュエータやリレー等の接点（例えば８点、１６点、３２点、６４点等）に相当する「出力ポート００」，「出力ポート０１」，「出力ポート０２」，…が設けられている。
【００７６】
なお、ＣＰＵユニット２２については、図１８に示すものと同様であり、ここでは詳しい説明を省略する。
【００７７】
図２は、図１に示す制御プログラム開発支援装置１００の内部構造を概略的に示すシステム構成図である。
【００７８】
制御プログラム開発支援装置１００は、各種ユニットを組み合わせて任意の構成からなるＰＬＣ２００を構築したり、制御対象に合致するＰＬＣ構成を設計するに当たり、適切なユニット構成を得るようにしたりするためのＰＬＣシステム構築支援機能を備えている。
【００７９】
ＰＬＣシステム構築支援機能を持つ制御プログラム開発支援装置１００は、ＰＬＣシステム構築支援装置と呼ばれたり、コンフィグレータと呼ばれたりすることもある。また、制御プログラム開発支援装置１００は、ＰＬＣ２００に実行処理させる制御プログラム（ユーザプログラム）を作成する機能を備えている。制御プログラムの例にはラダー図で表記するラダープログラムがある。制御プログラムを作成する機能を持つ装置は、ラダーエディタと呼ばれたり、制御プログラム作成装置、制御プログラム編集装置、プログラミング装置などと呼ばれたりしている。
【００８０】
制御プログラム開発支援装置１００は、パーソナルコンピュータにＰＬＣシステム構築支援機能又はユーザプログラム作成機能を実現させるための所定のアプリケーションプログラムをインストールすることにより構成される。勿論、制御プログラム開発支援装置１００が通常のＩ／Ｏユニット、その他のユニットに対する各種パラメータの設定を行ったり、その設定した設定情報をネットワーク等を介して各機器（ユニット）にダウンロードしたりする機能も有してもよい。
【００８１】
制御プログラム開発支援装置１００は、図２に示すように、外部装置（マンマシンインタフェース）として、キーボード１２ａ，ポインティングデバイス１２ｂ等を含む入力部１２と、表示画面１３ａ（図１参照）を有するディスプレイ等の表示部１３とを備えている。
【００８２】
また、制御プログラム開発支援装置１００は、内部装置として、制御プログラム開発支援用プログラムを実行したり、各種の演算処理を実行し、ユニット構成情報を作成したりする各種の処理を実行する制御部（具体的にはＣＰＵ）１４と、制御部１４が演算処理等の各種の処理を実行する際にワークメモリ等として適宜使用する実行処理記憶部１５と、ユニットに関する情報を格納したユニット情報記憶部１６と、制御部１４にて作成した、ＰＬＣ２００を構成する各種のユニットに設定する情報をＰＬＣ２００にダウンロードする際に使用するＣＯＭポート１７と、読み取り部１８とを備えている。
【００８３】
実行処理記憶部１５は、ＲＡＭ等の揮発性メモリ１５ａ及びハードディスク装置やフラッシュメモリ等の不揮発メモリ１５ｂを含んでいる。不揮発メモリ１５ｂには、後述する制御プログラム開発支援用プログラムＢＰが記録されたＣＤ（Compact Disc）−ＲＯＭ等の記録媒体Ｒを読み出す読み取り部１８によって読み出された制御プログラム開発支援用プログラムＢＰを含むソフトウェアや、後述するイラスト情報のファイルデータが予め格納（インストール）されている。なお、不揮発メモリ１５ｂは、後述するアドレステーブル及び変数テーブル等の処理データも記憶されるようになっている。また、記録媒体Ｒは、ＵＳＢ（Universal Serial Bus）メモリやＳＤ（Secure Digital）メモリカードであってもよい。
【００８４】
制御部１４は、表示部１３に対し、各種の入力画面を表示し、ユーザが入力部１２を操作して必要な情報の入力を受けて、ユニット構成情報を決定する。
【００８５】
ユニット情報記憶部１６に格納されるユニットに関するユニット情報は、例えば、ユニットの種類や、型式等の一覧リストや、メーカ名、電圧、電流等の仕様、各ユニットについての機能や、設定対象となるパラメータ、さらには、各型式で特定されるユニットについてのチャネル情報や、それぞれがメモリ容量を特定するための情報である。なお、ユニット情報記憶部１６には、後述するように、イラスト情報も格納されている。
【００８６】
また、制御部１４は、入力ユニット３１，３４や出力ユニット３２，３５等の基本Ｉ／Ｏユニットが使用するＩ／Ｏデータに対してＣＰＵユニット２２におけるメモリＭのメモリアドレス（以下単にアドレスという）の割り付けを行う。
【００８７】
［制御プログラム開発支援装置のソフトウェア構成］
図３は、図２に示す制御プログラム開発支援装置１００における制御部１４を概略的に示すシステム構成図である。
【００８８】
制御部１４は、ユニット構成図作成手段Ｐ１と、メモリ割り付け手段Ｐ２と、アドレステーブル登録手段Ｐ３と、変数情報受け付け手段Ｐ４と、パス設定表示手段Ｐ５と、変数情報自動設定手段Ｐ６と、変数テーブル作成手段Ｐ７と、ポートＩＤ書き換え手段Ｐ８と、アドレス取得手段Ｐ９と、変換手段Ｐ１０とを含む手段として機能する。なお、アドレステーブル登録手段Ｐ３とポートＩＤ書き換え手段Ｐ８とで本発明のアドレステーブル作成手段を構成している。
【００８９】
すなわち、制御プログラム開発支援用プログラムＢＰは、ユニット構成図作成手段Ｐ１に対応するユニット構成図作成ステップと、メモリ割り付け手段Ｐ２に対応するメモリ割り付けステップと、アドレステーブル登録手段Ｐ３に対応するアドレステーブル登録ステップと、変数情報受け付け手段Ｐ４に対応する変数情報受け付けステップと、パス設定表示手段Ｐ５に対応するパス設定表示ステップと、変数情報自動設定手段Ｐ６に対応する変数情報自動設定ステップと、変数テーブル作成手段Ｐ７に対応する変数テーブル作成ステップと、ポートＩＤ書き換え手段Ｐ８に対応するポートＩＤ書き換えステップと、アドレス取得手段Ｐ９に対応するアドレス取得ステップと、変換手段Ｐ１０に対応する変換ステップとを含むステップを制御部１４に実行させる。
【００９０】
図４及び図５は、それぞれ、複数のユニットにおける複数のポートに対応してＣＰＵユニット２２におけるメモリＭのアドレスの割り付け動作を行う割り付け処理の一例を示す前半部分及び後半部分のフローチャートである。
【００９１】
なお、以下の説明では、複数のポート（パラメータ）は、図１に示すように、「入力ポート００」，「入力ポート０１」，「入力ポート０２」，…「出力ポート００」，「出力ポート０１」，「出力ポート０２」，…とし、スロット０，スロット１，…に配置されているユニットをそれぞれユニット０，ユニット１，…とし、また、「入力ポート００」，「入力ポート０１」，「入力ポート０２」，…及び「出力ポート０１」，「出力ポート０２」，…を総称して単にポートという。
【００９２】
次に、図４及び図５に示す割り付け処理例のフローチャートについて、図６から図１７を参照しながら以下に説明する。
【００９３】
［ユニット構成図作成ステップＳ１］
図４に示すユニット構成図作成ステップＳ１は、ユニット０，ユニット１，…の少なくとも一つのユニットを一つずつ、ラックにおける複数のスロットの何れか一つに位置変更可能に配置してユニット構成図を作成し、ユニット０，ユニット１，…の何れか一つのユニットの配置位置が変更されてユニット構成が改変された場合には、ユニット０，ユニット１，…のうち何れのユニットが何れのスロットに移動したかを検出するようになっている。
【００９４】
詳しくは、ユニット構成図作成ステップＳ１では、制御部１４は、表示部１３の表示画面１３ａ（図１参照）に「ＣＰＵラック００」のイラストを表示し、さらにユニットのイラストを移動可能に表示してユニット構成図を作成する。
【００９５】
図６は、ユニット情報記憶部１６におけるユニット情報の一部のデータ構造の一例を示す概略構成図である。図７は、「ＣＰＵラック００」及び「ＣＰＵラック００」に配置されるユニットをイラストで表したユニット構成図を表示する表示画面である。
【００９６】
ユニット情報記憶部１６（図２参照）には、図６に示すように、複数のユニット０，ユニット１，…（図７参照）をイラスト化したイラスト情報ＩＬが複数のユニット０，ユニット１，…に関する型式ＴＹ及び名称ＴＮと関連付けて予め格納されている。本実施の形態において、イラスト情報ＩＬは、ファイルデータの名称とされており、制御部１４は、ファイルデータの名称から実行処理記憶部１５（図２参照）の不揮発メモリ１５ｂに記憶されているファイルデータを読み出してユニット０，ユニット１，…のうち、選択されたユニットをイラスト化するようになっている。なお、図６には示していないが、ユニット情報記憶部１６には、「ＣＰＵラック００」及び「ラック０１」，「ラック０２」，…のイラスト情報ＩＬも格納されている。
【００９７】
詳しくは、ユニット構成図作成ステップＳ１では、制御部１４は、ユニット情報記憶部１６から「ＣＰＵラック００」に対応するイラスト情報ＩＬを読み出し、読み出したイラスト情報ＩＬにより「ＣＰＵラック００」のイラストを表示部１３の表示画面１３ａに表示する。
【００９８】
図８は、ユニット一覧の一例を示す画面説明図である。ユニット構成を作成するにあたり、ユーザは、ポインティングデバイス１２ｂ（図１参照）を操作して「ＣＰＵラック００」のイラストの何れかのスロット（例えばスロット３）をダブルクリック等により選択すると、図８に示すユニット選択画面が別ウインドウで表示される。すなわち、制御部１４は、「ＣＰＵラック００」のスロット位置（例えばスロット３）でユーザによるポインティングデバイス１２ｂのクリック操作を受信すると、ユニット情報記憶部１６を参照して得られたユニットの型式情報をユニット選択画面（図８参照）に表示する。ユニット選択画面は、図２３に示すユニット選択画面と同様の画面であり、ここでは詳しい説明を省略する。
【００９９】
ユーザは、ポインティングデバイス１２ｂを操作してツリー表示画面の「＋」をダブルクリック等により選択すると、ツリー表示が展開される。すなわち、制御部１４は、ツリー表示画面の「＋」をユーザによるポインティングデバイス１２ｂのクリック操作を受信すると、ユニット情報記憶部１６を参照して得られたユニット情報を図８のユニット選択画面に表示する。こうして表示されたユニット選択画面において、ユーザは使用するユニットをユニット一覧から探し出し、ポインティングデバイス１２ｂを操作して選択する。すなわち、制御部１４は、ユニット選択画面の選択されたユニット（例えばＣＪ１Ｗ−ＯＤ２０２）の位置でユーザによるポインティングデバイス１２ｂのクリック操作を受信すると、ユニット情報記憶部１６を参照して得られたユニットのイラスト情報ＩＬをイラスト化して、図７に示すユニット構成図における「ＣＰＵラック００」のスロット位置（例えばスロット３）に表示する。このとき、型式、名称、仕様等のユニット情報が図７におけるユニット構成図の右側のユニット情報画面Ｗ３に表示される。
【０１００】
このようにして、ユニット０，ユニット１，…のうち何れか一つのイラストを「ＣＰＵラック００」におけるスロット０，１，２，…の何れか一つに対して表示部１３の表示画面１３ａに配置してユニット構成図を作成する。
【０１０１】
また、ユニット構成図作成ステップＳ１では、制御部１４は、次のようなユニットの追加、移動、削除動作を行ってユニット構成を改変することができる。
【０１０２】
図９は、図７に示すユニット構成図からユニット構成を改変した後の状態を示す表示画面である。
【０１０３】
図７に示すユニット構成図のユニット構成を改変するにあたり、ユーザは、ポインティングデバイス１２ｂを操作してユニットのイラストを選択し、選択したユニット（例えばスロット０のユニット０）のイラストをドラッグ・アンド・ドロップにより他のスロット（例えばスロット１）に移動させる。すなわち、制御部１４は、ユニット選択画面の選択されたユニット（例えばスロット０のユニット０）の位置でユーザによるポインティングデバイス１２ｂのドラッグを受信すると、選択されたユニットをカーソルで移動させ、他のスロット（例えばスロット１）の位置でユーザによるポインティングデバイス１２ｂのドロップを受信すると、選択されたユニット（例えばスロット０にあったユニット０）を他のスロット（例えばスロット１）に移動させる。このとき、制御部１４は、他のスロット（例えばスロット１）にあったユニット（例えばユニット１）については、選択されたユニットのスロット（例えばスロット０）に移動させる。また、制御部１４は、移動対象のユニットの位置情報も表示させる（図９におけるユニット情報画面Ｗ３及びユニット構成図の右下の位置情報画面Ｗ４参照）。なお、位置情報を表示させる場合には、位置情報画面Ｗ４の上に表示されるユニット情報画面Ｗ３のユニット情報の内容は、簡略化されて表示されるようになっている。また、制御部１４は、選択されたユニット（例えばユニット０）を１又は複数のスロット（例えばスロット１）を隔てて移動させる場合には、他のスロット（例えばスロット２）にあったユニット（例えばユニット２）を、選択されたユニット（例えばユニット０）と入れ替えるようにしてもよいし、選択されたユニットのスロット（例えばスロット０）に、その隣（選択されたユニット０を移動させた側、図７では右側）のスロット（例えばスロット１）のユニット（例えばユニット１）を移動させ、移動させたユニットのスロット（例えばユニット１のスロット１）に、その隣（図７では右側）のスロット（例えばスロット２）のユニット（例えばユニット２）を移動させてもよい。
【０１０４】
このようにして、制御部１４は、ユニット０，ユニット１，…の少なくとも一つのイラストを一つずつ（例えばユニット０）を、「ＣＰＵラック００」におけるスロット０，１，２，…の何れか一つのイラストに対してドラッグ・アンド・ドロップにより表示部１３の表示画面１３ａに移動表示可能に配置してユニット構成図を作成する（図９参照）。
【０１０５】
また、ユーザは、ポインティングデバイス１２ｂを操作してユニットのイラストを選択し、選択したユニット（例えばスロット３のユニット）のイラストを削除操作により削除（消去）する。すなわち、制御部１４は、ユニット選択画面の選択されたユニット（例えばスロット３のユニット）の位置でユーザによるポインティングデバイス１２ｂのクリック操作を受信すると、選択されたユニットを選択表示（例えば反転表示）し、ユーザのキーボード１２ａ（図１参照）の所定キー（例えば削除［ｄｅｌｅｔｅ］キー）の押下操作を受け付けると、選択されたユニット（例えばスロット３のユニット）を配置されていたスリット（例えばスリット３）から削除（消去）する。
【０１０６】
なお、実行処理記憶部１５の不揮発メモリ１５ｂには、画面上の位置情報に対するスロット位置（スロット番号）が対応付けられて記憶されている。これにより、制御部１４は、ユニット構成が改変されたこと、さらには、ユニット０，ユニット１，…のうち何れのイラストが何れのスロットに移動したかを検出（認識）することができる。
【０１０７】
［メモリ割り付けステップＳ２］
次に、図４に示すメモリ割り付けステップＳ２では、制御部１４は、ユニット０，ユニット１，…のＣＰＵユニット２２におけるメモリＭ（図１参照）のアドレスの割り付けを行う。このアドレスの割り付け処理は、前述の背景技術の欄で説明した従来の手法と同様であり（図２６の説明箇所参照）、ここでは詳しい説明を省略する。
【０１０８】
そして、制御部１４は、複数のポートに対してそれぞれ複数のポートＩＤを識別可能に設定するようになっている。これにより、複数のポートに対して複数のポートＩＤがそれぞれ一意に決定される。
【０１０９】
［アドレステーブル登録ステップＳ３］
図４に示す判断ステップＳ３１では、制御部１４は、後述する図１０に示すアドレステーブルＴＢ１が新規登録か否か、すなわちアドレステーブルＴＢ１にデータが登録されているか否かを判断する。アドレステーブルＴＢ１にデータが登録されていない場合には（ステップＳ３１：Ｙｅｓ）、アドレステーブル登録ステップＳ３に移行する一方、アドレステーブルＴＢ１にデータが登録されている場合には（ステップＳ３１：Ｎｏ）、変数情報受け付けステップＳ４に移行する。
【０１１０】
アドレステーブル登録ステップＳ３では、制御部１４は、後述する図１０に示すように、ユニット０，ユニット１，…におけるポートＰｔに対してそれぞれ一意に決められた複数のポートＩＤに対応して関連付けられるアドレスと複数のポートＩＤとの対応関係を示すアドレステーブルＴＢ１を登録する。本実施の形態では、アドレステーブルＴＢ１は、実行処理記憶部１５の不揮発メモリ１５ｂに記憶されるようになっている。
【０１１１】
図１０は、図７に示すユニット構成図で構成されたユニットにおけるポートＩＤに対してアドレスを格納するアドレステーブルＴＢ１のデータ構造の一例を示す模式図である。
【０１１２】
この例では、「ラック００」のスロット０に配置される入力ユニット０（型式ＣＪ１Ｗ−ＩＤ２０１）について「入力ポート００」，「入力ポート０１」，「入力ポート０２」，…のポートＩＤ「００００」，「０００１」，「０００２」，…に対応してメモリＭのアドレス「００００」チャネルの「００」ビット，「０１」ビット，「０２」ビット，…を割り付け、「入力ポート１０」，「入力ポート１１」，「入力ポート１２」，…のポートＩＤ「０１００」，「０１０１」，「０１０２」，…に対応してメモリＭのアドレス「０００１」チャネルの「００」ビット，「０１」ビット，「０２」ビット，…を割り付ける。また、「ラック００」のスロット１に配置される出力ユニット１（型式ＣＪ１Ｗ−ＯＣ２０１）について「出力ポート００」，「出力ポート０１」，「出力ポート０２」，…のポートＩＤ「１０００」，「１００１」，「１００２」，…に対応してメモリＭのアドレス「００１０」チャネルの「００」ビット，「０１」ビット，「０２」ビット，…を割り付け、「出力ポート１０」，「出力ポート１１」，「出力ポート１２」，…に対応してメモリＭのアドレス「００１１」チャネルの「００」ビット，「０１」ビット，「０２」ビット，…を割り付ける。なお、ポートＩＤの値は、ユニット構成が改変されてもユニットに対して変化しない値である。
【０１１３】
［変数情報受け付けステップＳ４］
次に、図４に示す変数情報受け付けステップＳ４では、制御部１４は、ポートＩＤに対応して関連付けられる変数Ｖａｒの入力情報をキーボード２１ａ（図１参照）による入力操作によって受け付ける。
【０１１４】
具体的には、制御部１４は、後述する図１１に示すように、図７に示すユニット構成図で構成されたユニットを階層的に表示する。
【０１１５】
図１１は、図７に示すユニット構成図を階層的に表示した表示画面である。なお、図１１及び後述する図１２、図１４、図１７において、「Ｒ」は読み出しを意味し，「Ｗ」は書き込みを意味し、「ＲＷ」は読み出し及び書き込みの双方を意味する。
【０１１６】
この例では、入力ユニット０（型式ＣＪ１Ｗ−ＩＤ２０１）のポートＰｔは、ラック階層、ユニット階層、ポート階層といった階層的な物理構成を呈しており、この階層的な物理構成のうち、ラック階層が「ＣＰＵ  Ｒａｃｋ  ０」、ユニット階層が「ＣＪ１Ｗ−ＩＤ２０１（ＤＣ入力ユニット）」、ポート階層が「Ｃｈ１＿Ｉｎ」で表現されている。出力ユニット１（型式ＣＪ１Ｗ−ＯＣ２０１）のポートＰｔは、ラック階層が「ＣＰＵ  Ｒａｃｋ  ０」、ユニット階層が「ＣＪ１Ｗ−ＯＣ２０１（リレー接点出力ユニット）」、ポート階層が「Ｃｈ１＿Ｏｕｔ」で表現されている。
【０１１７】
なお、本実施の形態では、制御部１４は、変数Ｖａｒに対応するコメント情報Ｃｏをキーボード２１ａによる入力操作によって受け付けるようになっている。
【０１１８】
［パス設定表示ステップＳ５］
次に、本実施の形態では、制御部１４は、図４に示すパス設定表示ステップＳ５を実施する。具体的には、判断ステップＳ５１において、制御部１４は、ポートＩＤをパス形式で表示させるか否かを判断する。すなわち、制御部１４は、ポートＩＤのパス形式での表示を指示するアイコン（図示省略）に対してユーザによるポインティングデバイス１２ｂのクリック操作を受信すると（判断ステップＳ５１：Ｙｅｓ）、パス設定表示ステップＳ５において、後述する図１２に示すように、ポートＩＤに対してラックパス名、スロットパス名、チャネルパス名及びビットパス名を順に階層的に表したパス形式でパスＰａを表示部１３の表示画面１３ａに表示させる。
【０１１９】
図１２は、ポートＩＤを階層的に表したパス形式で表示した表示画面である。また、図１３は、図１０に示すアドレステーブルＴＢ１においてパス名を追加したデータ構造の一例を示す模式図である。
【０１２０】
この例では、入力ユニット０（型式ＣＪ１Ｗ−ＩＤ２０１）のポートＰｔは、図１３の「ＣＰＵラック００」に対応する図１２のラックパス名が「ｒａｃｋ＃０」、図１３のスロット０に対応する図１２のスロットパス名が「ｓｌｏｔ＃０」、図１３のチャネル「００００」に対応する図１２のチャネルパス名が「Ｃｈ１＿Ｉｎ」、図１３のビット「××」に対応する図１２のビットパス名が「Ｃｈ＿Ｉｎ××」に設定されている。出力ユニット１（型式ＣＪ１Ｗ−ＯＣ２０１）のポートＰｔは、図１３の「ＣＰＵラック００」に対応する図１２のラックパス名が「ｒａｃｋ＃０」、図１３のスロット１に対応する図１２のスロットパス名が「ｓｌｏｔ＃１」、図１３のチャネル「００１０」に対応する図１２のチャネルパス名が「Ｃｈ１＿Ｏｕｔ」、図１３のビット「××」に対応する図１２のビットパス名が「Ｃｈ＿Ｏｕｔ××」に設定されている。なお、「××」は、アドレスのビットに対応した値である。
【０１２１】
このようにして、制御部１４は、ポートＩＤに対して、「ＣＰＵラック００」に対応するラックパス名、スロット０，スロット１，スロット２，…のうち何れか一つのスロットに対応するスロットパス名、何れか一つスロットに対する複数のチャネルのうち何れか一つのチャネルに対応するチャネルパス名及び何れか一つのチャネルに対する複数のビットのうち何れか一つのビットに対応するビットパス名を順に階層的に表したパス形式でパスＰａを設定して表示部１３の表示画面１３ａに表示させる。なお、ポートＩＤのパス形式での表示を指示するアイコン（図示省略）を操作しなくても、常にパスＰａを表示させるようになっていてもよい。
【０１２２】
［変数情報自動設定ステップＳ６］
次に、本実施の形態では、制御部１４は、図４に示す変数情報自動設定ステップＳ６を実施する。具体的には、判断ステップＳ６１において、制御部１４は、変数Ｖａｒを自動的に設定するか否かを判断する。すなわち、制御部１４は、変数Ｖａｒの自動設定を指示するアイコン（図示省略）に対してユーザによるポインティングデバイス１２ｂのクリック操作を受信すると（判断ステップＳ６１：Ｙｅｓ）、変数情報自動設定ステップＳ６において、図１１及び図１２に示すように、ポートの階層的な物理構成の名称から抽出した変数Ｖａｒを自動的に設定して表示部１３の表示画面１３ａに表示する。
【０１２３】
図１４は、ポートの階層的な物理構成の名称から抽出して自動的に設定した変数Ｖａｒを表示した表示画面である。
【０１２４】
この例では、入力ユニット０（型式ＣＪ１Ｗ−ＩＤ２０１）の変数Ｖａｒは、先頭の３桁がユニット層のユニット「ＣＪ１Ｗ−ＩＤ２０１」に付されたデバイス名「Ｊ０１」（図９の位置情報画面Ｗ４参照）とされ、中間の３桁がポート階層の「Ｃｈ１＿Ｉｎ」の少なくとも二つの文字から取得した「Ｃｈ１」とされ、末尾の２桁又は４桁がポート階層の「Ｃｈ１＿Ｉｎ」に対する連番とされている。
【０１２５】
なお、図４に示すフローチャートでは省略したが、制御部１４は、ここでは、ユーザによる何れかの変数Ｖａｒへのポインティングデバイス１２ｂのクリック操作を受信すると、変数情報受け付けステップＳ４に戻り、クリック操作された変数Ｖａｒの入力情報をキーボード２１ａによる入力操作によって受け付けるようになっている。
【０１２６】
次に、図５に示す判断ステップＳ６２において、制御部１４は、変数Ｖａｒを確定するか否かを判断する。すなわち、制御部１４は、判断ステップＳ６２で変数Ｖａｒが確定されない場合（判断ステップＳ６２：Ｎｏ）、処理の終了を指示するアイコン（図示省略）に対してユーザによるポインティングデバイス１２ｂのクリック操作を受信するまで（判断ステップＳ６３：Ｎｏ）、変数情報受け付けステップＳ４に移行して変数の入力情報の受け付け処理を行う一方、処理の終了を指示するアイコンに対するクリック操作を受信すると（判断ステップＳ６３：Ｙｅｓ）、判断ステップＳ８２に移行する。
【０１２７】
一方、制御部１４は、判断ステップＳ６２において変数Ｖａｒの確定を指示するアイコン（図示省略）に対してユーザによるポインティングデバイス１２ｂのクリック操作を受信すると（判断ステップＳ６２：Ｙｅｓ）、変数テーブル作成ステップＳ７に移行する。
【０１２８】
［変数テーブル作成ステップＳ７］
変数テーブル作成ステップＳ７では、制御部１４は、ポートＩＤに対応して関連付けられる変数ＶａｒとポートＩＤとの対応関係を示す変数テーブルＴＢ２（後述する図１５参照）を作成する。
【０１２９】
図１５は、パスＰａが設定されたポートＩＤに対して変数Ｖａｒを格納する変数テーブルＴＢ２のデータ構造の一例を示す模式図である。変数テーブルＴＢ２は、実行処理記憶部１５の不揮発メモリ１５ｂに記憶されるようになっている。
【０１３０】
図１５に示す数テーブルＴＢ２には、変数名、データ型がポートＩＤ及びそのパス名と関連付けられて格納されている。この例では、バイト型（８ビット）の変数Ｖａｒ（「Ｊ０１＿Ｃｈ１＿Ｉｎ」）に対して、「ｒａｃｋ＃０／ｓｌｏｔ＃０／Ｃｈ１＿Ｉｎ」のパスＰａが格納され、ブール型（１ビット）の変数Ｖａｒ（「Ｊ０１＿Ｃｈ１＿Ｉｎ００」〜「Ｊ０１＿Ｃｈ１＿Ｉｎ０７」）に対して、それぞれ、「ｒａｃｋ＃０／ｓｌｏｔ＃０／Ｃｈ１＿Ｉｎ００」〜「ｒａｃｋ＃０／ｓｌｏｔ＃０／Ｃｈ１＿Ｉｎ０７」のパスＰａが格納されている。
【０１３１】
［ポートＩＤ書き換えステップＳ８］
図５に示す判断ステップＳ８１では、制御部１４は、ユニット構成図作成ステップＳ１においてユニット０，ユニット１，…の何れか一つのユニットの配置位置が変更されたか、ユニットが追加されたか或いはユニットが削除されたか（ユニット構成が改変されたか）否かを判断する。制御部１４は、ユニット構成図作成ステップＳ１においてユニット構成が改変されたと判断した場合には（判断ステップＳ８１：Ｙｅｓ）、ポートＩＤ書き換えステップＳ８に移行する一方、ユニット構成が改変されていないと判断した場合には（判断ステップＳ８１：Ｎｏ）、判断ステップＳ６３に移行する。
【０１３２】
ポートＩＤ書き換えステップＳ８では、制御部１４は、ユニット構成図作成ステップＳ１にてユニット０，ユニット１，…のユニット構成が改変された場合に、アドレステーブルＢＴ１に対して、ユニット構成図作成ステップＳ１にて検出した変更前のユニット（例えばユニット０，ユニット１）におけるポートＩＤ（具体的にはパスＰａが設定されたポートＩＤ）を、ユニット構成図作成ステップＳ１にて検出した変更後のユニット（例えばユニット１，ユニット０）におけるポートＩＤに書き換える。
【０１３３】
図１６は、図１３に示すアドレステーブルＴＢ１においてユニット構成が改変された後のデータ構造の一例を示す模式図である。図１７は、図１２に示す表示画面においてユニット構成が改変された後に表示した表示画面である。
【０１３４】
この例では、スロット０のユニット０とスロット１のユニット１とが相互に入れ替えられる一例を示している。
【０１３５】
すなわち、図１３のαに示すように「００００」チャネルの「００」ビット，「００００」チャネルの「０１」ビット，「００００」チャネルの「０２」ビット，…に格納されていたポートＩＤ「００００」（パス形式では「ｒａｃｋ＃０／ｓｌｏｔ＃０／Ｃｈ１＿Ｉｎ／Ｃｈ１＿Ｉｎ００」），「０００１」（パス形式では「ｒａｃｋ＃０／ｓｌｏｔ＃０／Ｃｈ１＿Ｉｎ／Ｃｈ１＿Ｉｎ０１」），「０００２」（パス形式では「ｒａｃｋ＃０／ｓｌｏｔ＃０／Ｃｈ１＿Ｉｎ／Ｃｈ１＿Ｉｎ０２」），…が、図１６のαに示すように「００１０」チャネルの「００」ビット，「００１０」チャネルの「０１」ビット，「００１０」チャネルの「０２」ビット，…のアドレスに書き換えられる。
【０１３６】
また、図１３のβに示すように「００１０」チャネルの「００」ビット，「００１０」チャネルの「０１」ビット，「００１０」チャネルの「０２」ビット，…に格納されていたポートＩＤ「１０００」（パス形式では「ｒａｃｋ＃０／ｓｌｏｔ＃１／Ｃｈ１＿Ｏｕｔ／Ｃｈ１＿Ｏｕｔ００」），「１００１」（パス形式では「ｒａｃｋ＃０／ｓｌｏｔ＃１／Ｃｈ１＿Ｏｕｔ／Ｃｈ１＿Ｏｕｔ０１」），「１００２」（パス形式では「ｒａｃｋ＃０／ｓｌｏｔ＃１／Ｃｈ１＿Ｏｕｔ／Ｃｈ１＿Ｏｕｔ０２」），…が、図１６のβに示すように「００００」チャネルの「００」ビット，「００００」チャネルの「０１」ビット，「００００」チャネルの「０２」ビット，…のアドレスに書き換えられる。
【０１３７】
そして、ポートＩＤにパスＰａが設定される場合には、入力ユニット０（この例では型式ＣＪ１Ｗ−ＩＤ２０１）のポートＰｔは、図１６の「ＣＰＵラック００」に対応する図１７のラックパス名が「ｒａｃｋ＃０」、図１６のスロット１に対応する図１７のスロットパス名が「ｓｌｏｔ＃１」、図１６のチャネル「００１０」に対応する図１７のチャネルパス名が「Ｃｈ１＿Ｉｎ」、図１６のビット「××」に対応する図１７のビットパス名が「Ｃｈ＿Ｉｎ××」に設定される。出力ユニット１（この例では型式ＣＪ１Ｗ−ＯＣ２０１）のポートＰｔは、図１６の「ＣＰＵラック００」に対応する図１７のラックパス名が「ｒａｃｋ＃０」、図１６のスロット０に対応する図１７のスロットパス名が「ｓｌｏｔ＃０」、図１６のチャネル「００００」に対応する図１７のチャネルパス名が「Ｃｈ１＿Ｏｕｔ」、図１６のビット「××」に対応する図１７のビットパス名が「Ｃｈ＿Ｏｕｔ××」に設定される。なお、「××」は、アドレスのビットに対応した値である。
【０１３８】
図５に示すフローチャートにおいて、判断ステップＳ８１を除去し、判断ステップＳ６２において変数Ｖａｒを確定した場合に（判断ステップＳ６２：Ｙｅｓ）、常に、ポートＩＤ書き換えステップＳ８を処理するようにしてもよい。
【０１３９】
なお、図１５に示す変数テーブルＴＢ２についても、ユニット構成図作成ステップＳ１においてユニット０，ユニット１，…の何れか一つのユニットの配置位置が変更された場合には、それに対応してパスＰａの設定が更新されるようになっている。
【０１４０】
［アドレス取得ステップＳ９］
次に、図５に示す判断ステップＳ８２では、制御部１４は、制御プログラムをオブジェクトコードに変換するか否かを判断する。すなわち、制御部１４は、制御プログラムのオブジェクトコードへの変換を指示するアイコン（図示省略）に対してユーザによるポインティングデバイス１２ｂのクリック操作を受信すると（判断ステップＳ８２：Ｙｅｓ）、アドレス取得ステップＳ９に移行する。
【０１４１】
アドレス取得ステップＳ９では、制御部１４は、制御プログラムに記述された変数Ｖａｒに対応するポートＩＤを変数テーブルＴＢ２（図１５参照）から取得し、取得したポートＩＤに対応するアドレスを、データ更新されたアドレステーブルＴＢ１（図１６参照）から取得する。
【０１４２】
例えば、ユニット構成が改変される前の図１５に示す変数テーブルＴＢ２の変数Ｖａｒ（「Ｊ０１＿Ｃｈ１＿Ｉｎ００」）に対応するポートＩＤ「００００」（パス形式では「ｒａｃｋ＃０／ｓｌｏｔ＃０／Ｃｈ１＿Ｉｎ／Ｃｈ１＿Ｉｎ００」）は、図１３に示すアドレステーブルＴＢ１においてアドレスがチャネル「００００」のビット「００」であったのに対して、ユニット構成が改変された後の図１６に示すアドレステーブルＴＢ１では、ポートＩＤ「００００」（パス形式では「ｒａｃｋ＃０／ｓｌｏｔ＃１／Ｃｈ１＿Ｉｎ／Ｃｈ１＿Ｉｎ００」）に対応するアドレスがチャネル「００１０」のビット「００」となる。従って、ユーザは、制御プログラムを作成する際には、ポートＰｔの種類を示す変数Ｖａｒを記述しておけば、ユニット構成が改変されたとしても、自動的に変数Ｖａｒに対応するアドレスが変更されるので、アドレスを意識する必要がない。すなわち、ユニット構成の改変に応じて制御プログラムを変更する必要がない。そして、図１５に示す変数テーブルＴＢ２の変数Ｖａｒ（「Ｊ０１＿Ｃｈ１＿Ｉｎ００」）に対応するポートＩＤ「００００」に設定されたパスＰａは、図１６及び図１７に示すように、「ｒａｃｋ＃０／ｓｌｏｔ＃１／Ｃｈ１＿Ｉｎ／Ｃｈ１＿Ｉｎ００」に更新されるので、ユーザは最新のパスＰａを参照することができる。
【０１４３】
［変換ステップＳ１０］
そして、図５に示す変換ステップＳ１０では、取得したアドレスを用いて制御プログラムをＣＰＵユニット２２で実行可能なオブジェクトコードに変換（具体的にはコンパイル）する。
【０１４４】
以上説明したように、本実施の形態に係る制御プログラム開発支援装置１００によれば、ユニット構成が改変された場合に、アドレステーブルＴＢ１に対して、変更前のユニットにおけるポートＩＤを、変更後のユニットにおけるポートＩＤに書き換え、変数Ｖａｒに対応するポートＩＤを変数テーブルＴＢ２から取得し、取得したポートＩＤに対応するアドレスをアドレステーブルＴＢ１から取得する。こうすることで、たとえユニット構成が改変されたとしても、変数テーブルＴＢ２によって制御プログラムに記述されたアドレス、さらには変数と、ポートＰｔとの関係が維持されているので、変数に対する制御プログラムにおけるアドレスの変更作業や、アドレスに対して設定した変数の変更作業を行う必要がなく、これにより、ユニット構成の改変に伴う利便性を向上させることができる。
【０１４５】
ところで、従来は、変数Ｖａｒに設定しているアドレスは、ＣＰＵユニット２２のメモリＭに割り付けられたメモリエリアを表しているだけであったため、ユーザは、アドレスからユニットの配置位置を認識することが困難であった。
【０１４６】
この点、本実施の形態では、ポートＩＤに対して、ラックパス名、スロットパス名、チャネルパス名及びビットパス名を順に階層的に表したパス形式でパスＰａを設定して表示させるので、ユーザは、パスＰａを見ただけでユニットの配置位置を容易に認識することが可能となる。
【０１４７】
また、本実施の形態では、変数情報受け付けステップＳ４と、変数情報自動設定ステップＳ６とを実施するので、変数情報受け付けステップＳ４にて変数Ｖａｒの入力情報を入力するか、或いは、変数情報自動設定ステップＳ６にて変数Ｖａｒを自動的に設定するかを、ユーザが必要に応じて使い分けすることが可能となる。
【０１４８】
また、本実施の形態では、ユニット構成図を作成するときに、ユニットが何れのスロットに移動したかを検出することができ、これにより、ユニットの配置位置の変更を効率的に検出することが可能となる。
【０１４９】
また、ユニット構成図は、図２４に示すようなツリー形式の構造図であってもよいが、本実施の形態では、ユニットのイラストを、スロットのイラストに対してドラッグ・アンド・ドロップにより表示部１３の表示画面１３ａに移動表示可能に配置してユニット構成図を作成するので、ユニット構成図におけるユニット構成を、イラストによって視覚的に改変することができ、ユニット構成の改変作業の容易化を実現することが可能となる。
【０１５０】
なお、本実施の形態では、「ＣＰＵラック００」について説明したが、増設ラック（「ラック０１」，「ラック０２」，…）についても同様にして行うことができる。また、本実施の形態では、ＰＬＣ２００を複数備え、ＬＡＮ等のネットワークを介して複数のＰＬＣ２００，…を相互に接続するようにしてもよい。この場合、ポートＩＤに設定したパスＰａの表示形態としては、先頭にネットワークのパス名（例えばＰＬＣ名）を付与した表示形態を例示できる。
【符号の説明】
【０１５１】
１３        表示部
１３ａ      表示画面
１４        制御部
１６        ユニット情報記憶部
２２        ＣＰＵユニット
３１，…    ユニット
１００      制御プログラム開発支援装置
２００      ＰＬＣ
ＢＰ        制御プログラム開発支援用プログラム
Ｍ          メモリ
Ｐａ        パス
Ｐｔ        ポート
Ｐ１        ユニット構成図作成手段
Ｐ２        メモリ割り付け手段
Ｐ３        アドレステーブル登録手段
Ｐ４        変数情報受け付け手段
Ｐ５        パス設定表示手段
Ｐ６        変数情報自動設定手段
Ｐ７        変数テーブル作成手段
Ｐ８        ポートＩＤ書き換え手段
Ｐ９        アドレス取得手段
Ｐ１０      変換手段
Ｒ          記録媒体
ＴＢ１      アドレステーブル
ＴＢ２      変数テーブル
Ｖａｒ      変数
【図１】
0005810563.tif 000002
【図２】
0005810563.tif 000003
【図３】
0005810563.tif 000004
【図４】
0005810563.tif 000005
【図５】
0005810563.tif 000006
【図６】
0005810563.tif 000007
【図７】
0005810563.tif 000008
【図８】
0005810563.tif 000009
【図９】
0005810563.tif 000010
【図１０】
0005810563.tif 000011
【図１１】
0005810563.tif 000012
【図１２】
0005810563.tif 000013
【図１３】
0005810563.tif 000014
【図１４】
0005810563.tif 000015
【図１５】
0005810563.tif 000016
【図１６】
0005810563.tif 000017
【図１７】
0005810563.tif 000018
【図１８】
0005810563.tif 000019
【図１９】
0005810563.tif 000020
【図２０】
0005810563.tif 000021
【図２１】
0005810563.tif 000022
【図２２】
0005810563.tif 000023
【図２３】
0005810563.tif 000024
【図２４】
0005810563.tif 000025
【図２５】
0005810563.tif 000026
【図２６】
0005810563.tif 000027
【図２７】
0005810563.tif 000028