図1は、本発明の第1実施形態を示している。本実施形態のFA機器10は、PLC等の産業用コントローラ自身或いはPLC等を構成する所定のユニットや、温度調節器,視覚センサ,RFID,タッチパネル,プログラマブル表示器等のFAネットワークシステムを構成する各種の機器である。本実施形態のFA機器10は、演算実行するMPU11と、各種の記憶手段を備えたものである。記憶手段としては、図示の例では、MPU11が演算実行する際に使用するワークメモリ12と、ユーザプログラムを格納するユーザメモリ13と、ユーザデータを格納するユーザデータ記憶部14と、パラメータを記憶するパラメータ記憶部15と、フラッシュメモリ等のストレージデバイス16等がある。ユーザデータは、例えば、PLC(CPUユニット)の場合にはI/Oデータ等であり、温度調節器の場合には制御対象の機器の現在値やその履歴データ等であり、視覚センサの場合には撮像した画像データ等であり、RFIDの場合には読み取ったデータ等である。パラメータは、I/Oテーブルやシステム設定などの設定情報である。ストレージデバイス16は、着脱可能に装着される記憶媒体であり、無い場合ももちろんある。ユーザメモリ13と、ユーザデータ記憶部14と、パラメータ記憶部15と、ストレージデバイス16が、本実施形態で管理・アクセスするファイルシステムの対象である。
また、本実施形態のFA機器10は、外部インタフェースとしてUSBなどのパソコンにおける汎用デバイスインタフェース17と、イーサネット(登録商標)等のネットワークインタフェース18を備えている。これにより、ツール装置20は、USBケーブル21を用いて直接、或いは、ネットワーク22を経由してFA機器10と通信することができる。
本実施形態の外部機器10は、Windows(登録商標)のファイルシステムのストレージデバイスと同様に、FA機器10内のRAMディスク化していないメモリデバイス13〜15やストレージデバイス16を、ディレクトリ構造で定義し、ツール装置20がUSBケーブル21などを介して当該デバイスに格納されたデータに対しファイルとして読み書きする機能を備える。ネットワーク22を介してftpなどのファイル転送プロトコルにおけるサーバ機能や、ファイルアクセスのためのプロトコルであるCIFSプロトコルにおける共有フォルダ機能を備えることで、ネットワーク環境においても、ツール装置20が、メモリデバイス13〜15やストレージデバイス16に格納されたデータをファイルとして読み書きできるようにしている。
上記機能をFA機器10(MPU11)に備えることで、ツール装置を構成するパソコンに組み込まれたWindows(登録商標)標準のエクスプローラなどのファイラソフトを用いて、FA機器に格納されている情報の在り処をツリー構造で表示し、各フォルダ内に表示された情報を、ファイルとして読み書きすることができる。
すなわち、USBケーブル21で接続したローカル配置の場合、図2(a)に示すように、従来のソフトウエア構成に比し、FA機器のファイルシステムとUSBドライバを修正する。つまり、ファイルシステムは、メモリデバイス13〜15やストレージデバイス16をファイルとして見えるようにするための機能を追加している。係る機能の具体的な構成・アルゴリズムは後述する。また、USBドライバは、ファイルの読み書き(転送)を行なうためのドライバ機能を備える。なお、既存のFA機器においてもUSBドライバ実装されているが、そのUSBドライバは、FINS等のFA専用の通信プロトコルに対応するもののみであったが、本実施形態では、汎用のファイルを扱うことができるようにしている。同様に、ネットワークを用いたリモート配置の場合、図2(b)に示すように、従来のソフトウエア構成に比し、FA機器のファイルシステムを修正する。そして、ツール装置20は、通常のパソコンとして組み込まれている機能をそのまま用いることかできる。
ネットワーク環境においてメモリデバイスに対するアクセスを許容するため、FA機器10は、以下に示すようなftpコマンドを実行する機能を有する。このftpコマンド自体は、通常のものと同様である。
“dir/lsコマンド”は、指定デバイスレイヤにおけるアイテムの一覧をフォルダ一覧ライクで取得するためのコマンドである。“cdコマンド”は、現在位置を指定デバイスレイヤに移動するためのコマンドである。“pwdコマンド”は、現在デバイスレイヤを取得するためのコマンドである。
“get/mgetコマンド”は、指定デバイスのアイテムをASCII/Binaryモードで読み出すためのコマンドである。なお、ASCII/Binaryの指定は、クライアント側でサーバ側デバイスの格納フォームに合わせて発行する。また、mgetはファイル名を「*(アスタリスク)」で指定して複数アイテムを対象とする。一例を示すと、以下の通りである。
“get ftp://192.168.1.1/CP1L-M40DR-A/System/Config/IOtbl.cfg c:\temp\*.*”と記述されたマンドを受信した場合、サーバであるFA機器は、I/Oテーブルを読み出し、クライアントにファイル転送する処理を行なう。
“mget ftp://192.168.1.1/CP1L-M40DR-A/System/Mem/*.* c:\temp\*.*”と記述されたマンドを受信した場合、サーバであるFA機器は、PLCのMemフォルダ以下の全メモリを読み出し、クライアントにファイル転送する。
“get ftp://192.168.1.1/CP1L-M40DR-A/System/Data/PID01.csv c:\temp\*.*”と記述されたコマンドを受信した場合、サーバであるFA機器は、PLCで定義されたオブジェクトのデータを読み出して、クライアントにファイル転送する。
“put/mputコマンド”は、指定デバイスのアイテムにASCII/Binaryモードで書き込むためのコマンドである。なお、ASCII/Binaryの指定は、クライアント側でサーバ側デバイスの格納フォームに合わせて発行する。mputはファイル名を「*(アスタリスク)」で指定して複数アイテムを対象とする。一例を示すと、以下の通りである。
“put c:\temp\IOtbl.cfg ftp://192.168.1.1/CP1L-M40DR-A/System/Config/*.*”と記述されたマンドを受信した場合、サーバであるFA機器は、クライアントのI/OテーブルファイルをクライアントのConfigフォルダ下にファイル転送して書き込む。
“mput c:\temp\*.* ftp://192.168.1.1/CP1L-M40DR-A/System/Mem/*.*”と記述されたマンドを受信した場合、サーバであるFA機器は、クライアントのtemp以下のすべてのファイルをPLCのMemフォルダ下にファイル転送して書き込む。
“put c:\temp\PID01.csv ftp://192.168.1.1/CP1L-M40DR-A/System/Data/*.*”と記述されたマンドを受信した場合、サーバであるFA機器は、PLCで定義されたオブジェクトのデータイメージのファイルをPLCのDataフォルダ下のメモリに書き込む。
図3は、本実施形態のFA機器10のファイルシステム構造の一例を示す図である。図4は、PLCシステム構成におけるファイルシステム構造の一例を示す図である。本実施形態は、外部機器を特定する“型式名”の下位に、“Memcard”と“System”のフォルダを用意した。そして、“Memcard”は、“Sys”と“User”の2つのフォルダを備え、“System”は“Config”,“Prog”,“Mem”,“Data”の4つのフォルダを備えている。もちろん、FA機器の種類によっては、“Memcard”が無い場合もあるし、“Config”,“Prog”,“Mem”,“Data”のうちの1または複数のフォルダがない場合もある。また、必要に応じて更に別のフォルダを設けることもできる。
ここで、“型式名”フォルダには、インテリジェントなハードウェアモジュールの型式名が記述される。一例を示すと、“CP1L-M40DR-A”のように、FA機器に付された型式名である。“Memcard”は、ストレージデバイス16についてのデータが格納されるフォルダである。“Sys”は、ロギングデータファイル,オートブートファイル,htmlファイルなどのシステムで使用するファイルが格納されるフォルダである。また、“User”は、PLCアプリケーションプログラムに関わるフォルダ構成であり、レシピフォームなどのアプリケーション用フォームファイルやデータファイルやマルチメディアファイルなどが格納される。
“System”は、PLCシステムデータであるPLC物理構成に準じたフォルダ構成とする。ハードモジュールのメモリ領域をファイルとしてアクセスできる。書込はデフォルトで禁止されているが、Systemフォルダの属性変更をすることで書込は可能となる。属性変更内容は、電源ON中のみ有効とし、新規作成や削除は禁止し、同一名での書込(更新)のみ可能とする。
“Config”は、I/OテーブルやPCシステム設定などの設定情報に関するフォルダである。このフォルダに振り分けられるファイルは、バイナリファイルで構成され拡張子を「cfg」とする。“Prog”は、プログラム内容に関するフォルダである。このフォルダに振り分けられるファイルは、バイナリファイルで構成され拡張子を「prg」とする。“Mem”は、ファームウェアで定義されたメモリ領域全体の内容に関するフォルダである。このフォルダに振り分けられるファイルは、バイナリファイルで構成され拡張子を「mem」とする。“Data”は、オブジェクト(構造体や配列含む)として定義された特定のレジスタ/リレー領域の内容に関するフォルダである。このフォルダに振り分けられるファイルは、バイナリファイルで構成され拡張子を「dat」とする。なお、バイナリファイルに替え、或いはバイナリファイルとともに表計算アプリケーションプログラムで一般に使用されるファイル形式(拡張子「csv」)を備えても良い。つまり、同じ内容のデータとして、2つのファイル型式のデータを備えることを許容する。この“Data”フォルダに格納されるデータとしては、例えば、収集データや履歴データその他のロギングデータや、ファンクションブロックの構造体やMESにおけるレシピデータなどがある。
所定のメモリデバイス13〜15やストレージデバイス16に記憶保持される各ファイルは、それぞれ上述のどのフォルダに振り分けられるのかについての情報も備えている。これにより、後述するように、所定のフォルダをダブルクリック等して開くことで、そのフォルダに属するファイルのリストを表示することができる。
上記のファイル構造によれば、CPUユニットと高機能ユニットを備えたPLCの場合、図4に示すようなファイルの階層構造(例えばWindows(登録商標)のファイルシステムである¥¥で特定されるマイクロソフト社のUNC表示、URIパス表示等)にて表現され、またはファイルをディレクトリ単位で階層構造で管理して表現される。この例では、PLCは、CPUユニット(モジュール)と、1つの高機能ユニット(モジュール)を備えている。そこで、その1つのPLCを特定する論理モジュールに対応するフォルダを共通フォルダ(フォルダ名:plc01)として設定し、その下位に、CPUモジュール用の型式名のフォルダ(CJ2H-CPU67)が作成される。このCPUモジュールは、ストレージデバイス16を実装されるタイプであるので、“Memcard”フォルダと“System”フォルダを備える。そして、ストレージデバイス16に記憶されているファイルは、“User”フォルダに位置される。また、所定のメモリデバイスに記憶されているデータ(例えば、I/Oテーブルやシステム設定データ等)は、“Config”フォルダ等に割り当てられる。
一方、この例の高機能モジュールは、ストレージデバイスが備えていないため、ファイルシステム構成においても、ストレージデバイスに対応する“Memcard”のフォルダが無く、“System”フォルダのみとなる。そして、所定のメモリデバイスに記憶されているデータ(例えば、I/Oテーブルやシステム設定データ等)は、“Config”フォルダ等に割り当てられる。ここで、高機能モジュールとは、高機能ユニットとも称されるもので、CPUユニットにおけるサイクリックな制御とは独立し、自己に接続された外部機器等に対する制御を実行するもので、モーションコントローラ等がある。高機能モジュールは、CPUユニットと同様に制御プログラムを実行するMPUを備えるし、当該制御プログラムを格納したり、設定データ等を格納したり、制御の実行にともない各種のデータを取得したりするので、それらを記憶するメモリデバイスを備える。
図5から図9は、FA機器10にアクセスしたツール装置20の表示装置に表示されるファイルシステム構造の一例を示している。各図に示すように、左側のウインドウ領域には、各フォルダがツリー状に配置される。図5は、PLCのメモリの表示例であり、図では、“System”フォルダの中の“Mem”フォルダがダブルクリック等により選択されて開き、その“Mem”フォルダ中に存在するファイルの一覧が、右側のウインドウ領域にバイナリーイメージにて表示されている。図から明らかなように、この例では、PLCのストレージデバイスやメモリデバイスは、Dドライブに割り当てられている。USBメモリと同じイメージとなり、ツール装置20を操作するユーザは、通常のパソコンに装着されるUSBメモリに格納されたファイルにアクセスするのと同じ操作で、PLCのメモリデバイスに記憶されたデータに対してアクセスすることができる。
図6は、FA機器の1つであるタッチパネルの“system”フォルダの中の“Mem”フォルダが選択され、メモリデバイスに格納されたデータが、ファイル形式で一覧表示されている。図7は、FA機器の1つである温度調節器の“system”フォルダの中の“Data”フォルダが選択され、メモリデバイスに格納されたデータが、ファイル形式で一覧表示されている。図示の例において、“Param.dat”は、時間経過に伴う設定温度の変化などのパラメータが格納されるファイルである。“Param.csv” として、表形式のファイルとしても良い。“Profile.csv”は、実際に計測した温度変化の履歴を格納する表形式のファイルである。“Var.dat”は、現在値(温度)などが格納されるファイルである。
図8は、FA機器の1つである視覚センサの“system”フォルダの中の“Pict”フォルダが選択され、メモリデバイスに格納されたデータが、ファイル形式で一覧表示されている。このフォルダに振り分けられたデータは、視覚センサが撮像して得られたイメージデータである。イメージデータとして一般的なファイル形式であるビットマップファイルとして用意されている。なお、図示の例では、“Pict”フォルダとしたが、このイメージデータを“Data”フォルダに振り分けるようにしてももちろん良い。
図9は、FA機器の1つであるRFID機器の“system”フォルダの中の“Data”フォルダが選択され、メモリデバイスに格納されたデータが、ファイル形式で一覧表示されている。図示の例において、“Recipe.dat”と“Recipe.xml”は、ファイル形式が異なるもののともに同じ内容のレシピデータである。このように複数種類のファイル形式を用意することで、ユーザはいずれか使いやすいファイル形式のデータを見ることができ、操作性が向上する。但し、ファイル書き込み(変更)を認める場合、一方のみのファイルが更新されてしまうと、2つのファイルの内容が異なってしまうので、書き込み自体を禁止するか、書き込みをする場合には、両方のファイルに対して同じ内容を維持するための機能(一方のファイルを更新した場合、ファイル変換(コンバート)ソフト等を用いて、他方のファイル形式のファイルも更新する等)を備えるか、仕様により、ユーザが両方のファイルに対して必ず同じ内容の修正を行なうようにさせる必要がある。
上述したように、Windows(登録商標)の一般的な環境のみのパソコンで、FA機器をあたかも1つのストレージデバイスをアクセスするような簡単な操作で、目的とする情報を検索・表示・コピーが可能となる。そして、特定のフォルダ以下に存在する複数の情報を、ワイルドカード機能により一括してコピーすることで、簡単にバックアップ/リストア操作を行うことが可能となる。更に、FA機器内のデータを、Windows(登録商標)の一般的なダブルクリックなどの操作で、適応する表計算ソフトやイメージデータを扱う一般的なアプリケーション等で開いて実行(表示・編集など)させることが可能となる。
上述したように、ツール装置20(一般的な環境のみのパソコンを含む)の表示装置の表示画面に、エクスプローラ等のファイル閲覧ソフト(ファイラソフト)を用いてFA機器10のメモリデバイス等の格納されたデータをツリー構造で表示するために、本実施形態のFA機器10は、以下に示す機能を組み込むようにした。
まず、ワークメモリ12に、図10に示すようなディレクトリ情報テーブルを設ける。ディレクトリ情報テーブルは、FA機器10のメモリデバイス13〜15並びにストレージデバイス16に格納された全てのファイルについて作成され、1つのファイルごとに1レコード作成される。図示するように、1レコードは、次のレコードへのポインタと、前のレコードへのポインタと、ファイル名と、ファイル属性と、ファイルサイズと、タイムスタンプと、を含んで構成される。前後のレコードへのポインタを設けることで、リスト構造をとり、全てのファイルについてのレコード情報を収集できる。つまり、ディレクトリ情報テーブルを参照することで、FA機器が保有するデータ(ファイル)を認識できる。また、ファイルの削除・追加に伴い、このレコードも削除・追加し、それに伴い前後のレコードへのポインタ情報も更新する。また、各フォルダも、個々に1つのレコードとしてディレクトリ情報として記憶保持される。
ファイル属性は、ファイルの書き込みの許可/禁止の区別や、提供するファイルフォーマットの種類(拡張子)や、実際のメモリデバイスに格納されているファイルフォーマット等がある。FA機器では、メモリデバイス,ストレージデバイスに格納されるデータのファイルフォーマットは、通常、バイナリファイルとなっている。また、ファイルが属するフォルダの種類もファイル属性に記録される。なお、拡張子とフォルダの種類が一対一に対応するようにした場合、拡張子から振り分けられるべきフォルダ特定されるので、当該ファイルが属するフォルダの種類についての情報を別途用意しなくても良い。また、記憶エリアを特定する情報(メモリデバイスの種類とメモリアドレス等)も格納するようにすると良い。
そして、ツール装置20は、FA機器10に対してディレクトリ読み出し要求を発行し、FA機器からのレスポンスとしてディレクトリ情報を取得する。このディレクトリ情報に基づき、ツール装置20は、対しようとするFA機器が、どのようなフォルダが存在しているかを認識し、図5から図9の左側のウインドウに示すように各フォルダをツリー状に配置して表示することができる。
また、取得したファイル属性から、各ファイルがどのフォルダに属するかがわかるので、ツール装置20は、図5から図9の左側のウインドウに表示された所定のフォルダが選択された場合、そのフォルダに属するファイルのファイル名等の情報を右側のウインドウにリスト表示することができる。このとき、ファイル名に、ファイル属性に格納されている拡張子を関連付けて表示する。すなわち、拡張子を実際に表示するか否かは、ツール装置20の設定により決定されるが、拡張子を関連付けることで、FA機器のメモリデバイス等に格納されているデータのファイルフォーマットに関係なく、右側のウインドウでリスト表示された際には、関連付けられた拡張子のファイルとして表示する(アイコンが対応するものに変わったり、種類名が対応するものとして表示されたりする)。よって、ツール装置20を操作するユーザは、例えば、図7に示される“Param.csv” を見た場合、表計算ソフトで操作できると認識できる。
一方、このディレクトリ情報テーブルの作成は、電源ON時に、MPU11が行なう。具体的には、MPU11が、図11に示すフローチャートを実行する機能を備える。前提として、FA機器10は、自分がどういうフォルダやファイルを持っているかについて、予めシステムが固有に認識している。つまり、“Data”フォルダに格納されるデータは、FAネットワークシステムの稼働に伴い逐次データが追加されたり、更新されたりし、電源投入時にメモリデバイスに格納されていないものがある。また、I/Oメモリのように例えばMem内の情報は、ファイル自身は固定的に存在するが内容は常時変化する可能性が高く、最新のタイムスタンプで保持する性質のものである。
これに対し、編集したときの情報を意図的に保持するような情報は、固定バックアップ情報として所定の記憶媒体に保持される。“Config”,“Prog”等のフォルダに格納された各データ(ファイル)は、多くの場合、FAネットワークシステムの稼働に伴い変更されていくようなものでもなく、データ自体の内容は固定であるという意味で固定バックアップ情報として所定の記憶媒体に保持されている。そして内容が編集時と同一であることを検証するために、各ファイルを特定するファイル名や、サム値や、そのファイルの作成・更新した日時情報等が関連付けて備えているようにする。
そこで、MPU11は、電源が投入されたならば、メモリデバイス13〜15に格納された各ファイル(System下のファイルアクセスデバイス)を順次処理対象にし(S1)、その処理対象のファイルが固定バックアップ情報として記録されているものか否かを判断する(S2)。固定バックアップ情報に該当するものの場合、MPU11は、メモリデバイスに記憶されているファイルのサム値を求め、固定バックアップ情報として保持しているサム値が正しいか否かを判断する(S3)。そして、サム値が正しい場合(S3がYes)、MPU11は処理対象のファイルについてのディレクトリ情報を作成し(S4)、ファイル化フラグをONにする(S5)。つまり、ディレクトリ情報に格納するタイムスタンプを、当該処理対象のファイルが作成・更新されたときのタイムスタンプとする。この処理ステップS1〜S5までの処理を実行することで、正常な1つのファイルについてのディレクトリ情報が1レコード分作成され、これが、ワークメモリ12に登録される。このとき、1番目(先頭)のディレクトリ情報の場合には、前レコードポインタはNullとなり、2番目以降のディレクトリ情報を登録するに際し、処理対象のファイルについての前レコードポインタと、前回登録・作成したディレクトリ情報の次レコードポインタに、それぞれ該当するポインタ情報を登録する。
一方、処理対象のファイルが固定バックアップ情報でなかったり、サム値が異常であったりした場合には、ファイル化フラグをOFFにし、現在の日時情報に基づいて最新タイムスタンプで作成する(S8)。
そして、認識デバイスを更新する(S6)。つまり、次のファイルを処理対象にする。そして、処理対象が残っている場合(S7)、処理ステップS1に戻り次の処理対象についてのディレクトリ情報の作成処理を行なう。上記の処理を繰り返し実行することで、メモリデバイス13〜15に格納される各ファイルについてのディレクトリ情報からなるディレクトリ情報テーブルが作成される。
図12は、MPU11に実装されるSystemフォルダ下のメモリデバイス更新処理機能を示している。すなわち、FA機器は、システムの稼働にともない、ファイルが追加されたり、ファイルの内容が変更されたりする。また、ファイルが追加された場合には、当該ファイルについてのディレクトリ情報をディレクトリ情報テーブルに追加する必要が生じ、さらに、ファイルの内容が変更されたことに伴い、ファイルサイズやサム値等も変更され、登録済みのディレクトリ情報や固定バックアップ情報を修正する必要が生じることもある。そこで、MPU11は、図12に示すように、係るファイルについての追加・変更等の更新処理と、ディレクトリ情報や固定バックアップ情報の更新処理等を行なう機能を備えるようにした。
つまり、MPU11は、メモリ変更要求を受けたか否かを判断する(S11)。メモリ変更要求でない場合には、そのまま処理を終了し、メモリ変更要求を受けた場合には、MPU11は、その要求が所定のftpコマンド等を用いたファイル自体の一括した書き込み要求か否かを判断する(S12)。ファイル書き込み要求の場合には、MPU11は、そのファイル属性が書き込み許可になっているか否かを判断し(S13)、書き込み許可になっていない場合(S13でNo)、処理を終了する。書き込み許可になっている場合(S13でYes)、書き込み要求コマンドに従い、取得したファイルを所定のメモリデバイスに書き込み、メモリ内容の更新を行なう(S14)。また、処理ステップS12の分岐判断でNo、つまり、既存のファイルのデータ・内容の更新処理の場合は、処理ステップS12からS14に飛び、MPU11は、該当するメモリ変更要求に従ってメモリ内容の更新をする。
次いで、MPU11は、メモリ内容の更新したファイルが、固定バックアップ情報に該当するものか否かを判断し(S15)、Dataフォルダに振り分けられるファイル等、固定バックアップ情報に該当しない場合には、そのまま処理を終了する。一方、固定バックアップ情報に該当する場合には、MPU11は、更新したメモリ内容のサム値を算出して固定バックアップ情報の更新を行ない(S16)、その更新したファイルについてのディレクトリ情報の更新並びにファイル化フラグON(そのファイルの電源ON,更新時のタイムスタンプで作成)にする処理を行なう(S17,S18)。このS17,S18の処理は、例えば、ファイル書き込み要求により新規にファイルが作成された場合には、S4,S5と同様の処理を行ない、新規にディレクトリ情報を追加することになり、既存のファイルに対する変更の場合には、該当するディレクトリ情報のうちの変更された部位の更新処理を行なうことになる。
図13は、ツール装置20からの要求に伴いMPU11が行なうファイル関連処理機能を示している。すなわち、MPU11は、ファイルイベントが発生するのを待ち(S21)、イベントが発生したならば、そのイベントの内容がディレクトリ読み出しか否かを判断し(S22)、ディレクトリ読み出しの場合には、ワークメモリ12に格納したディレクトリ情報を読み出すとともに、読み出したディレクトリ情報をレスポンスとして返送する(S23)。
ディレクトリ読み出しでない場合には、MPU11は、ファイル読み出しか否かを判断し(S24)、ファイル読み出しの場合には、読み出し要求のファイルが、System下のフォルダにあるファイルか否かを判断する(S25)。そして、System下でない場合には、MPU11は、通常の読み出し処理を行ない今回の処理を終了する(S26)。一方、System下ファイルの場合には、MPU11は、該当するファイルを取得するとともに、所定のファイルフォーマットの変換を行ない(S27)、変換後のファイルフォーマットのメモリ内容をレスポンスとして返送する(S28)。すなわち、メモリデバイスに格納された各内容は、本実施形態では、FA機器が従来から持つファイルフォーマットにしている。つまり、上述したように、ツール装置20の表示画面には、ファイル名に所定の拡張子を付したリストで表示するようにしたが、FA機器のメモリデバイスには必ずしも該当する拡張子のフォーマットで格納されているとは限らない。そこで、FA機器10のMPU11は、System下のファイルに対して読み出し要求があった場合、ツール装置20に表示されている拡張子に対応するように(係る拡張子のファイルになるように)、所定のファイルフォーマット変換(コンバート)を行なうのである。MPU11は、係る変換機能も備えている。
また、取得したファイルイベントがファイル読み出しでない場合(S24でNo)、MPU11は、ファイル書き込みか否かを判断する(S29)。そして、ファイル書き込みでもない場合には、MPU11は、イベントに対応するその他の通常の処理を行ない、今回の処理を終了する(S30)。ファイル書き込みの場合には、書き込み要求のファイルが、System下のフォルダにあるファイルか否かを判断する(S31)。そして、System下でない場合には、通常の書き込み処理を行ない今回の処理を終了する(S32)。一方、System下ファイルの場合には、MPU11は、取得したファイル(ツール装置からは、一般的な汎用のファイルフォーマットのデータを取得)を、書き込み対象のメモリフォーマットに変換する(S33:S26と逆のフォーマット変換)。そして、MPU11は、変換後のフォーマットのデータに基づき、System下フォルダメモリデバイス更新処理を実行する(S34)。この処理ステップS34の具体的な処理アルゴリズムは、上述した図12に示したフローチャートである。そして、係る処理が終了後、MPU11は、実行終了レスポンスを返送する(S35)。
図14は、FA機器の第2実施形態を示している。FA機器が、PLCのように複数のユニット(個々のユニット自体もFA機器を構成する)が連結され、1つのFA機器(複合モジュール構成機器)を構成するものに適用したものである。図14では、各ユニットをモジュールと称している。各モジュール(FA機器:ユニット)10′,10″は、内部バス10aにより連結されている。よって、各FA機器10′,10″は、内部バス10aと接続され通信を行なうための内部バスインタフェース19を備えている。この場合において、CPUユニット(モジュール-1)のように、親となるFA機器10′と、高機能ユニット(モジュール-2)のように子となるFA機器10″とを区別し、親となるFA機器10′(モジュール-1)には、連係された子となるFA機器10″(モジュール-2)の情報についても、I/Oテーブルに基づきディレクトリ構造で表示しファイルとしてアクセスする機能を提供する。子となるFA機器10″(モジュール-2)は、上述した第1実施形態のFA機器10と同じ機能を持たせる。
図15は、第2実施形態の複合モジュール構成機器からなるFA機器のファイルシステム構造の一例を示している。図3と比較すると明らかなように、個々のモジュール(FA機器10′,10″)についての型式名のフォルダと、Memcardフォルダ及びSystemフォルダの間に、号機番号フォルダを設けている。号機番号は、ユニット番号とも称されるもので、複合モジュール構成機器(たとえばPLC)内での個々のモジュール(ユニット)を特定するための番号である。ハードウェアモジュールのスイッチなどで設定された番号が格納される。なお、設定不要なモジュールはこのフォルダが省略されるため、図3に示すように、先に説明した第1実施形態のように単一のモジュールから構成されるFA機器では当該フォルダが省略されている。本実施形態によれば、複数のハードウェアモジュールで構成されたPLCシステムをあたかも1つのストレージデバイスをアクセスするような簡単な操作で、目的とする情報を検索・表示・コピーが可能となる。
図16は、親のFA機器(モジュール)が持つディレクトリ情報テーブルのデータ構造の一例を示している。図から明らかなように、自己のメモリデバイスに格納された各ファイルのデレクトリ情報の後ろに続いて、子のFA機器(モジュール)についてのディレクトリ情報(子ディレクトリ情報)も備えている。さらに、子ディレクトリ情報の最終の次レコードポインタ(Null)と先頭の前レコードポインタ(Null)を書き替えて、自己のファイルについてのレコードと、子のレコードをまとめた1つのチェーンを作成している。具体的には、先頭の子ディレクトリ情報の前レコードポインタは、最終の自ディレクトリを指す情報が格納され、自ディレクトリ情報の最終のレコードの次レコードポインタは、子ディレクトリ情報の先頭のレコードを特定するポインタとしている。また、子ディレクトリ情報の最終のレコードの次レコードポインタは、自ディレクトリ情報の先頭のレコードを指す情報が格納され、その自ディレクトリ情報の先頭のレコードの前レコードポインタは、子ディレクトリ情報の最終のレコードを指す情報となっている。また、子の最終号機チェーンの最終のレコードの次レコードポインタは、続く子ディレクトリがないので、NULL(バイナリデータをゼロ「0」)にするとともに、親の先頭の前レコードポインタもNULL(バイナリデータをゼロ「0」)にする。それによりテーブルの先頭と最終が判断できるようにする。なお、子のFA機器のディレクトリ情報テーブルは、自己のメモリデバイスに格納されるファイルについてのディレクトリ情報のみが格納される。
各FA機器10において、ディレクトリ情報テーブルの作成は、電源ON時に、MPU11が行なう。子のFA機器10″のMPU11は、図11に示したフローチャートを実行し、自己のメモリデバイス等に格納されたデータ(ファイル)についてディレクトリ情報を作成する。また、親のFA機器10′のMPU11は、自己のメモリデバイス等に格納されたデータ(ファイル)については、図11のフローチャートを実行してディレクトリ情報を作成する。そして、子のディレクトリ情報については、当該子のFA機器10″に対してディレクトリ読み出しコマンドを送り、その子のFA機器からレスポンスとして返送されてきたディレクトリ情報を取得するとともに、ディレクトリ情報テーブルに格納することで作成する。具体的には、MPU11は、図17に示す処理を実行する機能を備える。
まず、MPU11は、I/Oテーブルを1レコード読み出し(S61)、その読み出したモジュールが高機能モジュールか否かを判断する(S62)。本実施形態では、複合モジュール構成機器としてPLCを想定し、親のFA機器はCPUモジュール(CPUユニット)、子のFA機器は高機能モジュール(高機能ユニット)がそれぞれ対応するものとしたため、この処理ステップS62の分岐判断は、“高機能モジュール?”としたが、一般化するならば、“子のFA機器(モジュール)に該当する機器?”などとなる。そして、この判断は、該当する機器の一覧リストを別途記憶保持しておき、I/Oテーブルから読み出した処理対象のモジュール(機器)が一覧リストに載っているか否かにより判断することができる。
高機能モジュールでない場合には、S62の分岐判断はNoとなるので、処理ステップS67に飛び、I/Oテーブルのポインタを更新し、テーブルの最終になっていなければ処理ステップS61に戻り、次の1レコードについての判断を行なう(S67,S68,S61)。
一方、I/Oテーブルから読み出した処理対象が高機能モジュールの場合(S62でYes)、MPU11は、ディレクトリ読み出しコマンドをセットし、内部バス10a経由で送信する(S63)。MPU11は、高機能モジュールからのレスポンスを待ち(S64)、レスンポンスが正常終了したならば(S65でYes)、レスポンスとして取得した高機能モジュールから送られてきた当該高機能モジュールのディレクトリ情報を、図16に示す自己のディレクトリ情報テーブル(親ディレクトリ情報テーブル)中の子ディレクトリ情報に追加登録する(S66)。これにより、1つの高機能モジュールについての子ディレクトリ情報が一括して登録される。もちろん、この登録処理に際し、レコードポインタを適宜設定し、自ディレクトリ情報と子ディレクトリ情報が全体としてチェーン構造がとれるようにする。
そして、1つの高機能モジュールについてのディレクトリ情報の登録が完了したならば、次ステップS67に飛び、I/Oテーブルのポインタを更新し、テーブルの最終になっていなければ処理ステップS61に戻り、次の1レコードについての判断を行なう(S67,S68,S61)。
一方、高機能モジュールとの間の通信が正常終了しなかった場合(S56でNo)、そのレスポンスの内容が未定義レスポンスの場合には未対応モジュール処理を実行し(S69,S70)、未定義レスポンスでない場合には、そのレスポンスの内容にしたがって高機能モジュールの異常登録を行なう(S69,S71)。
図18は、高機能モジュール(子)側のMPUに組み込まれるファイル関連処理機能を示している。高機能モジュール(子のFA機器)のMPUは、コマンドを受信するのを待ち(S51)、コマンドを受信したならばその受信したコマンドがディレクトリ読み出しか否かを判断する(S52)。ディレクトリ読み出しの場合(図17のS63の実行により発行されたコマンド)、自己のディレクトリ情報テーブルからディレクトリを読み出すとともに、それにレスポンスコードをセットし、CPUユニットに対してレスポンスを返す(S58)。
一方、受信したコマンドがディレクトリ読み出しでない場合、MPUは、ファイル関連コマンドか否かを判断し(S54)、ファイル関連コマンドの場合には通常のファイル関連処理を実行し(S55)、ファイル関連コマンドでない場合には、通常のメモリの読み出し/書き込み処理を実行する(S56)。本実施形態は、ツール装置20とのデータの送受は、親であるCPUユニット(モジュール)が行なうので、ここでのファイル関連処理やメモリの読み出し/書き込み処理は、一般に行なわれるCPUユニットからの指示に従って行なわれるメモリデバイスに対する読み書きである(ファイルフォーマットの変換等は行なわない)。もちろん、複合モジュール機器であっても、高機能モジュールに対して直接ツール装置20がアクセス(USBケーブル/ネットワーク経由)することは可能であり、その場合には、上述した左記の実施形態に従い、高機能モジュールのMPUがツール装置20との間で適宜ファイルフォーマットの変換処理等を行ないながらファイル/メモリの読み書き等を行なうことになる。
図19,図20は、親のFA機器10′であるCPUユニット(モジュール-1)のMPU11が、ツール装置20からの要求に伴い行なうファイル関連処理機能を示している。すなわち、MPU11は、ファイルイベントが発生するのを待ち(S81)、イベントが発生したならば、そのイベントの内容がディレクトリ読み出しか否かを判断し(S82)、ディレクトリ読み出しの場合には、ワークメモリ12に格納したディレクトリ情報を読み出すとともに、レスポンスとして返送する(S83)。このとき返すレスポンス情報には、自レスポンス情報と、子レスポンス情報の両方を含むため、ツール装置20は、CPUユニット(モジュール)と高機能ユニット(モジュール)の両方のディレクトリ情報を取得し、表示することができる。
ディレクトリ読み出しでない場合には、MPU11は、ファイル読み出しか否かを判断し(S84)、ファイル読み出しの場合には、読み出し要求を受けたファイルが自ディレクトリファイルについてのものか否かを判断する(S85)。そして、自ディレクトリファイルの場合(S85でYes)、MPU11は、読み出し要求のファイルが、System下のフォルダにあるファイルか否かを判断する(S93)。そして、System下でない場合には、MPU11は、通常の読み出し処理を行ない今回の処理を終了する(S96)。一方、System下ファイルの場合には、MPU11は、該当するファイルを取得するとともに、所定のファイルフォーマットの変換を行ない(S95)、変換後のファイルフォーマットのメモリ内容をレスポンスとして返送する(S96)。
また、読み出し要求を受けたファイルが自ディレクトリファイルでない場合(S85はNo)、MPU11は読み出し要求を受けたファイルが格納されている高機能モジュール宛に、対応するコマンド(ファイル読み出しコマンド)を発行し(S86)、レスポンスを待つ(S87)。そして、レスポンスを受信したならば、MPU11は、正常終了したか否かを確認し(S88)、正常終了した場合には読み出し要求のファイルが、System下のフォルダにあるファイルか否かを判断する(S89)。そして、System下ファイルの場合には、MPU11は、レスポンスとして取得したデータに対し、所定のファイルフォーマットの変換を行ない(S90)、変換後のファイルフォーマットのデータをレスポンスとしてツール装置に返送する(S91)。一方、System下でない場合には、上記のファイルフォーマットの変換は必要ないので、通常通り、MPU11は、高機能ユニットから取得したデータとレスポンスをツール装置20に返送する。正常終了していない場合(S88でNo)には、MPU11は、高機能ユニットの異常登録を行なう(S92)。
一方、取得したファイルイベントがファイル読み出しでない場合(S84でNo)、MPU11は、ファイル書き込みか否かを判断する(S101)。そして、ファイル書き込みでもない場合には、MPU11は、イベントに対応するその他の通常の処理を行ない、今回の処理を終了する(S102)。ファイル書き込みの場合には、書き込み要求のファイルが、System下のフォルダにあるファイルか否かを判断する(S103)。System下ファイルの場合には、MPU11は、取得したファイル(ツール装置からは、一般的な汎用のファイルフォーマットのデータを取得)を、書き込み対象のメモリフォーマットに変換する(S104:S90と逆のフォーマット変換)。係る変換処理後、或いは、System下ファイルでない場合(S103でNo)、ファイルの書き込み対象が自ディレクトリファイルについてのものか否かを判断する(S105)。そして、自ディレクトリファイルの場合(S105でYes)、上述した第1実施形態と同様に、MPU11は、System下か否かを確認し(S106)、System下でない場合には、通常の書き込み処理を行ない今回の処理を終了する(S107)。一方、System下ファイルの場合には、MPU11は、System下フォルダメモリデバイス更新処理を実行する(S107)。System下フォルダメモリデバイス更新処理は、例えば第1実施形態で説明した図12に示すフローチャートを実行することができるものとする。もちろん、このS107では、S101でファイル書き込みがYesとなっているので、通常、S12の判断は常にYesとなるので、係る処理ステップをなくすなど、適宜修正しても良いし、同じ処理フローを使用することで、プログラムの共有を図るべくそのまま使用しても良い。また、S14のメモリ内容の更新では、System下ファイルの場合、S104の実行ですでにフォーマット変換されているので、そのデータで更新する。この107の処理が完了後、MPU11は、ツール装置20に対して実行終了レスポンスを返送し、今回の処理を終了する(S108)。
一方、書き込み要求を受けたファイルが自ディレクトリファイルでない場合(S105はNo)、MPUは、処理対象となるファイルが書き込み許可されているものか否かを判断する(S106)。CPUユニットは、ワークメモリ12に記憶保持したディレクトリ情報テーブルに、子ディレクトリ情報も併せて格納しているので、その情報中のファイル属性を確認し、書き込み許可されているか否かを判断できる。そして、書き込み許可されていないファイルの場合、CPUユニットのMPUは、実行終了レスポンス(書き込み不可を返送する(S108)。もちろん、書き込み要求を受けたファイルを高機能モジュール側に転送した場合、高機能モジュール側から書き込み不可のレスポンスを受けるので、それをツール装置20に返送しても良いが、CPUユニット側で書き込み可否の判断を行なうことで、無駄な処理を無くし、内部バス間の通信負荷を軽減するとともに、各ユニットでのMPUの処理負荷の軽減を図ることができ、さらに、より早くレスポンスを返すことかできるようになる。
そして、書き込み許可されたファイルの場合には、CPUユニットのMPU11は、書き込み要求を受けたファイルが格納されている高機能モジュール宛に、対応するコマンド(ファイル書き込みコマンド)を発行し(S111)、レスポンスを待つ(S112)。そして、レスポンスを受信したならば、MPU11は、正常終了したか否かを確認し(S113)、正常終了した場合には、実行終了レスポンス(正常終了)をツール装置20に返送する(S108)。また、正常終了していない場合(S113でNo)には、MPU11は、高機能ユニットの異常登録を行なう(S114)。