特許第6498557号(P6498557)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社日立産機システムの特許一覧

<>
  • 特許6498557-プログラマブルコントローラ 図000002
  • 特許6498557-プログラマブルコントローラ 図000003
  • 特許6498557-プログラマブルコントローラ 図000004
  • 特許6498557-プログラマブルコントローラ 図000005
  • 特許6498557-プログラマブルコントローラ 図000006
  • 特許6498557-プログラマブルコントローラ 図000007
  • 特許6498557-プログラマブルコントローラ 図000008
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6498557
(24)【登録日】2019年3月22日
(45)【発行日】2019年4月10日
(54)【発明の名称】プログラマブルコントローラ
(51)【国際特許分類】
   G05B 19/05 20060101AFI20190401BHJP
【FI】
   G05B19/05 L
   G05B19/05 F
【請求項の数】4
【全頁数】10
(21)【出願番号】特願2015-148405(P2015-148405)
(22)【出願日】2015年7月28日
(65)【公開番号】特開2017-27539(P2017-27539A)
(43)【公開日】2017年2月2日
【審査請求日】2018年1月4日
(73)【特許権者】
【識別番号】502129933
【氏名又は名称】株式会社日立産機システム
(74)【代理人】
【識別番号】110000062
【氏名又は名称】特許業務法人第一国際特許事務所
(72)【発明者】
【氏名】曽我 満
【審査官】 山村 秀政
(56)【参考文献】
【文献】 特開平05−233028(JP,A)
【文献】 特開2007−265252(JP,A)
【文献】 特開平08−320823(JP,A)
【文献】 特開平07−110803(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/05
(57)【特許請求の範囲】
【請求項1】
CPUモジュールと、1以上のIOモジュールと、前記両モジュールをつなぐ外部バスとを備え、
前記CPUモジュールは、前記IOモジュール個々のアドレス空間の任意アドレスまたは前記IOモジュール内の連続したアドレス空間に対応する連続アクセス数を指定し、
前記IOモジュールは、指定された前記任意アドレスから当該アドレスを前記連続アクセス数分のインクリメントまたはデクリメントして当該IOモジュール内の連続したアドレス空間に対してIO処理を実行し、
前記外部バスには、前記連続したアドレス空間に対するIO処理の実行と前記アドレスのインクリメントまたはデクリメントとを指定するモード信号を通信する第1の信号線、および、前記アドレスをインクリメントまたはデクリメントする更新タイミングを規定するストローブ信号を通信する第2の信号線、が付設される
ことを特徴とするプログラマブルコントローラ。
【請求項2】
請求項1記載のプログラマブルコントローラであって、
前記アドレスをインクリメントまたはデクリメントする更新タイミングは、前記ストローブ信号のレベル変化時である
ことを特徴とするプログラマブルコントローラ。
【請求項3】
請求項1または2に記載のプログラマブルコントローラであって、
前記CPUモジュールは、前記ストローブ信号として前記連続アクセス数分のパルス化した信号を出力する
ことを特徴とするプログラマブルコントローラ。
【請求項4】
請求項1〜3のいずれか1項に記載のプログラマブルコントローラであって、
前記外部バスは、前記アドレスとデータで共用するマルチプレクスバスである
ことを特徴とするプログラマブルコントローラ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、設備や機械システムの動作をシーケンスプログラムによって制御するプログラマブルコントローラに関し、特に、CPUモジュールとIOモジュールとのIOアクセス方式に特徴を有する。
【背景技術】
【0002】
プログラマブルコントローラ(以下、「PLC」という)は、ユーザが作成するラダープログラムをサイクリックに実行する制御機器であって、工場などに設置されている多様な機械設備やプラント設備などを制御するための汎用制御装置として広く普及している。
PLCは、機械設備の稼働状態をセンサやスイッチなどの機器からデジタル信号として入力モジュールを介してON/OFF情報として取り込むか、あるいは、プラント設備の圧力情報や温度情報などをアナログ信号として取り込み、ユーザが作成したシーケンスプログラムにて演算を行う。そして、その演算結果は、デジタル信号やアナログ信号として出力モジュールを介して機械設備の動力源やプラント設備のバルブなどに伝達され、設備全体の高度な制御が実現される。この入力モジュールから入力データを取り込み、出力モジュールへ演算結果を出力することを「IOリフレッシュ」と呼ぶ。PLCによる制御を高速に行うための手段の一つとして、このIOリフレッシュを高速に行うことが挙げられる。
【0003】
このPLCによる制御を高速化するための技術として、例えば特許文献1には、「入出力モジュール割付情報に各モジュールの更新周期を設定可能とし、毎スキャンのリフレッシュ処理実行時に、更新周期が設定された更新周期と等しいか、あるいは、それよりも過ぎているモジュールのみリフレッシュを実行することで、CPUモジュールと入出力モジュールとのバスアクセス回数を低減し、スキャン時間の高速化を図る」技術が示されている。
【0004】
また、PLCの技術分野ではないが、メモリデバイスのアクセス性能(読み書き)を高速化するために、1回のアドレス指定によって複数のデータをまとめて連続的に転送するバーストモードが、データ転送モードの一つの手法として公知の技術である(例えば、特許文献2)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2015−60377号公報
【特許文献2】特開2002−251319号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
モジュール型のPLCは、様々な種類のIOモジュールを実装可能とする。例えば、16点(ビット)/32点/64点といった点(ビット)数のデジタル信号を入力または出力するモジュール、8チャネル(1チャネルは16ビット)のアナログ信号を入力または出力するモジュール、その他にPLC間のデータ共有を行うための通信モジュール等が使用される。
【0007】
通信モジュールが扱うデータの量は、8kワードや32kワードと大量のデータを扱う。CPUモジュールは、これらIOモジュールや通信モジュールとの間のデータのIOリフレッシュおよびシーケンスプログラムの演算をサイクリックに行う。このため、データ量が多くなると、ユーザプログラムの演算周期がその分遅くなってしまう。
【0008】
そこで、本発明では、連続したエリア(アドレス空間)のデータを高速にアクセス可能な技術を提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明に係るPLCは、CPUモジュールと、1以上のIOモジュールと、両モジュールをつなぐ外部バスとを備え、CPUモジュールは、IOモジュール個々のアドレス空間の任意アドレスを指定し、IOモジュールは、指定された任意アドレスから当該アドレスをインクリメントまたはデクリメントして当該IOモジュール内の連続したアドレス空間に対してIO処理を実行することを特徴とする。
【発明の効果】
【0010】
本発明によれば、データ転送を高速に行うことが可能となる。
【図面の簡単な説明】
【0011】
図1図1は、本発明の実施例に係るプログラマブルコントローラの構成図である。
図2図2は、通信モジュールが備えるBUSコントローラの内部ブロックの構成図である。
図3図3は、通常のIOモジュールに対するライトアクセス時のタイムチャートである。
図4図4は、通常のIOモジュールに対するリードアクセス時のタイムチャートである。
図5図5は、通信モジュールに対するライト時の高速連続アクセスのタイムチャートである。
図6図6は、通信モジュールに対するリード時の高速連続アクセスのタイムチャートである。
図7図7は、プログラマブルコントローラ(PLC)の動作を示すフローチャートである。
【発明を実施するための形態】
【0012】
以下に、本発明の実施例について、図を参照しながら説明する。
【実施例】
【0013】
図1は、本発明の実施例に係るPLCの構成図である。
このPLCのCPUスロットに搭載したCPUモジュール1は、シーケンスプログラムの演算を行うMPU11、パソコン等の周辺機器と通信するための通信ポート12、シーケンスプログラムやシステムプログラムを格納するためのROM13、シーケンスプログラムの演算に使用するデータを格納するRAM14、該RAM14と外部バス5に接続されるIOモジュールとのデータ転送を行うDMAC15、外部バス3とのインタフェースであるアドレス出力部およびデータ入出力部を持つBUSコントローラM16(Mは「マスタ」を表す)、から構成される。また、CPUモジュール1は、後述するIOモジュールに対する高速連続アクセスのために、連続アクセス数をカウントするカウンタを設ける。このカウンタは、ハード的にまたはソフト的に構成することができるものである。そのため、図1のCPUモジュール1内には図示をしていない。
【0014】
CPUモジュール1は、IOスロット0、IOスロット1、・・・IOスロットnに、どのようなIOモジュールが接続されているのか、あらかじめ把握する必要がある。通常は、IOモジュール側において、ステータス情報として入出力タイプやデータサイズといった情報をCPUモジュール1から認識できるようにする。このステータス情報に、高速連続アクセス対応可否の情報を設けることにより、CPUモジュール1から高速連続アクセス対応可能なIOモジュールがどのIOスロットに実装されているか判断可能となる。
【0015】
外部IOモジュールには、デジタル信号やアナログ信号用のIOモジュール(入力モジュールや出力モジュール)の他に、通信モジュール2がある。この通信モジュール2は、モジュール内部に例えば2ポートRAM21を備え、CPUモジュール1と通信モジュール2の通信ポートに接続される外部通信機器とのデータを、この2ポートRAM21を介して転送する。その際のCPUモジュール1側からのアクセス時に、通信モジュール2は、外部バス3を介して取得したアドレスにより内部の2ポートRAM21にアクセスするか、または、そのアドレスに対してCPUモジュールから送られる連続アクセス数分のインクリメントまたはデクリメントしたアドレスを送出して内部の2ポートRAM21にアクセスする。このアクセスを可能にするために、通信モジュール2は、BUSコントローラS22(Sは「スレーブ」を表す)を備える。アドレスは番地ともいう。
【0016】
外部バス3は、CPUモジュール1およびIOスロット0〜nに接続された各種IOモジュールをつなぎ、アドレス、データおよび制御情報をやり取りする。本実施例では、この外部バス3として、アドレスとデータで共用するマルチプレクスバスを用いている。なお、図1では、外部バス3を構成する信号線の内、後述するモード信号(mode_n)およびストローブ信号(strobe_n)のための信号線を分離した形で示している。
本発明は、外部バスをこのマルチプレクスバスに限定するものではなく、セパレート型のバス形態であってもよい。ただし、マルチプレクスバスは、セパレート型のバスと比べ必要となる信号線を減らしピン数を低減することができる。
【0017】
図2は、通信モジュール2が備えるBUSコントローラS22の内部ブロックの構成図である。外部バス3とのインタフェースであるBUSコントローラS22は、アドレスを記憶するフリップフロップ(FF)31、このフリップフロップ(FF)が出力するアドレスをインクリメントまたはデクリメントする増減カウンタ32およびアドレス選択用のセレクタ33から構成される。外部バス3は、マルチプレクスバスであることから、この外部バス3からの入力データの内、データについてはそのまま2ポートRAMの方へ送り、アドレスについてはセレクタ33へ送られる。なお、図2では、モード信号(mode_n)およびストローブ信号(strobe_n)のための信号線は省略している。
【0018】
フリップフロップ(FF)31は、その入力として、CPUモジュール1から外部バス3を介して入力されるアドレス、またはフリップフロップ(FF)31自身が記憶しているアドレスを増減カウンタ32によりインクリメントまたはデクリメントしたアドレスをセレクタ33により選択する。すなわち、フリップフロップ(FF)31は、通常アクセス時には、外部バス3からのアドレスが選択されて記憶/出力することとなり、高速連続アクセス時には、上記インクリメントまたはデクリメントしたアドレスが選択されて順次記憶/出力することとなる。このセレクタ33による選択には、後述するモード信号(mode_n)が使用される。また、増減カウンタ32がインクリメントするかデクリメントするかには、後述するモード信号(mode_n)およびストローブ信号(strobe_n)が使用される。
【0019】
CPUモジュール1と通信モジュール2との間では、CPUモジュール1と通常のIOモジュールが扱うデータ量よりもはるかに大量のデータを扱う。そこで、両者におけるデータアクセスの違いを、タイムチャートを使って説明する。
【0020】
先ず、図3および図4は、CPUモジュール1が通常のIOモジュールに対するリフレッシュ処理を行う場合のタイムチャートである。図3がライト時、図4がリード時である。
外部バス3は、アドレスとデータで共用するマルチプレクスバスであり、やり取りを行う信号は、各スロットの選択信号(cs_n)、アドレスストローブ信号(as_n)、データストローブ信号(wr_n/rd_n)および16ビットのアドレス/データ信号(ad[15:0])から構成される。
【0021】
例えば、32点(ビット)の出力モジュールに対するリフレッシュ処理は、図3に示すライトアクセスを2回行うことになる。また、8チャネルのアナログ入力モジュールに対するリフレッシュ処理は、1チャネルが16ビットであることから、図4に示すリードアクセスを8回行うことになる。
【0022】
次に、図5および図6は、CPUモジュール1と通信モジュール2との間で高速連続アクセスを行う場合のタイムチャートである。図5がライト時、図6がリード時である。
CPUモジュール1は、通信モジュール2に対して、アクセスするアドレス空間のアドレス(ADR)を指定する(任意アドレスの指定)と共に、通常アクセスか高速連続アクセスかを識別するためのモード信号(mode_n)をアドレス出力と同じタイミングで出力する。通信モジュール2側は、アドレスストローブ信号(as_n)の立ち上がり時に、モード信号(mode_n)のレベルによって、通常アクセスまたは高速連続アクセスのどちらでCPUモジュール1がアクセスしているのか判断する(図5および図6では、モード信号(mode_n)のLレベルの時が高速連続アクセスである)。
【0023】
高速連続アクセスのデータサイクル時には、ストローブ信号(strobe_n)のレベル変化に応じて通信モジュール内部のアドレスを更新する。すなわち、ストローブ信号(strobe_n)のレベル変化開始時点(LレベルからHレベルへの立ち上がり時)のモード信号(mode_n)のレベルにより、インクリメントまたはデクリメントが選択される(図5および図6では、ストローブ信号(strobe_n)のLレベルからHレベル変化開始時に、モード信号(mode_n)が、Lレベルであればインクリメント、Hレベルであればデクリメント)。
【0024】
そして、CPUモジュール1は、高速連続アクセスに係る連続アクセス数(連続するアドレス空間)を指定する。CPUモジュール1は、内部に設けたカウンタを用いて、通信モジュール2に対して、連続したアドレス空間に対応する連続アクセス数分パルス化したストローブ信号(strobe_n)を送信する。通信モジュール2が備えるBUSコントローラS22の増減カウンタ32は、このパルス化したストローブ信号を受けて、指定された任意アドレスからこの連続アクセス数分インクリメントまたはデクリメントすることになる。
【0025】
また、CPUモジュール1が、高速連続アクセスに対応していない従来のCPUモジュールであって、高速連続アクセス対応のIOモジュールとの組み合わせであった場合でも、通常アクセスに必要な制御信号(cs_n、as_n、wr_nおよびrd_n)の出力方法は互換性があるので、通常アクセスは可能である。
【0026】
本実施例では、高速連続アクセス対応のモジュールとして、通信モジュール2を示しているが、これは通信モジュールに限ったことではない。さらに、通信モジュール2は、内部に2ポートRAMを備えているが、実際には、2ポートRAMではなく、1ポートRAMに対して調停回路(アービタ)を付加したものであってもよい。
【0027】
図7は、PLCの動作を示すフローチャートである。PLCは、通常、データの入力に係る入力リフレッシュ、入力データに基づくシーケンス演算および演算結果に伴うデータの出力に係る出力リフレッシュの一連の処理フローを、電源オフのような停止操作が発生するまでの間、サイクリックに実行するものである。そして、IOリフレッシュ(入力リフレッシュ+出力リフレッシュ)およびシーケンス演算の実行による一連のサイクリック処理に掛かる時間を「スキャンタイム」と呼んでいる。そうすると、シーケンス演算の実行時間が一定であれば、スキャンタイムはIOリフレッシュに掛かる時間に左右されることになる。
【0028】
次に、上記フローチャートに従い、高速連続アクセスの有無によりどの程度サイクリックな演算性能、すなわちスキャンタイムに差異がでるのかを説明する。ここで、PLCの構成例としては、図1に示す通り、IOスロット0に、8,192ワードのデータを扱う通信モジュール、IOスロット1に、1ワードのデータを扱う入力モジュール、IOスロット2に、1ワードのデータを扱う出力モジュール、が実装されているものとする。また、IOアクセスの単位時間を“1μsec”として、図7のフローチャートが示す、一連のサイクリック処理に掛かるスキャンタイムを算出する。
【0029】
図3および図4に示す通常のIOモジュールに対するアクセスを、通信モジュールに対して行った場合を想定する。通信モジュールは最大で8,192ワードのデータを扱うことから、入力リフレッシュおよび出力リフレッシュを通常のIOアクセスで行うと、IOリフレッシュは、最大で“8,194μsec”(約8msec)の時間を要することとなる。また、シーケンス演算に要する時間は、ユーザが作成するシーケンスプログラムの容量に依存するところ、通常の目安として“1msec(=1,000μsec)”である。そうすると、スキャンタイムは、最大“9,194μsec”で、9msec程度となる。
【0030】
一方、通信モジュールに対するIOリフレッシュを、図5および図6に示す高速連続アクセスで行う場合、通信モジュール内部ではアドレスを更新するだけの処理となる。そうすると、CPUモジュール1から順次アドレスを取得するよりも高速にアドレス更新が可能である。通信モジュール内部でのアドレス更新時間は、通常120nsec程度であるので、“0.1μsec”とすると、通信モジュールのIOリフレッシュに要する時間は、最大“819μsec”程度と捉えることができる。これに、入力モジュールおよび出力モジュールとしての通常のIOアクセス分(2μsec)を加えて、IOリフレッシュとしては、最大“821μsec”となる。更に、シーケンス演算時間(1msec)を加えたスキャンタイムは、最大“1,821μsec”となる。すなわち、上記の通常のIOアクセスの場合のスキャンタイムと比べて約5倍の性能アップとなることが判る(ここで、上記アドレス更新時間を“0.12μsec”として算出した場合でも、通信モジュール内で最大“983μsec”、通常のIOアクセス分とシーケンス演算時間を加えたスキャンタイムは、最大“1,985μsec”となり、4.6倍の性能アップとなる)。
【0031】
データ通信の際には、番地の指定を1度行い、指定された番地にデータ通信を行った後には、指定番地以降または以前の番地に対して、リードまたはライトの順次データ通信ができるため、この順次データ通信を行う際に、番地の指定を行わなくてよいこととなる。
これにより、番地指定の通信に要する時間を減らすことが可能となる。
つまり、一の通信モジュールが通信を開始する際に、データ通信を行う前にデータ通信をする番地の指定を行った後は、一と他の通信モジュールは、それぞれ順次データ通信することを設定またはその情報を有しているため、データ通信を繰り返し行うこととなる。
例えば、指定番地nを指定する通信を行い、指定番地nのデータ通信後には、番地n+1、n+2・・・またはn−1、n−2・・・に対しては、番地を指定する通信が不要となるため、全体のデータ通信速度を向上させることが可能となる。なお、便宜上n+1,n+2・・・等と記載したが、データ通信するバス数等に応じて指定番地以降または以前の番地は適宜変更されるため、一般化すると順次データ通信が行われる番地は、n+m、n+2mとなる。
【0032】
以上のように、本実施例においては、CPUモジュールのIOリフレッシュ処理において、連続したエリア(アドレス空間)に対するアクセスを上記の高速連続アクセスとすることにより、大幅に処理時間を高速化することが可能となる。
すなわち、連続したアドレス空間に対するCPUモジュールからのバスアクセスを1回の任意アドレスの指定出力後に、テータストローブ信号をアクセスサイズ分トグルすることによりリードまたはライトが可能となり、高速にデータ転送が行える。
また、データ転送を高速に行うことで、CPUモジュールでの演算周期が速くなり、外部機器に対する制御を高速に処理実行することが可能となる。
【0033】
なお、本発明は、上記の実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記の実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【符号の説明】
【0034】
1…CPUモジュール、2…通信モジュール、3…外部バス、
11…MPU、12…通信ポート、13…ROM、14…RAM、15…DMAC、
16…BUSコントローラM、21…2ポートRAM、22…BUSコントローラS、
31…フリップフロップ(FF)、32…増減カウンタ、33…セレクタ
図1
図2
図3
図4
図5
図6
図7