JP5978775B2 - プログラマブルコントローラ、その支援装置、プログラム、プログラム転送方法 - Google Patents

プログラマブルコントローラ、その支援装置、プログラム、プログラム転送方法 Download PDF

Info

Publication number
JP5978775B2
JP5978775B2 JP2012125430A JP2012125430A JP5978775B2 JP 5978775 B2 JP5978775 B2 JP 5978775B2 JP 2012125430 A JP2012125430 A JP 2012125430A JP 2012125430 A JP2012125430 A JP 2012125430A JP 5978775 B2 JP5978775 B2 JP 5978775B2
Authority
JP
Japan
Prior art keywords
program
module
facility
programmable controller
control program
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.)
Active
Application number
JP2012125430A
Other languages
English (en)
Other versions
JP2013250810A (ja
Inventor
吉原 大助
大助 吉原
純郎 北村
純郎 北村
幸治 福島
幸治 福島
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 JP2012125430A priority Critical patent/JP5978775B2/ja
Publication of JP2013250810A publication Critical patent/JP2013250810A/ja
Application granted granted Critical
Publication of JP5978775B2 publication Critical patent/JP5978775B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)
  • Programmable Controllers (AREA)

Description

本発明は、プログラマブルコントローラと支援装置を有するプログラマブルコントローラシステムに関する。
各I/Oモジュール等を介して各種制御対象機器(各設備の各機器など)を制御するプログラマブルコントローラ(PLC)は、自己が保持する制御プログラムを実行することで当該制御を行う。
この制御プログラムは、PLCに接続された支援装置上で作成されて、PLCにダウンロードされる。これは、既にPLC上で保持されて実行されている制御プログラムの更新版(バージョンアップ版など)が作成されて、PLCにダウンロードされる場合が多い。これに対してPLC側では、制御プログラムを旧版から新版(バージョンアップ版等)に切り換えて、引き続き上記各種制御対象機器を制御することになる。制御対象機器を停止できない場合も少なくない為、この様なプログラムのダウンロードと切り換えは、システム運用中(PLC稼働中)に行われることも少なくない。
ここで、例えば、特許文献1に記載の従来技術が知られている。
特許文献1は、プログラム実行中に、そのプログラムをオンラインで変更可能とするプログラマブルコントローラに関する発明である。
特許文献1の発明は、実行用と変更用のプログラムメモリとパルスメモリをそれぞれ装備したプログラマブルコントローラにおいて、実行中に変化したパルスメモリの内容を保証し、プログラムの変更量が多くてもプログラム制御のリアルタイム制御性を維持し、プログラムの変更内容と実行内容の同一性を維持し、上記実行用と変更用の切替を高速に行うことができるようにする発明である。
特開平9−120306号公報
PLCが稼働中に、ユーザが支援装置を利用して、PLC上で動作している制御プログラムを安全に変更する方法は、上記の通り既知の技術である。
ところで、上記制御プログラムの更新は、様々な理由で行われるものであるが、例えば、上記設備の更新(リプレース;改造など)に伴って行われる場合がある。システムの規模が大きい場合、当該システムの複数の設備の更新(リプレース)を行う場合が多いが、更新(リプレース)対象の設備全てを一度に更新するのではなく、順次、各設備のリプレースを実施する。システム規模が大きい場合のリプレース作業は、システムの設備全てを一度にリプレースするのではなく、部分リプレースを繰り返して順番にリプレースしていく必要がある。
尚、上記“設備”とは、明確な定義はないが、例えばシステムを構成する多数の機器を機能単位で分類したものであり、1以上(通常は複数)の機器から成るものである。機能単位とは、例えばベルトコンベアを駆動する機器(モータ等)と、このベルトコンベア上を搬送される加工対象品に穴を空ける機器(ドリル等)とから成るもののように、相互に関連して何らかの機能(ここでは搬送物に順次穴を空ける)を実現するものである。それ故に、リプレース作業も“設備”単位で行われる場合が多い。
一方、PLCの制御プログラムの開発は、システム全体の最終形態(リプレースすべき設備は全てリプレースした状態)で設計・製作・試験を実施するため、変更する設備だけを対象に制御プログラムの開発を実施することは、困難であり、ユーザにとって大きな負担になる。
この為、ユーザは上記支援装置において、更新(リプレース;改造等)対象の設備全ての制御プログラムの更新版の作成をまとめて行う場合が多い。この為、任意の設備のリプレース作業が完了する毎に、リプレースした設備を制御する1または複数の制御プログラム(その更新版)だけをPLCにダウンロードして変更させる必要がある。未だリプレースされていない設備に対応する制御プログラム(その更新版)までもPLCにダウンロードして変更させてしまうと、当然、システムの動作に悪影響を及ぼす可能性があるからである。
これに対して、例えば支援装置側で保持・管理する全ての制御プログラム一覧を表示する等して、ユーザに所望の1以上の制御プログラム(ここでは特に、リプレースした設備に対応する制御プログラム(その更新版))を選択・指定させることで、ユーザが指定した制御プログラムのみをPLCに転送する方法が考えられる。
しかしながら、通常、各設備毎にその設備に係わる制御プログラムは複数(場合によっては多数)存在するものであり、ユーザが正しく指定を行うことは困難である。つまり、ユーザは、更新対象の設備に対応する制御プログラムを全て選択・指定すると共に、それ以外の制御プログラムを誤って指定することがないようにする必要があるが、これは手間が掛かることになり、更にミスが生じる場合もある。つまり、指定すべき制御プログラムを指定しなかったり(指定漏れが生じる)、その逆に、未だリプレースされていない設備に対応する制御プログラム(更新版)を誤って選択・指定して、PLC側でプログラム更新させてしまう等のミスが生じる可能性があり、システムの動作に悪影響を与えることになる。
本発明の課題は、複数の設備を制御対象とするプログラマブルコントローラシステムに係わり、複数の設備を順次変更するがそれらの制御プログラム変更は支援装置でまとめて行われる場合において、支援装置において任意の設備に係わる変更版プログラムを全て判別してダウンロードすることができるプログラマブルコントローラシステム、その支援装置等を提供することである。
本発明のプログラマブルコントローラシステムは、複数の設備より成るシステム構成を有し、該複数の設備を制御対象とし、各制御プログラムを実行することで各設備の各種機器を制御するものであって、各設備毎にそれぞれ1以上のI/Oモジュールを介して制御を行うプログラマブルコントローラと、該プログラマブルコントローラと接続する支援装置とを有するプログラマブルコントローラシステムであって、前記支援装置は、前記各I/Oモジュールと前記各設備との対応関係を登録させて記憶するシステム構成登録手段と、前記各制御プログラムのソースコードをコンパイルして機械語オブジェクトを生成すると共に、該コンパイルの際に得られる各制御プログラムと前記I/Oモジュールとの対応関係を記憶部に記憶するコンパイル手段と、任意の設備が指定されると、前記システム構成登録手段と前記記憶部とを参照することで、該指定された設備に対応する前記制御プログラムを全て判別して、該判別した制御プログラム全てを前記プログラマブルコントローラに転送する転送管理手段とを有し、前記ソースコードの各変数のうちアドレス指定がある変数に関しては、該アドレス指定に前記I/Oモジュールの識別情報が含まれており、前記コンパイル手段は、該I/Oモジュール識別情報を用いて、前記制御プログラムと前記I/Oモジュールとの対応関係を生成する。
本発明のプログラマブルコントローラシステム、その支援装置等によれば、複数の設備を制御対象とするプログラマブルコントローラシステムに係わり、複数の設備を順次に変更するがそれらのプログラム変更は支援装置でまとめて行われる場合において、支援装置において任意の設備に係わる変更版プログラムを全て判別してダウンロードすることができる。
本例のプログラマブルコントローラシステムの全体構成図である。 PLCによる各設備の制御に係わる構成を示す図である。 使用変数一覧のデータ構成例である。 (a)は設定画面、(b)はモジュール情報の具体例である。 (a)、(b)は、各プログラム一覧のデータ構成例である。 転送選択画面例である。 プログラムダウンロードに係わる前処理のフローチャート図である。 プログラムダウンロード処理のフローチャート図である。
以下、図面を参照して本発明の実施の形態について説明する。
図1は、本例のプログラマブルコントローラシステムの全体構成図である。
本例のプログラマブルコントローラシステムは、PLC(プログラマブルコントローラ)30と、その支援装置(ローダ)10とが、(不図示の通信線等を介して)相互に通信可能な状態で接続されて成る。また、図1には示していないが、図2に示すように、更に、PLC30は、各I/Oモジュールを介して、各設備の各種制御対象機器を制御可能となっている。I/Oモジュールは、例えばサーボ、インバータ等であるが、この例に限らない。
PLC30は、例えば不図示の各種制御対象(各設備の各種機器)を制御するものであり、その為のプログラム(制御プログラム;その機械語オブジェクト33)を保持している。この制御プログラムは、任意のときに更新(バージョンアップなど)する必要が生じる場合がある。
支援装置(ローダ)10は、上記制御プログラム(そのソースコード15)をユーザが任意に作成/更新/変更できるように支援する機能等を有する。支援装置(ローダ)10は、例えばパソコン等によって実現されるものであり、不図示のCPU、記憶装置や、図示のディスプレイ20、入力装置21(キーボード、マウス、タッチパネル等)を備えている。
支援装置(ローダ)10は、ユーザインターフェース機能部11、コンパイラ機能部12、システム構成定義機能部13、通信機能部14等の各種機能部を有する。そして、これら各種機能部によって、図示のソースコード15、機械語オブジェクト16、使用変数一覧17、プログラム一覧(支援)18、モジュール情報19などが作成・生成・保持されることになる。
上記不図示の記憶装置には、予め所定のアプリケーションプログラム等が記憶されており、上記不図示のCPUがこのアプリケーションプログラムを実行することにより、上記各種機能部11,12,13、14等の処理機能が実現される。
ユーザインターフェース機能部11は、ユーザによる任意の制御プログラムのソースコード15の作成作業を支援する機能(この機能自体は既存の一般的な機能)を有する。ユーザインターフェース機能部11は、例えばディスプレイ20上に所定のプログラム作成支援画面を表示する。ユーザは、上記入力装置21を操作して、このプログラム作成支援画面上で所望のソースコード15を記述する。作成されたソースコード15は、基本的に、後述する機械語オブジェクト16の生成・転送後も、支援装置10側で保持される。
ここで、制御プログラムは、例えば、上記各設備の各種機器毎に対応して作成されるものであり、また、上述した設備の更新(リプレース)等に応じて変更(バージョンアップ等)されるものである。バージョンアップ等の際には、上記保持されているソースコード15に対して、ユーザインターフェース機能部11によりユーザが編集等を行うことになる。また、任意の1つの設備がリプレースされる場合、それに伴って、通常は、この設備に係る全ての制御プログラムを変更(バージョンアップ等)することになる。
尚、上述したことから、ソースコード15や機械語オブジェクト16、33は、逐一述べないが、上記各設備の各種機器毎に対応して複数存在するものであり、よって、例えばソースコード群や機械語オブジェクト群などと見做してよいものとする。但し、これに限らず、本説明においてソースコード15や機械語オブジェクト16、33が、上記ソースコード群や機械語オブジェクト群のうちの任意の1つのソースコードや機械語オブジェクトを意味する場合もあるものとする。
コンパイラ機能部12は、上記ユーザインターフェース機能部11によってユーザにより作成されたソースコード15を、ターゲット(PLC30)上で動作する機械語オブジェクト16に変換する。更に、このコンパイル処理に伴って、使用変数一覧17、プログラム一覧18を生成するが、これについては後に説明する。
システム構成定義機能部13は、ユーザに任意のシステム構成情報を入力させて、これに基づいてモジュール情報19を生成する。これについても後に説明する。
通信機能部14は、生成された機械語オブジェクト16をターゲット(PLC30)にダウンロードする。但し、生成された機械語オブジェクト16全てをPLC30にダウンロードするのではなく、ユーザ指定に応じて決定された1以上の(基本的には複数の)機械語オブジェクト16のみをダウンロードする。
PLC30は、制御プログラム(そのソースコード15)の更新/修正等に伴い更新/修正版等の機械語オブジェクト16が上記支援装置10からダウンロードされた場合には、それまで保持・実行していた旧プログラム(その時点で保持している機械語オブジェクト33)に代えて、受信した機械語オブジェクトを新たな機械語オブジェクト33として保持して実行開始する。このように、PLC30は、稼働中に制御プログラムを新版(バージョンアップ版)に切り換える。
PLC(ターゲット)30は、プログラム実行管理機能部31、通信機能部32等の各種機能部を有する。
通信機能部32は、上記支援装置10の通信機能部14との通信処理を行って、例えば上記ダウンロードされる機械語オブジェクト16等をデータを受信すると、これを上記の通り新たな機械語オブジェクト33として不図示のメモリ等に格納する。通信機能部32は、更に、この受信データに基づいてプログラム一覧(PLC)34を生成格納する。これについては後に説明する。また、通信機能部32は、例えば支援装置10からの要求に応じて、機械語オブジェクト33やプログラム一覧(PLC)34を、支援装置10に送信する(アップロード)。
プログラム実行管理機能部31は、上記保持している機械語オブジェクト33を実行することで、各種制御対象機器(後述する図2に示す各設備の各種機器)を制御する。
PLC30は、不図示のCPU、メモリ等を有しており、当該不図示のメモリ等には、予め所定のアプリケーションプログラム等が記憶されており、上記不図示のCPUがこのアプリケーションプログラムを実行することにより、上記各種機能部31、32等の処理機能が実現される。
ここで、上記支援装置10のソースコード15と機械語オブジェクト16について、図2に示す一例を参照しながら説明する。
図2は、PLCによる各設備の制御に係わる構成を示す図である。
図1では不図示であった上記各種制御対象(各設備の各種機器)の一例が、図2に示す設備1、設備2の2つの設備である。これら設備1,設備2は、それぞれ1以上の機器(通常は複数の機器)より構成される。ここでは、仮に、設備1は図示の機器1−1、機器1−2から成り,設備2は図示の機器2−1、機器2−2から成るものとする。尚、図2は、システム全体を構成する設備全てを図示しているとは限らない(3つ以上の設備があってもよい)。
上述したように、PLC30は、各I/Oモジュールを介して各設備(例えば上記設備1,設備2)の各種機器を制御する。例えば、1つの機器に対して1つのI/Oモジュールが設けられている。そして、上記各制御プログラムは、それぞれが特定の(重複しない)1つの設備に係わる1以上のI/Oモジュールを介して、この設備の1以上の機器を制御するものと見做してもよい。
そして、上述したように、本説明における制御プログラム(そのソースコード15や、その機械語オブジェクト16、33)は、上記各制御プログラムより成る制御プログラム群と言えるものである。
例えば図示の制御プログラムPG1、PG2、PG3、PG4の4つの制御プログラムがあるものとする。例えば制御プログラムPG1は設備2の機器2−1を制御するプログラムであり、制御プログラムPG2は設備2の機器2−2を制御するプログラムである。また、例えば制御プログラムPG3は設備1の機器1−1を制御するプログラムであり、制御プログラムPG4は設備1の機器1−2を制御するプログラムであるものとする。
ここで、既に述べた通り、ユーザ負担や作業効率等を考慮して、上記制御プログラムPG1、PG2、PG3、PG4の各ソースコード15を一度にまとめて作成(編集/更新)すると共に、一度にまとめてコンパイルして各機械語オブジェクト16を生成する場合が多い。また、ソースコード15の作成は、新規作成に限らず、むしろ何らかのバージョンアップ版の作成(例えば設備のリプレースに応じたもの)を行う場合が多い。
ここで、設備1、設備2の変更を行う場合に、これに伴って上記制御プログラムPG1、PG2、PG3、PG4の各ソースコード15をまとめて変更する場合が考えられる。しかし、設備の変更(リプレース)は、複数の設備を一度にまとめて行うことは困難であり、通常は、順次、変更作業が行われる。
例えば、今週は設備1を変更し、来週は設備2を変更する等している。この場合、設備1の変更作業が完了したら、制御プログラムPG3、PG4の変更版をターゲット(PLC30)にダウンロードすることで、PLC30側で保持・実行する制御プログラムを変更させる必要がある一方で、制御プログラムPG1、PG2の変更版は未だターゲット(PLC30)にダウンロードしないようにする必要がある(尚、逐一述べないが、既に説明してある通り、ダウンロードするのは機械語オブジェクト16であり、ソースコード15はダウンロードしない)。
この様に、例えば任意の設備の変更(リプレース)が完了したら、上記制御プログラム群の中から当該設備に係わる1以上の(基本的には複数の)制御プログラムのみを、ターゲット(PLC30)にダウンロードする必要がある。しかしながら、この様な選択・判断をユーザが行うことは困難であるし、ミスが生じる可能性がある。ユーザにとって、例えば上記の例では、変更作業が完了した設備が設備1であることを認識することは容易であるが、設備1に係わる制御プログラムを全て認識していることは困難である(上記の例では2つであるが、実際には多数ある場合も少なくない)。
本手法は、この様な問題を解消するものであるが、これについては後に説明するものとし、ここでは本例のプログラマブルコントローラシステムについて図2を参照しながら更に詳細に説明するものとする。
既に述べたように、PLC30は、上記各種制御プログラムを実行することで、各種制御対象機器を制御する。これは、例えば、図2に示すように、各I/Oモジュールを介して各機器を制御するものである。PLC30は、例えばシリアル線等を介して、基本的には全てのI/Oモジュールと接続している。各I/Oモジュールは、それぞれ、基本的に、1台の機器と1対1で接続している。各I/Oモジュールには、予め所定の識別番号(局番という)が割り当てられている。
例えば、図示の各I/Oモジュールに記載の1,2,3、・・・7の各番号が、そのI/Oモジュールに割り当てられている局番を意味するものとする。これより、以下、この局番を用いて、例えばI/Oモジュール‘1’等と記すものとする。図示の例では、I/Oモジュール‘2’とI/Oモジュール‘3’が、設備2の各機器に対応するI/Oモジュールである。I/Oモジュール‘1’とI/Oモジュール‘4’が、設備1の各機器に対応するI/Oモジュールである。
また、上記各制御プログラムにおいては、通常、任意の機器に対する制御に関して、その機器に対応するI/Oモジュールの局番が記述されている。これは、制御プログラムのソースコード15には、各変数に係わる記述があるが、これは例えば変数名とアクセス情報等である。アクセス情報はメモリアドレス等であるが、対応するI/Oモジュールの局番が含まれる場合もある。尚、この例の場合、局番が記述されていない変数は、I/Oモジュールに割り付けられるものではなく、PLC30内部で使用する変数であることを意味している。
尚、I/Oモジュールに割り付けられる変数であっても、PLC30内部で使用する変数であっても、割付先メモリは、PLC30内のメモリである。このメモリには、各I/Oモジュールに割り当てられた各記憶領域がある。これより、たとえ変数に係わる記述に局番が無い場合であっても、アクセス先アドレスが記述されていれば、それが属する記憶領域を判別することで、対応するI/Oモジュールを判別できる。
以上、既存のプログラマブルコントローラシステムの構成や制御プログラムの一例について説明した。この例に応じた使用変数一覧17、モジュール情報19の具体例を、図3、図4(b)に示す。以下、これら具体例について説明する。
まず、既に述べたように、コンパイル機能部12は、各制御プログラム毎に、そのソースコード15を機械語オブジェクト16に変換する際に、プログラム中の各変数に係わる記述に基づいて、上記使用変数一覧17を生成する。これは、既存の一般的なコンパイル機能として、ソースコード15中に記述されている各変数のアクセス情報(メモリのアドレス割り当て等)を生成する機能があり、これに基づいて使用変数一覧17を生成する。
図3に、使用変数一覧17のデータ構成例を示す。
図示の例では、使用変数一覧(テーブル)17は、プログラム名41、変数名42、局番43の各データ項目より成る。プログラム名41には、ソースコード15のプログラム名(ファイル名;ユーザが任意に決めている)が格納される。変数名42には、プログラム(ソースコード15)中に記述されている各変数の変数名が格納される。変数名は、ユーザが任意に決めて記述している。局番43は、上記プログラム名41のプログラム(ソースコード15)において、上記変数名42の変数に係わるアクセス情報に含まれる局番が格納される。このアクセス情報(割当てアドレスの指定等)は、ユーザが任意に決めて記述してもよいが、アドレス指定が無い変数もある。アドレス指定が無い変数に対しては、例えばコンパイラ機能部11が任意のアドレスを割り当てる。
図3に示す使用変数一覧17の格納内容は、例えば下記のような制御プログラム(そのソースコード15)が処理対象であった場合の例を示している。尚、下記の制御プログラムのファイル名は、“プログラム1”であるものとし、その一部を示しているものとする。
ここで、ユーザは、通常、そのプログラムで使用する変数の宣言を記述する。
以下がIEC61131-3での変数宣言例である。
VAR
変数1 : INT;
変数2 AT %IW 2.0 : INT;
変数3 AT %QW 3.0 : INT;
END_VAR
変数名の後にある「AT」は、変数の割当てアドレス(アドレスは、%の後で指定する)をユーザが指定する場合に記述する。
変数宣言のアドレスの指定は、I/Oモジュールの場合、以下の規則で定義する。
・入力モジュールの場合; %IW 局番.ワード位置
・出力モジュールの場合; %QW 局番.ワード位置
つまり、上記変数2は入力モジュール、変数3は出力モジュールに関する記述であることになる。そして、変数2に関して指定されているアドレス(局番.ワード位置)は‘2.0’、変数3に関して指定されているアドレス(局番.ワード位置)は‘3.0’であることになる。よって、変数2に対応する局番は‘2’、変数3に対応する局番は‘3’であると判別できることになる。尚、局番は、各I/Oモジュールを識別するための管理番号であり、I/Oモジュール毎に一意な番号である。
コンパイラ機能部12は、上記規則に従って各変数名とそれに対応する局番を抽出することができる。勿論、上記のようにファイル名(プログラム名)も取得できる。そして、このようにして取得したプログラム名、変数名、局番を、使用変数一覧17のプログラム名41、変数名42、局番43に格納する。この処理を、各制御プログラムについてコンパイルする際に実行することになる。
尚、変数1のように「AT」の記述が無い(よってアドレス指定もない)場合は、コンパイラ機能部12が自動で任意のアドレスを割り付ける。但し、この場合は上記の通りこの変数はI/Oモジュールに割り付けられるものではないので、局番は存在しない。よって、図3に示すように、変数名42が“変数1”の局番43には、データ(局番)は格納されない。
この例のように、1つの制御プログラム(プログラム1)に関して、局番なし、局番=‘2’、局番=‘3’等の様々な変数があっても、I/Oモジュールへのアクセスに関しては同じ設備に係わるI/Oモジュールに限るものとなっている(図の例では設備2に係わるI/Oモジュールのみ)。
システム構成定義機能部13は、ユーザにシステム構成(たとえば、プログラマブルコントローラシステムで使用するI/Oモジュールの構成等)を入力させるための機能部である。ユーザは、実際のシステム構成に準じて入力するものであり、図4には図2に示すシステム構成に従った入力例を示している。
システム構成定義機能部13は、ディスプレイ20に、例えば図4(a)に示すようなシステム構成定義画面50を表示する。ユーザは、この画面50上で、システム構成に関する所望の定義を入力することができる。
ユーザは、システムを構築する場合、どのようなモジュール構成を組むのか考えたうえで、システム構成定義画面50を使用してモジュールの構成定義を実施する。特にI/Oモジュールを定義する時、そのI/Oモジュールがどの設備に関係するのか設定する。これより、例えば図示のように、各I/Oモジュールに関しては、そのI/Oモジュールの識別情報(名称や局番など)、そのI/Oモジュールが対応する設備(接続している機器が設けられている設備)の識別情報(設備名など)等が定義される。
この様な定義内容に基づいて、モジュール情報19が生成・記憶される。
尚、図4(a)に示す定義内容は、図2に示すシステム構成に従っている。これより図示の通り、I/Oモジュール‘1’及びI/Oモジュール‘4’は設備1に関連するI/Oモジュールであり、I/Oモジュール‘2’及びI/Oモジュール‘3’は設備2に関連するI/Oモジュールであることが定義されている。また、図2には示されていないが、図4(a)に示す定義内容によれば、I/Oモジュール‘5’‘6’‘7’は、不図示の設備3に関連するI/Oモジュールであることになる。
図4(b)に、モジュール情報19の具体例を示す。
図示のモジュール情報19では、局番61に対応付けて設備名62が格納されている。但し、この例に限らず、更に上記モジュール名が格納されてもよいし、局番61の代わりにモジュール名が格納されてもよい。各I/Oモジュールの識別情報は、局番とモジュール名のどちらか一方があればよいからである。また、I/Oモジュールの識別情報は、局番やモジュール名に限らず、他の何らかの情報としてもよい。但し、本例では局番を用いるものとして説明する。
尚、図示の局番61と設備名62の各データ内容は、図4(a)に示す定義に従っている。上記の通り、これは図2に示すシステム構成に応じた定義であることになる。
また、コンパイラ機能部12は、上記コンパイル処理に伴って、上記使用変数一覧17だけでなく更にプログラム一覧(支援)18も生成する。つまり、ソースプログラムをコンパイルした場合、それによって生成した機械語オブジェクトと元のソースプログラムとを関連付けるための情報を生成する。
図5(a)に、プログラム一覧(支援)18の具体例を示す。
図示の例では、プログラム一覧(支援)18は、管理番号71、プログラム名72、機械語オブジェクトファイル名73、機械語オブジェクトサイズ74のデータ項目から成る。
管理番号71は、支援装置10が各制御プログラムを識別するための一意の番号である。プログラム名72はソースコード15のプログラム名(ファイル名)であり、このプログラム名72のソースコード15をコンパイルして生成した機械語オブジェクト16のファイル名が、機械語オブジェクトファイル名73に格納される。更に、この機械語オブジェクト16のデータサイズが、機械語オブジェクトサイズ74に格納される。尚、各機械語オブジェクト16のファイル名は、例えばコンパイラ機能部12が任意に決定している。
支援装置10(例えばその通信機能部14など)は、上記コンパイル処理によって生成した機械語オブジェクト16をPLC30にダウンロードする際に、上記プログラム一覧(支援)18を参照するなどして、その管理番号と機械語オブジェクト情報も一緒に送信する。機械語オブジェクト情報とは、例えば上記機械語オブジェクトサイズ74等であるが、この例に限らない。
PLC30は、これらのダウンロード情報を受信すると、これに基づいてプログラム一覧(PLC)34を生成する。
図5(b)に、プログラム一覧(PLC)34の具体例を示す。
図示の例のプログラム一覧(PLC)34は、管理番号81、機械語オブジェクト格納先アドレス82、機械語オブジェクトサイズ83のデータ項目より成る。
管理番号81と機械語オブジェクトサイズ83には、それぞれ、上記支援装置10から機械語オブジェクト16と共にダウンロードされた上記管理番号と機械語オブジェクト情報が、格納される。
また、PLC30は、上記支援装置10からダウンロードされた機械語オブジェクト16を、任意の記憶領域に格納する(新たな機械語オブジェクト33として保持する)。この格納領域の先頭アドレスが、上記機械語オブジェクト格納先アドレス82に登録される。
後に、支援装置10から所定の機械語オブジェクト33(管理番号により指定)のアップロード指示があった場合、指定された管理番号を用いて上記プログラム一覧(PLC)34を参照すれば、該当する機械語オブジェクト33が記憶された記憶領域(先頭アドレスとサイズ)が分かるので、この記憶領域から機械語オブジェクト33を読み出して支援装置10に送信(アップロード)することができる。
ここで、PLC30は、システムを構成する複数の設備(ここでは、設備1、設備2、設備3であるものとする)を制御するものであり、これら各設備を制御する為の各制御プログラム(各機械語オブジェクト33)を保持・実行しているものとする。PLC30のプログラム実行管理機能部31は、例えば予め設定されるスケジュール情報に従って、これら各機械語オブジェクト33を実行する。また、これら各機械語オブジェクト33に応じたプログラム一覧(PLC)34が格納されている。
一方、支援装置10側には、上記各ソースコード15や、これらをコンパイルして生成した各機械語オブジェクト16が保持されている。ある時点において、ある制御プログラムの機械語オブジェクト33と機械語オブジェクト16とがもし一致するならば、PLC30はこの制御プログラムの最新版を保持・実行しているものと見做してよい。従って、この制御プログラムの機械語オブジェクト33は、PLC30にダウンロードする必要はないことになる。
一方、ある時点において、ある制御プログラムの機械語オブジェクト33と機械語オブジェクト16とがもし不一致であるならば、基本的には、機械語オブジェクト16が最新版であり、機械語オブジェクト33は旧版であると見做してよい。従って、この場合には基本的には、この制御プログラムの機械語オブジェクト33は、PLC30にダウンロードして、PLC30で保持・実行する制御プログラムを最新版へと更新したほうがよいことになる。しかしながら、既に述べた通り、本手法で想定している状況では、未だ最新版へと更新しないほうがよい場合もある。つまり、未だ対応する設備の更新(リプレース)が実行されていない制御プログラム(最新版;更新版)は、未だPLC30にダウンロードしてはならないことになる。尚、バージョンアップが行われてもファイル名は変更されない。
上記ソースコード15のバージョンアップ等は、上述したように作業効率等を考えて、一度に全て行われる場合が多い。仮に、設備1と設備2の改造が行われるものとし、今週は設備2の改造、来週は設備1の改造が行われるとした場合でも、設備1と設備2の両方に係る制御プログラムのソースコード15のバージョンアップ作業が、まとめて行われることになる。そして、これら更新版のソースコード15に対してコンパイル機能部12によるコンパイル処理が実行されて、更新版の機械語オブジェクト16が生成されると共に、使用変数一覧17、プログラム一覧(支援)18も新たに生成されることになる。
また、もし、上記設備の改造に伴ってシステム構成が変化した場合には、モジュール情報19の再定義を行う必要がある。例えば、設備1に対して局番=8のI/Oモジュールが追加された場合には、この情報がモジュール情報19に追加される必要がある。
ユーザが、以上の作業を完了後、支援装置10を操作して、例えばプログラム−設備関連付け処理の実行を指示すると、図7の処理が実行される。更に、その後に、ユーザが制御プログラムのダウンロード実行を指示すると、図8の処理が実行される。以下、図7、図8の処理について説明する。
尚、図7、図8の処理は、支援装置10の図1に示す何れかの機能部(例えばユーザインタフェース機能部11や通信機能部14等)が実行してもよいし、不図示の機能部が行っても良い。何れにしても、支援装置10において実行されることに変わりはなく、図7、図8の処理を実行する機能部を例えば「転送管理機能部」等と呼ぶものとする。
また、図7、図8の処理は、支援装置10の上記不図示のCPUが、上記不図示の記憶装置に記憶されているアプリケーションプログラムを実行することにより実現される。
まず、図7の処理について説明する。
図7は、プログラムダウンロードに係わる前処理のフローチャート図である。
上記の通り、図7の処理は、支援装置10が実行する。
支援装置10は、上記指示に応じて図7の処理を実行開始すると、まず、上記プログラム一覧(支援)18を読み込みと共に(ステップS1)、PLC30から上記プログラム一覧(PLC)34を取得し読み込む(ステップS2)。
そして、これらプログラム一覧18、34を参照して、順次、同じ制御プログラムに係わる(管理番号が同一の)機械語オブジェクト同士を比較して一致するか否かを判定し(ステップS3〜S5)、一致しない場合にはステップS7〜S10を実行する。これは、例えば、プログラム一覧(支援)18の各レコードを順次処理対象とするものである。
尚、ここでは、管理番号が同一であれば例えばバージョンが異なっていても「同じ制御プログラム」であるものとしている。換言すれば、支援装置10においては、任意の新規制御プログラムが作成された際に当該プログラムに任意の管理番号が割り当てられた後は、後に、当該プログラムをバージョンアップ等する変更が行われても、管理番号は変更されないし、新たな管理番号が割り当てられることもないように、管理・制御されている。
上記ステップS3〜S5の処理は、例えば下記のように行う。
すなわち、プログラム一覧(支援)18の任意の処理対象レコードを参照して、その機械語オブジェクトファイル名73を取得し、このファイル名の機械語オブジェクト16を読み込む(ステップS3)。次に、この機械語オブジェクト16に対応する機械語オブジェクト33をPLC30から読み込む。すなわち、上記処理対象レコードの管理番号71を用いて、プログラム一覧(PLC)34における該当レコードを認識して、この該当レコードの機械語オブジェクト格納先アドレス82と機械語オブジェクトサイズ83によって示されるPLC30の記憶領域から、データ(該当する機械語オブジェクト33)を読み出す(ステップS4)。
上記処理は、例えばプログラム一覧(支援)18の先頭レコードが処理対象である場合には、まずステップS3でファイル名=“PG0001.dat”の機械語オブジェクト16が読み込まれる。更に、先頭レコードの管理番号71=‘1’であることから、プログラム一覧(PLC)34における該当レコードは、管理番号81=‘1’のレコードであり、そのアドレス82=‘10000’とサイズ83=‘100’とが取得されて、これらに基づいてPLC30のメモリの該当記憶領域のデータ(該当する機械語オブジェクト33)が読み込まれることになる。
そして、ステップS3で取得した機械語オブジェクト16とステップS4で取得した機械語オブジェクト33とを相互に比較して、両者が同一であるか否かを判定する(ステップS5)。そして、両者が同一である場合には(ステップS5,YES)、ステップS6へ移行し、全てのプログラム(全ての処理対象レコード)について処理実行済みとならない限りは(ステップS6,NO)ステップS3に戻り、次の処理対象レコードについて同様の処理を行う。
一方、両者が同一ではない場合には(ステップS5,NO)、ステップS7〜S10の処理を実行する。この場合、基本的には、機械語オブジェクト16が最新版であり、機械語オブジェクト33は旧版であるはずであるので、最新版をPLC30にダウンロードすることで、PLC30側の機械語オブジェクト33を最新版に置き換える必要がある。但し、本手法では必ずしもその時点でダウンロードすべき状況とは限らないので、ダウンロード候補として登録するが、その際、ステップS7〜S10の処理によって、該当する設備名と対応付けて登録しておくことで、これを例えば後に図6に示すような転送選択画面90の表示や、後述する図8の処理に用いる。尚、後述する図8の処理は、転送選択画面90の表示、この画面90上でのユーザによる任意の選択、この選択に応じたダウンロード処理実行等である。
以下、ステップS7〜S10の処理について説明する。
まず、上記処理対象レコードのプログラム名72を用いて、使用変数一覧17を検索して、そのプログラムの各変数に係る局番(そのプログラムがアクセスするI/Oモジュールの識別情報)を取得する(ステップS7)。例えば、プログラム名72が“プログラム1”である場合には、局番‘2’や局番‘3’が取得されることになる。但し、1つの局番が取得された時点でステップS7の処理を終了させてもよい。通常、1つのプログラムが複数の設備を制御するようなことはないので、複数の局番を取得してもそれは全て同じ設備に係わるI/Oモジュールの局番であるはずだからである。
次に、ステップS7で得た局番を用いてモジュール情報19を検索して、該当する設備名を取得する(ステップS8)。上記の例では局番‘2’や局番‘3’が取得されるので、どちらも該当する設備名は“設備2”である。
そして、上記プログラム名(本例では“プログラム1”)とステップS8で得た設備名(本例では“設備2”)とを対応付けてメモリに記憶する(不図示のプログラム−設備テーブルに記憶するものとする)(ステップS9)。これは例えばダウンロード候補として記憶するものである。
その後、ステップS10の処理を行ってもよいが、行わずにそのままステップS6へ移行してもよい。尚、ステップS10では上記処理対象のプログラム(本例では“プログラム1”)の変数全てについて上記ステップS7〜S9の処理を実行しない限り、ステップS6に移行することなくステップS7に戻るようにする処理である。
上記図7の処理を実行完了した後に、ユーザが所定のプログラム転送指示を行うと、図6に示す転送選択画面90が表示される。
ここで、図6の転送選択画面90の例について説明しておく。
図示の転送選択画面90における一覧表示部91には、上記不図示のプログラム−設備テーブルの内容が表示される。つまり、ダウンロード候補のプログラム名と対応する設備名のペアが一覧表示される。更に、これら各ペア毎に図示の「転送有無」に示すチェックボックスが表示される。つまり、「転送有無」は、ユーザに所望のプログラム(または設備)を選択させる為のチェックボックス欄である。
ユーザは、例えば任意の設備のリプレース作業等が完了する毎に、転送選択画面90を表示させる。本手法では、ユーザは、どの設備のリプレース作業が完了したのか程度は、把握しているものとする。これより、ユーザは、転送選択画面90を参照することで、その時点で転送すべきプログラムを容易に的確に認識できる。
仮に、設備2のリプレース作業が完了した状況であったら、図6の例では、少なくとも“プログラム1”と“プログラム2”は今回ダウンロードすべきプログラムであり、その一方で少なくとも“プログラム3”は今回はダウンロードすべきではないプログラムであることが把握できる。
これより、ユーザが、“プログラム1”に対応するチェックボックスと“プログラム2”に対応するチェックボックスとをチェック状態とすることで(その後、「転送開始」ボタン92を押下することで)、“プログラム1”と“プログラム2”の機械語オブジェクト16を、PLC30にダウンロードさせることができる。
この様に、ユーザは、プログラム更新対象の設備名を把握しておけば、この設備に対応するプログラム名等を把握していなくても問題なく、その時点で必要なプログラムのみをダウンロードさせることができ、誤ってその時点ではダウンロードすべきでないプログラムがダウンロードされてしまう事態を抑止できる。
尚、上記図7の処理によって、ダウンロードの必要がないプログラム(例えば既に最新版がPLC30側で保持・実行されているもの)は、そもそも一覧表示部91に表示されないので、ダウンロードもされないことになる。この様に、無駄な選択作業や無駄なダウンロード処理を回避できる効果も得られる。
しかしながら、その一方で、例えば、全体のプログラム数が多数であり、転送選択画面90の一覧表示部91に表示される上記ペアも多く、上記設備2に対応するプログラムの数も少なくない場合も有り得る。この様な場合、ユーザは、例えば表示をスクロールさせながら設備2に対応する全てのプログラムに対応するチェックボックスを順次チェック(指定)していく必要があり、作業負担が少なくなく、ミス(指定漏れ等)が生じる可能性もある。
これより、図8には、この様な手間を軽減できる処理を示す。
この例では、ユーザは、例えば設備2の例の場合、設備2に対応するプログラムのうちの1つだけを指定すれば済む(図6ではプログラム1についてのみ、対応するチェックボックスをチェック状態としている)。そして、この状態で「転送開始」ボタン92を押下すれば(図8のステップS11)、図8のステップS12以降の処理が実行される。
まず最初は、上記一覧表示部91に係わる上記不図示のプログラム−設備テーブルの先頭レコードを、デフォルトの処理対象とする(ステップS12)。そして、処理対象レコードのプログラムが転送対象か否かを判定する(ステップS13)。これは、処理対象レコードの上記チェックボックスにチェックが入っている場合には転送対象と判定し(ステップS13、YES)、ステップS14〜S16の処理を実行する。一方、チェックボックスにチェックが入っていない場合には転送対象ではないと判定し(ステップS13、NO)、ステップS17へ移行する。
ステップS14では、上記プログラム−設備テーブルにおいて処理対象レコードの設備名を取得して、この設備名を用いて当該プログラム−設備テーブルを検索して、該当するレコードを全て抽出し、各該当レコードの各プログラム名も転送対象と判定する(ステップS15)。例えば図6の例では、先頭レコードにはチェックが入っているので、その設備名である「設備2」を取得することになる。そして、この場合、上記検索を行うことで、他のレコードの中で設備名が「設備2」であるレコードを全て抽出することになる。図6の例では、2番目のレコードが該当レコードとなり、そのプログラム名「プログラム2」の制御プログラムも転送対象と判定されることになる。
そして、転送対象と判定されたプログラム名の制御プログラム(その機械語オブジェクト16)全てを、PLC30へダウンロードする(ステップS16)。つまり、上記処理対象レコードの制御プログラム(例ではプログラム1)だけでなく、上記ステップS15の処理で転送対象となったプログラム全ても、PLC30へダウンロードする。換言すれば、ユーザが指定(チェック)した設備に係るプログラム全てを、PLC30へダウンロードする。そして、ステップS17へ移行する。
尚、上記ステップS16のダウンロード処理の際には、上記転送対象と判定されたプログラム名を用いて上記プログラム一覧(支援)18を検索することで、該当する機械語オブジェクト16を判別することになる(該当レコードの機械語オブジェクトファイル名73を取得する)。
この様にすることで、ユーザは、任意の設備に係る制御プログラム全てをPLC30へダウンロードして更新させたい場合に、これら全てについて逐一指定する必要はなく、そのうちの1つを指定(チェックボックスでチェック等)すれば済むようになる。よって、作業負担が軽減されると共に、ミス(指定漏れなど)が生じることになくなる。
ステップS17において上記不図示のプログラム−設備テーブルの次のレコードを新たな処理対象レコードとし、ステップS13に戻る。但し、次のレコードが無い場合、つまり全てのレコードについて処理完了した場合には(ステップS18,YES)本処理を終了する。
尚、ステップS17において、次のレコードの制御プログラムが既にダウンロード済みである場合には、更に次のレコードを新たな処理対象レコードとする。
尚、転送選択画面90は、図6に示す例に限らず、例えば設備名だけを一覧表示するようにしてもよい(勿論、チェックボックスは表示する)。そして、ユーザに、所望の設備名を選択指定させるようにしてもよい。この様にした場合でも、上記図8と略同様の処理が実行されて、同様の効果が得られることになる。つまり、何れにしても少なくとも設備名は表示されることになり、ユーザは設備名の表示を見ることで的確な判断を行えて的確な選択を行うことができ、以って的確なダウンロードが行われるようになる。
尚、上述した一例では、局番を用いて説明をしたが、これはI/Oモジュールの識別情報の一例を示すものであり、識別情報は局番に限るわけではない。例えば、支援装置10のコンパイラは、一般的に、各変数をPLC内のメモリに割り付ける。これは、PLC自体に係わる変数(例では変数1)だけでなく、I/Oモジュールに係わる変数(例では、変数2、変数3である)も、PLC内のメモリに割り付ける。これより、局番の代わりに割付けアドレスを用いて設備名と変数(プログラム名)との関連付けを実施しても、上述した一例と同様の処理が実現可能である。尚、この場合、割付けアドレスによって該当するI/Oモジュールが判別できるようにする登録情報が、別途必要かもしれない。
ここで、PLCが保持・実行する各制御プログラムを、PLCを停止させることなく(運用中に)実行する処理(オンライン更新処理と呼ぶ)について、説明する。ここでは、本出願人による方式を示すものとする。これは、例えば特願2001−100991号などでも述べているものである。
尚、本手法は、オンライン更新処理が行われない場合であっても適用可能であるが、オンライン更新処理が行われる場合の方が、より顕著な効果を奏するものである。特に、その時点ではダウンロードすべきでない制御プログラムに係わる設備に関しては、もし誤ってこの様な制御プログラムがPLCにダウンロードされてしまうと、PLC側では当該設備の運用中に誤ったプログラムに更新されてしまうことになり、それによって当該設備に何らかの障害が発生する可能性が高いからである。
PLC(プログラマブルコントローラ)の支援ツールは、ユーザが記述したプログラム(ソースコード;変数含む)をコンパイルして、PLCで動作する機械語オブジェクトを生成し、その際、PLC上の有限なメモリに(その任意のアドレスに)各変数を割り付ける(アドレス割当てを行う)。そして、機械語オブジェクトをPLCにダウンロードして記憶させる。これより、PLCは、このプログラムを実行することで各種処理を実行し、各変数の値のリード/ライト等の処理の際には、その変数に割り付けられたアドレス(割当位置)にアクセスすることになる。
尚、上記各変数へのアドレス割当ては、ソースコードにおいてアドレス指定されている場合には、この指定アドレスを用いる。アドレス指定が無い変数に関しては、例えばコンパイラが任意のアドレスを割り当てるが、この例に限らない。
PLCが稼動中にそのプログラムを変更する場合は(プログラムのバージョンアップ等)、既に割り付けた変数(既存の変数というものとする)のアドレスを変更することができない(変数の割当位置が変化すると、変更前と変更後とで変数の値がプログラムで正常に扱えないため、誤動作する。;変数のアドレスが変更されることにより、アドレスの変更前と変更後とでデータを引き継ぐことができない)。
そのため、従来は、変数を追加しても既存の変数のアドレスが変更されないようにするために予備領域を設けて、追加した変数(追加変数というものとする)をこの予備領域に割り付けるようにしている。予備領域に追加変数を割り付けることにより、既に割り付けた変数(既存の変数)の割当位置を変更しないで、変数の追加が可能になる。予備領域は、プログラム構成単位(以下POUと示す)単位で持つため、予備領域のサイズは、大抵、数W(WORD)から数10Wである。
ここで、上記POUには、PG(プログラム)、FB(ファンクションブロック)、FCT(ファンクション)等の種類がある。基本的には、PGがメインプログラムでFBやFCTがサブプログラムと見做してよく、PGが、その処理実行中にFBやFCT等を呼び出す。また、FBが、その処理実行中に他のFBやFCTを呼び出す場合もある。
上述したプログラム1、プログラム2等は、例えば上記PG(プログラム)であるが、この例に限るものではない。
ここで、上記PG(プログラム)、FB(ファンクションブロック)、FCT(ファンクション)等の各種POUのソースコードには、通常、任意の変数が記述されている。そして、各種POUを有するプログラムをコンパイルする際には、コンパイラ機能により各POUのインスタンス化(各POUの各変数をメモリに割り付ける)を実施する。そして、後にプログラムを修正(バージョンアップ)する等して、任意のPOUにおける変数に追加があった場合、この追加変数を上記予備領域に割り付けることになる。
ここで、PLC30の稼働中に、ユーザが支援装置10上でプログラム修正(例えばバージョンアップしたソースコード15の作成等)を行った場合であって、特にPLC30を止めないでPLC30の制御プログラム(機械語オブジェクト33)の変更を実施しても異常動作しないようにするためには、既にメモリに割付けた変数(既存の変数)のメモリ割付け位置を変更しないようにする必要がある。これは、上記プログラム1の変数2、変数3のようにソースコード15でアドレス指定されているものについては、ユーザがソースコード15修正の際に誤ってアドレスを変えない限りは、特に問題はない。
しかし、上記変数1の場合、コンパイラがコンパイル実行の都度、任意のアドレスを割り当てると、メモリ割付け位置が変わってしまう。これより、コンパイラ機能部12は、例えば初版のソースコード15のコンパイル実行の際に、各変数のメモリ割当て状況を記憶しておく。つまり、どの変数をどの記憶領域(アドレス)に割り当てたのかを示す情報を、不図示のテーブルに記憶しておく。そして、その後、バージョンアップ版のソースコード15のコンパイル実行の際には、上記不図示のテーブルを参照することで、既存の変数に対しては現状と同じアドレスを割り当てるようにする。また、新規変数があった場合には、任意のアドレスを割り当てると共に上記不図示のテーブルに追加登録する。
尚、例えば、上記変数のアドレス割当ては、各プログラム毎(各POU毎に)に一塊の記憶領域が割り当てられる。
以上説明したように、本手法では、プログラマブルコントローラと支援装置を有するプログラマブルコントローラシステムにおいて、下記の構成・動作を供する。
支援装置は、既存の機能として、ユーザにPLCの制御プログラム(そのソースコード)の作成を任意に行わせるためのプログラム作成支援機能や、このソースコードをコンパイルしてPLCで実行出来る形式(機械語オブジェクト)に変換するコンパイル機能や、この機械語オブジェクトをPLCにダウンロードする転送機能などを有する。
一般的に、コンパイル機能は、上記コンパイル処理実行中、ソースコードの各変数にアドレス割当てを行うものであるが、本例では更に、処理対象のプログラム名(ソースコードファイル名など)、各変数名、各変数に係わるI/Oモジュール(各変数によるアクセス先のI/Oモジュール;割当てたアドレスに対応するI/Oモジュール)を示す情報等を関連付けて登録する。
更に、ユーザにプログラマブルコントローラシステムのシステム構成定義を設定させる機能であって、各I/Oモジュール名等を設定させると共に、各I/Oモジュールが係わる設備の情報を設定させて登録する機能も有する。
PLCに制御プログラムを転送する場合、PLCで動作している制御プログラム(機械語)と支援装置のコンパイラが生成した制御プログラム(機械語)とを比較し、同一ではないプログラムを転送候補とする。そして、転送候補プログラム群のなかから転送対象プログラム(1以上;基本的には複数)を決定してPLCに転送する。
この決定処理に上記登録データを利用する。すなわち、上記登録データを参照することで、任意の設備に係わるI/Oモジュールが判別でき、このI/Oモジュールに係わるプログラムが判別できる。これによって、任意の設備に係わるプログラムは、全て、PLCに転送されると共に、当該設備に係わらないプログラムが誤ってPLCに転送されることはない。上記任意の設備は、例えばユーザが任意に指定するものであり、例えば複数の設備が順次更新される場合において、その時点で更新作業が完了した設備等である。
尚、ユーザによる指定は、上記設備の指定に限るものではなく、例えばプログラムの指定等であっても構わない。この場合でも、上記登録データを参照すれば、指定プログラムが係わるI/Oモジュールが判別でき、このI/Oモジュールに係わる設備が判別できるので、当該判別された設備に係わるプログラム全てを判別することができる。例えば、更新作業が完了した設備の設備名は分からないが、当該設備に係わるプログラムの名称は1つは分かっている場合等には、この方法が適用できる。
上述した本手法により、特に複数の設備を制御するプログラマブルコントローラのプログラム更新に関して、各設備を順次更新(リプレース)する場合において、当該設備更新に伴う全制御プログラムの更新(バージョンアップ等)をまとめて行う場合における問題を解消できる。すなわち、上記更新版のプログラム群のうち、その時点においてPLCへ転送して更新させるべき1以上(通常、複数)の制御プログラムを自動的に決定して、転送させることができる。逆に、その時点ではPLCへ転送するべきではない制御プログラムを、誤ってPLCに転送することがないようにできる。つまり、PLCへ転送して更新させるべき制御プログラムの決定を、ユーザが手作業で行う手法に比べて、ユーザの作業負担を軽減できると共にミスが生じることがない。
PLCへ転送するべきではない制御プログラムとは、例えば未だ更新(リプレース)が行われていない設備に係わる更新版プログラムである。更新版プログラムは、更新後の設備に応じた制御内容となっているので、これがPLCに転送されて旧プログラムと置き換えられて実行されてしまうと、システム動作に悪影響を及ぼすことになる。従来ではユーザのミス等によってこのような問題が生じることがあり得たが、本手法によればこの様な問題が生じることはない。
但し、上述した説明は、一例であり、この例に限らず、本手法はシステム構成が変更される場合全般に適用可能である。システム構成が変更される場合とは、例えば上述した一例では既存の設備が更新(リプレース)される場合を示したが、設備の更新(リプレース)には、新規設備の追加等も含まれるものとする。この場合、支援装置では新規設備に応じた新規の制御プログラムを追加作成してPLCにダウンロードする必要がある。尚、この場合、当該新規プログラムに該当するプログラムはPLCには無いので、これを以って上記ステップS5の判定はNOとなる(プログラムは同一ではない)ものとする。あるいは、既存の設備が更新(リプレース)される場合であっても、上記のようにそれに伴って既存の制御プログラムを更新する例に限らず、新規の制御プログラムを作成する場合も有り得る。本手法は、この様な各種ケースに対しても適用可能である。また、この様な各種ケースが混在する場合も有り得る。
このように、本手法によれば、システム構成が変更される場合において、支援装置におけるユーザのプログラム開発効率向上と、設備の更新等に合わせたPLCのプログラムの効率良く的確な更新が可能になり、大規模なシステムでも設備の更新計画に合わせて、手間が掛からずに、稼働中のPLCのプログラムを安全に更新することができる。
10 支援装置(ローダ)
11 ユーザインターフェース機能部
12 コンパイラ機能部
13 システム構成定義機能部
14 通信機能部
15 ソースコード
16 機械語オブジェクト
17 使用変数一覧
18 プログラム一覧(支援)
19 モジュール情報
20 ディスプレイ
21 入力装置
30 PLC(ターゲット)
31 プログラム実行管理機能部
32 通信機能部
33 機械語オブジェクト
34 プログラム一覧(PLC)
35 識別情報
41 プログラム名
42 変数名
43 局番
50 システム構成定義画面
61 局番
62 設備名
71 管理番号
72 プログラム名
73 機械語オブジェクトファイル名
74 機械語オブジェクトサイズ
81 管理番号
82 機械語オブジェクト格納先アドレス
83 機械語オブジェクトサイズ
90 転送選択画面90
91 一覧表示部
92 「転送開始」ボタン

