(実施形態1)
本実施形態の増設記憶装置1は、図2に示すように、プログラマブルロジックコントローラ(以下、「PLC(Programmable LogicControllerの略)」という)2に接続され、PLC2にメモリを増設するために用いられる。この増設記憶装置1は、PLC2と共にPLCシステムを構築する。
以下ではまず、PLC2の構成について簡単に説明する。
PLC2は、図2に示すように、I/Oバスコネクタ21と、演算処理部22と、記憶部23と、拡張コネクタ24とを備えている。これらI/Oバスコネクタ21と、演算処理部22と、記憶部23と、拡張コネクタ24とは、データを相互に交換できるように内部バスによって相互に接続されている。
I/Oバスコネクタ21は、外部機器(図示せず)を接続するためのコネクタである。ここでいう外部機器は、たとえばスイッチやセンサのようにPLC2へデータを出力する装置、リレーや表示器のようにPLC2から入力されるデータに応じた動作を実行する装置、PLC2との間で双方向にデータのやり取りを行う装置を含む。これらの外部機器は、I/Oバスコネクタ21を介してPLC2の内部バスに接続されることによって、演算処理部22に電気的に接続される。
記憶部23は、外部機器をシーケンス制御するためのシーケンスプログラムや、シーケンスプログラムの実行処理を管理するファームウェア(システムプログラム)等の各種プログラムを記憶している。さらに、詳しくは後述するが増設記憶装置に搭載されているメモリを識別するための識別子等の情報も、記憶部23に記憶されている。ここで、記憶部23は、たとえばバックアップ用の電源(図示せず)が併設された揮発性のRAM(Random AccessMemory)231と、不揮発性のROM(Read Only Memory)232とを有している。記憶部23は、PLC2のユーザが専用のツール(ソフトウェア)を使用して作成するシーケンスプログラム等についてはRAM231に記憶し、ファームウェア等についてはROM232に記憶する。
なお、RAM231は、演算処理部22の演算処理に用いられるワーキングメモリも兼ねている。記憶部23は、書き換え可能な不揮発性の記憶装置、たとえばEEPROM(ElectricallyErasable Programmable ROM)やハードディスク等を用いて構成されていてもよい。記憶部23は、この種の記憶装置にシーケンスプログラムを記憶する場合、バックアップ用の電源が省略されてもよい。
演算処理部22は、記憶部23に記憶されているファームウェア上で、シーケンスプログラムを実行する。つまり、演算処理部22は、I/Oバスコネクタ21を介して外部機器から入力された外部信号に応じてシーケンスプログラムを実行し、外部機器をシーケンス制御するための制御信号を生成してI/Oバスコネクタ21経由で外部機器へ出力する。演算処理部22は、ASIC(ApplicationSpecific Integrated Circuit)221およびCPU(Central ProcessingUnit)222を主構成とし、これらの周辺回路を具備して構成されている。
演算処理部22は、単純な命令や高速処理が要求される命令については、それ専用に特化された回路構成のASIC221にて実行し、その他の命令をCPU222で実行することにより、総合的な処理速度の高速化を図っている。なお、この構成に限らず、演算処理部22は、PLC2が動作する上で必要な演算処理を全てCPU222で実行してもよい。
拡張コネクタ24は、増設記憶装置と電気的に接続するためのコネクタである。つまり、PLC2は、拡張コネクタ24に増設記憶装置が接続されることにより、記憶部23に増設記憶装置内のメモリが増設されることになり、記憶部23の記憶容量が拡張される。ここで、拡張コネクタ24に接続される増設記憶装置は1種類に限定されず、拡張コネクタ24は、本実施形態の増設記憶装置1を含む複数種類の増設記憶装置に対応するように構成されている。
上述した構成のPLC2には、データの読み出しおよび書き込みが可能なフラッシュROM(フラッシュメモリ)等のROMからなるメモリを搭載した増設記憶装置が、適合(対応)している。つまり、ROMからなるメモリを搭載した増設記憶装置が拡張コネクタ24に接続されると、PLC2は、増設記憶装置のメモリを認識し、このメモリに対して記憶部23と同じようにデータの読み出しおよび書き込みを行うことができる。これによりPLC2は記憶部23の記憶容量が拡張される。
たとえば、増設記憶装置のメモリにPLC2のユーザが専用のツールを使用して作成したシーケンスプログラムが書き込まれ、この増設記憶装置が接続されることにより、PLC2は、増設記憶装置内のシーケンスプログラムを使用することができる。この場合、PLC2は、シーケンスプログラムを増設記憶装置から直接読み出して実行してもよいし、増設記憶装置から記憶部23のRAM231に一旦読み出して、RAM231内のシーケンスプログラムを実行してもよい。また、増設記憶装置は、PLC2の記憶容量を単に増加させるだけでなく、たとえばシーケンスプログラムのバックアップや、シーケンスプログラムだけを製造メーカに持ち込んでシーケンスプログラムの解析を行ったりする際にも用いられる。
ところで、本実施形態の増設記憶装置1は、上述のようにPLC2に適合したフラッシュROM等のROMからなるメモリに代えて、上記PLC2に不適合なRAMからなるメモリ(実装メモリ)を搭載している。そのため、この増設記憶装置1は、本来ならばPLC2に接続されてもメモリがPLC2に認識されず、メモリに対してPLC2がデータの読み書きを行うことができない。そこで、本実施形態では、増設記憶装置1は、以下に説明する構成を採用することにより、RAMを搭載しながらも、RAMに対応していないPLC2をそのまま使用できるようにしている。
すなわち、本実施形態の増設記憶装置1は、図1に示すように、RAMからなる実装メモリ11と、実装メモリ11をPLC2に適合させる適合化処理部12と、PLC2に接続されるコネクタ13とを備えている。増設記憶装置1は、コネクタ13をPLC2の拡張コネクタ24(図2参照)に接続することによって、PLC2と電気的に接続される。
実装メモリ11は、データの読み出しおよび書き込みが可能な非同期SRAM(Static RAM)からなる。さらに、実装メモリ11は、フラッシュROM等のROMからなるメモリに代えて搭載されているので、ここでは、ROMと同様に不揮発性であるnvSRAM(不揮発性SRAM)やMRAM(MagnetoresistiveRAM)が実装メモリ11として用いられる。あるいは、SRAMが、このSRAMに電源供給するバックアップ電源と組み合わされることにより、不揮発性の実装メモリ11を構成していてもよい。実装メモリ11は、適合化処理部12を介してコネクタ13に接続されており、PLC2によるデータの読み出しや書き込みについては、適合化処理部12を通して行われる。
適合化処理部12は、実装メモリ11をROMからなるメモリに見せ掛けることによりPLC2に適合させる偽装回路121と、信号の電圧レベルを変換する信号変換部122と、電源電力の電圧レベルを変換する電源変換部123とを有している。
信号変換部122は、PLC2から入力される信号を、実装メモリ11に適合する電圧レベルに変換して実装メモリ11に出力し、また、実装メモリ11から入力される信号を、PLC2に適合する電圧レベルに変換してPLC2に出力する。ここでは、信号変換部122は、図1に示すように双方向バッファ124とバッファ125とで構成されている。
双方向バッファ124は、電圧レベルの異なる複数種類の信号の各々に合わせて、複数の閾値が設定されている。ここでは、“H”(ハイ)の電圧レベルが5V、“L”(ロー)の電圧レベルが0Vの信号のH/Lを判別するための5V用閾値と、“H”の電圧レベルが3.3V、“L”の電圧レベルが0Vの信号のH/Lを判別するための3V用閾値とが設定されている。双方向バッファ124は、PLC2から出力されるDATA信号の電圧レベルが5V用閾値以上である場合には、このDATA信号が“H”であると判断し、電圧レベルが3.3VのDATA信号を偽装回路121を介して実装メモリ11へ出力する。一方、双方向バッファ124は、PLC2から出力されるDATA信号の電圧レベルが5V用閾値未満の場合には、このDATA信号が“L”であると判断し、電圧レベルが0VのDATA信号を偽装回路121を介して実装メモリ11へ出力する。
また、双方向バッファ124は、実装メモリ11から出力されるDATA信号の電圧レベルが3V用閾値以上である場合には、このDATA信号が“H”であると判断し、電圧レベルが5VのDATA信号をPLC2へ出力する。一方、双方向バッファ124は、実装メモリ11から出力されるDATA信号の電圧レベルが3V用閾値未満の場合には、このDATA信号が“L”であると判断し、電圧レベルが0VのDATA信号をPLC2へ出力する。
このように、双方向バッファ124は、DATA信号の“H”、“L”の電圧レベルを、PLC2に適合した5V、0Vと、実装メモリ11に適合した3.3V、0Vとの間で双方向に変換する。
バッファ125は、PLC2から出力される信号に合わせて、5V用閾値のみが設定されている。バッファ125は、PLC2から出力されるADDR信号、CS信号、RD信号、WR信号の各信号について、電圧レベルが5V用閾値以上である場合、この信号が“H”であると判断して、電圧レベルが3.3Vの信号を実装メモリ11へ出力する。一方、バッファ125は、PLC2から出力されるADDR信号、CS信号、RD信号、WR信号の各信号について、電圧レベルが5V用閾値未満の場合、この信号が“L”であると判断して、電圧レベルが0Vの信号を実装メモリ11へ出力する。
このように、バッファ125は、PLC2から出力されるADDR信号、CS信号、RD信号、WR信号の各信号の電圧レベルを、PLC2に適合した5V、0Vから、実装メモリ11に適合した3.3V、0Vへと単方向で変換する。
ここで、DATA信号は、データを表す信号であり、コネクタ13から双方向バッファ124および偽装回路121を介して実装メモリ11に接続されるDATAバスによって、PLC2と実装メモリ11との間で双方向に伝送される。ADDR信号は、実装メモリ11のメモリアドレスを表す信号であって、コネクタ13からバッファ125および偽装回路121を介して実装メモリ11に接続されるADDRバスによって、PLC2から実装メモリ11へ伝送される。CS信号は、実装メモリ11を制御するための信号、RD信号は、実装メモリ11からデータの読み出しを行うためのストローブ信号であって、WR信号は、実装メモリ11へデータの書き込みを行うためのストローブ信号である。CS信号、RD信号、WR信号は、コネクタ13からバッファ125および偽装回路121を介して実装メモリ11に接続されるCSライン、RDライン、WRラインのそれぞれによって、PLC2から実装メモリ11へ伝送される。
電源変換部123は、PLC2から供給される電力の電圧レベルを、実装メモリ11および偽装回路121の駆動に適した電圧レベルに変換する。電源変換部123は、たとえばレギュレータICを主構成とし、PLC2から供給される電源電圧(たとえば5V)を、実装メモリ11および偽装回路121の駆動電圧(たとえば3.3V)に変換する。
偽装回路121は、PLC2と実装メモリ11との間において、データ交換(データの読み出しおよび書き込み)の手順を、増設用としてPLC2に適合した適合メモリと同じ手順に変換することにより、実装メモリ11をPLC2に適合させている。ここでいう適合メモリは、PLC2に適合したフラッシュROM等のROMからなるメモリを想定しており、PLC2からの見かけ上、増設記憶装置1に実装されているように見せ掛けるためのメモリである。つまり、増設記憶装置1は、実際に適合メモリを搭載するのではなく、偽装回路121にて実装メモリ11を適合メモリに見せ掛けることにより、RAMを実装メモリ11として搭載しながらも、RAMに対応していないPLC2をそのまま使用可能としている。
上記構成により、図3に示すように、PLC2にあっては増設記憶装置1の適合化処理部12に対しフラッシュROMとしてアクセス可能になり、且つ適合化処理部12にあっては実装メモリ11に対しRAMとしてアクセス可能になる。その結果、PLC2と増設記憶装置1との間においては、PLC2は、見かけ上フラッシュROMとしての増設記憶装置1にアクセスすることで、実装メモリ11に対してデータの読み書きが可能になる。
ここにおいて、PLC2は、増設記憶装置とデータ交換(データの読み出しおよび書き込み)を行うためには、増設記憶装置が搭載しているメモリに対応した所定の手順に従って動作する必要がある。ただし、この手順を構成する命令コードやデータ転送単位等、あるいは手順そのものがメモリの型式によって異なる場合があるため、PLC2は、メモリの型式ごとに異なる手順を判断するべく、まずメモリの型式を特定する必要がある。
そのため、一般的な増設記憶装置は、搭載しているメモリに対応する識別子(ID)をこのメモリ内に予め保持しており、PLC2から識別子を要求する旨の信号(識別子要求信号)を受けると、メモリが識別子をPLC2に返信する。言い換えれば、PLC2は、識別子要求信号を送信することによって、増設記憶装置のメモリからこのメモリに対応する識別子を読み出す。これにより、PLC2においては、識別子によって増設記憶装置に搭載されているメモリが適合するか否かを識別することができ、適合する場合には、そのメモリに応じた所定の手順に従ってデータの読み書きを行う。なお、ここでいう識別子は、PLC2においてメモリが適合するか否かを識別するための識別子であって、PLC2が採用する手順を判断できればよいので、メモリの型式(品番)ごとに設定されている。
本実施形態の増設記憶装置1においては、実装メモリ11がそもそもPLC2に不適合なRAMからなるため、実装メモリ11そのものには識別子要求信号に応答して識別子を返信する機能は備わっていない。そこで、本実施形態では、適合化処理部12の偽装回路121が、適合メモリに対応した識別子を偽装識別子として予め記憶している識別子記憶部38(図4参照)を有し、PLC2からの識別子要求信号を受けると偽装識別子をPLC2に返信する。これにより、増設記憶装置1は、PLC2からの見かけ上、偽装識別子に対応するメモリ(適合メモリ)を搭載しているように見え、PLC2においては、適合メモリに応じた所定の手順に従ってデータの読み書きを行うことができる。
以下、偽装回路121の構成についてさらに詳しく説明する。
偽装回路121は、図4に示すように、PLC2側となる端子311〜315(以下、各々を区別しないときには「端子31」という)と、実装メモリ11側となる端子321〜325(以下、各々を区別しないときには「端子32」という)とを有している。つまり、端子31は信号変換部122を介してコネクタ13に接続され、端子32は実装メモリ11に接続されている。さらに、偽装回路121は、バッファ331〜338(以下、各々を区別しないときには「バッファ33」という)と、マルチプレクサ(図中MX)34と、アドレス判別部35と、コマンド判別部36と、アンド回路37とを有している。さらに、図4の例では、偽装回路121には、メーカIDを記憶するメーカID記憶部381と、デバイスIDを記憶するデバイスID記憶部382とからなる識別子記憶部38が設けられている。メーカID、デバイスIDについては後述する。
PLC2側の端子311には、コネクタ13に接続されるDATAバスが接続され、実装メモリ11側の端子321には、実装メモリ11に接続されるDATAバスが接続される。偽装回路121の内部においては、端子311は、バッファ331,332を介して端子321に接続され、さらに、端子321は、バッファ334とマルチプレクサ34とバッファ333とを介して端子311に接続されている。ここで、バッファ331の出力は、コマンド判別部36のデータ入力にも接続されている。バッファ331は分岐ロスを補償するように予め設定された増幅率でDATA信号を増幅し、バッファ332〜334は、偽装回路121内での伝送ロスを補償するように予め設定された増幅率でそれぞれDATA信号を増幅する。
マルチプレクサ34は、3入力1出力のセレクタであって、アドレス判別部35から入力されるセレクト信号に応じてA入力、B入力、C入力の3入力から選択した入力と、出力とを電気的に接続する。A入力は、バッファ334の出力に接続され、B入力はメーカID記憶部381に接続され、デバイスID記憶部382に接続されている。マルチプレクサ34の出力は、バッファ333の入力に接続されている。
PLC2側の端子312には、コネクタ13に接続されるADDRバスが接続され、実装メモリ11側の端子322には、実装メモリ11に接続されるADDRバスが接続される。偽装回路121の内部においては、端子312は、バッファ335,336を介して端子322に接続されている。ここで、バッファ335の出力はアドレス判別部35のアドレス入力およびコマンド判別部36のアドレス入力にも接続されている。バッファ335は分岐ロスを補償するように予め設定された増幅率でADDR信号を増幅し、バッファ336は偽装回路121内での伝送ロスを補償するように予め設定された増幅率でADDR信号を増幅する。
コマンド判別部36は、データ入力から入力されたDATA信号と、アドレス入力から入力されたADDR信号とに基づいて、PLC2が実装メモリ11に指示したコマンド(命令)を判別する。さらに、コマンド判別部36は、後述のモード信号を出力するモード出力がアドレス判別部35のモード入力に接続されている。
実装メモリ11に対するコマンドは、アドレスおよびデータを含んでおり、コマンドにより実装メモリ11における所定のアドレスに所定のデータが書き込まれることによって、実装メモリ11は、このコマンドに対応する動作を実行するように構成されている。
コマンド判別部36は、PLC2からのコマンドを判別し、判別結果に応じて増設記憶装置1の動作モードを切り替える。本実施形態では、コマンド判別部36は、識別子を読み出すID読出モードと、実装メモリ11のデータを読み出すデータ読出モードと、第1のメモリ11にデータを書き込むデータ書込モードとの3つのモード間で動作モードを切り替える。つまり、コマンド判別部36は、入力されたDATA信号およびADDR信号が識別子を読み出すコマンド(つまり識別子要求信号)である場合、モード出力からID読出モードを表すモード信号を出力する。一方、コマンド判別部36は、入力されたDATA信号およびADDR信号が識別子を読み出すコマンドではない場合、モード出力からデータ読出モードあるいはデータ書込モードを表すモード信号を出力する。
アドレス判別部35は、アドレス入力から入力されるADDR信号およびモード入力から入力されるモード信号に基づいて、マルチプレクサ34に出力するセレクト信号を決定する。アドレス判別部35は、ADDR信号が適合メモリの識別子を格納してあるアドレスを表し、且つモード信号がID読出モードを表している場合には、B入力またはC入力を出力に接続するようにマルチプレクサ34を制御するセレクト信号を出力する。これ以外の場合には、アドレス判別部35は、A入力を出力に接続するようにマルチプレクサ34を制御するセレクト信号を出力する。
識別子記憶部38は、PLC2に適合したフラッシュROM等のROMからなる適合メモリに対応する識別子を、偽装識別子として予め記憶している。識別子は、1ないし複数の符号からなる符号列であり、メモリの型式(品番)ごとに対応付けられている。ここでは、識別子は、対応するメモリの製造メーカを特定するメーカID(メーカ識別子)と、対応するメモリの品番を特定するデバイスID(デバイス識別子)とで構成されている。本実施形態では一例として、メーカID記憶部381に偽装識別子のメーカIDとして“BFH”が記憶され、デバイスID記憶部382には偽装識別子のデバイスIDとして“10H”が記憶されていると仮定する。なお、メーカID記憶部381およびデバイスID記憶部382は、EEPROMやROM等の不揮発性の記憶素子を用いて具現化される。
端子313,314,315には、それぞれコネクタ13に接続されるCSライン、RDライン、WRラインが接続され、端子323,324,325には、それぞれ実装メモリ11に接続されるCSライン、RDライン、WRラインが接続される。偽装回路121の内部においては、端子313,314は、それぞれバッファ337,338を介して端子323,324に接続されている。ここで、バッファ335の出力はアドレス判別部35のアドレス入力およびコマンド判別部36のアドレス入力にも接続されている。バッファ337,338は偽装回路121内での伝送ロスを補償するように予め設定された増幅率でそれぞれCS信号、RD信号を増幅する。
また、端子315は、アンド回路37の第1入力に接続され、端子325は、アンド回路37の出力に接続されている。アンド回路37の第2入力には、コマンド判別部36からイネーブル信号が入力される。コマンド判別部36は、ID読出モードおよびデータ読出モードでは“L”、データ書込モードでは“H”のイネーブル信号を出力する。
アンド回路37は、第1入力に入力されるWR信号と第2入力に入力されるイネーブル信号との論理積(アンド)をとり、その結果に応じて、端子325に「H」または「L」のWR信号を出力する。これにより、アンド回路37は、ID読出モードおよびデータ読込モードにおいて、端子315から端子325へのWR信号の伝達を禁止するライトプロテクトとして機能する。つまり、アンド回路37は、ID読出モードとデータ読込モードとにおいては、コマンド判別部36からのイネーブル信号が“L”であるため、端子315にWR信号が入力されても、このWR信号を端子325へ伝達することはない。
すなわち、RAMからなる実装メモリ11は、WR信号がイネーブルになるとDATAバスの値を書き込んでしまう。また、RAMにはそもそもID(識別子)読出のためのモードが存在しない。そこで、本実施形態では、実装メモリ11が、コマンド操作のためのデータを誤って書き込むことを防止するため、偽装回路121は、通常時にはアンド回路37によって実装メモリ11へWR信号が伝達されないようにしている。コマンド判別部36から“H”のイネーブル信号が出力されるデータ書込モードにあっては、アンド回路37はライトプロテクトとして機能せず、PLC2から実装メモリ11へWR信号が伝達可能となる。
上述したように構成される偽装回路121は、プログラマブルロジックデバイス(以下、「PLD(Programmable LogicDevice)の略」という)を用いて実現される。ここでいうPLDには、CPLD(Complex PLD)とFPGA(Field Programmable Gate Array)とを含んでいる。これにより、増設記憶装置1は、図5(a)に示すように、基板100に、コネクタ13と、実装メモリ11としてのnvSRAMと、偽装回路121としてのPLDと、電源変換部123と、双方向バッファ124およびバッファ125とが実装されて構成される。この増設記憶装置1は、コネクタ13がPLC2の拡張コネクタ24に接続されることにより、実装メモリ11が適合化処理部12を介してPLC2の内部バスに接続され、この状態で、PLC2にメモリを増設するように機能する。
一方、PLC2に適合するフラッシュROMからなるメモリを搭載した従来の増設記憶装置は、図5(b)に示すように、基板100に、コネクタ13とフラッシュROM110とが実装されて構成される。このように、本実施形態の増設記憶装置1は、たとえば実装部品のパッケージをTSOP(Thin Small OutlinePackage)として小型化すれば、パッケージをDIP(Dual InlinePackage)とした従来の増設記憶装置と、同程度のサイズで実現することができる。なお、駆動用の電源電圧についても、本実施形態の増設記憶装置1は従来の増設記憶装置に比べて低電圧化されている。
次に、本実施形態に係る増設記憶装置1を用いたPLCシステムの動作について説明する。
増設記憶装置1がPLC2に接続された状態でPLC2が起動、あるいはPLC2の稼働中に増設記憶装置1がPLC2に接続されると、増設記憶装置1およびPLC2からなるPLCシステムが起動する。PLCシステムが起動すると、PLC2は、増設記憶装置1との間でデータ交換(データの読み出しおよび書き込み)を可能とするべく、増設記憶装置1に対して識別子要求信号を送信する。
増設記憶装置1は、PLC2から電源変換部123経由で電力供給されて偽装回路121および実装メモリ11が動作し、識別子要求信号を受信すると、偽装回路121が識別子記憶部38に記憶されている偽装識別子をPLC2に返信する。
本実施形態においては、PLC2が増設記憶装置1から識別子(ID)を読み出すためのコマンド(つまり識別子要求信号)は、たとえば図6に示すように5つのステップによって構成されている。なお、図6では、「1st Write」が第1ステップ、「2nd Write」が第2ステップ、「3rd Write」が第3ステップ、「READ」が第4,5ステップを表し、「Adde1」にアドレス、「Data」にデータを示している。
具体的に説明すると、PLC2は増設記憶装置1に対し、識別子要求信号として、まず第1ステップで、第1アドレス(“5555H”)のADDR信号および第1データ(“AAH”)のDATA信号を送信する。これらADDR信号およびDATA信号は、それぞれ信号変換部122経由で偽装回路121に入力される。
次の第2ステップでは、PLC2は、第2アドレス(“2AAAH”)のADDR信号および第2データ(“55H”)のDATA信号を増設記憶装置1に送信し、これらADDR信号およびDATA信号は、第1ステップと同様に偽装回路121に入力される。次の第3ステップでは、PLC2は、第3アドレス(“5555H”)のADDR信号および第3データ(“90H”)のDATA信号を増設記憶装置1に送信し、これらADDR信号およびDATA信号は、第1ステップと同様に偽装回路121に入力される。
第1〜3ステップでは、ADDR信号、DATA信号を受けた偽装回路121は、ADDR信号をアドレス判別部35、コマンド判別部36の各々に入力し且つ実装メモリ11に出力し、DATA信号をコマンド判別部36に入力し且つ実装メモリ11に出力する。コマンド判別部36は、第1〜3ステップでADDR信号およびDATA信号が識別子を要求するコマンドであると判断すると(つまりADDR信号が第1〜3アドレスで、DATA信号が第1〜3データであると)、ID読出モードに切り替える。つまり、コマンド判別部36は、アドレス判別部35へID読出モードを表すモード信号を出力し、アンド回路37へのイネーブル信号を“L”に維持する。
次に、第4ステップでは、PLC2は、第4アドレス(“0000H”)のADDR信号を増設記憶装置1に送信し、このADDR信号は、第1ステップと同様に偽装回路121に入力される。次の第5ステップでは、PLC2は、第5アドレス(“0001H”)のADDR信号を増設記憶装置1に送信し、このADDR信号は、第1ステップと同様に偽装回路121に入力される。
ここで、アドレス判別部35は、ID読出モードを表すモード信号が入力されている。そのため、アドレス判別部35は、第4,5ステップでADDR信号が識別子を格納してあるアドレスであると判断すると(つまりADDR信号が第4,5アドレスであると)、B入力またはC入力を出力に接続するようにマルチプレクサ34を制御する。ここでは、マルチプレクサ34は、ADDR信号が第4アドレスのとき(第4ステップ)にB入力を出力に接続し、ADDR信号が第5アドレスのとき(第5ステップ)にC入力を出力に接続するように、セレクト信号によって制御される。
したがって、マルチプレクサ34は、第4ステップにてB入力に接続されたメーカID記憶部381内のメーカID(“BFH”)を出力し、第5ステップにてC入力に接続されたデバイスID記憶部382内のデバイスID(“10H”)を出力する。これにより、偽装回路121は、第4,5ステップにおいて、偽装識別子(メーカIDが“BFH”でデバイスIDが“10H”)をDATA信号として、信号変換部122経由でPLC2に送信することになる。
また、このとき、イネーブル信号は“L”であるから、アンド回路37は、ライトプロテクトとして機能し実装メモリ11へのWR信号の伝達を禁止している。そのため、適合化処理部12は、ID読出モードにおいては、RAMからなる実装メモリ11がコマンド操作のためのデータを誤って書き込むことを防止できる。
上述したような動作により、増設記憶装置1は、PLC2から識別子要求信号を受信すると、実装メモリ11がRAMであるにも関わらず、適合化処理部12からPLC2に適合した適合メモリの識別子(偽装識別子)をPLC2へ返信することになる。これにより、PLC2は、増設記憶装置1に搭載されているメモリ(実際には、偽装回路121が保持している偽装識別子に対応するメモリ)の型式を特定でき、以降、この型式に対応した手順に従って増設記憶装置1との間でデータ交換を実行する。
PLC2との間でデータ交換が行われる際の増設記憶装置1の動作について、以下に間単に説明する。
まず、PLC2が増設記憶装置1の実装メモリ11からデータを読み出す場合には、増設記憶装置1は、コマンド判別部36でのコマンドの判別結果に応じて、動作モードをデータ読出モードに切り替える。データ読出モードにおいては、増設記憶装置1は、RAMからなる実装メモリ11を搭載しているものの、フラッシュROM(フラッシュメモリ)を搭載している場合と同じように動作する。つまり、増設記憶装置1がデータ読出モードにあれば、アドレス判別部35は、A入力を出力に接続するようにセレクト信号によってマルチプレクサ34を制御する。これにより、偽装回路121はDATA信号、ADDR信号、RD信号をスルーさせるので、PLC2は、実装メモリ11からデータを読み出すことができる。
また、このときコマンド判別部36から出るイネーブル信号は“L”に維持されているから、アンド回路37は、ライトプロテクトとして機能し実装メモリ11へのWR信号の伝達を禁止している。そのため、適合化処理部12は、データ読出モードにおいては、RAMからなる実装メモリ11がコマンド操作のためのデータを誤って書き込むことを防止できる。
一方、PLC2が増設記憶装置1の実装メモリ11にデータを書き込む場合には、増設記憶装置1は、コマンド判別部36でのコマンドの判別結果に応じて、動作モードをデータ書込モードに切り替える。本実施形態においては、PLC2がデータを書き込むためのコマンドは、たとえば図7に示すように5つのステップによって構成される。なお、図7では、「1st Write」が第1ステップ、「2nd Write」が第2ステップ、「3rd Write」が第3ステップ、「Data Write」が第4,5ステップを表し、「Adde1」にアドレス、「Data」にデータを示している。
つまり、PLC2は増設記憶装置1に対し、まず第1ステップで、第1アドレス(“5555H”)および第1データ(“AAH”)をADDR信号、DATA信号として送信する。さらに、PLC2は、第2ステップで第2アドレス(“2AAAH”)および第2データ(“55H”)を、第3ステップでは第3アドレス(“5555H”)および第3データ(“A0H”)をADDR信号、DATA信号として増設記憶装置1に送信する。これらADDR信号およびDATA信号は、それぞれ信号変換部122経由で偽装回路121に入力される。コマンド判別部36は、第1〜3ステップでコマンドを判別し、データ書込モードに切り替える。
データ書込モードにおいては、増設記憶装置1は、コマンド判別部36から“H”のイネーブル信号が出力されるので、アンド回路37によるライトプロテクトが解除され、PLC2から実装メモリ11へWR信号が伝達可能となる。また、増設記憶装置1がデータ書込モードにあれば、アドレス判別部35は、A入力を出力に接続するようにセレクト信号によってマルチプレクサ34を制御する。
つまり、PLC2は、データを書き込む場合、増設記憶装置1に対してライトプロテクトの解除コマンドを発行し、このコマンドを受け付けることによって、偽装回路121はアンド回路37によるライトプロテクトを解除する。これにより、偽装回路121は、PLC2と実装メモリ11との間でDATA信号、ADDR信号、RD信号、さらにWR信号をスルーさせる。
そのため、増設記憶装置1がデータ書込モードにあれば、PLC2は、実装メモリ11に対してデータを書き込むことができる。図7の例では、第4ステップで実装メモリ11の第4アドレス(“0000H”)に所定の第4データ(“**H”)が書き込まれ、第5ステップで実装メモリ11の第5アドレス(“0001H”)に所定の第5データ(“**H”)が書き込まれる。実装メモリ11へのデータの書き込みが完了すれば、コマンド判別部36は、データ書込モードを終了して“L”のイネーブル信号を出力する。これにより、アンド回路37は、再びライトプロテクトとして機能し実装メモリ11へのWR信号の伝達を禁止するので、データ書込モード以外で、RAMからなる実装メモリ11がコマンド操作のためのデータを誤って書き込むことを防止できる。
また、RAMとフラッシュROMとでは書き込み可能なデータの単位が異なっており、RAMでは1バイト単位でデータが書き込まれるのに対し、フラッシュROMでは数バイト単位でデータの書き込みが行われる。そこで、本実施形態では、適合化処理部12は、RAMである実装メモリ11から読み出されるデータおよび実装メモリ11に書き込まれるデータを一時的に保持するバッファを有し、PLC2からの見かけ上、数バイト単位でデータが読み書きされるようにする。つまり、増設記憶装置1は、信号変換部123の双方向バッファ124およびバッファ125が上記バッファとして機能し、PLC2との間でのデータ交換をフラッシュROMに合わせて数バイト単位で行っている。
以上説明した本実施形態の増設記憶装置1によれば、PLC2は、適合化処理部12が保持する偽装識別子に基づいて、実装メモリ11とのデータ交換を実行するための手順を判断することができ、搭載されているメモリがRAMであってもデータ交換可能になる。要するに、この増設記憶装置1は、実装メモリ11としてRAMを搭載しながらも、RAMに対応していないPLC2に対して、PLC2に適合したメモリ(ROM)を搭載しているように見せ掛けることができる。したがって、増設記憶装置1は、RAMを搭載しながらも、RAMに対応していないPLC2をバージョンアップ等することなくそのまま使用することができる、という利点がある。
しかも、この増設記憶装置1によれば、非同期SRAM系のメモリデバイスを実装メモリ11として用いることができるので、ROMのみしか使用することができない従来の増設記憶装置に比べて、メモリデバイスの選択肢が多くなるという利点もある。
また、本実施形態の増設記憶装置1は信号変換部122を備えているので、PLC2における入出力信号の電圧レベルと、増設記憶装置1における入出力信号の電圧レベルとが不一致であっても、増設記憶装置1とPLC2とが相互に信号を授受できる。
さらに、本実施形態の増設記憶装置1は電源変換部123を備えているので、PLC2から供給される電力の電圧レベルと異なる電圧レベルで駆動される実装メモリ11および偽装回路121を採用することができる。
また、実装メモリ11は、不揮発性のRAM、あるいはRAMにバックアップ電源が組み合わされて用いられているので、PLC2からの電源供給が遮断されてもデータを保持し続けることができる。したがって、増設記憶装置1は、不揮発性という点でも、フラッシュROMを搭載した増設記憶装置と同様に扱うことができる。
さらにまた、適合化処理部12は、データを一時的に保持するバッファを有するので、RAMとフラッシュROMとの間における書き込み可能なデータの単位の差を埋めることができる。したがって、PLC2にあっては、RAMからなる実装メモリ11に対しても、見かけ上、フラッシュROMと同じように複数バイト単位でデータ交換が可能になる。
また、偽装回路121はPLDで構成されているので、比較的簡単にプログラムの書き換えが可能であり、識別子記憶部38内の偽装識別子がPLC2に適合していない場合に、偽装識別子の書き換えによって対応することも可能である。さらに、PLDで構成された偽装回路121は起動が比較的早いので、PLC2はPLCシステムの起動と略同時に増設記憶装置1にアクセス可能になる。なお、偽装回路121はASICで構成されていてもよい。
ところで、上述した増設記憶装置1の適合化処理部12は、実装メモリ11と切り離されて、実装メモリ11の代わりに増設メモリ(図示せず)が着脱自在に接続されるアダプタ装置を構成してもよい。
アダプタ装置は、上述の適合化処理部12およびコネクタ13に加え、増設メモリを接続するためのメモリ用コネクタを一体に備えて構成される。このアダプタ装置は、PLC2と、データの読み出しおよび書き込みが可能なRAMからなる増設メモリとに接続され、増設メモリによってPLC2にメモリを増設する。なお、コネクタ13あるいはメモリ用コネクタは、適合化処理部12と別体に設けられ、適合化処理部12との間がケーブルで接続されていてもよい。
このように構成されるアダプタ装置によれば、PLC2は、適合化処理部12が保持する偽装識別子に基づいて、増設メモリとのデータ交換を実行するための手順を判断することができ、増設メモリがRAMであっても増設メモリとの間でデータ交換可能になる。要するに、アダプタ装置は、増設メモリとしてRAMを使用しながらも、RAMに対応していないPLC2に対して、PLC2に適合したメモリ(ROM)を搭載しているように見せ掛けることができる。つまり、増設メモリとPLC2との間にアダプタ装置を介在させるだけで、PLC2に不適合なメモリであっても増設メモリとして使用可能になるので、PLC2のユーザにおいては、増設メモリとして使用可能なメモリデバイスの選択肢が多くなる。
(実施形態2)
本実施形態の増設記憶装置1は、識別子記憶部38が偽装識別子を予め複数記憶している点で実施形態1の増設記憶装置1と相違する。以下、実施形態1と同様の構成については、共通の符号を付して適宜説明を省略する。
本実施形態では、適合化処理部12の偽装回路121は、識別子記憶部38に記憶されている複数の偽装識別子の中から、一の偽装識別子を選択する選択部(図示せず)を有している。具体的には、識別子記憶部38は、メーカID記憶部381とデバイスID記憶部382とをそれぞれ複数ずつ有し、選択部は、複数の偽装識別子から一の偽装識別子を選択するスイッチ回路にて構成される。ここで、複数の仮想デバイスに対応する偽装識別子が、それぞれメーカIDとデバイスIDに分離されて、各メーカID記憶部381および各デバイスID記憶部382に予め記憶される。
選択部は、たとえば識別子記憶部38とマルチプレクサ34との間に挿入されたディップスイッチからなり、複数のメーカID記憶部381のうちの1つをB入力に接続し、複数のデバイスID記憶部382のうちの1つをC入力に接続する。したがって、ユーザは、選択部を操作してマルチプレクサ34のB入力、C入力の各接続先を選択することにより、1組のメーカIDおよびデバイスIDからなる偽装識別子を選択することができる。増設記憶装置1は、このようにして選択された偽装識別子を、識別子要求信号への応答として偽装回路121からPLC2に返信することになる。
以上説明した本実施形態の増設記憶装置1では、ユーザは、実際に実装メモリ11として搭載されているRAMの型式あるいはPLC2の型式に合わせて、複数の偽装識別子の中から適用する一の偽装識別子を選択することができる。要するに、偽装識別子は、PLC2からの見かけ上の増設記憶装置1が搭載しているメモリ(適合メモリ)を特定する識別子であるから、実際に搭載されているRAMの型式や接続されるPLC2の型式に合わせて変更することが望ましい。本実施形態の増設記憶装置1は、この偽装識別子を予め複数保持しているので、実際に適用する偽装識別子をこれら複数の中からユーザが任意に選択することができる。したがって、増設記憶装置1は、実装メモリ11として搭載しているRAMの型式やPLC2の型式ごとに偽装回路121を別設計とする必要がなく、偽装回路121の共通化を図ることができる。
また、本実施形態では、偽装識別子がメーカIDとデバイスIDとを含むので、メーカIDが共通する複数の偽装識別子については、メーカIDは1つ記憶されていればよく、これにより、識別子記憶部38に必要な記憶容量を少なく抑えることができる。つまり、識別子記憶部38は、メーカIDが共通でデバイスIDが異なる複数の偽装識別子を記憶する場合、メーカID記憶部381に1つのメーカIDを記憶し、デバイスID記憶部382に複数のデバイスIDを記憶すればよいので、記憶容量を少なくできる。
その他の構成および機能は実施形態1と同様である。