本発明の一実施形態について図1ないし図16に基づいて説明すると以下の通りである。すなわち、図2に示すように、本実施形態に係る制御システム1は、例えば、製造プラントなどに設けられたターゲットシステム2を制御するために好適に用いられており、例えば、ベルトコンベアー式の自動組付機など、当該ターゲットシステム2のデバイス(制御対象)2aを制御するために用いられている。
当該制御システム1には、上記デバイス2aを制御する制御装置としてのPLC11と、多くの場合、制御対象近傍に配されると共に、制御システム1のHMIとして、デバイス2aの状態を表示し、オペレータによるデバイス2aへの操作を受け付けるグラフィック操作パネル(データ処理装置)12とを備えている。また、本実施形態に係るグラフィック操作パネル12は、詳細は後述するように、PLCとしての機能も備えており、それぞれに対応するPLC11だけではなく、自らが制御するデバイス2aにも直接接続されている。
さらに、本実施形態に係る制御システム1では、各グラフィック操作パネル12は、イーサネット(登録商標)などのLAN(ローカルエリアネットワーク)13によって互いに接続されている。また、上記LAN13には、多くの場合、グラフィック操作パネル12よりも離れた場所から、制御システム1全体を管理する制御用ホストコンピュータ14が接続されている。
なお、上記各グラフィック操作パネル12は、シリアルケーブルなどの通信経路を介して、それぞれに対応するPLC11と接続されている。また、図2では、説明の便宜上、LAN13にグラフィック操作パネル12が2台接続され、各グラフィック操作パネル12には、PLC11およびデバイス2aがそれぞれ1台ずつ接続されると共に、各PLC11にデバイス2aが1台接続されている場合を例示しているが、当然ながら、それぞれの接続台数は任意に設定できる。
また、デバイスは、デバイスアドレスや後述する変数により特定可能で、しかも、状態を取得したり、制御(変更)できるものであれば、例えば、デバイス2a自体であってもよいし、例えば、PLC11やグラフィック操作パネル12の記憶装置など、制御システム1に設けられた記憶装置の一領域を示していてもよい。
ここで、上記制御システム1では、制御システム1に必須の構成であり、しかも、HMIとして動作するため、演算能力に余力のあるグラフィック操作パネル12が通信の大半を処理するように構成されている。さらに、各グラフィック操作パネル12は、自らに接続されているPLC11の機種に固有の専用プロトコルと、LAN13での共通プロトコルとを変換して、他のグラフィック操作パネル12や制御用ホストコンピュータ14と、PLC11との通信を中継する。なお、共通プロトコルと専用プロトコルとの間のプロトコル変換には、同じ指示に同じコードが割り当てられるように予め定められた共通のコマンドと上記共通のコマンドに対応するPLC11固有のコマンドとの間の変換や、データやアドレスの表現方法の変換、デバイスアドレスと、当該デバイスアドレスに対応し、しかも、デバイスアドレスとは異なる値に設定可能な変数や変数の名称(変数名)との変換なども含まれる。
これにより、グラフィック操作パネル12および制御用ホストコンピュータ14は、他のグラフィック操作パネル12に接続されているPLC11の機種に拘らず、LAN13を介して共通のプロトコルで通信できる。この結果、互いに異なる機種のPLC11の混在する制御システム1が比較的容易に実現されている。
上記グラフィック操作パネル12は、後述する画面データに基づいて、デバイスの状態を画面表示する際の動作や、画面への操作に応じてデバイスの状態を制御する際の動作を特定するものであって、PLC11と通信するPLC・IF部21と、上記LAN13に接続するためのLAN・IF部22と、例えば、液晶表示装置などからなるディスプレイ23と、ディスプレイ23の画面上に配されたタッチパネル24と、上記各部材21〜24を制御するHMI処理部25と、当該HMI処理部25によって参照され、上記画面データおよび変数が格納される記憶部26とを備えている。
本実施形態に係る画面データは、画面を表示し、操作を受け付ける際の動作を特定するデータであって、例えば、解像度などの点で互いに異なるディスプレイ23を有するグラフィック操作パネル12間、あるいは、制御用ホストコンピュータ14であっても当該画面データを共用できるように、抽象化されたオブジェクトデータ(手続きおよびデータ)として表現されている。一方、HMI処理部25は、当該画面データを、自機器に応じた機械語に翻訳して実行することで画面表示や操作受付などの動作を実行する。なお、オブジェクトの内部変数やデバイス2aの状態を記憶する領域、あるいは、作業領域など、HMI処理部25が画面データを実行する際に必要な記憶領域は、上記記憶部26に確保される。
より詳細には、本実施形態に係る画面データは、HMI処理部25がオブジェクトを生成するためのデータであって、ディスプレイ23の画面に表示可能な部品(図形要素)に対応するオブジェクトの集合としてのパネルオブジェクトを生成するためのデータを含んでいる。
また、本実施形態に係る画面データでは、オブジェクトがアドレスによって直接デバイスと関連付けられているのではなく、デバイスを特定する情報(アドレスなど)に対応する変数を介してデバイスと対応付けられている。本実施形態では、オブジェクトは、属性によって変数と対応付けられており、上記各オブジェクトのうち、デバイスに関連するオブジェクトは、それぞれに対応付けられた変数を示すデバイス属性ADを有しており、当該属性ADによって、上記変数のいずれかに対応付けできる。
一方、デバイスに対応付けられた変数には、属性として、デバイスの状態を示す内容と、デバイスアドレスなど、デバイスを特定するための情報とが設けられている。また、上記パネルオブジェクトを生成するためのデータには、デバイスに対応付け可能な変数のうち、上記各オブジェクトのいずれかから参照されている変数のリストが含まれている。
また、上記各オブジェクトは、画面上の領域と対応付けることができる。本実施形態では、当該対応付けも、オブジェクトの属性によって行われており、上記各オブジェクトのうち、例えば、画面上の一領域にデバイスの状態を表示するオブジェクトや、画面上の一領域への操作を受け付けるオブジェクトには、当該領域を示す領域属性AAが付加されている。これにより、オブジェクトは、当該領域属性AAの値を参照すれば、自らがデバイスの状態を表示すべき画面上の領域を特定したり、操作を受け付けるべき画面上の領域をHMI処理部25へ伝えたりすることができる。
さらに、各オブジェクトは、自らの属性を参照しながら、メッセージに応じて、あるいは、予め定められたタイミングで、例えば、他のオブジェクトとのやり取りや、他の部材21〜24・26とのやり取りなど、予め定められた処理を行うことができる。なお、当該処理としては、例えば、変数の内容取得や、変数の内容変更、ディスプレイ23への表示などが挙げられる。
例えば、デバイスの状態を表示するオブジェクトは、例えば、デバイスの状態表示を示すメッセージを受け取った時点や、予め定められたタイミング(例えば、予め定められた時間が経過した時点など)になると、上記デバイス属性ADの値に基づいて、自らに対応付けられた変数の内容を取得すると共に、上記領域属性AAの値に基づいて、自らがデバイスの状態を表示すべき、画面上の領域を特定する。さらに、オブジェクトは、予め定められた手順に従って、変数の内容、すなわち、デバイスの状態に応じて、上記領域における図形表示を変更できる。
一例として、あるオブジェクトが、線や円などの線画を示す基本図形を組み合わせて、部品を表示している場合、当該オブジェクトは、デバイスの状態に応じて、基本図形の色や大きさ、組み合わせられる各基本図形の相対位置などを変更して、部品の表示を変更できる。また、オブジェクトが、部品として、画像ファイルを表示している場合、当該オブジェクトは、デバイスの状態に応じて、参照する画像ファイルを変更して、部品の表示を変更できる。なお、画像ファイルを表示する際の色や大きさを変更し、表示を変更してもよい。
また、オペレータがタッチパネル24によって画面上の部品を操作した場合、HMI処理部25は、画面データに基づいて、あるいは、オブジェクトからの応答に基づいて、操作対象となるオブジェクトを特定し、当該オブジェクトに、操作内容に応じたメッセージを送信できる。一方、上記各オブジェクトのうち、操作を受け付け可能なオブジェクトは、例えば、画面へのタッチなどによる、オブジェクトへの操作受け付けを示すメッセージを受け取ると、メッセージの示す操作に応じて、自らに対応付けられた変数の内容を変更できる。
さらに、上記HMI処理部25は、変数の内容と、それに対応するデバイスの状態とが一致するように、変数の内容と、それに対応するデバイスの状態との少なくとも一方を更新できる。具体的には、HMI処理部25は、例えば、予め定められた周期など、予め定められたタイミングで、上記リストに含まれた各変数に対応するデバイスの状態を取得し、当該状態に応じて、それに対応する変数の内容を更新できる。また、HMI処理部25は、例えば、予め定められた周期など、予め定められたタイミングで、変数の内容に応じて、変数に対応するデバイスの状態を変更できる。
より詳細には、HMI処理部25は、変数の属性のうち、デバイスを特定するための属性の値に基づいて、デバイスへの通信経路を特定する。通信路が特定されると、必要に応じて、両IF部21・22へ指示して、自機器に接続されているPLC11や、他のグラフィック操作パネル12と通信し、デバイス2aの状態を取得する。また、HMI処理部25は、取得したデバイス2aの状態を、変数の内容として、記憶部26に格納できる。
一方、変数の内容に応じてデバイス2aの状態を変更する場合には、HMI処理部25は、変数の属性のうち、デバイスを特定するための属性の値から、デバイス2aへの通信路を特定すると共に、デバイスへ送信すべき制御指示を特定する。さらに、通信経路および制御指示が特定されると、必要に応じて、両IF部21・22へ指示して、自機器に接続されているPLC11や、他のグラフィック操作パネル12と通信し、デバイス2aの状態制御指示を送信できる。
なお、デバイスがグラフィック操作パネル12内の記憶領域に対応している場合など、状態取得に通信が不要な場合、HMI処理部25は、通信不要と判断する。この場合、HMI処理部25は、通信せずにデバイスの状態を取得したり、デバイスの状態を制御したりする。
これにより、グラフィック操作パネル12は、図3に示すように、画面データの示すデバイスの状態を、画面データの示すように、ディスプレイ23の画面(操作画面)上に表示すると共に、画面データに基づいて、当該操作画面への操作を受け付け、当該操作に応じてデバイスの状態を変更できる。
さらに、本実施形態に係るグラフィック操作パネル12は、PLCとしても動作するために、デバイス2aに接続するためのIO・IF部31と、上記記憶部26に格納されたラダープログラムに基づいて、IO・IF部31に接続されたデバイス2aを制御するデバイス制御部32とを備えている。
本実施形態に係るデバイス制御部32も、HMI処理部25と同様、デバイス2aの状態を記憶部26にキャッシュしており、ラダープログラムを実行する際、その都度デバイス2aへアクセスする代わりに、記憶部26へアクセスしている。また、本実施形態に係るデバイス制御部32は、制御対象を変数で特定できるように構成されている。
より詳細には、デバイス制御部32は、例えば、数十msなど、予め定められた長さの走査期間(スキャンタイム)毎に、各デバイス2aの状態を読み出し、各デバイス2aに対応する変数の内容として、記憶部26の変数領域に格納できる。
さらに、デバイス制御部32は、記憶部26の変数領域に格納された各変数の内容を参照しながら、記憶部26に格納されたラダープログラムが示す各命令を順次実行できる。当該ラダープログラムは、図4に示すように、ラダー図として記述したり、図5に示すように、ニモニックで示された命令のシーケンスとしても記述したりできる。なお、図4および図5は、ラダー図として図示するか、あるいは、ニモニックで図示するかという表現方法は、互いに異なっているが、内容(手順)としては、互いに同じラダープログラムを示している。
本実施形態に係るラダープログラムでは、図5に、そのニモニック表記として示すように、各命令において、命令語Cα…で示される動作の対象(オペランド)を、変数で指定可能であり、命令が変数で示されたオペランドを含んでいる場合、デバイス制御部32は、当該命令を実行する際、オペランドとして指定された変数の内容を参照したり、オペランドとして指定された変数の内容を更新したりできる。また、各命令では、オペランドとして、変数以外の値(定数、あるいは、アドレスなど)を指定することもでき、デバイス制御部32は、当該命令を実行する際、当該値を参照したり、当該値で示されるアドレスの内容を参照したり、更新したりできる。なお、デバイス制御部32が実行可能な命令セットには、オペランドを含まない命令が含まれていてもよい。
さらに、上記順次実行される命令の1つとして、エンド命令が実行されると、デバイス制御部32は、ラダープログラムの実行を終了し、記憶部26の変数領域に格納された各変数のうち、IO・IF部31に接続されたデバイス2aに対応する変数の内容を各デバイス2aに書き込む。これにより、デバイス制御部32は、PLCと同様に、ユーザが作成したラダープログラムに従い、デバイス2aの状態に応じて各デバイス2aを制御できる。
ここで、本実施形態に係るグラフィック操作パネル12では、上記HMI処理部25およびデバイス制御部32は、図1に示すように、アプリケーション層41と制御層42とサービス層(アクセス手段)43とに分けて実装されている。
すなわち、アプリケーション層41には、HMI処理部25およびデバイス制御部32に、それぞれ対応して、HMIアプリケーション41aおよび制御アプリケーション41bが設けられている。これらのアプリケーション41a・41bは、上述したHMI処理部25およびデバイス制御部32の動作のうち、デバイス2aの状態を取得する動作およびデバイス2aの状態を更新する動作以外の処理を行うものであって、デバイス2aの状態を取得したり更新したりする際には、制御層42を介して、サービス層43へ指示することによって、デバイス2aの状態を取得させたり更新させたりしている。
一方、上記サービス層43は、制御層42を介したアプリケーション層41からのアクセス要求に応えて、要求されたデバイス2aの状態を返したり、要求されたデバイス2aの状態を、要求された値に変更したりすることができる。
本実施形態に係るグラフィック操作パネル12は、上述したように、デバイス2aの状態を記憶部26にキャッシュしているので、上記サービス層43として、PLC11またはIO・IF部31を介して、デバイス2aと通信して、デバイス2aの状態を取得したり、デバイス2aの状態を更新したりするための通信サービス43aと、記憶部26内に設けられた実デバイス領域A1にアクセスして、実デバイス領域A1にキャッシュされているデバイス2aの状態を取得したり、更新したりするための実デバイス領域サービス43bとが設けられている。なお、自動割付領域サービス43cについては後述する。
一方、上記両層41・43の間に設けられた制御層42は、上記アプリケーション層41(より詳細には、アプリケーション層41内の各アプリケーション41a、41b)からの指示に基づいて、上記サービス層43内の各サービスのいずれに、アプリケーション層41からの指示を与えるかを制御している。また、制御層42は、アプリケーション層41からの指示において、アクセス対象が変数の識別子(例えば、変数名あるいは変数IDなど)によって特定されていた場合、当該変数の識別子を実アドレスにアドレス変換し、実アドレスでアクセス対象が指定された指示を、サービス層43へ与えることができる。
より詳細には、アプリケーション層41は、図6に示すデータ構造の指示T1を制御層42へ与えている。当該指示T1には、指示の種類を示すフィールドF11と、アクセスする領域を示す情報(アクセス対象情報)のフィールドF12と、アクセス先となるサービスを示すフィールドF13とが含まれている。
上記種類は、制御層42でのアドレス変換が必要か否かを示すものであって、図7に示すように、上記指示T1が実アドレスでアクセス対象を特定する指示T1αである場合、当該指示T1αのフィールドF11には、変換不要を示す値(図の例では、”直接”)が格納される。なお、この場合、フィールドF12には、実アドレス(図7の例では、”D0000”)が格納され、制御層42は、フィールドF12の内容を、フィールドF13の示すサービス(図7の例では、実デバイス領域サービス43b)へ転送する。なお、制御層42は、図8に示すように、上記指示T1αから、フィールドF11およびF13を取り除いた後の指示T2α、すなわち、実アドレスのフィールドF21を含む指示T2αを、サービス層43へ与えている。
これとは逆に、上記指示T1が変数の識別子でアクセス対象を特定する指示T1βである場合、図9に示すように、当該指示T1βのフィールドF11には、変換要を示す値(図9の例では”間接”)が格納される。なお、この場合、フィールドF12には、変数の識別子(図9の例では、変数名”内部レジスタ”に対応するID”5”)が格納され、制御層42は、フィールドF12の内容を実アドレスに変換した後、図10に示すように、変換後の指示T2βを、フィールドF13の示すサービス(図9の例では、実デバイス領域サービス43b)へ転送する。
より詳細には、本実施形態に係るグラフィック操作パネル12には、データベース44が設けられており、上記制御層42は、実アドレスへの変換の際に、当該データベース44を参照している。
上記データベース44には、各変数のID(変数ID)に関連付けて、その変数に対応する実アドレスが記憶されており、制御層42は、変数IDでアクセス対象が指定された指示を受け取った場合、データベース44から当該IDに対応する実アドレスを読み出すことによって、変数IDを実アドレスに変換できる。
また、上記データベース44には、各変数のIDに関連付けて、その変数の名称(変数名)を記憶することもでき、制御層42は、変数名でアクセス対象が指定された指示を受け取った場合、データベース44から当該変数名に対応する実アドレスを読み出すことによって、変数名を実アドレスに変換できる。
一例として、本実施形態に係るデータベース44では、図11に示すように、各変数毎にレコードが設けられており、各レコードには、その変数を示す変数IDのフィールドF41と、その変数に対応するアドレスのフィールドF42と、その変数の変数名のフィールドF43と、その変数の型(後述)を示すフィールドF44とが設けられており、変数に名前が付されている場合、その変数に対応するレコードの上記フィールドF43には、その変数の名前を示す情報が格納される。
また、本実施形態に係るグラフィック操作パネル12では、変数名が付されず、実アドレスのみで参照されるデバイスも、変数として扱われており、データベース44には、当該デバイスに対応する変数のレコードも設けられている。なお、変数名が付されていない場合、その変数のレコードのフィールドF43は空に設定される。
さらに、本実施形態に係るデータベース44の各レコードには、上記各フィールドF41〜F44に加えて、その変数の値を保持するか否かを示すフィールドF45、および、その変数のコメントのフィールドF46が設けられている。また、上記各レコードには、その変数が配列型か否かと、配列型の場合は、配列の要素数とを格納するフィールドF47も設けられている。
例えば、図9の例では、アプリケーション層41からの指示T1βにおいて、アクセス対象が、変数ID”5”で特定されている。したがって、上記制御層42は、データベース44から、当該変数IDに対応する実アドレス(図11の例では、”LS0000”)を読み出し、図10に示すように、実アドレスのフィールドF21を含む指示T2βを生成する。
一方、制御層42への指示T1が、実アドレスでアクセス対象を特定する指示T1αであるか、変数の識別子でアクセス対象を特定する指示T1βであるかに拘らず、実アドレスのフィールドF21を含む指示T2(T2αまたはT2β)が制御層42からサービス層43へ与えられると、サービス層43は、指示T2αのフィールドF21の示すアクセス対象の内容を返したり、更新したりできる。なお、内容を変更する指示の場合、上記指示T1・T2には、変更内容を示すフィールドも設けられており、制御層42は、当該フィールドも、サービス層43へ与えている。
例えば、サービス層43の通信サービス43aであれば、例えば、デバイス制御部32または各IF部21・22へ指示するなどして、指示T2αのフィールドF21の示すアクセス対象と通信して、その状態を取得し、取得した状態をアプリケーション層41へ返答したり、当該アクセス対象と通信して、その状態を、指示T2αの示す内容に変更したりできる。また、サービス層43の実デバイス領域サービス43bは、記憶部26に設けられた実デバイス領域A1のうち、フィールドF21の示す記憶領域にアクセスして、当該記憶領域から読み出した値をアプリケーション層41へ返答したり、当該記憶領域の内容を、指示T2αの示す内容に変更したりできる。
ところで、上記データベース44の内容、および、上記アプリケーション層41が上記指示T1α・T1βを作成する際に参照する画面データおよびラダープログラムなどのデータは、例えば、図2に示すエディタ装置(指示データ生成装置)15によって生成され、グラフィック操作パネル12は、通常動作期間、すなわち、ラダープログラムに基づいてデバイスを制御し、画面データに基づいて操作画面を表示する期間よりも前に、例えば、一時的に接続されたエディタ装置15からの通信、あるいは、エディタ装置15によって上記各データが書き込まれた記録媒体からの読み出しなどによって、上記各データを取得し、記憶部26に格納する。なお、例えば、制御用ホストコンピュータ14など、LAN13に接続された機器が上記各データの生成機能を有している場合、グラフィック操作パネル12は、当該機器とLAN13経由で通信して上記各データを取得してもよいし、グラフィック操作パネル12自体が上記各データの生成/編集機能を有している場合は、グラフィック操作パネル12がユーザからの指示に応じて、記憶部26の上記各データを修正したり、新規に上記各データを生成したりして、修正/生成された上記各データを記憶部26に格納してもよい。
本実施形態に係るエディタ装置15は、一例として、ラダープログラムを生成/編集する機能と画面データを生成/編集する機能とを兼ね備えた装置であって、例えば、図12に示すように、ユーザの操作に応じて、予め格納されたラダープログラムを修正したり新規作成したりして、ラダープログラムをプログラミングし、新たなラダープログラムを生成するプログラムエディタ(制御プログラム編集手段)51と、ユーザの操作に応じて、予め格納された画面データを修正したり新規作成したりして、操作画面を設計し、新たな画面データを生成する作画エディタ(操作画面編集手段)52と、上記各エディタ51・52が生成したラダープログラムおよび画面データを格納する記憶装置53とを備えている。また、上記エディタ装置15には、上述した変数のデータが格納されるデータベース54が設けられており、上記各エディタ51・52は、ユーザの操作に応じてデータベース54の内容を更新できる。
また、図2に示すエディタ装置15は、一例として、グラフィック操作パネル12と通信して上記各データを伝送する構成であり、記憶装置53およびデータベース54に格納された上記各データを、これらグラフィック操作パネル12へ通信する通信処理部55が設けられている。なお、記録媒体経由で上記各データを伝送する場合は、通信処理部55に代えて/加えて記録媒体に記憶装置53またはデータベース54に格納された各データを書き込む記録装置を設ければよい。
なお、上述したグラフィック操作パネル12の各部材21・22・25〜32および41〜44、並びに、上記各部材51〜55は、CPUなどの演算手段が、ROMやRAMなどの記憶手段に格納されたプログラムを実行し、タッチパネルや液晶表示装置などの入出力手段、あるいは、インターフェース回路などの通信回路を制御することによって実現される機能ブロックである。また、これらの部材のうち、各記憶部26・51a・52a、記憶装置53およびデータベース44・54(一部後述)は、ROMやRAMなどの記憶装置自体であってもよい。したがって、これらの手段を有するコンピュータが、上記プログラムを記録した記録媒体(例えば、CD−ROMなど)を読み取り、当該プログラムを実行するだけで、本実施形態に係るエディタ装置15を実現できる。なお、例えば、LAN13、あるいは、他の通信路を介してプログラムをダウンロードするためのプログラムが、上記コンピュータに予めインストールされていれば、これらの通信路を介して、上記コンピュータへ上記プログラムを配付してもよい。
より詳細には、上記プログラムエディタ51は、ラダープログラムに対応する情報および当該ラダープログラムに対応するラダー図を示す情報が一時的に格納される作業用の記憶部51aと、ユーザの指示を受け付けて、当該記憶部51aの内容を書き換える編集処理部(自動割付手段)51bと、編集処理部51bによって編集される記憶部51aの内容を、ラダー図として、図示しないディスプレイに表示させる表示処理部51cと、上記記憶部51aに格納されたラダープログラムを当該記憶部51aに展開したり、編集後の記憶部51aの内容に応じたラダープログラムを記憶部51aへ書き込むデータ入出力処理部51dとを備えている。
ここで、上記ラダープログラムは、上述したように、ラダー図として図示することが可能であり、プログラムエディタ51の編集処理部51bは、例えば、配置可能なラダー記号の種類を示すパレットを表示し、パレット中のラダー記号の種類を選択して画面上に所望の種類のラダー記号を配置するようにユーザへ促す。また、編集処理部51bは、ユーザによるラダー記号の配置操作を受け付けると、当該操作に応じて、編集中のラダー図が上記配置されたラダー記号を含むように、記憶部51aの内容を変更し、表示処理部51cは、記憶部51aの内容に基づいて、当該ラダー記号を指定された座標に表示する。同様に、編集処理部51bは、ユーザによるネットワークの配置操作を受け付けると、当該操作に応じて、編集中のラダープログラムが当該ネットワークを含むように、記憶部51aの内容を変更し、表示処理部51cは、記憶部51aの内容に基づいて、当該ネットワークを指定された位置に表示できる。
さらに、編集処理部51bは、ユーザのドラッグ&ドロップなどの操作に応じて記憶部51aの内容を変更して、当該ラダー記号の表示座標範囲の値を調整し、表示処理部51cは、変更後の位置にラダー記号を表示する。また、編集処理部51bは、ラダー記号に関連するデバイスを特定するための情報としてアドレスや変数を入力するようにユーザへ促すと共に、入力されたアドレスや変数が当該ラダー記号に関連するように、記憶部51aの内容(より詳細には、ラダー記号に対応する命令のオペランドを示す情報)を変更し、表示処理部51cは、ユーザの指示に応じて、各ラダー記号に関連付けられている変数を、それに対応するアドレスあるいは変数名の形式で表示できる。
また、編集処理部51bは、変数に対するデバイスアドレスの入力操作を受け付け、入力されたアドレスを示すように、データベース54の内容(より詳細には、当該変数に対応するレコードの内容)を変更し、表示処理部51cは、ユーザの指示に応じて、各変数に関連付けられているアドレスを表示してもよい。なお、新たに変数を登録する際の動作および作画エディタ52との連係動作については後述する。
さらに、編集終了指示を受け付けると、データ入出力処理部51dは、記憶部51aの内容に応じたラダープログラムを生成して、記憶装置53に書き込む。これにより、編集されたラダー図に対応する命令シーケンスからなるラダープログラムが生成される。
同様に、上記作画エディタ52は、画面データに対応する情報が一時的に格納される作業用の記憶部52aと、ユーザの指示を受け付けて、当該記憶部52aの内容を書き換える編集処理部(自動割付手段)52bと、編集処理部52bによって編集される記憶部52aの内容を図示しないディスプレイに表示させる表示処理部52cと、上記記憶装置53に格納された画面データを当該記憶部52aに展開したり、編集後の記憶部52aの内容に応じた画面データを記憶装置53へ書き込むデータ入出力処理部(生成手段)52dとを備えている。
ここで、上記画面データは、上述したように、画面上の領域と、当該領域への表示や入力に対応するデバイスを特定可能なアドレスとの対応関係を示すオブジェクトを組み合わせて構成されており、作画エディタ52の編集処理部52bは、例えば、オブジェクトの雛型となるクラスのパレットを表示し、パレット中のクラスを選択して画面上に所望のオブジェクトを配置するようにユーザへ促す。また、編集処理部52bは、ユーザによるオブジェクトの配置操作を受け付けると、当該操作に応じて、編集中の画面データが上記配置されたオブジェクトのデータを含むように、記憶部52aの内容を変更し、表示処理部52cは、記憶部52aの内容に基づいて、当該オブジェクトを指定された座標に表示する。また、編集処理部52bは、ユーザのドラッグ&ドロップなどの操作に応じて記憶部52aの内容を変更して、当該オブジェクトの領域属性の値を調整し、表示処理部52cは、変更後の位置にオブジェクトを表示する。また、編集処理部52bは、オブジェクトに関連するアドレスや変数を入力するようにユーザへ促すと共に、入力されたアドレスや変数が当該オブジェクトに関連するように、記憶部52aの内容(より詳細には、オブジェクトのデバイス属性の値)を変更し、表示処理部52cは、ユーザの指示に応じて、各オブジェクトに関連つけられているアドレスや変数を表示する。さらに、編集処理部52bは、プログラムエディタ51の編集処理部51bと同様に、変数に対するデバイスアドレスの入力操作を受け付けると、入力されたアドレスを示すように、データベース54の内容(より詳細には、当該変数に対応するレコードの内容)を変更し、表示処理部52cは、ユーザの指示に応じて、各変数に関連付けられているアドレスを表示できる。
なお、本実施形態に係るグラフィック操作パネル12は、複数の画面(操作画面)を切り換えて表示可能であり、上記編集処理部52bは、操作画面の追加操作や、それぞれの操作画面に対する編集操作を受け付けると共に、各操作画面に関連付けて、当該操作画面に配置された各オブジェクトのデータを、記憶部51aに格納できる。
一方、編集終了指示を受け付けると、データ入出力処理部52dは、記憶部52aの内容に応じた画面データを生成して、記憶装置53に書き込む。これにより、編集されたオブジェクトをグラフィック操作パネル12に生成するための情報が含まれた画面データを生成できる。
これらの結果、設計者は、エディタ装置15の作画エディタ52を操作して、画面上の所望の位置にオブジェクトを配置すると共に、各オブジェクトと変数とを対応付け、変数とデバイスのアドレスとを対応付けるだけで、画面データを作成できる。したがって、グラフィック操作パネル12の表示プログラムを修正する場合に比べて容易に、各グラフィック操作パネル12の表示や操作を決定(変更)でき、制御システム1のユーザ(エディタ装置15を操作する設計者)は、ターゲットシステム2の実情や、グラフィック操作パネル12のオペレータの習熟度、あるいは、ユーザの好みや判断基準に合わせることができる。
さらに、上記各エディタ51・52の編集処理部51b・52bは、例えば、他方のエディタ51・52からのドラッグ&ドロップなどによって、他方のエディタ51・52の画面上に配置されていた部品に対応する部品を自らの画面上に配置するための操作を受け付けることができ、この場合、当該他方の部品に対応する予め定められた部品で、しかも、当該他方の部品に関連付けられている変数に関連付けられた部品を配置することができる。また、上記両エディタ51・52は、互いに同じデータベース54を参照している。これらの結果、両エディタ51・52の双方で、互いに対応する部品をそれぞれ別個に配置し、それらの部品に対応する変数をそれぞれ別個に設定する構成よりも、変数に対応するアドレス等の情報を入力したり、各部品に対応する変数を設定したりする際の手間を大幅に削減できる。
ところで、上記画面データおよびラダープログラムにおいてアクセスの対象となり得るデバイスには、PLC11に接続されているデバイス2a、IO・IF部31を介して接続されているデバイス2a、あるいは、PLC11またはグラフィック操作パネル12内の記憶領域であっても特定の機能が割り当てられたアドレスが含まれており、これらのデバイスの場合には、デバイス2aのデバイスアドレスまたはアドレスが予め定められている。
一方、上記デバイスの中には、これら特定のアドレスが予め定められているデバイスだけではなく、例えば、一時的にデータを格納するためにグラフィック操作パネル12内に確保される記憶領域も含まれており、この場合には、当該データを記憶できれば、当該記憶領域がいずれのアドレスにあってもかまわない。
ただし、この場合に、ユーザが、グラフィック操作パネル12内の空いている記憶領域の中からデバイスに割り当てる記憶領域を決定した後、上記特定のアドレスが定められているデバイスと同様に、変数にアドレスを対応付けるとすると、操作が煩雑になってしまう。
これに対して、本実施形態に係るグラフィック操作パネル12では、上記記憶部26の記憶領域のうち、上記実デバイス領域A1とは別の記憶領域に、自動割付領域(自動割付用の特定領域)A2が設けられており、上記エディタ装置15は、上記特定のアドレスが予め定められていないデバイスについては、当該自動割付領域A2のうち、空いている記憶領域を自動的に割り当て、当該デバイスへアクセスする際には、当該割り当てられた記憶領域にアクセスするように、上記画面データ、ラダープログラムおよびデータベース54の内容(データベース44の内容)を設定できる。
さらに、本実施形態に係るエディタ装置15は、上記記憶領域を割り当てる際、変数の型毎に整列して割り当てており、グラフィック操作パネル12のアプリケーション層41は、制御層42へ指示する際、例えば、図13に示す指示T1γのように、実アドレスでの指定に代えて、各型におけるオフセットでの指定によって、アクセス対象となる記憶領域を特定している。
本実施形態では、上記型の一例として、ビット型(bit型)、整数型(int型)、実数型(float型)および機種依存の最大精度の実数型(real型)が用意されており、図14に示すように、上記自動割付領域A2は、それぞれに対応する領域Ab、Ai、AfおよびArに区分されている。なお、本実施形態では、他にも、タイマ型、カウンタ型、日付型、時刻型、PID型などの型も用意されており、自動割付領域A2には、それぞれに対応する領域も設けられているが、図14では、説明の便宜上、これらの領域を省略している。
一例として、図13に示す指示T1γは、整数型の変数の2番目(オフセット0001)をアクセス対象とする場合を示しており、当該指示T1γのフィールドF12には、型とオフセットとの組み合わせが格納されている。なお、図では、説明の便宜上、フィールドF12の内容を、整数型を示す文字”I”とオフセットを示す文字列とをセパレータを”_”で結んだ文字列として図示しているが、実際には、型とオフセットとの組み合わせを示す数値が記憶されている。
なお、上記オフセットは、アドレスとは独立に設定可能な変数名や変数の識別子とは異なって、ベースとなるアドレス(ベースアドレス)と、その型のサイズとが予め定められていれば、特にデータベース44を参照しなくても、ベースアドレスとサイズとオフセットとに基づいて実際のアドレスを算出可能である。
ここで、制御層42が実際のアドレスを算出してもよいが、本実施形態では、サービス層43が上記ベースアドレスとサイズとオフセットとに基づいて実際のアドレスを算出している。これに伴って、上記指示T1γでは、指示の種類を示すフィールドF11が、変換不要を示す値(図の例では、”直接”)に設定されており、制御層42は、サービス層43への指示T2γを生成する際、図15に示すように、当該指示T2γのフィールドF21に、フィールドF12の内容を、そのまま設定している。
一方、本実施形態に係るサービス層43には、オフセットで記憶領域が指定された指示T2γに基づいて上記自動割付領域A2へアクセスする自動割付領域サービス43cが設けられており、当該自動割付領域サービス43cは、当該指示T2γを受け取ると、当該指示T2γに含まれるオフセットと、予め定められた上記ベースアドレスおよびサイズとに基づいて、上記自動割付領域A2のうち、当該指示T2γがアクセス対象として指定している記憶領域のアドレスを算出する。さらに、自動割付領域サービス43cは、当該記憶領域へアクセスして、当該記憶領域の内容をアプリケーション層41へ返答したり、当該記憶領域の内容をアプリケーション層41からの指示に応じて変更したりする。
これにより、サービス層43は、アプリケーション層41が各型におけるオフセットでアクセス対象を指定しても、何ら支障なく、当該アクセス対象、すなわち、自動割付領域A2内に設けられた記憶領域にアクセスできる。
なお、上記では、自動割付領域A2に割り当てられた記憶領域にアクセスする際、アプリケーション層41が、実アドレスでの指定に代えて、オフセットでの指定によって、アクセス対象となる記憶領域が特定されている場合について説明した。一方、アプリケーション層41が変数の識別子によって指定した場合、制御層42は、実デバイス領域A1がアクセス対象である場合と略同様に、データベース44を参照して、当該変数の識別子に対応する値に変換してサービス層43へ伝える。ただし、アクセス対象が自動割付領域A2内の記憶領域である場合は、データベース44には、実アドレスに代えて、各型におけるオフセットが記憶されている。したがって、制御層42は、上記指定された変数の識別子に対応するオフセットを、上記データベース44から読み出し、当該オフセットをサービス層43へ通知する。これにより、アクセス対象が自動割付領域A2内の記憶領域である場合であっても、アプリケーション層41は、変数の識別子でアクセス対象を特定できる。
以下では、アプリケーション層41が自動割付された記憶領域へアクセスする際に参照するラダープログラムおよび画面データを作成すると共に、アクセス対象の記憶領域を自動割付するための構成について説明する。すなわち、図11に示すように、本実施形態に係るデータベース44・54には、各変数に対応するレコードに、型のフィールドF44が設けられており、デバイスが上記自動割付領域A2内の記憶領域である場合、当該デバイスに対応する変数のレコードのフィールドF44には、そのデバイスの型の情報が格納される。また、当該変数のレコードのフィールドF42には、上記記憶領域を示す情報として、型とオフセットとの組み合わせが格納されている。なお、図では、フィールドF12と同様に、説明の便宜上、フィールドF42の内容を、整数型を示す文字”I”とオフセットを示す文字列とをセパレータを”_”で結んだ文字列として図示している。
なお、上述したように、本実施形態では、変数が実アドレスに対応付けられている場合、その変数のレコードのフィールドF42には、実アドレスが格納されており、この場合、そのレコードの型のフィールドF44には、実アドレスを示す値(実アドレス型を示す値)が格納される。
一方、編集処理部51b・52bは、ラダー図または操作画面上に部品(オブジェクト)またはラダー記号が配置され、当該部品またはラダー記号に関連するアドレスや変数の入力を受け付けた場合、以下のようにして、当該変数の型を設定する。
すなわち、本実施形態に係る編集処理部51b・51aは、新たな部品またはラダー記号の配置操作を受け付けた場合、それに変数が対応しているか否かを判定する。例えば、編集処理部51b・51aの一方から他方への配置操作の場合、元の編集処理部において、既に部品またはラダー記号に変数が対応付けられているので、配置操作を受け付けた編集処理部は、当該部品またはラダー記号に、元の編集処理部において対応付けられていた変数を対応付ける。
一方、パレットからの配置操作を受け付けた場合など、部品またはラダー記号が新規に配置された場合、編集処理部51b・51aは、当該部品またはラダー記号に対応する変数名を入力するように、ユーザへ促す。
変数名が入力された場合、編集処理部51b・52bは、データベース54を参照して、入力された変数名がデータベース54に既に登録されているか否かを判定し、登録されている場合は、上記部品またはラダー記号に、当該変数名を持った変数を対応付ける。
これとは逆に、入力された変数名がデータベース54に登録されていなかった場合、当該変数は、新たな変数である。この場合、編集処理部51b・52bは、当該変数名が、予め定められたパターンにマッチする文字列であるか否かを判定し、マッチした文字列であった場合、上記部品またはラダー記号に対応する型として、当該パターンに予め対応付けられている型を設定する。
本実施形態では、一例として、数値のパターンには、実アドレス型が対応付けられている。また、整数型を示すIなど、型を示す文字から始まるというパターンには、その型が対応付けれている。さらに、モータやランプあるいはスイッチなど、グラフィック操作パネル12またはPLC11に外部接続されるデバイス2aを示す文字として、予め定められた文字(例えば、モータの場合の”M”など)から始まるというパターンには、実アドレス型が対応付けられている。
このように、上記パターンにマッチする文字列が入力された場合には、当該パターンに予め対応付けられた型が設定される。
一方、予め定められたパターンのいずれにもマッチしなかった場合、編集処理部51b・52bは、予め定められている型を初期設定の型として設定する。本実施形態では、プログラムエディタ51の編集処理部51bには、初期設定の型として、自動割付用の型のうちの予め定められた型(例えば、整数型など)が規定されている。これに対して、作画エディタ52の編集処理部52bには、初期設定の型として、実アドレス型が規定されている。
ここで、作画エディタは、例えば、プログラマブル表示器やPLCの機能を持たないグラフィック操作パネルなど、PLCの機能を持たず、PLCに接続することを前提とした制御用表示装置の操作画面を作成するために用いられることが多い。また、PLCの中には、変数での指定を受け付けることができず、アドレスでの指定しか受け付けることができないものが多い。さらに、ラダープログラムを作成する場合と比較すると、あるデバイスが頻繁に使用されることは少なく、一時的にデータを記憶するための記憶領域を必要とする可能性も低い。したがって、当該PLCに接続されたデバイスをアクセス対象とする場合、作画エディタのユーザは、アクセス対象をアドレスで指定することを避けることができず、アドレスでの指定に慣れていることが多い。
この結果、上記パターンにマッチしなかった場合、作画エディタ52の編集処理部52bが、その変数の型を実アドレス型に設定すると、多くの場合、型を変更する必要がなく、ユーザの手間を削減できる。
一方、プログラムエディタは、デバイスに直接接続される制御装置の制御プログラム(ラダープログラムなど)を作成するために用いられるが、作画エディタの場合と比較すると、同じデバイスを、プログラム内で繰り返し使用することが多く、一時的にデータを記憶するための記憶領域を必要とする可能性も高い。したがって、上記作画エディタ52と同様に、初期設定の型を実アドレス型に設定したとすると、型の変更が必要になる可能性が高く、ユーザの手間が増加する虞れがある。
これに対して、本実施形態に係るプログラムエディタ51の編集処理部51bは、上記パターンにマッチしなかった場合、その変数の型を、自動割付用の型のうちの予め定められた型(例えば、整数型など)に設定する。したがって、実アドレス型に設定する場合と比較して、型変更が必要になる可能性を低減でき、ユーザの手間を削減できる。
なお、上記の型設定が誤っていた場合に備えて、本実施形態に係る編集処理部51b・52bは、例えば、部品またはラダー記号の属性編集操作の1つとして、型の変更操作も受け付けることができる。また、上記各編集処理部51b・52bは、例えば、ユーザの操作に応じて、各変数の型をリスト表示することもでき、リスト表示された各変数の型への編集操作(型の変更操作)を受け付けることができる。これにより、上記の型設定が誤っていたとしても、何ら支障なく、正しい型に変更できる。
また、上記編集処理部51b・52bは、例えば、新たに、自動割付用の型の変数を追加する場合、あるいは、既に作成されている変数であっても、その型が、自動割付用の型に変更された場合、グラフィック操作パネル12の記憶部26の自動割付領域A2に当該変数用の記憶領域を割り付ける。
上述したように、本実施形態に係るグラフィック操作パネル12では、自動割付された変数の記憶領域は、変数の型毎に整列して割り当てられている。これを実現するために、本実施形態に係る編集処理部51b・52bは、上記記憶部26の自動割付領域A2のうち、新たに記憶領域を割り付ける変数の型用の領域のうち、既に使用されている記憶領域に連続する領域(例えば、既に使用されている記憶領域の次の領域など)に、当該変数用の記憶領域を確保し、上記データベース54の当該変数のレコードのフィールドF42に、当該確保した記憶領域を示す情報として、型とオフセットとの組み合わせを格納する。
例えば、図11に示す状態では、整数型のオフセットは、I_0000(図示せず)と、I_0001とが使用されている。したがって、この状態で、整数型の変数の記憶領域を自動割付した場合、図16に示すように、I_0002のレコードが追加される。
本実施形態に係る編集処理部51b・52bは、一例として、データベース54を検索することによって、新たに記憶領域を割り付ける変数の型用の領域のうち、既に使用されている記憶領域に連続する領域を探索している。
具体的には、上述したように、データベース54には、既に記憶領域が割り当てられている変数について、型とオフセットとの組み合わせが記憶されている。したがって、編集処理部51b・52bは、型とオフセットとの組み合わせがデータベース54に登録されているか否かで、その組み合わせが示す記憶領域が既に割り当てられているか否かを判定できる。また、編集処理部51b・52bは、新たな記憶領域を割り付ける際、記憶領域が連続するように割り付けている。したがって、編集処理部51b・52bは、データベース54に記憶された型とオフセットとの組み合わせのうち、新たに記憶領域を割り付けようとする変数の型と同じ型で、しかも、オフセットの値が最後の組み合わせを抽出し、そのオフセットの次の値を、当該記憶領域のオフセットとして決定する。一例として、オフセットが連続して大きくなっている場合、次の値は、オフセットの最大値に1を加えた数であり、オフセットが1つ飛ばしで小さくなっている場合、次の値は、オフセットの最小値から2を減らした値である。
なお、記憶部26に配置した状態で整列していれば、編集処理部51b・52bは、例えば、データベース54に登録する段階では、記憶領域を不連続に配置しておき、データベース44に登録する段階で、型毎に整列するようにオフセットを修正してもよい。いずれの場合であっても、記憶部26に配置した状態で整列していれば、同様の効果が得られる。
また、上記では、一例として、基本型(要素数が1の型)について説明したが、本実施形態では、その派生型として、上述した各型の配列も用意されている。この場合、グラフィック操作パネル12のアプリケーション層41およびサービス層43、並びに、エディタ装置15の編集処理部51b・52bは、配列の各要素を、型と、オフセットと、その配列におけるインデックスとの組み合わせで特定している。
ここで、上述したように、本実施形態に係るアプリケーション層41は、自動割付領域A2内の記憶領域へのアクセスを制御層42へ指示する際、その指示T1γのフィールドF12に、型とオフセットとの組み合わせを設定している。
ただし、一般に、型とオフセットとの組み合わせを記憶する際に必要な領域は、実アドレスの記憶に必要な領域よりも小さくなる。したがって、実アドレスでアクセス対象を特定した指示T1αと、型およびオフセットの組み合わせでアクセス対象を特定した指示T1γとで、フィールドF12のサイズを、互いに同じに設定したとすると、指示T1γのフィールドF12のうち、特定の領域(例えば、オフセットの上位ビットに対応する領域など)は、常に同じ値になる。なお、フィールドF21・F42についても同様に、特定の領域が常に同じ値になる。
本実施形態では、フィールドF12・F21のサイズを互いに同じに設定することによって、自動割付するための自動割付領域サービス43cが設けられていない構成と、制御層42のデータ処理を共通にしているにも拘らず、フィールドF12のうち、上記特定の領域に、配列のインデックスを格納することによって、アクセス対象が配列の場合、1つの指示T1によって、自動割付領域サービス43cへ、インデックスをも通知している。これにより、自動割付された記憶領域にアクセスする際の効率を向上できる。
さらに、本実施形態では、フィールドF12・F21の図示しないヘッダ領域のうち、予め設けられていた予約領域に、インデックスまたはサブフィールド(後述)がフィールドF12・F21に含まれているか否か示すフラグが設けられており、上記グラフィック操作パネル12のアプリケーション層41は、インデックスまたはサブフィールド(後述)を指定する場合、当該フラグを真(含まれていることを示す値)に設定し、サービス層43は、当該フラグが真である場合に、インデックスまたはサブフィールドで特定された領域にアクセスしている。これにより、以下の不具合、すなわち、指示が、実アドレスでアクセス対象を特定した指示と、型およびオフセットの組み合わせでアクセス対象を特定した指示との一方であるにも拘らず、サービス層43が他方と誤って処理してしまうという不具合の発生を防止できる。
また、上記では、配列型の場合を例にして説明したが、本実施形態に係るアプリケーション層41およびサービス層43、並びに、エディタ装置15の編集処理部51b・52bは、整数型など、他の型の変数であっても、その変数の記憶領域が複数のサブフィールドに分割されていれば、グラフィック操作パネル12のアプリケーション層41およびサービス層43、並びに、エディタ装置15の編集処理部51b・52bは、上記特定の領域に、アクセス対象とするサブフィールドを示す識別子を格納している。これにより、制御層42の互換性を維持したまま、当該サブフィールドへアクセスする際の効率を向上できる。
なお、上記では、自動割付される記憶領域が型毎に整列されている場合を例にして説明したが、これに限るものではない。自動割付領域A2内の空き領域に、特定のアドレスには予め対応付けられていないデバイスに対応するデバイス用の記憶領域を自動割付すると共に、当該変数の識別子と当該記憶領域のアドレスを示すアドレス情報(例えば、型とオフセットとの組み合わせなど)との対応関係を、上記データベース44に記憶してもよい。また、上記では、自動割付された型の変数に対応する記憶領域を、型とオフセットとの組み合わせで特定しているが、これに限るものではない。当該記憶領域のアドレスを示すアドレス情報で特定されれば、例えば、アドレス自体であってもよい。
これらの構成であっても、特定のアドレスに予め対応付けられているデバイスの変数を生成する場合と同様の手順で特定のアドレスには予め対応付けられていないデバイスの変数を生成する構成とは異なって、当該変数に対応するアドレスを指定しなくても、データ処理装置に、当該自動割付された記憶領域にアクセスさせることができ、当該変数を生成する際の手間を削減できる。
ただし、本実施形態のように、自動割付される記憶領域が型毎に整列されていれば、例えば、各記憶領域が、それぞれの型に拘らず、生成された順に並べられている構成と比較して、記憶領域の使用効率、または、自動割付領域サービス43cが各記憶領域へアクセスする際の効率を向上できる。