Claims (9)

  1. 複数の設備より成るシステム構成を有し、該複数の設備を制御対象とし、各制御プログラムを実行することで各設備の各種機器を制御するものであって、各設備毎にそれぞれ1以上のI/Oモジュールを介して制御を行うプログラマブルコントローラと、該プログラマブルコントローラと接続する支援装置とを有するプログラマブルコントローラシステムであって、
    前記支援装置は、
    前記各I/Oモジュールと前記各設備との対応関係を登録させて記憶するシステム構成登録手段と、
    前記各制御プログラムのソースコードをコンパイルして機械語オブジェクトを生成すると共に、該コンパイルの際に得られる各制御プログラムと前記I/Oモジュールとの対応関係を記憶部に記憶するコンパイル手段と、
    任意の設備が指定されると、前記システム構成登録手段と前記記憶部とを参照することで、該指定された設備に対応する前記制御プログラムを全て判別して、該判別した制御プログラム全てを前記プログラマブルコントローラに転送する転送管理手段とを有し、
    前記ソースコードの各変数のうちアドレス指定がある変数に関しては、該アドレス指定に前記I/Oモジュールの識別情報が含まれており、
    前記コンパイル手段は、該I/Oモジュール識別情報を用いて、前記制御プログラムと前記I/Oモジュールとの対応関係を生成することを特徴とするプログラマブルコントローラシステム。
  2. 前記システム構成の変更に伴って前記設備に関して順次リプレースが行われる場合において、前記転送管理手段で最初の設備が指定される前に、前記支援装置が保持する前記制御プログラムは全て変更後のシステム構成に応じた制御プログラムとなっており、
    前記指定された設備は、前記リプレース済みの設備であることを特徴とする請求項1記載のプログラマブルコントローラシステム。
  3. 前記転送管理手段は、前記支援装置が保持する各制御プログラムのうち、前記プログラマブルコントローラが保持する制御プログラムと異なる制御プログラムを転送候補として、前記システム構成登録手段と前記記憶部とを参照することで該転送候補の各制御プログラムが係わる設備を判別して、少なくとも該転送候補の各制御プログラムが係わる設備を一覧表示して前記指定を行わせる為の選択画面を表示することを特徴とする請求項1記載のプログラマブルコントローラシステム。
  4. 前記選択画面は、前記転送候補の各制御プログラムを、当該制御プログラムに係わる前記設備と対応付けて一覧表示することを特徴とする請求項3記載のプログラマブルコントローラシステム。
  5. 前記プログラマブルコントローラは、稼働中に、前記転送管理手段によって転送されてきた前記各制御プログラムを、自己が保持・実行していた制御プログラムに代えて保持・実行することを特徴とする請求項1記載のプログラマブルコントローラシステム。
  6. 前記コンパイル手段は、前記コンパイルの際に前記ソースコードの各変数に対して割り当てたアドレスを保持しており、過去のコンパイルの際に既にアドレスを割り当て済みの変数に対しては同じアドレスを割り当てることを特徴とする請求項5記載のプログラマブルコントローラシステム。
  7. 複数の設備より成るシステム構成を有し、該複数の設備を制御対象とし、各制御プログラムを実行することで各設備の各種機器を制御するものであって、各設備毎にそれぞれ1以上のI/Oモジュールを介して制御を行うプログラマブルコントローラと、該プログラマブルコントローラと接続する支援装置とを有するプログラマブルコントローラシステムにおける前記支援装置であって、
    前記各I/Oモジュールと前記各設備との対応関係を登録させて記憶するシステム構成登録手段と、
    前記各制御プログラムのソースコードをコンパイルして機械語オブジェクトを生成すると共に、該コンパイルの際に得られる各制御プログラムと前記I/Oモジュールとの対応関係を記憶部に記憶するコンパイル手段と、
    任意の設備が指定されると、前記システム構成登録手段と前記記憶部とを参照することで、該指定された設備に対応する前記制御プログラムを全て判別して、該判別した制御プログラム全てを前記プログラマブルコントローラに転送する転送管理手段とを有し、
    前記ソースコードの各変数のうちアドレス指定がある変数に関しては、該アドレス指定に前記I/Oモジュールの識別情報が含まれており、
    前記コンパイル手段は、該I/Oモジュール識別情報を用いて、前記制御プログラムと前記I/Oモジュールとの対応関係を生成することを特徴とするプログラマブルコントローラシステムの支援装置。
  8. 複数の設備より成るシステム構成を有し、該複数の設備を制御対象とし、各制御プログラムを実行することで各設備の各種機器を制御するものであって、各設備毎にそれぞれ1以上のI/Oモジュールを介して制御を行うプログラマブルコントローラと、該プログラマブルコントローラと接続する支援装置とを有するプログラマブルコントローラシステムにおける前記支援装置のコンピュータを、
    前記各I/Oモジュールと前記各設備との対応関係を登録させて記憶するシステム構成登録手段と、
    前記各制御プログラムのソースコードであってその各変数のうちアドレス指定がある変数に関しては該アドレス指定に前記I/Oモジュールの識別情報が含まれているソースコードをコンパイルして機械語オブジェクトを生成すると共に、前記I/Oモジュール識別情報を用いて前記各制御プログラムと前記I/Oモジュールとの対応関係を生成して記憶部に記憶するコンパイル手段と、
    任意の設備が指定されると、前記システム構成登録手段と前記記憶部とを参照することで、該指定された設備に対応する前記制御プログラムを全て判別して、該判別した制御プログラム全てを前記プログラマブルコントローラに転送する転送管理手段、
    として機能させるためのプログラム。
  9. 複数の設備より成るシステム構成を有し、該複数の設備を制御対象とし、各制御プログラムを実行することで各設備の各種機器を制御するものであって、各設備毎にそれぞれ1以上のI/Oモジュールを介して制御を行うプログラマブルコントローラと、該プログラマブルコントローラと接続する支援装置とを有するプログラマブルコントローラシステムの前記支援装置における前記制御プログラムの前記プログラマブルコントローラへの転送方法であって、
    予め前記各I/Oモジュールと前記各設備との対応関係を登録させて記憶し、
    前記各制御プログラムのソースコードであってその各変数のうちアドレス指定がある変数に関しては該アドレス指定に前記I/Oモジュールの識別情報が含まれているソースコードをコンパイルして機械語オブジェクトを生成すると共に、前記I/Oモジュール識別情報を用いて前記各制御プログラムと前記I/Oモジュールとの対応関係を生成して記憶部に記憶し、
    任意の設備が指定されると、前記登録した対応関係と前記記憶部に記憶した対応関係とを参照することで、該指定された設備に対応する前記制御プログラムを全て判別して、該判別した制御プログラム全てを前記プログラマブルコントローラに転送することを特徴とするプログラム転送方法。
