JP2015005224A - プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ、プログラム - Google Patents

プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ、プログラム Download PDF

Info

Publication number
JP2015005224A
JP2015005224A JP2013131118A JP2013131118A JP2015005224A JP 2015005224 A JP2015005224 A JP 2015005224A JP 2013131118 A JP2013131118 A JP 2013131118A JP 2013131118 A JP2013131118 A JP 2013131118A JP 2015005224 A JP2015005224 A JP 2015005224A
Authority
JP
Japan
Prior art keywords
machine language
language object
plc
programmable controller
switching
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013131118A
Other languages
English (en)
Other versions
JP6119452B2 (ja
Inventor
吉原 大助
Daisuke Yoshihara
大助 吉原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fuji Electric Co Ltd
Original Assignee
Fuji Electric Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fuji Electric Co Ltd filed Critical Fuji Electric Co Ltd
Priority to JP2013131118A priority Critical patent/JP6119452B2/ja
Publication of JP2015005224A publication Critical patent/JP2015005224A/ja
Application granted granted Critical
Publication of JP6119452B2 publication Critical patent/JP6119452B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Programmable Controllers (AREA)

Abstract

【課題】PLCの稼働中に制御プログラムを更新する際に、共通変数のデータの有効性を保証する。【解決手段】開発支援装置20の切替指示部73が、任意の共通変数に係わる書込側PLC10にのみ切替指示を送信し、当該書込側PLCが、自己の新たな機械語オブジェクトを実行完了後に、切替制御部82によって読込側PLC10に対して切替指示を送信する。これより、書込側PLC10で新たな機械語オブジェクトが実行された後に、読込側PLC10が自己の新たな機械語オブジェクトを実行するように制御される。【選択図】図13

Description

本発明は、複数のプログラマブルコントローラが共有メモリ経由で連携して動作するシステムに係わり、特にプログラム更新時の処理に関する。
従来、複数のプログラマブルコントローラ(以下、PLCと記す)を連携して動作させるシステムを構築する場合、共有メモリに変数を割り付け、共有メモリ経由でPLC間のデータ連携を実現する方法がある。これは、通常、共有メモリに対して値を書き込むPLCと、その情報を利用する(読み込む)PLCが存在する。前者を書込側PLC、後者を読込側PLCと記すものとする。
尚、よく知られているように、各PLCはそのPLC用の制御プログラムを保持しており、この制御プログラムを定周期で実行することで、各種制御対象機器の制御を行う。制御プログラムには、任意の変数が記述されており、プログラム実行時にはその変数に割り当てられたメモリ領域にアクセスする。この様な変数の一種として、上記のように共有メモリにアクセスする変数があり、ここでは“共通変数”と呼ぶものとする。
尚、上記のようなシステムは、共通変数を介して複数のPLCが連携して動作するシステムと言うこともできる。
ここで、上記のようなシステムにおいて、稼働中のPLCに対して制御プログラムの更新を実施する場合、同時期に複数のPLCのプログラムの更新を実施するが、特に例えば上記書込側PLCの制御プログラム更新を行う場合、これに対応する上記読込側PLCの制御プログラム更新も行う必要がある場合が多い。
また、従来より、制御プログラム更新が行われる場合、既存の制御プログラムの変数に関しては、既存の割当てメモリアドレスが引き継がれるようにする機能を、コンパイラが有している。一方、更新版の制御プログラムに新たな変数が追加されている場合がある。
この様な場合、コンパイラは、当該新変数に新たなメモリ領域を割り当てることになる。このメモリ領域は、それまで使用されていなかったので、その格納データは不定であるか、あるいは固定値(一般的には‘0’)が格納されている。この様な不定データ等を読み出すと、何らかの異常が発生する可能性があることが知られている。
そのため、特に上記“共通変数”に係わり新変数がある場合には、共有メモリにおける新変数への割当メモリ領域に対して、上記書込側PLCが最低1回は書き込みを実施した後で、上記読込側PLCがその値を読み込むように、プログラムの変更を制御する必要がある。勿論、これは、プログラム更新直後の話である。換言すれば、更新版プログラムを最初に実行するときの話である。つまり、上記のことは、まず、書込側PLCの更新版プログラムを最低1回は実行させることで新変数の割当メモリ領域への書込みを実行させた後で、読込側PLCの更新版プログラムを実行させる必要があるというものである。
しかしながら、従来、この様な制御プログラムの変更制御を自動で行うことは実現できておらず、従ってユーザが手作業で指示を出して、各PLCのプログラム更新タイミングを決めていた。
あるいは、この様な作業を不要とする為に、制御プログラムに工夫を施していた。これについて、図14を参照して説明する。
図14(b)には、任意の“共通変数”に係わる上記書込側PLCと読込側PLCの制御プログラム例を示す。図上左側に示すPLC1のプログラム例が、書込側PLCの制御プログラム例である。また、図上右側に示すPLC2のプログラム例が、読込側PLCの制御プログラム例である。また、図上中央には、共有メモリ(コモンメモリ)への変数データ等の格納イメージを示す。
図示のPLC1のプログラム例は、1行目は変数1に‘123’を代入するものである。これはPLC1上の動作としては、コモンメモリにおける変数1への割当メモリ領域にデータ‘123’を書き込む処理となる。また、2行目はフラグ1にTRUEを代入するものである。これはPLC1上の動作としては、コモンメモリにおけるフラグ1の割当メモリ領域の1ビットデータ(フラグ)をONする処理となる。つまり、変数1に関してデータ‘123’を書き込んだら、所定のフラグをONする処理である。尚、ここでは、このプログラムは上記更新版プログラムであり、変数1は、この更新版プログラムで追加された“共通変数”であるものとする。
一方、図示のPLC2のプログラム例は、全体として、もし上記フラグがONである場合には、上記変数1の割当メモリ領域からデータを読み出して‘567’を乗算する処理となる。尚、このプログラムも更新版プログラムであるものとする。
上記のように、変数の値の有効性を示すフラグを利用して、変数に値を書き込んだ後で、変数の値が有効になったことを示すフラグを有効にし、値を利用するPLCは、フラグが有効になった場合に、変数の値を利用するようなプログラミングをする。
これによって、PLC1の更新版プログラムが実行されるよりも前にPLC2の更新版プログラムが実行された場合でも、フラグONの条件が満たされないので、変数1のデータ読出しは実行されない。よって、上記問題発生を防止できる。しかしながら、この方法では、ユーザのプログラミングが煩雑であり、フラグもコモンメモリ上に必要となる。コモンメモリは、PLCの他のメモリ容量より小さいため、1ビットであっても余計な領域を使用したくないものである。この様に、フラグのための余計な領域を浪費する問題がある。
尚、図14(b)に示すのは、制御プログラムのソースコード例である。従来より、不図示の支援装置において、ユーザが任意の制御プログラムのソースコードを作成する。そして、支援装置はコンパイラを有しており、このソースコードをコンパイルして、PLCで実行できる機械語オブジェクトへと変換する。コンパイラは、コンパイル処理の際に各変数に任意のメモリアドレスを割り当てる。また、メモリ割当結果を記憶しており、更新版プログラムのコンパイルの際には、既存の変数に対しては同じアドレスを割り当てるように管理している。勿論、更新版プログラムで新たに追加された新規変数に対しては、新たに任意のアドレスを割り当てることになり、これは未使用の記憶領域を割り当てるものと言える。
また、コンパイラが、上記コンパイル処理に伴って、例えば図14(a)に示すような共通変数アドレス表100を生成する場合もある。
図示の共通変数アドレス表100は、変数名101、アドレス102、PLC名103等から成る。変数名101の各変数毎に、その割当メモリアドレスがアドレス102に格納されると共に、リード/ライトするPLCを示す情報がPLC名103の欄に格納される。
図示の共通変数アドレス表100は、上記各“共通変数”に関して、その割当メモリアドレスや、リード/ライトするPLCが登録されるものである。図示の「W」がライトを意味し、「R」がリードを意味する。PLC名103の欄には各PLC名が設定され、図示の例ではPLC1,PLC2,PLC3の各PLC名が設定される。そして、変数名101の変数に関して上記読込側となるPLC名に対しては「R」が格納され、書込側となるPLC名に対しては「W」が格納される。よって、図示の例では、変数1に対しては、PLC1が書込側、PLC2が読込側となることを示している。
また、ここでは、共通変数アドレス表100にはフラグに関する登録も行われるものとする。
また、特許文献1に開示されている従来技術が知られている。
特許文献1の発明では、制御装置間でのデータのやり取りに対して同じラベル名を用いたプログラムの作成が可能で、かつ、そのラベルのデバイスへの関連付けやデバイスの割付作業がシステム構成に基づいて自動で行われる。制御装置間で同じラベル名を用いたプログラム作成を行うことで、装置開発を効率化することができる。
特許4541437号公報
上記のように、複数のプログラマブルコントローラが共有メモリ経由で連携して動作するシステムに関して、従来では、システム稼動中に制御プログラム更新を行う際に上述した問題が生じる。すなわち、上記“共通変数”に関して、書込側PLCの更新版プログラムによってデータを書き込む前に、読込側PLCの更新版プログラムによるデータ読出しが行われてしまう場合に、何らかの問題が生じる可能性がある。換言すれば、共通変数のデータの有効性を保証することができない為、読込側PLCが不定データ等を読み出す可能性があり、それによって読込側PLCに何らかの異常動作等が生じる可能性がある。
この課題を解決する為に、すなわち共通変数のデータの有効性を保証するために、図14(b)で説明した方法を用いる場合、上記の通り、ユーザのプログラミングが煩雑であり、また、フラグの為に共通メモリの記憶領域を浪費する等の問題が生じる。
また、特許文献1の発明は、上記課題を解決するものではない。
本発明の課題は、フラグやデータの有効性の判断処理を必要とすることなく、PLCの稼働中に制御プログラムを更新する際に、共通変数のデータの有効性を保証することができるプログラマブルコントローラシステム、そのプログラマブルコントローラ、支援装置等を提供することである。
本発明のプログラマブルコントローラシステムは、支援装置と複数のプログラマブルコントローラとがネットワークに接続され、共通変数を介して複数のプログラマブルコントローラ間のデータ連携を実現するシステムであって、下記の構成を有する。
前記支援装置は、各プログラマブルコントローラ用の制御プログラムのソースコードであって前記共通変数が含まれる任意のソースコードを、コンパイルして機械語オブジェクトに変換するコンパイラ手段と、前記各プログラマブルコントローラに対して、そのプログラマブルコントローラ用の前記機械語オブジェクトを転送すると共に、前記コンパイル処理に伴って得られる所定情報に基づいて、該転送する機械語オブジェクトに係わる前記共通変数の読込側のプログラマブルコントローラを、通知する転送・通知手段と、前記コンパイル処理に伴って得られる所定情報に基づいて、前記共通変数の書込側のプログラマブルコントローラを認識して、該書込側のプログラマブルコントローラに対して切替指示を通知する切替指示手段とを有する。
前記プログラマブルコントローラは、任意の切替指示に応じて、既存の機械語オブジェクト実行状態から前記転送された新たな機械語オブジェクト実行状態に切替える切替手段と、該新たな機械語オブジェクトを1回以上実行後に、前記転送・通知手段から通知された前記読込側のプログラマブルコントローラに対して、切替指示を通知するあるいは前記支援装置から切替指示を通知させる切替制御手段とを有する。
本発明のプログラマブルコントローラシステム、そのプログラマブルコントローラ、支援装置等によれば、フラグやデータの有効性の判断処理を必要とすることなく、PLCの稼働中に制御プログラムを更新する際に、共通変数のデータの有効性を保証することができる。
本例のプログラマブルコントローラシステムの構成図である。 PLCにおける一般的なプログラム実行状況を示す図である。 ソースコード管理表作成の具体例を示す図である。 (a)はソースコードの具体例、(b)〜(d)は共通変数管理表の具体例である。 運用中の制御プログラム更新の際のPLC側の動作を説明する為の図(その1)である。 運用中の制御プログラム更新の際のPLC側の動作を説明する為の図(その2)である。 運用中の制御プログラム更新の際のPLC側の動作を説明する為の図(その3)である。 運用中の制御プログラム更新の際のPLC側の動作を説明する為の図(その4)である。 関連表の生成処理フローチャート図である。 (a)、(b)は、関連表生成の具体例である。 制御プログラム更新の際の開発支援装置の処理フローである。 プログラム更新に係わる各PLCの処理フローチャート図である。 本例のプログラマブルコントローラシステムの機能ブロック図である。 (a)は従来の共通変数アドレス表、(b)は従来のソースコードの具体例である。
以下、図面を参照して本発明の実施の形態について説明する。
図1は、本例のプログラマブルコントローラシステムの構成図である。
本例のプログラマブルコントローラシステムは、上述した従来のシステムと同様、複数のプログラマブルコントローラが共有メモリ経由で連携して動作するシステムである。換言すれば、複数のプログラマブルコントローラが共通変数を介して連携して動作するシステムである。そして、稼動中に制御プログラム更新を行うものである。この様なシステムでは、従来では上述した問題が生じる場合がある。本例のプログラマブルコントローラシステムでは、この様な課題を解決できる。
本例のプログラマブルコントローラシステムは、複数のPLC(プログラマブルコントローラ)10と、開発支援装置20が、ネットワーク9に接続された構成である。尚、複数のPLC10は、図示の例ではPLC1、PLC2、PLC3の3台のPLCを例にする。
PLC10の構成は、3台とも略同様であるものとし、図示の例では管理部11、メモリ(プログラム用)12、コモンメモリ13、実行管理テーブル14等を有する。尚、実行管理テーブル14は、不図示のデータ格納用メモリ等に格納される。
メモリ(プログラム用)12には、そのPLC10が実行する各種制御用の制御プログラム等が格納される。不図示のCPU等が、この制御プログラムを実行することで、不図示の制御対象機器等に対する各種制御が行われる。そして、この制御プログラムは、当該PLC10が稼働中に更新される。
尚、後述するように、上記開発支援装置20において上記制御プログラムのソースコードが任意に作成されて、これがコンパイルされて機械語オブジェクトが生成されて、この機械語オブジェクトがPLC10にダウンロードされて、メモリ(プログラム用)12に格納される。つまり、メモリ(プログラム用)12には、制御プログラムの機械語オブジェクトが格納されている。
また、上記制御プログラムは、更新される場合がある。その場合、まず、開発支援装置20において更新版の制御プログラムのソースコードが任意に作成されて、これがコンパイルされて更新版の機械語オブジェクトが生成されて、この更新版の機械語オブジェクトがPLC10にダウンロードされて、メモリ(プログラム用)12に格納される。
ここで、制御プログラム更新は、基本的に、運用中に行われる。よって、例えば、更新版の機械語オブジェクトをメモリ(プログラム用)12に格納する処理中や格納完了直後等には、旧版の機械語オブジェクトはメモリ(プログラム用)12に格納されていると共にCPUによって定期的に実行されている。そして、更新版の機械語オブジェクトをメモリ(プログラム用)12に格納完了後に、任意のときに、制御プログラム切替処理が行われる。これによって、旧版の機械語オブジェクトが実行される状態から、更新版の機械語オブジェクトが実行される状態へと移行することになる。
この様な機械語オブジェクトの実行管理制御に、上記実行管理テーブル14が用いられるが、これについては後述する。尚、上記実行管理テーブル14自体やこれを用いた上記“機械語オブジェクトの実行管理制御”自体は、既存技術であるので、簡単に説明するものとする。
また、本例のプログラマブルコントローラシステムは、上記の通り、複数のプログラマブルコントローラ10が共有メモリ経由で連携して動作するシステムであり、これに応じて本例では各PLC10はコモンメモリ13を有する。コモンメモリ13には、複数のPLC10で共有する変数(上記共通変数)のデータが格納される。尚、従来より、各PLC10が、自己のコモンメモリ13のデータをブロードキャスト送信することで、全てのコモンメモリ13で同一のデータが格納された状態となるように制御されている。
コモンメモリ13に格納される各共通変数毎に、その共通変数に係わるデータを書き込むPLC10と、このデータを読み込むPLC10が存在する。上述したように、前者を書込側PLC、後者を読込側PLCと呼ぶものとする。
ここで、上記更新版の制御プログラムにおいて新たな共通変数が追加されている場合がある。この様な新たな共通変数に関しては、コモンメモリ13に当該新たな共通変数のデータ格納領域が割り当てられているが、初期状態ではこの割当領域のデータは不定状態や‘0’等となっている。この為、この共通変数に係わる読込側PLCが、この様な不定のデータを読み込むと、誤動作する可能性があり、問題となる。
この為、まず、上記新たな共通変数に係わる書込側PLCが、その割当領域にデータを書き込む動作を最低1回行った後に、この共通変数に係わる読込側PLCが動作するように制御する必要がある。本手法では、これを自動で実現させる。詳しくは後述する。
尚、制御プログラムで用いる変数は、コモンメモリ13に格納する共通変数に限らないが、以下の説明では特に断らない限りは「変数」は、コモンメモリ13に格納する共通変数を意味するものとする。
管理部11は、例えば上記制御プログラムの実行や更新など、PLC10に係わる各種制御を行う。詳しくは後述する。尚、メモリ(プログラム用)12には上記制御プログラム以外にも所定のアプリケーションプログラムが記憶されている。上記不図示のCPUが、このアプリケーションプログラムを実行することで、例えば管理部11の後述する各種処理機能が実現される。
開発支援装置20は、ユーザによる任意の制御プログラムのソースコードの作成作業を支援する機能を有する。この機能自体は、既存の機能であり、よって特に図示・説明はしないが、この機能によって例えば図示の各ソースコード1,2,3等がユーザによって任意に作成される。
尚、ソースコード1は、PLC1用の制御プログラムのソースコードである。ソースコード2は、PLC2用の制御プログラムのソースコードである。ソースコード3も同様である。尚、本説明では、基本的に、例えばPLC1用のソースコードや機械語オブジェクトに関しては、番号の先頭は必ず‘1’とする。つまり、上記ソースコード1や後述するソースコード1−1、1−2、機械語オブジェクト1、機械語オブジェクト1−1等のように、その番号の先頭は必ず‘1’とする。同様に、例えばPLC2用のソースコードや機械語オブジェクトに関しては、番号の先頭は必ず‘2’とする。
また、本説明では、ソースコートの番号と、これをコンパイルして成る機械語オブジェクトの番号とを、同一とする。例えば、後述するソースコード1−1をコンパイルすることで後述する機械語オブジェクト1−1が生成される。
開発支援装置20は、コンパイラ21を有する。コンパイラ21は、上記作成されたソースコードをコンパイルして、PLC10上で動作する機械語オブジェクトに変換する。例えば、ソースコード1をコンパイルして機械語オブジェクト1を生成する。尚、上記の通り、機械語オブジェクト1は、PLC1用である。そして、不図示の転送部によって、コンパイラ21で生成した機械語オブジェクトを、対応するPLC10にダウンロードする。例えば上記機械語オブジェクト1は、PLC1にダウンロードする。尚、上記機械語オブジェクトに変換する機能自体は、既存技術である。
ここで、本例のコンパイラ21は、上記コンパイル処理に伴って、図示の共通変数管理表22やソースコード管理表23を生成・更新する。コンパイラ21は、更に、例えば、各PLC1,2、3毎に対応する機械語オブジェクト関連表24を生成する。
生成された機械語オブジェクト関連表24は、対応するPLC10に転送されて記憶される。各PLC10では、自己の制御プログラム更新の際に、機械語オブジェクト関連表24に基づいて、場合によっては他のPLC10に対して切替コマンドを出す。これについては詳しくは後述するが、これによって、任意の変数に係わる書込側PLC10で更新版プログラムが最低1回は実行された後に、読込側PLC10で更新版プログラムが実行されるようになる。よって、読込側PLC10でコモンメモリ13から読み込む変数データが、上記不定データ等となることはなく、異常動作となることを防止できる。
上記構成のプログラマブルコントローラシステムでは、開発支援装置20が、上記コンパイル実行に伴って、各共通変数に係わる“書込側PLC10”と“読込側PLC10”とを共通変数管理表22に記録することで、当該共通変数管理表22を生成する。また、開発支援装置20は、稼働中のPLC10のプログラムの変更を実施する際には、更新版のプログラムや機械語オブジェクト関連表24をPLC10にダウンロードすると共に、共通変数管理表22の情報に基づいて上記“書込側PLC10”だけにプログラム更新指示を送信する。これによって、まず、“書込側PLC10”だけが、自己のプログラム更新を行うことになる。つまり、上記更新版プログラムを実行する状態へと切替える。
ここで、本手法では、開発支援装置20は、上記“読込側PLC10”に対しては、プログラム更新指示を出さなくてもよい。すなわち、プログラム更新が実施された上記“書込側PLC10”が、例えば更新版の制御プログラムを1回以上実行完了した後に、上記機械語オブジェクト関連表24に基づいて上記“読込側PLC10”に対してプログラム更新指示を出す。
本手法では、概略的には例えば上記のようにすることにより、共通変数のデータの有効性を保証する。すなわち、上記のように“読込側PLC10”が不定データを読み出してしまうことで異常動作するような事態を防止できる。詳しくは後述する。
ここで、図2に、PLCにおける一般的なプログラム実行状況を示す。
一般的に、PLCは制御プログラムを定周期で実行するものであり、本例のPLC10も同様である。すなわち、各PLC10は例えば図2に示すように、定周期で制御プログラムを実行する。制御対象は、不図示の例えば工場内の各種設備等である。そして、制御プログラム実行時以外の時間帯(空き時間)に、システム上の各種制御処理を行う。例えば、本手法による更新版プログラムのダウンロードや、更新版プログラムの切替に係わる各種処理やメッセージの送受信処理等の様々な処理を実行する。
尚、図2上では、上記システム上の各種制御処理を「システム」と記してある。つまり、図示の「システム」は、制御プログラム以外の各種処理が実行される帯域を意味するものと考えてもよい。
尚、例えば図2のようなプログラムの実行管理は、上記管理部11が実行する。また、尚、制御プログラムを作成するプログラマは、通常、定周期期間内に実行完了するように制御プログラムを作成するものである。
上記のように、開発支援装置20においては、ユーザが任意のソースコードを記述する。コンパイラ21が、このソースコードを機械語オブジェクトに変換すると共に、これらソースコードと機械語オブジェクトの関連の情報を、ソースコード管理表23に記憶する。
ここで、図3に、ソースコード管理表23の作成の具体例を示す。
図3では、開発支援装置20において、ユーザが、PLC1用のソースコード1−1と、PLC2用のソースコード2−1を任意に作成したものとする。
これより、コンパイラ21は、例えばまずソースコード1−1をコンパイルして機械語オブジェクト1−1を生成する。更に、このコンパイルに伴って所定情報を、ソースコード管理表23に記憶する。
ここで、ソースコード管理表23は、例えば図3に示すように、番号31、PLC32、ソースコード名33、機械語オブジェクト名34の各データ項目より成る。
ソースコード名33には上記コンパイルしたソースコードの識別情報(名称、ID等)が格納され、このソースコードがどのPLC用であるかを示す情報がPLC32に格納される。尚、ここでは例えば各ソースコードには、それがどのPLC用のソースコードであるのかを示す情報が、含まれているものとする。そして、ソースコード名33のソースコードをコンパイルして得られる機械語オブジェクトの識別情報(名称、ID等)が、機械語オブジェクト名34に格納される。
また、番号31には、この制御プログラム(ソースコード名33と機械語オブジェクト名34)の管理番号が格納される。ここでは、開発支援装置20は、一連の制御プログラムには同一の“管理番号”を付与するように管理制御している。ここで、通常、PLCの各制御プログラムは、初期版が作成されてPLCで運用実行された後、随時、バージョンアップされる場合が少なくない。上記“一連の制御プログラム”とは、これら初期版及び各バージョンアップ版を意味する。つまり、任意の制御プログラムの初期版が作成された際にそれに任意の管理番号を付与すると、その後、この制御プログラムの更新版には全て同一の管理番号が付与される。
尚、上記の通り、“制御プログラム”は、ソースコード、機械語オブジェクトであり、任意のソースコードをコンパイルして生成される機械語オブジェクトには、当該ソースコードの管理番号と同じ管理番号が付与される。
上述したことから、上記ソースコード1−1に関しては、仮に管理番号‘1’が付与されているとした場合、図示のように、番号31=1、PLC32=PLC1、ソースコード名33=ソースコード1−1、機械語オブジェクト名34=機械語オブジェクト1−1が、ソースコード管理表23に記憶されることになる。
続いて、コンパイラ21は、ソースコード2−1をコンパイルして機械語オブジェクト2−1を生成する。これに伴って、図示のように、番号31=2、PLC32=PLC2、ソースコード名33=ソースコード2−1、機械語オブジェクト名34=機械語オブジェクト2−1が、ソースコード管理表23に記憶されることになる。尚、ここでは、ソースコード2−1に対しては管理番号=‘2’が付与されているものとする。
ここで、例えば、後に、上記ソースコード1−1の更新版であるソースコード1−1’が作成されたものとする。この場合、上述したように、この更新版のソースコード1−1’の管理番号は‘1’となる。これより、コンパイラ21は、このソースコード1−1’をコンパイルして機械語オブジェクト1−1’を生成し、これに伴って図示の情報をソースコード管理表23に記憶する。すなわち、番号31=1、PLC32=PLC1、ソースコード名33=ソースコード1−1、機械語オブジェクト名34=機械語オブジェクト1−1が、ソースコード管理表23に記憶されることになる。
開発支援装置20は、上記生成した機械語オブジェクトとその管理番号等を、不図示の通信機能を利用して該当するPLC10に送信する。尚、該当するPLCとは、PLC32のPLCのことである。
また、開発支援装置20は、上記共通変数管理表22の生成も行う。これについて、以下、図4に示す具体例を参照して説明する。
ここで、図4(a)には、上記ソースコード1−1.2−1の一部の具体例を示す。
図示の例では、ソースコード1−1の一部に、変数1と変数2に関して下記のような記述がある。尚、変数1、変数2は、共通変数であるものとする。
変数1 := 123;
変数2 := 変数1*10;
上記記述の1行目は、変数1に値‘123’を代入するものであり、これはPLC10上の動作としては、変数1に割り当てられた記憶領域に、データ‘123’を書き込む処理となる。尚、この記憶領域は、コモンメモリ13上の記憶領域である。更に2行目は、変数1の値に‘123’を乗じた算出値を、変数2に代入する処理である。これは、PLC10上の動作としては、変数1に割り当てられた記憶領域からデータを読み出して、このデータに‘123’を乗じた算出値を、変数2に割り当てられた記憶領域に書き込む処理となる。
また、図4に示すソースコード2−1の例では、下記のような記述がある。
内部変数 := 変数1*567:
上記記述は、変数1の値に567を乗じた値を、内部変数に代入するものである。その為にまず変数1の値を取得する必要があり、これはPLC10上の動作としては変数1に割り当てられた記憶領域からデータを読み込む処理となる。
上記のように、変数1に関しては、PLC1が上記書込側PLCとなり、PLC2が上記読込側PLCとなる。この様なことは、従来よりコンパイラで解釈できることである。つまり、コンパイラ21は、任意のソースコードをコンパイルする処理に伴って、その各変数に対して任意のアドレスを割り当てると共に書込側PLC/読込側PLCを判別できる。そして、これによって、共通変数管理表22を作成できる。
従来は、コモンメモリへの変数の割付けをユーザが管理していた。更に、従来では、図14(b)に示すように、コモンメモリに割り付けた変数の値の有効/無効の判断に応じたプログラミングとしていた。その為のフラグの記述や図14(a)に示す管理が必要であった。そのため、フラグの分、余計な領域が必要であり、値の有効/無効の判断もユーザがプログラミングする必要があり煩雑であった。
一方、本手法では、コンパイラ21が任意のソースコードをコンパイルする処理に伴って、共通変数管理表22に所定の情報を登録する。この登録の様子を図4(b)、(c)、(d)に示す。尚、図示の例は、上記図3に示す例に応じたものである。
この例では、共通変数管理表22は、上記図3の例のソースコード1−1のコンパイル処理に伴う登録処理によって、図4(b)に示す状態となる。その後、共通変数管理表22は、上記図3の例のソースコード2−1のコンパイル処理に伴う登録処理によって、図4(c)に示す状態となる。その後の後処理によって、共通変数管理表22は、図4(d)に示す状態となる。以下、これらについて説明する。
まず、図4(b)、(c)、(d)に示す例では、共通変数管理表22は、プログラム名41、転送先PLC42、変数名43、コモンメモリアドレス44、各PLC名45等のデータ項目から成る。
プログラム名41には、コンパイル処理で生成される機械語オブジェクトの識別情報(オブジェクト名、ID等)が登録される。転送先PLC42には、この機械語オブジェクトの転送先のPLCの識別情報(PLC名、)ID等)が登録される。例えば、PLC1用の機械語オブジェクトであれば、その転送先PLCは当然、PLC1となる。ソースコードと機械語オブジェクトと転送先PLCとの関係は、ソースコード管理表23を参照すれば分かる。
また、例えば図4(a)の各変数の変数名とその変数に割り当てられた記憶領域のアドレスが、変数名43、コモンメモリアドレス44に登録される。尚、上記の通り、本説明における「変数」は、上記共通変数であるので、コモンメモリ13上のアドレスが割り当てられることになる。
そして、各PLC名45の欄には、ネットワーク上の各PLC10の名称等が示されると共に、変数名43の各変数毎に、その上記書込側PLC10に対しては図示の「W」が登録され、読込側PLC10に対しては図示の「R」が登録される。
図4(b)の状態では、上記ソースコード1−1に係わる変数である変数1、変数2が変数名43に登録されると共に、これらの各変数への割当アドレスがコモンメモリアドレス44に登録される。尚、図示の例では、変数1に対しては‘1000’番地、変数2に対しては‘1002’番地が、割り当てられている。
更に、上記の通りソースコード1−1がPLC1用のソースコードであることは分かっており、更に上記変数1、変数2の両方とも書き込み処理が行われると解析できる。よって、図4(b)に示すように、変数1、変数2の何れに対しても、各PLC名45における“PLC1”の欄に「W」が登録されることになる。尚、この時点では、PLC1以外は、変数の利用状況が判断できないため、図示のように「無し」を登録する。
尚、従来でも、図14(a)に示す例のように、書込側PLC/読込側PLCを判別して「W」や「R」を登録すること自体は、行われていた。つまり、これは既存技術であり、特に詳細には説明しないものとする。
続いて、上記ソースコード2−1がコンパイルされると、これに伴う所定情報登録が行われて、共通変数管理表22は図4(c)に示す状態となる。すなわち、コンパイル結果である機械語オブジェクト2−1がプログラム名41に登録されると共に、「PLC2」が転送先PLC42に格納される。更に、図4(a)に示す例では、変数1のリード処理があるので、図4(c)に示すように、各PLC名45における“PLC2”の欄に「R」が登録されることになる。
その後、所定の後処理が実行されることで、共通変数管理表22は図4(d)に示す状態となる。つまり、図4(c)の状態では、変数名43の各変数毎に、「W」か「R」のどちらか一方のみが登録されている状態であった。これを、変数名43の各変数毎に、書込側PLCと読込側PLCがそれぞれどのPLC10であるのか、分かるようにする。つまり、図4(d)に示すように、変数名43の各変数毎に、「W」と「R」の両方が記述される状態とする。
上記後処理は、概略的には、例えば、変数名をキーにして「無し」の部分のデータを補っていく処理である。例えば、変数1は、機械語オブジェクト1−1、2−1で利用していて、PLC1で「W」、PLC2で「R」となっているので、変数1に係わる登録内容を、図4(d)のように更新する。
上記後処理は、例えば、共通変数管理表22の各レコードのなかで各PLC名45に「W」が登録されているレコードを順次処理対象として、処理対象レコードの変数名43を用いて他のレコードを検索して、同一の変数名43を有するレコード(該当レコード)を求める。
そして、該当レコードの各PLC名45に「R」が登録されている場合には、処理対象レコードと該当レコードの両方とも、PLC名45における該当欄に「W」と「R」の両方が登録された状態にする。これは、例えば、処理対象レコードに関しては、そのPLC名45において該当レコードの転送先PLC42に対応する欄に、「R」を登録する。一方、該当レコードに関しては、例えばそのPLC名45において処理対象レコードの転送先PLC42に対応する欄に、「W」を登録する。
上記処理は、例えば、図4(c)に示す例において、まず、先頭レコードが処理対象レコードとなり、その変数名43は“変数1”であるので、3番目のレコードが該当レコードとなる。3番目のレコードの転送先PLC42は“PLC2”である。これより、先頭レコードのPLC名45における「PLC2」の欄に「R」を登録する。これによって、先頭レコードは図4(d)に示す状態となる。更に、先頭レコードの転送先PLC42は“PLC1”であるので、3番目のレコードのPLC名45における「PLC1」の欄に「W」を登録する。これによって、3番目のレコードは図4(d)に示す状態となる。
尚、図4(c)に示す例においては、続いて、2番目のレコードが処理対象レコードとなるが、該当レコードが無いので、何も処理を行わない。よって、2番目のレコードに関しては、図4(d)に示すように、図4(c)の状態のままである。
以下、図5〜図8を参照して、運用中の制御プログラム更新の際のPLC10側の動作について説明する。ここで、図5、図6、図7は、従来から存在する一般的な動作であり、図8が本手法に係わる動作である。これより、以下、まず、図5、図6、図7について簡単に説明する。
まず、上記図1で説明したように、各PLC10は実行管理テーブル14を保持するが、これは本例では“現行”用と“保持”用の2種類存在する。つまり、図5に示す実行管理テーブル14−1と、実行管理テーブル14−2の2種類ある。但し、一方が“現行”、他方が“保持”に固定されているのではなく、随時、切り替えられるものである。ここでは、図示の“プログラム実行管理表ポインタ”(以下、単にポインタと記す場合もある)を用いる。すなわち、このポインタは2つのテーブル14−1、14−2の何れか一方を指すものであり、任意のときのこのポインタが指しているテーブルが、そのときの“現行”用を意味している。よって、図5の例では、ポインタは実行管理テーブル14−1を指しているので、この状態では実行管理テーブル14−1が“現行”用となっている。
ここで、図1で説明したように、各PLC10毎に、そのメモリ12には、そのPLC用の制御プログラム(その機械語オブジェクト)が格納される。メモリ12に1つ以上の機械語オブジェクトが格納され、図5の例では2つの機械語オブジェクト1−1、1−2が格納される。そして、これら各機械語オブジェクト1−1.1−2の格納アドレスが、実行管理テーブル14−1に登録されている。
PLC10では、上記定周期で制御プログラムを実行する毎に、その時点でポインタが示している実行管理テーブル14を参照して、当該テーブル14に登録されている各アドレスを用いて、メモリ12の該当領域の制御プログラムを実行する。
ここで、上記の通り、開発支援装置20側では、ユーザが、新規の(初版の)制御プログラムを作成する場合もあれば、既存の制御プログラムの更新版を作成する場合もある。尚、逐一述べないが、ユーザが作成するのは、制御プログラムのソースコードである。よって、作成された初版/更新版のソースコードをコンパイラ21でコンパイルして、機械語オブジェクトに変換する必要がある。そして、生成した機械語オブジェクトを該当するPLC10にダウンロードする。
ここで、図5に示すPLC10に対して、例えば、上記既存の機械語オブジェクト1−1.1−2の更新版である不図示の機械語オブジェクト1−1’、1−2’がダウンロードされたものとする。この場合、PLC10は、これらの不図示の機械語オブジェクト1−1’、1−2’をメモリ12に格納すると共に、その格納アドレスを“保持”用の実行管理テーブル14に格納する。つまり、図5の例では、実行管理テーブル14−2に格納アドレスを格納することになる。これについて、以下、図6、図7の例を参照して説明する。
尚、受信した機械語オブジェクトをメモリ12に格納したら、当該格納領域の先頭アドレス等を実行管理テーブル14に格納するが、テーブル14内での格納位置を上記“管理番号”に応じて決定するようにしてもよい。すなわち、上記受信した機械語オブジェクトの管理番号を、実行管理テーブル14のインデックスとして利用し、その位置に該当する機械語オブジェクトの上記先頭アドレス等を格納するようにしてもよい。例えば、管理番号が‘1’の場合には上記先頭アドレス等は実行管理テーブル14の先頭に配置し、管理番号が‘2’の場合には先頭アドレス等はテーブル14の先頭から2番目の位置に配置する等とする。
そして、定周期で機械語オブジェクトを実行する際には、まず、上記テーブル14の先頭位置に格納された先頭アドレス等に対応する機械語オブジェクトが実行され、続いて上記2番目の位置に格納された先頭アドレス等に対応する機械語オブジェクトが実行されることになる。但し、この例に限らない。尚、本例では“管理番号”は、後述するように更新版か否かを判別する際にも用いられるが、この例に限らない。
尚、図6、図7や後述する図8の例では、簡単の為、各PLC10毎に1つの機械語オブジェクトが用いられるものとする。つまり、ここではPLC1とPLC2を例にすると共に、PLC1では機械語オブジェクト1−1(またはその更新版)により運用され、PLC2では機械語オブジェクト2−1(またはその更新版)により運用されるものとする。
例えば任意のときに、図6に示すように、PLC1においては、メモリ12に機械語オブジェクト1−1が格納されると共に、この格納アドレスが実行管理テーブル14−1に登録されているものとする。また、この例ではポインタは実行管理テーブル14−1を指している。よって、実行管理テーブル14−1が“現行”用となっている。よって、この状態では、PLC1では、定周期で制御プログラムを実行する際には、機械語オブジェクト1−1を実行することになる。
また、図6の例では、PLC2においては、メモリ12に機械語オブジェクト2−1が格納されると共に、この格納アドレスが実行管理テーブル14−1に登録されている。また、ポインタは実行管理テーブル14−1を指している。よって、実行管理テーブル14−1が“現行”用となっている。よって、この状態では、PLC2では、定周期で制御プログラムを実行する際には、機械語オブジェクト2−1を実行することになる。
そして、その後、任意のときに、上記機械語オブジェクト1−1の更新版である機械語オブジェクト1−1’が、開発支援装置20で生成されてPLC1にダウンロードされたとする。更に、開発支援装置20では、上記機械語オブジェクト2−1の更新版である機械語オブジェクト2−1’も生成されてPLC2にダウンロードされたとする。
この場合、PLC1では、この機械語オブジェクト1−1’をメモリ12に追加格納すると共に、この機械語オブジェクト1−1’が、既存の機械語オブジェクト1−1の更新版であるか否かを判別する。これは、例えば上記“管理番号”を用いる。つまり、ダウンロードされた制御プログラムの管理番号が、メモリ12に格納されている既存の制御プログラムの管理番号と同じであれば、更新版であると判定する。
上記の例では、機械語オブジェクト1−1の管理番号と、機械語オブジェクト1−1’の管理番号とは同一であるので(‘1’である)、これによって、新たな機械語オブジェクト1−1’が、既存の機械語オブジェクト1−1の更新版であると判定できる。そして、既存の制御プログラムの更新版であると判定された場合には、その格納アドレスは、“現行”用ではなく“保持”用の実行管理テーブル14に登録する。よって、機械語オブジェクト1−1’の格納アドレスは、図7に示すように、実行管理テーブル14−2に登録する。
同様に、PLC2においては、上記機械語オブジェクト2−1’をメモリ12に追加格納すると共に、この新たな機械語オブジェクト2−1’が、既存の機械語オブジェクト2−1の更新版であることから、図7に示すようにその格納アドレスは“保持”用である実行管理テーブル14−2に登録する。
以上の処理によって図7に示す状態になるが、この状態では未だ更新版のプログラムは実行されない。すなわち、図7に示すように、PLC1,PLC2の何れにおいても、上記“ポインタ”は実行管理テーブル14−1を指しているので、定周期で上記既存の機械語オブジェクト1−1、2−1が実行されることになる。
ここで、従来では、その後に、不図示の支援装置等がPLC1、PLC2に対してプログラム更新指示を通知することで、PLC1,PLC2の何れにおいても、上記“ポインタ”が実行管理テーブル14−2を指す状態に切り替わり、以って実行管理テーブル14−2が“現行”用となる。
これより、その後は定周期の制御プログラム実行時毎に、実行管理テーブル14−2を参照して機械語オブジェクトを実行することになる。よって、PLC1では更新版の機械語オブジェクト1−1’が実行されるようになる。同様に、PLC2では更新版の機械語オブジェクト2−1’が実行されるようになる。しかし、この場合、機械語オブジェクト2−1’が機械語オブジェクト1−1’よりも先に実行されると、問題が生じる場合がある。これは、特に更新版で新たな変数が追加された場合に、問題が生じる。例えば不図示の変数3が新たに追加されると共に、その書込側PLCがPLC1、読込側PLCがPLC2であるものとする。仮に、変数3に新たなアドレス1004が割り当てられた場合、最初は、アドレス1004の格納データは不定状態などである。この為、機械語オブジェクト2−1’が先に実行されると、この不定データが読み込まれることになり、以ってPLC2が異常動作する可能性があった。
これに対して、本手法では、例えば図8に示すように管理制御することで、上記問題の発生を防止することができる。
以下、図8を参照して本手法によるPLC10側の動作について説明するが、その前に本手法による開発支援装置20側の動作について説明する。
本手法による開発支援装置20では、例えば上記機械語オブジェクト1−1’、機械語オブジェクト2−1’を、PLC1,PLC2にそれぞれ配信後、これらPLC1.PLC2全てに上記プログラム更新指示を通知するのではなく、書込側PLCに対してのみ通知する。書込側PLCは、上記共通変数管理表22を参照することで判別できる。つまり、共通変数管理表22において、ダウンロードする機械語オブジェクトに係わるレコードにおいて「W」となっているPLC名45を取得し、これを書込側PLCと認定する。
ここで、図4(d)に示す例では、機械語オブジェクト1−1に関しては、変数1、変数2のどちらも、PLC名45におけるPLC1に対して「W」なっており、つまりPLC1が書込側PLCとなっている。図示していないが、更新版である機械語オブジェクト1−1’に関してもこの設定は継承されると共に、上記のように追加された変数3もPLC1が書込側PLCとなっている(そうなるようにプログラマが制御プログラムを作成することになっているものとする)。
また、図4(d)に示す例では、機械語オブジェクト2−1に関しては、変数1に関して、PLC名45におけるPLC1に対して「W」なっており、つまりPLC1が書込側PLCとなっている。図示していないが、更新版である機械語オブジェクト2−1’に関してもこの設定は継承されると共に、上記のように追加された変数3もPLC1が書込側PLCとなっている。
上記のように、今回ダウンロードされるのは機械語オブジェクト1−1’、2−1’であるが、どちらもPLC1が書込側PLCとなっているので、PLC1に対してのみ上記プログラム更新指示を通知することになる。
上記例では、開発支援装置20は、更に、PLC1,PLC2それぞれに応じた機械語オブジェクト関連表24を生成して配信する。この関連表24生成処理は、図9に示し後に説明するものとし、ここではPLC1に関する関連表24として、図示のように機械語オブジェクト1−1’に係わる関連PLC62が「PLC2」である関連表24が生成されて、PLC1に配信されたものとして説明する。
上記のように、PLC1は、図8に示す内容の関連表24を受け取ると共に、プログラム更新指示を受信する。尚、関連表24は、例えば図8に示すように、機械語オブジェクト名61と関連PLC62から成る。機械語オブジェクト名61の機械語オブジェクトに関して読込側PLCとなるPLCの識別情報等が、関連PLC62に登録される。
PLC1は、上記プログラム更新指示を受信すると、まず、上記既存技術と同様にして、実行管理テーブル14の切替えを行い、以って実行する制御プログラムの切替えを実現する。つまり、ポインタが、実行管理テーブル14−1を指す状態から実行管理テーブル14−2を指す状態へと切り替える。これによって、切替え後は、定周期で上記機械語オブジェクト1−1’を実行するようになる。
そして、PLC1は、上記切り替え後に機械語オブジェクト1−1’を最低でも1回は実行完了したら、上記関連表24を参照して、切替メッセージの送信先を判別する。これは、上記最低1回は実行した新たな機械語オブジェクトに対応する関連PLC62を、送信先と判定する。よって、この例では、機械語オブジェクト1−1’に対応する関連PLC62である“PLC2”が、送信先であると認識し、PLC2に対して切替メッセージを送信する。
上記切替メッセージを受信したPLC2は、既存の上記プログラム更新指示を受信した場合と略同様の処理を行う。すなわち、実行管理テーブル14の切替えを行い、以って実行する制御プログラムの切替えを実現する。つまり、ポインタが、実行管理テーブル14−1を指す状態から実行管理テーブル14−2を指す状態へと切り替える。これによって、切替え後は、定周期で上記機械語オブジェクト2−1’を実行するようになる。そして、このときには上記のように機械語オブジェクト1−1’は最低1回は実行完了しているので、上記変数3に関しても不定データを読み出すようなことはない。
尚、上記切替メッセージは、上記既存のプログラム更新指示と同じものであっても構わない。換言すれば、上記の例では、PLC1が、開発支援装置20の代わりに、PLC2へプログラム更新指示を出すようにしても構わない。あるいは、この例に限らず、PLC1がPLC2へプログラム更新指示を出すことを開発支援装置20に要求し、これに応じて開発支援装置20がPLC2へプログラム更新指示を送信するようにしてもよい。
図9は、開発支援装置20における関連表24の生成処理フローチャート図である。この処理は、不図示の関連表生成機能部が実行する。尚、関連表生成機能部は、コンパイラ21に含まれていてもよいし、コンパイラ21以外の機能としてもよいが、何れにしても開発支援装置20が有する機能である。
尚、関連表24は、上記の通り各PLC毎に用意されるものであり、上記の例ではPLC1用の関連表24、PLC2用の関連表24、PLC3用の関連表24が、予め用意されている。但し、これら各関連表24は、初期状態では何もデータは存在しておらず、後述するステップS15、S16の処理が実行されることでデータが登録されるものである。
上記コンパイラ21が上記共通変数管理表22を生成した後(ステップS11)などに、関連表24の生成処理を開始する。
まず、共通変数管理表22を読込み(ステップS12)、最初の処理対象を決定する(ステップS13)。
尚、図9の処理は基本的に、共通変数管理表22の先頭レコードから順に、各レコードを順次処理対象レコードとし、各処理対象レコード毎にその転送先PLC42を、処理対象PLCする。そして、処理対象レコードについてステップS14〜S17の処理を実行する。最初の処理対象レコードは先頭レコードであり、その転送先PLC42が処理対象PLCとなる。図4(d)の例では、PLC1が処理対象PLCとなる。
ステップS14〜S17の処理では、まず、処理対象レコードにおいて、処理対象PLCの変数アクセス方法が「W」(書込側)であるか否かをチェックする(ステップS14)。
ここで、図4(d)の例では、先頭レコードは、プログラム名41が“機械語オブジェクト1−1”、転送先PLC42が“PLC1”、変数名43が“変数1”、コモンメモリアドレス44が“1000”番地となっている。更に、各PLC名45の欄においては、PLC1が「W」で、PLC2が「R」となっている。つまり、機械語オブジェクト1−1の変数1に関しては、転送先であるPLC1が書込側PLCであり、PLC2が読込側PLCとなっている。これは、つまり、処理対象PLC(=PLC1)が「W」(書込側)となっているので、上記ステップS14の判定はYESとなり、ステップS15へ移行する。
ステップS15、S16では、処理対象PLC用の関連表24に、処理対象レコードに基づく所定情報が登録される。すなわち、処理対象レコードのプログラム名41を、処理対象PLC用の関連表24の機械語オブジェクト名61に格納する(ステップS15)。更に、処理対象レコードに係わる読込側PLCを、処理対象PLC用の関連表24の関連PLC62に格納する(ステップS16)。
最初は、PLC1用の関連表24に、先頭レコードに基づく所定情報が登録されることになる。すなわち、まず、先頭レコードのプログラム名41(=機械語オブジェクト1−1)を、PLC1用の関連表24の機械語オブジェクト名61に格納する(ステップS15)。これより、PLC1用の関連表24は、例えば図10(a)に示す状態になる。
続いて、先頭レコードに係わる読込側PLCは、上記の通りPLC2であるので、PLC1用の関連表24の関連PLC62に、PLC2を登録する。これより、PLC1用の関連表24は、例えば図10(b)に示す状態になる。
そして、次のレコードを新たな処理対象レコードにして(ステップS17)、ステップS14に戻る。但し、次のレコードが無い場合には(ステップS18,NO)、本処理を終了する。次のレコードがある場合に(ステップS18,YES)、上記のようにステップS14に戻ることになる。
尚、ステップS14の判定がNOの場合には、ステップS15、S16の処理を実行することなく、ステップS17の処理へ移行する。
ここで、上記先頭レコードに関する処理が終わったならば、次の処理対象レコードは2番目のレコードとなる。図4(d)の例では、2番目のレコードは、プログラム名41が“機械語オブジェクト1−1”、転送先PLC42が“PLC1”、変数名43が“変数2”、コモンメモリアドレス44が“1002”番地となっている。更に、各PLC名45の欄においては、PLC1が「W」であるが、「R」となっているPLCは存在しない。
この例の場合、ステップS14の判定はYESとなるので、ステップS15、S16の処理が行われるが、ステップS15ではPLC1用の関連表24に既に“機械語オブジェクト1−1”が存在するので、何も処理を行わない。更に、ステップS16では上記のように書込側PLCが無いので、何も処理を行わない。その結果、PLC1用の関連表24は、図10(b)に示す状態のままである。
ここで、仮に、図4(d)の例において2番目のレコードにおいて各PLC名45の欄でPLC3に対して「R」となっていた場合には、PLC1用の関連表24は、図10(b)に示す状態に対して、関連PLC62の欄に更に“PLC3”が追加されることになる。この例では、後にPLC1において機械語オブジェクト1−1への切替と最低1回実行された後に、上記切替メッセージがPLC2とPLC3とに送信されることになる。
ここで、上記2番目のレコードに関する処理が終わったならば、次の処理対象レコードは3番目のレコードとなる。図4(d)の例では、3番目のレコードは、プログラム名41が“機械語オブジェクト2−1”、転送先PLC42が“PLC2”、変数名43が“変数1”、コモンメモリアドレス44が“1000”番地となっている。更に、各PLC名45の欄においては、PLC1が「W」、PLC2が「R」となっている。よって、この例では、ステップS14の判定がNOとなるので、PLC2用の関連表24には、データは登録されないことになる。
図11は、制御プログラム更新の際の開発支援装置20の処理フローである。
図示の処理は、開発支援装置20において上記更新版の機械語オブジェクトの生成完了と上記各PLC用の各関連表24の生成とが終了した後に実行される。
まず、各PLC10に対して、そのPLC用の上記更新版の機械語オブジェクトを送信する(ステップS21)。これによって、各PLCは、受信した更新版の機械語オブジェクトを、上記図6〜図8で説明したように、メモリ12に格納するが、未だ実行はしない。
開発支援装置20は、続いて、各PLCに対して、そのPLC用に生成した上記関連表24を送信する(ステップS22)。これによって各PLCは、受信した関連表24を記憶する。
そして、開発支援装置20は、書込側PLCに対して上記プログラム更新指示を送信する(ステップS23)。書込側PLCは、上記共通変数管理表22を参照することで判別できる。つまり、「W」が記述されている箇所のPLC名45が、書込側PLCである。尚、切替コマンドは、上記プログラム更新指示に相当する。
これより、図4(d)に示す例では、PLC1のみが書込側PLCと判別されて、PLC1に対してのみ上記プログラム更新指示を送信する。これによって、PLC1は、例えば図8で説明したように、自己の制御プログラム更新処理を行い、更に更新版の制御プログラムを最低1回は実行した後に、関連表24に基づいてこの更新版の制御プログラムの読込側PLCに対して、切替コマンドを送信する。この様な動作を実現する処理例を、図12に示す。
図12は、プログラム更新に係わる各PLCの処理フローチャート図である。
尚、図12の説明では、上記プログラム更新指示は、上記切替コマンドと同一であるとすると共に、“切替コマンド”の名称で統一するものとする。よって、以下の図12の説明においては、開発支援装置20も切替コマンドを送信することになる。尚、切替コマンドを受信したPLC10は、その送信元が開発支援装置20であるか他のPLC10であるかを判断する必要はない。尚、図12の説明以降の説明においても、“切替コマンド”の名称で統一して説明する場合があるものとする。
図12において、開発支援装置20によって上記ステップS21で送信された機械語オブジェクトを受信すると、これをメモリ12に格納する(ステップS31)。受信した機械語オブジェクトのメモリ格納処理は、既に述べた通りであり、更新版の場合には、その時点での保持用の実行管理テーブル14−2に、格納アドレスを登録する。
また、開発支援装置20が上記ステップS22で送信した関連表24を受信すると、これを所定の記憶領域に記憶する(ステップS32)。
そして、切替コマンドの受信待ち状態となり、切替コマンドを受信したらステップS34以降の処理を実行する(ステップS33)。尚、図8の例では、PLC1は開発支援装置20からの切替コマンドを受信することになり、PLC2はPLC1が送信する切替コマンドを受信することになる。
切替コマンドを受信したら、まず、機械語オブジェクトの切り替え処理を行う(ステップS34)。これは、既に図7等で説明したように、上記“ポインタ”を切替えるものである。これは、上記“現行”用の実行管理テーブル14を切替えることを意味する。“ポインタが”例えば上記実行管理テーブル14−1を指している状態であった場合、上記実行管理テーブル14−2を指すように切替える。これによって、実行管理テーブル14−2が新たな“現行”用となる。そして、これによって、その後は、定周期で制御プログラムを実行する際に、更新版の機械語オブジェクトが実行されることになる。
これによって更新版の機械語オブジェクトが実行されたら(ステップS35)、その実行完了を確認後(ステップS36)、関連表24を参照することで、当該更新版の機械語オブジェクトの読込側PLCに対して、切替コマンドを送信する(ステップS37)。これは、関連表24において上記実行した機械語オブジェクトの機械語オブジェクト名61に対応する関連PLC62に対して、切替コマンドを送信するものである。例えば図8に示す関連表24の例の場合、PLC1は、機械語オブジェクト1−1’を実行完了したら、PLC2に対して切替コマンドを送信する。
ここで、この切替コマンドを受信したPLC2も、図12の処理を実行することになるが、上記の例ではPLC2用の関連表24には何もデータが無いので、PLC2は他のPLC10に対して切替コマンドを送信することはない。
尚、図示していないが、仮に、PLC1に対して更に不図示の機械語オブジェクト1−2’もダウンロードされると共に、関連表24には更に機械語オブジェクト名61が“機械語オブジェクト1−2”で関連PLC62が例えば“PLC3”であるレコードが追加されているものとする。この例の場合、PLC1は、たとえば、まず、機械語オブジェクト1−1’を実行完了したら、PLC2に対して切替コマンドを送信し、その後に、更に、機械語オブジェクト1−2’を実行完了したら、PLC3に対して切替コマンドを送信することになる。この様に、各機械語オブジェクト別に、切替指示の制御を行うことも可能である。
尚、図10に示す例のように、各関連PLC62は、各機械語オブジェクト名61に対応して格納されるものである。これより、ステップS37で決定する送信先PLCは、更新版の機械語オブジェクトに関連するPLCとなる。つまり、仮にPLC1には更に不図示の機械語オブジェクト1−2が格納されているが、今回の更新では機械語オブジェクト1−2の更新版は作成されていなかった場合には、機械語オブジェクト1−2に関連するPLCには、切替コマンドは送信されないことになる。
また、これに伴って、上記“現行”と“保持”の2種類の実行管理テーブル14と“ポインタ”も、各機械語オブジェクト毎に設けられるようにしてもよい。つまり、この場合、図5に示すような状態にはならないことになる。つまり、図5では1つの実行管理テーブル14−1に複数の機械語オブジェクトの格納アドレスが登録されているが、1つのみしか登録されないことになる。
尚、上述した説明は一例であり、この例に限らない。例えば、上記切替コマンドを送信し得るのは、開発支援装置20のみであるものとしてもよい。この場合、上記ステップS37の処理の代わりに、開発支援装置20に対してプログラム更新・実行完了した旨や、コマンド送信先とするPLCを通知する。上記の例では、PLC1が開発支援装置20に対してコマンド送信先としてPLC2を通知する。これより、開発支援装置20がPLC2に対して上記切替コマンドを送信するように構成してもよい。
あるいは、図8の例では、切替コマンドをメッセージ送信していたが、この例に限らず、例えばコモンメモリ13を利用する方法等であってもよい。
図13は、本例のプログラマブルコントローラシステムの機能ブロック図である。
図示のプログラマブルコントローラシステムは、図1に示す開発支援装置20と各PLC10の機能ブロック図である。
図示の例では、開発支援装置20の各処理機能は、コンパイラ部71、転送・通知部72、切替指示部73等である。
コンパイラ部71は、各プログラマブルコントローラ用の制御プログラムのソースコードであって上記共通変数が含まれる任意のソースコードを、コンパイルして機械語オブジェクトに変換する。
尚、図1で説明したように、上記ソースコードをユーザに任意に作成させる為の支援処理機能もあってよいが、この機能は必須ではなく、例えば、他の任意の情報処理装置等で作成されたソースコードを、開発支援装置20に格納するものであっても構わない。
転送・通知部72は、各プログラマブルコントローラに対して、そのプログラマブルコントローラ用の前記機械語オブジェクトを転送すると共に、前記コンパイル処理に伴って得られる所定情報に基づいて、該転送する機械語オブジェクトに係わる前記共通変数の読込側のプログラマブルコントローラを、通知する。尚、これは、例えば、上記機械語オブジェクト関連表24を作成して通知するものである。
また、上記所定情報とは、例えば上記共通変数管理表22等である。あるいは更に上記ソースコード管理表23等があってもよい。
切替指示部73は、上記コンパイル処理に伴って得られる所定情報に基づいて、共通変数の書込側のプログラマブルコントローラを認識して、該書込側のプログラマブルコントローラに対して切替指示を通知する。
また、プログラマブルコントローラ(PLC)10は、切替部81、切替制御部82等を有する。
切替部81は、任意の切替指示に応じて、既存の機械語オブジェクト実行状態から前記転送された新たな機械語オブジェクト実行状態に切替える。
切替制御部82は、該新たな機械語オブジェクトを1回以上実行後に、転送・通知手段から通知された読込側のプログラマブルコントローラに対して、切替指示を通知する。あるいは支援装置から切替指示を通知させる。
上記切替指示は、例えば上述した切替メッセージであり、上述したように基本的には、最初は開発支援装置20が任意の共通変数に係わる書込側PLCにのみ切替メッセージを通知し、当該任意の共通変数に係わる書込側PLCが、自己の新たな機械語オブジェクトを実行完了後に、読込側PLCに対して切替メッセージを送信する。但し、上記の通り、この例に限らない。
以上説明したように、本手法によれば、コモンメモリ経由で複数のPLCが連携して動作するプログラマブルコントローラシステムにおいて稼働中のPLCのプログラム更新を実施する場合に、共通変数の有効性をシステムとして保障することができる。“共通変数の有効性を保障する”とは、各共通変数毎に、その共通変数の読込側PLCがそのデータを読込む際には常にそのデータが有効なものであることが保障されることである。有効なデータとは、少なくとも不定データや一律‘0’のデータ等では無いことを意味する。
また、従来でも、“共通変数の有効性を保障する”ことは可能であったが、その為には上述したように、フラグを用いたり、その為のプログラムが別途必要になっており、ユーザのプログラミングが煩雑であり、人的ミスが生じる可能性があり、また、フラグの為に共通メモリの記憶領域を浪費する等の問題が生じる。本手法では、この様な問題が生じることなく、“共通変数の有効性を保障する”ことができる。すなわち、ユーザの手間が掛かることなく、プログラミングが煩雑となることなく、プログラミングにおいて人的ミスが生じる危険性がなく、更に、無駄なフラグが必要無くなり、有限な共有メモリの記憶領域を有効に活用できる。
10 PLC(プログラマブルコントローラ)
11 管理部
12 メモリ(プログラム用)
13 コモンメモリ
14 実行管理テーブル
20 開発支援装置
21 コンパイラ
22 共通変数管理表
23 ソースコード管理表
24 機械語オブジェクト関連表
31 番号
32 PLC
33 ソースコード名
34 機械語オブジェクト名
41 プログラム名
42 転送先PLC
43 変数名
44 コモンメモリアドレス
45 各PLC名
61 機械語オブジェクト名
62 関連PLC

