JP2009053963A - プログラマブルコントローラ、そのcpuモジュール - Google Patents

プログラマブルコントローラ、そのcpuモジュール Download PDF

Info

Publication number
JP2009053963A
JP2009053963A JP2007220439A JP2007220439A JP2009053963A JP 2009053963 A JP2009053963 A JP 2009053963A JP 2007220439 A JP2007220439 A JP 2007220439A JP 2007220439 A JP2007220439 A JP 2007220439A JP 2009053963 A JP2009053963 A JP 2009053963A
Authority
JP
Japan
Prior art keywords
access
request
task
processing
speed device
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
JP2007220439A
Other languages
English (en)
Other versions
JP4978373B2 (ja
Inventor
Motoharu Suzuki
元治 鈴木
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 Systems 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 Systems Co Ltd filed Critical Fuji Electric Systems Co Ltd
Priority to JP2007220439A priority Critical patent/JP4978373B2/ja
Publication of JP2009053963A publication Critical patent/JP2009053963A/ja
Application granted granted Critical
Publication of JP4978373B2 publication Critical patent/JP4978373B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Programmable Controllers (AREA)

Abstract

【課題】複数レベルのタスクを実行するマイコンが低速デバイスにアクセスする場合に、アクセス実行完了を待たずに、他の処理を実行可能にする。
【解決手段】バスインタフェース10は、マイコン側で実行する複数レベルのタスク各々に対応する複数のアクセスチャネル11,12,13を有する。各アクセスチャネルは、複数のレジスタa〜eを有する。マイコン側で任意のタスク実行中に共有メモリアクセス要求が発生すると、当該タスクのレベルに応じたアクセスチャネルにアクセスを依頼する。すなわち、要求内容を当該アクセスチャネルの上記レジスタにセットする。セット完了したら、バスインタフェース10は、直ちにRDY信号をONする(WAIT解除する)。その後は、バスアクセス制御部15が、共有メモリアクセス処理を実行する。
【選択図】図1

Description

本発明は、プログラマブルコントローラ、そのCPUモジュール等に関する。
従来の技術を図18〜図21を参照して説明する。
プログラマブルコントローラ(以下 PLC)は、例えばIEC61131-3で規格化されたプログラム言語によって記述されたアプリケーションを実行するものである。アプリケーションは実行優先度によって複数レベルのタスク(マルチタスク)をもつことができることが一般に知られている。図18に、このマルチタスク実行の様子を示している。
図18に示す例では、0レベルタスク、1レベルタスク、デフォルトタスクの3種類あり、“0レベルタスク>1レベルタスク>デフォルトタスク”の関係にある(つまり、0レベルタスクが最も実行優先度が高い)。
図示の例では、通常はデフォルトタスクを実行しているが、0レベルタスクの実行タイミング(2ms周期)又は1レベルタスクの実行タイミング(5ms周期)になる毎に、デフォルトタスクの実行を中断し、0レベルタスク又は1レベルタスクを実行する。また、図には示されていないが、1レベルタスク実行中に0レベルタスクの実行タイミングとなった場合には、1レベルタスクの実行を中断し、0レベルタスクを実行する。
また、図19に、従来のPLCの内部および外部構成例を示す。
図19に示すPLC構成例では、複数のI/Oモジュール104と複数のCPUモジュール110が、I/Oバス103に接続しており、モジュール相互に通信を行う。また、複数のCPUモジュール110は、共有メモリバス102にも接続しており、各CPUモジュール110各々が、共有メモリバス102を介して共有メモリ101にアクセスする。
各CPUモジュール110は、マイコン111、ROM112、RAM113、バスインタフェース114、I/Oインタフェース115、RDY制御部116を有する。
I/Oインタフェース115は、I/Oバス103に接続しており、他のモジュールとの通信制御を行う。バスインタフェース114は、共有メモリバス102に接続しており、共有メモリ101に対するアクセス制御を行う。
マイコン111は、RAM113またはROM112に格納されているアプリケーションプログラムを読み出しては命令の実行を行う。このアプリケーションプログラム実行中に、共有メモリアクセス処理が発生した場合には、アプリケーションはシステムソフトを呼び出す。このシステムソフトはPLCメーカ側で予め作成しておくファームウェアであり、共有メモリアクセス処理を実行する。一方、アプリケーションプログラムは顧客側で作成する。顧客側では、新たなアプリケーションプログラムを作成する際、例えば上記共有メモリへアクセスする処理を逐一記述する必要はなく、上記予め用意されているシステムソフトを呼び出せばよいので、手間が軽減される。つまり、システムソフトは、アプリケーションが呼び出すサブルーチンの様なものである。
システムソフトは、バスインタフェース114を介して、共有メモリアクセス処理を実行するが、処理が完了するまで、後述するRDY信号のためにWAIT状態となり、アプリケーションに戻らない。この為、上位レベルのタスクの実行タイミングになっても実行できないという問題が生じる。詳しくは後述する。
以下に共有メモリアクセス処理の実行について説明する。
マイコン111の上記システムソフトは、バスインタフェース114を介して共有メモリバス102上の共有メモリ101へアクセスする。
共有メモリ101は、共有メモリバス102に接続されている全CPUモジュール110からアクセス可能であり、複数アクセス者を調停機能により排他してアクセス者を決定する。このように、共有メモリアクセスには、マイコン111から見て、バスインタフェース114へのアクセスタイム、バスインタフェース114によるバス調停及び共有メモリ101へのアクセスタイムというように、内部のROM112、RAM113等へのアクセスタイムと比較して長い時間が掛かる。更に、仮に、調停で負けた場合は、他のCPUモジュール110による共有メモリアクセス完了まで待たされた後、ようやく共有メモリアクセス権が回ってくるため、さらに時間が掛かることになる。
図20に、従来のバスインタフェース114の構成例を示す。また、図21に、従来のバスインタフェース114による共有メモリアクセスタイミングチャート(リード処理の場合)例を示す。
バスインタフェース114とマイコン111とは、データバス、アドレスバス、セレクト(*CS)、リード/ライト(RD/*WT)、レディ(RDY)の各信号線が接続される。バスインタフェース114内の「内部制御信号とRDYの生成部」131は、マイコン111から送信されるセレクト*CS信号、アドレス信号により共有メモリ101へのアクセス要求を認識すると、レディ(RDY)信号をWAIT状態“L”(Low)にしてマイコン111をWAIT状態にさせておいて、バスアクセス制御部132に対してアクセス要求を出す。尚、図21に示す通り、レディ(RDY)信号は‘L’でWAIT、‘H’でRDY(WAIT解除)を意味する。
バスアクセス制御部132は、このアクセス要求に応じて共有メモリ101へのアクセスを行う。尚、バスアクセス制御部132には、データバス、アドレスバスが接続しており、アドレスバスを介して共有メモリ101へのアクセスアドレスが入力される。そして、リード/ライト(RD/*WT)信号がライト要求*WTであれば、データバスを介して共有メモリ101への書き込みデータが入力され、バスアクセス制御部132は、このデータを共有メモリ101の上記アクセスアドレスの領域に書き込む。一方、リード/ライト(RD/*WT)信号がリード要求RDであれば、バスアクセス制御部132は、共有メモリ101の上記アクセスアドレスの領域からデータを読み出して、このリードデータをデータバスに出力する。これらの入力/出力の相手先は、当然、マイコン111である。
図21はリードの場合の例なので、ここではリード要求RDに応じて、共有メモリ101へのリードアクセスを行うものとする。
バスアクセス制御部132は、共有メモリバス102上でのリードアクセスが完了すると、上記の通りデータバス上に読出しデータを出力すると共に、「内部制御信号とRDYの生成部」131に対してアクセス完了を通知する。この通知を受けた「内部制御信号とRDYの生成部」131は、図21に示す通り、レディ(RDY)信号をWAIT状態“L”からRDY状態“H”にする。これによって、マイコン111はリードデータを取得する。
これにより、マイコン111としては、共有メモリアクセス命令の実行を完了し、アプリケーションプログラム上の次の命令実行に移ることになる。しかし、図21に示す通り、バスインタフェース114による共有メモリ101へのリードアクセスが完了するまでの間、レディ(RDY)信号はWAIT状態となっており、マイコン111は、この間ずっと待たされることになる。そして、上述してある通り、この待ち時間は長く、更に調停で負
けた場合には非常に長くなる。
低速デバイスへアクセスに行った時に待ち時間を短縮する方法として、例えば特許文献1に記載の手法が知られている。
この手法は、マスタからスレーブにアクセスする際、コマンドをスレーブ内に設けたバッファに一旦受けた時点で、マスタのウエイト解除をするというものである。
特開平11−296210号公報
上述した従来技術の問題点について、以下、説明する。
(課題1)
PLCにおいては、各CPUモジュール110毎に1つのマイコン111によって、アプリケーションの実行、ローダとの通信など複数の処理を実行させている。PLCではI/Oモジュール104とのアクセス、複数のCPUモジュール110とのメモリ共有が相変わらず存在しているが、この共有メモリ等のような低速デバイスへのアクセスタイムは、マイコン111の動作スピード、RAM113、ROM112へのアクセスタイム等と比較して圧倒的に長いため、マイコン111が行なわなければならない処理が低速デバイスアクセスによって阻害、滞ることが深刻化してきている。特に、マイコン111の動作スピードに比較して、共有メモリへのアクセスタイムは非常に長いため、従来技術で述べたように、共有メモリアクセスが完了するまでの間、CPUがWAIT状態になり続けるのは、マイコンが行なわなければならない処理が非常に阻害されることになる。
また近年、より高速なネットワークとの接続もPLCに求められてくると考えられ、ますますマイコン111の処理性能劣化への対策が重要となってくる。
このような共有メモリ等の低速デバイスへのアクセスに伴うマイコン111の処理性能劣化の問題を解決することが求められている。
ここで、特に、マイコン111が上記図18に示すようなマルチタスク実行を行うものである場合、例えば図22に示すように、低いレベルのタスク(デフォルトタスク等)を実行中に共有メモリアクセスがあった場合、上記WAIT中に高レベルのタスク(例えば0レベルタスク)の実行タイミングになっても、マイコン111がWAIT状態なので、割り込みが受け付けられず、高レベルのタスク(例えば0レベルタスク)の実行に移れない。勿論、図示の通り、WAIT状態が解除されれば、高レベルのタスクを実行できるようになるが、WAIT状態が解除されるまで待たなければならない。このため、応答性能が要求される場合(高レベルタスクは、通常、決められた実行タイミングで実行されることが要求されている)は深刻な問題となる。
また、PLCがネットワーク接続されているなどにより通信処理が頻繁に行われる状況にあって(特に図示しないが、例えばCPUモジュールがLANに接続しており、LANを介して外部の情報処理装置等と頻繁にやりとりする必要がある場合等)、長期間のWAIT状態が発生することは、スループットの低下、バッファアンダーランなどの発生を招く。
以上述べたように、マイコンがアプリケーションプログラム実行上、アクセスタイムの長い低速デバイスへアクセスする場合であっても、マイコンのWAIT状態を解除して他の処理(特に上位レベルのタスクの処理)が行えたり、割込み受付可能な状態にすることが本課題である。
尚、PLCにおけるアプリケーションプログラムには、例えば図23に示すようにラダー図のような、順次命令実行を行い、直前の命令実行結果を得て次の命令実行へ移るとい
った“シーケンシャル処理”がある。また、例えば、IEC61131-3で規定されているFBD(Function Block Diagram)やST(Structured Text)言語で表現されるような、ある条件が満足されたらある実行を行うといった“判断処理”もある。
このようにプログラム言語としては、アクセス関数が用途に応じた最適インタフェースを備えていることが望まれる。すなわち、メモリアクセス命令で当てはめると、ラダー図であればメモリアクセスが完了してから、次の命令に実行が移ってほしい。一方、FBDであればメモリアクセスが完了していなくても、とりあえずメモリアクセス要求だけ発しておいて次の命令実行に移り、次のスキャンでメモリアクセスが完了しているかいないか判別して相応の処理が行えればよい。
(課題2)
上記FBDやST言語の場合、アプリケーションプログラムには、メモリアクセス命令が、1つだけでなく複数含まれる。それぞれのアクセス命令が実行されるタイミングはプログラム処理の流れによって決定するため、1スキャンで複数の共有メモリアクセス要求が発生し得る。例えば、図25に示すように、1タスク内に多数のFB(ファンクションブロック)が存在し、図示の1スキャンでFB1〜FB100の100個のFBの命令が実行される場合であって、このFB1〜FB100全てが共有メモリアクセス要求を発生するものである場合、1スキャンで100個の共有メモリアクセス要求が発生し得る。このような場合であっても、アクセス要求発生順に順次アクセスを実行させることが本課題である。尚、1タスク内の複数の命令を、始めから終わりまで全て実行することを1スキャンと呼んでいる。
(課題3)
図19に示したように、PLCにはローダ120が接続される場合がある。ローダ120は、一般的に、アプリケーションの変数モニタや変数の書換え、プログラムダウンロード等を行うために接続される。
アプリケーション実行中に共有メモリ上の変数をモニタしたいといった場合に、ローダ120からモニタコマンドが発行され、マイコン111がモニタコマンドを受けて、アプリケーションを中断するか又はスキャンエンド(アプリケーションを実行していない状態)で、システムソフトが共有メモリアクセスを行う。
既に述べたように、共有メモリアクセス中にはマイコン111にはWAITが掛かるので、図24に示すように、ローダ120からのモニタコマンドに応じた共有メモリアクセス中には、アプリケーションは一切実行されない。すなわち、デフォルトタスクは中断されるし、0レベルタスク、1レベルタスクのような定周期タスクの実行タイミングになっても、割込みが受け付けられないため、実行されない。
この様に、ローダ120からモニタ要求があると、アプリケーション実行がされない又は実行が遅れるという問題点があり、この様なローダ120からの要求に影響されずにアプリケーションを実行できるようにすることが本課題である。
また、上記特許文献1に記載の従来技術は、本例に当て嵌めれば、上記図19におけるCPUモジュール110(マスタに相当)とI/Oモジュール104(スレーブに相当)との間の話であり、I/Oモジュール104が、自己に接続している周辺メモリに対する書き込みを行う前に、直ちに、CPUモジュール110へウェイト信号を返信することに相当する技術であり、共有メモリアクセスの話ではない。すなわち、特許文献1では、複数のスレーブが接続されたバスである為、直ちにバスを解放することに意味があるが、共有メモリの場合、アクセスが完了していないのにバスを解放しても意味がない。
更に、特許文献1では、結局、バスを介して、マスタ−スレーブ間でデータ送受信する為の時間が掛かる。また、特許文献1では、上記課題1で述べたようなマルチタスクにおける問題には対応できないし、課題2のような1スキャンで多数のアクセス命令が生じる場合にも対応できない。課題3についても同様である。
本発明の課題は、マイコンが共有メモリ等のアクセスタイムの長いデバイス(低速デバイス)をアクセスする場合に、アクセス実行完了を待たずに、他の処理を実行可能にしたり割込み受付可能な状態にすることであり、特にマイコンが複数レベルのタスクを実行可能な場合にも対応可能とすることであり、又はタスク内で複数FBがアクセス要求を発生させても要求発生順に順次要求が処理されるようにでき、あるいはモニタ要求等のようなCPUモジュール外部(又PLC外部)からの要求に起因する低速デバイスアクセスを行っても影響されずにアプリケーションを実行可能にするプログラマブルコントローラのCPUモジュール、当該プログラマブルコントローラ等を提供することである。
本発明のプログラマブルコントローラのCPUモジュールは、複数レベルのタスクを実行する処理ユニットと、該処理ユニットからの要求に応じて低速デバイスにアクセスするインタフェースユニットとを有するCPUモジュールであって、該インタフェースユニットは、前記複数のレベル各々に応じた複数のアクセスチャネルを有し、前記処理ユニットは、前記何れかのレベルのタスクを実行中に前記低速デバイスへのアクセス要求が発生した場合、該タスクのレベルに応じた前記アクセスチャネルに対して低速デバイスアクセス処理の実行を依頼するアクセス処理手段を有し、前記インタフェースユニットは、該アクセスチャネルへの依頼が完了すると、前記処理ユニットのWAIT状態を解除し、その後に、該依頼に基づく前記低速デバイスへのアクセスを実行する。
上記CPUモジュールにおいては、当該CPUモジュール外の任意の低速デバイスにアクセスする場合、インタフェースユニットが処理ユニットからの依頼に応じて低速デバイスアクセス処理を実行するが、その際、依頼受付完了した時点で、処理ユニットのWAIT状態を解除する。よって、処理ユニットは他の処理を実行可能となり、割り込みも受付可能となる。
特に、上記構成では、インタフェースユニットは、複数のレベル各々に応じた複数のアクセスチャネルを有している。
これによって、例えば、前記処理ユニットは、前記WAIT状態の解除によって、前記アクセス要求が発生したタスクより上位レベルのタスクの実行が可能となり、前記アクセス処理手段は、該上位レベルのタスクを実行中に前記低速デバイスへのアクセス要求が発生した場合、該タスクのレベルに応じた前記アクセスチャネルに対して低速デバイスアクセス処理の実行を依頼することができる。
また、例えば、前記タスクのアプリケーションがシーケンシャル処理を実行するものである場合、前記アクセス処理手段は、該アプリケーションにおける任意の命令実行に伴い前記アクセスチャネルに対する低速デバイスアクセス処理の実行依頼後、該依頼先のアクセスチャネルに対する定期的なポーリングを行って低速デバイスアクセス処理の実行完了を待つ。
上記シーケンシャル処理を実行するアプリケーションとは、例えばラダー図のように、順次命令実行を行い、直前の命令実行結果を得て次の命令実行へ移るといった処理を行うものである。この場合、直前の命令実行完了しなければ次の命令実行に移れないので、上記ポーリングを行って実行完了を待つことになる。但し、上位レベルのタスクの割り込み
があった場合、当該上位レベルのタスクを実行することはできる。
また、例えば、前記タスクのアプリケーションが判断処理を実行するものである場合、前記アクセス処理手段は、該アプリケーションにおける任意の命令実行に伴い前記アクセスチャネルに対する低速デバイスアクセス処理の実行依頼後、次の命令実行に移る。
上記判断処理を実行するアプリケーションとは、例えばFBDで表現されるアプリケーションのように、前の命令の実行完了を待たずに次の命令に移れるものである。この為、ポーリングを行うことなく、直ちに、アプリケーションに戻り、次の命令を実行可能としている。
但し、判断処理を実行するものである場合、1スキャンで複数の共有メモリアクセス要求が発生し得る。これに対応する為に、例えば以下の構成を追加する。すなわち、例えば、
前記タスクのアプリケーションが判断処理を実行するものである場合、前記処理ユニットは、各レベルに応じた記憶手段を更に有し、前記アクセス処理手段は、該アプリケーションにおける任意の命令実行に伴い低速デバイスアクセス要求が発生する毎に、該要求を該アプリケーションのレベルに対応する前記記憶手段に格納し、前記インタフェースユニット側で低速デバイスアクセス処理が完了する毎に、該記憶手段に記憶されている要求の中で最も古い要求を取り出して、前記インタフェースユニットに対して低速デバイスアクセス処理を依頼する。
また、例えば、前記インタフェースユニットは、システム用アクセスチャネルを更に備え、前記アクセス処理手段は、前記タスクのアプリケーション以外による低速デバイスアクセス要求が発生すると、前記システム用アクセスチャネルに対して低速デバイスアクセス処理を依頼し、前記インタフェースユニットは、該アクセスチャネルへの依頼が完了すると、前記処理ユニットのWAIT状態を解除し、該システム用アクセスチャネルは、低速デバイスアクセス処理が完了すると、前記処理ユニットに対して、アクセス完了割込みを出力する。
上記構成によってタスクのアプリケーション以外に起因するバスアクセス要求の場合にも対応可能となる。更に、依頼後、ポーリングを行う必要が無く、完了割込みで例えばリードデータの取り込み等を行えるので、処理ユニットの処理能力を無駄なく使用できる。
本発明のプログラマブルコントローラのCPUモジュール、当該プログラマブルコントローラ等によれば、マイコンが共有メモリ等のアクセスタイムの長いデバイス(低速デバイス)をアクセスする場合に、アクセス実行完了を待たずに、他の処理を実行可能にしたり割込み受付可能な状態にすることができ、特にマイコンが複数レベルのタスクを実行可能な場合にも対応できる。また、ラダー図用、FBD用等、用途に応じたインタフェース、仕様のアクセス手段の提供を実現できる。更に、タスク内で複数FBがアクセス要求を発生させても要求発生順に順次要求が処理されるようにできる。あるいは、モニタ要求等のようなCPUモジュール外部(又PLC外部)からの要求に起因する低速デバイスアクセスを行っても影響されずにアプリケーションを実行可能にできる。
以下、図面を参照して、本発明の実施の形態について説明する。
本例では、例えば一例として、0レベル、1レベル、デフォルトタスクの3レベルのタスクを実行可能なPLCを想定する。
図1に、実施例1、2におけるバスインタフェースの構成例を示す。
また、図2に、本例のプログラマブルコントローラ全体の構成を示しておく。この全体構成自体は従来と同じである。すなわち、複数のI/Oモジュール4と複数のCPUモジュール10が、I/Oバス3に接続しており、モジュール相互に通信を行う。また、複数のCPUモジュール10は、共有メモリバス2にも接続しており、各CPUモジュール10各々が、共有メモリバス2を介して共有メモリ1にアクセスする。
また、各CPUモジュール10は、マイコン21、ROM22、RAM23、バスインタフェース10、I/Oインタフェース25、RDY制御部26を有する。
I/Oインタフェース25は、I/Oバス3に接続しており、他のモジュールとの通信制御を行う。バスインタフェース10は、共有メモリバス2に接続しており、共有メモリ1に対するアクセス制御を行う。
但し、バスインタフェース10の構成・動作は従来とは異なり、マイコン21の動作も従来とは異なる。すなわち、簡単に説明するならば、共有メモリ1へのアクセス要求を受け付ける為の、各タスクレベルに対応する複数のアクセスチャネルを、バスインタフェース10内に備えている。一方、マイコン21に実装されるシステムソフトは、従来のバスアクセス手順とは違うバスアクセス手順を実行する。本例のバスアクセス手順は、従来のように直接共有メモリ1にアクセスする為の手順ではなく、アクセスチャネルに対するリード/ライトを行う手順であり、一例は図5に示し、後に説明する。
図2に示すように、マイコン21を中心としてRAM23、ROM22、バスインタフェース10、I/Oインタフェース25、RDY制御部26の各ブロックでCPUモジュール20が構成される。複数のCPUモジュール20からアクセスが可能な共有メモリ1が共有メモリバス2上に存在し、共有メモリ1を本実施例における低速デバイスと位置付ける。
尚、RDY制御部26は、図示していないが、バスインタフェース10だけでなく他の構成(I/Oインタフェース25等)からのRDY信号を集中管理制御する構成であるが、本説明では特に関係ないので、RDY制御部26については特に触れずに、マイコン21−バスインタフェース10間で直接RDY信号をやりとりするものと見做して説明するものとする。
ここで、図1に示すバスインタフェース10について説明する。バスインタフェース10は、アクセスチャネルを、PLCで実行可能なアプリケーションタスクレベル数分備えるようにする。本例では、上記の通り、3レベルのタスクを実行可能なPLCを例にしているので、図1に示すように、バスインタフェース10は、レベル0用、レベル1用、デフォルトタスク用の3つのアクセスチャネル11、12,13を備える。これら各アクセスチャネルは、マイコン21から読み書きできるレジスタ群を備える。1つのアクセスチャネルは1度に1つのアクセス要求のみ受け付けられるものとする。よって、同レベルのタスクの要求は、前の要求が完了するまで受け付けられない。
図示の例では、各アクセスチャネルは、各々、5つのレジスタを有する。ここではレベル0用アクセスチャネル11を例にすると、コマンドレジスタa、アクセスアドレスレジスタb、ライトデータレジスタc、リードデータレジスタd、及びステータスレジスタeの5本のレジスタを備える。他のアクセスチャネル12,13も同じ構成である。よって、バスインタフェース10は、3チャネル分合計15本のレジスタを持つ。
マイコン21が上記アクセスチャネルにアクセス要求を書き込むと、以後、バスインタフェース10側が、マイコン21とは独立してバスアクセス(共有メモリアクセス)を実
行する。すなわち、アクセス要求が書き込まれたアクセスチャネルは、その要求コマンド等をアクセス要求キュー14に積む。バスアクセス制御部15は、アクセス要求キュー14から要求コマンドを取り出して共有メモリ1へのアクセス実行を開始する。このアクセス実行が完了したら、要求発行元のアクセスチャネル内のステータスレジスタeの完了ビットがセットされる。
アクセス実行中に新たに別なアクセスチャネルへアクセス要求が書き込まれた場合、その要求コマンド等はアクセス要求キュー14に積まれる。前のアクセス完了後、順次キュー14に積まれている次のアクセス要求が実行される。このようにして共有メモリへのアクセスが間断なく行われる。
アクセスチャネルは、具体的には、例えば、ゲートアレイ、PLD(Programmable Logic Device)等で実現されるディジタル回路である。
以下、更に詳しく説明する。
低いレベルのアプリケーションタスクからの要求に応じた共有メモリアクセス中に、マイコン21側で上位レベルタスクによる割り込みが発生し、この上位レベルのアプリケーションタスクを実行中に共有メモリアクセス要求が発生する場合に備えて、上記の通りバスインタフェース10内に、アプリケーションタスクのレベル数と同じ数(ここでは3つ)のアクセスチャネルを用意している。但し、上位レベルのタスクの要求を優先的に処理するわけではない。しかし、例えば、デフォルトタスクがアクセス要求を出し、その後に実行されたレベル1タスクもアクセス要求を出した後、レベル0タスクが実行される場合、レベル0タスクは待たされることなく直ちに実行される。レベルが高いタスクほど、定周期性を崩さずに決められたタイミングで実行することが要求されるので、この点で効果がある。
マイコン21は、例えば、レベル0のタスクからの共有メモリアクセス要求は、レベル0用アクセスチャネル11にアクセスを依頼し、レベル1のタスクからの共有メモリアクセス要求は、レベル1用アクセスチャネル12にアクセスを依頼する。
このようにアクセスチャネルを介して共有メモリアクセスを行った場合には、ダイレクトに共有メモリアクセスをする場合に比較して、アクセスチャネルへの要求書き込み等に余計な時間が掛かるが、もともとバスアクセス制御部15による共有メモリアクセスの時間が長いため、全体としてアクセス完了までに掛かる時間は、若干増加するに過ぎない。その引き換えに、アクセス完了までの長い時間、マイコン21は別の処理(例えば上位のタスク。あるいは同タスクにおける他の命令)を実行することができる。割り込みも問題なく受け付けられる。
図3にこれら各種レジスタのレジスタマップを示す。図3に示す通り、バスインタフェース10が有する不図示のメモリ内の各アドレスが、上記各種レジスタとして割り当てられている。マイコン21は、このレジスタマップを記憶している。そして、例えばレベル1のタスク実行で共有メモリ1へのリード/ライト要求が発生した場合には、例えばアドレスバスには図示のアドレス“+6”を出力し、データバスには共有メモリ1へのアクセスアドレスを出力することで、アクセスチャネル12のアクセスアドレスレジスタbに、共有メモリ1へのアクセスアドレスをセットする。
図4に上記各種レジスタの構成例を示す。
図4に示す通り、コマンドレジスタaは、リードアクセス要求ビット、ライトアクセス要求ビットの2ビットのみ使用する。例えば、リードアクセス要求があった場合にはリードアクセス要求ビットが‘1’となり、ライトアクセス要求があった場合にはライトアク
セス要求ビットが‘1’となる。
アクセスアドレスレジスタbには、上記の通り、マイコン21が指定した共有メモリ1へのアクセスアドレスがセットされる。リードデータレジスタcには、リードアクセス要求に対して共有メモリ1から読み出されたリードデータが格納される。ライトデータレジスタdには、ライトアクセス要求に伴いマイコン21が出力した、共有メモリ1への書き込みデータが格納される。
ステータスレジスタeは、アクセス完了/未完了を表す1ビット(完了ビット)のみ使用する。ここでは、この完了ビットが‘0’の場合はアクセス未完了、完了ビットが‘1’の場合はアクセス完了を示すものとする。マイコン21から任意のアクセス要求を受けると完了ビットを‘0’にリセットし、この要求に対する応答をバスアクセス制御部15から受けると、完了ビットを‘1’にセットする。
ここで、図1の構成の動作について説明する。
上記各アクセスチャネル11〜13は、上記の通り、アクセス要求が書き込まれると、その要求コマンド等をアクセス要求キュー14に積む。ここで、マイコン21が書き込む上記アクセス要求には、リードアクセス要求かライトアクセス要求かを示す上記要求コマンド、共有メモリ1へのアクセスアドレスが含まれ、更にライトアクセス要求である場合には共有メモリ1への書き込みデータも含まれる。上記要求コマンドはコマンドレジスタaにセットされ、アクセスアドレスはアクセスアドレスレジスタbに格納され、書き込みデータはライトデータレジスタcに格納される。
そして、上記アクセス要求が書き込まれたアクセスチャネルは、上記要求コマンドと自己の識別情報(レベル0、レベル1、デフォルトの何れであるかを示す情報。予め各アクセスチャネル内に記憶されている)とを(以下、これらをまとめてアクセス要求データと呼ぶ)、アクセス要求キュー14に格納する。アクセス要求キュー14は、FIFO(Fast In
Fast Out)構造となっている。よって、要求発生順にアクセスの実行がなされる。
バスアクセス制御部15は、任意のアクセス要求に応じた共有メモリ1へのリードアクセス処理又はライトアクセス処理を完了する毎に、アクセス要求キュー14から新たなアクセス要求データを取り出す。その際、上記識別情報は、そのまま、アドレスセレクタ17、ライトデータセレクタ18、及びチャネルセレクタ19に入力され、これらセレクタの選択信号となる。つまり、これら各セレクタは、この識別情報に対応するアクセスチャネルを選択する。よって、バスアクセス制御部15は、これらセレクタを介して、要求元のアクセスチャネルのレジスタからのデータ取得又レジスタへのデータ書き込みを行うことになる。
すなわち、バスアクセス制御部15は、リード/ライト要求何れの場合でも、アドレスセレクタ17を介して、要求元のアクセスチャネルのアクセスアドレスレジスタbに格納されているデータを読み出す。ライト要求である場合には、更に、ライトデータセレクタ18を介して、要求元のアクセスチャネルのライトデータレジスタcに格納されているデータを読み出す。そして、これら取り出した要求コマンド、読み出したデータに基づいて、共有メモリ1に対するアクセス処理を実行する。そして、アクセス処理完了したら、チャネルセレクタ19を介して、要求元のアクセスチャネルに処理結果を書き込む。リード要求の場合は、処理結果として得られたリードデータをリードデータレジスタdに格納すると共に、ステータスレジスタeの上記完了ビットを‘1’にセットする。ライト要求の場合は、ステータスレジスタeの上記完了ビットを‘1’にセットする。
そして、バスアクセス制御部15は、アクセス要求キュー14から次のアクセス要求デ
ータを取り出して、上記と同様の処理を実行する。
尚、上記処理は一例を示しているに過ぎない。例えば、バスアクセス制御部15は、アクセス要求キュー14からアクセス要求データを取り出して、コマンドと識別情報の両方を取得し、識別情報に基づいて上記各セレクタを制御するようにしてもよい。
上記の通り、マイコン21が、アクセスチャネルの各レジスタにデータを格納させるが、これについて図5を参照して説明する。図5は、リード要求の場合のアクセスタイミングチャートである。
まず、図1に示す通り、“内部制御信号とRDY生成部”16は、アドレスバスに接続しており、マイコン21から出力される任意のアドレスを入力している。このアドレスは、上述してある通り、任意のアクセスチャネルの任意のレジスタのアドレスであり、共有メモリ1へのアクセスアドレスとは異なるものである。また、“内部制御信号とRDY生成部”16には、マイコン21から出力されるセレクト信号(*CS)とリード/ライト信号(RD/*WT)が入力している。
“内部制御信号とRDY生成部”16は、セレクト信号(*CS)が有効(‘L’)且つリード/ライト信号(RD/*WT)が‘0’のときには、上記アドレスのレジスタに、データバスを介して入力されるデータを書き込む。“内部制御信号とRDY生成部”16は、セレクト信号(*CS)が有効(‘L’)且つリード/ライト信号(RD/*WT)が‘1’のときには、上記アドレスのレジスタに格納されているデータを、データバスを介してマイコン21に出力する。つまり、リード/ライト信号(RD/*WT)が‘0’はライト、‘1’はリードを意味する。尚、マイコン21側は、アドレスバスに出力するアドレスが、上記レジスタa〜dの何れかのアドレスであるときには、セレクト信号(*CS)を有効(‘L’)にする。
また、“内部制御信号とRDY生成部”16は、マイコン21からの指示に応じた上記レジスタへのアクセスが完了する毎に、マイコン21に対してRDY信号“H”を送信する。レジスタへのリード/ライトだけなので、RDY信号“H”は短時間でマイコンに返信されることになる。
図5に示す例は上記の通りリード要求の場合なので、マイコン21において図6の処理を実行するシステムソフトは、まず、アクセスアドレスレジスタbのアドレスをアドレスバスに出力すると共に、データバスには共有メモリ1に対するアクセスアドレスを出力する。勿論、その際、マイコン21は、セレクト信号(*CS)を有効(‘L’)にし且つリード/ライト信号(RD/*WT)を‘0’にする。これより、“内部制御信号とRDY生成部”16は、アクセスアドレスレジスタへの書き込み制御を行う。そして、RDY信号‘H’を返す。
更に続いて、マイコン21は、コマンドレジスタaのアドレスをアドレスバスに出力すると共に、データバスにはリードアクセス要求であることを示す要求コマンドを出力する。リード/ライト信号(RD/*WT)が‘0’なので、“内部制御信号とRDY生成部”16は、コマンドレジスタaへの書き込み制御を行う。そして、RDY信号‘H’を返す。
その後は、アクセス要求キュー14に従って、順番が来れば、バスアクセス制御部15は、共有メモリ1に対するリード動作制御を行う。そしてリード完了したら、要求発行元のアクセスチャネルのリードデータレジスタdに、共有メモリ1から読み出したリードデータを格納すると共に、ステータスレジスタに“アクセス完了”をセットする(上記“完了ビット”が‘1’となる)。
システムソフトは、コマンドレジスタaへの要求コマンド書込み後は、ステータスレジスタeの“完了ビット”をポーリングしている。すなわち、図5に示す通り、定期的に、アドレスバスにステータスレジスタeのアドレスを出力し、リード/ライト信号(RD/*WT)は‘1’(リード要求)とすることで、ステータスレジスタeのデータを読み出す。当然、共有メモリ1へのアクセスが完了するまでは、完了ビットは‘0’(未完了)となっている。勿論、その都度、直ちにRDY信号‘H’を返すので(WAIT状態を解除するので)、マイコン21の待ち時間は非常に短くて済む。そして、図5の図上右側に示すように、ステータスレジスタeの完了ビットが‘1’にセットされた後にこれを読み出したら、マイコン21はアクセス完了を知るので、図5には示していないが、アドレスバスにリードデータレジスタdのアドレスを出力し、リード/ライト信号(RD/*WT)は‘1’(リード要求)とすることで、共有メモリ1からのリードデータを取得する。以上により共有メモリリードシーケンスが完了する。
共有メモリ1へのライト要求の場合は、上記アクセスアドレスライト後にライトデータレジスタcに共有メモリ1への書き込みデータをセットし、コマンドレジスタaにはライト要求を示す要求コマンドを書き込む。
マイコン21は、その後、リード要求の場合と同様に、アクセス完了までステータスレジスタeをポーリングしながら待つ。勿論、その間、上位タスクの割り込みが入った場合には、上位タスクの処理が実行されるので、ポーリングは中断される。上位タスクの処理が完了したら、ポーリングを再開することになる。
ここで、PLCにおけるアプリケーションプログラム例としては、図23に示すラダー図のような、順次命令実行を行い、直前の命令実行結果を得て次の命令実行へ移るといったシーケンシャル処理がある。あるいは、図8に示すようなFBDでのアプリケーション命令もある。
まず、以下、ラダー図の場合における上記システムソフトの処理について説明する。ここでは、図23に示す例を用いて、まず接点命令を実行し、次にコイル命令を実行する場合の処理について説明する。
マイコン21においてアプリケーションは、図示の各命令を実行し共有メモリ1へのアクセスが必要になると、上記システムソフトを呼び出す。
システムソフトは、共有メモリ1に対するリード処理の場合には図6の処理を実行し、ライト処理の場合には図7の処理を実行する。すなわち、従来で説明したように、システムソフトは、アプリケーションが呼び出すサブルーチンのような存在であるが、このサブルーチンは複数種類存在し、リード処理の場合は図6の処理を実行するサブルーチンが呼び出され、ライト処理の場合は図7の処理を実行するサブルーチンが呼び出されることになる。これは後述する他の処理フローチャート図の処理についても同様である。
ここでは、接点命令に係る処理がリード処理、コイル命令に係る処理がライト処理であるものとする。
図6、図7に示す処理は、既に図5の説明で触れているので、ここでは簡単に説明する。
図6に示す処理は、共有メモリからのデータリード要求の処理であり、図7に示す処理は、共有メモリへのデータライト要求の処理である。
図6に示す処理おいて、まず、接点命令のレベルに応じたアクセスチャネルのアクセスアドレスレジスタbに、共有メモリ1へのアクセスアドレスを書き込む処理(ステップS
11)、及びコマンドレジスタaのリードアクセス要求ビットを‘1’にセットする処理(ステップS12)を実行する。そして、その後は、上記ポーリングを行う。すなわち、定期的に上記要求を書き込んだアクセスチャネルのステータスレジスタeをリードし(ステップS13)、完了ビットが‘1’(完了)であれば(ステップS14,YES)、このアクセスチャネルのリードデータレジスタdからデータを読出し、これをアプリケーションに渡す(ステップS15)。これを受けたアプリケーションは、続いてコイル命令を実行する。これによって、図7の処理が実行される。尚、共有メモリからのリードデータは、コイル命令の入力値となる。従って、接点命令の実行が完了するまでは、コイル命令は実行できない。
図7の処理では、まず、コイル命令のレベルに応じたアクセスチャネルに対して、そのアクセスアドレスレジスタbに共有メモリへのアクセスアドレスを書き込む処理(ステップS21)、そのライトデータレジスタcに共有メモリへの書き込みデータを格納する処理(ステップS22)、及びそのコマンドレジスタのライトアクセス要求ビットを‘1’にセットする処理(ステップS23)を実行する。
そして、その後は、上記ポーリングを行う。すなわち、定期的に上記アクセスチャネルのステータスレジスタeをリードし(ステップS24)、完了ビットが‘1’(完了)であれば(ステップS25,YES)、アプリケーションに完了を知らせ、アプリケーションに戻る。
尚、上記説明では、「接点命令のレベルに応じた」、「コイル命令のレベルに応じた」と記したが、図23に示す例において接点命令とコイル命令とでレベルが異なるわけではない。同一タスク内の一連の命令全てが、同じレベルである。これは、FBDの場合も同じであり、例えば図25に示す1タスク内の全ての命令(FB)は、同じレベルである(このタスクのレベルである)。
上記図6、図7で説明した処理では、アクセスチャネルに対して要求を出した後、アプリケーションに戻らずにシステムソフトの処理を続行する(ポーリングを繰返す)。よって、リード要求であればリードデータを共有メモリ1から得るまで、ライト要求であれば共有メモリ1へのデータライト完了までは、ラダー図の後続命令の実行には移らない。上記の通り、ラダー図は、順次命令実行を行い、直前の命令実行結果を得て次の命令実行へ移るといったシーケンシャル処理であるからである。よって、コイル命令、接点命令ともにシステムソフト層でポーリングを行い、アクセス完了でアプリケーションに戻るようにしている。但し、割込みは受付可能なので、上記のように、より高いレベルのタスクへの遷移は可能である。
図8(a)、(b)に、FBDで表現されるアプリケーション命令の具体例を示す。
尚、FBの基本概念は国際規格IEC61131-3で規定、説明されている。
図8(a)にはREAD_WORD(リード用FB)、図8(b)にはWRITE_WORD(ライト用FB)の例を示す。尚、図8に示す表記は単にIEC61131-3によるものであり、この例に限るわけではない。
図8(a)に示す命令(READ_WORD)は、入力端子にRQ(アクセス要求)、AD(アクセスアドレス)を備え、出力端子にDONE(完了)、RD(読出しデータ)を備える。DONEが‘1’になると、後段の命令は、本命令(READ_WORD)の実行完了を知り、新たに取得してデータ(共有メモリリードデータ)を用いて命令実行する。
また入力端子から入力されるデータ、出力端子からの出力データ情報、内部状態情報(EXビット、XRQビット、E_DONEビット)は、1つのFBに1つ割り付けられるインスタンスと
呼ばれるメモリ領域に、格納・保持される。
また、図8(b)に示す命令(WRITE_WORD)は、入力端子にRQ(アクセス要求)、AD(アクセスアドレス)、WD(ライトデータ)、出力端子にDONE(完了)を備える。
図8(a)、(b)において、AD(アクセスアドレス)に共有メモリへのアクセスアドレスが入力された場合に、本処理が実行されることになる。
図9(a)に、実施例1におけるREAD_WORDのインスタンスのデータ構造を示す。
図示のインスタンス80において、EXビット81はアクセス実行中を示すビットである。XRQビット82はRQ端子に前スキャン時に入力された値、RQビット83はRQ端子に今回スキャン時に入力された値であり、XRQビット82が‘0’で且つRQビット83が‘1’の場合、「新要求あり」と判定される(後述するステップS97の判定がYESとなる)。DONEビット84は上記DONE端子の出力データであり、‘1’が完了、‘0’が未完了を意味する。
また、アドレス下位85及びアドレス上位86には、共有メモリ1へのアクセスアドレスが格納される。リードデータ下位87及びリードデータ上位88には、共有メモリ1から読み出されたデータが格納される。図示の通り、当該インスタンス80の先頭アドレスから、それぞれ、+2、+3、+4、+5のアドレスに、上記アドレス下位85、アドレス上位86、リードデータ下位87、リードデータ上位88が格納される。
図9(b)に、上記READ_WORDが呼び出すシステムソフトの処理フローチャート図を示す。
図9において、まず、DONEビットをクリアする(未完了とする)(ステップS91)。そして、アクセス実行中であるか否かを判定する(ステップS92)。これは、上記呼び出し元のREAD_WORDのインスタンス80を参照し、EXビット81=‘1’であればアクセス実行中と判定する。
もし、アクセス実行中であれば(ステップS92,YES)、当該READ_WORDのレベルに対応するアクセスチャネルのステータスレジスタeをリードし(ステップS93)、その完了ビットが‘1’(完了)であれば(ステップS94,YES)、上記アクセスチャネルのリードデータレジスタdからデータを読出し、これをインスタンス80の上記+4、+5のアドレス(リードデータ下位87、リードデータ上位88)に格納する(ステップS95)。
そして、EXビット81をクリアし(1→0)、DONEビット84をセット(0→1)する(ステップS96)。そして、ステップS101へ進む。アクセス実行中で且つ未完了であれば(ステップS94,NO)、そのままステップS101へ進む。
ステップS101では、RQビット83の値をXRQビット82にコピーする。これで本処理は終了し、アプリケーションに戻る
一方、EXビット=‘0’である場合には(アクセス実行なし)(ステップS92,NO)、このREAD_WORDに新たなアクセス要求が発生しているか否かを判定する。これは、上記の通り、XRQビット82が‘0’で且つRQビット83が‘1’の場合、すなわちRQが0から1へと立ち上がった場合に、「新要求あり」と判定される(ステップS97,YES)。「新要求あり」の場合には、まず、インスタンス80の上記+2、+3のアドレスに格納されているデータ(アドレス下位85、アドレス上位86)と要求コマンド(リードorライト)を、それぞれ、当該READ_WORDのレベルに対応するアクセスチャネルのアクセスアドレスレジスタbとコマンドレジスタaにセットする(ステップS98,S99)。そして、EXビット81をセット(0→1)し(ステップS100)、ステップ
S101へ進む。尚、アクセスチャネルは、コマンドレジスタaに要求コマンドがセットされたことをトリガとして、上記要求コマンドと識別情報をアクセス要求キュー14に格納する動作を行う回路構成となっている。
新要求がない場合には(ステップS97,NO)、そのままステップS101へ進む。
図10に、上記図9の処理のアクセスタイミングチャートを示す。
尚、図10において図上縦の点線は、処理の実行周期を示す。すなわち、縦の点線で示すタイミング毎に、図9の処理が実行される。
ここでは、アクセス実行中ではないものとし、図上左側に示すように、RQの立ち上がり(0→1)を検出することによって(ステップS97,YES)、アクセスチャネルに対して新規要求を出すことになる。すなわち、上記ステップS98,S99の処理により、アクセスチャネルのレジスタに、アドレスと要求コマンドを書き込む。更に、ステップS100によって、EXビット(EXフラグ)がセットされる。
アクセスチャネルは、コマンドレジスタaに要求コマンドがセットされると、上記の通り、この要求コマンド等をアクセス要求キュー14に格納し、これによってその後、共有メモリ1へのアクセス動作(ここではリード)が開始されることになる。そして、アクセス完了すると、アクセスチャネルの上記完了ビットを‘1’にする。これによって、図10の図上右側に示す通り、次の図9の処理実行時に、リードデータの読出し、EXフラグのクリア、DONEビットのセット(ステップS95,S96)が行われる。図10に示す通り、DONEビットは、更に次の図9の処理実行により(そのステップS91の処理により)クリアされるまでの間、セットされており、その間に、アプリケーションは、DONEビット=1であることからリード完了を認識し、リードデータ(87,88)を使用する。
尚、図8(b)に示すWRITE_WORDが呼び出すシステムソフトの処理は、特に図示しないが、図9(a)に示すインスタンスにおいて、アドレス+4、+5の位置に、リードデータ下位87及びリードデータ上位88に代えて、ライトデータ下位、上位が格納されることになり、更に、図9(b)に示すフローチャートにおいてステップS98の処理の後に「インスタンスの+4、+5に格納されているライトデータ(下位と上位)を、アクセスチャネルのライトデータレジスタへセットする」という処理が追加される。更に、ステップS95の処理は必要ないので削除される。
上記図9等の処理では、図6、図7の処理とは異なり、要求を出した後、ポーリングは行わずに、直ちにアプリケーションに戻る。これは、上述してある通り、FBDやST言語で表現されるプログラムでは、メモリアクセスが完了していなくても、とりあえずメモリアクセス要求だけ発しておいて次の命令実行に移り、次のスキャン以降の各スキャンでメモリアクセスが完了しているかいないか判別すればよいからである。接点命令、コイル命令が共有メモリアクセス中は同レベル以下のタスクの命令実行ができなかったのに比べ、アクセス完了までの時間も余すことなく全レベルのタスク実行が可能である。
尚、“次の命令実行”とは、例えば図25においてFB1がメモリアクセス要求を発したなら、メモリアクセスが完了していなくても、FB2を実行することを意味している。但し、FB1の後段の命令であるFB101も、メモリアクセスが完了しなくてもFB1のアクセス前の出力を用いて命令実行してよい仕様となっている場合には、メモリアクセスが完了していなくても、FB101を実行できる。
また、図25に示すタスクの各命令(FB)を実行中に、不図示の上位タスクの割り込みが入った場合には、この上位タスクを実行することになるので、その間、図25に示す
タスクの命令実行は中断される。
ところで、ここで、上記一例のようにFB1に関してメモリアクセスが完了していない状態でFB2を実行した場合において、FB2でもメモリアクセス要求が発生する可能性はある。FB1とFB2は同一タスクなので、当然、レベルは同じであり、要求先のアクセスチャネルは同じであるので、FB2の要求を受けられないことになる。特に、1タスク内で実行される順番は、FB1→FB2→・・・FB100というように決まっている為、FB1の要求が最優先で受け付けられてしまう為、FB2以降の他のFBはなかなか要求が受け付けられず、特に最後のFB100は、殆ど要求が受け付けられないという事態に成り得る。これが上記課題2に係る問題点となる。従って、要求発生順に、順番に、要求が受け付けられるようにする必要がある。
この問題に対して、実施例2を提案する。
以下、実施例2について説明する。実施例2は、上記課題2を解決するものである。
課題2で述べたように(及び上記の通り)、FBDやST言語で表現されるプログラムでは、1タスク内で複数個のアクセス要求発生が起こり得るため、実施例2では、これに対応して、マイコン側21側に、共有メモリアクセス要求を格納するための要求バッファを備えている。要求バッファは、アプリケーションのタスクレベル数分用意する。
図12(a)に、実施例2におけるREAD_WORDのインスタンスのデータ構造を示す。図示のインスタンス40において、EXビット41はアクセス実行中を示すビット、XRQビット42はRQ端子に前スキャン時に入力された値、E_DONE44はアクセスチャネルのアクセス完了/未完了を示すビットである(ON(‘1’)で完了)。また、DONEビット45は上記DONE端子の出力データである。RQビット43はRQ端子に今回スキャン時に入力された値であり、XRQビット42が‘0’で且つRQビット43が‘1’の場合、「新規要求あり」と判定される。
また、アドレス下位46及びアドレス上位47には、共有メモリへのアクセスアドレスが格納される。リードデータ下位48及びリードデータ上位49には、共有メモリから読み出されたデータが格納される。
また、図15(a)に、実施例2におけるWRITE_WORDのインスタンス60のデータ構造を示す。図示の通り、EXビット41〜アドレス上位47までは上記READ_WORDのインスタンス40と同じであるので、同一符号を付してある。インスタンス60には、上記リードデータ下位48及びリードデータ上位49の代わりに、ライトデータ下位61及びライトデータ上位62がある。
図12(b)に、要求バッファの一例を示す。
図12(b)に示す要求バッファ50は、1タスク内のインスタンスの数(つまり、FBの数;尚、要求バッファ50は、リード、ライト共通で使用される)の分だけ要求キューを格納できる記憶容量を持ち(図示の例では、N個のFBがあり、要求キュー1〜要求キューNまでのN個の要求キューを格納可能)、リングバッファ状に使用される。各要求キューは、要求元FBのインスタンスの先頭アドレス51と要求コマンドデータ52から成る。要求コマンドデータ52のデータフォーマットは、上記アクセスチャネル内のコマンドレジスタaと同じである(要求キューから読み出して、そのまま、コマンドレジスタaに書き込めるようにする為)。
図示のリードポインタRp又はライトポインタWpによって、現在の処理対象である要求キューが指定される。リードポインタRpはアクセスチャネルへの要求を発行するためのポインタ、ライトポインタWpはFBの内部処理でアクセス要求を積むときに使用する。
ソフトウェア処理として、共有メモリアクセスするFBの内部処理(このFBが呼び出すシステムソフト)によって、アクセスチャネルの完了/未完了処理、新たなアクセス要求のキューへの積み上げ、アクセスチャネルへの要求発行を行わせるようにする。
図11に、上記FB(READ_WORD)が呼び出すシステムソフトの処理フローチャートを示す。また、図11に示すステップS32の詳細フローを図13に示し、ステップS36の詳細フローを図14に示す。
以下、図11の処理について、その詳細フローも参照して説明する。
尚、以下の説明におけるアクセスチャネルは、当然、上記FB(READ_WORD)のレベルに応じたアクセスチャネルである。但し、上記の通り、同一タスク内の全てのFBのレベルは同じである。
図11において、まず、DONEビットをクリアする(未完了とする)(ステップS31)。そして、アクセスチャネルに対して、現在の状況を確認する処理を行う(ステップS32)。ステップS32の詳細フローは図13に示す。
図13において、まず、アクセスチャネルのステータスレジスタeをリードし(ステップS51)、現在の完了ビットの状態が“未完了”である場合には(ステップS52,NO)、現在、全く要求が無い状態であるか、又は何等かの要求に対する処理を実行中であることになるので、アクセスチャネルのコマンドレジスタaをリードして確認する(ステップS60)。その結果、もし、上記リードアクセス要求ビット、ライトアクセス要求ビットの何等かが‘1’であれば(ステップS61,YES)、変数BUSYに‘1’をセットする(ステップS62)。一方、アクセスチャネルが現在何も要求を受け付けていない状態であれば(ステップS61,NO)、そのままステップS59に進み、変数BUSYに‘0’をセットする。
一方、ステータスレジスタeの完了ビットが示す状態が“完了”である場合には(ステップS52,YES)、上記リードポインタRpが現在指している位置の要求キューから、要求元のインスタンスの先頭アドレス51と要求コマンドデータ52とを読出す(ステップS53,S54)。つまり、現在アクセスチャネルに依頼しているアクセス要求の要求元FBのインスタンスの特定と、要求コマンドが”リード”なのか”ライト”なのか判別する。尚、本処理の呼び出し元FB(以下、自FB又は自インスタンスと呼ぶ)がアクセス要求元FBとは限らない。例えば、上記例において、仮に、FB1の実行に伴って本処理が呼び出され、現在の要求元がFB2であった場合、ステップS56,S57の処理は、FB2のインスタンスに対して行われることになる。
要求コマンドがリードであれば(ステップS55,YES)、アクセスチャネルのリードデータレジスタdからデータを読出し、これを要求元FBのインスタンスの先頭アドレスから+4、+5の領域(リードデータ下位48、リードデータ上位49)に格納する(ステップS56)。そして、ステップS57に進む。一方、要求コマンドがライトであれば(ステップS55,NO)、そのままステップS57に進む。
ステップS57では、要求元FBのインスタンス40のE_DONEビット44をONする。更に、アクセスチャネルの完了ビットをクリアする(ステップS58)。そして、変数BUSYに‘0’をセットし(ステップS59)、本処理は終了し、図11のステップS33の処理に進む。
ステップS33では、アクセス実行中であるか否かを判定する。これは、上記自インス
タンスのEXビット41を参照し、EXビット=‘1’であればアクセス実行中と判定する。アクセス実行中の場合(ステップS33,YES)、続いて、自インスタンスのE_DONEビット44が‘1’(ON)であるか否かを判定する(ステップS34)。上記の通り、ステップS57の処理でE_DONEビット44がONされるが、上述してある通り、これは自FBによる処理でONされるとは限らず、他FBによる処理でONされる場合もあり得る。
E_DONEビット44=‘1’であれば(ステップS34,YES)、自インスタンスのEXビット41をクリアし(1→0)、DONEビット45をセットし(0→1)、E_DONEビット44はクリアする(1→0)(ステップS35)。そして、ステップS36へ進む。自FBが要求したアクセス実行中で且つ未完了であれば(ステップS34,NO)、そのままステップS36へ進む。
一方、自インスタンスのEXビット=‘0’であれば(アクセス実行なし)(ステップS33,NO)、この自FBのインスタンスに新たなアクセス要求が発生していれば、要求を出してよい状態である。よって、自インスタンスのXRQビット42とRQビット43をチェックし、新要求がある場合には(ステップS38,YES)、当該インスタンスの先頭アドレスと要求コマンドデータ(リード)とを、上記ライトポインタWpが示す位置の要求キューにセットする(ステップS39,S40)。自インスタンスの先頭アドレスを積むのは、インスタンスが個々のFBに与えられた一意なものだからである。但し、先頭アドレスを用いるのは一例であり、例えば、PLCシステムによりIDが別途存在するならばそれを使用してもかまわない。
そして、ライトポインタWpの位置を1つ進める(ステップS41)。最後に、自インスタンスのEXビット41をセットし(0→1)(ステップS42)、ステップS36へ進む。新要求がない場合には(ステップS38,NO)、そのままステップS36へ進む。
ステップS36の処理の詳細フローを図14に示す。
まず、リードポインタRpとライトポインタWpを参照し(ステップS71)、リードポインタRpの位置とライトポインタWpの位置が同じであれば(ステップS72,YES)、未処理の要求は無いことになるので(当然、RpとWpの初期位置は同じにしてある)、アクセスチャネルに対する新規要求発行は行わずに、本処理を終了する。これは、変数BUSYが‘1’である場合(Rpが指す位置の要求キューに対する処理をバスインタフェース側で実行中である場合)(ステップS73,YES)も同様である。
要求バッファ50に未処理の要求があり(ステップS72、NO)且つ変数BUSYが‘0’である場合(ステップS73,NO)には、バスインタフェースへの新規要求発行処理を行う。すなわち、まず、Rpが指す位置の要求キューから、要求元のインスタンス(自インスタンスとは限らない)の先頭アドレス51と要求コマンドデータ52を取得する(ステップS74)。そして、取得した要求元インスタンスの先頭アドレスから+2、+3の領域(アドレス下位46、アドレス上位47)から、共有メモリ1へのアクセスアドレスを取得して、これをバスインタフェースのアクセスチャネルのアクセスアドレスレジスタbへセットする(ステップS75)。更に、取得した要求コマンドデータ52がライト要求であれば(ステップS76,YES)、要求元インスタンスの先頭アドレスから+4、+5の領域(この場合は、ライトデータ下位61、ライトデータ上位62となる)から共有メモリ1へのライトデータを取得して、これをバスインタフェースのアクセスチャネル内のライトデータレジスタcへセットする(ステップS77)。そして、取得した要求コマンドデータ52をアクセスチャネル内のコマンドレジスタaへセットする(ステップS78)ことで、バスインタフェースへの新規要求発行処理は完了し、最後に、Rpを1つ進
める(ステップS79)。
以上説明したステップS36の処理が終了したら、最後にRQビット43の値をXRQビット42にコピーして(ステップS37)、図11に示す処理は終了する。
図15(b)に、上記FB(WRITE_WORD)が呼び出すシステムソフトの処理フローチャートを示す。
図15(b)の処理において、図11と同じ処理は、同一のステップ番号を付してあり、その説明は省略する。図15(b)の処理が図11と異なる点は、図11のステップS40の処理に代えて、図示のステップS81の処理を実行している点のみである。すなわち、要求バッファへのセットにおいて、要求コマンドデータがライト要求であることのみである。
次に、実施例3について説明する。実施例3は上記課題3を解決するものである。
図16に、実施例3におけるバスインタフェース70の構成図を示す。
図16に示す構成において、図1に示す構成と同一の構成には同一の参照符号を付しており、その説明は省略する。すなわち、図1の構成に加えて、システム用アクセスチャネル71を設けている。
各アクセスチャネル11〜13が定周期タスクに対応するものであるのに対して、システム用アクセスチャネル71は、例えばローダ30のモニタ要求や、CPUモジュール間のメッセージ通信に対応する。具体的にはローダ30からのモニタコマンドによる低速デバイス(ここでは、共有メモリ1等を指す)へのアクセス要求や、アプリケーション実行サポートの為のCPUモジュール20間のメッセージの遣り取り(ここでは、共有メモリ1を等を利用)等があげられる。これらは、任意のCPUモジュールの外部からの割り込み等に起因し、上記タスクのアプリケーションによって発生したアクセス要求以外の共有メモリアクセス要求に対応するものである。
システム用アクセスチャネル71は、割込みによるアクセス完了通知機能を備える。すなわち、バスアクセス(共有メモリアクセス)の完了を、図2に示す割込み信号INTによって、マイコン21に通知する。システム用アクセスチャネル71は、自己のステータスレジスタ内の上記“完了ビット”が‘1’になったら、INT信号を活性化(ON)する。これによって、マイコン21に完了割込みが入り、システムソフトは不図示の割り込み処理を実行する。仮にリード要求を出した場合であれば、システムソフトは当該割込み処理において、リードデータをリードデータレジスタから取り出したのち、図17に示すステータスレジスタ内の完了ビットを0クリアして、割込み処理を終了し、中断していた処理を続行する。システム用アクセスチャネル71は、この0クリアにより、INT信号はOFFする。
以上述べたように、実施例3では、マイコン21は、モニタ要求等のようなCPUモジュール外部(又PLC外部)からの要求に起因するバスアクセス要求の発行後、実施例1等の場合と同様に直ちに定周期タスクのアプリケーションに戻ることができるだけでなく、その後のポーリングを行う必要が無く、完了割込みでリードデータの取り込みを行えるので、マイコンの処理能力を無駄なく使用できる。
尚、ここでいう“ポーリング”は、上述したラダー図の場合のようにそのままシステムソフト層に留まって行うポーリングとは異なる。本例の場合、アクセス要求を依頼完了したら、直ちに、定周期タスクアプリケーションに戻ってよいが、当然、アクセス完了したらアクセス結果をローダ等に返信する必要がある為、本来であれば定期的に定周期タスクアプリケーションを中断して、アクセス完了したか否かを確認する必要が生じる。これが
本例におけるポーリングの意味である。しかし、上記本手法では、上記の通り、ポーリングを行う必要がないようにしている。
尚、本実施形態では、アクセス対象は共有メモリとしたが、この例に限らず、アプリケーションがRS232やシリアルEEPROMなど応答の遅いデバイス(これらを総称して低速デバイスと呼ぶものとする)を使う場合にも本発明が適用できる。
実施例1、2におけるバスインタフェースの構成例を示す図である。 本例のプログラマブルコントローラ全体の構成例を示す図である。 各種レジスタのレジスタマップである。 各種レジスタの構成例である。 リード要求の場合のアクセスタイミングチャートである。 リード要求の場合のシステムソフトの処理フローチャート図である。 ライト要求の場合のシステムソフトの処理フローチャート図である。 (a)、(b)は、FBDで表現されるアプリケーション命令の具体例を示す図である。 (a)は実施例1におけるREAD_WORDのインスタンスのデータ構造図、(b)はREAD_WORDが呼び出すシステムソフトの処理フローチャート図である。 図9の処理のアクセスタイミングチャートである。 READ_WORDが呼び出すシステムソフトの処理フローチャート図である。 (a)は実施例2におけるREAD_WORDのインスタンスのデータ構造図、(b)は要求バッファの一例を示す図である。 図11に示すステップS32の詳細フローチャート図である。 図11に示すステップS36の詳細フローチャート図である。 (a)は実施例2におけるWRITE_WORDのインスタンス60のデータ構造図、(b)はWRITE_WORDが呼び出すシステムソフトの処理フローチャート図である。 実施例3におけるバスインタフェースの構成図である。 実施例3におけるステータスレジスタの完了ビットについて説明する為の図である。 マルチタスク実行の一例を示す図である。 従来のPLCの内部および外部構成例を示す図である。 従来のバスインタフェースの構成例である。 従来のバスインタフェースによる共有メモリアクセスのタイミングチャート(リード処理の場合)図である。 従来の問題点を説明する為の図(その1)である。 ラダー図の一例を示す図である。 従来の問題点を説明する為の図(その2)である。 課題2について一例を説明する為の図である。
符号の説明
1 共有メモリ
2 共有メモリバス
3 I/Oバス
4 I/Oモジュール
10 バスインタフェース
11 アクセスチャネル(レベル0用)
12 アクセスチャネル(レベル1用)
13 アクセスチャネル(デフォルト用)
a コマンドレジスタ
b アクセスアドレスレジスタ
c ライトデータレジスタ
d リードデータレジスタ
e ステータスレジスタ
14 アクセス要求キュー
15 バスアクセス制御部
16 内部制御信号とRDY生成部
17 アドレスセレクタ
18 ライトデータセレクタ
19 チャネルセレクタ
20 CPUモジュール
21 マイコン
22 ROM
23 RAM
25 I/Oインタフェース
26 RDY制御部
30 ローダ
40 インスタンス
41 EXビット
42 XRQビット
43 RQビット
44 E_DONE
45 DONEビット
46 アドレス下位
47 アドレス上位
48 リードデータ下位
49 リードデータ上位
50 要求バッファ
51 要求元のインスタンスの先頭アドレス
52 要求コマンドデータ
60 インスタンス
61 ライトデータ下位
62 ライトデータ上位
70 バスインタフェース
71 システム用アクセスチャネル
80 インスタンス
81 EXビット
82 XRQビット
83 RQビット
84 DONEビット
85 アドレス下位
86 アドレス上位
87 リードデータ下位
88 リードデータ上位

Claims (8)

  1. 複数レベルのタスクを実行する処理ユニットと、該処理ユニットからの要求に応じて低速デバイスにアクセスするインタフェースユニットとを有するCPUモジュールであって、
    該インタフェースユニットは、前記複数のレベル各々に応じた複数のアクセスチャネルを有し、
    前記処理ユニットは、前記何れかのレベルのタスクを実行中に前記低速デバイスへのアクセス要求が発生した場合、該タスクのレベルに応じた前記アクセスチャネルに対して低速デバイスアクセス処理の実行を依頼するアクセス処理手段を有し、
    前記インタフェースユニットは、該アクセスチャネルへの依頼が完了すると、前記処理ユニットのWAIT状態を解除し、その後に、該依頼に基づく前記低速デバイスへのアクセスを実行することを特徴とするプログラマブルコントローラのCPUモジュール。
  2. 前記処理ユニットは、前記WAIT状態の解除によって、前記アクセス要求が発生したタスクより上位レベルのタスクの実行が可能となり、前記アクセス処理手段は、該上位レベルのタスクを実行中に前記低速デバイスへのアクセス要求が発生した場合、該タスクのレベルに応じた前記アクセスチャネルに対して低速デバイスアクセス処理の実行を依頼することを特徴とする請求項1記載のプログラマブルコントローラのCPUモジュール。
  3. 前記インタフェースユニットは、前記複数のアクセスチャネルに前記低速デバイスアクセス処理の依頼があると、該依頼受付順に、前記低速デバイスへのアクセスを実行するアクセス制御手段を更に有することを特徴とする請求項1又は2記載のプログラマブルコントローラのCPUモジュール。
  4. 前記タスクのアプリケーションがシーケンシャル処理を実行するものである場合、前記アクセス処理手段は、該アプリケーションにおける任意の命令実行に伴い前記アクセスチャネルに対する低速デバイスアクセス処理の実行依頼後、該依頼先のアクセスチャネルに対する定期的なポーリングを行って低速デバイスアクセス処理の実行完了を待つことを特徴とする請求項1〜3の何れかに記載のプログラマブルコントローラのCPUモジュール。
  5. 前記タスクのアプリケーションが判断処理を実行するものである場合、前記アクセス処理手段は、該アプリケーションにおける任意の命令実行に伴い前記アクセスチャネルに対する低速デバイスアクセス処理の実行依頼後、次の命令実行に移ることを特徴とする請求項1〜3の何れかに記載のプログラマブルコントローラのCPUモジュール。
  6. 前記タスクのアプリケーションが判断処理を実行するものである場合、前記処理ユニットは、各レベルに応じた記憶手段を更に有し、
    前記アクセス処理手段は、該アプリケーションにおける任意の命令実行に伴い低速デバイスアクセス要求が発生する毎に、該要求を該アプリケーションのレベルに対応する前記記憶手段に格納し、前記インタフェースユニット側で低速デバイスアクセス処理が完了する毎に、該記憶手段に記憶されている要求の中で最も古い要求を取り出して、前記インタフェースユニットに対して低速デバイスアクセス処理を依頼することを特徴とする請求項1に記載のプログラマブルコントローラのCPUモジュール。
  7. 前記インタフェースユニットは、システム用アクセスチャネルを更に備え、
    前記アクセス処理手段は、前記タスクのアプリケーション以外による低速デバイスアクセス要求が発生すると、前記システム用アクセスチャネルに対して低速デバイスアクセス処理を依頼し、
    前記インタフェースユニットは、該アクセスチャネルへの依頼が完了すると、前記処理ユニットのWAIT状態を解除し、
    該システム用アクセスチャネルは、低速デバイスアクセス処理が完了すると、前記処理ユニットに対して、アクセス完了割込みを出力することを特徴とする請求項1に記載のプログラマブルコントローラのCPUモジュール。
  8. 請求項1〜7の何れかに記載のCPUモジュールを有するプログラマブルコントローラ。
JP2007220439A 2007-08-27 2007-08-27 プログラマブルコントローラ、そのcpuモジュール Active JP4978373B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007220439A JP4978373B2 (ja) 2007-08-27 2007-08-27 プログラマブルコントローラ、そのcpuモジュール

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007220439A JP4978373B2 (ja) 2007-08-27 2007-08-27 プログラマブルコントローラ、そのcpuモジュール

Publications (2)

Publication Number Publication Date
JP2009053963A true JP2009053963A (ja) 2009-03-12
JP4978373B2 JP4978373B2 (ja) 2012-07-18

Family

ID=40504985

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007220439A Active JP4978373B2 (ja) 2007-08-27 2007-08-27 プログラマブルコントローラ、そのcpuモジュール

Country Status (1)

Country Link
JP (1) JP4978373B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012027728A (ja) * 2010-07-23 2012-02-09 Mitsubishi Electric Corp プログラマブルコントローラおよびバス変換器
JP2014534522A (ja) * 2011-10-26 2014-12-18 インテル・コーポレーション マルチタッチインターフェース方式
JP2016024818A (ja) * 2014-07-17 2016-02-08 ヴァーゴ・フェアヴァルトゥングスゲゼルシャフト・エムベーハー データ転送のための産業用制御システムおよび方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11175113A (ja) * 1997-12-12 1999-07-02 Hitachi Ltd プログラマブルコントローラ
JPH11296210A (ja) * 1998-04-07 1999-10-29 Omron Corp プログラマブルコントローラ
JP2006309579A (ja) * 2005-04-28 2006-11-09 Hitachi Ltd 記憶制御装置及びストレージシステム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11175113A (ja) * 1997-12-12 1999-07-02 Hitachi Ltd プログラマブルコントローラ
JPH11296210A (ja) * 1998-04-07 1999-10-29 Omron Corp プログラマブルコントローラ
JP2006309579A (ja) * 2005-04-28 2006-11-09 Hitachi Ltd 記憶制御装置及びストレージシステム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012027728A (ja) * 2010-07-23 2012-02-09 Mitsubishi Electric Corp プログラマブルコントローラおよびバス変換器
JP2014534522A (ja) * 2011-10-26 2014-12-18 インテル・コーポレーション マルチタッチインターフェース方式
US9262000B2 (en) 2011-10-26 2016-02-16 Intel Corporation Multi-touch interface schemes
JP2016024818A (ja) * 2014-07-17 2016-02-08 ヴァーゴ・フェアヴァルトゥングスゲゼルシャフト・エムベーハー データ転送のための産業用制御システムおよび方法

Also Published As

Publication number Publication date
JP4978373B2 (ja) 2012-07-18

Similar Documents

Publication Publication Date Title
US7162556B2 (en) Matrix type bus connection system and power reduction method therefor
JP2006318139A (ja) データ転送装置、データ転送方法およびプログラム
JP4978373B2 (ja) プログラマブルコントローラ、そのcpuモジュール
JP2008009817A (ja) 半導体装置及びデータ転送方法
JP2010176442A (ja) ディスクリプタ転送装置、i/oコントローラ、及びディスクリプタ転送方法
JP4945125B2 (ja) メモリ制御装置
JP2008146541A (ja) Dma転送システム、dmaコントローラ及びdma転送方法
JP5456434B2 (ja) パイプ調停回路、パイプ調停方法
JP4193746B2 (ja) マトリックス状バス接続システム
JP2005258509A (ja) ストレージ装置
JP4649257B2 (ja) マルチcpuシステム
JP6992750B2 (ja) メモリコントローラ、メモリシステムおよび情報処理システム
JP7294912B2 (ja) コントロールシステム
JP2011070259A (ja) データ転送装置及びデータ転送方法
US20180181508A1 (en) Semiconductor device
JP2011034214A (ja) メモリ制御装置
WO2013062109A1 (ja) I/oデバイス制御システムおよびi/oデバイス制御方法
WO2022185581A1 (ja) 制御装置およびデータ転送方法
JP4862593B2 (ja) データ転送装置及び画像形成装置
WO2020209016A1 (ja) 半導体装置及びデバッグシステム
JPH08249269A (ja) Dma転送制御方法及びdma転送制御装置
JPH11252150A (ja) ネットワーク接続装置、及びネットワーク接続制御方法
JP6535516B2 (ja) マルチ・プログラマブルデバイス・システムとその制御方法
JP2006023808A (ja) データ転送装置及びデータ転送方法
JP2012073741A (ja) バス転送システム

Legal Events

Date Code Title Description
A625 Written request for application examination (by other person)

Free format text: JAPANESE INTERMEDIATE CODE: A625

Effective date: 20100615

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20110422

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110906

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110907

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20111026

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111102

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20111108

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20111026

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120403

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150427

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4978373

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250