(57)【特許請求の範囲】
【請求項１】
シーケンス・プログラムおよび通信ユニット・パラメータを格納する記憶手段と、
前記記憶手段から前記シーケンス・プログラムを読み出すシーケンス・プログラム読み出し手段と、
前記記憶手段から前記通信ユニット・パラメータを読み出す通信ユニット・パラメータ読み出し手段と、
前記シーケンス・プログラムを構成する命令と前記命令が出力するデータサイズとが格納された情報テーブルと、
前記シーケンス・プログラムの前記命令が出力する第１データ領域と、
前記通信ユニット・パラメータに設定された受信データ領域を取得する受信データ領域取得手段と、
前記受信データ領域取得手段により取得された第２データ領域と、
前記第１データ領域および前記第２データ領域の使用状況を登録する使用状況テーブルと、
前記第１データ領域および前記第２データ領域の使用状況を前記使用状況テーブルに登録するとともに、領域間の重複状態を判定する使用状況登録手段と、
前記重複状態にあるデータ領域を登録する重複リストと、
前記重複リストにより、前記シーケンス・プログラムと前記通信ユニット・パラメータの重複状態の確認をおこなうプログラムチェック手段と、
を備えることを特徴とするプログラマブルコントローラの周辺装置。
【請求項２】
請求項１に記載のプログラマブルコントローラの周辺装置であって、
前記受信データ領域取得手段は、
前記通信ユニット・パラメータの通信方式を判別する通信方式判別手段と、
前記通信方式ごとに定義されたパラメータ情報と、
前記通信ユニット・パラメータの設定値を取得するパラメータ設定値取得手段と、
前記パラメータの設定値から受信データを格納するデータ領域の先頭アドレスおよびデータサイズを計算するアドレス計算手段と、
を備えることを特徴とするプログラマブルコントローラの周辺装置。
【請求項３】
請求項１または２に記載のプログラマブルコントローラの周辺装置であって、
前記データ領域の前記使用状況と重複状態を識別可能に画面に表示する使用状況表示手段を備えることを特徴とするプログラマブルコントローラの周辺装置。
【請求項４】
請求項１または２に記載のプログラマブルコントローラの周辺装置であって、
重複状態にある前記データ領域のアドレスが割り付けられた前記シーケンス・プログラムの前記命令コードを他の前記命令コードと識別可能に画面に表示するシーケンス・プログラム表示手段を備えることを特徴とするプログラマブルコントローラの周辺装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプログラマブルコントローラの周辺装置に関する。
【背景技術】
【０００２】
生産設備には、複数のプログラマブルコントローラにより構成され、各プログラマブルコントローラがネットワークに接続されてデータ交換しているシステムがある。このようなデータ交換には、コモンメモリ方式を使用した通信が一般に使用されている。コモンメモリ方式では、各プログラマブルコントローラに備えた通信ユニットのそれぞれに共通のメモリ（コモンメモリ）を有している。また、各プログラマブルコントローラは、シーケンス・プログラムからアクセス可能な内部メモリを有している。他のプログラマブルコントローラへのデータの送信は、プログラマブルコントローラ自身の内部メモリに設定した送信データ領域のデータを、通信ユニットのコモンメモリ上の所定の領域に書き込むことによりおこなわれる。そして、コモンメモリ上の所定の領域にデータが書き込まれると、他のプログラマブルコントローラの通信ユニットのコモンメモリ上の所定の領域に、自身のプログラマブルコントローラが書き込んだデータが反映される。データの受信は、プログラマブルコントローラが、自身に備えた通信ユニットのコモンメモリ上の所定の領域から、他のプログラマブルコントローラが書き込んだデータを読み出し、内部メモリに設定した受信データ領域に書き込むことによりおこなわれる。このように、プログラマブルコントローラ自身の内部メモリに設定した送信データ領域および受信データ領域に対し、シーケンス・プログラムからアクセスすることにより、他のプログラマブルコントローラとのデータ交換を可能としている。この内部メモリの送信データ領域および受信データ領域は、通信ユニットのパラメータによって設定される。
【０００３】
シーケンス・プログラムは、シーケンス・プログラム編集機能を備えたプログラマブルコントローラの周辺装置により作成され、周辺装置から作成したシーケンス・プログラムをプログラマブルコントローラに書き込むことで、このシーケンス・プログラムを実装することができる。また、周辺装置は各種のパラメータ設定機能を備えており、例えば、通信ユニットのパラメータ設定として、通信ユニットのリンク構成や送受信のデータ領域を設定している。このパラメータをプログラマブルコントローラに書き込むことで、通信ユニットは、設定された通信処理をおこなう。
【０００４】
ところで、シーケンス・プログラムを構成する命令において、各命令が出力するデータ領域の間で重複状態が発生すると、シーケンス・プログラムの動作不良となる場合がある。このため、周辺装置からシーケンス・プログラムをプログラマブルコントローラに書き込む前に、周辺装置に備えたプログラムチェック機能により、データ領域の重複状態をチェックして、シーケンス・プログラムの動作不良を未然に防いでいる。このプログラムチェック機能は、シーケンス・プログラムの各命令が出力するデータ領域の間で発生する重複状態を検出している。（特許文献１）
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−１２２４０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、データ領域の重複状態は、シーケンス・プログラムの各命令が出力するデータ領域の間で発生するだけではない。プログラマブルコントローラが通信ユニットを介してネットワークに接続され、シーケンス・プログラムが他のプログラマブルコントローラとデータ交換をおこなっている場合、通信ユニットの受信データ領域とシーケンス・プログラムの命令が出力するデータ領域との間でも重複状態が発生することが想定される。従来のプログラムチェック機能は、この重複状態を検出することができないという問題があった。
【０００７】
本発明はかかる問題点を解決するためになされたもので、他のプログラマブルコントローラとのデータ交換をおこなうシーケンス・プログラムに対し、通信ユニットの受信データ領域とシーケンス・プログラムの命令が出力するデータ領域との間で重複状態を検出することができるプログラムチェック機能を備えたプログラマブルコントローラの周辺装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
請求項１に係わる発明は、上記の課題を解決するため、シーケンス・プログラムおよび通信ユニット・パラメータを格納する記憶手段と、前記記憶手段から前記シーケンス・プログラムを読み出すシーケンス・プログラム読み出し手段と、前記記憶手段から前記通信ユニット・パラメータを読み出す通信ユニット・パラメータ読み出し手段と、前記シーケンス・プログラムを構成する命令と前記命令が出力するデータサイズとが格納された情報テーブルと、前記シーケンス・プログラムの前記命令が出力する第１データ領域と、前記通信ユニット・パラメータに設定された受信データ領域を取得する受信データ領域取得手段と、前記受信データ領域取得手段により取得された第２データ領域と、前記第１データ領域および前記第２データ領域の使用状況を登録する使用状況テーブルと、前記第１データ領域および前記第２データ領域の使用状況を前記使用状況テーブルに登録するとともに、領域間の重複状態を判定する使用状況登録手段と、前記重複状態にあるデータ領域を登録する重複リストと、前記重複リストにより、前記シーケンス・プログラムと前記通信ユニット・パラメータの重複状態の確認をおこなうプログラムチェック手段と、を備えることである。
【０００９】
請求項２に係わる発明は、請求項１に記載のプログラマブルコントローラの周辺装置であって、前記受信データ領域取得手段は、前記通信ユニット・パラメータの通信方式を判別する通信方式判別手段と、前記通信方式ごとに定義されたパラメータ情報と、前記通信ユニット・パラメータの設定値を取得するパラメータ設定値取得手段と、前記パラメータの設定値から受信データを格納するデータ領域の先頭アドレスおよびデータサイズを計算するアドレス計算手段と、を備えることである。
【００１０】
請求項３に係わる発明は、請求項１または２に記載のプログラマブルコントローラの周辺装置であって、前記データ領域の前記使用状況と重複状態を識別可能に画面に表示する使用状況表示手段を備えることである。
【００１１】
請求項４に係わる発明は、請求項１または２に記載のプログラマブルコントローラの周辺装置であって、重複状態にある前記データ領域のアドレスが割り付けられた前記シーケンス・プログラムの前記命令コードを他の前記命令コードと識別可能に画面に表示するシーケンス・プログラム表示手段を備えることである。
【発明の効果】
【００１２】
上記のように構成した請求項１の発明によれば、プログラマブルコントローラの周辺装置は、使用状況登録手段を呼び出すことにより、使用状況テーブルを生成し、シーケンス・プログラムと通信ユニット・パラメータの使用するデータ領域の重複状態の確認をおこなうことができる。このシーケンス・プログラムと通信ユニット・パラメータは、シーケンス・プログラム読み出し手段および通信ユニット・パラメータ読み出し手段により、読み出される。使用状況登録手段は、シーケンス・プログラムの命令と情報テーブルとを参照して、命令が出力する先頭アドレスとデータサイズにより示されるデータ領域を求める。このシーケンス・プログラムの命令が出力するデータ領域を第１データ領域とする。また、使用状況登録手段は、受信データ領域取得手段により、通信ユニット・パラメータに設定された受信データ領域である第２データ領域を取得する。そして、使用状況登録手段は、前記第１データ領域および前記第２データ領域の使用状況を使用状況テーブルに登録するとともに、データ領域の重複状態を判定する。重複状態と判定されたデータ領域は、重複リストに登録する。
【００１３】
この重複リストにデータ領域が登録されていない場合、シーケンス・プログラムの命令が出力する第１データ領域どうしの間、およびシーケンス・プログラムの命令が出力する第１データ領域と通信ユニットの受信データ領域である第２データ領域との間において、重複状態にあるデータ領域が存在しないことを示している。
【００１４】
また、重複リストにデータ領域が登録されている場合、シーケンス・プログラムの命令が出力する第１データ領域どうしの間、および、シーケンス・プログラムの命令が出力する第１データ領域と通信ユニットの受信データ領域である第２データ領域との間において、重複状態にあるデータ領域が存在することを示している。
【００１５】
このように、使用状況登録手段は、通信ユニットの受信データ領域を含め、重複状態を自動的に検出することができるので、シーケンス・プログラムをプログラマブルコントローラに書き込む前に、使用状況登録手段により重複リストを生成することで、シーケンス・プログラム実行前に重複状態を含めたプログラム・チェックを確実におこなうことができる。さらに、重複状態の要因となったシーケンス・プログラムの命令および通信ユニット・パラメータを特定することができるので、重複状態の解消も容易におこなうことができる。
【００１６】
請求項２に係わる発明によれば、通信ユニット・パラメータが通信方式毎に異なるパラメータであっても、通信方式判別手段により、通信方式を判別し、パラメータ設定値取得手段が、通信方式ごとに定義されたパラメータ情報を参照することにより、パラメータの設定値を取得することができる。そして、アドレス計算手段により、パラメータの設定値から受信データを格納するデータ領域の先頭アドレスおよびデータサイズを計算することができるので、使用状況登録手段は、各種の通信方式の通信ユニットに対応して、重複状態を判定することができる。
【００１７】
請求項３に係わる発明によれば、プログラマブルコントローラの周辺装置は、使用状況表示手段により、データ領域の使用状況の表示において、重複状態を識別可能に画面に表示するので、シーケンス・プログラムおよび通信ユニット・パラメータが使用するデータ領域の重複状態を一覧で見ることができる。
【００１８】
請求項４に係わる発明によれば、プログラマブルコントローラの周辺装置は、シーケンス・プログラム表示手段により、シーケンス・プログラムの表示において、重複状態にあるデータ領域のアドレスが割り付けられた命令コードを、他の命令と識別可能に画面に表示することができる。これにより、重複状態の要因となったシーケンス・プログラムの命令をシーケンス・プログラムの表示上で容易に特定することができるので、重複状態の解消も容易におこなうことができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の第１の実施形態を示す周辺装置のシステム構成図。
【図２】本発明の第１の実施形態を示すプログラマブルコントローラの構成図。
【図３】図２のＣＰＵユニットおよび通信ユニットの説明図。
【図４】本発明の第１の実施形態を示す周辺装置の通信ユニット・パラメータ設定画面。
【図５】図４のパラメータ設定のメモリ構成を示す説明図。
【図６】本発明の第１の実施形態を示す周辺装置の情報テーブルの説明図。
【図７】本発明の第１の実施形態を示す周辺装置の使用状況テーブルの説明図。
【図８】本発明の第１の実施形態を示す周辺装置のシーケンス・プログラムの説明図。
【図９】本発明の第１の実施形態を示す周辺装置のプログラムチェック処理のフローチャート。
【図１０】本発明の第１の実施形態を示す周辺装置の使用状況登録処理のフローチャート。
【図１１】本発明の第２の実施形態を示す周辺装置の使用状況表示例。
【図１２】本発明の第３の実施形態を示す周辺装置のシーケンス・プログラム表示例。
【発明を実施するための形態】
【００２０】
［第１の実施形態］
プログラマブルコントローラの周辺装置には、専用のハードウェアにより構成されるものや、汎用のパーソナルコンピュータ（以下、ＰＣと記す）で構成されるもの等、種々のタイプが存在する。図１は、本実施形態の周辺装置ソフトウェアをインストールしたＰＣを周辺装置１０として使用した場合のシステム構成図である。
以下、本発明の実施形態の周辺装置１０のシステム構成を図面に従って説明する。
【００２１】
図１に示すように、周辺装置１０は、ＣＰＵ（central processing unit）１１のシステム・バス１２を介して、システムメモリ２８、ＨＤＤ（hard disk drive）２４、通信インターフェース２７、キーボード２２、マウス２３、ディスプレイ２１が接続されている。ＨＤＤ２４には、周辺装置ソフトウェア２６がインストールされている。
【００２２】
システムメモリ２８は、ＲＡＭ（random access memory）１４及びＲＯＭ（read only memory）１３等から構成される記憶手段である。ＲＡＭ１４は、ＣＰＵ１１によりＨＤＤ２４から各プログラムを読み出して実行するのに使用される。また、ＲＡＭ１４は、各プログラムの実行に要するデータを一時記憶するデータ領域、各種情報を生成するワークエリアとして使用される。ＲＯＭ１３には、ＢＩＯＳ（basic input/output system）プログラム１３ａが記憶されており、周辺装置１０の起動時において、初期設定をするとともに、ＨＤＤ２４にインストールされているＯＳ（operating system）２５の起動をおこなう。通信インターフェース２７は、通信ケーブル（図示せず）を介して、プログラマブルコントローラとの通信をおこなう。ディスプレイ２１は、出力デバイスであり、周辺装置ソフトウェア２６により、シーケンス・プログラムの編集等をおこなう場合の画面表示の出力に使用される。キーボード２２およびマウス２３は、それぞれ入力デバイスであり、周辺装置ソフトウェア２６により、シーケンス・プログラムの編集をおこなう場合等の情報の入力に使用される。ＨＤＤ２４は、ハードディスクにて構成される記憶装置であり、周辺装置ソフトウェア２６およびＯＳ２５等がインストールされている。
【００２３】
周辺装置ソフトウェア２６は、シーケンス・プログラム編集プログラム２６ａ、変換プログラム２６ｂ、通信ユニット・パラメータ設定プログラム２６ｃ、プログラムチェック・プログラム２６ｄ等が含まれている。周辺装置１０は、周辺装置ソフトウェア２６の各プログラムにより、各機能が実装されている。ＯＳ２５は、例えば、Windows（登録商標）７等が適用される。
【００２４】
シーケンス・プログラム編集プログラム２６ａは、シーケンス・プログラム（ソースコード）１４ａを、対応するラダー図の形式にて編集する。シーケンス・プログラム（ソースコード）１４ａは、シーケンス・プログラム（バイナリコード）（図示せず）を読み出し、変換プログラム２６ｂによりに変換したものである。編集後のシーケンス・プログラム（ソースコード）１４ａは、変換プログラム２６ｂにより、シーケンス・プログラム（バイナリコード）に変換される。
【００２５】
通信ユニット・パラメータ設定プログラム２６ｃは、シーケンス・プログラム（ソースコード）１４ａにて、通信ユニットを使用する場合に、通信ユニット・パラメータ１４ｂを設定する。
【００２６】
プログラムチェック・プログラム２６ｄは、シーケンス・プログラム（ソースコード）１４ａの整合性のチェックおよび使用状況のチェックをおこなう。この使用状況のチェックにおいて、データ領域の使用状況を示す使用状況テーブル１４ｃと重複リスト１４ｄが生成される。
【００２７】
作成したシーケンス・プログラムは、通信インターフェース２７を介して、プログラマブルコントローラとの通信をおこない、シーケンス・プログラムおよびパラメータをプログラマブルコントローラへ書き込む。この時、シーケンス・プログラムの動作不良を未然に防ぐため、この書き込み前において、プログラムチェック処理をおこなっている。
【００２８】
図２は、ＦＬ−ｎｅｔのネットワークに接続された複数のプログラマブルコントローラにより構成された生産設備の中のプログラマブルコントローラ１００の構成図である。このプログラマブルコントローラは、ＦＬ−ｎｅｔのネットワークを介して、他のプログラマブルコントローラとデータ交換をおこなっている。図２に示すように、プログラマブルコントローラ１００は、ＣＰＵユニット１１０と通信ユニット１２０とから構成されている。ＣＰＵユニット１１０と通信ユニット１２０は、ユニット間を接続する内部バス１１２を介して接続されている。この通信ユニット１２０は、ＦＬ−ｎｅｔ規格に対応したものである。
【００２９】
ＦＬ−ｎｅｔとは、ＦＡ制御システムに組み込まれる様々な機器（プログラマブルコントローラ、ロボットコントローラ、数値制御装置、パーソナルコンピュータ等）を相互に接続するネットワークの規格である。ＦＬ−ｎｅｔは、ＪＥＭＡ（日本電機工業会）により提唱された規格であり、コモンメモリ方式が採用されている。プログラマブルコントローラ１００は、このＦＬ−ｎｅｔ規格に対応した通信機器である通信ユニット１２０を備えることで、ＦＬ−ｎｅｔのネットワークに組み込むことが可能となる。ＦＬ−ｎｅｔでは、機器間をイーサネット（登録商標）（Ethernet（登録商標））により接続し、通信プロトコルにはＵＤＰ／ＩＰ（User Datagram Protocol/Internet Protocol）が用いられている。
【００３０】
ＣＰＵユニット１１０は、ＣＰＵ１１１の内部バス１１２を介して、ＲＯＭ１１５、ＲＡＭ１１４、プログラムメモリ１１３、Ｉ／Ｏ制御回路１１８、通信インターフェース１１９が接続されている。通信インターフェース１１９は、通信ケーブル（図示せず）を介して、周辺装置１０との通信をおこなう。周辺装置１０により、通信インターフェース１１９を介して、書き込まれたシーケンス・プログラムおよびパラメータは、プログラムメモリ１１３に格納される。ＲＯＭ１１５には、システムプログラム１１５ａが、ＲＡＭ１１４には、内部メモリ１１４ａが記憶されている。システムプログラム１１５ａは、ＣＰＵユニット１１０を制御するとともに、シーケンス・プログラム１１３ａを実行することにより、シーケンス制御をおこなっている。
【００３１】
通信ユニット１２０は、ＣＰＵ１２１の内部バスを介して、ＲＯＭ１２５、ＲＡＭ１２４、コモンメモリ１２４ａ、通信インターフェース１２９が接続され、この通信インターフェース１２９を介して、ＦＬ−ｎｅｔのネットワークと接続されている。ＦＬ−ｎｅｔのネットワークとの接続には、イーサネット（登録商標）ケーブルが用いられる。制御プログラム１２５ａは、通信ユニット１２０の制御をしている。通信ユニット１２０は、複数台備えることも可能である。
【００３２】
図３は、ＣＰＵユニット１１０の内部メモリ１１４ａと通信ユニット１２０のコモンメモリ１２４ａの説明図である。シーケンス・プログラム１１３ａからアクセス可能な内部メモリ１１４ａには、受信データ領域と送信データ領域が設定されている。ネットワークを介して受信したコモンメモリ１２４ａの他装置データを、内部メモリ１１４ａの受信データ領域に読み出す。また、送信データ領域のデータをコモンメモリ１２４ａに書き込むことにより、自装置データをネットワークを介して送信している。このネットワークを介して、各プログラマブルコントローラ間でサイクリック通信をおこなうことによって、各プログラマブルコントローラはコモンメモリを共有している。
【００３３】
図４は、通信ユニット・パラメータ設定プログラム２６ｃによる、ＦＬ−ｎｅｔ通信ユニット・パラメータ設定３００である。このＦＬ−ｎｅｔ通信ユニット・パラメータ設定３００により、パラメータ値を設定した後、このパラメータをプログラマブルコントローラに書き込むことで、通信ユニットは設定の通信処理をおこなう。
【００３４】
図４に示すように、ＦＬ−ｎｅｔ通信ユニット・パラメータ設定３００は、リレーリンク３１０とレジスタリンク４１０の設定を有している。リレーリンク３１０は、主にビット単位でのアクセスが可能な内部メモリのデータ領域のアドレス設定であり、レジスタリンク４１０には、主にワード単位でのアクセスが可能な内部メモリのデータ領域のアドレス設定である。それぞれ、リンク領域先頭アドレス３１１，４１１、リンク領域ワード数３１３，４１３、送信領域先頭アドレス３１４，４１４、送信領域ワード数３１６，４１６のパラメータが設定可能となっている。なお、リンク領域末尾アドレス３２２，４２２、送信領域末尾アドレス３２５，４２５は、設定されたパラメータから自動的に計算される。
【００３５】
ここで、通信ユニット・パラメータは、通信ユニットごとに番号付けされ、通信方式等の付帯情報も有している。プログラマブルコントローラが複数台の通信ユニットを備える場合、台数分の通信ユニット・パラメータの設定を、それぞれにおこなう必要がある。また、ＦＬ−ｎｅｔの通信ユニットの場合、別途ノード番号等の設定も必要である。
【００３６】
図５は、図４のレジスタリンク４１０のパラメータ設定のメモリ構成を示す説明図である。レジスタリンク４１０の受信データ領域は、リンク領域の範囲から送信領域の範囲を除いたＲ００００〜Ｒ０２ＦＦと、Ｒ０５００〜Ｒ０５ＦＦの領域となる。なお、図示していないが、リレーリンク３１０の受信データ領域は、Ｌ０００〜Ｌ０ＦＦと、Ｌ２００〜Ｌ３ＦＦの領域となる。
【００３７】
ここで、Ｒ００００、Ｌ０００等は、シーケンス・プログラムが認識可能なアドレス形式であり、先頭の識別文字に１６進のアドレスを付加したものである。先頭の識別文字がＲのアドレスは、リンクレジスタと呼ばれるワード単位のアドレスであり、先頭の識別文字がＬのアドレスは、リンクリレーと呼ばれるビット単位のアドレスである。また、アドレスＬ０００〜Ｌ００Ｆの１６ビットをＬ００Ｗと表記することにより、ワード単位で指定することができる。なお、本実施形態においては、２バイト（１６ビット）を１ワードとするシステムを想定している。
【００３８】
以上のように構成された本実施形態の周辺装置１０において、データ領域の重複状態を検出する処理について説明する。
【００３９】
図６は、情報テーブル１４ｅの説明図である。図６に示すように、情報テーブル１４ｅは、命令６００が出力するデータ領域（第１データ領域）のアドレス６０１を有するオペランド番号と、データサイズ６０２を有するオペランド番号を有している。例えば、ＷＢＭＯＶの場合、出力するデータ領域のアドレスは第２オペランドに記述され、データサイズは第３オペランドに記述されていることを示している。
【００４０】
図７は、使用状況テーブル１４ｃの説明図である。図７に示すように、使用状況テーブル１４ｃは、プログラマブルコントローラの内部メモリの各アドレスに対応する使用状況のフラグ情報で構成されている。アドレス順の１０Ｈ毎のレコードに区切って、各アドレスの使用状況のフラグ情報をアドレス昇順にテーブル表記している。
【００４１】
使用状況テーブル１４ｃ中、フラグ情報がオン状態の部位は、そのアドレスの内部メモリのデータ領域が使用されていることを表している。例えば、図７において、アドレスＲ０３００〜Ｒ０４ＦＦのフラグ情報はオフ状態であり、このデータ領域４２６が使用されていないことを示している。
【００４２】
次に、本実施形態のプログラムチェック処理を図９のフローチャートにより説明する。
図９に示すように、プログラムチェック処理は、データ領域の重複状態のチェックと整合性のチェックをおこなっている。
【００４３】
整合性チェックは、シーケンス・プログラム１４ａが所定の形式であるか、命令が使用するアドレスが正しいか、ジャンプ先ラベルが存在するか、等についてチェックする。（ステップＳ１０１）
【００４４】
そして、チェック結果を判定し、問題があればチェック結果を記憶し、問題がなければスキップする。（ステップＳ１０２）（ステップＳ１０３）
【００４５】
次に、シーケンス・プログラム１４ａに対し、使用状況登録処理により、データ領域の重複状態のチェックをおこなう。使用状況テーブルと重複リストが出力される。（ステップＳ１０４）
【００４６】
出力された重複リストを読み出し、重複リストが空でなければ内容を記憶し、重複リストが空ならばスキップする。（ステップＳ１０５）（ステップＳ１０６）（ステップＳ１０７）
尚、ステップＳ１０５−Ｓ１０７は特許請求の範囲に記載のプログラムチェック手段に対応する。
【００４７】
記憶された整合性チェックの結果および重複リストの内容を表示形式にして、ディスプレイに表示する。（ステップＳ１０８、使用状況表示手段）
【００４８】
次に、本実施形態の使用状況登録処理を図１０のフローチャートにより説明する。
【００４９】
図１０に示すように、使用状況登録処理は、最初に初期化と先頭の通信ユニット・パラメータの取得をおこなう。初期化は、使用状況テーブルと重複リストを生成し、使用状況テーブルのすべてのアドレスのフラグ情報をオフ状態にする。また、重複リストは空の状態にする。（ステップＳ００１、通信ユニット・パラメータ読み出し手段）
【００５０】
次に、受信データ格納領域取得処理により、通信ユニット・パラメータに設定された受信データを格納するアドレスとデータサイズを取得する。（ステップＳ００２、受信データ領域取得手段、パラメータ設定値取得手段）
【００５１】
例えば、図４のＦＬ−ｎｅｔ通信ユニット・パラメータ設定３００により設定されたパラメータを取得した場合について説明する。受信データ格納領域取得処理は、通信方式判別手段により、パラメータの通信方式がＦＬ−ｎｅｔであると判別する。そして、ＦＬ−ｎｅｔのパラメータ情報を参照して、リンク領域先頭アドレス、リンク領域ワード数、送信領域先頭アドレス、送信領域ワード数の設定値を取得する。これにより、リンク領域先頭アドレスＬ００Ｗ、リンク領域ワード数６４、送信領域先頭アドレスＬ１０Ｗ、送信領域ワード数１６が取得される。
【００５２】
そして、アドレス計算手段により、リレーリンクの受信データ領域（第２データ領域）は、リンク領域の範囲から送信領域の範囲を除いたアドレスＬ００ＷからデータサイズＦＨワード分と、アドレスＬ２０Ｗからデータサイズ１ＦＨワード分と計算される。また、レジスタリンクの受信データ領域（第２データ領域）は、リンク領域の範囲から送信領域の範囲を除いたアドレスＲ００００からデータサイズ２ＦＨワード分と、アドレスＲ０５００からデータサイズＦＦＨワード分と計算される。
【００５３】
使用状況テーブルを参照して、このアドレスとデータサイズにより示されるデータ領域に対応するフラグ情報を取得し、使用状況を判定する。（ステップＳ００３）
【００５４】
そして、フラグ情報がデータ領域が使用されていないことを示すオフ状態ならば、データ領域が使用されていることを示すオン状態に変更する。（ステップＳ００４、使用状況登録手段）
【００５５】
すでに、データ領域が使用されているならば、この通信ユニット・パラメータを示す番号とアドレスを重複リストに登録する。（ステップＳ００５）
【００５６】
例えば、上述の通信ユニット・パラメータを読み出した場合にあって、使用状況テーブルを参照すると、アドレスＲ００００〜Ｒ０２ＦＦ、Ｒ０５００〜Ｒ０５ＦＦ、Ｌ０００〜Ｌ０ＦＦ、Ｌ２００〜Ｌ３ＦＦに対応するフラグ情報がオフ状態であったとする。
【００５７】
通信ユニット・パラメータの受信データ領域は、アドレスＲ００００〜Ｒ０２ＦＦ、Ｒ０５００〜Ｒ０５ＦＦ、Ｌ０００〜Ｌ０ＦＦ、Ｌ２００〜Ｌ３ＦＦであり、これらは、使用されていないので、アドレスＲ００００〜Ｒ０２ＦＦ、Ｒ０５００〜Ｒ０５ＦＦ、Ｌ０００〜Ｌ０ＦＦ、Ｌ２００〜Ｌ３ＦＦに対応するフラグ情報をオン状態として、使用状況テーブルに登録する。
【００５８】
ここで、使用状況テーブルにおいて、アドレスＲ００００〜Ｒ０２ＦＦ、Ｒ０５００〜Ｒ０５ＦＦ、Ｌ０００〜Ｌ０ＦＦ、Ｌ２００〜Ｌ３ＦＦに対応するフラグ情報の中に、すでにオン状態であるアドレスが存在した場合、そのアドレスは重複状態にあると判定する。
【００５９】
そして、その通信ユニット・パラメータを示す番号とアドレスを重複リストに登録する。なお、重複状態アドレス以外のアドレスのフラグ情報はオン状態として、使用状況テーブルに登録する。
【００６０】
そして、すべての通信ユニット・パラメータについて、パラメータを取得したかを判定する。取得していれば、ステップＳ００８へ進む。（ステップＳ００６）
【００６１】
すべての通信ユニット・パラメータについて、パラメータを取得していなければ、パラメータから次の通信ユニット・パラメータを取得する。（ステップＳ００７、通信ユニット・パラメータ読み出し手段）
その後、ステップＳ００２〜ステップＳ００６を繰り返す。
【００６２】
次に、シーケンス・プログラム（ソースコード）から、先頭ステップの１命令を取得する。（ステップＳ００８、シーケンス・プログラム読み出し手段）
【００６３】
情報テーブルを参照して、ステップの命令が出力するデータのアドレスとデータサイズを取得する。（ステップＳ００９）
【００６４】
例えば、図８（ｂ）のシーケンス・プログラム（ソースコード）は、図８（ａ）のラダー図に対応するものである。図８（ｂ）の、ステップ０１０５を読み出した場合、ニモニック７００のＦＵＮＣと、オペランド７１０のＷＢＭＯＶを得る。これは、ステップ０１０５は、命令が関数タイプＦＵＮＣであり、その種別がＷＢＭＯＶであることを示している。
【００６５】
ＷＢＭＯＶはワード単位のブロック転送の命令（関数）であり、３個のオペランドを引数として、第１オペランド７２１のアドレスから第２オペランド７２２のアドレスへ、第３オペランド７２３のデータサイズ分（ワード数）を転送する仕様である。そして、図６の情報テーブル１４ｅを参照することにより、命令６００がＷＢＭＯＶの場合、データ領域のアドレス６０１が第２オペランドに記述され、データサイズ６０２が第３オペランドに記述されていることが把握できる。
【００６６】
ここで、図８（ｂ）から第１オペランド７２１のＤ０１００と、第２オペランド７２２のＲ０４ＦＣと、第３オペランド７２３の８ｄが取得される。従って、図８（ｃ）に示すように、ステップ０１０５のＷＢＭＯＶが出力するデータ領域は、アドレスＲ０４ＦＣからデータサイズ８ワード分である。ここでｄは１０進の値を示している。
【００６７】
使用状況テーブルにおいて、このアドレスとデータサイズにより示されるデータ領域と対応するフラグ情報を取得し、使用状況を判定する。（ステップＳ０１０）
【００６８】
そして、フラグ情報がデータ領域が使用されていないことを示すオフ状態ならば、データ領域が使用されていることを示すオン状態に変更する。（ステップＳ０１１、使用状況登録手段）
【００６９】
また、フラグ情報がデータ領域がすでに使用されていることを示すオン状態ならば、この命令のステップ番号とアドレスを重複リストに登録する。（ステップＳ０１２）
【００７０】
例えば、図８（ｂ）ステップ０１０５のＷＢＭＯＶを読み出した場合にあって、使用状況テーブルを参照すると、アドレスＲ０４ＦＣ〜Ｒ０５０３と対応するフラグ情報がオフ状態、であったとする。
【００７１】
ステップ０１０５のＷＢＭＯＶが出力するデータ領域は、アドレスＲ０４ＦＣからデータサイズ８ワード分であり、アドレスＲ０４ＦＣ〜Ｒ０５０３は使用されていないので、アドレスＲ０４ＦＣ〜Ｒ０５０３に対応するフラグ情報をオン状態として、使用状況テーブルに登録する。
【００７２】
そして、図７に示すように、使用状況テーブルが、アドレスＲ０４ＦＣ〜Ｒ０４ＦＦと対応するフラグ情報がオフ状態、アドレスＲ０５００〜Ｒ０５０３と対応するフラグ情報がオン状態、であったとする。
【００７３】
ステップ０１０５のＷＢＭＯＶが出力するデータ領域は、アドレスＲ０４ＦＣからデータサイズ８ワード分であるので、アドレスＲ０４ＦＣ〜Ｒ０５０３が使用されているかを、使用状況テーブルをチェックして判定する。
【００７４】
この場合、使用状況テーブルにおいて、アドレスＲ０４ＦＣ〜Ｒ０４ＦＦのフラグ情報はオフ状態であるが、アドレスＲ０５００〜Ｒ０５０３のフラグ情報はすでにオン状態であるため、アドレスＲ０５００〜Ｒ０５０３のデータ領域は、重複状態と判定される。
【００７５】
そして、アドレスＲ０５００〜Ｒ０５０３とステップ番号０１０５の情報を重複リストに登録する。なお、アドレスＲ０４ＦＣ〜Ｒ０４ＦＦのフラグ情報はオン状態として、使用状況テーブルに登録する。
【００７６】
次に、シーケンス・プログラム（ソースコード）の末尾のステップまで、命令を取得したかを判定する。取得していれば、処理を終了する。（ステップＳ０１３）
【００７７】
シーケンス・プログラム（ソースコード）の末尾のステップまで、命令を取得していなければ、シーケンス・プログラム（ソースコード）から、次ステップの１命令を取得する。（ステップＳ０１４、シーケンス・プログラム読み出し手段）
その後、ステップＳ００９〜ステップＳ０１３を繰り返す。
【００７８】
このように、使用状況登録処理は、通信ユニットの受信データ領域とシーケンス・プログラムの命令が出力するデータ領域の使用状況をチェックし、その結果を使用状況テーブルおよび重複リストに出力する。
【００７９】
本発明のプログラムチェック機能は、使用状況登録処理により、通信ユニットの受信データ領域とシーケンス・プログラムの命令が出力するデータ領域との間で、重複状態を検出することができるので、シーケンス・プログラムが他のプログラマブルコントローラとのデータ交換をおこなっている場合においても、確実なプログラムチェックをおこなうことができる。さらに、重複状態の要因となったシーケンス・プログラムの命令および通信ユニット・パラメータを特定することができるので、重複状態の解消も容易におこなうことができる。
【００８０】
［第２の実施形態］
図１１は、本発明の第２の実施形態を示す使用状況表示例である。
本実施形態では、シーケンス・プログラム１４ａの使用状況を周辺装置１０のディスプレイに表示する。
【００８１】
図１１に示すように、使用状況表示８００は、指定されたアドレスの使用状況を表示する。使用状況表示８００は、使用状況登録処理により生成された使用状況テーブルと重複リストの情報をアドレス順に一覧表形式にして表示したものである。表示アドレス８０１に、表示したいアドレスの識別文字を入力すると、アドレス順の１０Ｈ毎の行に区切って、各アドレスの使用状況のフラグ情報をアドレス昇順に一覧８０２表示する。一覧８０２の横に備えたスクロールバー８０３を操作することにより、表示するアドレス範囲を変更することができる。使用状況表示８００において、シーケンス・プログラムの命令が使用しているデータ領域は、アドレスの識別文字８１１で示され、使用されていないデータ領域８１０は、中点（・）で示される。また、通信ユニット・パラメータに設定された受信データ領域８２０は、背景色を他と識別可能に表示される。そして、重複リストの情報にあるアドレスは、重複状態にあるデータ領域として、アドレスの識別文字８２１を強調表示する。従って、図１１において、アドレスＲ０４ＥＣ〜Ｒ０４Ｆ３およびＲ０４ＦＣ〜Ｒ０５０３は、シーケンス・プログラムの命令が使用しており、Ｒ０５００〜Ｒ０５ＦＦは、受信データ領域に設定されているので、Ｒ０５００〜Ｒ０５０３は重複状態にあることが把握できる。
【００８２】
このように、任意のタイミングで使用状況を表示できるので、例えば、シーケンス・プログラムの編集中に使用状況表示をおこなうことにより、どこのデータ領域を使用すれば重複状態を発生させずに、領域を確保できるか、容易に把握することができる。また、使用状況表示において、重複状態にあるデータ領域を識別することができるので、このデータ領域を確認するとともに、重複状態を解消するには、どこのデータ領域を使用すればよいか、容易に把握することができる。
【００８３】
［第３の実施形態］
図１２は、本発明の第３の実施形態を示すシーケンス・プログラム表示例である。
本実施形態では、周辺装置１０によるシーケンス・プログラムの表示において、重複状態にあるデータ領域を使用している命令およびアドレスを識別可能に表示する。（シーケンス・プログラム表示手段）
【００８４】
図１２に示すように、シーケンス・プログラム表示９００は、シーケンス・プログラム上において、重複状態にあるデータ領域を使用している命令を識別可能に表示することができる。シーケンス・プログラム表示９００は、使用状況登録処理により生成された使用状況テーブルと重複リストの情報を参照して、重複状態にあるデータ領域を使用している命令およびアドレスを強調表示する。従って、図１２において、コイル９１１のアドレスＬ２２０と、命令（関数）９２１は重複状態にあることが把握できる。
【００８５】
このように、周辺装置１０は、シーケンス・プログラムの表示において、重複状態にあるデータ領域を使用している命令およびアドレスを強調表示できるので、係わる命令およびアドレスを容易に見つけることができる。
【００８６】
なお、本実施形態では、使用状況表示において、命令の出力データ領域および受信データ領域を表示しているが、命令の入力データ領域および送信データ領域を識別可能にして、双方のデータ領域を表示してもよい。シーケンス・プログラムにおいて使用される、すべてのデータ領域を視覚的に把握することができる。
【符号の説明】
【００８７】
１０：周辺装置、  １１：ＣＰＵ、  １２：システム・バス、
１３：ＲＯＭ、  １３ａ：ＢＩＯＳ（basic input/output system）プログラム、
１４：ＲＡＭ、
１４ａ：シーケンス・プログラム（ソースコード）、
１４ｂ：通信ユニット・パラメータ、  １４ｃ：使用状況テーブル、
１４ｄ：重複リスト、  １４ｅ：情報テーブル、  ２１：ディスプレイ、
２２：キーボード、  ２３：マウス、  ２４：ＨＤＤ、  ２５：ＯＳ、
２６：周辺装置ソフトウェア、  ２６ａ：シーケンス・プログラム編集プログラム、
２６ｂ：変換プログラム、  ２６ｃ：通信ユニット・パラメータ設定プログラム、
２６ｄ：プログラムチェック・プログラム、  ２７：通信インターフェース、
２８：システムメモリ、
１００：プログラマブルコントローラ、
１１０：ＣＰＵユニット、  １１１：ＣＰＵ、  １１２：内部バス、
１１３：プログラムメモリ、  １１３ａ：シーケンス・プログラム、
１１４：ＲＡＭ、  １１４ａ：内部メモリ、
１１５：ＲＯＭ、  １１５ａ：システムプログラム、
１１８：Ｉ／Ｏ制御回路、  １１９：通信インターフェース、
１２０：通信ユニット、  １２１：ＣＰＵ、
１２４：ＲＡＭ、  １２４ａ：コモンメモリ、
１２５：ＲＯＭ、  １２５ａ：制御プログラム、
１２９：通信インターフェース、
３００：ＦＬ−ｎｅｔ通信パラメータ設定、
３１０：リレーリンク、
３１１：リンク領域先頭アドレス、  ３１３：リンク領域ワード数、
３１４：送信領域先頭アドレス、  ３１６：送信領域ワード数、
３２１：リンク領域先頭アドレス（設定値）、  ３２２：リンク領域末尾アドレス、
３２３：リンク領域ワード数（設定値）、  ３２４：送信領域先頭アドレス（設定値）、
３２５：送信領域末尾アドレス、  ３２６：送信領域ワード数（設定値）、
４１０：レジスタリンク、
４１１：リンク領域先頭アドレス、  ４１３：リンク領域ワード数、
４１４：送信領域先頭アドレス、  ４１６：送信領域ワード数、
４２１：リンク領域先頭アドレス（設定値）、  ４２２：リンク領域末尾アドレス、
４２３：リンク領域ワード数（設定値）、  ４２４：送信領域先頭アドレス（設定値）、
４２５：送信領域末尾アドレス、  ４２６：送信領域ワード数（設定値）、
６００：命令、  ６０１：アドレス、  ６０２：データサイズ、
７００：ニモニック、  ７１０：オペランド、  ７２０：命令（関数）、
７２１：第１オペランド、  ７２２：第２オペランド、  ７２３：第３オペランド、
８００：使用状況表示、  ８０１：表示アドレス、  ８０２：一覧、
８０３：スクロールバー、
８１０：データ領域、  ８１１：識別文字、
８２０：受信データ領域、  ８２１：識別文字（強調表示）、
９００：シーケンス・プログラム表示、  ９１１：コイル、  ９２１：命令（関数）
【図１】
0005899805.tif 000002
【図２】
0005899805.tif 000003
【図３】
0005899805.tif 000004
【図４】
0005899805.tif 000005
【図５】
0005899805.tif 000006
【図６】
0005899805.tif 000007
【図７】
0005899805.tif 000008
【図８】
0005899805.tif 000009
【図９】
0005899805.tif 000010
【図１０】
0005899805.tif 000011
【図１１】
0005899805.tif 000012
【図１２】
0005899805.tif 000013