Claims (9)

  1. 支援装置と複数のプログラマブルコントローラとがネットワークに接続され、共通変数を介して複数のプログラマブルコントローラ間のデータ連携を実現するシステムであって、
    前記支援装置は、
    各プログラマブルコントローラ用の制御プログラムのソースコードであって前記共通変数が含まれる任意のソースコードを、コンパイルして機械語オブジェクトに変換するコンパイラ手段と、
    前記各プログラマブルコントローラに対して、そのプログラマブルコントローラ用の前記機械語オブジェクトを転送すると共に、前記コンパイル処理に伴って得られる所定情報に基づいて、該転送する機械語オブジェクトに係わる前記共通変数の読込側のプログラマブルコントローラを、通知する転送・通知手段と、
    前記コンパイル処理に伴って得られる所定情報に基づいて、前記共通変数の書込側のプログラマブルコントローラを認識して、該書込側のプログラマブルコントローラに対して切替指示を通知する切替指示手段と、
    前記プログラマブルコントローラは、
    任意の切替指示に応じて、既存の機械語オブジェクト実行状態から前記転送された新たな機械語オブジェクト実行状態に切替える切替手段と、
    該新たな機械語オブジェクトを1回以上実行後に、前記転送・通知手段から通知された前記読込側のプログラマブルコントローラに対して、切替指示を通知するあるいは前記支援装置から切替指示を通知させる切替制御手段と、
    を有することを特徴とするプログラマブルコントローラシステム。
  2. 前記所定情報は、前記機械語オブジェクトに応じて、その転送先のプログラマブルコントローラ、それに係わる各共通変数、該各共通変数毎の書込側と読込側のプログラマブルコントローラの情報を有する共通変数管理表であることを特徴とする請求項1記載のプログラマブルコントローラ。
  3. 前記切替手段による前記既存の機械語オブジェクト実行状態から前記転送された新たな機械語オブジェクト実行状態への切替えは、該プログラマブルコントローラの稼働中に実行されることを特徴とする請求項1または2記載のプログラマブルコントローラ。
  4. 前記プログラマブルコントローラは、
    前記転送された新たな機械語オブジェクトを、前記既存の機械語オブジェクトとは別の記憶領域に格納する機械語オブジェクト記憶手段と、
    前記既存の機械語オブジェクトの記憶領域を示す第1のアドレス情報と、前記新たな機械語オブジェクトの記憶領域を示す第2のアドレス情報とが記憶されたアドレス記憶手段と、
    前記第1、第2の何れかのアドレス情報が示す記憶領域の機械語オブジェクトを、定周期で実行する制御手段と、
    を更に有することを特徴とする請求項1記載のプログラマブルコントローラシステム。
  5. 前記新たな機械語オブジェクトは、前記既存の機械語オブジェクトの更新版の機械語オブジェクトであることを特徴とする請求項1〜4の何れかに記載のプログラマブルコントローラ。
  6. 支援装置と複数のプログラマブルコントローラとがネットワークに接続され、共通変数を介して複数のプログラマブルコントローラ間のデータ連携を実現するシステムにおける該支援装置であって、
    各プログラマブルコントローラ用の制御プログラムのソースコードであって前記共通変数が含まれる任意のソースコードを、コンパイルして機械語オブジェクトに変換するコンパイラ手段と、
    前記各プログラマブルコントローラに対して、そのプログラマブルコントローラ用の前記機械語オブジェクトを転送すると共に、前記コンパイル処理に伴って得られる所定情報に基づいて、該転送する機械語オブジェクトに係わる前記共通変数の読込側のプログラマブルコントローラを、通知する転送・通知手段と、
    前記コンパイル処理に伴って得られる所定情報に基づいて、前記共通変数の書込側のプログラマブルコントローラを認識して、該書込側のプログラマブルコントローラに対して切替指示を通知する切替指示手段と、
    を有することを特徴とするプログラマブルコントローラシステムの支援装置。
  7. 支援装置と複数のプログラマブルコントローラとがネットワークに接続され、共通変数を介して複数のプログラマブルコントローラ間のデータ連携を実現するシステムにおける該プログラマブルコントローラであって、
    既存の機械語オブジェクトを記憶する第1記憶手段と、
    前記支援装置から転送される新たな機械語オブジェクトを受信すると、該新たな機械語オブジェクトを記憶する第2記憶手段と、
    通知される切替指示に応じて、既存の機械語オブジェクト実行状態から前記転送された新たな機械語オブジェクト実行状態に切替える切替手段と、
    該新たな機械語オブジェクトを1回以上実行後に、前記支援装置から通知された読込側のプログラマブルコントローラに対して、切替指示を通知するあるいは前記支援装置から切替指示を通知させる切替制御手段と、
    を有することを特徴とするプログラマブルコントローラシステム。
  8. 支援装置と複数のプログラマブルコントローラとがネットワークに接続され、共通変数を介して複数のプログラマブルコントローラ間のデータ連携を実現するシステムにおける該支援装置のコンピュータを、
    各プログラマブルコントローラ用の制御プログラムのソースコードであって前記共通変数が含まれる任意のソースコードを、コンパイルして機械語オブジェクトに変換するコンパイラ手段と、
    前記各プログラマブルコントローラに対して、そのプログラマブルコントローラ用の前記機械語オブジェクトを転送すると共に、前記コンパイル処理に伴って得られる所定情報に基づいて、該転送する機械語オブジェクトに係わる前記共通変数の読込側のプログラマブルコントローラを、通知する転送・通知手段と、
    前記コンパイル処理に伴って得られる所定情報に基づいて、前記共通変数の書込側のプログラマブルコントローラを認識して、該書込側のプログラマブルコントローラに対して切替指示を通知する切替指示手段、
    として機能させるためのプログラム。
  9. 支援装置と複数のプログラマブルコントローラとがネットワークに接続され、共通変数を介して複数のプログラマブルコントローラ間のデータ連携を実現するシステムにおける該プログラマブルコントローラのコンピュータを、
    既存の機械語オブジェクトを記憶する第1記憶手段と、
    前記支援装置から転送される新たな機械語オブジェクトを受信すると、該新たな機械語オブジェクトを記憶する第2記憶手段と、
    通知される切替指示に応じて、既存の機械語オブジェクト実行状態から前記転送された新たな機械語オブジェクト実行状態に切替える切替手段と、
    該新たな機械語オブジェクトを1回以上実行後に、前記支援装置から通知された読込側のプログラマブルコントローラに対して、切替指示を通知するあるいは前記支援装置から切替指示を通知させる切替制御手段、
    として機能させるためのプログラム。