JP2012125430A 2012-05-31 2012-05-31 プログラマブルコントローラ、その支援装置、プログラム、プログラム転送方法 Active JP5978775B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012125430A JP5978775B2 (ja) 2012-05-31 2012-05-31 プログラマブルコントローラ、その支援装置、プログラム、プログラム転送方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012125430A JP5978775B2 (ja) 2012-05-31 2012-05-31 プログラマブルコントローラ、その支援装置、プログラム、プログラム転送方法

Publications (2)

Publication Number Publication Date
JP2013250810A JP2013250810A (ja) 2013-12-12
JP5978775B2 true JP5978775B2 (ja) 2016-08-24

Family

ID=49849417

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012125430A Active JP5978775B2 (ja) 2012-05-31 2012-05-31 プログラマブルコントローラ、その支援装置、プログラム、プログラム転送方法

Country Status (1)

Country Link
JP (1) JP5978775B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7303424B2 (ja) * 2019-05-22 2023-07-05 オムロン株式会社 情報提供システム、サーバおよび情報提供方法
CN112241141B (zh) * 2020-11-12 2022-08-09 上海电气风电集团股份有限公司 Plc控制***的硬件配置方法、***、设备及介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001290518A (ja) * 2000-04-05 2001-10-19 Mitsubishi Electric Corp プログラマブルコントローラ
JP2003295910A (ja) * 2002-03-29 2003-10-17 Omron Corp ユニット及びツール機器並びにプログラム製品
JP4939957B2 (ja) * 2007-01-31 2012-05-30 三菱電機株式会社 ソフトウェア自動更新装置及びその装置によって自動更新される端末

