(57)【特許請求の範囲】
【請求項１】
命令が記述された命令部と、前記命令部に記述された命令によって使用されかつデバイス名および番号によって定義されるデバイスが記述されるデバイス部とを夫々有する複数の命令リストを含むシーケンスプログラムを作成するプログラマブルコントローラの周辺装置において、
デバイス名とシーケンスプログラムに割り付け可能な番号の範囲を示す点数との対応を示すデバイス点数情報を記憶する記憶手段と、
連続した領域を指すデバイスを使用することを指定する所定の命令が記載された命令部を有する命令リストをシーケンスプログラムから順次抽出し、抽出した各命令リストの命令部およびデバイス部を解釈することにより各命令リストで使用しようとしている複数のデバイスを取得し、取得した複数のデバイスで使用される複数の番号が前記記憶手段に記憶されている対応するデバイス名の点数の範囲内であるか否かを検査する第１のデバイス範囲チェック手段と、
連続した複数の番号をもつ複数のデバイスを使用することを指定するプログラム表記が記述されたデバイス部を有する命令リストをシーケンスプログラムから順次抽出し、抽出した各命令リストの命令部およびデバイス部を解釈することにより各命令リストで使用しようとしている複数のデバイスを取得し、取得した複数のデバイスで使用される複数の番号が前記記憶手段に記憶されている対応するデバイス名の点数の範囲内であるか否かを検査する第２のデバイス範囲チェック手段と、
を有していることを特徴とするプログラマブルコントローラの周辺装置。
【請求項２】
命令が記述された命令部と、前記命令部に記述された命令によって使用されかつデバイス名および番号によって定義されるデバイスが記述されるデバイス部とを夫々有する複数の命令リストを含むシーケンスプログラムを作成するプログラマブルコントローラの周辺装置において、
デバイス名とシーケンスプログラムに割り付け可能な番号の範囲を示す点数との対応を示すデバイス点数情報と、該デバイスの点数情報に対応して、シーケンスプログラム毎に割り付け可能なローカルデバイスをシーケンスプログラムに割り付け可能な番号の範囲を示すローカルデバイス範囲情報および／または各シーケンスプログラムに共通に割り付け可能なグローバルデバイスをシーケンスプログラムに割り付け可能な番号の範囲を示すグローバルデバイス範囲情報を属性情報として記憶する記憶手段と、
連続した領域を指すデバイスを使用することを指定する所定の命令が記載された命令部を有する命令リストをシーケンスプログラムから順次抽出し、抽出した各命令リストの命令部およびデバイス部を解釈することにより各命令リストで使用しようとしている複数のデバイスを取得し、取得した複数のデバイスで使用される複数の番号がローカルデバイスとして使用されるべき番号およびグローバルデバイスとして使用されるべき番号に亘っていないか否かを前記記憶手段に記憶されている対応するデバイス名についての属性情報を参照して検査する第１のローカル・グローバルデバイス混在使用チェック手段と、
連続した複数の番号をもつ複数のデバイスを使用することを指定するプログラム表記が記述されたデバイス部を有する命令リストをシーケンスプログラムから順次抽出し、抽出した各命令リストの命令部およびデバイス部を解釈することにより各命令リストで使用しようとしている複数のデバイスを取得し、取得した複数のデバイスで使用される複数のデバイス番号がローカルデバイスとして使用されるべき番号およびグローバルデバイスとして使用されるべき番号に亘っていないか否かを前記記憶手段に記憶されている対応するデバイス名についての属性情報を参照して検査する第２のローカル・グローバルデバイス混在使用チェック手段と、
を有していることを特徴とするプログラマブルコントローラの周辺装置。
【請求項３】
命令が記述された命令部と、前記命令部に記述された命令によって使用されかつデバイス名および番号によって定義されるデバイスが記述されるデバイス部とを夫々有する複数の命令リストを含むシーケンスプログラムを作成するプログラマブルコントローラの周辺装置において、
連続した領域を指すデバイスを使用することを指定する所定の命令が記載された命令部を有する命令リストをシーケンスプログラムから順次抽出し、抽出した命令リストの命令部およびデバイス部を解釈することにより当該命令リストで使用しようとしている複数のデバイスを第１の比較情報として取得し、前記第１の比較情報を取得した命令リスト以外の他の命令リストのデバイス部で使用されているデバイスを第２の比較情報として取得し、前記第１の比較情報および第２の比較情報を比較することにより同一デバイスの重複使用を検査するデバイス重複使用チェック手段、
を有していることを特徴とするプログラマブルコントローラの周辺装置。
【請求項４】
前記連続した領域を指すデバイスを使用することを指定する所定の命令は、ブロック転送命令（ＢＭＯＶ）であることを特徴とする請求項１〜３のいずれか一つに記載のプログラマブルコントローラの周辺装置。
【請求項５】
命令が記述された命令部と、前記命令部に記述された命令によって使用されかつデバイス名および番号によって定義されるデバイスが記述されるデバイス部とを夫々有する複数の命令リストを含むシーケンスプログラムを作成するプログラマブルコントローラの周辺装置において、
連続した複数の番号をもつ複数のデバイスを使用することを指定するプログラム表記が記述されたデバイス部を有する命令リストをシーケンスプログラムから順次抽出し、抽出した命令リストの命令部およびデバイス部を解釈することにより当該命令リストで使用しようとしている複数のデバイスを第１の比較情報として取得し、前記第１の比較情報を取得した命令リスト以外の他の命令リストのデバイス部で使用されているデバイスを第２の比較情報として取得し、前記第１の比較情報および第２の比較情報を比較することにより同一デバイスの重複使用を検査するデバイス重複使用チェック手段と、
を有していることを特徴とするプログラマブルコントローラの周辺装置。
【請求項６】
前記連続した複数の番号をもつ複数のデバイスを使用することを指定するプログラム表記は、アルファベット文字のＫと、該Ｋに続く数値とによって指定されることを特徴とする請求項１、２、５のいずれか一つに記載のプログラマブルコントローラの周辺装置。
【請求項７】
前記連続した複数の番号をもつ複数のデバイスを使用することを指定するプログラム表記は、デバイス名および番号によって定義されるデバイスに続いて記述される所定のアルファベット文字を含むインデックス修飾表記であり、
前記デバイス重複使用チェック手段は、デバイスおよび該デバイスに続いて記述される前記インデックス修飾表記が記述されたデバイス部を有する命令リストをシーケンスプログラムから抽出し、抽出したデバイス部のデバイスを最小値とし、この最小値に予め設定されたインデックス修飾する範囲を加算した値を最大値とし、これら最小値から最大値までの複数のデバイスを第１の比較情報として取得することを特徴とする請求項５に記載のプログラマブルコントローラの周辺装置。
【請求項８】
前記インデックス修飾表記は、アルファベット文字のＺによって指定されることを特徴とする請求項７に記載のプログラマブルコントローラの周辺装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、機械設備の制御を行うプログラマブルコントローラのためのシーケンスプログラムを作成するプログラミングツールなどとして使用される周辺装置に関し、特に、シーケンスプログラムのチェック機能を有する周辺装置に関するものである。
【０００２】
【従来の技術】
第１８図は、従来技術におけるプログラマブルコントローラの周辺装置（以下、ＰＣ周辺装置と云うことがある）を示している。
【０００３】
ＰＣ周辺装置３００は、ＣＰＵなどによる処理部３０１と、主記憶部３０２と、補助記憶部３０３と、キー入力制御部３０４と、画面制御部３０５と、プリンタ制御部３０６とを有し、キー入力制御部３０４にはキーボード３０７が、画面制御部３０５にはＣＲＴなどによる表示器３０８が、プリンタ制御部３０６にはプリンタ３０９がそれぞれ接続されている。
【０００４】
主記憶部３０２は、システムプログラムエリア３１０、シーケンスプログラムエリア３１１、デバイス範囲情報エリア３１２がそれぞれ割り付けられており、システムプログラムエリア３１０にはシステムプログラムが、シーケンスプログラムエリア３１１にはシーケンスプログラムが、デバイス範囲情報エリア３１２にはデバイス範囲情報がそれぞれ格納される。
【０００５】
第１９図は、ＰＣ周辺装置のデバイス割り付けテーブルを示している。デバイス割り付けテーブルは、デバイス範囲情報エリア３１２に格納され、各デバイスの範囲を定義しており、各デバイスの点数情報４００と、各デバイス毎のローカルデバイス範囲情報４０１とグローバルデバイス範囲情報４０２を有している。
【０００６】
なお、ローカルデバイスは各シーケンスプログラム毎に割り付けられるデバイスであり、グローバルデバイスは各シーケンスプログラムと共通のデバイスである。
【０００７】
プログラマブルコントローラの周辺装置３００は、キーボード３０７よりキー入力制御部３０４を介してシーケンスプログラムを主記憶部３０２のシーケンスプログラムエリア３１１に格納すると共に、デバイス範囲情報を主記憶部３０２のデバイス範囲情報エリア３１２に格納する。また各エリアに格納したシーケンスプログラムやデバイス範囲情報を画面制御部３０５を介して表示器３０８へ、プリンタ制御部３０６を介してプリンタ３０９へ出力し、補助記憶部３０３に格納する。
【０００８】
ここで、シーケンスプログラムとデバイス範囲情報が既に作成されており、主記憶部３０２に格納されているものとする。
【０００９】
シーケンスプログラムで使用されているデバイスの値に誤りがないかチェックする場合、キーボード３０７よりキー入力制御部３０４を介してチェック指示を出す。このチェック指示により処理部３０１がシステムプログラフム中のチェックルーチンを実行する。このチェックルーチンを第２０図を参照して説明する。
【００１０】
チェック指示によりシーケンスプログラムより１命令分のデータを取得する処理を実行する（ステップＳ３０１）。つぎに、命令中にデバイスが使われているかチェックする処理を実行する（ステップＳ３０２）。
【００１１】
デバイスが含まれていれば、デバイス番号を取得する処理を実行し（ステップＳ３０３）、デバイス番号がデバイス点数情報の点数を超えているかチェックする処理を実行する（ステップＳ３０４）。
【００１２】
このチェックで、デバイス番号がデバイス点数情報の点数を超えていた場合には、範囲を超えていることを知らせるエラー表示処理を実行する（ステップＳ３０５）。
【００１３】
つぎに、最終ステップまでチェックが終わったか否かを確認し（ステップＳ３０６）、上述の一連の処理を最終ステップまで繰り返し実行する。
【００１４】
実例として、第２１図に示されているようなシーケンスプログラムをチェックした場合、シーケンスプログラムの１番目の命令から順次チェックし、３番目の命令をチェックする時、“ＭＯＶ  Ｋ４０  Ｄ９０００”が取得され、命令中に使用されているデバイスとして、“Ｄ９０００”が取得される。
【００１５】
第２２図に示されているように、デバイス“Ｄ９０００”とデバイスＤのデバイス範囲情報とを比較し、デバイス“Ｄ９０００”がデバイス範囲情報にあるデバイスＤの点数の範囲内かをチェックする。デバイスＤの点数は“８１９１”であるのに対し、デバイス“Ｄ９０００”の番号は“９０００”であるため、範囲外となり、第２３図に示されているようなエラーが表示される。このエラー表示では、デバイス範囲を超えたデバイスを使用している命令の存在する命令番号（リスト行）と、その命令およびデバイス範囲情報（最大値）とが画面表示される。
【００１６】
【発明が解決しようとする課題】
しかし、第２１図に示されているシーケンスプログラムの７番目の“ＢＭＯＶ”命令の場合、“Ｄ０”から１０個のデータを“Ｄ８１９０”から１０個分のデータエリアにコピーする命令であるため、データ転送先デバイス“Ｄ８１９０“から１０個分のデータは範囲“Ｄ８１９０”〜“Ｄ８１９９”となり、デバイスＤ点数の最大値を超えてしまうが、従来のＰＣ周辺装置では、データ転送先デバイス“Ｄ８１９０”がデバイス範囲外であるか否かをチェックしているだけであるため、エラーにはならない。
【００１７】
また、従来のＰＣ周辺装置では、シーケンスプログラム上に存在する連続デバイスを指定する命令や連続した領域を指すデバイス表記により連続するデバイスがローカルデバイスとグローバルデバイスを混在使用していないかについてチェックすることができないため、このチェックについては、シーケンスプログラムを目視で確認するしかなく、手間が掛かり、不便であり、チェックミスによってプログラマブルコントローラが誤動作する虞れがある。
【００１８】
また、従来のＰＣ周辺装置では、シーケンスプログラム上に存在する連続デバイスを指定する命令や連続した領域を指すデバイス表記による連続デバイスがシーケンスプログラム上に存在する他の命令で単独使用されていないかについてのチェックについてチェックすることができないため、このチェックについては、シーケンスプログラムをオペレータが目視で確認するしかなく、手間が掛かり、不便であり、チェックミスによってプログラマブルコントローラが誤動作する虞れがある。
【００１９】
また、従来のＰＣ周辺装置では、シーケンスプログラム上に存在するインデックス修飾デバイスを指定する命令のインデックス修飾された結果がシーケンスプログラム上に存在する他の命令で使用されていないかについてチェックすることができないため、このチェックについては、シーケンスプログラムをオペレータが目視で確認するしかなく、手間が掛かり、不便であり、チェックミスによってプログラマブルコントローラが誤動作する虞れがある。
【００２０】
この発明は、上述の如き問題点を解消するためになされたもので、シーケンスプログラム上に存在する連続デバイスを指定する命令やデバイス表記により連続するデバイスがローカルデバイスとグローバルデバイスを混在使用していないか、デバイス表記にてローカルデバイスとグローバルデバイスが混在使用されていないか、またシーケンスプログラム上に存在する連続デバイスを指定する命令の連続デバイスがシーケンスプログラム上に存在する他の命令で単独使用されていないか、またシーケンスプログラム上に存在するインデックス修飾デバイスを指定する命令のインデックス修飾された結果がシーケンスプログラム上に存在する他の命令で使用されていないかについての各チェックをオペレータによるシーケンスプログラム自体の目視確認作業を必要とすることなく、自動的に行うことができるプログラマブルコントローラの周辺装置を提供することを目的としている。
【００２１】
【課題を解決するための手段】
この発明は、命令が記述された命令部と、前記命令部に記述された命令によって使用されかつデバイス名および番号によって定義されるデバイスが記述されるデバイス部とを夫々有する複数の命令リストを含むシーケンスプログラムを作成するプログラマブルコントローラの周辺装置において、デバイス名とシーケンスプログラムに割り付け可能な番号の範囲を示す点数との対応を示すデバイス点数情報を記憶する記憶手段と、連続した領域を指すデバイスを使用することを指定する所定の命令が記載された命令部を有する命令リストをシーケンスプログラムから順次抽出し、抽出した各命令リストの命令部およびデバイス部を解釈することにより各命令リストで使用しようとしている複数のデバイスを取得し、取得した複数のデバイスで使用される複数の番号が前記記憶手段に記憶されている対応するデバイス名の点数の範囲内であるか否かを検査する第１のデバイス範囲チェック手段と、連続した複数の番号をもつ複数のデバイスを使用することを指定するプログラム表記が記述されたデバイス部を有する命令リストをシーケンスプログラムから順次抽出し、抽出した各命令リストの命令部およびデバイス部を解釈することにより各命令リストで使用しようとしている複数のデバイスを取得し、取得した複数のデバイスで使用される複数の番号が前記記憶手段に記憶されている対応するデバイス名の点数の範囲内であるか否かを検査する第２のデバイス範囲チェック手段とを有していることを特徴とする。
【００２２】
【発明の実施の形態】
本発明をより詳細に説述するために、添付の図面に従ってこれを説明する。
【００２３】
第１図は、この発明によるプログラマブルコントローラの周辺装置のブロック図である。ＰＣ周辺装置１０は、ＣＰＵなどによる処理部１１と、主記憶部１２と、補助記憶部１３と、キー入力制御部１４と、画面制御部１５と、プリンタ制御部１６とを有し、キー入力制御部１４にはキーボード１７が、画面制御部１５にはＣＲＴなどによる表示器１８が、プリンタ制御部１６にはプリンタ１９がそれぞれ接続されている。
【００２４】
主記憶部１２は、システムプログラムエリア２０、シーケンスプログラムエリア２１、デバイス範囲情報エリア２２がそれぞれ割り付けられており、システムプログラムエリア２０にはシステムプログラムが、シーケンスプログラムエリア２１にはシーケンスプログラムが、デバイス範囲情報エリア２２にはデバイス範囲情報がそれぞれ格納される。
【００２５】
ＰＣ周辺装置１０は、従来のものと同様に、キーボード１７よりキー入力制御部１４を介してラダー表現、リスト表現によるシーケンスプログラムを主記憶部１２のシーケンスプログラムエリア２１に格納すると共に、デバイス範囲情報を主記憶部１２のデバイス範囲情報エリア２２に格納する。デバイス範囲情報は、第１９図に例示されているような従来のものと同様であってよい。
【００２６】
また、ＰＣ周辺装置１０は、各エリアに格納したシーケンスプログラムやデバイス範囲情報を画面制御部１５を介して表示器１８へ、プリンタ制御１６を介してプリンタ１９へ出力し、補助記憶部１３に格納する。
【００２７】
システムプログラムエリア２０に格納されるシステムプログラムは、シーケンスプログラムのプログラミングを行うプログラム作成モジュール３０と、デバイス範囲＆ローカル・グローバルデバイス混在使用チェック（同一属性チェック）モジュール３１と、第１のデバイス重複使用チェックモジュール３２と、第２のデバイス重複使用チェックモジュール３３とを具備している。
【００２８】
チェックするデバイス範囲＆ローカル・グローバルデバイス混在使用チェック（同一属性チェック）モジュール３１は、シーケンスプログラムに存在する連続デバイスを指定する命令や連続領域を指すデバイス表記を順次抽出し、これらによる連続領域のデバイスを展開し、連続領域のデバイスがデバイス範囲情報エリア２２に格納されているデバイス範囲情報で定義されているデバイスの範囲内であるか否かを検査し、連続領域のデバイスにローカルデバイスとグローバルデバイスとが混在していないかをデバイス範囲情報エリア２２のデバイス範囲情報を参照して検査する。
【００２９】
第１のデバイス重複使用チェックモジュール３２は、シーケンスプログラムに存在する連続デバイスを指定する命令や連続領域を指す表記を順次抽出し、これらによる連続領域を展開し、連続領域のデバイスと同一のシーケンスプログラムに存在する他の命令が使用しているデバイスとを比較し、デバイスの重複使用を検査する。
【００３０】
第２のデバイス重複使用チェックモジュール３３は、シーケンスプログラムに存在するインデックス修飾デバイスを指定する命令を順次抽出し、インデックス修飾された結果のデバイスと同一のシーケンスプログラムに存在する他の命令が使用しているデバイスとを比較し、デバイスの重複使用を検査する。
【００３１】
シーケンスプログラムにて連続デバイスを指定する命令や連続した領域を指すデバイス表記により連続するデバイスが、デバイス範囲情報により予め定義されたデバイス範囲内であるか否かのチェックと、連続するデバイスがローカルデバイスとグローバルデバイスを混在使用していないかをチェックする場合は、キーボード１７よりキー入力制御部１４を介してローカル・グローバルデバイス混在使用チェックの指示を出す。この指示により、処理部１１がシステムプログラフム中のデバイス範囲＆ローカル・グローバルデバイス混在使用チェックモジュール３１を実行する。
【００３２】
このデバイス範囲＆ローカル・グローバルデバイス混在使用チェックモジュール３１によるチェックルーチンを第２図を参照して説明する。
【００３３】
チェック指示が出されると、まず、シーケンスプログラムコピー元の参照先を先頭の命令に設定する処理を実行する（ステップＳ１）。これにより先頭の命令がコピー元の参照先に設定される。つぎに、シーケンスプログラムより１命令＋デバイスを作業領域にコピーする処理を実行し（ステップＳ２）、１命令＋デバイスを作業領域にコピーする。
【００３４】
つぎに、第１の作業領域にコピーした１命令＋デバイスが、連続した領域を指すデバイスを指定する命令あるいはデバイスの表記かを判断する処理を実行する（ステップＳ３）。連続した領域を指すデバイスを指定する命令あるいはデバイス表記のいずれでもない場合には、シーケンスプログラムコピー元の参照先をつぎの命令に設定する処理を実行し（ステップＳ４）、シーケンスプログラムコピー元の参照先をつぎの命令に設定し、シーケンスプログラムより１命令＋デバイスを作業領域にコピーする処理（ステップＳ２）から繰り返す。
【００３５】
これに対し、連続した領域を指すデバイスを指定する命令あるいはデバイス表記であれば、デバイスを取り出す処理を実行し（ステップＳ５）、１命令＋デバイスからデバイスだけを取り出す。
【００３６】
デバイスを取り出す処理（デバイス展開処理）を第３図を参照して説明する。まず１命令＋デバイスを命令に続く文字列から空白文字（スペース）をキーに空白文字を除く文字列群に分解する処理を行い（ステップＳ２１）、個々のデバイス部に分解する。つぎに、文字列の先頭文字が連続した領域を示すデバイスの表記、即ち“Ｋ”であるかを判断する処理を実行し（ステップＳ２２）、先頭文字が“Ｋ”であれば、“Ｋ”に続く数値を切り出す処理を実行し（ステップＳ２３）、連続したデバイスの範囲を取得（展開）する。
【００３７】
つぎに、“Ｋ”＋数値に続くデバイスが存在するかを判断する処理を実行し（ステップＳ２４）、デバイスが存在すれば“Ｋ”＋数値に続くデバイス数値を切り出す処理を実行し（ステップＳ２５）、連続したデバイスの先頭を取得する。
【００３８】
つぎに、文字列群すべてに対して切り出しを行ったか判断する処理を実行し（ステップＳ２６）、文字列群すべてに対して切り出しを行っていなければ、文字列の先頭文字は“Ｋ”であるかを判断する処理（ステップＳ２２）から繰り返す。
【００３９】
文字列群すべてに対して切り出しを行えば、連続した領域を指すデバイスを指定する命令（“ＢＭＯＶ”）かどうか判断する処理を実行し（ステップＳ２７）、連続した領域を指すデバイスを指定する命令であれば、命令に対応するデータテーブルより何番目の文字列群が連続領域を指すか取得する処理を実行し（ステップＳ２８）、連続領域を指すデバイスをデータテーブルより取得（展開）する。
【００４０】
つぎに、そのデバイスの文字列の先頭文字は“Ｋ”以外かを判断する処理を実行し（ステップＳ２９）、“Ｋ”以外であれば、デバイス値を切り出す処理を実行する（ステップＳ３０）。
【００４１】
以上で、デバイスを取り出す処理は終了し、デバイスを取り出す処理が終了すれば、つぎに（ここで第２図の説明に戻る）、上述のように切り出された連続領域のデバイスがデバイス範囲情報に定義されているデバイス範囲内であるか否かの判別を行う（ステップＳ６）。
【００４２】
連続領域のデバイスがデバイス範囲情報に定義されているデバイス範囲内でなければ、結果をプリントアウト用データと画面表示用データとして保存する処理を実行し（ステップＳ９）、プリントアウト用データおよび画面表示用データを作成、追加する。
【００４３】
連続領域のデバイスがデバイス範囲情報に定義されているデバイス範囲内であれば、つぎに、上述のように切り出された連続領域のデバイスを先頭に、デバイス範囲情報から領域内のデバイスの属性情報を取り出す処理を実行し（ステップＳ７）、ローカルデバイス範囲情報およびグローバルデバイス範囲情報を取得する。
【００４４】
つぎに、領域内で属性が同一であるか否かを判断する処理を実行し（ステップＳ８）、連続領域のデバイスとローカルデバイス範囲情報およびグローバルデバイス範囲情報を比較する。属性が同一でなければ、結果をプリントアウト用データと画面表示用データとして保存する処理を実行し（ステップＳ９）、プリントアウト用データおよび画面表示用データを作成、追加する。
【００４５】
つぎに、命令はまだあるかどうかを判断する処理を実行し（ステップＳ１０）、命令がまだあれば、シーケンスプログラムコピー元の参照先をつぎの命令に設定する処理（ステップＳ４）を実行し、シーケンスプログラムコピー元の参照先をつぎの命令に設定し、シーケンスプログラムより１命令＋デバイスを作業領域にコピーする処理（ステップＳ２）から繰り返す。
【００４６】
すべてのシーケンスプログラムのチェックが終了すれば、画面制御部１５を介してＣＲＴ１８へ、プリンタ制御部１６を介してプリンタ１９へ保存結果（チェック結果）を出力する（ステップＳ１１）。
【００４７】
出力結果には、デバイス範囲外のデバイスを指定する命令の存在する命令番号（リスト行）、その命令や、ローカルデバイスとグローバルデバイスが混在使用されているデバイス表記や連続した領域を指すデバイスを指定する命令の存在する命令番号（リスト行）、その命令、および混在使用箇所および関連するデバイス範囲情報（正規のローカルデバイス範囲とグローバルデバイス範囲）がある。
【００４８】
上述のチェックを第４図に示されているシーケンスプログラムについて行うと、３番目の命令“ＭＯＶ  Ｋ４Ｍ９２  Ｄ０”は、連続した領域を指すデバイスの表記“Ｋ”を含んでおり、この命令では、第５図に示されているように、命令部“ＭＯＶ”に続くデバイス部“Ｋ４Ｍ９２  Ｄ０”の先頭文字“Ｋ”に続く数値を切り出す処理として“４”を切り出し、連続したデバイスの範囲“Ｋ１”〜“Ｋ４”を取得する。
【００４９】
連続したデバイスの範囲“Ｋ１”〜“Ｋ４”には、デバイス“Ｍ９２”〜“Ｍ１０７”が割り付けられ、この一連のデバイスは、デバイス範囲情報で定義されているデバイス属性に対して、“Ｍ９２”〜“Ｍ９９”はローカルデバイスで、“Ｍ１００”〜“Ｍ１０７”はグローバデバイスであるから、３番目の命令における連続した領域を指すデバイスの表記は、ローカル・グローバデバイス混在使用と判定される。
【００５０】
また、７番目の命令“ＢＭＯＶ  Ｄ４５  Ｄ１０  Ｋ１０”は連続した領域を指す命令（転送命令）であり、その命令に従い、ここでは、第６図に示されているように、転送元の連続領域を指すデバイス“Ｄ４５”〜“Ｄ５４”を取得する。なお、転送元先の連続領域を指すデバイスについても、同様に取得するが、ここではエラーにならないので、省略する。
【００５１】
デバイス範囲情報で定義されているデバイス属性に対して、連続領域を指すデバイス“Ｄ４５”〜“Ｄ５４のうち、デバイス“Ｄ４５”〜“Ｄ４９”はローカルデバイスで、“Ｄ５０”〜“Ｍ５４”はグローバデバイスであるから、７番目の連続した領域を指す命令は、ローカル・グローバデバイス混在使用と判定される。
【００５２】
この結果、第７図に示されているようなチェック結果が画面表示される。
【００５３】
これにより、シーケンスプログラム上に存在する連続デバイスを指定する命令あるいは連続領域を指すデバイス表記による連続デバイスにローカルデバイスとグローバルデバイスとが混在使用されていないかのチェックが、シーケンスプログラム自体の目視確認作業を必要とすることなく、自動的に確実且つ迅速に行われ、チェックミスによるプログラマブルコントローラの誤動作を未然に回避できる。
【００５４】
シーケンスプログラムにて連続デバイスを指定する命令や連続した領域を指すデバイス表記により連続するデバイスがシーケンスプログラム上に存在する他の命令で単独使用されていないかをチェックする場合は、キーボード１７よりキー入力制御部１４を介して第１のデバイス重複使用チェックの指示を出す。この指示により、処理部１１がシステムプログラフム中の第１のデバイス重複使用チェックモジュール３２を実行する。
【００５５】
この第１のデバイス重複使用チェックモジュール３２によるチェックルーチンを第８図を参照して説明する。
【００５６】
チェック指示が出されると、まず、シーケンスプログラムコピー元の参照先を先頭の命令（重複使用デバイスの検査側の命令）に設定する処理を実行する（ステップＳ４１）。これにより先頭の命令がコピー元の参照先に設定される。つぎに、シーケンスプログラムより１命令＋デバイスを第１の作業領域にコピーする処理を実行し（ステップＳ４２）、１命令＋デバイスを第１の作業領域にコピーする。
【００５７】
つぎに、第１の作業領域にコピーした１命令＋デバイスが、連続した領域を指すデバイスを指定する命令あるいはデバイス表記かを判断する処理を実行する（ステップＳ４３）。連続した領域を指すデバイスを指定する命令あるいはデバイス表記のいずれでもない場合には、シーケンスプログラムコピー元の参照先を次の命令に設定する処理を実行し（ステップＳ４４）、シーケンスプログラムコピー元の参照先をつぎの命令に設定し、シーケンスプログラムより１命令＋デバイスを作業領域にコピーする処理（ステップＳ４２）から繰り返す。これは、重複使用デバイスの検査側の命令の走査を意味する。
【００５８】
これに対し、連続した領域を指すデバイスを指定する命令あるいはデバイス表記であれば、デバイスを取り出す処理を実行し（ステップＳ４５）、１命令＋デバイスからデバイスだけを取り出す。デバイスを取り出す処理（展開処理）は、ローカル・グローバルデバイス混在使用チェック時と同様に、第３図に示されている処理フローに従って行われるから、この説明は省略する。
【００５９】
つぎに、シーケンスプログラムコピー元の参照先を先頭の命令（重複使用デバイスの比較対照側の命令）に設定する処理を実行する（ステップＳ４６）。これにより先頭の命令がコピー元の参照先に設定される。つぎに、シーケンスプログラムより１命令＋デバイスを第２の作業領域にコピーする処理を実行する（ステップＳ４７）。
【００６０】
つぎに、第２の作業領域にコピーされた１命令＋デバイスよりデバイスを取り出す処理を実行する（ステップＳ４８）。
【００６１】
つぎに、第２作業領域の１命令＋デバイスより取り出したデバイスは、第１作業領域の１命令＋デバイスによる連続領域内にあるか否かの重複使用の判断を行う（ステップＳ４９）。
【００６２】
領域内にあれば、結果をプリントアウト用データおよび画面表示用データとして保存する処理を実行し（ステップＳ５０）、プリントアウト用データおよび画面表示用データを作成、追加する。
【００６３】
つぎに、重複使用デバイスの比較対照側の命令はまだあるかどうかを判断する処理を実行し（ステップＳ５１）、命令がまだあれば、シーケンスプログラムコピー元の参照先をつぎの命令に設定する処理を実行し（ステップＳ５２）、シーケンスプログラムコピー元の参照先をつぎの命令に設定し、シーケンスプログラムより１命令＋デバイスを第２の作業領域にコピーする処理（ステップＳ４７）から繰り返す。これは重複使用デバイスの比較対照側の命令の走査を意味する。
【００６４】
重複使用デバイスの比較対照側の命令が終了すると、つぎに、重複使用デバイスの検査側の命令はまだあるかどうかを判断する処理を実行し（ステップＳ５３）、命令がまだあれば、シーケンスプログラムコピー元の参照先をつぎの命令に設定する処理を実行し（ステップＳ４４）、シーケンスプログラムコピー元の参照先をつぎの命令に設定し、シーケンスプログラムより１命令＋デバイスを第１の作業領域にコピーする処理（ステップＳ４２）から繰り返す。
【００６５】
すべてのシーケンスプログラムのチェックが終了すれば、画面制御部１５を介してＣＲＴ１８へ、プリンタ制御部１６を介してプリンタ１９へ保存結果（チェック結果）を出力する（ステップＳ５４）。
【００６６】
出力結果には、重複デバイス、他の命令でデバイスが単独使用されているデバイス表記や連続した領域を指すデバイスを指定する命令が存在する番号（リスト行）、およびその命令がある。
【００６７】
上述のチェックを第９図に示されているシーケンスプログラムについて行うと、３番目の命令“ＭＯＶ  Ｋ４Ｍ９２  Ｄ１２”は、連続した領域を指すデバイスの表記“Ｋ”を含んでおり、この命令では、第１０図に示されているように、命令部“ＭＯＶ”に続くデバイス部“Ｋ４Ｍ９２  Ｄ１２”の先頭文字“Ｋ”に続く数値を切り出す処理として“４”を切り出し、連続したデバイスの範囲“Ｋ１”〜“Ｋ４”を取得する。連続したデバイスの範囲“Ｋ１”〜“Ｋ４”には、デバイス“Ｍ９２”〜“Ｍ１０７”が割り付けられる。
【００６８】
これに対し、５番目の命令“ＯＵＴ  Ｍ１００”に“Ｍ１００”が単独使用されているから、連続領域のデバイス“Ｍ９２”〜“Ｍ１０７”は、５番目の命令“ＯＵＴ  Ｍ１００”の“Ｍ１００”と重複していると判定される。
【００６９】
また、７番目の命令“ＢＭＯＶ  Ｄ４５  Ｄ１０  Ｋ１０”は連続した領域を指す命令（転送命令）であり、その命令に従い、ここでは第１１図に示されているように、ここでは転送先の連続領域を指すデバイス“Ｄ１０”〜“Ｄ１９”を取得する。
【００７０】
これに対し、３番目の命令“ＭＯＶ  Ｋ４Ｍ９２  Ｄ１２”に“Ｄ１２”が単独使用されているから、連続領域を指すデバイス“Ｄ１０”〜“Ｄ１９”は、３番目の命令“ＭＯＶ  Ｋ４Ｍ９２  Ｄ１２”の“Ｄ１２”と重複していると判定される。
【００７１】
この結果、第１２図に示されているようなチェック結果が画面表示される。
【００７２】
これにより、シーケンスプログラムにて連続デバイスを指定する命令や連続した領域を指すデバイス表記により連続するデバイスがシーケンスプログラム上に存在する他の命令で単独使用されていないかのチェックが、シーケンスプログラム自体の目視確認作業を必要とすることなく、自動的に確実且つ迅速に行われ、チェックミスによるプログラマブルコントローラの誤動作を未然に回避できる。
【００７３】
シーケンスプログラム上に存在するインデックス修飾デバイスを指定する命令のインデックス修飾された結果がシーケンスプログラム上に存在する他の命令で使用されていないかチェックする場合は、キーボード１７よりキー入力制御部１４を介して第２のデバイス重複使用チェックの指示を出す。加えて、インデックス修飾する範囲（インデックス修飾範囲Ｚ＝０〜１０）も入力する。この指示により、処理部１１がシステムプログラフム中の第２のデバイス重複使用チェックモジュール３３を実行する。
【００７４】
この第２のデバイス重複使用チェックモジュール３３によるチェックルーチンを第１３図を参照して説明する。
【００７５】
チェック指示が出されると、まず、シーケンスプログラムコピー元の参照先を先頭の命令（重複使用デバイスの検査側の命令）に設定する処理を実行する（ステップＳ６１）。これにより先頭の命令がコピー元の参照先に設定される。つぎに、シーケンスプログラムより１命令＋デバイスを第１の作業領域にコピーする処理を実行し（ステップＳ６２）、１命令＋デバイスを第１の作業領域にコピーする。
【００７６】
つぎに、第１の作業領域にコピーした１命令＋デバイスが、インデックス修飾されたデバイスを含む命令かを判断する処理を実行する（ステップＳ６３）。
【００７７】
インデックス修飾されたデバイスを含む命令でない場合には、シーケンスプログラムコピー元の参照先をつぎの命令に設定する処理を実行し（ステップＳ６４）、シーケンスプログラムコピー元の参照先をつぎの命令に設定し、シーケンスプログラムより１命令＋デバイスを作業領域にコピーする処理（ステップＳ６２）から繰り返す。
【００７８】
これに対し、インデックス修飾されたデバイスを含む命令であれば、検索デバイスの最小値と最大値を取り出す処理を実行し（ステップＳ６５）、１命令＋デバイスから検索デバイスの最小値と最大値を取り出す。
【００７９】
検索デバイスの最小値と最大値を取り出す処理を第１４図を参照して説明する。
【００８０】
まず、１命令＋デバイスに続く文字列から空白文字をキーに空白を除く文字列群に分解する処理を行い（ステップＳ８１）、デバイス部を個々のデバイスに分解する。
【００８１】
つぎに、分解したデバイスの文字列の最終文字は、インデックスデバイスの表記、即ち、“Ｚ”であるかを判断する処理を実行する（ステップＳ８２）。
【００８２】
“Ｚ”でなければ、文字列群全てに対して切り出しを行なったか判断する処理を実行し（ステップＳ８５）、すべてに対し実行済みであれば終了する。これに対し、一部に対してのみ実行済みであれば、文字列の最終文字が“Ｚ”であるかを判断する処理（ステップＳ８２）をデバイス部に含まれる個々の全てのデバイスに対して実行するよう繰り返す。
【００８３】
文字列の最終文字が“Ｚ”であれば、“Ｚ”の前のデバイス値を切り出し、これを検索デバイスの最小値にセットする（ステップＳ８３）。
【００８４】
つぎに、切り出したデバイス値にキーボード入力されたＺの最大値であるインデックス修飾する範囲（Ｚ＝１０）を加算し、検索デバイスの最大値にセットする（ステップＳ８４）。
【００８５】
つぎに、文字列群全てに対して切り出しを行なったかを判断する処理を実行し（ステップＳ８５）、文字列の最終文字が“Ｚ”であるかを判断する処理（ステップＳ８２）をデバイス部に含まれる個々の全てのデバイスに対して実行するよう繰り返す全てのデバイスに対して実行するまで繰り返す。
【００８６】
以上で、検索デバイスの最小値と最大値を取り出す処理は終了し、検索デバイスの最小値と最大値を取り出す処理が終了すれば、つぎに（ここで第１３図の説明に戻る）、シーケンスプログラムコピー元の参照先を先頭の命令（重複使用デバイスの比較対照側の命令）に設定する処理を実行する（ステップＳ６６）。これにより先頭の命令がコピー元の参照先に設定される。つぎに、シーケンスプログラムより１命令＋デバイスを第２の作業領域にコピーする処理を実行する（ステップＳ６７）。
【００８７】
つぎに、第２の作業領域にコピーされた１命令＋デバイスよりデバイスを取り出す処理を実行する（ステップＳ６８）。
【００８８】
つぎに、第２作業領域の１命令＋デバイスより取り出したデバイスは、第１作業領域の１命令＋デバイス（インデックス修飾されたデバイスを含む命令）によるデバイスの検索領域内にあるか否かの重複使用の判断を行う（ステップＳ６９）。
【００８９】
検索領域内にあれば、結果をプリントアウト用データおよび画面表示用データとして保存する処理を実行し（ステップＳ７０）、プリントアウト用データおよび画面表示用データを作成、追加する。
【００９０】
つぎに、重複使用デバイスの比較対照側の命令はまだあるかどうかを判断する処理を実行し（ステップＳ７１）、命令がまだあれば、シーケンスプログラムコピー元の参照先をつぎの命令に設定する処理を実行し（ステップＳ７２）、シーケンスプログラムコピー元の参照先をつぎの命令に設定し、シーケンスプログラムより１命令＋デバイスを第２の作業領域にコピーする処理（ステップＳ６７）から繰り返す。
【００９１】
重複使用デバイスの比較対照側の命令が終了すると、つぎに、重複使用デバイスの検査側の命令はまだあるかどうかを判断する処理を実行し（ステップＳ７３）、命令がまだあれば、シーケンスプログラムコピー元の参照先をつぎの命令に設定する処理を実行し（ステップＳ６４）、シーケンスプログラムコピー元の参照先をつぎの命令に設定し、シーケンスプログラムより１命令＋デバイスを第１の作業領域にコピーする処理（ステップＳ６２）から繰り返す。
【００９２】
すべてのシーケンスプログラムのチェックが終了すれば、画面制御部１５を介してＣＲＴ１８へ、プリンタ制御部１６を介してプリンタ１９へ保存結果（チェック結果）を出力する（ステップＳ７４）。
【００９３】
出力結果には、インデックス修飾されたデバイスと、そのインデックス修飾結果と重複する命令、およびその命令が出力される。
【００９４】
上述のチェックを第１５図に示されているシーケンスプログラムについて行うと、１番目の命令“ＭＯＶ  Ｄ１０Ｚ  Ｄ１００”は、インデックス修飾デバイスを指定する命令であり、第１６図に示されているように、検索デバイスの最小値“Ｄ１０”と最大値“Ｄ１９”を取り出し、デバイスの検索範囲“Ｄ１０”〜“Ｄ１９”を取得する。
【００９５】
これに対し、３番目の命令“ＭＯＶ  Ｄ１０  Ｄ１２０”に“Ｄ１０”が使用され、また５番目の命令“ＭＯＶ  Ｄ１９  Ｄ２１９”に“Ｄ１９”が使用されているから、“ＭＯＶ  Ｄ１０Ｚ  Ｄ１００”のインデックス修飾された結果は、３番目と５番目の命令で使用しているデバイスと重複使用であると判定される。
【００９６】
９番目の命令“ＭＯＶ  Ｗ２０Ｚ  Ｗ２００”についても同様に行われ、インデックス修飾された結果は、１１番目の命令で使用しているデバイスと重複使用であると判定される。
【００９７】
この結果、第１７図に示されているようなチェック結果が画面表示される。
これにより、シーケンスプログラム上に存在するインデックス修飾デバイスを指定する命令のインデックス修飾された結果がシーケンスプログラム上に存在する他の命令で使用されていないかについてのチェックのチェックが、シーケンスプログラム自体の目視確認作業を必要とすることなく、自動的に確実且つ迅速に行われ、チェックミスによるプログラマブルコントローラの誤動作を未然に回避できる。
【００９８】
【産業上の利用可能性】
機械設備の制御を行うプログラマブルコントローラのためのシーケンスプログラムを作成する周辺装置で、シーケンスプログラムを自動チェックするものとして利用できる。
【００９９】
【発明の効果】
この発明によれば、連続した領域を指すデバイスを使用することを指定する所定の命令が記載された命令部を有する命令リストで使用される複数のデバイスと、連続した複数の番号をもつ複数のデバイスを使用することを指定するプログラム表記が記述されたデバイス部を有する命令リストで使用される複数のデバイスとが、定義されたデバイス番号の範囲内にあるか否かのチェックが、シーケンスプログラム自体の目視確認作業を必要とすることなく、自動的に確実且つ迅速に行われ、チェックミスによるプログラマブルコントローラの誤動作を未然に回避できる。
【図面の簡単な説明】
【図１】  第１図は、この発明によるプログラマブルコントローラの周辺装置の一つの実施の形態を示すブロック図である。
【図２】  第２図は、この発明によるプログラマブルコントローラの周辺装置におけるデバイス範囲＆ローカル・グローバルデバイス混在使用チェックの処理フローを示すフローチャートである。
【図３】  第３図は、この発明によるプログラマブルコントローラの周辺装置におけるデバイスを取り出す処理の処理フローを示すフローチャートである。
【図４】  第４図は、ローカル・グローバルデバイス混在使用チェックを実施するシーケンスプログラムの実例を示すラダー回路およびリスト表現図である。
【図５】  第５図は、ローカル・グローバルデバイス混在使用チェックの実例を示す説明図である。
【図６】  第６図は、ローカル・グローバルデバイス混在使用チェックの実例を示す説明図である。
【図７】  第７図は、ローカル・グローバルデバイス混在使用チェック結果の画面表示例を示す説明図である。
【図８】  第８図は、この発明によるプログラマブルコントローラの周辺装置における第１のデバイス重複使用チェックの処理フローを示すフローチャートである。
【図９】  第９図は、第１のデバイス重複使用チェックを実施するシーケンスプログラムの実例を示すラダー回路およびリスト表現図である。
【図１０】  第１０図は、第１のデバイス重複使用チェックの実例を示す説明図である。
【図１１】  第１１図は、第１のデバイス重複使用チェックの実例を示す説明図である。
【図１２】  第１２図は、第１のデバイス重複使用チェック結果の画面表示例を示す説明図である。
【図１３】  第１３図は、この発明によるプログラマブルコントローラの周辺装置における第２のデバイス重複使用チェックの処理フローを示すフローチャートである。
【図１４】  第１４図は、この発明によるプログラマブルコントローラの周辺装置における検索デバイスの最小値・最大値を取り出す処理の処理フローを示すフローチャートである。
【図１５】  第１５図は第２のデバイス重複使用チェックを実施するシーケンスプログラムの実例を示すラダー回路およびリスト表現図である。
【図１６】  第１６図は、第２のデバイス重複使用チェックの実例を示す説明図である。
【図１７】  第１７図は、第２のデバイス重複使用チェック結果の画面表示例を示す説明図である。
【図１８】  第１８図は、従来のプログラマブルコントローラの周辺装置を示すブロック図である。
【図１９】  第１９図は、デバイス範囲情報の例を示す説明図である。
【図２０】  第２０図は、従来のプログラマブルコントローラの周辺装置におけるデバイスチェックのフローチャートである。
【図２１】  第２１図は、従来のデバイスチェックを実施するシーケンスプログラムの実例を示すラダー回路およびリスト表現図である。
【図２２】  第２２図は、従来のデバイスチェックの実例を示す説明図である。
【図２３】  第２３図は、従来のデバイスチェック結果の画面表示例を示す説明図である。
【符号の説明】
１０  ＰＣ周辺装置
１１  処理部
１２  主記憶部
１３  補助記憶部
１４  キー入力制御部
１５  画面制御部
１６  プリンタ制御部
１８  表示器
２２  デバイス範囲情報エリア２２
３０  プログラム作成モジュール
３１  デバイス範囲＆ローカル・グローバルデバイス混在使用チェックモジュール
３２  第１のデバイス重複使用チェックモジュール
３３  第２のデバイス重複使用チェックモジュール
【図１】
0004001461.tif 000002
【図２】
0004001461.tif 000003
【図３】
0004001461.tif 000004
【図４】
0004001461.tif 000005
【図５】
0004001461.tif 000006
【図６】
0004001461.tif 000007
【図７】
0004001461.tif 000008
【図８】
0004001461.tif 000009
【図９】
0004001461.tif 000010
【図１０】
0004001461.tif 000011
【図１１】
0004001461.tif 000012
【図１２】
0004001461.tif 000013
【図１３】
0004001461.tif 000014
【図１４】
0004001461.tif 000015
【図１５】
0004001461.tif 000016
【図１６】
0004001461.tif 000017
【図１７】
0004001461.tif 000018
【図１８】
0004001461.tif 000019
【図１９】
0004001461.tif 000020
【図２０】
0004001461.tif 000021
【図２１】
0004001461.tif 000022
【図２２】
0004001461.tif 000023
【図２３】
0004001461.tif 000024