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

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

Info

Publication number
JP2015215865A
JP2015215865A JP2014197564A JP2014197564A JP2015215865A JP 2015215865 A JP2015215865 A JP 2015215865A JP 2014197564 A JP2014197564 A JP 2014197564A JP 2014197564 A JP2014197564 A JP 2014197564A JP 2015215865 A JP2015215865 A JP 2015215865A
Authority
JP
Japan
Prior art keywords
variable
common memory
data
task
address
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
JP2014197564A
Other languages
English (en)
Other versions
JP6292096B2 (ja
Inventor
吉原 大助
Daisuke Yoshihara
大助 吉原
純郎 北村
Yoshio Kitamura
純郎 北村
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 JP2014197564A priority Critical patent/JP6292096B2/ja
Publication of JP2015215865A publication Critical patent/JP2015215865A/ja
Application granted granted Critical
Publication of JP6292096B2 publication Critical patent/JP6292096B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】各プログラマブルコントローラにおける共有変数データのコモンメモリへの転送を容易に実現させる。
【解決手段】コンパイラ部12は、コンパイル処理の際に、ソースコード14の各変数に内部メモリ25の任意のアドレスを割当てると共に、これら各変数のなかで共有変数に関しては更にコモンメモリ21の任意のアドレスを割り当てて、これらアドレス割当情報と各変数が共有変数であるか否かを示す情報を含む変数情報管理表17を生成する。PLC20の転送処理部24この変数情報管理表を用いて、上記各変数のなかで共有変数のデータは、内部メモリ25からコモンメモリ21へ転送する。
【選択図】図1

Description

本発明は、複数のプログラマブルコントローラ間でのデータ連携をコモンメモリ経由で実施するシステムに関する。
複数のプログラマブルコントローラ(PLC)間でデータを連携する方法として、コモンメモリ経由で他のPLCのデータを参照する方法がある。例えば、特許文献1において従来の技術として、この様なコモンメモリ方式が説明されている。そして、特許文献1の場合、連携するデータ量が多くなるとデータ転送処理の負荷が増加する。
この様な問題に対して、負荷を抑制する方式として、例えば特許文献1の発明では、常にすべてのコモンメモリのデータを転送するのではなく、必要な分だけ指定してデータ転送を実施する。すなわち、コモンメモリ方式により他装置とデータの授受を行うデータ伝送装置において、コモンメモリ上で他装置がデータを書き込むエリアのなかで、プログラマブルコントローラ側で必要なデータのみを提供するデータ提供手段を提供している。当該必要なデータのみ提供することは、プログラマブルコントローラがデータ伝送装置に対して、例えば「コモンメモリ25Aのアドレスm番地からnワード分を転送」等と通知することで実現される。
特開2002−297210号公報
上記特許文献1の発明では、上記必要なデータのコモンメモリ25A上での格納領域を、例えばユーザ等が認識していて予め設定する必要がある。
また、上記特許文献1の発明では、コモンメモリに係わるデータ転送の領域の指定の仕組みの提供だけであり、内部のデータの配置(後述する内部メモリへの変数のアドレス割り付け等)については、何等考慮されていない。また、別の観点から言えば、特許文献1の発明は、受信側としての動作に係わるものであり、送信側としての動作に係わるものではない。これらについて、以下、更に詳しく説明する。
まず、上記コモンメモリ方式により他装置と授受するデータは、複数のプログラマブルコントローラ間でのデータ連携を実施する為のデータであり、共有データ(共有変数に係わるデータ)等と呼ばれる。複数のプログラマブルコントローラが、それぞれ、他コントローラのコモンメモリの格納データ(共有データ)を利用する。
また、プログラマブルコントローラのアプリケーションで扱う各種変数データの全てが、共有データとなるわけではない。例えば各種変数が大別してローカル変数とグローバル変数に分類される例では、通常、グローバル変数が共有変数として扱われ、ローカル変数は共有変数とはならない。
プログラマブルコントローラには、上記アプリケーション実行に伴って上記各種変数データが格納・更新される内部メモリが備えられており、通常、この内部メモリには上記各ローカル変数のデータと、上記各グローバル変数のデータとが、混在して格納される。これより、内部メモリから各グローバル変数のデータだけをコモンメモリに転送する必要がある。これは、上記特許文献1の構成の場合、グローバル変数に属する各変数のデータだけを、伝送装置用メモリエリア4内の送信データエリアに、転送して格納させる必要があることになる。
従来では、上記動作を実現させる為に、予めユーザ等が上記内部メモリ上での各グローバル変数の格納アドレスを認識したうえで、手作業で、必要な設定やプログラマミング等を行う必要があり、非常に手間が掛かっていた。
近年ではPLCで扱うデータ量が飛躍的に増加しているため、共有データのアドレス割り付けを考慮しながらプログラミングすることは、ユーザのエンジニアリング作業量の増加、複雑化する課題がある。
本発明の課題は、各々がコモンメモリを有する複数のプログラマブルコントローラがネットワークに接続されたシステムに関して、共有変数データのコモンメモリへの転送を容易に実現させるプログラマブルコントローラシステム等を、提供することである。
本発明のプログラマブルコントローラシステムは、各々が内部メモリとコモンメモリを有する複数のプログラマブルコントローラがネットワークに接続されており、該複数のプログラマブルコントローラが前記コモンメモリの格納データを共有するシステムであって、下記の各構成を有する。
まず、任意の前記プログラマブルコントローラに対応して、そのプログラムのソースコードを任意に作成させる支援装置を更に有する。
上記支援装置は、前記ソースコードをコンパイルするコンパイル手段を有する。
そして、該コンパイル手段は、下記の各構成を有する。
・前記コンパイルの際に、前記ソースコードの各変数に前記内部メモリの任意のアドレスを割当てると共に、該内部メモリの割当アドレスとその変数が共有変数であるか否かを示す情報を含む変数情報を生成する変数情報作成手段;
・前記変数情報の各共有変数毎に、前記コモンメモリの任意のアドレスを割り当てて、該コモンメモリの割当アドレスを前記変数情報に前記内部メモリの割当アドレスに対応付けて追加記録するコモンメモリ割当手段。
また、前記プログラマブルコントローラは、前記変数情報に基づいて、前記内部メモリに格納される前記各変数のデータのうち、前記共有変数のデータを前記コモンメモリの割当アドレスへ転送・格納する転送処理手段を有する。
本発明のプログラマブルコントローラシステム等によれば、各々がコモンメモリを有する複数のプログラマブルコントローラがネットワークに接続されたシステムに関して、各プログラマブルコントローラにおける共有変数データのコモンメモリへの転送を容易に実現させることができる。特に、共有変数データのコモンメモリへの転送処理の為のユーザの作業負担を軽減できる。この転送処理は、特に、共有変数データだけでなく他の変数データも混在して格納される内部メモリから、共有変数データをコモンメモリに転送させる処理である。
本例のプログラマブルコントローラ・システムの構成・機能図である。 (a)、(b)は、PLCプログラムに係わる各変数の定義情報の一例である。 図2(b)の例に応じた、内部メモリへの変数割当て結果例である。 図2(b)の例に応じた変数情報管理表の具体例である。 コンパイラ部によるコモンメモリにおけるアドレス割当て処理の処理フローチャート図である。 図4の例に対して図5の処理を実行した後の変数情報管理表の状態を示す図である。 コモンメモリに対する共有変数のアドレス割当ての具体例である。 (a)、(b)は、タスクに関する設定情報の一例を示す図である。 実施例2のプログラマブルコントローラ・システムの構成・機能図である。 変数情報管理表(未完成)の具体例を示す図である。 実施例2のコンパイラ部によるコモンメモリのアドレス割当て処理の処理フローチャート図である。 (a)〜(c)は、実施例2におけるコモンメモリのデータ格納例である。 図12との比較の為、実施例1のコモンメモリのデータ格納例を示す図である。 変数情報管理表(完成)の具体例を示す図である。 共有変数コモンメモリ割付情報の具体例を示す図である。 送信側の転送処理実行タイミングを示す図である。
以下、図面を参照して、本発明の実施の形態について説明する。
図1は、本例のプログラマブルコントローラ・システムの構成・機能図である。
本システムは、コンピュータ上で動作する開発環境を有する。開発環境とは、例えば図示の開発支援装置(ローダ)10である。開発支援装置10は、ユーザに任意のプログラムのソースコードを作成させる為の既存のインタフェース機能部11を有する。更に、ユーザが作成したソースコードをターゲット上で動作する機械語オブジェクトに変換するコンパイラ機能を有する。また、生成された機械語オブジェクトをターゲットに送信する通信機能を有する。尚、ターゲットとは、例えば、図示のPLC20である。
尚、本説明では、プログラマブルコントローラを略してPLCと記す場合もあるものとする。
本例のPLCシステムは、各々がコモンメモリ21を有する複数のPLC(プログラマブルコントローラ)20と、このPLC20用のプログラムをユーザが任意に作成できるように支援する機能等を有する開発支援装置(ローダ)10を有する。本例のPLCシステムは、複数のプログラマブルコントローラ20間でのデータ連携をコモンメモリ21経由で実施する。換言すれば、本例のPLCシステムは、上記コモンメモリ方式のシステムである。つまり、複数のプログラマブルコントローラがコモンメモリ21の格納データを共有するシステムである。各コントローラは、他のコントローラのコモンメモリ21の格納データを参照する。上記の通り、例えば共有変数のデータが、コモンメモリ21に格納される。
上記PLC20用のプログラムは、PLCプログラム等と呼ぶが、上記のようにユーザが任意に作成できること等から、ユーザプログラム等と呼ばれる場合もある。また、当該ユーザプログラムの一例が、PLC20の制御プログラム等である。尚、制御プログラムは、PLCが不図示の各種制御対象機器を制御する為のプログラム等である。
開発支援装置(ローダ)10は、インタフェース機能部11、コンパイラ部12、通信機能部13等の各種機能部等を有し、また不図示の記憶部等を有する。また、ユーザに上記任意のユーザプログラム等を作成させるための画面等を表示するディスプレイや、キーボード/マウス等の入力装置等も有する。また、特に図示しないが、開発支援装置(ローダ)10は、CPU/MPU等の演算処理プロセッサも有している。
また、上記不図示の記憶部は、例えばハードディスク、メモリ等である。この記憶部には、予め不図示のアプリケーションプログラムが記憶されている。上記不図示のCPU/MPU等が、このアプリケーションプログラムを読み出し・実行することにより、上記各種機能部11,12、13の機能等が実現される。
また、不図示の記憶部には、図示の各種データ/プログラム等が記憶される。
すなわち、不図示の記憶部には、ユーザによって作成された任意のユーザプログラムのソースコード14、このソースコード14をコンパイラ部12によってコンパイルした結果である機械語オブジェクト16等が格納される。更に、不図示の記憶部には、図示のソースコード識別番号対応表15、変数情報管理表17、タスク情報18等が、記憶される。但し、ソースコード識別番号対応表15は、本手法には関係ないので、説明しない。
インタフェース機能部11は、上記の通り、ユーザに任意のユーザプログラム(そのソースコード14)を作成させるように支援する機能部であり、既存の構成であるので、ここでは特に説明しない。尚、ソースコード14は、新規作成されたもの、あるいは既存のソースコードの更新/修正版等である。また、通信機能部13も、不図示の通信線を介してPLC20や他の開発支援装置10との通信を行う既存の機能部であるので、ここでは特に説明しない。
コンパイラ部12は、基本的には、ユーザによって任意に作成されたユーザプログラム(そのソースコード14)を、コンパイルして機械語プログラム(機械語オブジェクト16)に変換する機能部である。その際に、ユーザプログラムの各変数に、PLC20の内部メモリ25の任意のアドレスを割り当てる。この様なコンパイル機能自体は既存の機能である。但し、本例のコンパイラ部12は、更に、図示の変数情報管理表17等を生成する処理等も行う。詳しくは後述する。
尚、上記機械語オブジェクト16は、上記通信機能部13によってPLC20にダウンロードされる。PLC20は、このダウンロードされた機械語プログラムを、図示の機械語オブジェクト27として記憶する。尚、通信機能部13によってPLC20にダウンロードされるプログラム/データは、後述するように、機械語オブジェクト16に限らない。
PLC20は、内部メモリ25とコモンメモリ21を備えるプログラマブルコントローラである。内部メモリ25は、ユーザプログラム(機械語オブジェクト27)の実行に伴ってその各変数のデータが格納・更新されるメモリであり、プログラマブルコントローラの一般的な構成である。そして、本例のPLC20は、更にコモンメモリ21も備える。コモンメモリ21には、複数のPLC20で共有するデータが格納されるものであり、共有変数のデータが格納されるものと言える。
これより、内部メモリ25に格納される各変数のデータのなかで共有変数のデータをコモンメモリ21に転送して格納する必要がある。本手法では、この様な処理の為のユーザの作業負担を、軽減できることになる。詳しくは後述する。尚、これは、送信側としての処理であり、受信側としての処理については、必ずしもコモンメモリ21から内部メモリ25へデータ転送する必要はなく、コモンメモリ21の格納データを直接参照するようにしてもよい。尚、受信側としての処理では、コモンメモリ21における他コントローラ20のデータを、参照することになる。
PLC20は、プログラム実行管理機能部23、通信機能部22、転送処理部24等の各種機能部を有する。また、特に図示しないが、PLC20は、図示の各メモリ25,21以外の不図示の記憶部や、不図示のCPU/MPU等の演算処理プロセッサも有している。尚、逐一述べないが、開発支援装置10との通信処理は、図示の通信機能部22と、開発支援装置10の通信機能部13とによって行われる。
不図示の記憶部には、予め不図示のアプリケーションプログラムが記憶されている。上記CPU/MPU等が、このアプリケーションプログラムを読み出し・実行することにより、上記各種機能部22,23,24の機能処理が実現される。
通信機能部22は、上記開発支援装置10との通信を行って、例えば上記ダウンロードされる機械語オブジェクト16の受信を行い、これを図示の機械語オブジェクト27として上記不図示の記憶部に記憶する。
PLC20では、プログラム実行管理機能部23が、機械語オブジェクト27を実行することで、例えば制御対象の各種機器を制御する。ここで、この機械語オブジェクト27の実行に伴って、内部メモリ25の各変数のデータが更新される。つまり、上記コンパイルの際に各変数には内部メモリ25における任意の記憶領域が割り当てられており、機械語オブジェクト27の実行に伴って、これら各割当領域の格納データが更新される場合があることになる。そして、共有変数に係わる格納データについては、コモンメモリ21にデータ転送して、コモンメモリ21の格納データも更新させる必要がある。これより、他のコントローラ20も、更新後のデータを参照/利用できることになる。
ここで、本例のPLC20は、転送処理部24を備える。転送処理部24は、図示の変数情報管理表26等を用いて、内部メモリ25の格納データのなかで、コモンメモリ21に転送・格納させるべきデータを判別して、これをコモンメモリ21に転送する。これについては後述するが、変数情報管理表26は、上記開発支援装置10で生成された変数情報管理表17が、PLC20にダウンロードされて記憶されたものである。尚、機械語オブジェクト27や変数情報管理表26は、不図示の記憶部に記憶される。
ここで、以下、上記コンパイラ部12による上記変数情報管理表17の生成処理について説明する。これについて、まず、この生成処理を実現する為に事前に行うことについて説明する。
まず、一例としては、ユーザが、ソースコード14の変数宣言部分において、例えば図2(a)に示すような記述を行っておく。すなわち、各変数毎に、図示のように変数名、型、アドレス等を定義すると共に、更に各種属性情報を定義する。尚、アドレスは、PLC20の内部メモリ25において当該変数のデータ格納領域として割当てるアドレスである。但し、アドレスは、ユーザが指定する方法に限らず、コンパイラ部12が自動的に割り当てる方式であってもよい。
そして、上記各種属性情報として、図示の例では一例として「保持」や「共有」を示してある。このうち、「保持」は既存の属性情報であり本手法には特に関係しないので、説明しないものとする。「共有」は、本手法の為に新たに追加される属性情報であり、その変数が共有変数(共有データに係わる変数)であるか否かを示すフラグ等である。ここでは、フラグONの場合には共有変数であり、フラグOFFの場合には共有変数ではないことを意味するものとするが、この例に限らない。
あるいは、上記図2(a)の例に限らず、ソースコード14とは別に、例えば図2(b)に示すような共有変数宣言情報30が、事前にユーザによって任意に作成されていてもよい。共有変数宣言情報30は、各ユーザプログラムで使用する各変数に関して所定の設定が行われたものであり、図示の例では、プログラム名31、変数名32、データ型33、共有変数34から成る。
プログラム名31はユーザプログラムの識別情報(名称等)であり、このユーザプログラムで使用する変数の名称等が変数名32に設定される。また、変数名32の変数のデータ型等がデータ型33に設定されると共に、この変数が共有変数であるか否かが共有変数34に設定される。尚、共有変数とは、複数のPLC20で共有する変数であり、上記の通り一例は例えばグローバル変数である。そして、共有変数データは、コモンメモリ21に格納すべき変数データであるとも言える。
尚、図では、図示の「共有する」が、共有変数であることを意味している。
一例としては、例えばディスプレイ上に図2(b)に示す共有変数宣言情報30の入力画面が表示され(但し、図示の各種データは未だ設定されていない)、この入力画面上でユーザが所望のデータを入力することで、共有変数宣言情報30が作成される。
ここで、上記コンパイラ部12は、上記ソースコード14のコンパイル処理の際に、上記変数宣言された各変数に対して、内部メモリ25内の任意の記憶領域を割り当てる。この処理自体は既存の処理であり、例えば図2(b)の例に応じた内部メモリ25における変数割当て結果例を図3に示すが、これについては特に説明しない。
コンパイラ部12は、更に、上記変数宣言/共有変数宣言情報30や、メモリ割当て結果等を用いて、変数情報管理表17を生成する。
図4に、上記図2(b)の共有変数宣言情報30の例に応じた変数情報管理表17の例を示す。但し、この状態では変数情報管理表17は未だ完成していない。
図示の例では、変数情報管理表17は、管理ID41、プログラム名42、変数名43、データ型44、「PLC内メモリのアドレス」45、共有変数46、「コモンメモリへのデータ格納先アドレス」47等の各データ項目を有する。尚、これらのうち、共有変数46及び「コモンメモリへのデータ格納先アドレス」47以外のデータ項目は、既存のデータ項目と見做しても良い。つまり、従来でも変数情報管理表17の一部は作成していたと見做しても構わない。
上記変数情報管理表17の作成方法は、例えば上記共有変数宣言情報30に基づいて、各変数の変数名32、データ型33、共有変数34を、変数名43、データ型44、共有変数46に格納すると共に、その変数に割り当てた内部メモリ25の記憶領域のアドレスを「PLC内メモリのアドレス」45に格納する。つまり、「PLC内メモリのアドレス」45は、変数名43の変数の内部メモリ25における割当アドレスである。また、変数名43の変数を使用するプログラムのプログラム名31が、プログラム名42に格納される。
尚、管理ID41は、上記変数情報管理表17の各レコードに任意に割り当てられる識別番号等であり、例えばシリアル番号等である。
以上のように、「コモンメモリへのデータ格納先アドレス」47以外のデータ項目については、上記共有変数宣言情報30やアドレス割当結果等に基づいて、上記各データが格納される。尚、逐一述べないが、この様なコンパイル処理に係わる各種処理は、基本的に、コンパイラ部12が実行するものである。そして、コンパイラ部12は、更に、「コモンメモリへのデータ格納先アドレス」47についてもデータ登録する。つまり、他のPLC20とデータを共有する変数(共有変数)については、コモンメモリ21についても、データ格納領域を割り当てる。この処理の一例を、図5に示す。
図5は、コンパイラ部12によるコモンメモリにおけるアドレス割当て処理の処理フローチャート図である。
また、図6には、上記図4の例に対して図5の処理を実行した後の変数情報管理表17の状態を示す。
図5の処理例では、上記変数情報管理表17を用いて、その各レコードを順次処理対象としてステップS13〜S17の処理を繰り返し実行する。最初の処理対象は、例えば、変数情報管理表17の先頭レコード(管理ID41=‘1’のレコード)に設定する(ステップS11)。更に、“割付先コモンメモリ”の初期値を設定する。これは、例えば、コモンメモリ21の該当記憶領域の先頭アドレス(本例では‘0’とする)が、予め登録されており、これを“割付先コモンメモリ”の初期値に設定する(ステップS12)。
尚、上記コモンメモリ21の該当記憶領域とは、例えば特許文献1の図3に示す「自装置データ」の領域である。
そして、上記処理対象レコードに基づいて、まず、当該処理対象の変数が、共有変数であるか否かを、共有変数46から判定する(ステップS13)。そして、共有変数である場合には(ステップS13,YES)、処理対象レコードの「コモンメモリへのデータ格納先アドレス」47に、現在の“割付先コモンメモリ”の値を格納する(ステップS14)。本例では上記先頭レコードに関してはステップS13の判定がYESとなり、更に、上記の通り“割付先コモンメモリ”の初期値は‘0’であるので、図6に示すように先頭レコードの「コモンメモリへのデータ格納先アドレス」47には‘0’が格納されることになる。
そして、“割付先コモンメモリ”の値を更新する。これは、まず処理対象レコードのデータ型43から、当該データ型に応じたサイズを求めて、このサイズを現在の“割付先コモンメモリ”に加算する(ステップS15)。つまり、
“割付先コモンメモリ”=“割付先コモンメモリ”+サイズ
によって、“割付先コモンメモリ”の値を更新する。
尚、特に図示しないが、予め、各データ型毎に、それに対応するサイズが登録されている。
そして、次の処理対象レコードを決定して(ステップS16)、ステップS13に戻る。但し、次の処理対象レコードが無い場合には(ステップS17,NO)、本処理を終了する。尚、上記ステップS13の判定がNOの場合には、そのままステップS16の処理へ移行する。
上記図5の処理によって変数情報管理表17は例えば図6に示す状態となり、以って変数情報管理表17が完成したことになる。
尚、図6に示す例の場合、コモンメモリ21における各共有変数のアドレス割当て結果は、例えば図7に示すようになる。図6の例の場合、図7に示すように、変数1、変数3、変数5、変数7について、それぞれ、コモンメモリ21内の所定のデータ格納領域が、割付けられることになる。そして、これら各変数に係わる内部メモリ25の格納データが、コモンメモリ21内の所定のデータ格納領域に、転送・格納されることになる。その一方で、変数2、変数4、変数6、変数8に関しては、コモンメモリ21への割当ては行われない。変数2、変数4、変数6、変数8は、共有変数ではないので(例えばローカル変数であるので)、これで正しいことになる。
そして、開発支援装置10は、例えば、完成した変数情報管理表17を、PLC20にダウンロードして、上記変数情報管理表26として記憶させる。PLC20側では、転送処理部24が、例えば変数情報管理表26に基づいて、内部メモリ25の各変数データのうち、共有変数に係わるデータのみを、コモンメモリ21内の所定のデータ格納領域に、転送・格納させる。図6の例の場合、例えば変数7に関しては、内部メモリ25のアドレス‘7’の格納データを、コモンメモリ21のアドレス‘3’へ転送・格納することになる。
尚、上記の例に限らない。例えば、変数情報管理表17をPLC20にダウンロードする代わりに、変数情報管理表17に基づいて転送用プログラムを生成して、この転送用プログラムをPLC20にダウンロードするようにしてもよい。この例の場合、PLC20側では、転送処理部24は、この転送用プログラムを実行することで、上記コモンメモリ21への変数データ転送処理を実現する。
転送用プログラムは、例えば予め登録された所定の雛形に、上記変数情報管理表17の所定データを当て嵌めることで、生成される。所定の雛形とは、例えば下記のものである。
%MW16.* := 変数名
変数情報管理表17の各レコードのなかで共有変数に係わる各レコード毎に、その変数名43を上記雛形の変数名に当て嵌め、その「コモンメモリへのデータ格納先アドレス」47を上記雛形の*に当て嵌めることで、転送用プログラムが生成される。これより、この例の場合、図6に示す例に応じて、例えば下記のような転送用プログラムが生成されることになる。
%MW16.0 := 変数1
%MW16.1 := 変数3
%MW16.2 := 変数5
%MD16.3 := 変数7
尚、この例の場合、PLC20側では、各変数の内部メモリ25における割当アドレスは、変数名が分かれば判別できるものとする。
既存の機能により、コモンメモリ21の各格納データは、制御LANの機能によって、制御LAN1に接続した他のPLC20でも参照することができる。これに関して、複数のPLC20間でデータ連携する仕組みについては、一般的なことであり、例えば上記特許文献1等に開示されているので、ここでは特に説明しない。但し、簡単に説明するならば、例えば上記コモンメモリ21のアドレス‘3’の格納データは、制御LAN1を介して他のPLC20へ転送されて、当該他のPLC20のコモンメモリ21に格納される。格納位置は、通常、同じアドレス、すなわちアドレス‘3’となるようにしている。
ここで、他のPLC20側では、例えば、上記コモンメモリ21のアドレス‘3’の格納データが、変数7に係わるデータであることを認識する必要がある。その為に、開発支援装置10は、上記生成した変数情報管理表17あるいは転送用プログラムを、他の開発支援装置10にも送信するようにしてもよい。尚、開発支援装置10は、例えば各PLC20毎に対応させて設けられていてもよく、図1では図示のPLC1に対応する開発支援装置10のみ示すが、他にも例えば図示のPLC2に対応する不図示の開発支援装置10も設けられていてもよい。そして、例えば、各開発支援装置10同士は、不図示のネットワークを介して、通信可能な構成となっている。
上記生成した変数情報管理表17あるいは転送用プログラムを受信した他の開発支援装置10側では、例えば、これらの受信した情報/プログラムを参照することで、各共有変数のコモンメモリ21上の割当アドレスを認識できるので、これに基づいて自己のユーザプログラムを作成できる。例えば変数7のデータを参照・利用するユーザプログラムを作成する場合、コモンメモリ21におけるアクセス先アドレスを上記アドレス‘3’に設定できることになる。
但し、この例に限らない。例えば図1に示す開発支援装置10は、図示のPLC1だけでなくPLC2のプログラムも作成させるものであってもよい。つまり、任意の1台の開発支援装置10が、複数のPLC20に対応して設けられていても良い。
また、上記転送処理部24によるデータ転送処理は、例えば任意のタスク実行完了毎に行うようにする。そして、その際、実行完了したタスクに係わるプログラムに係わる共有変数データのみを、転送対象とする。これによって、データ転送量を削減できる。この様な処理について、以下、説明する。
まず、PLC20におけるタスク管理について、既存の一般的な方式について以下に説明する。
図8(a)、(b)に、タスクに関する設定情報の一例を示す。
例えば図8(a)に示すように、一般的に、タスクには、優先順位、タスクの種類(定周期、イベント、デフォルト)の設定がある。優先順位は、タスク間でどのタスクを優先して実行するかを指定する。タスクの種類が、定周期の場合、設定した周期で、タスクに登録されたプログラムを実行する。イベントの場合は、イベントとして登録された変数の立ち上がりで、タスクに登録されたプログラムを実行する。デフォルトは、一番低い優先度であり、他のタスクで実行するプログラムが存在しない場合に、登録されたプログラムを実行する。
図8(a)の例では、タスクが4つ設定されてある。タスク名の定周期1は、優先度1、定周期は200msでプログラムを実行する。イベント1は、優先度3、イベントで、FLGの値が、FLASEからTRUEに変更になった場合に、プログラムを実行する。
上記タスクの設定情報は、例えば開発支援装置10側でユーザによって任意に作成されて、PLC20に転送されて保持される。そして、PLC20側では、この設定情報に従って、各タスクに係わるプログラム等を実行する。
ここで、各タスクに対して、そのタスクに係わる任意のプログラムが、登録されている。その一例を図8(b)に示す。これは、例えば、開発支援装置10側でユーザによる任意の登録作業によって作成されるものである。
ユーザは、例えば、任意のユーザプログラムを作成する毎に、このユーザプログラムを所望のタスクに関連付けて登録する。図8(b)の例では、タスク「定周期1」に関してはプログラム1とプログラム2とが登録されている。タスク「定周期2」に関しては、プログラム3が登録されている。タスク「デフォルト」に関しては、プログラム4が登録されている。タスク「イベント1」に関しては、プログラムは登録されていない。
例えば図1に示すタスク情報18の一例が、上記図8(a)、(b)に示す情報である。そして、図1には示していないが、タスク情報18は、PLC20にダウンロードして保持させるようにしてもよい。
そして、転送処理部24は、上記変数情報管理表26等だけでなく、更に、上記タスク情報18も用いて、コモンメモリ21への変数データ転送処理を実行するようにしてもよい。これは、任意のタスクを実行完了する毎に、そのタスクに関連するプログラムを、上記タスク情報18を参照して判別する。そして、更に、変数情報管理表26を参照することで、このタスクに関連するプログラムに係わる共有変数を判別し、この共有変数の内部メモリ25における割当アドレスを判別する。これによって、上記実行完了したタスクに係わる共有変数のデータのみを、内部メモリ25からコモンメモリ21へ転送する。
例えば、タスク「定周期2」を実行完了した場合には、図8(b)の例の場合、このタスクに関連するのはプログラム3である。よって、変数情報管理表26より、プログラム3に係わる共有変数は変数7であると判別できるので、変数7のデータのみを内部メモリ25からコモンメモリ21へ転送する。
内部メモリ25における各変数のデータは、基本的に、その変数に係わるプログラムが実行されていないならば、変更されていないはずである。従って、上記例の場合、変数7以外の他の変数のデータは、変更されていないはずである。よって、これら他の変数のデータは、コモンメモリ21に転送する必要はないことになる。
以上のことから、上記の例の場合、変数7のデータのみをコモンメモリ21へ転送するだけで、コモンメモリ21の格納データを最新の状態とすることができる。また、この例の場合、例えば、タスク「イベント1」を完了時には、コモンメモリ21へのデータ転送は、必要ないことになる。
この様に、必要最低限のデータ転送処理を行えるようにすることができ、データ転送に係わる処理負担を軽減できるという効果も得られる。
上述したように、本例のPLCシステムによれば、その開発支援装置のユーザにとっては、「自己が任意に作成するPLCプログラムの各変数が、共有変数であるか否かを指定する作業」が、増えるだけである。これによって、自動的に、全ての共有変数について、コモンメモリのデータ格納領域が割り当てられると共に、内部メモリにおける割当アドレスと対応付けられる。尚、必ずしも全ての共有変数を指定する必要はなく、共有変数のなかでユーザが必要と考える共有変数だけを指定することも可能である。
これより、コントローラ側では、各共有変数のデータを、内部メモリからコモンメモリへ転送することができ、以ってネットワーク(制御LANなど)に接続している他のコントローラとデータの共有が簡単に実現できる。この実現の為のユーザのエンジニアリングの作業工数の削減が実現できる。また、ユーザが設定した必要な共有変数のデータだけをコモンメモリに転送するため、転送処理負荷の軽減にもなる。
更に、コントローラ側では、任意のタスク実行完了毎に、そのタスクに関係するPLCプログラムに係わる共有変数のみを転送対象として、そのデータを内部メモリからコモンメモリへ転送することができる。つまり、そのデータの内容が変わった可能性がある共有変数のみを、転送対象とすることができ、転送処理負荷を更に軽減することができる。
この例に限らず、例えば任意のPLCプログラムの実行完了時に、そのPLCプログラムに係わる共有変数のみを転送対象として、そのデータを内部メモリからコモンメモリへ転送するようにしてもよい。尚、この処理は、変数情報管理表26を参照すれば実現できる。
上記のようにして、本手法では、その都度、必要な分だけコモンメモリにデータを転送することができる。
あるいは、例えば、内部メモリの所定の記憶領域範囲を指定して当該範囲内の全データをコモンメモリへ転送する方式の場合、この範囲内に全ての共有変数を手作業で割り当てる必要があり、ユーザの作業負担が大きかった。本手法では、この様な問題を解消できる。
尚、特に図示しないが、上記コンパイラ部12や後述するコンパイラ部12’は、下記の不図示の各処理機能部(変数情報作成部、コモンメモリ割当部)を、有するものと見做しても良い。
・コンパイル処理の際に、ソースコード14の各変数に内部メモリ25の任意のアドレスを割当てると共に、該内部メモリ25の割当アドレスとその変数が共有変数であるか否かを示す情報を含む変数情報(例えば変数情報管理表17の一部(図4等)等)を生成する変数情報作成部;
・上記変数情報の各共有変数毎に、コモンメモリ21の任意のアドレスを割り当てて、該コモンメモリ21の割当アドレスを上記変数情報に上記内部メモリ25の割当アドレスに対応付けて追加記録するコモンメモリ割当部;これによって、例えば上記のように変数情報管理表17が完成する(図6の状態となる)。
また、例えば、上記変数情報には更に各変数のデータ型が含まれており、上記コモンメモリ割当部は、予め設定される所定アドレスと、上記各共有変数のデータ型とに基づいて、各共有変数のコモンメモリ21上の割当アドレスを決定する。
あるいは、開発支援装置10は、不図示のタスク情報生成機能部を更に有するものであってもよい。このタスク情報生成機能部は、例えば上記タスク情報18を生成するものである。上記のように、タスク情報18には、各タスクに対する任意のユーザプログラムの割り当て情報などが含まれる。また、上記のように、タスク情報18は、例えばユーザが任意に設定・入力するものであるが、この例に限らない。
また、上記PLC20や後述するPLC20’は、上記変数情報に基づいて、内部メモリ25に格納される各変数のデータのうち、上記共有変数のデータを上記コモンメモリ21の割当アドレスへ転送・格納する転送処理部(不図示)を有する。尚、これより、開発支援装置10は、上記変数情報をPLC20等にダウンロードするダウンロード部(不図示)も有する。
ここで、以上説明した実施例を実施例1とする。これより、例えば、図1は、実施例1のプログラマブルコントローラ・システムの構成・機能図であると言える。
後述する実施例2の場合、更に下記の特徴を有するものと考えてもよい。
すなわち、後述する実施例2の場合、上記変数情報には、更に、その変数に係わるタスクの情報が含まれている。更に、上記コモンメモリ割当部は、各タスク毎に、そのタスクに係わる各共有変数に対してコモンメモリ21の任意のアドレスの割り当てを行うものである。このアドレス割当て結果は、例えば後述する図12(a)〜(c)に示す例のようになる。つまり、コモンメモリ21の同じ記憶領域を複数のタスクで共有させる形で、各共有変数のアドレス割当てが行われる。尚、実施例1の場合、後述する図13に示す例のようになる。
また、上記のように複数のタスクで記憶領域を共有させることにより、上記コモンメモリ割当部は、同じタスクに係わる共有変数に関しては相互に異なるアドレスを割当てるが、任意の複数の共有変数が相互に異なるタスクに係わる共有変数である場合には該複数の共有変数に対して同一のアドレスを割当てる場合もある。
また、実施例2の場合、例えば、上記転送処理部(不図示)は、任意のタスクの処理を実行すると、上記変数情報に基づいて、内部メモリ25に格納される各変数のデータのうち、該実行したタスクに係わる共有変数のデータを、コモンメモリ21の割当アドレスへ転送・格納する。
また、上記転送処理部は、例えば更に“実行したタスクを示す情報”も一緒にコモンメモリ21へ転送・格納する。
コモンメモリ21に格納データは、上記既存の機能によって、他のプログラマブルコントローラ(PLC20等)のコモンメモリ21に転送・格納される。
他のプログラマブルコントローラは、自己のコモンメモリ21に現在格納されているデータが、どのタスクに係わる共有変数のデータであるのかを、自己のコモンメモリ21に格納される上記“実行したタスクを示す情報”によって判別する。
上記“実行したタスクを示す情報”は、例えば後述する“コモンメモリマッピング識別子”や、タスク名等である。
以下、実施例2について説明する。
図9は、実施例2のプログラマブルコントローラ・システムの構成・機能図である。
尚、図9において、図1に示す構成と同一の構成については、同一符号を付してあり、その説明は省略する。
また、図9において、図1に示す構成とほぼ同じ構成については、同一符号に「’(ダッシュ)」を付して示すものとする。例えば、図9に示す変数情報管理表17’は、図1に示す変数情報管理表17とほぼ同じであり、後述するタスク48が追加されているだけであるので、「17」に「’(ダッシュ)」を付して「17’」と表記している。この様な構成に関しては、図1に示すものと同じ部分に関しては、その説明は省略する。例えば上記変数情報管理表17’に関しては上記タスク48以外に関しては説明は省略する。
実施例2のプログラマブルコントローラ・システムは、図示の開発支援装置(ローダ)10’と、PLC20’を有する。尚、上述したことから、開発支援装置(ローダ)10’は、図1の開発支援装置(ローダ)10とほぼ同じであるが、一部、異なる点があるものである。同様に、PLC20’は、図1のPLC20とほぼ同じであるが、一部、異なる点があるものである。以下、主に、実施例1とは異なる点について説明する。
まず、開発支援装置(ローダ)10’は、図示のコンパイラ部12’等を有する。
コンパイラ部12’は、基本的には上記図1のコンパイラ部12とほぼ同じであるが、以下の点で異なる。
すなわち、図1のコンパイラ部12が、コンパイル処理に伴って上記変数情報管理表17を生成するのに対して、コンパイラ部12’は図示の変数情報管理表17’や共有変数コモンメモリ割付情報50等を生成する。変数情報管理表17’については既に簡単に説明してあるが、図10に具体例を示し後に説明する。共有変数コモンメモリ割付情報50についても、図15に具体例を示しており後に説明する。
また、コンパイラ部12’は、各変数のコモンメモリへのアドレス割当て処理の内容が、図1のコンパイラ部12とは異なる。すなわち、図1のコンパイラ部12は上記図5の処理を実行するが、コンパイラ部12’は後述する図11の処理を実行する。
生成された上記変数情報管理表17’や共有変数コモンメモリ割付情報50は、各PLC20’に転送され、図示の変数情報管理表26’や共有変数コモンメモリ割付情報60として保持される。
ここで、図10に、上記変数情報管理表17’の具体例を示す。
既に述べたように、図示のタスク48が追加されている点以外は、上記変数情報管理表17と同じであるので、その説明は省略する。タスク48には、プログラム名42のプログラムが設定されるタスクのタスク名等が格納される。これは、例えば上述したタスク情報18(特に図8(b)に示す情報)を参照することで、プログラム名42に対応するタスク名等が分かる。
図10は、作成途中の変数情報管理表17’を示している。すなわち、“コモンメモリへのデータ格納先アドレス”47のデータが、未だ生成されていない状態を示している。尚、これ以外の各データは、図示のように生成されているが、これらの生成処理はコンパイラ部12と同じであるので、ここでは特に説明しない。
図10の状態において、コンパイラ部12’が図11の処理を実行することで、“コモンメモリへのデータ格納先アドレス”47の各データが生成・格納される。
以下、図11の処理例について説明する。
図11の処理では、上記変数情報管理表17’を用いて、その各レコード(各変数)を順次処理対象としてステップS23〜S29の処理を繰り返し実行する。最初の処理対象レコードは、例えば、変数情報管理表17’の先頭レコード(管理ID41=‘1’のレコード)とする(ステップS21)。
更に、各タスク毎の“割付先コモンメモリ”に対して初期値を設定する(ステップS22)。これは、上記ステップS12では初期値は‘0’に設定したが、本例では例えば初期値は‘2’に設定する。これは、実施例2の場合、例えば後述する図12に示すようにコモンメモリ21の先頭の記憶領域は、コモンメモリマッピング識別子の格納領域としているからである。更に、ここでは、この格納領域のサイズを‘2’としているからである。
また、実施例2では、実施例1とは異なり、“割付先コモンメモリ”は各タスク毎に対応して複数設けられている。本例では、“定周期1”、“定周期2”、“デフォルト”の3種類のタスクがあるものとし、これより、例えば、“定周期1”に対しては“割付先コモンメモリ(1)”が、“定周期2”に対しては“割付先コモンメモリ(2)”、“デフォルト”に対しては“割付先コモンメモリ(3)”が、設けられるものとする。そして、ここでは、これら3つ全てについて、例えば上記初期値=‘2’が設定されるものとする。
尚、上記“割付先コモンメモリ”は、図5や図11の処理実行中に任意の値を随時格納/更新する変数と見做してよい。
そして、上記処理対象レコードに基づいて、まず、当該処理対象の変数が、共有変数であるか否かを、共有変数46から判定する(ステップS23)。そして、共有変数ではない場合には(ステップS23,NO)、後述するステップS28の処理へ移行する。
一方、処理対象の変数が共有変数である場合には(ステップS23,YES)、まず、処理対象レコードのタスク48を取得し(ステップS24)、このタスク48のタスクに対応する“割付先コモンメモリ”の値を取得する(ステップS25)。例えば先頭レコード(変数11)の場合、タスク48は“定周期1”であるので、上記の例では、上記“割付先コモンメモリ(1)”の現在の値が、取得されることになる。そして、この場合、現在値は上記初期値であるので、‘2’が取得されることになる。
そして、ステップS25で取得した値を、上記処理対象レコードの“コモンメモリへのデータ格納先アドレス”47に格納する(ステップS26)。これより、上記先頭レコードに関しては、図14に示すように、“コモンメモリへのデータ格納先アドレス”47に‘2’が格納されることになる。
そして、上記該当する“割付先コモンメモリ”(ここでは“割付先コモンメモリ(1)”)の値を更新する(ステップS27)。これは、処理対象レコードのデータ型44に応じたサイズを判別して、このサイズを“割付先コモンメモリ(1)”の現在値に加算することで、“割付先コモンメモリ(1)”の値を更新する。尚、ここでは、INTやWORDに応じたサイズは‘1’であるものとする。よって、“割付先コモンメモリ(1)”の値は‘3’(=2+1)になる。
そして、次のレコードを新たな処理対象レコードとして(ステップS28)、ステップS23の処理に戻る。但し、次の処理対象レコードが無い場合には(ステップS29,NO)、本処理を終了する。
3番目のレコード(変数13)が処理対象のとき、“割付先コモンメモリ(1)”の値が‘3’となっているので、図14に示すように、その“コモンメモリへのデータ格納先アドレス”47には‘3’が格納されることになる。そして、ステップS27によって“割付先コモンメモリ(1)”の値は‘4’に更新されることになる。
これより、5番目のレコード(変数22)が処理対象のときには、“割付先コモンメモリ(1)”の値が‘4’となっているので、図14に示すように、その“コモンメモリへのデータ格納先アドレス”47には‘4’が格納されることになる。そして、ステップS27によって、“割付先コモンメモリ(1)”の値は‘5’に更新されることになる。
ここで、7番目のレコード(変数32)に関しては、タスク48が“定周期2”であるので、“割付先コモンメモリ(1)”ではなく、“割付先コモンメモリ(2)”の値を用いる。このとき、“割付先コモンメモリ(2)”の値は上記初期値(=2)であるので、図14に示すように、“コモンメモリへのデータ格納先アドレス”47には‘5’ではなく‘2’が格納されることになる。
また、9番目のレコード(変数41)に関しては、タスク48が“デフォルト”であるので、“割付先コモンメモリ(1)”ではなく、“割付先コモンメモリ(3)”の値を用いる。このとき、“割付先コモンメモリ(3)”の値は上記初期値(=2)であるので、図14に示すように、“コモンメモリへのデータ格納先アドレス”47には‘5’ではなく‘2’が格納されることになる。
例えばこの様にして、図14に示すような変数情報管理表17’が完成する。
コンパイラ部12’は、更に、上記完成した変数情報管理表17’に基づいて、上記共有変数コモンメモリ割付情報50を生成する。図15に、図14に示す変数情報管理表17’の具体例に応じて生成される、共有変数コモンメモリ割付情報50の具体例を示す。
共有変数コモンメモリ割付情報50は、例えば、タスク51、コモンメモリマッピング識別子52、変数名53、BCアドレス54、データ型55等の各データ項目より成る。
コンパイラ部12’は、例えば上記変数情報管理表17’において共有変数46が“共有する”となっている全てのレコードについて、そのタスク48、変数名43、“コモンメモリへのデータ格納先アドレス”47、データ型44を、それぞれ、上記タスク51、変数名53、BCアドレス54、データ型55に格納する。更に、タスク51に対応する識別IDを、コモンメモリマッピング識別子52に格納する。尚、この識別IDは、各タスクに対応して任意に割当ててもよいし、予め各タスクには固有の識別IDが割当てられているものであってもよい。
但し、共有変数コモンメモリ割付情報50は、必ずも生成する必要はなく、以って必ずしも各PLC20’に保持させる必要はない。各PLC20’は、変数情報管理表17’を保持するだけでも構わない。尚、この場合、変数情報管理表17’に上記コモンメモリマッピング識別子52のデータ項目を付加してもよいが、付加しなくてもよい。コモンメモリマッピング識別子は、必ずしも必要ないからである(タスクの種類が判別できればよいので、タスク48(タスク名)を用いても構わない。勿論、この場合には、コモンメモリ21にタスク名を格納することになる)。
そして、開発支援装置10’は、上記のように生成した上記変数情報管理表17’や共有変数コモンメモリ割付情報50を、各PLC20’にダウンロードする。各PLC20’は、これら変数情報管理表17’と共有変数コモンメモリ割付情報50を、図9に示す変数情報管理表26’と共有変数コモンメモリ割付情報60として記憶する。
但し、共有変数コモンメモリ割付情報50は、受信側のPLC20’用に生成される情報であるので、送信側のPLC20’にはダウンロードする必要がない。また、受信側のPLC20’は、共有変数コモンメモリ割付情報50があれば問題なく受信処理が行えるので、変数情報管理表17’をダウンロードする必要はない。但し、勿論、全てのPLC20’に変数情報管理表17’と共有変数コモンメモリ割付情報50の両方をダウンロードして保持させるようにしてもよい。
尚、上記送信側、受信側とは、例えば特許文献1における図2を例にした場合、図示の「装置1A送信エリア」のデータに関しては、データ伝送装置1Aが送信側となり、他のデータ伝送装置1B,1Cが受信側となる。これは、図9の例の場合、開発支援装置10’が例えば図示のPLC−A用のソースコード14のコンパイルに伴って上記変数情報管理表17’と共有変数コモンメモリ割付情報50を生成した場合には、PLC−Aが送信側、PLC−Bが受信側となる。この例では、例えば、PLC−Aには変数情報管理表17’をダウンロードして保持させ、PLC−Bには共有変数コモンメモリ割付情報50をダウンロードして保持させることになる。尚、この場合には、変数情報管理表17’には更にコモンメモリマッピング識別子52が追加されていることが望ましい。
但し、この例に限らず、共有変数コモンメモリ割付情報50は必ずしに生成しなくてよいので、この場合にはPLC−Bにも変数情報管理表17’をダウンロードして保持させることになる。共有変数コモンメモリ割付情報50は、基本的に、変数情報管理表17’のデータのなかで受信処理に必要なデータを抽出して成るものであり、変数情報管理表17’に比べてデータ量が少なくて済むというメリットが得られる。
また、コモンメモリマッピング識別子52は、必ずしも必要なく、タスク51(タスク名)があればタスクを識別できるが、「コモンメモリマッピング識別子」を用いる方がコモンメモリ21に格納するデータ量が少なくて済む。
各PLC20’は、上記自己が保持する変数情報管理表26’や共有変数コモンメモリ割付情報60を用いて、コモンメモリデータ交換処理を実行する。以下、PLC20’におけるコモンメモリデータ交換処理について説明する。
まず、送信側のPLC20’は、例えば図16に示す動作を行う。これは、例えば上記図8(a)、(b)に示す設定情報に従って、各タスクを動作させる。この例では、タスク“定周期1”は、200ms周期で動作させ、プログラム1とプログラム2を実行することになる。また、タスク“定周期2”は、1000ms周期で動作させ、プログラム3を実行することになる。そして、各タスク実行毎に、転送処理部24’が、図16に示す転送処理を行う。
ここで、図16において、△は、転送処理を示し、この△内に示す数字は、コモンメモリマッピング識別子52を示す。
転送処理部24’は、基本的には上記図1の転送処理部24と略同様の処理を行うものであるが、異なる点は、全ての共有変数データを転送するのではなく、その都度、そのときに(直前に)実行されたタスクに係わる共有変数データを転送する点である。更に、そのときに実行されたタスクの上記識別ID(コモンメモリマッピング識別子)を、コモンメモリ21の所定の格納領域(ここではアドレス‘0’‘1’)に格納する。
転送処理部24’は、任意のタスク実行完了に伴って呼び出されると、コモンメモリ21の自己の記憶領域のデータを消去したうえで、まず、当該実行完了したタスクに対応するコモンメモリマッピング識別子52を、コモンメモリ21の所定の格納領域(ここではアドレス‘0’‘1’)に格納する。そして、変数情報管理表26’に基づいて、当該実行完了したタスクに係わる共有変数データを、内部メモリ25からコモンメモリ21へ転送する。
例えば、図16において△内が‘1’である転送処理は、タスク“定周期1”を実行完了後、換言すればプログラム1とプログラム2を実行完了後に実行される転送処理である。この転送処理では、まず、タスク“定周期1”のコモンメモリマッピング識別子=‘1’が、コモンメモリ21の所定の格納領域に格納される。更に、タスク“定周期1”に係わる共有変数である変数11、変数13、変数22のデータが、内部メモリ25からコモンメモリ21の該当アドレスへと転送・記憶される。図14の例の場合、変数11、変数13、変数22の各データは、それぞれ、コモンメモリ21のアドレス‘2’、アドレス‘3’、アドレス‘4’へと転送・記憶される。これより、この転送処理実行後のコモンメモリ21のデータ格納状態は、図12(a)に示すようになる。
また、例えば、図16において△内が‘2’である転送処理は、タスク“定周期2”を実行完了後、換言すればプログラム3を実行完了後に実行される転送処理である。この転送処理では、まず、タスク“定周期2”のコモンメモリマッピング識別子=‘2’が、コモンメモリ21の所定の格納領域に格納される。更に、タスク“定周期2”に係わる共有変数である変数32のデータが、内部メモリ25からコモンメモリ21の該当アドレスへと転送・記憶される。図14の例の場合、変数32データは、コモンメモリ21のアドレス‘2’へと転送・記憶される。これより、この転送処理実行後のコモンメモリ21のデータ格納状態は、図12(b)に示すようになる。
また、例えば、図16において△内が‘3’である転送処理は、タスク“デフォルト”を実行完了後、換言すればプログラム4を実行完了後に実行される転送処理である。この転送処理では、まず、タスク“デフォルト”のコモンメモリマッピング識別子=‘3’が、コモンメモリ21の所定の格納領域に格納される。更に、タスク“デフォルト”に係わる共有変数である変数41のデータが、内部メモリ25からコモンメモリ21の該当アドレスへと転送・記憶される。図14の例の場合、変数41データは、コモンメモリ21のアドレス‘2’へと転送・記憶される。これより、この転送処理実行後のコモンメモリ21のデータ格納状態は、図12(c)に示すようになる。
尚、図12との比較の為、図13には上記実施例1におけるコモンメモリ21のデータ割り付け例を示す。
図13に示すように、実施例1の場合、そのとき実行されたタスクが何であるかは関係なく、常に、全ての変数(変数11,13,22,32,41)のデータが、コモンメモリ21に格納される。つまり、コモンメモリ21には、これら5つの変数のデータを格納する為の記憶容量が、必要となる。
一方、実施例2の場合、上記の例では最大でも図12(a)に示す3つの変数のデータを格納する為の記憶容量が、あればよいことになる(尚、正確には、更に、コモンメモリマッピング識別子を格納するための記憶容量も必要となる)。この様に、実施例2は、実施例1に比べて、コモンメモリ21の記憶容量が少なくて済む、という効果が得られる。
更に、内部メモリ25からコモンメモリ21へのデータ転送量も、実施例2は実施例1に比べて少なくて済むという効果も得られる。すなわち、実施例1の場合、データ転送処理実行毎に、上記の例では上記5つの変数のデータを転送することになる。これに対して、実施例2の場合、特にタスク“定周期2”やタスク“デフォルト”の実行完了後に行われるデータ転送処理では、1つの変数のデータを転送すればよく(正確には、更に、コモンメモリマッピング識別子も転送するが)、データ転送量が非常に少なくて済む。
上記コモンメモリ21の格納データは、例えば上記特許文献1等に開示されている既存機能によって、他のPLC20’のコモンメモリ21に転送・格納される。
ここで、実施例2では、受信側のPLC20’は、自己が保持する上記共有変数コモンメモリ割付情報60等を参照して、自己のコモンメモリ21から所望の変数のデータを取得する。これは、まず、自己のコモンメモリ21から上記コモンメモリマッピング識別子を取得し、これを用いて共有変数コモンメモリ割付情報60等を参照することで、現在、自己のコモンメモリ21のどのアドレスにどの変数のデータが格納されているのかを認識できる。そして、これによって、自己のコモンメモリ21から所望の変数のデータを取得できる。
例えば、自己のコモンメモリ21の状態が図12(a)に示す状態であった場合、そのコモンメモリマッピング識別子は‘1’であるので、例えば図15に示す共有変数コモンメモリ割付情報60を参照すれば、例えばアドレス‘2’には変数11のデータが格納されていることを認識できることになる。更に、これがタスク“定周期1”に係わる変数であること等も認識できる。また、コモンメモリ21から変数データを読み出す際には、BCアドレス54からデータ型55に応じたデータ量のデータを、読み出すことになる。
更に、変数情報管理表26’を参照すれば、この変数11がプログラム1に係わる変数であること等が認識できることになる。
また、例えば、自己のコモンメモリ21の状態が図12(b)に示す状態であった場合、そのコモンメモリマッピング識別子は‘2’であるので、例えばアドレス‘2’には変数32のデータが格納されていることを認識できることになる。
この様に、実施例2においても、受信側のPLC20’は、問題なく所望の共有変数データを取得することができる。
10 開発支援装置(ローダ)
11 インタフェース機能部
12 コンパイラ部
13 通信機能部
14 ソースコード
15 ソースコード識別番号対応表
16 機械語オブジェクト
17 変数情報管理表
18 タスク情報
20 PLC
21 コモンメモリ
22 通信機能部
23 プログラム実行管理機能部
24 転送処理部
25 内部メモリ
26 変数情報管理表
27 機械語オブジェクト
30 共有変数宣言情報
31 プログラム名
32 変数名
33 データ型
34 共有変数
41 管理ID
42 プログラム名
43 変数名
44 データ型
45 「PLC内メモリのアドレス」
46 共有変数
47 「コモンメモリへのデータ格納先アドレス」
10’ 開発支援装置
12’ コンパイラ部
17’ 変数情報管理表
20’ PLC
24’ 転送処理部
26’ 変数情報管理表
48 タスク
50 共有変数コモンメモリ割付情報
51 タスク
52 コモンメモリマッピング識別子
53 変数名
54 BCアドレス
55 データ型

Claims (12)

  1. 各々が内部メモリとコモンメモリを有する複数のプログラマブルコントローラがネットワークに接続されており、該複数のプログラマブルコントローラが前記コモンメモリの格納データを共有するシステムであって、
    任意の前記プログラマブルコントローラに対応して、そのプログラムのソースコードを任意に作成させる支援装置を更に有し、
    該支援装置は、
    前記ソースコードをコンパイルするコンパイル手段を有し、
    該コンパイル手段は、
    前記コンパイルの際に、前記ソースコードの各変数に前記内部メモリの任意のアドレスを割当てると共に、該内部メモリの割当アドレスとその変数が共有変数であるか否かを示す情報を含む変数情報を生成する変数情報作成手段と、
    前記変数情報の各共有変数毎に、前記コモンメモリの任意のアドレスを割り当てて、該コモンメモリの割当アドレスを前記変数情報に前記内部メモリの割当アドレスに対応付けて追加記録するコモンメモリ割当手段とを有し、
    前記プログラマブルコントローラは、
    前記変数情報に基づいて、前記内部メモリに格納される前記各変数のデータのうち、前記共有変数のデータを前記コモンメモリの割当アドレスへ転送・格納する転送処理手段を有することを特徴とするプログラマブルコントローラシステム。
  2. 前記変数情報には更に前記各変数のデータ型が含まれており、
    前記コモンメモリ割当手段は、予め設定される所定アドレスと、前記各共有変数の前記データ型とに基づいて、前記各共有変数の前記コモンメモリの割当アドレスを決定することを特徴とする請求項1記載のプログラマブルコントローラシステム。
  3. 前記支援装置は、
    各タスクに対する任意の前記プログラムの割り当て情報を含むタスク情報を生成させるタスク情報生成手段を更に有し、
    前記転送処理手段は、前記タスク情報と前記変数情報とに基づいて、任意のタスク実行完了時に、そのタスクに係わるプログラムの前記共有変数のデータを、前記内部メモリから前記コモンメモリの割当アドレスへ転送・格納することを特徴とする請求項1記載のプログラマブルコントローラシステム。
  4. 前記変数情報には、更に、その変数に係わるタスクの情報が含まれており、
    前記コモンメモリ割当手段は、各タスク毎に、そのタスクに係わる各共有変数に対して前記コモンメモリの任意のアドレスの割り当てを行うことを特徴とする請求項1記載のプログラマブルコントローラシステム。
  5. 前記コモンメモリの同じ記憶領域を複数のタスクで共有させる形で前記共有変数のアドレス割当てが行われることを特徴とする請求項4記載のプログラマブルコントローラシステム。
  6. 前記コモンメモリ割当手段は、同じタスクに係わる共有変数に関しては相互に異なるアドレスを割当てるが、任意の複数の共有変数が相互に異なるタスクに係わる共有変数である場合には該複数の共有変数に対して同一のアドレスを割当てる場合もあることを特徴とする請求項5記載のプログラマブルコントローラシステム。
  7. 前記プログラマブルコントローラの前記転送処理手段は、
    任意のタスクの処理を実行すると、前記変数情報に基づいて、前記内部メモリに格納される前記各変数のデータのうち、該実行したタスクに係わる前記共有変数のデータを、前記コモンメモリの割当アドレスへ転送・格納することを特徴とする請求項4〜6の何れかに記載のプログラマブルコントローラシステム。
  8. 前記転送処理手段は、前記実行したタスクを示す情報も一緒に前記コモンメモリへ転送・格納することを特徴とする請求項7記載のプログラマブルコントローラシステム。
  9. 他のプログラマブルコントローラは、自己のコモンメモリに現在格納されているデータが、どのタスクに係わる共有変数のデータであるのかを、前記コモンメモリに格納される前記実行したタスクを示す情報によって判別することを特徴とする請求項7または8記載のプログラマブルコントローラシステム。
  10. 各々が内部メモリとコモンメモリを有する複数のプログラマブルコントローラがネットワークに接続されており、該複数のプログラマブルコントローラが前記コモンメモリの格納データを共有するシステムにおける、任意の前記プログラマブルコントローラに対応して、そのプログラムのソースコードを任意に作成させる支援装置であって、
    前記ソースコードをコンパイルするコンパイル手段を有し、
    該コンパイル手段は、
    前記コンパイルの際に、前記ソースコードの各変数に前記内部メモリの任意のアドレスを割当てると共に、該内部メモリの割当アドレスとその変数が共有変数であるか否かを示す情報を含む変数情報を生成する変数情報作成手段と、
    前記変数情報の各共有変数毎に、前記コモンメモリの任意のアドレスを割り当てて、該コモンメモリの割当アドレスを前記変数情報に前記内部メモリの割当アドレスに対応付けて追加記録するコモンメモリ割当手段とを有することを特徴とするプログラマブルコントローラシステムの支援装置。
  11. 各々が内部メモリとコモンメモリを有する複数のプログラマブルコントローラがネットワークに接続されており、該複数のプログラマブルコントローラが前記コモンメモリの格納データを共有するシステムにおける該プログラマブルコントローラであって、
    任意のプログラムを実行するプログラム実行手段と、
    任意の外部装置で作成された、前記プログラムに係わる各共有変数毎の、前記内部メモリの割当アドレスと前記コモンメモリの割当アドレスとを含む変数情報に基づいて、前記内部メモリに格納される前記各変数のデータのうち、前記共有変数のデータを前記コモンメモリの割当アドレスへ転送・格納する転送処理手段を有することを特徴とするプログラマブルコントローラ。
  12. 前記転送処理手段は、任意のタスク実行完了時に、そのタスクに関して前記プログラム実行手段で実行されたプログラムの前記共有変数のデータを、前記内部メモリから前記コモンメモリの割当アドレスへ転送・格納することを特徴とする請求項11記載のプログラマブルコントローラ。

JP2014197564A 2014-04-24 2014-09-26 プログラマブルコントローラシステム、その支援装置 Active JP6292096B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014197564A JP6292096B2 (ja) 2014-04-24 2014-09-26 プログラマブルコントローラシステム、その支援装置

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2014090720 2014-04-24
JP2014090720 2014-04-24
JP2014197564A JP6292096B2 (ja) 2014-04-24 2014-09-26 プログラマブルコントローラシステム、その支援装置

Publications (2)

Publication Number Publication Date
JP2015215865A true JP2015215865A (ja) 2015-12-03
JP6292096B2 JP6292096B2 (ja) 2018-03-14

Family

ID=54752660

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014197564A Active JP6292096B2 (ja) 2014-04-24 2014-09-26 プログラマブルコントローラシステム、その支援装置

Country Status (1)

Country Link
JP (1) JP6292096B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017126190A (ja) * 2016-01-14 2017-07-20 東芝三菱電機産業システム株式会社 設計支援装置
WO2018198439A1 (ja) * 2017-04-27 2018-11-01 株式会社日立産機システム 産業用コントローラ及び産業用コントローラにおけるデータ共有方法
JP6452924B1 (ja) * 2018-05-11 2019-01-16 三菱電機株式会社 コンパイラおよびプログラミング支援装置
CN112272821A (zh) * 2018-07-03 2021-01-26 欧姆龙株式会社 控制装置以及控制方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002278606A (ja) * 2001-03-15 2002-09-27 Omron Corp プログラミングツール及び制御装置
JP2002297210A (ja) * 2001-04-02 2002-10-11 Toshiba Corp データ伝送装置
JP2003271209A (ja) * 2002-03-15 2003-09-26 Omron Corp 制御装置並びに拡張機器及びプログラミングツール
JP2009009607A (ja) * 1999-10-15 2009-01-15 Omron Corp ネットワークシステム
JP2011227556A (ja) * 2010-04-15 2011-11-10 Mitsubishi Electric Corp ネットワークパラメータの自動設定プログラム、及びプログラマブルコントローラの周辺装置
JP2012164178A (ja) * 2011-02-08 2012-08-30 Fuji Electric Co Ltd プログラム作成支援装置、プログラム作成支援方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009009607A (ja) * 1999-10-15 2009-01-15 Omron Corp ネットワークシステム
JP2002278606A (ja) * 2001-03-15 2002-09-27 Omron Corp プログラミングツール及び制御装置
JP2002297210A (ja) * 2001-04-02 2002-10-11 Toshiba Corp データ伝送装置
JP2003271209A (ja) * 2002-03-15 2003-09-26 Omron Corp 制御装置並びに拡張機器及びプログラミングツール
JP2011227556A (ja) * 2010-04-15 2011-11-10 Mitsubishi Electric Corp ネットワークパラメータの自動設定プログラム、及びプログラマブルコントローラの周辺装置
JP2012164178A (ja) * 2011-02-08 2012-08-30 Fuji Electric Co Ltd プログラム作成支援装置、プログラム作成支援方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017126190A (ja) * 2016-01-14 2017-07-20 東芝三菱電機産業システム株式会社 設計支援装置
WO2018198439A1 (ja) * 2017-04-27 2018-11-01 株式会社日立産機システム 産業用コントローラ及び産業用コントローラにおけるデータ共有方法
JP2018185772A (ja) * 2017-04-27 2018-11-22 株式会社日立産機システム 産業用コントローラ及び産業用コントローラにおけるデータ共有方法
US10955809B2 (en) 2017-04-27 2021-03-23 Hitachi Industrial Equipment Systems Co., Ltd. Industrial controller and data sharing method of industrial controller
JP6452924B1 (ja) * 2018-05-11 2019-01-16 三菱電機株式会社 コンパイラおよびプログラミング支援装置
WO2019215919A1 (ja) * 2018-05-11 2019-11-14 三菱電機株式会社 コンパイラおよびプログラミング支援装置
US10802808B2 (en) 2018-05-11 2020-10-13 Mitsubishi Electric Corporation Compiler and programming support device
CN112272821A (zh) * 2018-07-03 2021-01-26 欧姆龙株式会社 控制装置以及控制方法

Also Published As

Publication number Publication date
JP6292096B2 (ja) 2018-03-14

Similar Documents

Publication Publication Date Title
CN110249274B (zh) 工业用控制器的程序开发系统和其数据共享方法
JP6292096B2 (ja) プログラマブルコントローラシステム、その支援装置
JP2016519385A (ja) ドライバをロードする方法及び組み込みデバイス
JP2012234272A (ja) プログラマブルコントローラ・システム、その支援装置
US10162328B2 (en) Controller and control system
CN110892378A (zh) 在多版本异步动态软件更新期间通过虚拟存储器覆盖技术进行的全局变量迁移
JP2009146229A (ja) プログラマブルコントローラシステム
JP5757098B2 (ja) プログラム作成支援装置、プログラム作成支援方法
JP5849592B2 (ja) プログラマブルコントローラシステム、そのプログラミング装置、プログラマブルコントローラ、プログラム、デバッグ方法
JP2009157533A (ja) プログラマブルコントローラシステム
JP2009152790A (ja) 動的再構成支援プログラム、動的再構成支援方法、動的再構成回路、動的再構成支援装置および動的再構成システム
JP4319082B2 (ja) プログラミングシステム
ES2772675T3 (es) Método de compilación óptima de un comando de PLC
JP6119452B2 (ja) プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ、プログラム
JP2015125713A (ja) プログラマブルコントローラ・システム、その支援装置、プログラマブルコントローラ、プログラム
JP2008198143A (ja) プログラマブルコントローラ用プログラム作成支援装置およびプログラム作成支援方法
WO2020075351A1 (ja) コントロール装置
JP5978775B2 (ja) プログラマブルコントローラ、その支援装置、プログラム、プログラム転送方法
JPWO2019229845A1 (ja) プログラム管理システム、プログラミング支援装置、プログラム管理方法、およびプログラミング支援プログラム
JP4760607B2 (ja) プログラマブルコントローラ
JP4778312B2 (ja) データ処理装置、プログラム、エディタ装置および記録媒体
JP2016099899A (ja) コントロールシステム、その支援装置、プログラマブルコントロール装置
JP6295914B2 (ja) プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ
JP4877257B2 (ja) プログラマブルコントローラ、プログラマブルコントローラ支援装置、及びプログラマブルコントローラシステム
JP6076564B2 (ja) システム設計支援ツール

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170214

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171107

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171121

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171214

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180129

R150 Certificate of patent or registration of utility model

Ref document number: 6292096

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