Also Published As

Publication number Publication date
JP2013250810A (ja) 2013-12-12

Similar Documents

Publication Publication Date Title
JP4973867B2 (ja) Plc制御プログラム開発装置及びプログラム
US20100161085A1 (en) Peripheral device of programmable controller, method of variable substitution, and computer program product thereof
JP6786984B2 (ja) プログラム処理装置およびプログラム
JP5790128B2 (ja) プログラマブルコントローラ・システム、その支援装置
JP2009146229A (ja) プログラマブルコントローラシステム
US9811071B2 (en) System construction support apparatus
JP2009157533A (ja) プログラマブルコントローラシステム
JP6866663B2 (ja) プログラマブルコントローラシステム、プログラマブルコントローラ、支援装置、hci装置、二重化プログラマブルコントローラシステム
JP6292096B2 (ja) プログラマブルコントローラシステム、その支援装置
JP5849592B2 (ja) プログラマブルコントローラシステム、そのプログラミング装置、プログラマブルコントローラ、プログラム、デバッグ方法
JP5978775B2 (ja) プログラマブルコントローラ、その支援装置、プログラム、プログラム転送方法
JP2016224557A (ja) プログラム作成支援装置、プログラムおよび判別方法
JP4842541B2 (ja) 制御用表示装置、画面データ生成装置、並びに、それらのプログラムおよび記録媒体
JP2002268730A (ja) フィールドデバイスのメンテナンス装置
JP4319082B2 (ja) プログラミングシステム
JP6119452B2 (ja) プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ、プログラム
JP6205934B2 (ja) プログラマブルコントローラシステム、その支援装置、プログラム
JP2008198143A (ja) プログラマブルコントローラ用プログラム作成支援装置およびプログラム作成支援方法
JP2016224559A (ja) プログラム作成支援装置、制御方法およびプログラム
JP6455096B2 (ja) コントロールシステム、その支援装置、プログラマブルコントロール装置
CN104572233A (zh) 一种连续功能图编程方法
JP4778312B2 (ja) データ処理装置、プログラム、エディタ装置および記録媒体
JP5205988B2 (ja) Plcのグローバル変数定義方式
JP4877257B2 (ja) プログラマブルコントローラ、プログラマブルコントローラ支援装置、及びプログラマブルコントローラシステム
JP2000235444A (ja) 大型ビルドソフトウェアシステムの管理及び表示方法及びその装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150514

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160329

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160520

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: 20160628

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160711

R150 Certificate of patent or registration of utility model

Ref document number: 5978775

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