(57)【要約】【課題】ラダープログラムごとにアクセス可能な信号アドレスをチェックすることが可能なプログラマブルコントローラを提供すること。【解決手段】本発明のプログラマブルコントローラ１は、それぞれのラダープログラムから使用アドレス設定テーブルを抽出する信号アドレス設定抽出手段１００と、信号アドレス設定抽出部１００が抽出した使用アドレス設定テーブルに基づいて、それぞれのラダープログラムの間で信号の書き込み先として使用する信号アドレスの範囲が重複しているか否かを判定する信号アドレス重複判定部１１０と、信号アドレス重複判定部１１０による判定の結果、それぞれのラダープログラムの間で信号の書き込み先として使用する信号アドレスの範囲が重複していないと判定された場合に、複数のラダープログラムを実行するラダープログラム実行部１２０と、を備える。【選択図】図１１
2018120416.tif 000002
【特許請求の範囲】
【請求項１】
複数のラダープログラムを実行可能なプログラマブルコントローラにおいて、
それぞれの前記ラダープログラムには、該ラダープログラムが信号の書き込み先として使用する信号アドレスの範囲が定義された使用アドレス設定テーブルが埋め込まれており、
それぞれの前記ラダープログラムから使用アドレス設定テーブルを抽出する信号アドレス設定抽出手段と、
前記信号アドレス設定抽出手段が抽出した使用アドレス設定テーブルに基づいて、それぞれの前記ラダープログラムの間で信号の書き込み先として使用する信号アドレスの範囲が重複しているか否かを判定する信号アドレス重複判定部と、
前記信号アドレス重複判定部による判定の結果、それぞれの前記ラダープログラムの間で信号の書き込み先として使用する信号アドレスの範囲が重複していないと判定された場合に、複数の前記ラダープログラムを実行するラダープログラム実行部と、
を備えたプログラマブルコントローラ。
【請求項２】
請求項１に記載のプログラマブルコントローラで動作するラダープログラムを作成するプログラミング装置であって、
前記ラダープログラムの編集するプログラム編集部と、
前記ラダープログラムが信号の書き込み先として使用する信号アドレスが定義された信号アドレス設定情報を参照して、前記プログラム編集部により編集された編集内容が前記信号アドレス設定情報に定義された信号の書き込み先として使用する信号アドレスと矛盾していないか否かをチェックする信号アドレスチェック部と、
を備えたプログラミング装置。
【請求項３】
請求項１に記載のプログラマブルコントローラで動作するラダープログラムを作成するプログラミング装置であって、
前記ラダープログラムが信号の書き込み先として使用する信号アドレスが定義された信号アドレス設定情報に基づいて、使用アドレス設定テーブルを作成する使用アドレス設定テーブル作成部と、
前記ラダープログラムをコンパイルして実行形式ラダープログラムを作成し、前記実行形式ラダープログラムに前記使用アドレス設定テーブルを埋め込む実行形式オブジェクト作成部と、を備えたプログラミング装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルコントローラに関し、特にラダープログラムごとにアクセス可能な信号アドレスをチェックすることが可能なプログラマブルコントローラに関する。
【背景技術】
【０００２】
ＣＮＣ（数値制御装置）などで使用されるプログラマブルコントローラ（プログラマブルロジックコントローラ、ＰＬＣ）では、加工を行う機械の本体部や、加工に用いられる工具を管理する工具管理機構部、ローダなどの周辺機器部などの制御対象ごとにラダープログラムを複数のプログラムに分けて作成し、これらラダープログラムを並列して同時に動作させることがある。
プログラマブルコントローラ上で動作するラダープログラムが読み書きする信号アドレス空間のタイプにより１つのＣＮＣ上で複数のラダープログラムを動作する構成は以下の２種類ある。
（１）ＣＮＣとプログラマブルコントローラの複数のラダープログラムが１つの信号アドレス空間を共有して使用する構成（図１７、分割ラダー構成）
（２）プログラマブルコントローラで実行されるラダープログラムごとに独立した信号アドレス空間を配置する構成（図１８、多系統プログラマブルコントローラ構成）
【０００３】
分割ラダー構成としたプログラマブルコントローラでは、複数のラダープログラムから同じ信号アドレスに対して書き込みを行なうと誤動作の要因となる。この問題を防止する従来技術として、各々のラダープログラム内で使用している信号アドレスのクロスレファレンスデータを検出して本検出結果から同一アドレスに対する書き込みをチェックして表示する手段が提案されている（例えば、特許文献１）。
【０００４】
一方で、多系統プログラマブルコントローラ構成としたプログラマブルコントローラでは、各々のラダープログラムは自身のラダープログラム以外の信号アドレス空間に対して信号を書き込むことはできず、又、自身のラダープログラム以外の信号アドレス空間から信号を読み込むこともできない。そのため複数のラダープログラムから同じ信号アドレスへの書込みは行なわれないが、他のラダープログラムとの間で信号の授受ができず、ラダープログラム間での連携した動作ができなくなる。多系統プログラマブルコントローラ構成をとる場合にラダープログラム間での連携した動作を可能とするためには複数のラダープログラムで共通に読み書き可能な信号アドレス空間が用意する必要があるが、共通の信号アドレス空間は領域サイズが十分に用意されているとは限らず、また、分割ラダー構成のプログラマブルコントローラと同様に複数のラダープログラムからの重複書き込みを防止する手段が必要になる。このような問題に対応する従来技術として、自身のラダープログラムの信号アドレス空間の一部領域を他のラダープログラムでも参照可能とし、他のラダープログラム向けに公開する信号アドレス領域を共有メモリ領域として設定する手段が提案されている（例えば、特許文献２）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−３５８１０２号公報
【特許文献２】特開２００７−２４１５７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
分割ラダー構成のプログラマブルコントローラ上で動作するラダープログラムを作成する場合、図１９に示すように、通常はそれぞれのラダープログラムが書き込んで使用するアドレスは排他的になるように予め範囲を決めておき、各ラダーの作成時には決められた信号アドレスの範囲でプログラミングする。しかしながら、図２０に示すように、プログラミングの間違いによって他のラダープログラムが書き込んでいるアドレスへ重複して書き込んでしまうと機械の誤動作の原因となるため、こういった重複書き込みを防止する必要があるが、そのためにはラダーの作成者が各々のラダープログラムで書き込んでいるアドレスをチェックする作業が必要となり、大きな手間がかかる。また、プログラマブルコントローラにラダープログラムの解析機能を実装し、該機能を用いてラダープログラムの実行時に各ラダーの内容を解析して、重複した書き込みを検出することも原理的には可能だが、ラダープログラムが大きくなるとチェックしなければならないデータが複雑で膨大になり、ラダープログラムの実行システムへの負担が非常に大きくなるという問題がある。
【０００７】
一方で、多系統プログラマブルコントローラ構成のプログラマブルコントローラ上で動作するラダープログラムを作成する場合、図２１に示すように、各ラダープログラムごとに信号アドレス空間が独立しているため、例え信号アドレスの表記が同じであってもその実体は異なる信号アドレス空間に配置されるので、特に書き込み先の信号アドレスに注意を払わなくとも他のラダープログラムの動作に影響することはない。しかしながら、他のラダープログラムの信号アドレス空間は直接読み書きできないため、通常の方法ではプログラム間で情報を直接共有することが出来ない。例えば図２２に示すように、ＣＮＣの状態などは特定のラダープログラム（ＰＬＣラダー１）でのみ扱われ、他のラダープログラム（ＰＬＣラダー２）からは直接読み書きできないという問題がある。
【０００８】
図２２に示す構成のプログラマブルコントローラにおいて、ＣＮＣの状態（アラーム状態やモード状態など）を他のラダープログラム（ＰＬＣラダー２）でも参照するためには、他のラダープログラム（ＰＬＣラダー２）はＣＮＣを制御するラダープログラム（ＰＬＣラダー１）との間で情報をやり取りする必要があり、そういった用途のために、図２３に示すように各ラダープログラムで共通に読み書き可能なアドレス空間を用意することは可能である。このような構成を取る場合、ＣＮＣを制御するラダープログラム（ＰＬＣラダー１）は、共通のアドレス空間に必要な情報を書き込むラダーを追加し、他のラダープログラムではその共通のアドレス空間の情報をラダーで参照する。しかしながら、この構成を取る場合、ＣＮＣを制御するラダープログラム（ＰＬＣラダー１）側にラダーを追加する必要があるため、設計のコストがかかり、ラダープログラムの容量、使用するアドレス（メモリ）の容量、パフォーマンスの面でも不利になる。また、共通アドレス空間の扱いに関して、排他的に使用することを保証する必要があるため、分割ラダー構成の場合と同様の課題も発生する。
【０００９】
そこで本発明の目的は、ラダープログラムごとにアクセス可能な信号アドレスをチェックすることが可能なプログラマブルコントローラを提供することである。
【課題を解決するための手段】
【００１０】
本発明では、ラダープログラムがアクセス（書き込み／読み出し）する信号アドレス領域にかかる情報を使用アドレス設定テーブルとして該ラダープログラムの実行形式オブジェクトに埋め込み、複数のラダープログラムをプログラマブルコントローラ上で実行する際に、それぞれのラダープログラムから抽出した使用アドレス設定テーブルを用いてそれぞれのラダープログラムの書き込み先の信号アドレス領域が重複していないかどうかをチェックする機能をプログラマブルコントローラに実装することにより、上記課題を解決する。
【００１１】
そして、本発明の請求項１に係る発明は、制御装置である。
【発明の効果】
【００１２】
本発明により、複数のラダープログラムを実行する際に、システムに対して大きな負荷を掛けることなくそれぞれのラダープログラムが書き込みする信号アドレスの重複チェックを行うことがきるようになり、重複書き込みによる誤動作を防止することができるようになる。
【図面の簡単な説明】
【００１３】
【図１】複数のラダープログラムの間で信号アドレス空間を共有する構成を取る場合における本発明のラダープログラムによる信号アドレス空間に対するアクセス管理方法を説明する図である。
【図２】プログラマブルコントローラで実行されるラダープログラムごとに独立した信号アドレス空間を配置する多系統プログラマブルコントローラ構成を取る場合における本発明のラダープログラムによる信号アドレス空間に対するアクセス管理方法を説明する図である。
【図３】本発明の一実施形態によるプログラマブルコントローラにおいて、ラダープログラムから「使用アドレス設定テーブル」及び「アドレス共有情報」を抽出する図である。
【図４】ラダープログラムに埋め込まれている使用アドレス設定テーブルとアドレス共有情報の例を示す図である。
【図５】書き込み範囲情報の例を示す図である。
【図６】本発明の一実施形態によるプログラマブルコントローラ上でラダープログラム実行開始時に行われる処理の全体概略的なフローチャートである。
【図７】本発明の一実施形態によるプログラマブルコントローラによる書き込み範囲情報の作成処理の概略的なフローチャートである。
【図８】本発明の一実施形態によるプログラマブルコントローラによる書き込み範囲情報のチェック処理の概略的なフローチャートである。
【図９】本発明の一実施形態によるプログラマブルコントローラによるアドレス範囲の重複チェック処理の概略的なフローチャートである。
【図１０】本発明の一実施形態によるプログラマブルコントローラの概略的なハードウェア構成図である。
【図１１】本発明の一実施形態によるプログラマブルコントローラの概略的な機能ブロック図である。
【図１２】本発明の一実施形態によるプログラマブルコントローラにおいて、ラダープログラムを作成・編集してコンパイルするまでの動作を示す図である。
【図１３】本発明の一実施形態によるプログラマブルコントローラにおいて、実行形式のラダープログラムである分割ラダー１、分割ラダー２をプログラマブルコントローラ上で実行する際の動作を示す図である。
【図１４】本発明の一実施形態によるプログラマブルコントローラにおいて、ラダープログラムを作成・編集してコンパイルするまでの動作を示す図である。
【図１５】本発明の一実施形態によるプログラマブルコントローラにおいて、実行形式のラダープログラムであるＰＬＣ１用ラダー、ＰＬＣ２用ラダーを実行する際の信号アドレスのマッピング動作を示す図である。
【図１６】本発明の一実施形態によるプログラマブルコントローラにおいて、実行形式のラダープログラムであるＰＬＣ１用ラダー、ＰＬＣ２用ラダーを実行する際の動作を示す図である。
【図１７】従来技術によるプログラマブルコントローラの分割ラダー構成について説明する図である。
【図１８】従来技術によるプログラマブルコントローラの多系統プログラマブルコントローラ構成について説明する図である。
【図１９】従来技術による分割ラダー構成でのラダープログラムの作成・編集方法について説明する図である。
【図２０】従来技術による分割ラダー構成でのラダープログラムの作成・編集方法の問題点について説明する図である。
【図２１】従来技術による多系統プログラマブルコントローラ構成でのラダープログラムの実行方法について説明する図である。
【図２２】従来技術による多系統プログラマブルコントローラ構成でのラダープログラムの実行方法の問題点について説明する図である。
【図２３】従来技術による多系統プログラマブルコントローラ構成でのラダープログラムの改良された実行方法について説明する図である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施形態を図面と共に説明する。はじめに、図１，２を用いて本発明のラダープログラムによる信号アドレス空間に対するアクセス管理方法の概要について説明する。
図１は、複数のラダープログラムの間で信号アドレス空間を共有する構成を取る場合における本発明のラダープログラムによる信号アドレス空間に対するアクセス管理方法を説明する図である。
本発明の一実施形態によるアクセス管理方法では、複数のラダープログラムの間で信号アドレス空間を共有する分割ラダー構成を取る場合、各信号アドレス空間の一部領域についてアクセス可能なラダープログラムを定義する信号アドレス設定情報をあらかじめ作成するようにし、各ラダープログラムの編集時又はコンパイル時（実行形式オブジェクトの作成時）には、各ラダープログラムごとに、該ラダープログラムが読み書きする信号アドレス空間の範囲が、信号アドレス設定情報に定義された書き込み範囲と矛盾がないことを確認する。そして、各ラダープログラムのコンパイル時（ラダープログラムの実行形式オブジェクトの作成時）に、信号アドレス設定情報に定義された自身のラダープログラムに関連する書込み範囲の情報を使用アドレス設定テーブルとして実行形式オブジェクトに含めるようにする。
【００１５】
その後、プログラマブルコントローラはラダープログラムの実行に先駆けて、実行対象となる各ラダープログラムの実行形式オブジェクトから使用アドレス設定テーブルを取り出し、使用アドレス設定テーブルを相互に付き合わせることにより同じアドレス空間に関する書き込み範囲の情報にラダープログラム間で重なりがないかチェックする。そして、重なりがなければ重複書き込みはないものと判断してラダープログラムの実行を開始し、重なりが検出された場合には重複書き込みの可能性があるため、ラダープログラムは実行せずにアラーム状態にする。
【００１６】
図２は、プログラマブルコントローラで実行されるラダープログラムごとに独立した信号アドレス空間を配置する多系統プログラマブルコントローラ構成を取る場合における本発明のラダープログラムによる信号アドレス空間に対するアクセス管理方法を説明する図である。
本発明の一実施形態によるアクセス管理方法では、プログラマブルコントローラで実行されるラダープログラムごとに独立した信号アドレス空間を配置する多系統プログラマブルコントローラ構成を取る場合、各ラダープログラムについて、他のラダープログラムに属する信号アドレス空間の一部領域を共有することを信号アドレス設定情報に定義できるようにする。その際、共有する信号アドレス領域についてアクセス範囲を定義できるようにする。そして、本発明の一実施形態によるアクセス管理方法では、各ラダープログラムのコンパイル時（ラダープログラムの実行形式オブジェクトの作成時）に、信号アドレス設定情報に含まれる自ラダープログラムに関連する信号アドレス領域の共有に係る情報をアドレス共有情報として実行形式オブジェクトに含めるようにする。
【００１７】
その後、プログラマブルコントローラはラダープログラムの実行に先駆けて、実行対象となる各ラダープログラムの実行形式オブジェクトからアドレス共有情報を取り出し、各ラダープログラムの実行時に参照されるアドレス領域のマッピングをアドレス共有情報に基づいて変更して、アドレス共有情報の設定どおりに共有されたアドレス領域を参照できるようにする。また、プログラマブルコントローラはラダープログラムの実行に先駆けて、同じアドレス空間に関する書き込み範囲の情報にラダープログラム間で重なりがないかをアドレス共有情報も加味してチェックする。
【００１８】
以下では、図３〜５を用いて本発明の一実施形態によるプログラマブルコントローラの概略的な動作について説明する。以下の説明では、プログラマブルコントローラが２つの系統ＰＬＣ１、ＰＬＣ２を有しており（多系統プログラマブルコントローラ構成）、ＰＬＣ１では２つのラダープログラムを動作させ（分割ラダー構成）、ＰＬＣ２では１つのラダープログラムを動作させた場合の例を説明している。
【００１９】
本発明の一実施形態によるプログラマブルコントローラは、ラダープログラムを実行するに先立って、図３に示すように、各ラダープログラムに格納される「使用アドレス設定テーブル」及び「アドレス共有情報」を抽出する。
図４は、ＰＬＣ１用分割ラダー１、ＰＬＣ１用分割ラダー２、ＰＬＣ２用ラダーにそれぞれ埋め込まれている使用アドレス設定テーブルとアドレス共有情報の例を示している。図４に示す例では、ＰＬＣ１用分割ラダー１、ＰＬＣ１用分割ラダー２にはアドレス共有情報は埋め込まれておらず、また、ＰＬＣ２用ラダーには、ＰＬＣ２用ラダーからＰＬＣ１のＥアドレスとＧアドレスを参照する設定が為されたアドレス共有情報が埋め込まれている。
【００２０】
本発明の一実施形態によるプログラマブルコントローラは、各ラダープログラムから抽出した使用アドレス設定テーブルに基づいて書き込み範囲情報を作成する。図５は、書き込み範囲情報の例を示している。書き込み範囲情報は、各ラダープログラムから抽出された「使用アドレス設定テーブル」及び「アドレス共有情報」に基づいて作成される、アクセス元のラダープログラムと、アクセス先の信号アドレス空間及びアクセス先のアドレス範囲との関係を総括した情報である。図５に示すように、ラダープログラムに共有アドレス情報が埋め込まれている場合には、プログラマブルコントローラは、該ラダープログラムの使用アドレス設定テーブルに設定される信号アドレス空間とアドレス範囲を、共有アドレス情報の設定に基づいてマッピング（変換）する。
そして、本発明の一実施形態によるプログラマブルコントローラは、書き込み範囲情報に基づいて同一の信号アドレス空間のアドレス範囲に対して、２以上のラダープログラムから書込みが行われないかをチェックし、そのチェック結果に基づいてラダープログラムを実行開始するか否かを判定する。
【００２１】
次に、図６〜９を用いて本発明の一実施形態によるプログラマブルコントローラのより具体的な動作（処理）について説明する。
図６は、本発明の一実施形態によるプログラマブルコントローラ上でラダープログラム実行開始時に行われる処理の全体概略的なフローチャートである。
●［ステップＳＡ０１］プログラマブルコントローラは、実行対象となる複数のラダープログラムの内で最初のラダープログラムを選択する。
●［ステップＳＡ０２］プログラマブルコントローラは、選択したラダープログラムの「使用アドレス設定テーブル」を抽出する。
●［ステップＳＡ０３］プログラマブルコントローラは、選択したラダープログラムの「アドレス共有情報」を抽出する。
●［ステップＳＡ０４］プログラマブルコントローラは、抽出した「使用アドレス設定テーブル」及び「アドレス共有情報」に基づいて「書き込み範囲情報」の作成処理を実行する。
【００２２】
●［ステップＳＡ０５］プログラマブルコントローラは、まだ「使用アドレス設定テーブル」及び「アドレス共有情報」を抽出していないラダープログラムがあるか否かを判定する。次のラダープログラムがある場合にはステップＳＡ０６へ処理を移行し、無い場合にはステップＳＡ０７へ処理を移行する。
●［ステップＳＡ０６］プログラマブルコントローラは、次のラダープログラムを選択してステップＳＡ０２へ処理を移行する。
●［ステップＳＡ０７］プログラマブルコントローラは、作成した「書き込み範囲情報」のチェック処理（図６のステップＳＡ０４）を実行する。
【００２３】
図７は、本発明の一実施形態によるプログラマブルコントローラによる書き込み範囲情報の作成処理（図６のステップＳＡ０４）の概略的なフローチャートである。
●［ステップＳＢ０１］プログラマブルコントローラは、抽出した「使用アドレス設定テーブル」から最初のデータを取得する。
●［ステップＳＢ０２］プログラマブルコントローラは、取得データの信号アドレスをアドレス共有情報から検索する。
●［ステップＳＢ０３］プログラマブルコントローラは、ステップＳＢ０２で検索した結果、取得データの信号アドレスに該当する信号アドレスがアドレス共有情報に含まれているか否かを判定する。含まれていない場合にはステップＳＢ０４へ処理を移行し、含まれている場合にはステップＳＢ０５へ処理を移行する。
【００２４】
●［ステップＳＢ０４］プログラマブルコントローラは、ラダープログラムの系統を該ラダープログラムのアクセス先として信号アドレス空間として取得データに追加する。
●［ステップＳＢ０５］プログラマブルコントローラは、アドレス共有情報に従って、取得データの信号アドレスを共有先アドレスに変換し、共有先アドレス空間の情報を取得データに追加する。
●［ステップＳＢ０６］プログラマブルコントローラは、「書き込み範囲情報」に対して取得データと信号アドレス空間の情報を追加する。
【００２５】
●［ステップＳＢ０７］プログラマブルコントローラは、「使用アドレス設定テーブル」に次にデータがあるか否かを判定する。次のデータが無い場合には本処理を終了し、次のデータがある場合にはステップＳＢ０８へと処理を移行する。
●［ステップＳＢ０８］プログラマブルコントローラは、「使用アドレス設定テーブル」から次のデータを取得してステップＳＢ０２へと処理を移行する。
【００２６】
図８は、本発明の一実施形態によるプログラマブルコントローラによる書き込み範囲情報のチェック処理（図６のステップＳＡ０７）の概略的なフローチャートである。
●［ステップＳＣ０１］プログラマブルコントローラは、「書き込み範囲情報」の最初のデータを取得する。
●［ステップＳＣ０２］プログラマブルコントローラは、取得したデータをチェック元データとしたアドレス範囲の重複チェック処理を実行する。
●［ステップＳＣ０３］プログラマブルコントローラは、ステップＳＣ０２で実行したチェック処理の結果、アドレス範囲に重複があったか否かを判定する。アドレス範囲に重複があった場合にはステップＳＣ０４へ処理を移行し、重複が無かった場合にはステップＳＣ０６へ処理を移行する。
【００２７】
●［ステップＳＣ０４］プログラマブルコントローラは、信号アドレスが重複している旨アラームで通知する。アラームは表示や音、ランプで通知するようにしてもよく、表示で通知する場合には重複している信号アドレス空間と信号アドレス領域、重複しているラダープログラムに係る情報を制御装置が備える表示装置へと表示する。
●［ステップＳＣ０５］プログラマブルコントローラは、ラダープログラムの実行を中止して、本処理を終了する。
【００２８】
●［ステップＳＣ０６］プログラマブルコントローラは、「書き込み範囲情報」に次のデータがあるか否かを判定する。次のデータがある場合にはステップＳＣ０７へ処理を移行し、次のデータが無い場合にはステップＳＣ０８へと処理を移行する。
●［ステップＳＣ０７］プログラマブルコントローラは、プログラマブルコントローラは、「書き込み範囲情報」から次のデータを取得してステップＳＣ０２へ処理を移行する。
●［ステップＳＣ０８］プログラマブルコントローラは、ラダープログラムの実行を開始して、本処理を終了する。
【００２９】
図９は、本発明の一実施形態によるプログラマブルコントローラによるアドレス範囲の重複チェック処理（図８のステップＳＣ０２）の概略的なフローチャートである。
●［ステップＳＤ０１］プログラマブルコントローラは、「書き込み範囲情報」からチェック元データの次のデータをチェック対象データとして選出する。
●［ステップＳＤ０２］プログラマブルコントローラは、チェック元データとチェック対象データとについて、お互いの「アドレス空間」と、「アドレス範囲」のアドレス種別（アドレスの先頭文字で表されるアドレスの種類。例えば「Ｇ１０００」では「Ｇ」がアドレス種別となり、ＣＮＣのインタフェースアドレスを意味している）とをそれぞれ比較する。
●［ステップＳＤ０３］プログラマブルコントローラは、ステップＳＤ０２での比較処理の結果、「アドレス空間」と、「アドレス範囲」のアドレス種別との両方が一致したかどうかを判定する。両方とも一致した場合にはステップＳＤ０４へ処理を移行し、いずれか又は両方が一致しなかった場合にはステップＳＤ０７へ処理を移行する。
【００３０】
●［ステップＳＤ０４］プログラマブルコントローラは、チェック元データとチェック対象データの「アドレス範囲」を比較する。
●［ステップＳＤ０５］プログラマブルコントローラは、ステップＳＤ０４の比較処理の結果、「アドレス範囲」が重複しているか否かを判定する。アドレス範囲が重複している場合にはステップＳＤ０６へ処理を移行し、重複していない場合にはステップＳＤ０７へ処理を移行する。
●［ステップＳＤ０６］プログラマブルコントローラは、アドレス範囲が重複しているとして本処理を終了する。
【００３１】
●［ステップＳＤ０７］プログラマブルコントローラは、現在のチェック対象データが「書き込み範囲情報」の最後のデータであるか否かを判定する。最後のデータである場合にはステップＳＤ０９へ処理を移行し、最後のデータで無い場合にはステップＳＤ０８へ処理を移行する。
●［ステップＳＤ０８］プログラマブルコントローラは、「書き込み範囲情報」の現在のチェック対象データの次のデータをチェック対象データとして選出し、ステップＳＤ０２へ処理を移行する。
●［ステップＳＤ０９］プログラマブルコントローラは、アドレス範囲が重複していないとして本処理を終了する。
【００３２】
以下では、上記した動作を実現する本発明の一実施形態によるプログラマブルコントローラの構成について説明する。
図１０は、本発明の一実施形態によるプログラマブルコントローラの概略的なハードウェア構成図である。プログラマブルコントローラ１はシーケンス制御を実行するＣＰＵ１０を有し、該ＣＰＵ１０には、バス１９を介してＲＯＭ１１、ＲＡＭ１２、不揮発性メモリ１３、入出力回路１４、インタフェース１５が接続されている。インタフェース１５にはプログラミング装置２が接続されており、プログラミング装置２上で作成・編集され、実行形式オブジェクトへとコンパイルされたラダープログラムをインタフェース１５を介して取得し、不揮発性メモリ１３へと記録できるように構成されている。また、バス１９にはバスインタフェース１８を介して数値制御装置等の制御装置に接続可能になっている。入出力回路１４にはＩ／Ｏユニット２０を介して工作機械や周辺装置等の制御しようとする機械の各種アクチュエータやセンサなどに接続されている。
【００３３】
ＲＯＭ１１には、プログラマブルコントローラ１のＣＰＵ１０のためのシステムプログラムが記憶されており、該システムプログラムを実行することによりＣＰＵ１０はプログラマブルコントローラ１の各部の動作を制御する。また、不揮発性メモリには、プログラマブルコントローラ１が実行するラダープログラムが記憶される。ラダープログラムの実行時にはＣＰＵ１０は、不揮発性メモリ１３から該ラダープログラムを読み出し、ＲＡＭ１２の実行用のラダープログラム格納領域へと格納し、このＲＡＭ１２に記憶された実行用のラダープログラムを順次実行する。
【００３４】
ＲＡＭ１２には、プログラマブルコントローラ１がラダープログラムを実行するときの各種信号を記憶する実行用信号メモリ領域が設けられており、該実行用信号メモリ領域には、ラダープログラムを実行する際に必要となる入力信号、出力信号、ラダープログラムにおける内部リレーの状態等を記憶する領域が設けられている。
【００３５】
図１１は、本発明の一実施形態によるプログラマブルコントローラと、プログラマブルコントローラに関連するプログラミング装置の概略的な機能ブロック図である。図１１に示した各機能ブロックは、図１０に示したプログラマブルコントローラ１が備えるＣＰＵ１０が、システムプログラムを実行し、プログラマブルコントローラ１の各部の動作を制御することにより実現される。本実施形態のプログラマブルコントローラ１は、信号アドレス設定抽出部１００、信号アドレス重複判定部１１０、ラダープログラム実行部１２０を備える。
【００３６】
信号アドレス設定抽出部１００は、不揮発性メモリ１３に記憶された実行対象となる実行形式のラダープログラム１８０から使用アドレス設定テーブル及び共有アドレス情報を抽出する。
【００３７】
信号アドレス重複判定部１１０は、信号アドレス設定抽出部１００が抽出した使用アドレス設定テーブル及び共有アドレス情報に基づいて、各ラダープログラム１８０による書込み範囲のアドレスが重複しているか否かの判定を行い、判定結果をラダープログラム実行部１２０へと出力する。
【００３８】
そして、ラダープログラム実行部１２０は、信号アドレス重複判定部１１０による各ラダープログラム１８０による書込み範囲のアドレスが重複していないと判定された場合に、ラダープログラム１８０の実行を行い、一方で、アドレスが重複していると判定された場合には、ラダープログラム１８０の実行を中止し、バスインタフェース１８等を介して書き込み範囲のアドレスが重複しているラダープログラム１８０に関する情報と共にアラームを出力する。
【００３９】
プログラミング装置２は、プログラマブルコントローラ１に対して実行形式のラダープログラム１８０を共有する装置であり、数値制御装置やパソコンなどにラダープログラムの編集・コンパイル用のシステムソフトを導入することにより構成される。プログラミング装置２からプログラマブルコントローラ１への実行形式のラダープログラム１８０の供給は、プログラマブルコントローラ１に備えられたインタフェース１５を介して行われる。プログラミング装置２は、プログラム編集部２００、信号アドレスチェック部２１０、実行形式オブジェクト作成部２２０、使用アドレス設定テーブル作成部２３０、アドレス共有情報作成部２４０を備える。
【００４０】
プログラム編集部２００はオペレータからの操作を受け付けてラダープログラム２６０の作成及び編集を行うための機能手段である。プログラム編集部２００は、画面上にラダープログラム２６０をグラフィカルに表示し、該ラダープログラムに対してリレー回路の配置操作や結線操作などが行えるようなものとして構成しても良い。プログラム編集部２００は、オペレータの操作により作成・編集されたラダープログラム２６０を図示しないプログラミング装置２のメモリ上に記憶する。プログラム編集部２００は、オペレータからの編集操作を受けるたびに、その編集操作による編集内容について信号アドレスのチェックを行うように信号アドレスチェック部２１０へと指令するようにしても良く、その際に、その編集操作による編集内容が信号アドレス設定情報２５０との間で信号アドレスへの書込みに矛盾がある編集内容である場合には当該編集操作に対してエラーを表示して受け付けないようにしても良い。
【００４１】
信号アドレスチェック部２１０は、プログラム編集部２００又は実行形式オブジェクト作成部２２０からの指令に基づいて、あらかじめ設定されて図示しないプログラミング装置２のメモリ上に記憶されている信号アドレス設定情報２５０からラダープログラム２６０に関連する書込み範囲の情報を参照し、ラダープログラム２６０内で書込み対象とされている信号アドレスが信号アドレス設定情報２５０に定義されている書込み範囲の情報と矛盾していないか（信号アドレス設定情報２５０に定義されている書込み範囲以外の信号アドレスに対してラダープログラム２６０内で書込みがされていないか）を判定する。信号アドレスチェック部２１０は、ラダープログラム２６０で書込み対象とされている信号アドレスが信号アドレス設定情報２５０に定義されている書込み範囲の情報と矛盾していると判定した場合、プログラム編集部２００に対してその旨を通知し、矛盾した信号アドレスへの書込み部分をオペレータにわかるように表示するよう指令する。
【００４２】
実行形式オブジェクト作成部２２０は、プログラム編集部２００により作成・編集されたラダープログラム２６０に対してコンパイル処理を実行し、実行形式のラダープログラム１８０を作成する。実行形式オブジェクト作成部２２０は、実行形式のラダープログラム１８０を作成するに際して、信号アドレス設定情報２５０に基づいて使用アドレス設定テーブル作成部２３０が作成した使用アドレス設定テーブルと、信号アドレス設定情報２５０に基づいてアドレス共有情報作成部２４０が作成したアドレス共有情報とを、実行形式のラダープログラム１８０に対して埋め込む処理を行う。実行形式オブジェクト作成部２２０は、使用アドレス設定テーブル及びアドレス共有情報とを、ラダープログラム１８０の実行に直接的に影響を与えないヘッダーやコメントなどの形式で埋め込むようにしても良い。また、実行形式オブジェクト作成部２２０は、コンパイル処理を実行する前に、ラダープログラム２６０の信号アドレスのチェックを行うように信号アドレスチェック部２１０へと指令するようにしても良い。
【００４３】
以下では、図１２，１３を用いて、機械の基本機能と工具管理機能など機械を２個の分割ラダー（共有のアドレス空間）で制御する場合における、本発明の一実施形態によるプログラマブルコントローラ１、プログラミング装置２の具体的な動作実施例を説明する。
図１２は、ラダープログラムを作成・編集してコンパイルするまでの動作を示している。オペレータは、あらかじめプログラミング装置２を操作して分割ラダー１、分割ラダー２の信号アドレス設定情報を作成してから、分割ラダー１、分割ラダー２の作成・編集を開始する。オペレータは、プログラム編集部２００が提供する画面を見ながら分割ラダー１、分割ラダー２を作成・編集する。プログラム編集部２００、オペレータからの編集操作を受けた際に、その編集操作による編集内容についてチェックするように信号アドレスチェック部２１０に指令しても良い。図１２の例で、例えば分割ラダー１の信号アドレスＤ０．０を信号アドレスＤ１００．０に変更する編集操作を行った場合には、当該信号アドレスは信号アドレス設定情報に定義された書込みアドレスの範囲内であるため矛盾は無いと判断され、プログラム編集部２００は当該編集操作を受け付ける。なお、例えば信号アドレスＤ５０００．０への書込みを行うように編集操作した場合には、当該信号アドレスは信号アドレス設定情報に定義された書込みアドレスの範囲外であるため、矛盾が生じるのでプログラム編集部２００は当該編集操作を受け付けない。
【００４４】
オペレータは、分割ラダー１、分割ラダー２の作成・編集を完了すると、次に実行形式オブジェクト作成部２２０に対して指令して、分割ラダー１、分割ラダー２をコンパイルして実行形式オブジェクトへと変換する。実行形式オブジェクト作成部２２０は、分割ラダー１、分割ラダー２をコンパイルする際に、それぞれに係る書込み範囲の情報を信号アドレス設定情報から取り出して使用アドレス設定テーブルを作成し、各実行形式オブジェクトに対して埋め込む。
【００４５】
図１３は、実行形式のラダープログラムである分割ラダー１、分割ラダー２をプログラマブルコントローラ１上で実行する際の動作を示している。オペレータは、プログラミング装置２で作成した実行形式のラダープログラム（分割ラダー１、分割ラダー２）をプログラマブルコントローラ１へと転送して実行するように指令する。プログラマブルコントローラ１では、分割ラダー１、分割ラダー２の実行に先立って、各ラダープログラムから信号アドレス設定抽出部１００が使用アドレス設定テーブルを抽出し、抽出された使用アドレス設定テーブルに基づいて信号アドレス重複判定部１１０が分割ラダー１と分割ラダー２の間で書き込み先の信号アドレスの範囲が重複していないかをチェックする。図１３の例では、それぞれの使用アドレス設定テーブルに定義されている書込み先の信号アドレスは重複していないため、その判定結果を受けてラダープログラム実行部１２０は、分割ラダー１、分割ラダー２の実行を開始する。なお、図１３において、分割ラダー２の使用アドレス設定テーブルに、例えば「Ｄ４０００〜７９９９」が書き込み先として定義されていた場合には、信号アドレス重複判定部１１０は分割ラダー１と分割ラダー２の書き込み先信号アドレスに重複している部分があると判定し、その判定を受けてラダープログラム実行部１２０は分割ラダー１、分割ラダー２の実行を中止する。
【００４６】
以下では、図１４〜１６を用いて、機械本体と周辺機器部の２系統のプログラマブルコントローラ（独立したアドレス空間）でラダープログラムを実行して制御する場合における、本発明の一実施形態によるプログラマブルコントローラ１、プログラミング装置２の具体的な動作実施例を説明する。
図１４は、ラダープログラムを作成・編集してコンパイルするまでの動作を示している。オペレータは、あらかじめプログラミング装置２を操作してＰＬＣ１用ラダー、ＰＬＣ２用ラダーの信号アドレス設定情報を作成してから、ＰＬＣ１用ラダー、ＰＬＣ２用ラダーの作成・編集を開始する。オペレータは、プログラム編集部２００が提供する画面を見ながらＰＬＣ１用ラダー、ＰＬＣ２用ラダーを作成・編集する。プログラム編集部２００は、オペレータからの編集操作を受けた際に、その編集操作による編集内容についてチェックするように信号アドレスチェック部２１０に対して指令しても良い。図１２の例で、例えばＰＬＣ２用ラダーの信号アドレスＥ５０００．０を信号アドレスＥ６０００．０に変更する編集操作を行った場合には、当該信号アドレスは信号アドレス設定情報に定義された書込みアドレスの範囲内であるため矛盾は無いと判断され、プログラム編集部２００は当該編集操作を受け付ける。なお、図１２の例で、例えばＰＬＣ２用ラダーの信号アドレスＧ０．０を書き込みアドレスとなるように編集操作を行った場合、当該信号アドレスは信号アドレス設定情報に定義された書込みアドレスの範囲外であるため、矛盾が生じるのでプログラム編集部２００は当該編集操作を受け付けない。
【００４７】
オペレータは、ＰＬＣ１用ラダー、ＰＬＣ２用ラダーの作成・編集を完了すると、次に実行形式オブジェクト作成部２２０に対して指令して、ＰＬＣ１用ラダー、ＰＬＣ２用ラダーをコンパイルして実行形式オブジェクトへと変換する。実行形式オブジェクト作成部２２０は、ＰＬＣ１用ラダー、ＰＬＣ２用ラダーをコンパイルする際に、それぞれのラダープログラムに係る書込み範囲の情報を信号アドレス設定情報から取り出して使用アドレス設定テーブルを作成し、各実行形式オブジェクトに対して埋め込むと共に、それぞれのラダープログラムに係るアドレス共有情報を各実行形式オブジェクトに対して埋め込む。
【００４８】
図１５は、実行形式のラダープログラムであるＰＬＣ１用ラダー、ＰＬＣ２用ラダーをプログラマブルコントローラ１上で実行する際の信号アドレスのマッピング動作を示している。プログラマブルコントローラ１上で複数のラダー（ＰＬＣ１用ラダー、ＰＬＣ２用ラダー）を実行する際、各々のラダープログアムのアドレス共有情報に基いて、各ラダープログラム用のマッピング情報（仮想アドレス→物理アドレス変換）が作成される。プログラマブルコントローラ１は、それぞれのラダープログラムが指定のアドレス領域を参照するとき、マッピング情報に従って変換されたアドレス領域を参照する。図１５の例では、ＰＬＣ２用ラダーは、Ｅアドレス、Ｇアドレスを参照する際にＰＬＣ１用のＥアドレス、Ｇアドレスを参照する。
【００４９】
図１６は、実行形式のラダープログラムであるＰＬＣ１用ラダー、ＰＬＣ２用ラダーをプログラマブルコントローラ１上で実行する際の動作を示している。オペレータは、プログラミング装置２で作成した実行形式のラダープログラム（ＰＬＣ１用ラダー、ＰＬＣ２用ラダー）をプログラマブルコントローラ１へと転送して実行するように指令する。プログラマブルコントローラ１では、ＰＬＣ１用ラダー、ＰＬＣ２用ラダーの実行に先立って、各ラダープログラムから信号アドレス設定抽出部１００が使用アドレス設定テーブル及びアドレス共有情報を抽出し、抽出された使用アドレス設定テーブルに基づいて信号アドレス重複判定部１１０がＰＬＣ１用ラダー、ＰＬＣ２用ラダーの間で書き込み先の信号アドレスの範囲が重複していないかをチェックする。図１６の例では、ＰＬＣ２用ラダーがアクセスする信号アドレスＧ１０００〜Ｇ１４９９がＰＬＣ１用の信号アドレス領域Ｇ０〜Ｇ９９９へとマッピングされているため、両者の書込み先の信号アドレスが重複していると判定され、その判定結果を受けてラダープログラム実行部１２０は、ＰＬＣ１用ラダー、ＰＬＣ２用ラダーの実行を中止する。
【００５０】
以上、ここまで本発明の実施の形態について説明したが、本発明は上記した実施の形態の例にのみ限定されるものでなく、適宜の変更を加えることにより様々な態様で実施することができる。
例えば、上記した実施形態では、プログラミング装置２にラダープログラムを編集する機能とラダープログラムをコンパイルする機能の両方を実装しているが、これら２つの機能は同一の装置上に実装する必要は無く、異なる２つの装置に対して実装するように構成しても良い。
【符号の説明】
【００５１】
１  プログラマブルコントローラ
２  プログラミング装置
１０  ＣＰＵ
１１  ＲＯＭ
１２  ＲＡＭ
１３  不揮発性メモリ
１４  入出力回路
１５  インタフェース
１８  バスインタフェース
１９  バス
２０  Ｉ／Ｏユニット
１００  信号アドレス設定抽出部
１１０  信号アドレス重複判定部
１２０  ラダープログラム実行部
１８０  ラダープログラム（実行形式）
２００  プログラム編集部
２１０  信号アドレスチェック部
２２０  実行形式オブジェクト作成部
２３０  使用アドレス設定テーブル作成部
２４０  アドレス共有情報作成部
２５０  信号アドレス設定情報
２６０  ラダープログラム
【図１】
2018120416.tif 000003
【図２】
2018120416.tif 000004
【図３】
2018120416.tif 000005
【図４】
2018120416.tif 000006
【図５】
2018120416.tif 000007
【図６】
2018120416.tif 000008
【図７】
2018120416.tif 000009
【図８】
2018120416.tif 000010
【図９】
2018120416.tif 000011
【図１０】
2018120416.tif 000012
【図１１】
2018120416.tif 000013
【図１２】
2018120416.tif 000014
【図１３】
2018120416.tif 000015
【図１４】
2018120416.tif 000016
【図１５】
2018120416.tif 000017
【図１６】
2018120416.tif 000018
【図１７】
2018120416.tif 000019
【図１８】
2018120416.tif 000020
【図１９】
2018120416.tif 000021
【図２０】
2018120416.tif 000022
【図２１】
2018120416.tif 000023
【図２２】
2018120416.tif 000024
【図２３】
2018120416.tif 000025