JP2013131118A 2013-06-21 2013-06-21 プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ、プログラム Active JP6119452B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013131118A JP6119452B2 (ja) 2013-06-21 2013-06-21 プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013131118A JP6119452B2 (ja) 2013-06-21 2013-06-21 プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ、プログラム

Publications (2)

Publication Number Publication Date
JP2015005224A true JP2015005224A (ja) 2015-01-08
JP6119452B2 JP6119452B2 (ja) 2017-04-26

Family

ID=52301037

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013131118A Active JP6119452B2 (ja) 2013-06-21 2013-06-21 プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ、プログラム

Country Status (1)

Country Link
JP (1) JP6119452B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020009297A (ja) * 2018-07-11 2020-01-16 オムロン株式会社 開発システム、およびサポート装置
CN110914768A (zh) * 2017-06-07 2020-03-24 布鲁克斯自动化(德国)有限公司 用于使用pc程序控制plc的方法
JPWO2019097800A1 (ja) * 2017-11-16 2020-06-25 株式会社日立産機システム コントロール装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001022401A (ja) * 1999-07-09 2001-01-26 Toshiba Corp 統合コントローラ及び制御システム並びに伝送装置
JP2002063045A (ja) * 2000-08-22 2002-02-28 Mitsubishi Heavy Ind Ltd 動作中プログラムの変更方法
WO2007110953A1 (ja) * 2006-03-29 2007-10-04 Mitsubishi Denki Kabushiki Kaisha プログラム作成支援装置、プログラム作成支援方法とその方法をコンピュータに実行させるプログラムおよびそれを記録した記録媒体
JP2012027621A (ja) * 2010-07-21 2012-02-09 Fuji Electric Co Ltd プログラマブルコントローラシステムおよびそのプログラム更新方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001022401A (ja) * 1999-07-09 2001-01-26 Toshiba Corp 統合コントローラ及び制御システム並びに伝送装置
JP2002063045A (ja) * 2000-08-22 2002-02-28 Mitsubishi Heavy Ind Ltd 動作中プログラムの変更方法
WO2007110953A1 (ja) * 2006-03-29 2007-10-04 Mitsubishi Denki Kabushiki Kaisha プログラム作成支援装置、プログラム作成支援方法とその方法をコンピュータに実行させるプログラムおよびそれを記録した記録媒体
JP2012027621A (ja) * 2010-07-21 2012-02-09 Fuji Electric Co Ltd プログラマブルコントローラシステムおよびそのプログラム更新方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110914768A (zh) * 2017-06-07 2020-03-24 布鲁克斯自动化(德国)有限公司 用于使用pc程序控制plc的方法
CN110914768B (zh) * 2017-06-07 2023-06-30 布鲁克斯自动化(德国)有限公司 用于使用pc程序控制plc的方法
US11726445B2 (en) 2017-06-07 2023-08-15 Brooks Automation Gmbh Method for controlling a PLC using a PC program
JPWO2019097800A1 (ja) * 2017-11-16 2020-06-25 株式会社日立産機システム コントロール装置
US11194739B2 (en) 2017-11-16 2021-12-07 Hitachi Industrial Equipment Systems Co., Ltd. Control apparatus
JP2020009297A (ja) * 2018-07-11 2020-01-16 オムロン株式会社 開発システム、およびサポート装置
WO2020012995A1 (ja) * 2018-07-11 2020-01-16 オムロン株式会社 開発システム、およびサポート装置
JP7151227B2 (ja) 2018-07-11 2022-10-12 オムロン株式会社 開発システム、およびサポート装置

