(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-12
(45)【発行日】2023-06-20
(54)【発明の名称】コントロールシステム
(51)【国際特許分類】
G05B 19/05 20060101AFI20230613BHJP
G05B 19/042 20060101ALI20230613BHJP
【FI】
G05B19/05 L
G05B19/042
G05B19/05 S
(21)【出願番号】P 2019116534
(22)【出願日】2019-06-24
【審査請求日】2022-04-19
(73)【特許権者】
【識別番号】502129933
【氏名又は名称】株式会社日立産機システム
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】曽我 満
(72)【発明者】
【氏名】今井 光洋
【審査官】藤崎 詔夫
(56)【参考文献】
【文献】特開2001-067107(JP,A)
【文献】特開昭62-006361(JP,A)
【文献】特開平10-171770(JP,A)
【文献】特開2017-027539(JP,A)
【文献】特開昭63-116210(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/05
G05B 19/042
(57)【特許請求の範囲】
【請求項1】
演算モジュールと、
前記演算モジュールが接続される接続部と複数のサブ演算モジュールがそれぞれ接続される複数の接続部である複数のサブ接続部とに関連付けられたバスと
を備え、
前記演算モジュールにおいて、前記バスの空間が、前記複数のサブ接続部の全部または一部である2以上のサブ接続部にそれぞれ対応した2以上の空間である2以上の個別空間と、前記2以上のサブ接続部に共通の空間である共通空間とを含み、
前記2以上のサブ接続部に2以上のサブ演算モジュールが接続されている場合、前記演算モジュールは、いずれかのサブ演算モジュールとの間でデータ転送を行うことであるシングルアクセスを当該サブ演算モジュールに対応した個別空間を用いて行うことと、前記2以上のサブ演算モジュールとの間で同時にデータ転送を行うことであるブロードキャストアクセスを前記共通空間を用いて行うこととを選択的に行い、
前記演算モジュールは、
転送対象のデータがいずれかのサブ演算モジュールに対するデータである場合、当該サブ演算モジュールに対するシングルアクセスを選択し、
転送対象のデータが前記2以上のサブ演算モジュールに共通のデータである場合、ブロードキャストアクセスを選択し、
転送対象のデータが前記2以上のサブ演算モジュールに共通のデータである場合、前記演算モジュールは、
前記2以上のサブ演算モジュールに高速連続アクセス不可のサブ演算モジュールが1つでもあれば、前記ブロードキャストアクセスとしての通常アクセスを選択し、
前記2以上のサブ演算モジュールのいずれも高速連続アクセス可能であれば、前記ブロードキャストアクセスとしての高速連続アクセスを選択する、
コントロールシステム。
【請求項2】
前記演算モジュールは、サブ演算モジュール個々のアドレス空間の任意のアドレスまたはサブ演算モジュール内の連続したアドレス空間に対応する連続アクセス数を指定するようになっており、
各サブ演算モジュールは、指定された任意のアドレスから当該アドレスを連続アクセス数分のインクリメントまたはデクリメントして当該サブ演算モジュール内の連続したアドレス空間に対してIO処理を実行するようになっており、
前記バスには、連続したアドレス空間に対するIO処理の実行とアドレスのインクリメントまたはデクリメントとを指定するモード信号を通信する第1の信号線
、アドレスをインクリメントまたはデクリメントする更新タイミングを規定するストローブ信号を通信する第2の信号線、
および、通常アクセスと高速連続アクセスの選択タイミングを規定するアドレスストローブ信号を通信する第3の信号線が付設されており、
前記演算モジュールは、前記第1の信号線
ないし前記第
3の信号線を用いて、通常アクセスと高速連続アクセスのいずれかを選択する、
請求項
1に記載のコントロールシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、設備や機械システムの動作をシーケンスプログラムによって制御するプログラマブルコントローラ(PLC)のようなコントロールシステムに関し、特に、演算モジュールとサブ演算モジュール間でのデータ転送の改良に関する。
【背景技術】
【0002】
特許文献1(特開2004-362327号公報)には、「プラントの監視制御設備における監視用パーソナルコンピュータと制御用PLCをネットワークで接続した分散型監視制御システムにおいて、監視用汎用パーソナルコンピュータに制御用汎用PLCの情報管理ファイルを設け、前記制御用汎用PLCに、この制御用汎用PLCの情報自動掃出ツールを設けて、前記汎用パーソナルコンピュータに入力された情報と前記汎用制御用PLCのプロセス情報を汎用ソフトウェアで統合管理することを特徴とする分散型監視制御システム。」が開示されている(請求項1参照)。
【0003】
特許文献2(特開2006-178818号公報)には、「リアルタイムOSと、メモリと、ラダー言語プログラムをモーション制御周期に同期させて実行する実行手段と、前記ラダー言語プログラムとC言語プログラムの両方が動作するマイクロプロセッサとを備えたモーションコントローラにおいて、エンジニアリングツールのプロジェクト設定ファイルに従ってロードされた前記C言語プログラムがタスク型プロジェクトであれば前記リアルタイムOSのタスクとして動作させ、前記C言語プログラムが関数型プロジェクトであれば他のタスクから関数としてコール可能な状態で前記メモリに格納することを特徴とするモーションコントローラ。」が開示されている(請求項1参照)。
【0004】
特許文献3(特開2017-27539号公報)には、「CPUモジュールと、1以上のIOモジュールと、前記両モジュールをつなぐ外部バスとを備え、前記CPUモジュールは、前記IOモジュール個々のアドレス空間の任意アドレスを指定し、前記IOモジュールは、指定された前記任意アドレスから当該アドレスをインクリメントまたはデクリメントして当該IOモジュール内の連続したアドレス空間に対してIO処理を実行することを特徴とするプログラマブルコントローラ。」が開示されている(請求項1参照)。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2004-362327号公報
【文献】特開2006-178818号公報
【文献】特開2017-27539号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1には、「しかしながら、従来の分散型監視制御システム41は、オペレータズテーション50a~50n、ディジタル制御装置60a~60n、伝送路52a~52n、基幹伝送路42、伝送路61a~61n等が分散型監視制御システムメーカ毎の専用機器であり、高価かつ、他メーカー製品と互換性がないため、拡張性が劣り、また、近年のパソコン等汎用機器の性能向上に伴い、能力的にも専用機器を凌ぐものもあるにもかかわらず、汎用機器が使用されていない。」と記載されている(0004段落参照)。
【0007】
分散型監視制御システムメーカ毎の専用機器はプログラマブルロジックコントローラであり、このような装置構成とする背景には、プログラマブルロジックコントローラはI/Oユニット等の制御を行うものであり、工場内の生産や搬送等に用いられる装置に接続されるため、制御に遅延が生じると工場内の装置等の動作が不安定になったり、予期しない動作が生じたりする場合がある。そのため、従来のプログラマブルロジックコントローラは、複雑な処理をさせないようになっていた。特許文献1に開示される発明も同様に複雑な処理をさせないようにし、監視用汎用パーソナルコンピュータに制御用汎用プログラマブルロジックコントローラの情報管理ファイルを設けることで、プログラマブルロジックコントローラの制御に影響を与えないようにすることが開示されている。
【0008】
したがって、特許文献1は、プログラマブルロジックコントローラ内で、情報処理を行うことは考慮されていない。
【0009】
特許文献2の課題の欄には、「ラダー言語アプリケーションプログラムとC言語アプリケーションプログラムが異なるマイクロプロセッサ上で動作するため、ラダー言語アプリケーションからC言語アプリケーションプログラムを関数としてコールすることができないという問題もあった。」と記載されている。
【0010】
すなわち、特許文献2は、同一のマイクロプロセッサ上で、ラダー言語アプリケーションプログラムがC言語アプリケーションプログラムを関数としてコールすることを目的としている。
【0011】
特許文献3には、CPUモジュールとIOモジュール間とで、連続したアドレス空間に対して高速連続アクセスを行う方法が開示されている。但し、アクセス時では、CPUモジュールのような演算モジュールとIOモジュールのようなサブ演算モジュールは1対1の関係であることが前提になっている。なぜなら、演算モジュールとサブ演算モジュールは外部バスにつながっており、一般に、バスでは、1:1通信が前提となるからである。一方、演算モジュールとサブ演算モジュールを有するコントロールシステム(例えば、産業用コントローラ)は、通常、制御対象装置が存在する工場のような現場に設置されるが、エッジコンピューティングの適用またはその他の理由から、コントロールシステムがセンサまたはその他のデバイスから取得したデータをネットワークを介してクラウドシステムのようなリモートのシステムに送信することに代えて、コントロールシステムが当該データを処理することが望ましいケースがあり得る。例えば、コントロールシステムが行う制御では、制御対象装置の状態を読み込みまたは書き込み(取得または更新)をするスキャン動作をスキャンタイム内で行う必要があるという高いリアルタイム性が求められることから、コントロールシステムにおいてデータ処理がされることが望ましいケースがあり得る。このようなケースにおいては、演算モジュールと複数のサブ演算モジュール間での同時データ転送が実現されると、コントロールシステムにおけるデータ処理の高速化が期待される。
【0012】
本発明は以上の点を考慮してなされたもので、演算モジュールと2以上のサブ演算モジュールとの間のデータ転送を同時に行うことを目的とする。
【課題を解決するための手段】
【0013】
コントロールシステムは、演算モジュールと、演算モジュールが接続される接続部と複数のサブ演算モジュールがそれぞれ接続される複数の接続部である複数のサブ接続部とに関連付けられたバスとを備える。演算モジュールにおいて、バスの空間が、2以上のサブ接続部にそれぞれ対応した2以上の空間である2以上の個別空間と、2以上のサブ接続部に共通の空間である共通空間とを含む。2以上のサブ接続部に2以上のサブ演算モジュールが接続されている場合、演算モジュールは、いずれかのサブ演算モジュールとの間でデータ転送を行うことであるシングルアクセスを当該サブ演算モジュールに対応した個別空間を用いて行うことと、2以上のサブ演算モジュールとの間で同時にデータ転送を行うことであるブロードキャストアクセスを共通空間を用いて行うこととを選択的に行う。
【発明の効果】
【0014】
本発明によれば、演算モジュールと2以上のサブ演算モジュールとの間のデータ転送を同時に行うことが可能となる。
【図面の簡単な説明】
【0015】
【
図1】
図1は、本発明の実施例に係るプログラマブルコントローラの構成図である。
【
図2】
図2は、サブCPUモジュールが備えるBUSコントローラの内部ブロックの構成図である。
【
図3】
図3は、通常のIOモジュールに対するライトアクセス時のタイムチャートである。
【
図4】
図4は、通常のIOモジュールに対するリードアクセス時のタイムチャートである。
【
図5】
図5は、サブCPUモジュールに対するライト時の高速連続アクセスのタイムチャートである。
【
図6】
図6は、サブCPUモジュールに対するリード時の高速連続アクセスのタイムチャートである。
【
図7】
図7は、プログラマブルコントローラ(PLC)の動作を示すフローチャートである。
【
図8】
図8は、CPUモジュールの外部バス空間のアドレスマップとスロット選択信号との関係を表すイメージ図である。
【
図9】
図9は、
図8に示す関係の一変形例を表すイメージ図である。
【発明を実施するための形態】
【0016】
以下に、本発明の実施例について、図を参照しながら説明する。
【0017】
図1は、本発明の実施例に係るPLCの構成図である。
【0018】
このPLCは、CPUスロットと2以上のサブCPUスロットを有する。CPUスロットにはCPUモジュール1が実装され、サブCPUスロットにはサブCPUモジュール2が実装される。
【0019】
CPUモジュール1は、シーケンスプログラムの演算を行うMPU(MicroProcessor Unit)11、パソコン等の周辺機器と通信するための通信ポート12、シーケンスプログラムやシステムプログラムを格納するためのROM(Read Only Memory)13、シーケンスプログラムの演算に使用するデータを格納するRAM(Random Access Memory)14、該RAM14と外部バス3(バスの一例)に接続されるサブCPUモジュールとのデータ転送(例えば、DMA(Direct Memory Access))を行うDMAC(DMA Controller)15、外部バス3とのインタフェースでありアドレス出力部およびデータ入出力部を持つBUSコントローラM16(Mは「マスタ」を表す)、から構成される。また、CPUモジュール1は、後述するサブCPUモジュール2に対する高速連続アクセスのために、連続アクセス数をカウントするカウンタを備える。このカウンタは、ハード的にまたはソフト的に構成することができるものである。そのため、
図1のCPUモジュール1内には図示をしていない。MPU11が、演算部の一例である。ROM13およびRAM14のうちの少なくとも一つが、メモリ部の一例である。
【0020】
CPUモジュール1は、サブCPUスロット#0、サブCPUスロット#1、・・・サブCPUスロット#nに、どのようなサブCPUモジュール2が接続されているのか、あらかじめ把握する必要がある。そこで、サブCPUモジュール2が、ステータス情報として、入出力タイプやデータサイズといった情報を例えばROMに保持しており、ステータス情報をCPUモジュール1に外部バス3経由で送信する。このステータス情報が、高速連続アクセスに対応可能か否かの情報を含む。これにより、CPUモジュール1から、高速連続アクセス対応可能なサブCPUモジュール2がどのサブCPUスロットに実装されているか判断可能となる。なお、ステータス情報は、ブロードキャストに対応可能か否かの情報を含み、CPUモジュール1から、ブロードキャスト対応可能なサブCPUモジュール2がどのサブCPUスロットに実装されているか判断可能でよい。
【0021】
デジタル信号やアナログ信号用のIOモジュール(入力モジュールや出力モジュール)や通信モジュールといったモジュールが、サブCPUモジュール2の一例である。このサブCPUモジュール2は、モジュール内部に例えば2ポートRAM21を備え、CPUモジュール1とサブCPUモジュール2と間で、データが、この2ポートRAM21を介して転送される。その際のCPUモジュール1側からのアクセス時に、サブCPUモジュール2は、外部バス3を介して取得したアドレスにより内部の2ポートRAM21にアクセスするか、または、そのアドレスに対してCPUモジュール1から送られる連続アクセス数分のインクリメントまたはデクリメントしたアドレスを送出して内部の2ポートRAM21にアクセスする。このアクセスを可能にするために、サブCPUモジュール2は、BUSコントローラS22(Sは「スレーブ」を表す)を備える。アドレスは番地ともいう。また、サブCPUモジュール2は、RAM21の他に、MPUおよびROMも有する。サブCPUモジュール2のMPUが、サブ演算部の一例である。サブCPUモジュール2ROMおよびRAM21のうちの少なくとも一つが、サブメモリ部の一例である。
【0022】
外部バス3は、CPUモジュール1およびサブCPUスロット#0~#nに接続された各種サブCPUモジュール2をつなぎ、アドレス、データおよび制御情報をやり取りする。本実施例では、外部バス3は、アドレスとデータで共用するマルチプレクスバスである。なお、
図1で、外部バス3を構成する信号線の内、後述するモード信号(mode_n)およびストローブ信号(strobe_n)のための信号線を分離した形で示している。また、外部バス3は、バックプレーンのようなベースボードに含まれていてよい。この場合、CPUモジュール1やサブCPUモジュール2を外部バス3に接続することは、CPUモジュール1やサブCPUモジュール2をベースボードに接続することでよい。外部バス3には、CPUモジュール1が接続される接続部(例えばポート)と、複数のサブCPUモジュール2がそれぞれ接続される複数の接続部である複数のサブ接続部(例えばポート)とが関連付けられている。結果として、接続部にCPUモジュール1が接続されたり、サブ接続部にサブCPUモジュール2が接続されたりすれば、外部バス3に、CPUモジュール1やサブCPUモジュール2が電気的に接続される。複数のサブ接続部の全部または一部である2以上のサブ接続部にそれぞれ2以上のサブCPUモジュール2が接続される。各接続部は、スロットを含む要素であってよい。
【0023】
本発明は、外部バスをこのマルチプレクスバスに限定するものではなく、セパレート型のバス形態であってもよい。ただし、マルチプレクスバスは、セパレート型のバスと比べ必要となる信号線を減らしピン数を低減することができる。
【0024】
図2は、サブCPUモジュール2が備えるBUSコントローラS22の内部ブロックの構成図である。
【0025】
外部バス3とのインタフェースであるBUSコントローラS22は、アドレスを記憶するフリップフロップ(FF)31、このフリップフロップ(FF)が出力するアドレスをインクリメントまたはデクリメントする増減カウンタ32およびアドレス選択用のセレクタ33から構成される。外部バス3は、マルチプレクスバスであることから、この外部バス3からの入力データの内、データについてはそのまま2ポートRAMの方へ送り、アドレスについてはセレクタ33へ送られる。なお、
図2では、モード信号(mode_n)およびストローブ信号(strobe_n)のための信号線は省略されている。
【0026】
フリップフロップ(FF)31は、その入力として、CPUモジュール1から外部バス3を介して入力されるアドレス、またはフリップフロップ(FF)31自身が記憶しているアドレスを増減カウンタ32によりインクリメントまたはデクリメントしたアドレスをセレクタ33により選択する。すなわち、フリップフロップ(FF)31は、通常アクセス時には、外部バス3からのアドレスが選択されて記憶および/または出力することとなり、高速連続アクセス時には、上記インクリメントまたはデクリメントしたアドレスが選択されて順次記憶および/または出力することとなる。このセレクタ33による選択には、後述するモード信号(mode_n)が使用される。また、増減カウンタ32がインクリメントするかデクリメントするかには、後述するモード信号(mode_n)およびストローブ信号(strobe_n)が使用される。
【0027】
CPUモジュール1と各サブCPUモジュール2との間では、当該サブCPUモジュール2が高速連続アクセスの対応が可能か否かに応じて、データアクセス(データ転送)が異なる。データアクセスの違いを、タイムチャートを使って説明する。
【0028】
先ず、
図3および
図4は、CPUモジュール1が通常のサブCPUモジュール(高速連続アクセスの対応が不可のサブCPUモジュール)に対するリフレッシュ処理を行う場合のタイムチャート(通常アクセス(通常のI/Oアクセス)が行われる場合のタイムチャート)である。
図3がライト時のタイムチャートであり、
図4がリード時のタイムチャートである。
【0029】
外部バス3は、アドレスとデータで共用するマルチプレクスバスであり、やり取りを行う信号は、各スロットの選択信号(cs_n)、アドレスストローブ信号(as_n)、データストローブ信号(wr_n/rd_n)および16ビットのアドレス/データ信号(ad[15:0])から構成される。外部バス3は、これらの信号がそれぞれ流れる複数の信号線を含む。例えば、外部バス3は、選択信号(cs_n)が流れる信号線を含む。
【0030】
例えば、32点(ビット)の出力モジュールに対するリフレッシュ処理は、
図3に示すライトアクセスを2回行うことになる。また、8チャネルのアナログ入力モジュールに対するリフレッシュ処理は、1チャネルが16ビットであることから、
図4に示すリードアクセスを8回行うことになる。
【0031】
次に、
図5および
図6は、CPUモジュール1とサブCPUモジュール2との間で高速連続アクセスを行う場合のタイムチャートである。
図5がライト時のタイムチャートであり、
図6がリード時のタイムチャートである。
【0032】
CPUモジュール1は、サブCPUモジュール2に対して、アクセスするアドレス空間のアドレス(ADR)を指定する(任意アドレスの指定)と共に、通常アクセスか高速連続アクセスかを識別するためのモード信号(mode_n)をアドレス出力と同じタイミングで出力する。サブCPUモジュール2側は、アドレスストローブ信号(as_n)の立ち上がり時に、モード信号(mode_n)のレベルによって、通常アクセスまたは高速連続アクセスのどちらでCPUモジュール1がアクセスしているのか判断する(
図5および
図6では、モード信号(mode_n)のLレベルの時が高速連続アクセスである)。
【0033】
高速連続アクセスのデータサイクル時には、ストローブ信号(strobe_n)のレベル変化に応じて通信モジュール内部のアドレスが更新される。すなわち、ストローブ信号(strobe_n)のレベルの変化開始時点(LレベルからHレベルへの立ち上がり時)のモード信号(mode_n)のレベルにより、インクリメントまたはデクリメントが選択される(
図5および
図6では、ストローブ信号(strobe_n)のLレベルからHレベル変化開始時に、モード信号(mode_n)が、Lレベルであればインクリメント、Hレベルであればデクリメント)。
【0034】
そして、CPUモジュール1は、高速連続アクセスに係る連続アクセス数(連続するアドレス空間)を指定する。CPUモジュール1は、内部に設けたカウンタを用いて、サブCPUモジュール2に対して、連続したアドレス空間に対応する連続アクセス数分パルス化したストローブ信号(strobe_n)を送信する。サブCPUモジュール2が備えるBUSコントローラS22の増減カウンタ32は、このパルス化したストローブ信号を受けて、指定された任意アドレスからこの連続アクセス数分インクリメントまたはデクリメントすることになる。
【0035】
また、CPUモジュール1に代えて、高速連続アクセスに対応していないCPUモジュールが採用され、且つ、サブCPUモジュールとして、高速連続アクセスに対応可能なサブCPUモジュールが採用された場合でも、通常アクセスに必要な制御信号(cs_n、as_n、wr_nおよびrd_n)の出力方法は互換性があるので、CPUモジュールとサブCPUモジュール間で通常アクセスは可能である。
【0036】
本実施例では、サブCPUモジュール2は、内部に2ポートRAMを備えているが、2ポートRAMに代えて、1ポートRAMと1ポートRAMに対して付加された調停回路(アービタ)を備えてもよい。
【0037】
図7は、PLCの動作を示すフローチャートである。PLCは、通常、データの入力に係る入力リフレッシュ、入力データに基づくシーケンス演算および演算結果に伴うデータの出力に係る出力リフレッシュの一連の処理フローを、電源オフのような停止操作が発生するまでの間、サイクリックに実行する。そして、IOリフレッシュ(入力リフレッシュ+出力リフレッシュ)およびシーケンス演算の実行による一連のサイクリック処理に掛かる時間を「スキャンタイム」と呼んでいる。そうすると、シーケンス演算の実行時間が一定であれば、スキャンタイムはIOリフレッシュに掛かる時間に左右されることになる。
【0038】
次に、上記フローチャートに従い、高速連続アクセスの有無によりどの程度サイクリックな演算性能、すなわちスキャンタイムに差異がでるのかを説明する。ここで、PLCの構成例としては、
図1に示す通り、サブCPUスロット#0およびサブCPUスロット#1に、8,192ワードのデータを扱うサブCPUモジュール2が実装されていて、サブCPUスロット#2に、1ワードのデータを扱う入力モジュールとしてのサブCPUモジュール2が実装されていて、サブCPUスロット#3に、1ワードのデータを扱う出力モジュールとしてのサブCPUモジュール2が実装されているものとする。また、IOアクセスの単位時間を“1μsec”として、
図7のフローチャートが示す、一連のサイクリック処理に掛かるスキャンタイムを算出する。また、以下の説明では、サブCPUスロット#xに実装されたサブCPUモジュール2を「サブCPUモジュール#x」と称することがある。
【0039】
図3および
図4に示すサブCPUモジュール(高速連続アクセスに対応不可のサブCPUモジュール)に対するアクセスが行われた場合を想定する。サブCPUモジュール#0および#1の各々は最大で8,192ワードのデータを扱うことから、入力リフレッシュおよび出力リフレッシュを通常アクセスで行うと、IOリフレッシュは、最大で“16,384μsec”(約16msec)の時間を要することとなる。また、シーケンス演算に要する時間は、ユーザが作成するシーケンスプログラムの容量に依存するところ、通常の目安として“1msec(=1,000μsec)”である。そうすると、スキャンタイムは、最大“17,384μsec”で、17msec程度となる。
【0040】
一方、サブCPUモジュール2に対するIOリフレッシュを、
図5および
図6に示す高速連続アクセスで行う場合、サブCPUモジュール2内部ではアドレスを更新するだけの処理となる。そうすると、CPUモジュール1から順次アドレスを取得するよりも高速にアドレス更新が可能である。サブCPUモジュール2内部でのアドレス更新時間は、通常120nsec程度であるので、“0.1μsec”とすると、サブCPUモジュール2のIOリフレッシュに要する時間は、最大“819μsec”程度と捉えることができる。これに、サブCPUモジュール#2(入力モジュール)およびサブCPUモジュール#3(出力モジュール)としての通常のIOアクセス分(2μsec)を加えて、IOリフレッシュとしては、最大“1,640μsec”となる。更に、シーケンス演算時間(1msec)を加えたスキャンタイムは、最大“2,640μsec”となる。すなわち、上記の通常のIOアクセスの場合のスキャンタイムと比べて約6.6倍の性能アップとなることが判る。
【0041】
データ通信の際には、番地の指定を1度行い、指定された番地にデータ通信を行った後には、指定番地以降または以前の番地に対して、リードまたはライトの順次データ通信ができるため、この順次データ通信を行う際に、番地の指定を行わなくてよいこととなる。これにより、番地指定の通信に要する時間を減らすことが可能となる。つまり、一のサブCPUモジュールが通信を開始する際に、データ通信を行う前にデータ通信をする番地の指定を行った後は、一と他のサブCPUモジュールは、それぞれ順次データ通信することを設定またはその情報を有しているため、データ通信を繰り返し行うこととなる。例えば、指定番地nを指定する通信を行い、指定番地nのデータ通信後には、番地n+1、n+2・・・またはn-1、n-2・・・に対しては、番地を指定する通信が不要となるため、全体のデータ通信速度を向上させることが可能となる。なお、便宜上n+1,n+2・・・等と記載したが、データ通信するバス数等に応じて指定番地以降または以前の番地は適宜変更されるため、一般化すると順次データ通信が行われる番地は、n+m、n+2mとなる。
【0042】
以上、
図1~
図7を参照した説明によれば、本実施例においては、CPUモジュール1のIOリフレッシュ処理において、連続したエリア(アドレス空間)に対するアクセスを上記の高速連続アクセスとすることにより、処理を高速化することが可能となる。すなわち、連続したアドレス空間に対するCPUモジュール1からのバスアクセスを1回の任意アドレスの指定出力後に、テータストローブ信号をアクセスサイズ分トグルすることによりリードまたはライトが可能となり、高速にデータ転送が行える。また、データ転送を高速に行うことで、CPUモジュール1での演算周期が速くなり、外部機器に対する制御を高速に処理実行することが可能となる。
【0043】
以上、
図1~
図7を参照した説明を、例えば下記のように総括することができる。
【0044】
コントロールシステム(例えば、PLC)が、演算モジュール(例えば、CPUモジュール1)と、1以上のサブ演算モジュール(例えば、1以上のサブCPUモジュール2)と、それらのモジュールをつなぐバス(例えば、外部バス3)とを備える。演算モジュールは、サブ演算モジュール個々のアドレス空間の任意のアドレスまたはサブ演算モジュール内の連続したアドレス空間に対応する連続アクセス数を指定する。サブ演算モジュールは、指定された任意のアドレスから当該アドレスを連続アクセス数分のインクリメントまたはデクリメントして当該サブ演算モジュール内の連続したアドレス空間に対してIO処理を実行する。バスには、連続したアドレス空間に対するIO処理の実行とアドレスのインクリメントまたはデクリメントとを指定するモード信号を通信する第1の信号線、および、アドレスをインクリメントまたはデクリメントする更新タイミングを規定するストローブ信号を通信する第2の信号線、が付設される。
【0045】
アドレスをインクリメントまたはデクリメントする更新タイミングは、ストローブ信号のレベル変化時でよい。
【0046】
サブ演算モジュールは、ストローブ信号として連続アクセス数分のパルス化した信号を出力してよい。
【0047】
本実施例では、通常アクセスおよび高速連続アクセスのいずれも、外部バス3経由のシングルアクセス(CPUモジュール1とサブCPUモジュール2間の1:1でのデータ転送)であることもあれば、外部バス3経由のブロードキャストアクセス(CPUモジュール1とCPUモジュール2間での1:多での同時データ転送)であることもある。外部バス3経由でのブロードキャストアクセスは、以下のようにして実現される。
【0048】
図8は、CPUモジュール1の外部バス空間のアドレスマップとスロット選択信号(cs_n)との関係を表すイメージ図である。
【0049】
外部バス空間800のアドレスマップが、BUSコントローラM16によりCPUモジュール1のMPU11に提供される。外部バス空間800は、上述したアドレス空間の一部でよい。アドレスマップによれば、外部バス空間800は、複数のサブCPUスロットにそれぞれマッピングされている複数の個別IO空間801と、全サブCPUスロットにマッピングされている共通IO空間802とを含む。個別IO空間801には、該当の1つの選択信号(例えば、当該選択信号をアサートするセレクタ803)が関連付けられており)、共通IO空間802には、全選択信号(例えば、全選択信号をそれぞれ選択するための全セレクタ803)が関連付けられている。選択信号の関連付けは、選択信号線の関連付けに相当する。
【0050】
通常、サブCPUスロット#nに実装されるサブCPUモジュール#nに対してCPUモジュール1がアクセスする場合、サブCPUスロット#n(サブCPUモジュール#n)を選択する選択信号(cs_n)をアサートすることで、サブCPUモジュール#nを選択する。これにより、いずれのサブCPUモジュール2が任意のサブCPUスロットに実装された場合でもCPUモジュール1側からサブCPUモジュール2へアクセス可能となる。これはCPUモジュール1側にて
図8に示すアドレスマップに従い、アドレスをデコードすることで各サブCPUスロット用の個別に準備されるモジュール選択信号のうち、1つのサブCPUスロットを選択することで実施できる。
【0051】
具体的には、例えば、CPUモジュール1のMPU11は、サブCPUモジュール#1との間でシングルアクセスを行う場合、個別IO空間801-1に対してIOを行う。結果として、サブCPUスロット#1を選択する選択信号(cs_n)がアサートされ、CPUモジュール1とサブCPUモジュール#1間のシングルアクセスとして、
図3~
図6のいずれかに従うアクセスが行われる。より具体的には、例えば、CPUモジュール1は高速連続アクセスを行うサブCPUモジュール#0を個別に指定する場合においては、IO空間801-0にアクセスすることで、その対象となるスロット#0のcs_nのみ出力される。
【0052】
また、例えば、CPUモジュール1のMPU11は、実装されている全サブCPUモジュール2との間でブロードキャストアクセスを行う場合、共通IO空間802に対してIOを行う。結果として、全選択信号がアサートされ、CPUモジュール1と実装されている全サブCPUモジュール2間でのブロードキャストアクセスとして、同時に、CPUモジュール1と実装されている各サブCPUモジュール2間で
図3~
図6のいずれかに従うアクセスが行われる。つまり、全cs_nが同時に出力され、全サブCPUモジュール2に同時にCPUモジュール1からデータを転送することが可能である。例えば、CPUモジュール1の他に、高速連続アクセス可能なサブCPUモジュール#0および#1のみが実装されている場合、CPUモジュール1は、共通IO空間802(ブロードキャスト用IO空間)を通じて、サブCPUモジュール#0および#1に対し同時に高速連続アクセスを行うことができる。このため、最大“2,642μsec”のスキャン時間は819少ない最大“1,823μsec”まで高速化可能となる。なお、「同時」とは、データ転送の開始および終了の少なくとも一つが同時であることでもよいし、データ転送の開始および終了の少なくとも一つが異なっていても全サブCPUモジュール2に対するデータ転送が並行して行われることでよい。
【0053】
以上のようにして、外部バス3経由のデータ転送においてブロードキャストアクセスが実現される。
【0054】
以上のように、本実施例においては、CPUモジュールのIOリフレッシュ処理において、連続したエリア(アドレス空間)に対するアクセスを上記の高速連続アクセスとすることにより、大幅に処理時間を高速化することが可能となり、更に複数のモジュールに対して同時にデータ転送が行えるため、モーション制御等に代表される同期システムの構築に容易に対応可能となる。例えば、実装されている全サブCPUモジュール2に対して同時に高速連続アクセスに従うライトが行われることで、実装されている全サブCPUモジュール2に共通のデータ(例えば、1以上のセンサからのデータ)が同時にライトされ、全サブCPUモジュール2が並行して当該データを処理する(例えば分析する)ことができる。
【0055】
なお、
図9に例示するように、個別IO空間801は、通常アクセス用の空間801aと高速連続アクセス用の区間801bとに区切られていてもよい。共通IO空間802も、通常アクセス用の空間802aと高速連続アクセス用の区間802bとに区切られていてもよい。この場合、下記のうちの少なくとも一つが行われてよい。
・CPUモジュール1が、サブCPUモジュール#nとの間で通常アクセスを行う場合、サブCPUモジュール#nに対応した個別IO空間801のうちの空間801aにアクセスする。
・CPUモジュール1が、サブCPUモジュール#nとの間で高速連続アクセスを行う場合、サブCPUモジュール#nに対応した個別IO空間801のうちの空間801bにアクセスする。
・CPUモジュール1が、全サブCPUモジュール2との間で同時に通常アクセスを行う場合(例えば、全サブCPUモジュール2のうちの少なくとも一つが高速連続アクセス対応不可のモジュールの場合)、共通IO空間801のうちの空間802aにアクセスする。
・CPUモジュール1が、全サブCPUモジュール2との間で同時に高速連続アクセスを行う場合、共通IO空間801のうちの空間802bにアクセスする。
【0056】
外部バス3に2以上のサブCPUモジュール2が接続されていることをCPUモジュール1が特定した場合、CPUモジュール1は、シングルアクセスとするかブロードキャストアクセスとするかを選択し、選択したアクセスを行う。例えば、CPUモジュール1は、アクセス対象のデータが、一つのサブCPUモジュール2との間でのみの対象か、或いは、実装されている全てのサブCPUモジュール2に共通の対象かを判断し、前者の場合にシングルアクセスを選択し、後者の場合にブロードキャストアクセスを選択してよい。なお、当該後者の場合、下記のうちの少なくとも一つが行われてよい。
・CPUモジュール1は、1つでもブロードキャスト対応不可のサブCPUモジュール2があれば、シングルアクセスを選択し、全てのサブCPUモジュールがブロードキャスト対応可能であれば、ブロードキャストアクセスを選択する。
・CPUモジュール1は、1つでも高速連続アクセス不可のサブCPUモジュール2があれば、全サブCPUモジュール2に対するブロードキャストアクセスとしての通常アクセスを選択し、全てのサブCPUモジュールが高速連続アクセス対応可能であれば、全サブCPUモジュール2に対するブロードキャストアクセスとしての高速連続アクセスを選択してよい。
【0057】
また、本実施例では、次の構成が採用されてよい。すなわち、CPUモジュール1は、1以上の制御対象装置に接続された1以上のI/Oポート(例えば通信ポート)の少なくとも1つのI/Oポートにアクセスすることにより当該I/Oポートに接続された制御対象装置の動作を制御するサブCPUモジュール2(例えばI/Oモジュール)に外部バス3を介して接続され制御対象装置の情報を演算するMPU11とMPU11の演算結果を記憶するRAM14とを有する。外部バス3に接続されるサブCPUモジュール2は、制御対象装置の情報を演算するMPU(サブ演算部の一例)と当該MPUの演算結果を記憶するRAM21(サブメモリ部の一例)とを有する。2以上のサブCPUモジュールは外部バス3に接続され得る。CPUモジュール1は、接続された(実装された)全てのサブCPUモジュール2を特定する。各サブCPUモジュール2は、RAM21の指定されたアドレスから次または前のアドレスへ向かって順次にデータの読み込みまたは書き込みを行う(例えばDMAにより行う)第一の通信モード(例えば、シングルアクセス用のモード)を有する。CPUモジュール1に加えてサブCPUモジュール2も、
図8または
図9に例示のアドレスマップを有してよい。言い換えれば、CPUモジュール1とサブCPUモジュール2の各々に、当該サブCPUモジュール2に対する個別のデータが書き込まれる個別領域と、全サブCPUモジュール2に対する共通のデータが書き込まれる共通領域とが、論理アドレス空間として存在してよい。論理アドレス空間は、RAM14または21に基づく空間でよい。2以上のサブCPUモジュール2の各々は、共通のデータを格納する領域(例えば、共通IO空間802)を読み込みまたは書き込みのためにRAM21の指定されたアドレスの情報を読み込みまたは書き込みを行う第二の通信モード(例えば、ブロードキャストアクセス用のモード)を有している。
【符号の説明】
【0058】
1…CPUモジュール、2…サブCPUモジュール、3…外部バス、
11…MPU、12…通信ポート、13…ROM、14…RAM、15…DMAC、
16…BUSコントローラM、21…2ポートRAM、22…BUSコントローラS、
31…フリップフロップ(FF)、32…増減カウンタ、33…セレクタ