(57)【特許請求の範囲】
【請求項１】
ＣＰＵモジュールと、１以上のＩＯモジュールと、前記両モジュールをつなぐ外部バスとを備え、
前記ＣＰＵモジュールは、前記ＩＯモジュール個々のアドレス空間の任意のアドレスまたは前記ＩＯモジュール内の連続したアドレス空間に対応する連続アクセス数を指定し、
前記ＩＯモジュールは、指定された前記任意のアドレスから当該アドレスを前記連続アクセス数分のインクリメントまたはデクリメントして当該ＩＯモジュール内の連続したアドレス空間に対してＩＯ処理を実行し、
前記外部バスには、前記連続したアドレス空間に対するＩＯ処理の実行と前記アドレスのインクリメントまたはデクリメントとを指定するモード信号を通信する第１の信号線、および、前記アドレスをインクリメントまたはデクリメントする更新タイミングを規定するストローブ信号を通信する第２の信号線、が付設される
ことを特徴とするプログラマブルコントローラ。
【請求項２】
請求項１に記載のプログラマブルコントローラであって、
前記アドレスをインクリメントまたはデクリメントする更新タイミングは、前記ストローブ信号のレベル変化時である
ことを特徴とするプログラマブルコントローラ。
【請求項３】
請求項１または２に記載のプログラマブルコントローラであって、
前記ＣＰＵモジュールは、前記ストローブ信号として前記連続アクセス数分のパルス化した信号を出力する
ことを特徴とするプログラマブルコントローラ。
【請求項４】
請求項１〜３のいずれか１項に記載のプログラマブルコントローラであって、
前記外部バスは、前記アドレスとデータで共用するマルチプレクスバスである
ことを特徴とするプログラマブルコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、設備や機械システムの動作をシーケンスプログラムによって制御するプログラマブルコントローラに関し、特に、ＣＰＵモジュールとＩＯモジュールとのＩＯアクセス方式に特徴を有する。
【背景技術】
【０００２】
プログラマブルコントローラ（以下、「ＰＬＣ」という）は、ユーザが作成するラダープログラムをサイクリックに実行する制御機器であって、工場などに設置されている多様な機械設備やプラント設備などを制御するための汎用制御装置として広く普及している。
ＰＬＣは、機械設備の稼働状態をセンサやスイッチなどの機器からデジタル信号として入力モジュールを介してＯＮ／ＯＦＦ情報として取り込むか、あるいは、プラント設備の圧力情報や温度情報などをアナログ信号として取り込み、ユーザが作成したシーケンスプログラムにて演算を行う。そして、その演算結果は、デジタル信号やアナログ信号として出力モジュールを介して機械設備の動力源やプラント設備のバルブなどに伝達され、設備全体の高度な制御が実現される。この入力モジュールから入力データを取り込み、出力モジュールへ演算結果を出力することを「ＩＯリフレッシュ」と呼ぶ。ＰＬＣによる制御を高速に行うための手段の一つとして、このＩＯリフレッシュを高速に行うことが挙げられる。
【０００３】
このＰＬＣによる制御を高速化するための技術として、例えば特許文献１には、「入出力モジュール割付情報に各モジュールの更新周期を設定可能とし、毎スキャンのリフレッシュ処理実行時に、更新周期が設定された更新周期と等しいか、あるいは、それよりも過ぎているモジュールのみリフレッシュを実行することで、ＣＰＵモジュールと入出力モジュールとのバスアクセス回数を低減し、スキャン時間の高速化を図る」技術が示されている。
【０００４】
また、ＰＬＣの技術分野ではないが、メモリデバイスのアクセス性能（読み書き）を高速化するために、１回のアドレス指定によって複数のデータをまとめて連続的に転送するバーストモードが、データ転送モードの一つの手法として公知の技術である（例えば、特許文献２）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１５−６０３７７号公報
【特許文献２】特開２００２−２５１３１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
モジュール型のＰＬＣは、様々な種類のＩＯモジュールを実装可能とする。例えば、１６点（ビット）／３２点／６４点といった点（ビット）数のデジタル信号を入力または出力するモジュール、８チャネル（１チャネルは１６ビット）のアナログ信号を入力または出力するモジュール、その他にＰＬＣ間のデータ共有を行うための通信モジュール等が使用される。
【０００７】
通信モジュールが扱うデータの量は、８ｋワードや３２ｋワードと大量のデータを扱う。ＣＰＵモジュールは、これらＩＯモジュールや通信モジュールとの間のデータのＩＯリフレッシュおよびシーケンスプログラムの演算をサイクリックに行う。このため、データ量が多くなると、ユーザプログラムの演算周期がその分遅くなってしまう。
【０００８】
そこで、本発明では、連続したエリア（アドレス空間）のデータを高速にアクセス可能な技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明に係るＰＬＣは、ＣＰＵモジュールと、１以上のＩＯモジュールと、両モジュールをつなぐ外部バスとを備え、ＣＰＵモジュールは、ＩＯモジュール個々のアドレス空間の任意アドレスを指定し、ＩＯモジュールは、指定された任意アドレスから当該アドレスをインクリメントまたはデクリメントして当該ＩＯモジュール内の連続したアドレス空間に対してＩＯ処理を実行することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、データ転送を高速に行うことが可能となる。
【図面の簡単な説明】
【００１１】
【図１】図１は、本発明の実施例に係るプログラマブルコントローラの構成図である。
【図２】図２は、通信モジュールが備えるＢＵＳコントローラの内部ブロックの構成図である。
【図３】図３は、通常のＩＯモジュールに対するライトアクセス時のタイムチャートである。
【図４】図４は、通常のＩＯモジュールに対するリードアクセス時のタイムチャートである。
【図５】図５は、通信モジュールに対するライト時の高速連続アクセスのタイムチャートである。
【図６】図６は、通信モジュールに対するリード時の高速連続アクセスのタイムチャートである。
【図７】図７は、プログラマブルコントローラ（ＰＬＣ）の動作を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下に、本発明の実施例について、図を参照しながら説明する。
【実施例】
【００１３】
図１は、本発明の実施例に係るＰＬＣの構成図である。
このＰＬＣのＣＰＵスロットに搭載したＣＰＵモジュール１は、シーケンスプログラムの演算を行うＭＰＵ１１、パソコン等の周辺機器と通信するための通信ポート１２、シーケンスプログラムやシステムプログラムを格納するためのＲＯＭ１３、シーケンスプログラムの演算に使用するデータを格納するＲＡＭ１４、該ＲＡＭ１４と外部バス５に接続されるＩＯモジュールとのデータ転送を行うＤＭＡＣ１５、外部バス３とのインタフェースであるアドレス出力部およびデータ入出力部を持つＢＵＳコントローラＭ１６（Ｍは「マスタ」を表す）、から構成される。また、ＣＰＵモジュール１は、後述するＩＯモジュールに対する高速連続アクセスのために、連続アクセス数をカウントするカウンタを設ける。このカウンタは、ハード的にまたはソフト的に構成することができるものである。そのため、図１のＣＰＵモジュール１内には図示をしていない。
【００１４】
ＣＰＵモジュール１は、ＩＯスロット０、ＩＯスロット１、・・・ＩＯスロットｎに、どのようなＩＯモジュールが接続されているのか、あらかじめ把握する必要がある。通常は、ＩＯモジュール側において、ステータス情報として入出力タイプやデータサイズといった情報をＣＰＵモジュール１から認識できるようにする。このステータス情報に、高速連続アクセス対応可否の情報を設けることにより、ＣＰＵモジュール１から高速連続アクセス対応可能なＩＯモジュールがどのＩＯスロットに実装されているか判断可能となる。
【００１５】
外部ＩＯモジュールには、デジタル信号やアナログ信号用のＩＯモジュール（入力モジュールや出力モジュール）の他に、通信モジュール２がある。この通信モジュール２は、モジュール内部に例えば２ポートＲＡＭ２１を備え、ＣＰＵモジュール１と通信モジュール２の通信ポートに接続される外部通信機器とのデータを、この２ポートＲＡＭ２１を介して転送する。その際のＣＰＵモジュール１側からのアクセス時に、通信モジュール２は、外部バス３を介して取得したアドレスにより内部の２ポートＲＡＭ２１にアクセスするか、または、そのアドレスに対してＣＰＵモジュールから送られる連続アクセス数分のインクリメントまたはデクリメントしたアドレスを送出して内部の２ポートＲＡＭ２１にアクセスする。このアクセスを可能にするために、通信モジュール２は、ＢＵＳコントローラＳ２２（Ｓは「スレーブ」を表す）を備える。アドレスは番地ともいう。
【００１６】
外部バス３は、ＣＰＵモジュール１およびＩＯスロット０〜ｎに接続された各種ＩＯモジュールをつなぎ、アドレス、データおよび制御情報をやり取りする。本実施例では、この外部バス３として、アドレスとデータで共用するマルチプレクスバスを用いている。なお、図１では、外部バス３を構成する信号線の内、後述するモード信号（ｍｏｄｅ＿ｎ）およびストローブ信号（ｓｔｒｏｂｅ＿ｎ）のための信号線を分離した形で示している。
本発明は、外部バスをこのマルチプレクスバスに限定するものではなく、セパレート型のバス形態であってもよい。ただし、マルチプレクスバスは、セパレート型のバスと比べ必要となる信号線を減らしピン数を低減することができる。
【００１７】
図２は、通信モジュール２が備えるＢＵＳコントローラＳ２２の内部ブロックの構成図である。外部バス３とのインタフェースであるＢＵＳコントローラＳ２２は、アドレスを記憶するフリップフロップ（ＦＦ）３１、このフリップフロップ（ＦＦ）が出力するアドレスをインクリメントまたはデクリメントする増減カウンタ３２およびアドレス選択用のセレクタ３３から構成される。外部バス３は、マルチプレクスバスであることから、この外部バス３からの入力データの内、データについてはそのまま２ポートＲＡＭの方へ送り、アドレスについてはセレクタ３３へ送られる。なお、図２では、モード信号（ｍｏｄｅ＿ｎ）およびストローブ信号（ｓｔｒｏｂｅ＿ｎ）のための信号線は省略している。
【００１８】
フリップフロップ（ＦＦ）３１は、その入力として、ＣＰＵモジュール１から外部バス３を介して入力されるアドレス、またはフリップフロップ（ＦＦ）３１自身が記憶しているアドレスを増減カウンタ３２によりインクリメントまたはデクリメントしたアドレスをセレクタ３３により選択する。すなわち、フリップフロップ（ＦＦ）３１は、通常アクセス時には、外部バス３からのアドレスが選択されて記憶／出力することとなり、高速連続アクセス時には、上記インクリメントまたはデクリメントしたアドレスが選択されて順次記憶／出力することとなる。このセレクタ３３による選択には、後述するモード信号（ｍｏｄｅ＿ｎ）が使用される。また、増減カウンタ３２がインクリメントするかデクリメントするかには、後述するモード信号（ｍｏｄｅ＿ｎ）およびストローブ信号（ｓｔｒｏｂｅ＿ｎ）が使用される。
【００１９】
ＣＰＵモジュール１と通信モジュール２との間では、ＣＰＵモジュール１と通常のＩＯモジュールが扱うデータ量よりもはるかに大量のデータを扱う。そこで、両者におけるデータアクセスの違いを、タイムチャートを使って説明する。
【００２０】
先ず、図３および図４は、ＣＰＵモジュール１が通常のＩＯモジュールに対するリフレッシュ処理を行う場合のタイムチャートである。図３がライト時、図４がリード時である。
外部バス３は、アドレスとデータで共用するマルチプレクスバスであり、やり取りを行う信号は、各スロットの選択信号（ｃｓ＿ｎ）、アドレスストローブ信号（ａｓ＿ｎ）、データストローブ信号（ｗｒ＿ｎ／ｒｄ＿ｎ）および１６ビットのアドレス／データ信号（ａｄ［１５：０］）から構成される。
【００２１】
例えば、３２点（ビット）の出力モジュールに対するリフレッシュ処理は、図３に示すライトアクセスを２回行うことになる。また、８チャネルのアナログ入力モジュールに対するリフレッシュ処理は、１チャネルが１６ビットであることから、図４に示すリードアクセスを８回行うことになる。
【００２２】
次に、図５および図６は、ＣＰＵモジュール１と通信モジュール２との間で高速連続アクセスを行う場合のタイムチャートである。図５がライト時、図６がリード時である。
ＣＰＵモジュール１は、通信モジュール２に対して、アクセスするアドレス空間のアドレス（ＡＤＲ）を指定する（任意アドレスの指定）と共に、通常アクセスか高速連続アクセスかを識別するためのモード信号（ｍｏｄｅ＿ｎ）をアドレス出力と同じタイミングで出力する。通信モジュール２側は、アドレスストローブ信号（ａｓ＿ｎ）の立ち上がり時に、モード信号（ｍｏｄｅ＿ｎ）のレベルによって、通常アクセスまたは高速連続アクセスのどちらでＣＰＵモジュール１がアクセスしているのか判断する（図５および図６では、モード信号（ｍｏｄｅ＿ｎ）のＬレベルの時が高速連続アクセスである）。
【００２３】
高速連続アクセスのデータサイクル時には、ストローブ信号（ｓｔｒｏｂｅ＿ｎ）のレベル変化に応じて通信モジュール内部のアドレスを更新する。すなわち、ストローブ信号（ｓｔｒｏｂｅ＿ｎ）のレベル変化開始時点（ＬレベルからＨレベルへの立ち上がり時）のモード信号（ｍｏｄｅ＿ｎ）のレベルにより、インクリメントまたはデクリメントが選択される（図５および図６では、ストローブ信号（ｓｔｒｏｂｅ＿ｎ）のＬレベルからＨレベル変化開始時に、モード信号（ｍｏｄｅ＿ｎ）が、Ｌレベルであればインクリメント、Ｈレベルであればデクリメント）。
【００２４】
そして、ＣＰＵモジュール１は、高速連続アクセスに係る連続アクセス数（連続するアドレス空間）を指定する。ＣＰＵモジュール１は、内部に設けたカウンタを用いて、通信モジュール２に対して、連続したアドレス空間に対応する連続アクセス数分パルス化したストローブ信号（ｓｔｒｏｂｅ＿ｎ）を送信する。通信モジュール２が備えるＢＵＳコントローラＳ２２の増減カウンタ３２は、このパルス化したストローブ信号を受けて、指定された任意アドレスからこの連続アクセス数分インクリメントまたはデクリメントすることになる。
【００２５】
また、ＣＰＵモジュール１が、高速連続アクセスに対応していない従来のＣＰＵモジュールであって、高速連続アクセス対応のＩＯモジュールとの組み合わせであった場合でも、通常アクセスに必要な制御信号（ｃｓ＿ｎ、ａｓ＿ｎ、ｗｒ＿ｎおよびｒｄ＿ｎ）の出力方法は互換性があるので、通常アクセスは可能である。
【００２６】
本実施例では、高速連続アクセス対応のモジュールとして、通信モジュール２を示しているが、これは通信モジュールに限ったことではない。さらに、通信モジュール２は、内部に２ポートＲＡＭを備えているが、実際には、２ポートＲＡＭではなく、１ポートＲＡＭに対して調停回路（アービタ）を付加したものであってもよい。
【００２７】
図７は、ＰＬＣの動作を示すフローチャートである。ＰＬＣは、通常、データの入力に係る入力リフレッシュ、入力データに基づくシーケンス演算および演算結果に伴うデータの出力に係る出力リフレッシュの一連の処理フローを、電源オフのような停止操作が発生するまでの間、サイクリックに実行するものである。そして、ＩＯリフレッシュ（入力リフレッシュ＋出力リフレッシュ）およびシーケンス演算の実行による一連のサイクリック処理に掛かる時間を「スキャンタイム」と呼んでいる。そうすると、シーケンス演算の実行時間が一定であれば、スキャンタイムはＩＯリフレッシュに掛かる時間に左右されることになる。
【００２８】
次に、上記フローチャートに従い、高速連続アクセスの有無によりどの程度サイクリックな演算性能、すなわちスキャンタイムに差異がでるのかを説明する。ここで、ＰＬＣの構成例としては、図１に示す通り、ＩＯスロット０に、８，１９２ワードのデータを扱う通信モジュール、ＩＯスロット１に、１ワードのデータを扱う入力モジュール、ＩＯスロット２に、１ワードのデータを扱う出力モジュール、が実装されているものとする。また、ＩＯアクセスの単位時間を“１μｓｅｃ”として、図７のフローチャートが示す、一連のサイクリック処理に掛かるスキャンタイムを算出する。
【００２９】
図３および図４に示す通常のＩＯモジュールに対するアクセスを、通信モジュールに対して行った場合を想定する。通信モジュールは最大で８，１９２ワードのデータを扱うことから、入力リフレッシュおよび出力リフレッシュを通常のＩＯアクセスで行うと、ＩＯリフレッシュは、最大で“８，１９４μｓｅｃ”（約８ｍｓｅｃ）の時間を要することとなる。また、シーケンス演算に要する時間は、ユーザが作成するシーケンスプログラムの容量に依存するところ、通常の目安として“１ｍｓｅｃ（＝１，０００μｓｅｃ）”である。そうすると、スキャンタイムは、最大“９，１９４μｓｅｃ”で、９ｍｓｅｃ程度となる。
【００３０】
一方、通信モジュールに対するＩＯリフレッシュを、図５および図６に示す高速連続アクセスで行う場合、通信モジュール内部ではアドレスを更新するだけの処理となる。そうすると、ＣＰＵモジュール１から順次アドレスを取得するよりも高速にアドレス更新が可能である。通信モジュール内部でのアドレス更新時間は、通常１２０ｎｓｅｃ程度であるので、“０．１μｓｅｃ”とすると、通信モジュールのＩＯリフレッシュに要する時間は、最大“８１９μｓｅｃ”程度と捉えることができる。これに、入力モジュールおよび出力モジュールとしての通常のＩＯアクセス分（２μｓｅｃ）を加えて、ＩＯリフレッシュとしては、最大“８２１μｓｅｃ”となる。更に、シーケンス演算時間（１ｍｓｅｃ）を加えたスキャンタイムは、最大“１，８２１μｓｅｃ”となる。すなわち、上記の通常のＩＯアクセスの場合のスキャンタイムと比べて約５倍の性能アップとなることが判る（ここで、上記アドレス更新時間を“０．１２μｓｅｃ”として算出した場合でも、通信モジュール内で最大“９８３μｓｅｃ”、通常のＩＯアクセス分とシーケンス演算時間を加えたスキャンタイムは、最大“１，９８５μｓｅｃ”となり、４．６倍の性能アップとなる）。
【００３１】
データ通信の際には、番地の指定を１度行い、指定された番地にデータ通信を行った後には、指定番地以降または以前の番地に対して、リードまたはライトの順次データ通信ができるため、この順次データ通信を行う際に、番地の指定を行わなくてよいこととなる。
これにより、番地指定の通信に要する時間を減らすことが可能となる。
つまり、一の通信モジュールが通信を開始する際に、データ通信を行う前にデータ通信をする番地の指定を行った後は、一と他の通信モジュールは、それぞれ順次データ通信することを設定またはその情報を有しているため、データ通信を繰り返し行うこととなる。
例えば、指定番地ｎを指定する通信を行い、指定番地ｎのデータ通信後には、番地ｎ＋１、ｎ＋２・・・またはｎ−１、ｎ−２・・・に対しては、番地を指定する通信が不要となるため、全体のデータ通信速度を向上させることが可能となる。なお、便宜上ｎ＋１，ｎ＋２・・・等と記載したが、データ通信するバス数等に応じて指定番地以降または以前の番地は適宜変更されるため、一般化すると順次データ通信が行われる番地は、ｎ＋ｍ、ｎ＋２ｍとなる。
【００３２】
以上のように、本実施例においては、ＣＰＵモジュールのＩＯリフレッシュ処理において、連続したエリア（アドレス空間）に対するアクセスを上記の高速連続アクセスとすることにより、大幅に処理時間を高速化することが可能となる。
すなわち、連続したアドレス空間に対するＣＰＵモジュールからのバスアクセスを１回の任意アドレスの指定出力後に、テータストローブ信号をアクセスサイズ分トグルすることによりリードまたはライトが可能となり、高速にデータ転送が行える。
また、データ転送を高速に行うことで、ＣＰＵモジュールでの演算周期が速くなり、外部機器に対する制御を高速に処理実行することが可能となる。
【００３３】
なお、本発明は、上記の実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記の実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【符号の説明】
【００３４】
１…ＣＰＵモジュール、２…通信モジュール、３…外部バス、
１１…ＭＰＵ、１２…通信ポート、１３…ＲＯＭ、１４…ＲＡＭ、１５…ＤＭＡＣ、
１６…ＢＵＳコントローラＭ、２１…２ポートＲＡＭ、２２…ＢＵＳコントローラＳ、
３１…フリップフロップ（ＦＦ）、３２…増減カウンタ、３３…セレクタ
【図１】
0006498557.tif 000002
【図２】
0006498557.tif 000003
【図３】
0006498557.tif 000004
【図４】
0006498557.tif 000005
【図５】
0006498557.tif 000006
【図６】
0006498557.tif 000007
【図７】
0006498557.tif 000008