Also Published As

Publication number Publication date
JP6119452B2 (ja) 2017-04-26

Similar Documents

Publication Publication Date Title
CN103814333B (zh) 用于对可编程控制装置编程和配置的方法和设备
JP3896849B2 (ja) プログラミング装置及びプログラミング方法
JP5583305B2 (ja) プログラマブルロジックコントローラ、プログラミングツール及びプログラム・パラメータ編集システム
JP5790128B2 (ja) プログラマブルコントローラ・システム、その支援装置
JP2009146229A (ja) プログラマブルコントローラシステム
JP6866663B2 (ja) プログラマブルコントローラシステム、プログラマブルコントローラ、支援装置、hci装置、二重化プログラマブルコントローラシステム
JP6119452B2 (ja) プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ、プログラム
JP5849592B2 (ja) プログラマブルコントローラシステム、そのプログラミング装置、プログラマブルコントローラ、プログラム、デバッグ方法
JP6292096B2 (ja) プログラマブルコントローラシステム、その支援装置
JP5611158B2 (ja) データ中継制御装置、リンク間転送設定支援装置およびリンク間転送設定方法
JP2009157533A (ja) プログラマブルコントローラシステム
JP6135247B2 (ja) 情報処理装置および情報処理プログラム
JP7085305B2 (ja) コントロールシステム及びコントロール方法
JP6455096B2 (ja) コントロールシステム、その支援装置、プログラマブルコントロール装置
JP2015125713A (ja) プログラマブルコントローラ・システム、その支援装置、プログラマブルコントローラ、プログラム
JP2012133610A (ja) 2重化プロセス制御装置および制御データ一致化方法
WO2020075351A1 (ja) コントロール装置
JP4366575B2 (ja) ツール
CN106126211A (zh) 一种支持调试接口的mcu在线编程系统
JPWO2019229845A1 (ja) プログラム管理システム、プログラミング支援装置、プログラム管理方法、およびプログラミング支援プログラム
US10599112B2 (en) Method for programming and configuring a device in a traceable manner
JP2015022511A (ja) プログラマブルコントローラシステム、その支援装置、プログラム
JP2019159632A (ja) 制御システム、開発支援装置、および開発支援プログラム
JP5978775B2 (ja) プログラマブルコントローラ、その支援装置、プログラム、プログラム転送方法
JP4778312B2 (ja) データ処理装置、プログラム、エディタ装置および記録媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160516

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170221

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170228

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170313

R150 Certificate of patent or registration of utility model

Ref document number: 6119452

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250