(58)【調査した分野】(Int.Cl.,DB名)
プロセッサとメモリとネットワークインターフェイスとを含む第1のプログラマブルロジックコントローラで実行される実行可能プログラム、を生成するサポート装置であって、
前記第1のプログラマブルロジックコントローラで扱われるデータ別に変数を定義する情報を受け付ける第1の入力手段と、
前記第1のプログラマブルロジックコントローラで実行される処理を、定義された変数を用いて記述したソースプログラムを受け付ける第2の入力手段と、
前記第1のプログラマブルロジックコントローラで扱われる第1のデータを示す第1の変数と、前記第1のプログラマブルロジックコントローラとネットワーク接続された第2のプログラマブルロジックコントローラで扱われる第2のデータを示す第2の変数とがネットワークを介して対応付けられている場合に、前記第1の変数に関連付けて前記第2のプログラマブルロジックコントローラの種別を特定する情報を受け付ける第3の入力手段と、
前記変数を定義する情報および前記ソースプログラムを用いて前記実行可能プログラムを生成する生成手段とを備え、前記生成手段は、前記第2のプログラマブルロジックコントローラの種別に応じて、前記第1の変数に対応してメモリ上に確保される前記第1のデータのデータ構造を適合化する、サポート装置。
前記実行可能プログラムは、前記メモリに格納された第1のデータに対する出力要求に応答して、前記第1のプログラマブルロジックコントローラにおける前記第1のデータの型に対応するデータ構造に変換した上で、変換後の第1のデータを出力する命令を含む、請求項2に記載のサポート装置。
プロセッサとメモリとネットワークインターフェイスとを含む第1のプログラマブルロジックコントローラで実行される実行可能プログラムを生成するサポートプログラムであって、前記サポートプログラムは、コンピュータを、
前記第1のプログラマブルロジックコントローラで扱われるデータ別に変数を定義する情報を受け付ける第1の入力手段と、
前記第1のプログラマブルロジックコントローラで実行される処理を、定義された変数を用いて記述したソースプログラムを受け付ける第2の入力手段と、
前記第1のプログラマブルロジックコントローラで扱われる第1のデータを示す第1の変数と、前記第1のプログラマブルロジックコントローラとネットワーク接続された第2のプログラマブルロジックコントローラで扱われる第2のデータを示す第2の変数とがネットワークを介して対応付けられている場合に、前記第1の変数に関連付けて前記第2の
プログラマブルロジックコントローラの種別を特定する情報を受け付ける第3の入力手段と、
前記変数を定義する情報および前記ソースプログラムを用いて前記実行可能プログラムを生成する生成手段として機能させ、前記生成手段は、前記第2のプログラマブルロジックコントローラの種別に応じて、前記第1の変数に対応してメモリ上に確保される前記第1のデータのデータ構造を適合化する、サポートプログラム。
【発明を実施するための形態】
【0019】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【0020】
<A.システム構成>
まず、本実施の形態に係るサポート装置が使用および運用を支援するPLCを含むシステムについて説明する。
【0021】
図1は、本発明の実施の形態に係るPLCシステムSYSを示す模式図である。本実施の形態に係るPLCシステムSYSは、ネットワークNWを介してネットワーク接続された複数のPLC(PLC1,PLC2,PLC3)を含む。これらのPLCの種別は必ずしも同一ではないとする。
【0022】
本明細書において「PLCの種別」とは、主として、プログラムによるデータの書込み、読出し、更新などの処理において利用(参照)されるデータ構造が同一であるか否かという観点を示すものである。例えば、2つのPLCの間で、いずれのデータ型であっても、一方のPLCが書込んだデータを他方のPLCが本来のデータの意味で解釈できる場合には、「PLCの種別が同一」であるとする。これに対して、あるデータ型について、一方のPLCが書込んだデータを他方のPLCが本来のデータの意味で解釈できない場合には、「PLCの種別が同一ではない(種別が別である)」であるとする。言い換えれば、あるPLCがネットワークNWを介して自装置のデータを送信した場合に、別のPLCがその送信されたデータを受信して正しく解釈できるか否かという観点に着目して、「PLCの種別」が判断される。
【0023】
以下の説明では、典型例として、PLC1,PLC2,PLC3の間では、種別が異なっているものとする。しかしながら、PLC1とPLC2との間、PLC2とPLC3との間、およびPLC3とPLC1との間では、ネットワークNWを介してデータを遣り取りする必要があるものとする。本実施の形態に係るサポート装置200は、このような状況下において、PLC間でのデータの遣り取りを適合化する。
【0024】
各PLCは、プログラムを実行する主体である処理ユニット10と、処理ユニット10などへ電力を供給する電源ユニット12と、フィールドからの信号を遣り取りするIO(Input/Output)ユニット14とを含む。IOユニット14は、処理ユニット10とシステムバス11を介して接続されている。典型的には、IOユニット14は、フィールド機器である検出センサー6から入力信号を取得し、また処理ユニット10でのプログラムの実行結果に応じてフィールド機器であるリレー7を駆動する。
【0025】
サポート装置200は、PLCで実行されるプログラム(以下「実行可能プログラム」とも称す)を生成する機能とともに、接続先のPLCの運転状態や各種データの値などをモニタする機能を有している。さらに、サポート装置200は、ユーザによる実行可能プログラムの生成を支援するため、デバック機能やシミュレーション機能を有していてもよい。
【0026】
<B.ハードウェア構成>
次に、
図1に示すPLCシステムSYSを構成するPLCおよびサポート装置200のハードウェア構成について説明する。
【0027】
(b1:PLCのハードウェア構成)
図2は、本発明の実施の形態に係るPLCの処理ユニット10のハードウェア構成を示す模式図である。
図2を参照して、処理ユニット10は、プロセッサ100と、チップセット102と、メインメモリ104と、不揮発性メモリ106と、システムタイマ108と、システムバスコントローラ120と、ネットワークコントローラ140と、USBコネクタ110とを含む。チップセット102と他のコンポーネントとの間は、各種のバスを介してそれぞれ結合されている。
【0028】
プロセッサ100およびチップセット102は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、プロセッサ100は、チップセット102から内部クロックに従って順次供給される命令コードを解釈して実行する。チップセット102は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、プロセッサ100に必要な命令コードを生成する。さらに、チップセット102は、プロセッサ100での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。
【0029】
処理ユニット10は、メモリとして、メインメモリ104および不揮発性メモリ106を有する。
【0030】
メインメモリ104は、揮発性の記憶領域であり、処理ユニット10への電源投入後にプロセッサ100で実行されるべき各種プログラムを格納する。メインメモリ104は、プロセッサ100による各種プログラムの実行時の作業用メモリとしても使用される。このようなメインメモリ104としては、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)といったデバイスが用いられる。
【0031】
不揮発性メモリ106は、リアルタイムOS(Operating System)、システムプログラム、実行可能プログラムといった各種プログラム(モジュール)、およびシステム設定パラメータといったデータを不揮発的に格納する。これらのプログラムやデータは、必要に応じて、プロセッサ100がアクセスできるようにメインメモリ104にコピーされる。このような不揮発性メモリ106としては、フラッシュメモリのような半導体メモリを用いることができる。あるいは、ハードディスクドライブのような磁気記録媒体や、DVD−RAM(Digital Versatile Disk Random Access Memory)のような光学記録媒体などを用いることもできる。
【0032】
システムタイマ108は、一定周期ごとに割り込み信号を発生してプロセッサ100に提供する。典型的には、ハードウェアの仕様によって、複数の異なる周期でそれぞれ割り込み信号を発生するように構成されるが、OS(Operating System)やBIOS(Basic Input Output System)などによって、任意の周期で割り込み信号を発生するように設定することもできる。
【0033】
処理ユニット10は、通信インターフェイスとして、システムバスコントローラ120およびネットワークコントローラ140を有する。これらの通信インターフェイスは、出力データの送信および入力データの受信を行う。
【0034】
システムバスコントローラ120は、システムバス11を介したデータの遣り取りを制御する。より具体的には、システムバスコントローラ120は、DMA(Dynamic Memory Access)制御回路122と、システムバス制御回路124と、バッファメモリ126とを含む。システムバスコントローラ120は、システムバスコネクタ130を介してシステムバス11と内部的に接続される。
【0035】
バッファメモリ126は、システムバス11を介してIOユニット14へ出力されるデータの送信バッファ、および、システムバス11を介してIOユニット14から入力されるデータの受信バッファとして機能する。
【0036】
DMA制御回路122は、メインメモリ104からバッファメモリ126への出力データの転送、および、バッファメモリ126からメインメモリ104への入力データの転送を行う。
【0037】
システムバス制御回路124は、システムバス11に接続されるIOユニット14との間で、バッファメモリ126の出力データを送信する処理および入力データを受信してバッファメモリ126に格納する処理を行う。
【0038】
ネットワークコントローラ140は、ネットワークNWを介した他のPLCとの間のデータの遣り取りを制御する。すなわち、ネットワークコントローラ140は、用いられるネットワーク規格に従い、出力データの送信および入力データの受信を制御する。一例として、OSI参照モデルの物理層およびデータリンク層としてイーサネット(登録商標)を採用し、OSI参照モデルのネットワーク層およびトランスポート層としてTCP/IPまたはUDP/IPを採用し、OSI参照モデルのセッション層およびプレゼンテーション層として産業用共通プロトコル(CIP:Common Industrial Protocol)を採用したような構成が採用される。
【0039】
上述のようなネットワーク規格に限られることなく、各種の産業用イーサネット(登録商標)を用いることができる。産業用イーサネット(登録商標)としては、たとえば、EtherCAT(登録商標)、Profinet IRT、MECHATROLINK(登録商標)−III、Powerlink、SERCOS(登録商標)−III、CIP Motionなどが知られている。
【0040】
バッファメモリ146は、ネットワークNWを介して他のPLCへ出力されるデータの送信バッファ、および、ネットワークNWを介して他のPLCから入力されるデータの受信バッファとして機能する。
【0041】
DMA制御回路142は、メインメモリ104からバッファメモリ146への出力データの転送、および、バッファメモリ146からメインメモリ104への入力データの転送を行う。
【0042】
ネットワーク制御回路144は、ネットワークNWに接続される他のPLCとの間で、バッファメモリ146の出力データを送信する処理および入力データを受信してバッファメモリ146に格納する処理を行う。典型的には、ネットワーク制御回路144は、ネットワークNWにおける物理層およびデータリンク層の機能を提供する。
【0043】
USBコネクタ110は、サポート装置200と処理ユニット10とを接続するための通信インターフェイスである。典型的には、サポート装置200から転送される、処理ユニット10のプロセッサ100で実行可能なプログラムなどは、USBコネクタ110を介してPLCに取込まれる。
【0044】
(b2:サポート装置のハードウェア構成)
図3は、本発明の実施の形態に係るサポート装置200のハードウェア構成を示す模式図である。
図3を参照して、サポート装置200は、典型的には、汎用のコンピュータで構成される。なお、メンテナンス性の観点からは、可搬性に優れたノート型のパーソナルコンピュータが好ましい。
【0045】
図3を参照して、サポート装置200は、OSを含む各種プログラムを実行するCPU201と、BIOSや各種データを格納するROM(Read Only Memory)202と、CPU201でのプログラムの実行に必要なデータを格納するための作業領域を提供するメモリRAM203と、CPU201で実行されるプログラムなどを不揮発的に格納するハードディスク(HDD)204とを含む。
【0046】
サポート装置200は、さらに、ユーザからの操作を受け付けるキーボード205およびマウス206と、情報をユーザに提示するためのモニタ207とを含む。サポート装置200は、PLC(処理ユニット10)などと通信するための通信インターフェイス(IF)209を含む。
【0047】
後述するように、サポート装置200で実行される各種プログラムは、CD−ROM300に格納されて流通する。このCD−ROM300に格納されたプログラムは、CD−ROM(Compact Disk-Read Only Memory)ドライブ208によって読取られ、ハードディスク(HDD)204などへ格納される。あるいは、上位のホストコンピュータなどからネットワークを通じてプログラムをダウンロードするように構成してもよい。
【0048】
<C.ソフトウェア構成>
(c1:PLCのソフトウェア構成)
次に、PLC(処理ユニット10)が各種機能を提供するためのソフトウェア構成について説明する。
【0049】
図4は、本発明の実施の形態に係るPLCの処理ユニット10に実装されるソフトウェア構成を示す模式図である。
図4に示すソフトウェアに含まれる命令コードは、適切なタイミングで読出され、処理ユニット10のプロセッサ100へ提供されて実行される。
【0050】
図4を参照して、処理ユニット10には、リアルタイムOS190上にPLCでの処理に必要なプログラムが実装される。
【0051】
リアルタイムOS190は、処理ユニット10のコンピュータアーキテクチャに応じて設計されており、プロセッサ100がPLCでの処理に必要なプログラムを実行するための基本的な実行環境を提供する。より具体的には、リアルタイムOS190は、複数のプログラムを時間の経過に従い切り替えて実行するための環境を提供する。リアルタイムOS190は、制御サイクル開始の割り込みが発生すると、プロセッサ100での実行対象を、割り込み発生時点で実行中のプログラムからスケジューラ160に切り替える。
【0052】
本実施の形態に係る実行可能プログラムとしては、基本的には、ユーザ定義アプリケーション170が想定されている。ユーザ定義アプリケーション170は、サポート装置200によって生成され、サポート装置200から処理ユニット10へ転送される。なお、ユーザ定義アプリケーション170の実行に必要な一部のモジュール(あるいは、ライブラリ)については、処理ユニット10に予め格納されており、これらを適切なタイミングで呼び出して利用する形態(シンボリックリンク)を採用してもよい。この場合、サポート装置200は、一部のモジュールを含まない実行可能プログラムを生成することになる。あるいは、ユーザ定義アプリケーション170および命令実行モジュール180を含めて、実行可能プログラムとしてもよい。
【0053】
より具体的には、処理ユニット10には、スケジューラ160と、ユーザ定義アプリケーション170と、入力処理モジュール172と、出力処理モジュール174と、通信処理モジュール176と、その他のシステムモジュール178と、命令実行モジュール180と、メモリマネジャー184と、データ構造変換モジュール186とが実装される。
【0054】
スケジューラ160は、ユーザ定義アプリケーション170、入力処理モジュール172、出力処理モジュール174、および通信処理モジュール176について、実行開始タイミングや処理中断を制御することで、各実行サイクルでの処理を保証する。より具体的には、1つの制御サイクル内ですべての処理を完了できないことも多く、この場合には、スケジューラ160は、実行すべき処理の優先度などに応じて、各制御サイクルにおいて実行を完了すべき処理と、複数の制御サイクルに亘って実行してもよい処理とを区分する。すなわち、スケジューラ160は、各制御サイクル期間内において、より高い優先度が与えられているプログラムほど先に実行する。
【0055】
ユーザ定義アプリケーション170は、ユーザがその制御目的に応じて作成する。すなわち、PLCシステムSYSを用いて制御する対象のライン(プロセス)などに応じて、任意に設計されるプログラムである。より具体的には、ユーザ定義アプリケーション170は、サポート装置200などにおいて、ラダー言語などによって記述されたソースプログラムがコンパイルされることで生成される。生成された実行可能(オブジェクト)プログラム形式のユーザ定義アプリケーション170は、サポート装置200から接続ケーブル13を介して処理ユニット10へ転送され、不揮発性メモリ106などに格納される。
【0056】
ユーザ定義アプリケーション170は、シーケンス処理およびモーション演算などの特殊処理を含み得る。ユーザ定義アプリケーション170は、命令実行モジュール180と協働して、ユーザ定義アプリケーション170に含まれる処理を実現する。より具体的には、ユーザ定義アプリケーション170は、命令実行モジュール180によって提供される命令や関数などを利用することで、プログラムされた動作を実現する。
【0057】
命令実行モジュール180は、ユーザ定義アプリケーション170に定義された何らかのシーケンス命令あるいは何らかのファンクション命令が実行されるときに呼び出される。
【0058】
入力処理モジュール172は、システムバスコントローラ120によって受信された入力データを、ユーザ定義アプリケーション170が使用するのに適した形式に再配置する。出力処理モジュール174は、ユーザ定義アプリケーション170の実行によって生成された出力データを、システムバスコントローラ120へ転送するのに適した形式に再配置する。
【0059】
通信処理モジュール176は、ネットワークコントローラ140による他のPLCとの間の通信処理のタイミングを制御する。通信処理モジュール176は、さらに、ネットワークコントローラ140が他のPLCから受信された入力データをユーザ定義アプリケーション170が使用するのに適した形式に再配置するとともに、ユーザ定義アプリケーション170の実行によって生成された出力データを、ネットワークコントローラ140へ転送するのに適した形式に再配置する。
【0060】
その他のシステムモジュール178は、
図4に個別に示したプログラム以外の、PLC1の各種機能を実現するための1つまたは複数のモジュールをまとめて示したものである。
【0061】
メモリマネジャー184は、メインメモリ104に格納されるデータを管理する。
データ構造変換モジュール186は、他のPLCとの間でデータ交換を行うために、データ構造をPLCの種別毎に定義されるデータ構造に適合させる。すなわち、データ構造変換モジュール186は、自PLCが扱うデータのデータ構造を他のPLCが扱うデータ構造に変換する。
【0062】
上述した、実行可能プログラム(ユーザ定義アプリケーション170単体またはユーザ定義アプリケーション170および命令実行モジュール180)は、記憶手段であるメインメモリ104および/または不揮発性メモリ106に格納される。
【0063】
(c2:サポート装置のソフトウェア構成)
次に、サポート装置200が各種機能を提供するためのソフトウェア構成について説明する。
【0064】
図5は、本発明の実施の形態に係るサポート装置200に実装されるソフトウェア構成を示す模式図である。
図5に示すソフトウェアに含まれる命令コードは、適切なタイミングで読出され、サポート装置200のCPU201へ提供されて実行される。
【0065】
図5を参照して、サポート装置200には、OS240、プログラミングアプリケーション250およびネットワーク設定アプリケーション280が実装される。サポート装置200ではOS240が実行され、プログラミングアプリケーション250およびネットワーク設定アプリケーション280を実行可能な環境が提供される。本実施の形態に係るサポート装置200を実現するためのサポートプログラムは、少なくともプログラミングアプリケーション250を含む。
【0066】
プログラミングアプリケーション250は、エディタ252と、コンパイラ254と、デバッガ256と、GUI(Graphical User Interface)モジュール258と、シミュレータ260と、データ格納部270とを含む。プログラミングアプリケーション250に含まれるそれぞれのモジュールは、典型的には、CD−ROM300に格納された状態で流通して、サポート装置200にインストールされる。
【0067】
エディタ252は、実行可能プログラム(ソースプログラム274)を作成するための入力および編集といった機能を提供する。より具体的には、エディタ252は、ユーザがキーボード205やマウス206を操作してユーザ定義アプリケーション170のソースプログラム274を作成する機能に加えて、作成したソースプログラム274の保存機能および編集機能を提供する。
【0068】
コンパイラ254は、ユーザ定義アプリケーション170のソースプログラム274をコンパイルして、処理ユニット10のプロセッサ100で実行可能(オブジェクト)プログラム形式の実行可能プログラムを生成する機能を提供する。
【0069】
デバッガ256は、実行可能プログラム(ソースプログラム274)に対してデバッグを行うための機能を提供する。このデバッグの内容としては、ソースプログラム274のうちユーザが指定した範囲を部分的に実行する、ソースプログラム274の実行中における変数値の時間的な変化を追跡する、といった動作を含む。
【0070】
GUIモジュール258は、ユーザが各種データやパラメータなどを入力するためのユーザインターフェイスを提供する機能を有する。
【0071】
シミュレータ260は、サポート装置200内にPLC1の処理ユニット10でのプログラムの実行をシミュレーションする環境を構築する。
【0072】
データ格納部270は、ユーザが作成したソースプログラム274やプログラムの実行に必要な変数設定272を格納する。
【0073】
ネットワーク設定アプリケーション280は、PLC間のデータの遣り取りに係る設定を行うための機能を提供する。ネットワーク設定アプリケーション280は、エディタ282と、コンフィグレータ284と、関連付けモジュール286と、データ格納部290とを含む。ネットワーク設定アプリケーション280に含まれるそれぞれのモジュールは、典型的には、CD−ROM300に格納された状態で流通して、サポート装置200にインストールされる。
【0074】
エディタ282は、PLC間で遣り取りされるデータ(変数)の設定情報の入力および編集といった機能を提供する。より具体的には、エディタ282は、ユーザがキーボード205やマウス206を操作して、PLC間で遣り取りされる変数などを指定する機能に加えて、入力された設定情報の保存機能および編集機能を提供する。また、エディタ282は、ネットワーク接続されたPLCからその変数設定などを取得(ダウンロード)することもできる。
【0075】
コンフィグレータ284は、PLC間でデータを遣り取りするための設定を対象のPLCへ設定する機能を提供する。このコンフィグレータ284によって各PLCへ設定される情報をコネクション設定296とも称す。
【0076】
関連付けモジュール286は、遣り取りされるデータ毎に、対象のPLC間の関連付けを行う機能を提供する。すなわち、関連付けモジュール286は、PLCの別にコネクション設定296を生成する。
【0077】
データ格納部290は、PLCから取得した変数の情報を示す変数設定292,294およびコネクション設定296を格納する。
【0078】
<D.変数設定>
上述したように、本実施の形態に係るPLC(処理ユニット10)は、プロセッサ100と、メインメモリ104および不揮発性メモリ106と、ネットワークインターフェイスであるネットワークコントローラ140とを含み、サポート装置200で生成された実行可能プログラムを実行する。この実行可能プログラムは、変数プログラムであり、サポート装置200で作成されるソースプログラム274がコンパイルすることで生成される。このソースプログラム274では、組み合わせられる命令を記述するために、変数を用いて各データが指定される。そのため、サポート装置200は、PLCで扱われるデータ別に変数を定義する情報を受け付ける。より具体的には、ユーザは、サポート装置200によって提供されるユーザインターフェイスを介して、実行可能プログラムで使用する変数、およびその変数に対応するデータの型を定義する。
【0079】
図6は、本発明の実施の形態に係るサポート装置200が提供する変数を定義するためのユーザインターフェイスの一例である。
【0080】
図6を参照して、ユーザインターフェイスである変数定義画面400は、変数やデータ型を定義するための領域410と、後述する他のPLCとの間でネットワークNWを介して遣り取りするための設定を入力するための領域420とを含む。
図6には、変数やデータ型の定義と他のPLCとの間のデータ供給に係るネットワーク設定とを同一のユーザインターフェイスで提供する例を示すが、これらの入力形態は任意に設計すればよく、領域410に係る入力画面と、領域420に係る入力画面とを別々に提供するようにしてもよい。
【0081】
より具体的には、領域410は、変数(名称)を入力するためのカラム412と、対応する変数のデータの型を入力するためのカラム414と、データ型が集合体(配列型変数または構造体変数)である場合に対応する変数(要素/メンバ)が集合体のうちいずれの位置に対応する変数が格納されるかを入力するためのカラム416および418を含む。すなわち、対応する変数のデータの開始点がバイト(8ビット)とビットとの組み合わせで表現され、バイト数およびビット数がそれぞれカラム416および418へ入力される。
【0082】
カラム412に入力される変数(名称)は、ユーザが任意に決定することができる。
カラム414に入力されるデータ型としては、その使用目的に応じて予め用意された複数種類から選択される。
図6には、変数「StrA」に対応付けて「STRUCT」が指定されており、これは、構造体変数を意味する。また、変数「mb」および「mi」に対応付けてそれぞれ「BOOL」および「INT」が指定されており、これらはそれぞれ「ビット」および「符号付き1ワードバイナリー」を意味する。
【0083】
データ型としては、上述するもの以外に、SINT(符号付き1バイトバイナリー)、INT(符号付き1ワードバイナリー)、DINT(符号付き2ワードバイナリー)、LINT(符号付き4ワードバイナリー)、USINT(符号なし1バイトバイナリー)、UINT(符号なし1ワードバイナリー)、UDINT(符号なし1ワードバイナリー)、ULINT(符号なし4ワードバイナリー)、REAL(浮動小数点2ワード)、LREAL(浮動小数点4ワード)、BYTE(16進1バイト)、WORD(16進1ワード)、DWORD(16進2ワード)、LWORD(16進4ワード)などを指定することができる。なお、各PLCが上述したデータ型のすべてをサポートしている必要はなく、その一部のみをサポートしている場合もある。
【0084】
上述のように定義された変数を用いて、ユーザは、ソースプログラム274を作成することができる。すなわち、サポート装置200は、PLCで実行される処理を、定義された変数を用いて記述したソースプログラム274を受け付ける。
【0085】
<E.ネットワークを介したデータの遣り取り>
(e1:概要)
次に、本実施の形態に係るPLCシステムSYSでは、ネットワークNWを介して、PLC間でデータを遣り取りすることが可能である。このデータを遣り取りする際にも、変数を用いて対象のデータを特定することができる。
【0086】
上述のサポート装置200で実行されるネットワーク設定アプリケーション280がPLC間で遣り取りされるデータを示す変数の対応関係を決定し、それぞれのPLCに設定する。すなわち、
図5に示すコネクション設定296が決定され、それぞれのPLCに対して転送される。
【0087】
まず、PLC間で遣り取りされるデータ(変数値)は、予めネットワーク公開の対象であること(ネットワーク公開属性)が設定される。具体的には、上述の
図6において、領域420に含まれるカラム422には、ネットワーク公開属性として、「出力」、「入力」、「公開のみ」といった値が設定される。これにより、PLCの内部で使用されているデータ(変数値)がネットワーク接続された他のPLCからアクセス可能になる。なお、このネットワーク公開できる変数(ネットワーク変数)は、実行可能プログラムにおいてグローバル変数として使用されているものに限定してもよい。
【0088】
この公開先の情報は、後述のPLCの種別を特定する際にも利用される。すなわち、サポート装置200は、PLC1で用いられる変数に関連付けてPLC2の種別を特定する情報を受け付ける。
【0089】
また、領域420に含まれるカラム424には、対応する変数の公開先を特定するための情報が格納される。この公開先を特定するための情報としては、典型的には、IPアドレスやMACアドレスが用いられる。あるいは、各PLCが保有する識別情報(機種情報やメーカ情報を含む)であってもよい。
【0090】
ネットワークNW上に公開された変数(変数の名称)は「タグ」とも称され、この変数を指定してデータを遣り取りする機能は「タグ通信」機能とも称される。さらに、PLCで実行される実行可能プログラムが扱う変数に代えて、同一の変数値に対して、ネットワークNW上で遣り取りするための「別名」としての変数値を設定することもできる。このような別名を設定する機能は「ネットワークエイリアス」とも称される。このようなネットワークエイリアスを用いることで、PLC内部の変数を外部から隠蔽することができる。
【0091】
図7は、本発明の実施の形態に係るPLCシステムSYSにおけるネットワークを介したデータの遣り取りを説明するための図である。より具体的には、
図7(a)は、PLC内部の変数がそのままネットワーク変数として利用される場合の処理を示し、
図7(b)は、ネットワークエイリアスを設定した場合の処理を示す。
【0092】
図7(a)を参照して、PLC1においては、内部変数「StrA」が定義されるとともに、内部変数「StrA」に対して、ネットワーク公開属性および公開先(この例では、PLC2)が設定される。一方、PLC2においては、ネットワークNWを介して受信するデータに対して内部変数「B_input」が定義されるとともに、内部変数「StrA」に対して、ネットワーク公開属性が設定される。また、PLC1およびPLC2には、内部変数「StrA」と内部変数「B_input」との対応関係がそれぞれ設定されているものとする。これらの対応関係の設定方法については、後述する。
【0093】
上述のような変数の定義やネットワーク属性の設定などによって、PLC1で順次更新される内部変数「StrA」に格納される値(データ)は、PLC2においては、その内部変数「B_input」として内部処理に利用することが可能である。
【0094】
さらに、
図7(b)には、PLC1の内部変数「StrA」をネットワーク変数「Tag1」としてネットワーク公開する例を示す。このとき、ネットワーク変数を定義するためのネットワーク変数テーブルに、内部変数「StrA」がネットワーク変数「Tag1」に対応することが定義されるとともに、対応するネットワーク公開属性(この例では「出力」)が設定される。PLC2は、ネットワークNW上でネットワーク変数「Tag1」を指定することで、PLC1の内部変数「StrA」に格納される値(データ)を内部処理に利用することができる。
【0095】
(e2:設定)
次に、上述のようなPLC間でのデータの遣り取りに必要な対応関係(名前解決)の設定について説明する。
【0096】
図8は、本発明の実施の形態に係るPLCシステムSYSにおけるPLC間でのデータの遣り取りに必要な対応関係の設定方法を説明するための図である。サポート装置200で実行されるプログラミングアプリケーション250は、それぞれPLC1およびPLC2で使用される変数を定義する変数設定1および変数設定2を保持しているものとする。プログラミングアプリケーション250は、それぞれのPLCの変数設定292,294を比較して変数間の対応関係を決定し、その対応関係を反映したコネクション設定296を生成する。
【0097】
説明の便宜上、
図8においては、単一のサポート装置200において2つのプログラミングアプリケーション250が実行される例を示すが、PLCの別にサポート装置200が用意される場合には、各サポート装置200においてプログラミングアプリケーション250が実行される。この場合には、公知の方法を用いて、それぞれのPLCの変数設定がネットワーク設定アプリケーション280へ出力(import)される。
【0098】
そして、ネットワーク設定アプリケーション280は、生成したコネクション設定296に基づいて、PLC1およびPLC2のそれぞれに対して、内部変数とネットワーク変数との対応関係を定義するタグデータリンク設定を出力(ダウンロード)する。
【0099】
PLC1およびPLC2は、ネットワーク設定アプリケーション280から受信したタグデータリンク設定に従ってネットワークを構成することで、他のPLCとの間でデータを遣り取りできる。なお、タグデータリンク設定は、タグ(変数/変数の名称)、タグセット(タグ同士の対応関係)、コネクション設定などを含む。
【0100】
このように、サポート装置200は、PLC1で扱われるデータを示す変数(タグ)と、PLC1とネットワーク接続されたPLC2で扱われるデータを示す変数(タグ)とをネットワークNWを介して対応付けるための対応関係を受け付ける。そして、サポート装置200は、この対応関係に基づいて、データを遣り取りするそれぞれのPLCについてのネットワークを設定する。
【0101】
<F.データ構造の相違>
上述のようなネットワークNWを介したデータの遣り取りにおいて、対象のデータを各PLCの内部で扱うデータのまま他のPLCへ送信されるような形態を考える。すなわち、PLC内部のメモリデータそのものが他のPLCへ渡される。この場合、PLC間における扱うデータ構造(データフォーマット)の相違によって、データを適切に遣り取りできない場合がある。
図9には、このようなデータ構造の相違の一例を示す。
【0102】
図9は、本発明の実施の形態に係るPLCシステムSYSにおけるPLC間におけるデータ構造の相違の一例を示す図である。
図9には、集合体のデータ型の例を示すが、これに限られることなく、様々なデータ構造の相違が考えられる。後述するように、本実施の形態に係るサポート装置200は、このようなデータ構造の相違を適合化した実行可能プログラムを生成する。
【0103】
図9(a)には、構造体変数が定義されるとともに、BOOL(ビット)である変数aおよび変数bがそのメンバとして定義される例を示す。例えば、PLC1では、その構造体変数として2ワード分の領域が確保されるとともに、1ワード目の最下位ビットに変数aの値が格納され、2ワード目の最下位ビットに変数bの値が格納されるものとする。
【0104】
これに対して、同様の構造体変数を定義した場合であっても、PLC2およびPLC3内部のメモリデータは異なったフォーマットであるとする。例えば、PLC2では、その構造体変数として2ワード分の領域が確保されるとともに、1ワード目の最下位ビットに変数aの値が格納され、当該最下位ビットの次に位置するビットに変数bの値が格納されるものとする。また、PLC3では、その構造体変数として1ワード分の領域が確保されるとともに、最下位ビットに変数aの値が格納され、当該最下位ビットの次に位置するビットに変数bの値が格納されるものとする。
【0105】
図9(b)には、構造体変数が定義されるとともに、INT(符号付き1ワードバイナリー)である変数w0がそのメンバとして定義される例を示す。例えば、PLC1では、その構造体変数として1ワード分の領域が確保されるとともに、その全体に変数w0のデータ値(1ワード)が格納されるものとする。また、PLC3においても同様のデータ構造が採用される。
【0106】
これに対して、PLC2では、その構造体変数として2ワード分の領域が確保されるとともに、1ワード目に変数w0のデータ値(1ワード)が格納され、2ワード目はnull(あるいは、ダミーデータ)になるものとする。
【0107】
図9(c)には、構造体変数が定義されるとともに、INT(符号付き1ワードバイナリー)である変数w0およびDINT(符号付き2ワードバイナリー)である変数d0がそのメンバとして定義される例を示す。例えば、PLC1では、その構造体変数として4ワード分の領域が確保されるとともに、1ワード目に変数w0のデータ値(1ワード)が格納され、2ワード目はnullになり、3ワード目および4ワード目に変数d1のデータ値(2ワード)が格納されるものとする。また、PLC2においても同様のデータ構造が採用される。
【0108】
これに対して、PLC3では、その構造体変数として3ワード分の領域が確保されるとともに、1ワード目に変数w0のデータ値(1ワード)が格納され、2ワード目および3ワード目に変数d1のデータ値(2ワード)が格納されるものとする。
【0109】
上述したように、PLC1,PLC2,PLC3の間では、一部のデータ型のデータ構造については共通であるが、他のデータ型のデータ構造については相違しているような状況が生じる。
【0110】
<G.データ構造の適合化処理>
上述したように、本実施の形態に係るPLCの処理ユニット10は、タグ名を指定してネットワーク変数の読出し/書込みを行う機能を有する。処理ユニット10(
図4の通信処理モジュール176)は、変数にデータ値を書込むときには、変数のデータ型やチェックビット(構造体変数の場合は、CRC:Cyclic Redundancy Check)をチェックして、意図しないデータ型へのデータ値の書込みを防止する機能を有する。なお、構造体変数のCRCは、構造体変数のデータ型の情報に基づいて動的に算出される。また、処理ユニット10(
図4の通信処理モジュール176)は、受信したメッセージについてのCRCチェックを行う。
【0111】
上述したように、PLC間でデータが遣り取りされる場合には、PLC内部の変数がそのままネットワーク変数として送出される。そのため、PLC間でデータ構造が異なっていると、上述のようなデータ型やCRCのチェックでエラーが発生する。また、データ構造が異なっているため、PLC間で本来的に意図されたデータの遣り取りを行うことができない。
【0112】
そこで、本実施の形態に係るサポート装置200は、上述したようなデータ構造(データのアライメント)の相違を吸収して、ユーザが意識しなくとも、任意のPLC間でのデータの遣り取りを行うことができる実行可能プログラムを生成する。以下の説明では、PLC2およびPLC3は、固有のデータ構造のまま処理を行うものとし、PLC1をPLC2およびPLC3に適合させるような形態を考える。但し、いずれのPLCを適合させてもよい。
【0113】
図10は、本発明の実施の形態に係るサポート装置200が生成した実行可能プログラムによって実行されるPLC1での処理を説明するための図である。
図10に示す例では、
図9(c)に示すようなデータ構造の変数を、PLC1とPLC2との間、および、PLC1とPLC3との間で遣り取りする場合の処理例を示す。
図9(c)に示すように、PLC1とPLC2との間ではデータ構造は一致しているが、PLC1とPLC3との間ではデータ構造は相違しているとする。
【0114】
(1:PLC1とPLC2との間)
まず、PLC1とPLC2との間で遣り取りされる変数(構造体変数)について説明する。この場合、データ構造の相違を考慮する必要がないので、通常の処理が実行される。
【0115】
より具体的には、PLC1における実行可能プログラムの実行によって、対象の変数値が更新されると(処理P11)、処理ユニット10のプロセッサ100は、当該更新された変数値が格納されるメモリ(典型的には、メインメモリ104)上のアドレスを特定する(処理P12A)。そして、プロセッサ100は、整合性チェック(処理P13A)を行った後、当該更新値を指定されたメモリ上のアドレスに書込む(処理P14A)。
【0116】
また、PLC1における実行可能プログラムの実行によって、いずれかの変数値が要求されると、処理ユニット10のプロセッサ100は、メモリに格納されているデータ(変数値)を読出し(処理P21A)、読出したデータのCRCなどに基づいてエラーチェック(処理P22A)を行った上で、当該変数値を応答する(処理P23)。
【0117】
また、PLC2からネットワーク変数のデータ(変数値)を受信すると(処理P31)、処理ユニット10のプロセッサ100は、当該受信された変数値が格納されるべきメモリ(典型的には、メインメモリ104)上のアドレスを特定する(処理P32A)。そして、プロセッサ100は、整合性チェック(処理P33A)を行った後、当該更新値を指定されたメモリ上のアドレスに書込む(処理P34A)。
【0118】
また、PLC2からネットワーク変数のデータ(変数値)が要求されると、処理ユニット10のプロセッサ100は、メモリに格納されているデータ(変数値)を読出し(処理P41A)、読出したデータにCRCなどにチェックビットを付加(処理P42A)する。そして、プロセッサ100は、要求されたデータ(変数値)の送信先を特定(処理P43)した上で、当該変数値を送信する(処理P44)。
【0119】
(2:PLC1とPLC3との間)
これに対して、データ構造の異なるPLC3との間でデータを遣り取りする場合には、以下のような手順となる。
【0120】
すなわち、PLC1における実行可能プログラムの実行によって、対象の変数値が更新されると(処理P11)、処理ユニット10のプロセッサ100は、当該更新された変数値が格納されるメモリ(典型的には、メインメモリ104)上のアドレスを特定する(処理P12B)。この際、メモリ上にはPLC3で扱われるデータ構造に対応してデータが格納されるので、アドレスの特定には、PLC1で扱われるデータ構造に応じた算出方法ではなく、PLC3で扱われるデータ構造に応じた算出方法が採用される。そして、プロセッサ100は、整合性チェックを行う(処理P13B)。この整合性チェックについても、PLC3で扱われるデータ構造に応じた算出方法が採用される。さらに、プロセッサ100は、当該更新値を指定されたメモリ上のアドレスに書込む(処理P14B)。この際、プロセッサ100は、PLC3で扱われるデータ構造に応じたデータ構造でメモリにデータを書込む。すなわち、データ構造が変換される。このように、PLC1で実行される実行可能プログラムは、PLC1の対象のデータ型に対応する他の他のPLCにおけるデータ構造に従って、対象のデータ(変数値)をメモリに格納するための命令を含む。
【0121】
また、PLC1における実行可能プログラムの実行によって、いずれかの変数値が要求されると、処理ユニット10のプロセッサ100は、メモリに格納されているデータ(変数値)を読出し(処理P21B)、読出したデータのCRCなどに基づいてエラーチェックを行う(処理P22B)。データ(変数値)の読出しにおいては、PLC1で扱われるデータ構造への変換が行われる。また、このエラーチェックについても、PLC3で扱われるデータ構造に応じた算出方法が採用される。そして、プロセッサ100は、当該変数値を応答する(処理P23)。
【0122】
また、PLC3からネットワーク変数のデータ(変数値)を受信すると(処理P31)、処理ユニット10のプロセッサ100は、当該受信された変数値が格納されるべきメモリ(典型的には、メインメモリ104)上のアドレスを特定する(処理P32B)。この際、アドレスの特定には、PLC1で扱われるデータ構造に応じた算出方法ではなく、PLC3で扱われるデータ構造に応じた算出方法が採用される。そして、プロセッサ100は、整合性チェックを行う(処理P33B)。この整合性チェックについても、PLC3で扱われるデータ構造に応じた算出方法が採用される。さらに、プロセッサ100は、当該更新値を指定されたメモリ上のアドレスに書込む(処理P34B)。
【0123】
また、PLC3からネットワーク変数のデータ(変数値)が要求されると、処理ユニット10のプロセッサ100は、メモリに格納されているデータ(変数値)を読出し(処理P41B)、読出したデータにCRCなどにチェックビットを付加(処理P42B)する。データ(変数値)の読出しおよびエラーチェックについても、PLC3で扱われるデータ構造に応じた算出方法が採用される。そして、プロセッサ100は、要求されたデータ(変数値)の送信先を特定(処理P43)した上で、当該変数値を送信する(処理P44)。
【0124】
上述したように、PLC1で実行される実行可能プログラムは、PLC1の対象のデータ型に対応する他の他のPLCにおけるデータ構造に従って、対象のデータ(変数値)をメモリに格納するための命令を含む。このようなデータ構造に従って対象のデータ(変数値)をメモリに格納するための命令としては、以下のような命令がある。
【0125】
(a)PLC1で扱われるデータ(変数値)に含まれる要素(メンバ)の順序を入れ替えてメモリに格納する命令(
図9(a)に示すデータ構造などに適用される)
(b)PLC1で扱われるデータ(変数値)にダミー要素を加えた上でメモリに格納する命令(
図9(b)や
図9(c)に示すデータ構造などに適用される)
(c)PLC1で扱われるデータ(変数値)からダミー要素を除いた上でメモリに格納する命令(
図9(b)や
図9(c)に示すデータ構造などに適用される)
なお、PLC1に外部装置(パーソナルコンピュータや表示装置)などが接続される場合には、基本的には、PLC1で扱われるデータ構造のデータ(変数値)が出力されることが好ましい。そのため、PLC1で扱われるデータ構造とは異なるデータ構造で格納されているデータ(変数値)については、外部装置へ出力する際に、本来のデータ構造で出力されることが好ましい。
図10には、このような場合の処理についても図示する。
【0126】
すなわち、外部装置からネットワーク変数のデータ(変数値)を受信すると(処理P31)、処理ユニット10のプロセッサ100は、当該受信された変数値が格納されるべきメモリ(典型的には、メインメモリ104)上のアドレスを特定する(処理P32C)。この際、アドレスの特定には、現在メモリに格納されているデータ構造に応じた算出方法が採用される。そして、プロセッサ100は、整合性チェックを行う(処理P33C)。この整合性チェックについても、現在メモリに格納されているデータ構造に応じた算出方法が採用される。さらに、プロセッサ100は、当該更新値を指定されたメモリ上のアドレスに書込む(処理P34C)。さらに、プロセッサ100は、当該受信された変数値を指定されたメモリ上のアドレスに書込む(処理P34C)。この際、プロセッサ100は、現在メモリに格納されているデータ構造に応じたデータ構造でメモリにデータを書込む。すなわち、データ構造が変換される。
【0127】
また、外部装置からネットワーク変数のデータ(変数値)が要求されると、処理ユニット10のプロセッサ100は、メモリに格納されているデータ(変数値)を読出し(処理P41C)、読出したデータにCRCなどにチェックビットを付加(処理P42C)する。データ(変数値)の読出しにおいては、PLC1で扱われるデータ構造への変換が行われる。また、このエラーチェックについても、現在メモリに格納されているデータ構造に応じた算出方法が採用される。そして、プロセッサ100は、要求されたデータ(変数値)の送信先を特定(処理P43)した上で、当該変数値を送信する(処理P44)。
【0128】
上述したように、PLC1で実行される実行可能プログラムは、PLC1のメモリに格納されたデータに対する出力要求に応答して、PLC1における指定されたデータの型に対応するデータ構造に変換した上で、変換後のデータを出力する命令を含む。
【0129】
<H.実行可能プログラムの生成処理>
次に、PLC1の処理ユニット10(プロセッサ100)で実行される実行可能プログラムの生成処理について説明する。上述したように、サポート装置200が実行可能プログラムを生成する。
【0130】
(h1:機能構成)
図11は、本発明の実施の形態に係るサポート装置200による実行可能プログラムの生成処理を説明するための図である。
図11に示す機能ブロックは、主としてサポート装置200のCPU201がプログラミングアプリケーション250を実行することによって実現される。なお、プログラミングアプリケーション250を構成するコンパイラ254は、その機能モジュールとして、パーサ2542と、オブジェクトファイル生成部2544と、データ構造特定部2546と、リンカ2548とを含む。
【0131】
図11を参照して、コンパイラ254のパーサ2542は、ソースプログラム274と、内部変数定義2721およびネットワーク公開属性2722を含む変数設定272とを受け付け、構文解析を実行する。ソースプログラム274は、PLC1で実行される処理を定義された(内部)変数を用いて記述したものである。内部変数定義2721は、PLC1で扱われるデータ別に(内部)変数を定義する情報である。ネットワーク公開属性2722は、内部変数に関連付けて相手先のPLCの種別を特定する情報(IPアドレスなど)を含む。
【0132】
パーサ2542は、構文の解析結果をオブジェクトファイル生成部2544へ出力する。オブジェクトファイル生成部2544は、実行可能プログラムを生成するための中間的なネイティブコードであるオブジェクトファイルを出力する。上述したように、PLC1は、PLC間で遣り取りされる変数について、相手先のPLCで扱うデータ構造に応じたデータ構造でデータ(変数値)を維持する。そのため、オブジェクトファイル生成部2544は、各変数に係るオブジェクトファイルを生成する際に、ネットワーク変数であるか否かの情報、および遣り取りされるPLCにおけるデータ構造の情報に基づいて、対応するデータ構造を適合化する。
【0133】
より具体的には、オブジェクトファイル生成部2544は、パーサ2542からの解析結果に基づいて、内部変数定義2721で定義された変数のうちネットワーク公開属性が設定されているものを抽出する。そして、オブジェクトファイル生成部2544は、ネットワーク公開属性が設定されていない内部変数については、通常のデータ構造となるようにオブジェクトファイルを生成する。すなわち、上述の
図10においてPLC2との間で遣り取りされる変数についての処理と同様の処理が実行されるようにオブジェクトファイルが生成される。
【0134】
これに対して、ネットワーク公開属性が設定されている内部変数について、オブジェクトファイル生成部2544は、データ構造特定部2546からデータ構造情報を取得する。そして、オブジェクトファイル生成部2544は、ネットワーク公開属性が設定されている内部変数については、適切なデータ構造となるようにオブジェクトファイルを生成する。すなわち、上述の
図10においてPLC3との間で遣り取りされる変数についての処理と同様の処理が実行されるようにオブジェクトファイルが生成される。
【0135】
データ構造特定部2546は、ネットワーク公開属性が設定されている内部変数のデータ型に基づいて、当該内部変数に設定すべきデータ構造の情報を特定し、その値(データ構造情報)をオブジェクトファイル生成部2544へ返す。
【0136】
より具体的には、データ構造特定部2546は、ネットワーク公開属性2722を参照して、対象の内部変数と関連付けられているPLCの情報を取得する。典型的には、PLCのIPアドレスである。
【0137】
そして、データ構造特定部2546は、取得したIPアドレスに基づいて、ネットワーク接続情報276を参照することで、対応するPLCの種別情報を取得する。ネットワーク接続情報276は、典型的には、PLCシステムSYSのネットワークNWに接続されているそれぞれのPLCの機種情報と割り当てられているIPアドレスとの対応関係を記述する。なお、ネットワーク接続情報276については、PLCシステムSYSの管理ユーザが設定してもよいし、公知の方法を用いて動的に生成してもよい。
【0138】
さらに、データ構造特定部2546は、PLCの種別毎に予め規定されたデータ構造情報278を参照して、対象の種別に対応するデータ構造情報を取得し、指定されたデータ型に対応するデータ構造をオブジェクトファイル生成部2544へ返す。データ構造情報278は、PLC種別毎に、各データ型と対応するデータ構造とを定義する。
【0139】
オブジェクトファイル生成部2544がすべての内部変数についてのオブジェクトファイルを生成し、さらに必要なオブジェクトファイルを生成すると、リンカ2548がこれらのオブジェクトファイルをまとめて、実行可能プログラムを生成する。
【0140】
上述のように、サポート装置200で実行されるプログラミングアプリケーション250は、内部変数を定義する情報(内部変数定義2721)およびソースプログラム274を用いて実行可能プログラムを生成する。このとき、生成手段であるプログラミングアプリケーション250は、相手先のPLCの種別に応じて、PLC1の変数に対応してメモリ上に確保されるデータ(変数値)のデータ構造を適合化する。
【0141】
(h2:処理手順)
次に、サポート装置200が実行可能プログラムを生成する処理手順について説明する。
【0142】
図12は、本発明の実施の形態に係るサポート装置200による実行可能プログラムの生成処理の手順を示すフローチャートである。
図12に示す処理手順は、サポート装置200のCPU201がプログラミングアプリケーション250を実行することによって実現される。
【0143】
図12を参照して、サポート装置200のCPU201は、ユーザが作成した変数設定272およびソースプログラム274を受け付ける(ステップS100)。CPU201は、変数設定272を参照して、受け付けたソースプログラム274についての構文解析を行い、使用されている内部変数を抽出する(ステップS102)。
【0144】
続いて、CPU201は、ステップS102において抽出した内部変数のうち最初の内部変数を処理対象に選択する(ステップS104)。そして、CPU201は、処理対象に選択した内部変数に対してネットワーク公開属性が設定されているか否かを判断する(ステップS106)。
【0145】
ネットワーク公開属性が設定されていない場合(ステップS106においてNOの場合)には、CPU201は、処理対象の内部変数に対して通常のデータ構造で読出し/書込みされるようにオブジェクトファイルを生成する(ステップS108)。そして、処理は、ステップS116へ進む。
【0146】
これに対して、ネットワーク公開属性が設定されている場合(ステップS106においてYESの場合)には、CPU201は、処理対象に選択した内部変数のネットワーク公開属性に基づいて、接続先のPLCの種別情報を取得する(ステップS110)。続いて、CPU201は、取得した種別情報に対応するデータ構造情報を取得し、さらに、取得したデータ構造情報における処理対象の内部変数のデータ型に対応するデータ構造を特定する(ステップS112)。CPU201は、処理対象の内部変数に対して特定したデータ構造で読出し/書込みされるようにオブジェクトファイルを生成する(ステップS114)。そして、処理は、ステップS116へ進む。
【0147】
CPU201は、ステップS102において抽出した内部変数のすべてについての処理が完了したか否かを判断する(ステップS116)。ステップS102において抽出した内部変数のすべてについての処理は完了していない場合(ステップS116においてNOの場合)には、CPU201は、ステップS102において抽出した内部変数のうち未処理のいずれかの内部変数を処理対象に選択し(ステップS118)、ステップS106以下の処理を繰り返す。
【0148】
これに対して、ステップS102において抽出した内部変数のすべてについての処理が完了している場合(ステップS116においてYESの場合)には、CPU201は、生成されたオブジェクトファイルを連結して実行可能プログラムを生成する(ステップS120)。そして、処理は終了する。
【0149】
<I.変形例>
上述の実施の形態においては、ネットワーク変数を遣り取りする相手先のPLCの種別をIPアドレスなどによって特定する方法について例示したが、これに限られず、任意の方法を採用することができる。
【0150】
例えば、相手先のPLCの機種などが既知である場合には、ユーザがネットワーク公開属性を設定する際に、そのPLCの種別を直接的に設定してもよい。このような構成を採用した場合には、
図11に示すネットワーク接続情報276が不要になる。
【0151】
さらに、相手先のPLCの機種における対応するデータ構造が既知である場合には、ユーザがネットワーク公開属性を設定する際に、そのPLCにおけるデータ構造を直接的に設定してもよい。このような構成を採用した場合には、
図11に示すデータ構造情報278が不要になる。
【0152】
また、上述の実施の形態においては、メインメモリ104に格納されるそれぞれの変数のデータ構造を適合化する構成について例示したが、ネットワークコントローラ140のバッファメモリ146に格納されるそれぞれの変数のデータ構造を適合化してもよい。この場合には、メインメモリ104に格納される変数は、PLC1の本来のデータ構造で格納されており、他のPLCから受信されてバッファメモリ146に一次的に格納されたデータが対応する変数値としてメインメモリ104に転送される際にデータ構造の変換処理(適合化処理)が行われてもよい。また、他のPLCへ送信されるためにメインメモリ104からバッファメモリ146へデータが転送される際にデータ構造の変換処理(適合化処理)が行われてもよい。
【0153】
<J.利点>
本実施の形態に係るサポート装置200は、PLC間で変数を指定してデータが遣り取りされる場合において、相手先のPLCが扱うデータ構造が一致してないくとも、ネットワークを介してデータをより容易にデータを遣り取りできる。
【0154】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。