(57)【要約】【課題】プログラム更新に伴う各変数データの再配置を正常に行うことができ、更に更新版プログラムの動作検証等を別環境等で行うことができる。【解決手段】コンパイラ部５２は、新規プログラムをコンパイルする際に、新規プログラムの各変数のメモリ割当情報を生成すると共に、ユニークなキー情報を生成する。新旧変数アドレス情報管理部５３は、既存プログラムに係わる変数アドレス情報を前回変数アドレス情報として退避させる。一致判定部５４が、ＰＬＣ側で保持するキー情報が、前回変数アドレス情報に付与されているキー情報と一致すると判定した場合、変数データ再配置部５５は、ＰＬＣにおける各変数のデータを再配置する。【選択図】図６
2015022511.tif 000002
【特許請求の範囲】
【請求項１】
支援装置とプログラマブルコントローラを有するシステムであって、
前記支援装置は、
既存のプログラムに基づいて作成された任意の新規プログラムを記憶するプログラム記憶手段と、
前記新規プログラムをコンパイルする際に、該新規プログラムの各変数のメモリ割当情報を生成すると共に、ユニークなキー情報を生成するコンパイラ手段と、
前記既存プログラムに係わる変数アドレス情報を前回変数アドレス情報として退避させると共に、前記キー情報を付与したメモリ割当情報を新たな前記変数アドレス情報として記憶する新旧変数アドレス情報管理手段と、
前記プログラマブルコントローラ側で保持するキー情報が、前記前回変数アドレス情報に付与されているキー情報と一致するか否かを判定する一致判定手段と、
該一致判定手段により前記２つのキー情報が一致すると判定された場合に、前記新たな変数アドレス情報と前記前回変数アドレス情報とに基づいて、前記プログラマブルコントローラにおける前記各変数のデータを再配置する変数データ再配置手段と、
を有することを特徴とするプログラマブルコントローラシステム。
【請求項２】
前記支援装置は、
前記一致判定手段により前記２つのキー情報が一致すると判定された場合に、前記コンパイル後の新規プログラムを前記生成したキー情報と共に前記プログラマブルコントローラにダウンロードして記憶させるダウンロード手段を更に有することを特徴とする請求項１記載のプログラマブルコントローラシステム。
【請求項３】
前記支援装置は、前記既存のプログラムに基づく任意の新規プログラムの作成を支援するプログラム作成支援手段を更に有し、
該プログラム作成支援手段による新規プログラムの作成は、前記プログラマブルコントローラと接続していないオフライン状態で実施され、
前記一致判定手段の判定処理と前記変数データ再配置手段による前記各変数のデータを再配置する処理は、前記プログラマブルコントローラと接続したオンライン状態で実行されることを特徴とする請求項１または２記載のプログラマブルコントローラシステム。
【請求項４】
前記新たな変数アドレス情報と前記前回変数アドレス情報は、何れも、各変数に応じた前記プログラマブルコントローラ内のメモリへの割当アドレスを有し、
前記各変数のデータの再配置は、前記各変数毎に、前記新たな変数アドレス情報における前記割当アドレスを新アドレス、前記前回変数アドレス情報における前記割当アドレスを旧アドレスとして、前記プログラマブルコントローラ内の前記メモリについて旧アドレスから読み出したデータを新アドレスに書き込む処理であることを特徴とする請求項１〜３の何れかに記載のプログラマブルコントローラシステム。
【請求項５】
前記新規プログラムは前記既存プログラムの更新版であり、該新規プログラムが作成されることで該既存プログラムは無くなることを特徴とする請求項１〜４の何れかに記載のプログラマブルコントローラシステム。
【請求項６】
前記プログラマブルコントローラは、
前記ダウンロード手段によりダウンロードされる前記コンパイル後の新規プログラムと前記キー情報とを記憶する記憶手段と、
該記憶手段に記憶された前記コンパイル後の新規プログラムを実行することで所定の制御を行う制御手段と、
を有することを特徴とする請求項２記載のプログラマブルコントローラシステム。
【請求項７】
支援装置とプログラマブルコントローラを有するシステムにおける該支援装置であって、
既存のプログラムに基づいて作成された任意の新規プログラムを記憶するプログラム記憶手段と、
前記新規プログラムをコンパイルする際に、該新規プログラムの各変数のメモリ割当情報を生成すると共に、ユニークなキー情報を生成するコンパイラ手段と、
前記既存プログラムに係わる変数アドレス情報を前回変数アドレス情報として退避させると共に、前記キー情報を付与したメモリ割当情報を新たな前記変数アドレス情報として記憶する新旧変数アドレス情報管理手段と、
前記プログラマブルコントローラ側で保持するキー情報が、前記前回変数アドレス情報に付与されているキー情報と一致するか否かを判定する一致判定手段と。
該一致判定手段により前記２つのキー情報が一致すると判定された場合に、前記新たな変数アドレス情報と前記前回変数アドレス情報とに基づいて、前記プログラマブルコントローラにおける前記各変数のデータを再配置する変数データ再配置手段と、
を有することを特徴とするプログラマブルコントローラシステムの支援装置。
【請求項８】
支援装置とプログラマブルコントローラを有するシステムにおける該支援装置のコンピュータを、
既存のプログラムに基づいて作成された任意の新規プログラムを記憶するプログラム記憶手段と、
前記新規プログラムをコンパイルする際に、該新規プログラムの各変数のメモリ割当情報を生成すると共に、ユニークなキー情報を生成するコンパイラ手段と、
前記既存プログラムに係わる変数アドレス情報を前回変数アドレス情報として退避させると共に、前記キー情報を付与したメモリ割当情報を新たな前記変数アドレス情報として記憶する新旧変数アドレス情報管理手段と、
前記プログラマブルコントローラ側で保持するキー情報が、前記前回変数アドレス情報に付与されているキー情報と一致するか否かを判定する一致判定手段と。
該一致判定手段により前記２つのキー情報が一致すると判定された場合に、前記新たな変数アドレス情報と前記前回変数アドレス情報とに基づいて、前記プログラマブルコントローラにおける前記各変数のデータを再配置する変数データ再配置手段、
として機能させる為のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルコントローラのプログラム更新に伴う変数のデータの再配置方法等に関する。
【背景技術】
【０００２】
従来、プログラマブルコントローラと支援装置を有するプログラマブルコントローラシステムが知られている。プログラマブルコントローラ（ＰＬＣ）は、任意の制御プログラムを保持し、この制御プログラムを例えば定周期で実行することで、任意の制御対象の制御・監視等を実行する。支援装置は、ユーザが任意の制御プログラムのソースコードを作成するのを支援する支援機能や、このソースコードをコンパイルしてＰＬＣで実行可能な形式（機械語オブジェクト）に変換するコンパイラ等の各種機能を有する。コンパイラは、コンパイルの際に、ソースコードに記述される各変数に対して任意のメモリアドレスを割り当てる。
【０００３】
ここで、作成された新規ソースコードが、ＰＬＣで運用中の制御プログラムの更新版である場合、新規ソースコードは、既存のソースコードをベースにして作成されるので、既存のソースコードに存在する変数（既存の変数）が含まれる場合が多い。この様な既存の変数に関しては、上記ＰＬＣで運用中の制御プログラム実行により、その割当メモリアドレスに何らかのデータが格納されている状態であり、プログラム更新の際にこのデータを引き継ぐ必要がある。
【０００４】
これに対して、コンパイルの際の各変数の割当メモリアドレスを記憶しておき、後に制御プログラム更新の際にこの記憶内容を参照することで、既存の変数と同じ変数に関しては、同じメモリアドレスが割り当てられるようにすることが考えられる。しかしながら、何らかの事情により、既存の変数の割当アドレスとは異なるアドレスを割り当てる必要がある場合もある。
【０００５】
尚、上記既存のソースコードとは、基本的には、ＰＬＣで運用中の制御プログラムのソースコードであるはずであるが、その保証はない。
ユーザが、上記支援装置において、例えば、既存のソースコードに基づいて更新版ソースコードを作成するプログラミングを実施し、更新版ソースコードをコンパイルした結果、変数のアドレス割付けに変更があった場合、この変数に係わるデータを、旧アドレスから新アドレスへと移動する必要がある。この様な従来技術として、例えば特許文献１に記載の従来技術が知られている。
【０００６】
特許文献１に開示されている従来技術では、支援装置によるコンパイル毎に、今回の変数割付情報を前回の変数割付情報と比較することにより、変数のアドレス割付けに変更が発生した箇所を検出する。そして、検出箇所毎に、前回の割付アドレスからデータを読み出して、このデータを今回の割付アドレスに書き込むことで、アドレス割付けに変更があった変数に係わるデータを移動する。
【０００７】
例えば上記特許文献１等の従来技術の動作は、例えば図７に示すようになると見做せる。図７は、従来のプログラマブルコントローラシステムの概略構成・動作を示す図である。
【０００８】
図示の例では、支援装置１００において、任意のＰＬＣのプロジェクトを更新する毎に、不図示のコンパイラが当該プロジェクトのプログラムをコンパイルする。尚、ここでは特に図示しないが、支援装置１００は、複数のＰＬＣ１１０それぞれの制御プログラムを格納・管理している。各ＰＬＣ毎に、そのＰＬＣ用の１または複数の制御プログラムを作成し、これをグループ化して管理しており、このグループ（各ＰＬＣ用の制御プログラム群）を上記“プロジェクト”と呼ぶ。但し、以下の説明では、「プログラム」は、基本的に、１つの制御プログラムまたは複数の制御プログラム（プロジェクト）を意味するものとし、基本的に“プロジェクト”という用語は記述しないものとする。
【０００９】
図７において、支援装置１００は、各ＰＬＣのプログラム毎に、そのプログラムに係わる各変数へのアドレス割当情報である変数アドレス情報に関して、その前回値を保持している。すなわち、支援装置１００は、新たな更新版の制御プログラム（そのソースコード）がユーザにより作成されて、それをコンパイルする際に、既存の変数アドレス情報１０１を退避させて新たな“前回変数アドレス情報”１０２として保持すると共に、今回のコンパイル処理による変数アドレス割当情報を、新たな変数アドレス情報１０１として保持する。
【００１０】
そして、上記新たな制御プログラム（その機械語オブジェクト）をＰＬＣ１１０にダウンロードする際等に、“前回変数アドレス情報”１０２に基づいて各変数毎にＰＬＣ１１０の不図示のメモリの旧アドレスからデータを読み出す。尚、この様な移動元の変数データの読出しを“バックアップ”と記す。続いて、このバックアップデータを、変数アドレス情報１０１に基づいて、新アドレスに格納する。尚、この様な移動先への変数データの書込みをリストアと記す。
【００１１】
尚、制御プログラムのソースコードには、各種変数が含まれており、コンパイルの際には各変数にメモリアドレスを割り当てる。これより、コンパイラは、例えば変数名に対応付けてその変数の割当アドレス等を記録したテーブル等を作成し得るものであり、これが図示の変数アドレス情報である。
【００１２】
そして、図示の例の従来例の場合、既存のプログラムの更新版等のような新たなプログラムについてコンパイルする際には、まず、既存のプログラムに係わる既存の上記変数アドレス情報を、新たな“前回変数アドレス情報”１０２として退避させる。そして、上記更新版等のプログラムに係わる変数アドレス割当情報を、新たな変数アドレス情報１０１として記憶する。
【００１３】
尚、既に述べたように、本説明では、プログラムとは、１つの制御プログラムまたは制御プログラム群（プロジェクト）を意味するものとする。
ここで、図７で説明したような従来の動作は、プログラム更新対象となるＰＬＣ１１０と支援装置１００とを接続した状態（オンライン状態）で、プログラム一致確認、プログラム編集、コンパイル、ダウンロード、上記バックアップ、上記リストア等の一連の処理を実行する必要がある。プログラム編集は、ここでは、支援装置１００が保持している既存の制御プログラム（そのソースコード）に対して修正・変更等を行うことで、更新版プログラムを作成するものである。
【００１４】
更に、このような従来の方法では、プログラム編集前に、編集対象の既存のプログラムが、ＰＬＣ側で運用中のプログラムと同じであるか否かをチェックする必要がある。もし異なるならば、上記“前回変数アドレス情報”１０２等を用いたデータ移動処理が、正常に行えないからである。
【００１５】
この様に、従来では、オンライン状態で、上記チェックによりプログラム一致確認したうえで、プログラム編集、コンパイル、ダウンロード、上記バックアップ、上記リストア等の一連の処理を実行する必要がある。この様な従来の処理の一例を図８に示す。
【００１６】
図８は、従来の支援装置の処理フローチャート図を示す。
図８の処理は、オンライン状態で実行される。オンライン状態とは、ネットワークを介して支援装置１００とＰＬＣ１１０とが接続中の状態である。また、本処理開始時点では、支援装置１００側では、未だ、更新版等のプログラムの作成作業自体が、開始されていない。よって、支援装置１００側には、既存のプログラムが格納されているが、その更新版のプログラムは未だ存在していない状態である。尚、以下、既存のプログラムをプログラムｒ、その更新版のプログラムをプログラムｗと記すものとする。
【００１７】
上記オンライン状態で、支援装置１００は、まず、更新処理対象のＰＬＣ１１０が現在保持・実行しているプログラムが、上記既存のプログラムｒと同一であるか否かをチェックする（ステップＳ５１）。同一であるならば、それはＰＬＣ側で運用中のプログラム実行による各変数データの格納位置が、上記“前回変数アドレス情報”１０２が示す各変数データの格納位置と同じであることを意味している。よって、この場合、“前回変数アドレス情報”１０２に基づいてバックアップ処理を行えば、正常に各変数の現在のデータを取得できることになる。
【００１８】
尚、図示していないが、もし同一ではないならば、何らかの所定の警告メッセージを報知する等して本処理を終了する。
支援装置１００は、上記プログラム一致を確認したら、ユーザが既存のプログラムｒに基づいてその更新版のプログラムを作成することを許可する。そして、ユーザが任意の更新版のプログラムｗ（そのソースコード）を作成したら、これをコンパイルすることで、ＰＬＣで実行可能な形式である機械語オブジェクトに変換する（ステップＳ５２）。コンパイルの際には、よく知られているように、各変数のメモリアドレス割当てが行われる。
【００１９】
尚、上述したことから、ステップＳ５２の処理も、引き続きオンライン中に行われる。つまり、支援装置１００は、ステップＳ５１の処理の時点からずっと、更新処理対象のＰＬＣ１１０と接続中の状態となっている。ステップＳ５１の処理後にオフラインにして更新版のプログラムの作成作業を行うと、ステップＳ５１で照合を行った意味が無くなるからである。
【００２０】
尚、ステップＳ５２の処理が行われることで、支援装置１００には、プログラムｗのみが存在し、プログラムｒは無くなっていることになる。換言すれば、プログラムｒがプログラムｗへと変更されたことになる。
【００２１】
また、上記ステップＳ５２のコンパイル処理に伴って、更新版であるプログラムｗの各変数のメモリアドレス割当が行われて変数アドレス情報が生成される。その際、上記図７で説明したように、既存の変数アドレス情報１０１を退避させて新たな前回変数アドレス情報１０２とすると共に、生成された変数アドレス割当情報を新たな変数アドレス情報１０１とする。この処理によって、上記一例では、前回変数アドレス情報１０２はプログラムｒに係わるもの（旧アドレス）、変数アドレス情報１０１はプログラムｗに係わるもの（新アドレス）となる。
【００２２】
尚、上記の通り、新アドレスは旧アドレスとは異なる場合もある。例えば、図８の図上右側に示す例では、変数Ａに関しては、旧アドレスは‘0000’であるが、新アドレスは‘0002’となっている。
【００２３】
続いて、バックアップ処理を実行する（ステップＳ５２）。これは、前回変数アドレス情報１０２に基づいて、ＰＬＣ１１０の不図示のメモリ等から、各変数の旧アドレスからデータを取得して一時的に記憶する処理である。
【００２４】
これは、例えばまず、上記変数アドレス情報１０１と前回変数アドレス情報１０２とに基づいて、図示のデータ再配置情報１２０を作成しておく。但し、この段階では未だ図示の値１２４にはデータは格納されていない状態となっている。そして、このデータ再配置情報１２０に基づいてステップＳ５２のバックアップ処理や後述するステップＳ５５のリストア処理を行う。
【００２５】
ここで、図８の図上右側に示す例のデータ再配置情報１２０は、変数名１２１、旧アドレス１２２、新アドレス１２３、値１２４の各データ項目から成る。上記変数アドレス情報１０１と前回変数アドレス情報１０２を参照することで、各変数の変数名と旧アドレス、新アドレスが分かるので、これらを変数名１２１、旧アドレス１２２、新アドレス１２３に格納することで、データ再配置情報１２０の一部が作成できる。
【００２６】
そして、各変数毎に、その旧アドレス１２２によってＰＬＣ１１０のメモリからのデータ取得を行って、この取得データを値１２４に格納するという上記バックアップ処理を行うことで、データ再配置情報１２０が完成する。後に、この完成したデータ再配置情報１２０を参照して、後述するリストア処理を実行する。尚、上記ＰＬＣ１１０のメモリの旧アドレスからデータを取得したら、当該アドレスの記憶領域を‘０’クリア等するようにしてもよい。
【００２７】
続いて、コンパイル後のプログラムｗ（機械語オブジェクト）を、ＰＬＣ１１０にダウンロードする（ステップＳ５４）。これによって、ＰＬＣ１１０側では、既存のプログラムｒは削除されて、新たなプログラムｗに置き換わることになる。
【００２８】
その後、リストア処理を実行する（ステップＳ５５）。すなわち、各変数毎に上記データ再配置情報１２０に退避させてあったデータを、その変数の新アドレスに格納する処理を行う。つまり、データ再配置情報１２０の各レコード毎に、その値１２４の格納データを、その新アドレス１２３が示す記憶領域に格納する。
【００２９】
この様にして、ＰＬＣの制御プログラムの更新に伴って変数の割当アドレスが変わっても、当該変数のデータを問題なく引き継ぐことができる。
尚、上記ステップＳ５１〜Ｓ５５の一連の処理は、オンライン状態で行われる。
【００３０】
尚、図８の処理中は、更新対象のＰＬＣの制御プログラム実行は中断している。
【先行技術文献】
【特許文献】
【００３１】
【特許文献１】特開２００１−２５５９１３号公報
【発明の概要】
【発明が解決しようとする課題】
【００３２】
上述したように、従来の方法では、支援装置１００において、オンライン状態で、更新対照の既存プログラムがＰＬＣ１１０側のプログラムと同一であることを確認したうえで、引き続き、プログラム編集、コンパイル、ダウンロード、上記バックアップ、上記リストア等の一連の処理を実行する必要がある。この様にすることで、新旧プログラムで変数の割当アドレスが変わっても、旧アドレスから新アドレスへのデータ移動を正しく行うことができ、データ引継ぎが問題なく行われる。
【００３３】
しかしながら、これは、逆に言えば、プログラム編集作業を含めた一連の処理を、支援装置１００とＰＬＣ１１０とを常に接続した状態で行って、ＰＬＣ１１０側のプログラム更新を完了させなければならない。
【００３４】
しかしながら、稼働中のシステムに対するプログラムの更新は、安全のため、稼働中のＰＬＣ内のデータをバックアップし、稼働中のシステムとは別の環境で新規作成プログラムの動作検証等を行った後、ＰＬＣのプログラム更新を実施する方法が一般的である。
【００３５】
しかしながら、この方法を上記図７、図８の従来技術に適用することができない。上記の通り、従来では、既存のプログラムｒの更新版のプログラムｗの作成作業を、上記オンラインの状態で行う必要がある。この為、作成されたプログラムｗの検証作業等を別環境で行いたくても、出来なかった。
【００３６】
つまり、この場合、例えば、上記ステップＳ５２の処理を、事前に、更に場合によっては別環境で行った後、作成した更新版等の新規制御プログラム（上記プログラムｗ等）について、別環境で上記動作検証等を行った後、オンライン状態で上記図８の処理を行うことになる。但し、この場合、ステップＳ５２の処理は特に行う必要はない。
【００３７】
しかしながら、このとき、支援装置１００には、新規プログラムｗは存在するが、既存のプログラムｒは存在していない。この為、ステップＳ５１の照合では、ＰＬＣ１１０側のプログラムと一致しない為、それ以降の処理は出来ないことになる。つまり、ＰＬＣ１１０側のプログラムを更新することが出来ないことになる。また、仮に、プログラム不一致であっても強制的に上記ステップＳ５３，Ｓ５４，Ｓ５５の処理を行ってＰＬＣ側のプログラム更新を強行するようにした場合、変数のデータの引継ぎが正しく行われる保証はないことになる。
【００３８】
しかしながら、図８の処理方法では、作成したプログラムｗの動作検証を行わないまま、稼動中のＰＬＣにプログラムをプログラムｗへと更新してそのまま運用させることになり、ＰＬＣの動作に何らかの異常が生じる可能性がある。
【００３９】
上述した従来技術の問題を解消することが望まれる。すなわち、例えば、オフライン状態で、既存プログラムに基づく更新版プログラムの編集作業や別環境での上記動作検証等を行ってから、オンライン状態で、変数のデータの引継ぎが正しく行われることを保証しつつＰＬＣ側のプログラム更新が行われるようにすることが望まれる。
【００４０】
本発明の課題は、オンライン状態で既存プログラムの一致確認と既存プログラムの更新版のプログラムの作成等の一連の処理を行わなくても、プログラム更新に伴う各変数の割当アドレスの変更に対応する変数データの再配置を正常に行うことができ、更に更新版プログラムの動作検証等を別環境等で行うことができるプログラマブルコントローラシステム、その支援装置等を提供することである。
【課題を解決するための手段】
【００４１】
本発明のプログラマブルコントローラシステムは、支援装置とプログラマブルコントローラを有するシステムであって、支援装置は、下記の各構成を有する。
・既存のプログラムに基づいて作成された任意の新規プログラムを記憶するプログラム記憶手段；
・前記新規プログラムをコンパイルする際に、該新規プログラムの各変数のメモリ割当情報を生成すると共に、ユニークなキー情報を生成するコンパイラ手段；
・前記既存プログラムに係わる変数アドレス情報を前回変数アドレス情報として退避させると共に、前記キー情報を付与したメモリ割当情報を新たな前記変数アドレス情報として記憶する新旧変数アドレス情報管理手段；
・前記プログラマブルコントローラ側で保持するキー情報が、前記前回変数アドレス情報に付与されているキー情報と一致するか否かを判定する一致判定手段；
・該一致判定手段により前記２つのキー情報が一致すると判定された場合に、前記新たな変数アドレス情報と前記前回変数アドレス情報とに基づいて、前記プログラマブルコントローラにおける前記各変数のデータを再配置する変数データ再配置手段。
【発明の効果】
【００４２】
本発明のプログラマブルコントローラシステム、その支援装置等によれば、オンライン状態で既存プログラムの一致確認と既存プログラムの更新版のプログラムの作成等の一連の処理を行わなくても、プログラム更新に伴う各変数の割当アドレスの変更に対応する変数データの再配置を正常に行うことができ、更に更新版プログラムの動作検証等を別環境等で行うことができる。
【図面の簡単な説明】
【００４３】
【図１】本例のプログラマブルコントローラシステムのシステム構成図である。
【図２】支援装置の全体処理フローチャート図である。
【図３】図２のステップＳ４の詳細フローチャート図である。
【図４】図２のステップＳ５の詳細フローチャート図である。
【図５】図２のステップＳ６の詳細フローチャート図である。
【図６】本例の支援装置の機能ブロック図である。
【図７】従来のプログラマブルコントローラシステムの概略構成・動作を示す図である。
【図８】従来の支援装置の処理フローチャート図である。
【発明を実施するための形態】
【００４４】
以下、図面を参照して本発明の実施の形態について説明する。
尚、上記従来の説明等と同様、以下の本説明においても、「プログラム」は、基本的に、１つの制御プログラムまたは複数の制御プログラム（プロジェクト）を意味するものとし、基本的に上記“プロジェクト”という用語は記述しないものとする。
【００４５】
図１は、本例のプログラマブルコントローラシステムのシステム構成図である。
本例においても、従来例と同様に、プログラマブルコントローラシステムは、基本的に、支援装置１０とＰＬＣ（プログラマブルコントローラ）２０を有する。
【００４６】
ここで、支援装置１０は、例えばパソコン等の汎用コンピュータにより実現される。支援装置１０は、一般的なパソコン等の構成を有する。すなわち、支援装置１０は、ハードウェア構成としては、例えば、不図示のＣＰＵ等の演算プロセッサ、メモリ、ハードディスク等の記憶部、キーボード、マウス等の入力操作部、ディスプレイ等の表示部、通信機能部等を有している。不図示の通信機能部は、不図示の通信線／ネットワーク等に接続している。ＰＬＣ２０も不図示の通信線／ネットワークに接続している。これより、不図示の通信線／ネットワークを介して、支援装置１０とＰＬＣ２０とが通信できる。
【００４７】
また、支援装置１０の上記不図示の記憶部には、予め所定のアプリケーションプログラムが記憶されている。支援装置１０の上記不図示のＣＰＵ等が、このアプリケーションプログラムを実行することにより、後述する支援装置１０の各種処理機能、特に図２〜図５の各フローチャート図の処理、図６に示す各機能部の処理機能などが、実現される。尚、図６に示す各種処理機能は、後述するが、例えば、プログラム記憶部５１、コンパイラ部５２、新旧変数アドレス情報管理部５３、一致判定部５４、変数データ再配置部５５、ダウンロード部５６、プログラム作成支援部５７等である。
【００４８】
また、ＰＬＣ２０も、プログラマブルコントローラとしての一般的なハードウェア構成を有しており、例えば不図示のＣＰＵ、メモリ等の記憶部、通信機能部等を有している。この記憶部に予め記憶されているアプリケーションプログラムを、ＣＰＵが実行することにより、後述するＰＬＣ２０の処理機能、例えば図６に示す記憶部６１、制御部６２等の処理機能が、実現される。
【００４９】
支援装置１０は、基本的な機能は、上記従来の支援装置１００と略同様と見做してもよい。すなわち、支援装置１０は、上記ユーザによる任意の制御プログラムのソースコードの作成を支援する機能や、このソースコードをコンパイルして機械語オブジェクトに変換すると共に、その際の変数アドレス割当情報を管理するコンパイラ等を有する。
【００５０】
そして、本例の支援装置１０では、更に、このコンパイル処理に伴って、既存の変数アドレス情報１１を退避させて新たな“前回変数アドレス情報”１２として保持すると共に、コンパイルによる新たな変数のアドレス割当情報を、新たな変数アドレス情報１１として保持する機能なども有する。
【００５１】
そして、本例の支援装置１０は、上記処理機能に加えて、キー情報に係わる各種処理・管理を行うものである。すなわち、支援装置１０は、例えば、各制御プログラム（そのソースコード）をコンパイルする毎に、ユニークなキー情報を生成して、このキー情報を上記新たな変数のアドレス割当情報に付与する。よって、上記のことから、変数アドレス情報１１にはキー情報が付与されていることになり、既存の変数アドレス情報１１を退避させて成る上記“前回変数アドレス情報”１２にもキー情報が付与されていることになる。ユニークなキー情報であるので、ある時点における変数アドレス情報１１のキー情報と“前回変数アドレス情報”１２のキー情報とは、相互に異なることになる。また、支援装置１０は、上記コンパイルの際に生成したキー情報を、当該コンパイル結果である機械語オブジェクトと共にＰＬＣ２０にダウンロードして記憶させる。
【００５２】
上述した動作について、図１の図上左側には、ダウンロード操作時＆コンパイル時の動作を示す。これについて、上記従来で説明したプログラムｒ、プログラムｗを例にして説明する。
【００５３】
図１の図上左側には、プログラムｒのダウンロード時と、その後にプログラムｒに基づいて作成された更新版のプログラムｗのコンパイル時とが、混在して示されている。
まず、プログラムｒに応じたキー情報として図示のキー情報“Key_r”が生成されたものとする。図には示していないが、このとき、プログラムｒのコンパイル処理に伴う各変数のメモリアドレス割当情報にキー情報“Key_r”が付与されて、新たな変数アドレス情報１１として保持されることになる。また、コンパイル結果である“プログラムｒの機械語オブジェクト”をＰＬＣ２０にダウンロードする際に、このキー情報“Key_r”も一緒にダウンロードして保持させる。これより、ＰＬＣ２０側には図示のようにキー情報“Key_r”が保持された状態となっている。尚、特に図示していないが、当然、ダウンロード後は、ＰＬＣ２０側ではプログラムｒによって制御実行している状態となっている。
【００５４】
その後、任意のときに、プログラムｒの更新版のプログラムｗが作成されたものとする。そして、このプログラムｗのコンパイル処理の際に、既存の変数アドレス情報１１が退避されて新たな前回変数アドレス情報１２として保持される。このときの既存の変数アドレス情報１１は、上記プログラムｒに係わるものであり上記の通りキー情報“Key_r”が付与されているので、上記退避後には前回変数アドレス情報１２は図示の状態となっている。つまり、前回変数アドレス情報１２は、上記プログラムｒに係わる変数アドレス情報となっており、よって、キー情報“Key_r”が付与されたものとなっている。
【００５５】
更に、上記更新版のプログラムｗに対しては、キー情報“Key_ｗ”が生成されたものとする。これより、プログラムｗのコンパイル処理に伴う各変数のメモリアドレス割当情報にキー情報“Key_ｗ”が付与されて、新たな変数アドレス情報１１として保持されることになる。つまり、図示の状態となることになる。
【００５６】
ここで、本手法では、上記プログラムｗの作成やそのコンパイル処理等は、オフライン状態で行っても構わない。オフライン状態とは、ＰＬＣ２０と支援装置１０とが接続されていない状態である。従って、別環境においてプログラムｗの動作検証等を行うこともできる。その後、例えば、動作検証済みのプログラムｗを保持していると共に、変数アドレス情報１１と前回変数アドレス情報１２が図１の図上左側に示す状態となっている支援装置１０を、オンライン状態する。オンライン状態とは、ＰＬＣ２０と支援装置１０とが接続されている状態である。そして、オンライン状態で、図１の図上右側に示す「バックアップ＆リストア操作時」の動作を行って、変数のデータの再配置を行うと共に、プログラムｗを上記キー情報“Key_ｗ”と共にＰＬＣ２０にダウンロードすることになる。
【００５７】
尚、図１の図上右側に示す「バックアップ＆リストア」動作の際、ＰＬＣ２０側の状態は、図上右下側に示すように、最初はプログラムｒが保持され、これに伴って図示のようにキー情報“Key_ｒ”が保持された状態になっている。その後、新たなプログラムｗがダウンロードされると、プログラムｗが保持され、これに伴って図示のようにキー情報“Key_ｗ”が保持された状態になる。また、図上右下側には、「バックアップ＆リストア」動作に伴うＰＬＣ２０のメモリの変数割当アドレスの格納データの状態変化も示すが、これについては後述する。
【００５８】
図上右側に示す「バックアップ＆リストア」動作では、まず最初に、前回変数アドレス情報１２のキー情報が、ＰＬＣ２０側で保持しているキー情報と一致するか否かをチェックする。図示の例では上記の通りＰＬＣ２０側ではキー情報“Key_ｒ”が保持されており、前回変数アドレス情報１２のキー情報は“Key_ｒ”であるので、キー情報は一致することになる。
【００５９】
キー情報が一致する場合には、ＰＬＣ２０側における現在の各変数のデータ格納位置は、現在の“前回変数アドレス情報”１２が示すデータ格納位置と一致しているものと見做してよいことになる。従って、キー情報が一致する場合には、“前回変数アドレス情報”１２に基づいてバックアップ処理を実行すれば、正常にデータ取得が出来ることになる。“前回変数アドレス情報”１２は、従来の“前回変数アドレス情報”１０２と同様、各変数名に旧アドレスが対応付けられているので、この旧アドレスからデータを取得する。尚、バックアップ処理自体は、従来と略同様である。
【００６０】
尚、図示のバックアップデータ１４は、上記バックアップ処理によって取得したデータでは無い。バックアップデータ１４は、ＰＬＣ２０の不図示のメモリの全データのコピー等であり、上記バックアップ処理の前に作成しておくものである。これによって、上記バックアップ処理の際に、逐一ＰＬＣ２０のメモリから該当データを取得する必要なく、バックアップデータ１４から該当データを取得すれば済むことになる。
【００６１】
上記バックアップ処理の後、リストア処理を実行する。このリストア処理自体も、従来と略同様である。つまり、変数アドレス情報１１は、各変数名に新アドレスが対応付けられており、上記バックアップ処理で各変数名に対応するデータを取得しているので、このデータを新アドレスに格納する。
【００６２】
尚、ＰＬＣ２０側には変数名の情報は存在していない。換言すれば、ソースコードには変数名が記述され、機械語オブジェクトには各変数に割り当てられたアドレスが記述されることになる。よって、ＰＬＣ２０側では、各割当アドレスとその現在のデータを知ることは出来るが、どのアドレスがどの変数（変数名）に対応するものであるかまでは分からない。
【００６３】
尚、上記従来のデータ再配置情報１２０と同様の図示のデータ再配置情報３０を作成し、これに基づいて上記バックアップ＆リストア処理を実行するようにしてもよい。データ再配置情報３０は、変数名３１、旧アドレス３２、新アドレス３３、値３４等から成り、バックアップ処理で旧アドレス３２からの取得データを値３４に格納し、リストア処理では値３４のデータを新アドレス３３に格納する。
【００６４】
勿論、これは一例であり、必ずしもデータ再配置情報３０を作成しなくてもよい。旧アドレスからデータを取得してこのデータを新アドレスに格納することが出来れば、方法は何でも良い。
【００６５】
上記「バックアップ＆リストア」動作によって、例えば図上下側に示すように、例えば旧アドレス‘0x0000’のデータ‘１’は、新アドレス‘0x0010’に移動することになる。
尚、図上右下側に示すように、ＰＬＣ２０側の状態は、バックアップ処理の際にはキー情報“Key_r”があるのでプログラムｒが保持されており、リストア処理の後にはキー情報“Key_ｗ”があるのでプログラムｗが保持された状態になっていることになる。つまり、従来と略同様に、バックアップ処理の後あるいはリストア処理の後などに、プログラムｗとそのキー情報“Key_ｗ”が、ＰＬＣ２０にダウンロードされている。尚、逐一述べないが、当然、ＰＬＣ２０側にダウンロードされて保持されるプログラムは、コンパイル後、すなわち機械語オブジェクトである。
【００６６】
図２〜図５に、支援装置１０の処理フローチャート図を示す。
図２は、支援装置１０の全体処理フローチャート図である。
ここで、図２に示すステップＳ１の処理は、図２の処理に含まれないものと見做してもよい。すなわち、ステップＳ１の処理は、例えばプログラムの初期版に係わる処理である。初期版であるので、ＰＬＣ２０側には未だプログラムは存在していない。これより、特にチェック等は必要なく、変数データを引継ぐ必要もないのでバックアップ＆リストア処理等も必要なく、ユーザは任意の環境下で自由に初期版のプログラムの作成や検証等を行うことができ、そのコンパイル処理も行うことができる。そして、支援装置１０を処理対象のＰＬＣ２０に接続してオンライン状態にして、コンパイル後のプログラムを当該ＰＬＣ２０にダウンロードして保持させる。ＰＬＣ２０は、このプログラムを用いて各種制御を実行する。
【００６７】
上記初期版に係る処理に関して、従来と異なる点は、上記コンパイル処理に伴ってユニークなキー情報を生成して、このキー情報が付与された変数アドレス情報１１が生成される点である。尚、このときは未だ、前回変数アドレス情報１２は存在していない。
【００６８】
尚、更新版の場合も、コンパイル処理に伴って作成される上述した変数アドレス割当情報に上述した新たなキー情報を付与したものを、新たな変数アドレス情報１１として記憶するが、その前に、上記のように、既存の変数アドレス情報１１を退避させて新たな前回変数アドレス情報１２として記憶する。
【００６９】
ここで、本手法では、コンパイル処理に伴って新たな変数アドレス情報を生成する毎に、ユニークなキー情報を生成して、これを生成した変数アドレス情報に付随させる。キー情報は、同じものが生成されないようにすれば何でもよい。このキー情報は、ＰＬＣ２０にダウンロードするプログラムにも付随させる。尚、ＰＬＣ２０にダウンロードするプログラムは、当然、上記コンパイル処理によって得られる機械語オブジェクトである。
【００７０】
上記ステップＳ１の処理によって初期版に係る各種処理が実行され、その後、任意のときに、新たな更新版プログラムを作成する際に、ステップＳ２やステップＳ３〜Ｓ６の処理が実行される。
【００７１】
ここで、本説明では、図１の例を利用して、ステップＳ２では、その時点での既存のプログラムｒに基づいて、その更新版等である新たなプログラムｗが作成されるものとする。プログラムｒは、例えばステップＳ１で作成された初期版であるかもしれないし、前回の図２の処理実行時にステップＳ２で作成されたプログラムかもしれない。また、図１と同様、プログラムｒに対してはキー情報“Key_r”が生成されており、プログラムｗに対してはキー情報“Key_ｗ”が生成されるものとする。
【００７２】
そして、基本的には、以前に、プログラムｒがキー情報“Key_r”と共にＰＬＣ２０にダウンロードされており、ＰＬＣ２０側ではその時点からプログラムｒにより運用開始したはずである。しかしながら、現在もＰＬＣ２０側ではプログラムｒにより運用中であるという保証はない。尚、図１には正常な場合を示しているので、ＰＬＣ２０にキー情報“Key_r”が保持されている状態を示してある。つまり、本手法では、正常な状態であれば、以下に説明するステップＳ２〜Ｓ６の処理を実行する際には、ＰＬＣ２０側にはキー情報“Key_r”が記憶された状態となっている。
【００７３】
上記のように、ＰＬＣ２０側で現在運用中のプログラムが、支援装置１０側の上記既存のプログラムｒと同一であるという保証は無い。その為、従来では上記ステップＳ５１のチェック処理を行ったが、本手法では上記キー情報を用いた後述するステップＳ３のチェック処理を行う。詳しくは後述する。
【００７４】
また、ステップＳ２の処理開始前の段階では、支援装置１０側にはプログラムｒが格納されていると共に、キー情報“Key_r”が付随された変数アドレス情報は、図１とは異なり、未だ「前回変数アドレス情報」１２にはなっておらず、上記変数アドレス情報１１として記憶されている状態となっている。尚、プログラムｒが初期版である例では、ステップＳ２の処理開始前の段階では、「前回変数アドレス情報」１２は存在しておらず、キー情報“Key_r”が付随された変数アドレス情報１１のみが存在していることになる。
【００７５】
上記ステップＳ１の初期版に係わる処理後、任意のときに、プログラムの更新等を行う際に、その都度、ステップＳ２〜Ｓ６の処理が行われる。
まず、本処理では更新の際に上記ステップＳ５１の処理は行わない。よって、支援装置１０において、オフラインの状態でユーザが所望のプログラム編集を行って、更新版等の新たなプログラムｗを作成するものであってよい。また、別環境で、新たなプログラムｗの動作検証等を行って、新たなプログラムｗが問題なく動作することを確認するようにしてもよい。
【００７６】
このように、ステップＳ２では、例えばオフラインで、上記プログラム編集や動作検証を行って、正常に動作することが確認された上記プログラムｗが、ユーザによって作成されることになる。更に、作成したプログラムｗをコンパイルして、ＰＬＣ２０で実行可能な形式（機械語オブジェクト）に変換する。また、これに伴って、プログラムｗに対応するキー情報“Key_ｗ”が生成されたうえで変数アドレス情報の更新を行うことで、変数アドレス情報は例えば図１の上記「バックアップ＆リストア操作」時の状態になるものとする。
【００７７】
すなわち、現在の変数アドレス情報１１を「前回変数アドレス情報」１２として退避させて、新たなプログラムｗに係わる変数アドレス情報を新たな現在の変数アドレス情報１１とする。これは、本例では、例えば図１の図上左側に示すように、キー情報“Key_r”付随の変数アドレス情報を新たな「前回変数アドレス情報」１２として退避させて、キー情報“Key_ｗ”付随の変数アドレス情報を、新たな現在の変数アドレス情報１１として記憶することになる。
【００７８】
その後、任意のときに、オンライン状態、すなわち支援装置を更新対象のＰＬＣ２０に接続して通信可能な状態にして、ステップＳ３〜Ｓ６の処理を実行する。
まず、「前回変数アドレス情報」１２のキー情報（本例では“Key_r”）を読出すと共に、ＰＬＣ２０側のキー情報を読出して両者が一致するか否かを確認する（ステップＳ３）。尚、特に図示していないが不一致の場合には、警告メッセージを報知する等して本処理を終了する。つまり、この場合、ＰＬＣ２０の変数データ再配置やプログラム更新は行えない。一方、キー情報が一致する場合には、本例ではＰＬＣ２０側で現時点において運用中のプログラムが、プログラムｒであると見做してよい。よって、ＰＬＣ２０内の不図示のメモリにおける各変数データの格納位置も、「前回変数アドレス情報」１２が示す各アドレスとなっていると見做してよい。
【００７９】
本例ではステップＳ２においてプログラムｒに基づいてその更新版であるプログラムｗを作成しているが、この作成に伴ってプログラムｒは無くなっている。従って、ステップＳ３の処理の時点では、従来のステップＳ５１に相当する処理は行えない。しかし、「前回変数アドレス情報」１２のキー情報を用いることで、ステップＳ５１の略同様の確認が行える。すなわち、支援装置１０に現在存在するプログラムｗが、ＰＬＣ２０側の現在のプログラムの更新版等であることが確認できる。
【００８０】
ステップＳ３で一致確認したら、続いて、バックアップ処理を実行する（ステップＳ４）。ここで、ステップＳ４のバックアップ処理の詳細例を、図３に示す。尚、図３に示す例では、キー情報は上述した図１に示す例を用いている。
【００８１】
まず、「前回変数アドレス情報」１２のキー情報“Key_r”を読出す（ステップＳ２１）。更に、ＰＬＣ２０からキー情報を読み出す（ステップＳ２２）。但し、ＰＬＣ２０にキー情報が存在しない場合には（ステップＳ２３、ＮＯ）、更新不可等を示す所定の警告を報知して（ステップＳ２６）、本処理を終了する。
【００８２】
一方、ＰＬＣ２０にキー情報が存在して（ステップＳ２３，ＹＥＳ）これをステップＳ２２で取得できた場合には、当該ＰＬＣ２０側のキー情報が、上記「前回変数アドレス情報」１２のキー情報“Key_r”と一致するか否かを判定する（ステップＳ２４）。図１に示す例では、一致するはずであるが、もし、キー情報が不一致ならば（ステップＳ２４，ＮＯ）上記ステップＳ２６の処理を実行して本処理を終了する。
【００８３】
キー情報が一致することを確認したら（ステップＳ２４，ＹＥＳ）、前回変数アドレス情報１２に登録されている各アドレス（旧アドレス）に基づいて、ＰＬＣ２０内の不図示のメモリの旧アドレスからデータを読み出して、これを旧アドレスと新アドレスとに対応付けて一時的に記憶する（ステップＳ２５、Ｓ２７、Ｓ２８）。これは、上記従来のデータ再配置情報１２０の生成処理と略同様の処理を実行するものと見做してもよい。尚、本説明では、データ再配置情報の具体例は、上記従来のデータ再配置情報１２０と同様のデータ再配置情報３０を用いるものとする。
【００８４】
尚、上記新アドレスとは、変数アドレス情報１１に登録されている各アドレスのことである。尚、変数アドレス情報１１の各レコードは、上述したように、変数名に応じた割当アドレス等から成り、本例では現在のプログラムｗに係わる各変数の変数名と割当アドレスが格納されることになる。また、前回変数アドレス情報１２は、既存の変数アドレス情報１１を退避させたものであるので、そのデータ構造自体は変数アドレス情報１１と同じである。
【００８５】
上記ステップＳ２５、Ｓ２７等の処理について、以下、図２等に示すデータ再配置情報３０を用いて、一例について具体的に説明する。
例えば、前回変数アドレス情報１２の各レコードを順次処理対象として、ステップＳ２５，Ｓ２７の処理を実行する。
【００８６】
まず、前回変数アドレス情報１２における処理対象レコードの変数名と割当アドレス（上記旧アドレス）を取得する（ステップＳ２５）。そして、ＰＬＣ２０内の不図示のメモリから当該旧アドレスの格納データを読み出して、この読出データを上記処理対象レコードの変数名と割当アドレス（旧アドレス）に紐付けて記憶する。つまり、処理対象レコードの変数名と割当アドレス（旧アドレス）と読出データを、データ再配置情報３０の新規追加レコードの変数名３１と旧アドレス３２と値３４とにそれぞれ格納する（ステップＳ２７）。
【００８７】
ステップＳ２７では、更に、変数アドレス情報１１における上記変数名３１に対応する割当アドレス（新アドレス）を取得して、これを上記新規追加レコードの新アドレス３３に格納する処理も行う。これによって、データ再配置情報３０の１レコードが作成完了することになる。
【００８８】
前回変数アドレス情報１２の全てのレコードについて上記ステップＳ２５、Ｓ２７の処理を実行するまで、上記ステップＳ２５、Ｓ２７の処理を繰り返す。そして、全レコードについて処理実行したら（ステップＳ２８，ＹＥＳ）本処理を終了する。
【００８９】
尚、図３の処理の開始前に、例えば図１に示すようにＰＬＣ２０側の保持データを取得してバックアップデータ１４として支援装置１０側に保持しておき、ステップＳ２２、Ｓ２７の処理では、ＰＬＣ２０からデータを取得するのではなく、バックアップデータ１４からデータ取得するようにしてもよい。
【００９０】
上記ステップＳ４の処理によってデータ再配置情報３０の作成が完了したら、上記更新版等の新たなプログラムｗを、そのキー情報（本例では“Key_ｗ”）と共に、ＰＬＣ２０にダウンロードする（ステップＳ５）。
【００９１】
図４に、ステップＳ５の詳細フローチャート図を示す。
上記更新版等のプログラムｗを、キー情報“Key_ｗ”を付してＰＬＣ２０にダウンロードする（ステップＳ１１）。これは、例えば、上記ステップＳ２で作成された更新版等のプログラムｗを、当該ステップＳ２のコンパイル処理に伴って生成した上記キー情報“Key_ｗ”を付してＰＬＣ２０にダウンロードする。
【００９２】
これによって、次回のプログラム更新の際には、例えば図３の処理を実行する時点では、「前回変数アドレス情報」１２は、上記キー情報“Key_ｗ”付随の変数アドレス情報になっていると共に、正常であればＰＬＣ２０側のキー情報も“Key_ｗ”であるはずである。
【００９３】
上記ステップＳ５のダウンロード処理後、リストア処理を行う（ステップＳ６）。
図５は、ステップＳ６の詳細フローチャート図である。
図５において、まず、変数アドレス情報１１に付随のキー情報（本例では“Key_ｗ”）を読出すと共に（ステップＳ３１）、ＰＬＣ２０からキー情報を読み出す（ステップＳ３２）。図４の処理により、ＰＬＣ２０側に特に異常が無ければ、ＰＬＣ２０側で保持するキー情報は、“Key_ｗ”となっているはずである。しかし、ＰＬＣ２０側に何らかの異常があって、ＰＬＣ２０側にキー情報が存在しなかったり（ステップＳ３３，ＮＯ）、ＰＬＣ２０側のキー情報が、ステップＳ３１で読み出したキー情報“Key_ｗ”と不一致の場合には（ステップＳ３４，ＮＯ）、リストア操作不可である旨の警告を報知する等して（ステップＳ３６）、本処理を終了する。
【００９４】
一方、ＰＬＣ２０側のキー情報が、上記変数アドレス情報１１に付随のキー情報“Key_ｗ”と一致することを確認したならば（ステップＳ３４，ＹＥＳ）、上記データ再配置情報３０の各レコードを順次参照して、リストア処理を実行する。
【００９５】
すなわち、データ再配置情報３０の任意のレコードを参照して（ステップＳ３５）、そのレコードの値３４のデータを、当該レコードの新アドレス３３の記憶領域に格納する（ステップＳ３７）。当該ステップＳ３５、Ｓ３７の処理を、データ再配置情報３０の全レコードについて順次実行していき、全レコードについて実行完了したら（ステップＳ３８，ＹＥＳ）本処理を終了する。
【００９６】
尚、オンライン状態にしてステップＳ３でキー情報一致を確認したら、引き続きオンライン状態のままでステップＳ４、Ｓ５、Ｓ６の処理を実行する。尚、ステップＳ５の実行タイミングは、図２に示す例に限らず、例えばステップＳ６の処理後に実行してもよい。但し、その場合には、ステップＳ１１，Ｓ１２の「新たなキー情報生成と該キー情報を変数アドレス情報１１に付与する処理」は、例えばステップＳ２の処理の際に行っておく。
【００９７】
また、上記ステップＳ３１〜Ｓ３４の処理は、必ずしも必要ないものである。すなわち、上記ステップＳ３１〜Ｓ３４の処理は、ダウンロード処理後にリストア処理を行う例に対応するものであり、ダウンロードが正常に行われたことを確認する為の処理である。よって、必ずしも必要ない処理であり、更に例えばリストア処理後にダウンロード処理を行う例の場合には必要ない処理である。
【００９８】
図６は、本例の支援装置１０とＰＬＣ２０の機能ブロック図である。
まず、支援装置１０は、プログラム記憶部５１、コンパイラ部５２、新旧変数アドレス情報管理部５３、一致判定部５４、変数データ再配置部５５、ダウンロード部５６等を有する。支援装置１０は、更に、プログラム作成支援部５７等を有するものであってもよい。
【００９９】
プログラム記憶部５１は、既存のプログラムに基づいて作成された任意の新規プログラムを記憶する。
コンパイラ部５２は、上記新規プログラムをコンパイルする。すなわち、新規プログラムのソースコードをコンパイルして機械語オブジェクトに変換する。更に、このコンパイル処理に伴って、該新規プログラムの各変数のメモリ割当情報を生成すると共に、ユニークなキー情報を生成する。
【０１００】
新旧変数アドレス情報管理部５３は、上記既存プログラムに係わる変数アドレス情報を前回変数アドレス情報として退避させると共に、上記キー情報を付与したメモリ割当情報を新たな上記変数アドレス情報として記憶する。尚、この様に、変数アドレス情報はキー情報が付与されているので、これを退避させて成る上記前回変数アドレス情報にも、当然、キー情報が付与されていることになる。ユニークなキー情報であるので、当然、前回変数アドレス情報に付与されているキー情報は、新たな変数アドレス情報に付与されているキー情報とは、異なることになる。
【０１０１】
一致判定部５４は、ＰＬＣ２０側で保持するキー情報が、上記前回変数アドレス情報に付与されているキー情報と一致するか否かを判定する。
変数データ再配置部５５は、一致判定部５４により上記２つのキー情報が一致すると判定された場合に、上記新たな変数アドレス情報と上記前回変数アドレス情報とに基づいて、ＰＬＣ２０内の不図示のメモリにおける各変数のデータを再配置する。
【０１０２】
ダウンロード部５６は、上記一致判定部５４により上記２つのキー情報が一致すると判定された場合に、上記コンパイル後の新規プログラムを上記生成したキー情報と共にＰＬＣ２０にダウンロードして記憶させる。
【０１０３】
プログラム作成支援部５７は、上記既存のプログラムに基づく任意の新規プログラムの作成作業を支援する。この機能自体は既存の一般的な機能である。
そして、プログラム作成支援部５７による新規プログラムの作成作業や、その動作検証作業等は、ＰＬＣ２０と接続していないオフライン状態で実施される。その一方で、一致判定部５４の上記判定処理と変数データ再配置部５５による上記各変数のデータを再配置する処理は、ＰＬＣ２０と接続したオンライン状態で例えば連続して実行される。
【０１０４】
また、上記新たな変数アドレス情報と上記前回変数アドレス情報は、何れも、各変数に応じたＰＬＣ２０内のメモリへの割当アドレスを有している。ここでは、各変数毎に、上記新たな変数アドレス情報における割当アドレスを新アドレス、上記前回変数アドレス情報における割当アドレスを旧アドレスとする。上記各変数のデータの再配置は、例えば、ＰＬＣ２０内の上記メモリについて旧アドレスから読み出したデータを新アドレスに書き込む処理である。
【０１０５】
また、例えば、上記新規プログラムは、上記既存プログラムの更新版であり、該新規プログラムが作成されることで該既存プログラムは無くなる。つまり、新規プログラムが作成済みの状態では、既存プログラムは支援装置１０には記憶されていない。但し、このとき、既存プログラムは、ＰＬＣ２０には記憶されており動作中かもしれない。そうであれば、ＰＬＣ２０側における各変数の格納アドレスは、実質的に上記前回変数アドレス情報に応じたものとなっていることになる。よって、上記旧アドレスからデータを読み出せば、各変数に応じた現状の正常なデータが取得できることになる。
【０１０６】
また、ＰＬＣ２０は、例えば、記憶部６１、制御部６２等を有する。
記憶部６１は、上記ダウンロード部５６によりダウンロードされる上記コンパイル後の新規プログラムと上記キー情報とを記憶する。
【０１０７】
制御部６２は、記憶部６１に記憶された上記コンパイル後の新規プログラムを実行することで所定の制御を行う。
尚、ＰＬＣ２０に関しては、記憶部６１に記憶されるプログラムに、キー情報が付与されている点を除けば、従来と同様と見做してよいので、これ以上は説明しない。
【０１０８】
上述したように、本手法によれば、支援装置１０側でオフライン状態で更新版プログラムの作成等を行う場合でも、現在のＰＬＣ２０側のプログラムが、更新元のプログラムと同一であるか否かを、キー情報に基づいて判別できる。換言すれば、現在のＰＬＣ２０側における各変数のメモリ割当てが、「前回変数アドレス情報」１２と同一であることを、キー情報が一致することによって確認できる。キー情報が一致するならば、「前回変数アドレス情報」１２に基づいてＰＬＣ２０のメモリの各旧アドレスのデータを読み出して、このデータを新たな変数アドレス情報１１に基づいて新アドレスに書き込むことで、各変数に係わるデータの移動を正常に行うことができる。つまり、割当アドレスが変わっても、データの引継ぎを正常に行えることになる。そして、更新版プログラムをＰＬＣ２０にダウンロードして実行させることになる。
【０１０９】
そして、上記のように更新版プログラムの作成は、オフライン状態で行うことができるので、従って作成したプログラムの動作検証等も別環境などで行うことができる。よって、動作検証済みの更新版プログラムをＰＬＣ２０にダウンロードすることができ、ＰＬＣ２０側で更新後の動作が異常になることを防止できる。
【０１１０】
従来では、プログラム一致確認、プログラム編集、ダウンロード、データのバックアップおよびリストアといった一連の操作を、オンライン状態のまま継続して行う必要があった。この対して、本手法では上記のように、オンライン状態で既存プログラムの一致確認と既存プログラムに基づく更新版のプログラムの作成等の上記一連の処理を行わなくても、プログラム更新に伴う各変数の割当アドレスの変更に対応する変数データの再配置を正常に行うことができ、更にオフライン状態で別環境等で、プログラム編集や動作検証等を行うことができる。オフラインで更新版プログラムの動作検証を行った後に、その更新元のプログラムにて稼働中のＰＬＣ２０に対して更新処理を行える。このように、ＰＬＣ内のデータ更新を安全に行えるようになるとともに、エンジニアリングの効率化を図れるという効果を有する。
【０１１１】
尚、ＰＬＣ２０のプログラムの更新やそれに伴う変数データ再配置は、更新対象のＰＬＣの稼動中に行われるが、ステップＳ３〜Ｓ６の処理中は、更新対象のＰＬＣ２０の制御プログラム実行は中断している。
【符号の説明】
【０１１２】
１０  支援装置
１１  変数アドレス情報
１２  前回変数アドレス情報
１４  バックアップデータ
２０  ＰＬＣ（プログラマブルコントローラ）
３０  データ再配置情報
３１  変数名
３２  旧アドレス
３３  新アドレス
３４  値
５１  プログラム記憶部
５２  コンパイラ部
５３  新旧変数アドレス情報管理部
５４  一致判定部
５５  変数データ再配置部
５６  ダウンロード部
５７  プログラム作成支援部
６１  記憶部
６２  制御部
【図２】
2015022511.tif 000003
【図３】
2015022511.tif 000004
【図４】
2015022511.tif 000005
【図５】
2015022511.tif 000006
【図６】
2015022511.tif 000007
【図８】
2015022511.tif 000008
【図１】
2015022511.tif 000009
【図７】
2015022511.tif 000010