JP2011123688A - 同期プログラマブルコントローラ、同期プログラマブルコントローラシステム - Google Patents

同期プログラマブルコントローラ、同期プログラマブルコントローラシステム Download PDF

Info

Publication number
JP2011123688A
JP2011123688A JP2009281134A JP2009281134A JP2011123688A JP 2011123688 A JP2011123688 A JP 2011123688A JP 2009281134 A JP2009281134 A JP 2009281134A JP 2009281134 A JP2009281134 A JP 2009281134A JP 2011123688 A JP2011123688 A JP 2011123688A
Authority
JP
Japan
Prior art keywords
cpu module
cpu
programmable controller
application
interrupt
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.)
Pending
Application number
JP2009281134A
Other languages
English (en)
Inventor
Yukiteru Yuo
幸輝 湯尾
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 JP2009281134A priority Critical patent/JP2011123688A/ja
Publication of JP2011123688A publication Critical patent/JP2011123688A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Programmable Controllers (AREA)

Abstract

【課題】マルチCPU構成のプログラマブルコントローラシステムにおいて、電源投入の時間の差異やCPUモジュールの初期化内容の違いなどにより、スキャンタイミングにギャップが生じる可能性がある。各CPUモジュール間のスキャンタイミングを同期させる明確な方法を確立することにより、インタロックなどの処理を用いずに各CPUモジュール間で実行するアプリケーションタスクの結果を保証する。
【解決手段】基準局となるCPUモジュールのカウンタ値を各CPUモジュールのスキャン周期を考慮したタイミングで送信し、受信した各CPUモジュールはカウンタ値を更新することにより同期を確立する。
【選択図】図9

Description

本発明は、複数のCPUモジュールからなるマルチCPU構成のプログラマブルコントローラ(以下、PLCと略す)に関し、特に各CPUモジュールで動作させる複数アプリケーションの処理タイミングを同期させる同期プログラマブルコントローラに関する。
ファクトリーオートメーション等における工業用汎用コンピュータとして、PLCが用いられる。このような分野では、多品種少量生産や短納期化など顧客のさまざまなニーズのため、PLCのアプリケーションの大規模化、複雑化、高速化が進んでいる。
このため、一般にPLCなどの組込機器では、ユーザプログラム、通信、システムを維持するための基本システム処理など、様々な種類の処理が並行的、すなわちマルチタスクで処理されることが多い。
一方で、一つのPLCに複数のCPUモジュール(以下、マルチCPUと略す)を搭載し負荷分散により処理を高速化し、加えてアプリケーションを機能ごとに区分けし処理担当のCPUモジュールを明確にすることにより複雑な処理を回避する手法も確立されている。このようなPLCの一例として、出願人の製品であるMICREX−SXシリーズがある。
このようなマルチCPU構成のPLCを他のPLCや制御機器、ネットワークに接続してプログラマブルコントローラシステム(以下、PLCシステムと略す)を構築する。PLCシステムの任意のCPUモジュールは、他のCPUモジュールとのCPU間データ交換として、例えば、メモリ空間へのダイレクトリード・ライト処理や、サイクリック伝送方式がある。

以降、図1〜3にてPLCシステムの概略構成を説明し、図4にてアプリケーションタスクの動作について説明する。
図1は、マルチCPU構成のPLCの構成例/PLCシステムの構成例の一例である。PLCは、ベースボード10で互いに接続される複数のモジュールで構成される。モジュールとしては、電源モジュール12、CPUモジュール14、IOモジュール16などがある。例えば、破線で囲んだPLC100は、一つの電源モジュール12と三つのCPUモジュール14と2つのIOモジュール16を、一つのベースボード10で接続したものである。電源モジュール12は、ベースボード10で繋がっているCPUモジュール14、IOモジュール16などに電源を供給している。
PLCはネットワーク20を介して、他のPLCや機能モジュール18に接続し、相互に通信する。ここで機能モジュール18とはインバータやサーボアンプなどの独立した機能を有する装置であり、通常電源も別途供給されている。このような機器で構成される一転鎖線の構成をPLCシステム200と呼ぶ。
図2は、マルチCPU構成で使用されるベースボードの一例であり、ベースボード10を上面から見た模式構成を示している。
ベースボード10には、図1のネットワーク20を接続するためのネットワーク用コネクタ22と、ネットワーク20の信号を各モジュールに接続するためのモジュール用コネクタ26と、CPUモジュール14同士でダイレクトリード・ライト機能を実現するためのバスコネクタ24(CPU間バス)が実装されている。電源モジュール12は、これらのモジュール用コネクタ26を介して電源を各モジュールに供給する。図2の場合、ベースボード10には電源モジュール12の他に7つのモジュールが接続可能であり、この内3つまではCPUモジュール14の接続が可能である。なお、マルチCPU構成でなく、一つのCPUモジュール14による動作も可能である。
図3は、CPUモジュールの概略構成である。CPUモジュール14において、主要部分を基本CPU30として説明する。特に図示しないが、CPUモジュール14は基本CPU30以外にも必要に応じて専用機能を有するLSI(Large Scale Integration)などを具備しても構わない。
基本CPU30は、アプリケーション実行を行う演算プロセッサ42とシステム処理を行うシステムプロセッサ44の2つのプロセッサを有する。演算プロセッサ42は、処理を実行するための記憶領域としてRAM38を持ち、システムプロセッサ44は処理を実行するための記憶領域としてRAM48に加えてシステムファームウェアやユーザプログラムを格納するためのフラッシュROM46を持つ。システムプロセッサ44がCPUモジュール14を識別する情報として局番スイッチ52を有する。この局番スイッチの設定により自己のCPUモジュール14と、他のCPUモジュール14とを区別して識別可能になる。これはハードェア的に信号値を設定する構成でも良いし、フラッシュROM46に格納される情報であっても構わない。演算プロセッサ42、システムプロセッサ44は、これらの情報をネットワークLSI54を経由して、自己のベースボード10に接続されているモジュールや、ネットワーク20を経由して他のPLCや機能モジュール18にアクセスする。
基本CPU30は、クロック発生部36とそのクロック値をカウントしカウンタ値として保持するカウンタ34を有する。カウンタ34には、クロック発生部36のカウンタ値とは別に、ある一定時間に相当するカウント値を設定値として保持する。この設定値とカウンタ値が一致したら、割り込み信号を割り込み制御部32に出力する。割り込み信号を出力後は、カウンタ34のカウンタ値をリセットする。この繰り返しにより、定周期割り込みを実現する。
図4は、アプリケーションタスクの実行イメージになる。図4では左側から右側に向って時系列が経過している。ここでPLC100のアプリケーション(プログラム)は、スキャンと呼ばれる実行周期に従ってアプリケーションを周期的に実行するのが通常である。スキャンによって呼び出されるアプリケーションの実行単位はタスク68と呼ばれる。タスク68にはプログラム(ここではプログラム62〜66)が登録されており、タスク68の起動によりプログラムが順番に処理される。マルチCPU構成においても、各CPU上で実行されるアプリケーションタスクはスキャン周期60に従って実行される。尚、タスク68に登録されるプログラムは1つであっても構わない。
以上のようなマルチCPU構成のPLCシステムが示されている。
また特許文献1には、マスタ局から一定周期ごとにデータを送出し、他の局は送信されたデータ受信後にスキャンを行なうことにより制御動作を同期させる技術が記載されている。
更に特許文献2には、司令部1から各アクチュエータ制御部に対し割込み信号を発し内部カウンタ初期値にして同期させる方法が記載されている。
特開平9−219714号公報 特開平10−91222号公報
マルチCPU構成のPLCシステムでは、複数のCPUで実行するアプリケーションタスクにおいて、以下のような理由で個々のアプリケーションタスクのスキャンが非同期となってしまう問題がある。
・電源投入時の電源モジュールと各CPUモジュールの位置関係による電源電圧立ち上がり時間の差異。
・システム全体の管理を司るマスタ局として動作するCPUモジュールとそれ以外のCPUモジュールの初期化処理内容の違いによる生ずるアプリケーションタスク起動タイミングの差異。

以降、図5〜8を用いて、スキャンが非同期になった場合の問題点を詳しく説明する。
図5は、マルチCPU構成におけるアプリケーション配置の一例である。ここでは説明に関係のある各CPUモジュールにおける主要部のみを記述する。CPU1モジュール72、CPU2モジュール74、CPU3モジュール76は同一のベースボード10に接続されている。CPU1モジュール72にはプログラム1(62)が、CPU2モジュール74にはプログラム2(64)が、CPU3モジュール76にはプログラム3(66)が格納されており、同じスキャン周期で処理が実行されているものとする。また、CPU2モジュール74にはグローバル変数A82、CPU3モジュール76にはグローバル変数B84が格納されている。
図6は、アプリケーション処理のフローチャートである。図6(a)は図5のプログラム1(62)、図6(b)は図5のプログラム2(64)の一例である。尚、図5のプログラム3(66)の構成は、図6(b)と図5のプログラム2(64)との関係と同様であるので、ここでは図示せず、説明も省略する。
図6(a)の処理について説明する。プログラム1(62)が実行されると、定義済の処理Xの演算を実行する(ステップS10)。次に、CPU2モジュール74のグローバル変数A82に、演算結果の変数Aの値を書き込む(ステップS12)。同様に、CPU3モジュール76のグローバル変数B82に、演算結果の変数Bの値を書き込む(ステップS14)。
図6(b)の処理について説明する。プログラム2(64)が実行されると、CPU2モジュール74のグローバル変数A82の値を読み込む(ステップS20)。変数Aの値が1の場合、定義済の処理1を実行する(ステップS22Yes、ステップS26)。変数Aの値が1ではない場合、続いて変数Aの値が2か否か判定する(ステップS22No、ステップS24)。変数Aの値が2の場合、定義済の処理2を実行する(ステップS24Yes、ステップS30)。変数Aの値が2ではない場合、定義済の処理3を実行する(ステップS24No、ステップS28)。
図6のアプリケーションでは、プログラム1(62)の実行結果を受けてグローバル変数A82、グローバル変数B84が変更され、この結果に基づいてプログラム2(64)や図示しないプログラム3(66)の処理が決定される。即ち、図5のようにアプリケーションタスクが配置されているときは、CPU1モジュール72の動作結果によって、CPU2モジュール74やCPU3モジュール76の動作が異なってくる。
図7は、マルチCPU構成におけるタスク周期間の処理タイミングの一例を示したものであり、図6のフローチャートを処理タイミングで示したものである。図7では左側から右側に向って時系列が経過しており、各CPUモジュールにおける処理タイミングの流れを示している。上段のCPU1モジュール72は、スキャン周期92で処理を行なっており、各スキャン周期92において、“処理X102”、“変数A82の書き込み104”、“変数B84の書き込み106”が行なわれている。中段のCPU2モジュール74は、スキャン周期94で処理を行なっており、各スキャン周期94において、“変数A82の読み込み108”、“判定112”、“処理114”が行なわれている。“判定112”は図6のステップS22などの変数A82の値による分岐判定を指し、“処理114”はステップS26などの判定後の実処理を指す。下段のCPU3モジュール76は、スキャン周期96で処理を行なっており、各スキャン周期96において、“変数B84の読み込み116”、“判定118”、“処理122”が行なわれている。
ここで、各CPUモジュールでは、スキャン周期92〜96の長さの相違は無く、タイミング(位相)だけ異なる。各CPUモジュール間のタイミングの違いを明確にするために周期101を中心に見てみると、“変数A82の読み込み108”の後に“変数A82の書き込み104”が行なわれるので両者の関係に問題は生じない。一方で、“変数B84の読み込み116”と“変数B84の書き込み106”とのタイミングは処理が重なる可能性があるので、図6のプログラム1(62)の結果が正しくプログラム3(66)に反映されているかは分からない。
このため、通常マルチCPU構成におけるアプリケーションにおいて、複数CPUモジュール間で処理の整合性を保つためには、インタロックの処理をアプリケーションに記述し、アプリケーションレベルで同期の保証をする必要があった。
図8は、図6のフローチャートにインタロックを追加したアプリケーション処理のフローチャートである。プログラム2(64)やプログラム3(66)で変数の値が読み込まれない限り、プログラム1(62)で変数の値を書き換えないようにする点が図6のフローチャートとは異なる。
図8(b)において、プログラム2(64)が実行されると、CPU2モジュール74のグローバル変数A82の値を読み込む(ステップS20)のは同じだが、読み込み後、グローバル変数A82の値をクリアする(ステップS36)。
一方で図8(a)において、プログラム1(62)が実行されると、定義済の処理Xの演算を実行する(ステップS10)のは同じだが、その後、グローバル変数A82の値がクリアされているか判定する(ステップS32)。クリアされない限り処理は進まない。同様に、CPU3モジュール76のグローバル変数B84への書き込み(ステップS14)を行なう前に、グローバル変数B84の値がクリアされているか判定する(ステップS34)。クリアされない限り処理は進まない。
このような処理をインタロックと呼ぶ。インタロックは、ハードウェア・ソフトウェアのどちらで実施することもできるが、ここではソフトウェア処理にて実現している。
同様に、プログラム3(66)にもインタロック処理を追加するが、プログラム2(64)と同様になるのでここでは図示せず、説明も省略する。
このようにインタロックの記述を追加すると、図6のアプリケーションに比べてコードの記述が増える。加えて位相ずれがあった場合、1スキャン周期で処理が可能なはずのアプリケーション処理が、2スキャン周期処理がまたがってしまう問題がある。PLCシステムの処理において定周期(1スキャン周期)でのアプリケーション実行完了の確保は重要であり、このようなインタロック等による定周期の確保の妨げは避けるのが好ましい。
そこでインタロックを行なわずに解決する方法として、CPUモジュール間の同期を取る方法が考えられる。特許文献1、2とも同期に関する記述はあるが、マルチCPUを有するPLCシステムの同期を想定したものではなく、その同期方法についても同期頻度などの基準が示されていないという未解決な課題がある。
上記の課題を解決する手段として、本発明は以下のように構成する。
第1に、第1のアプリケーションを実行する第1のCPUモジュールと、前記第1のアプリケーションの実行結果を用いる第2のアプリケーションを実行する第2のCPUモジュールと、を有するプログラムコントローラにおいて、前記第1のCPUモジュールと前記第2のCPUモジュールとの間で読み書きするときに用いるCPU間バスと、前記第1のCPUモジュール内で動作し、スキャン周期に基づいて割り込みを発生させて前記第1のアプリケーションを実行させる第1の割り込み処理部と、前記第2のCPUモジュール内で動作し、前記スキャン周期に基づいて割り込みを発生させて前記第2のアプリケーションを実行させる第2の割り込み処理部と、を備え、前記第1のCPUモジュールは、前記第1のCPUモジュールのスキャン開始時刻と前記第2のCPUモジュールのスキャン開始時刻との同期を目的とする割り込みを前記第1の割り込み処理部に通知して前記第1のアプリケーションを実行させると共に、前記CPU間バスに信号を送信し、前記信号を受信した前記第2のCPUモジュールは、前記第2の割り込み処理部に前記同期を目的とする割り込みを通知して、前記第2のアプリケーションを実行させるように構成する。
第2に、前記信号の専用回線を更に備え、前記第1の割り込み処理部は前記同期を目的とする割り込みが発生したときに、前記信号を前記専用回線を経由させて、前記第2の割り込み処理部に同期を目的とする割り込みが発生したことを直接伝達するように構成する。
第3に、前記第1のCPUモジュールは、経過時間を自己のパルスをカウントアップして計測する第1のカウンタを更に有し、該第1のカウンタのカウンタ値に基づく所定のタイミングで前記第1の割り込み処理部に前記同期を目的とする割り込みを通知するように構成する。
第4に、前記所定のタイミングとは、前記第1のカウンタのカウンタ値より求まる時間とスキャン周期とが一致したとき或いはその直前であるように構成する。
第5に、前記第2のアプリケーションの実行周期が複数の前記スキャン周期にまたがるときは、前記第1のCPUモジュールは、複数回に1回のタイミングで前記CPU間バスに前記信号を送信するように構成する。
第6に、第1のアプリケーションを定周期で実行する第1のCPUモジュールを含む第1のプログラマブルコントローラと、前記第1のアプリケーションの実行結果を用いる第2のアプリケーションを定周期で実行する第2のCPUモジュールを含む第2のプログラマブルコントローラと、前記第1のCPUモジュールと前記第2のCPUモジュールとを繋ぐネットワークと、を有するプログラムコントローラシステムにおいて、前記第1のCPUモジュールは、経過時間を自己のパルスをカウントアップして計測する第1のカウンタと、該第1のカウンタ値に基づいてスキャンを開始させる第1の割り込み処理部と、を有し、前記第2のCPUモジュールは、経過時間を自己のパルスをカウントアップして計測する第2のカウンタと、該第2のカウンタ値に基づいてスキャンを開始させる第2の割り込み処理部と、を有し、前記第1のCPUモジュールは、所定のタイミングで前記第1のカウンタ値を前記ネットワークを経由して送信し、前記第2のCPUモジュールは、受信した前記第1のカウンタ値で前記第2のカウンタ値を更新するように構成する。
マルチCPU構成のプログラマブルコントローラシステムにおいて、的確なタイミングで各CPUモジュールのカウンタ値を基準局(マスタ)のカウンタ値で更新することにより、スキャン周期を同期させ、インタロックなどの処理を用いずに各CPUモジュール間で実行するアプリケーションの結果を保証する。加えて、基本ネットワークの他に拡張ネットワークを保持するPLCシステムの構成であっても、同様な効果を奏する。
解決手段
基準局となるCPUモジュールのカウンタ値を各CPUモジュールのスキャン周期を考慮したタイミングで送信し、受信した各CPUモジュールはカウンタ値を更新することにより同期を確立する。
マルチCPU構成のプログラマブルコントローラの構成例、プログラマブルコントローラシステムの構成例を示す説明図である。 マルチCPU構成で使用されるベースボードの一例を示す説明図である。 CPUモジュールの概略構成を示す説明図である。 アプリケーションタスクの実行イメージを示す説明図である。 マルチCPU構成におけるアプリケーション配置の一例を示す説明図である。 アプリケーション処理のフローチャートである。 マルチCPU構成におけるタスク周期間の処理タイミングの一例を示す説明図である。 インタロックを追加したアプリケーション処理のフローチャートである。 本発明のマルチCPU構成における同期方法を示す説明図である。 タスク周期が整数倍になるアプリケーションの実行タイミングの一例である。 本発明における実行周期が整数倍のアプリケーションの実行方法を示す説明図である。 マルチCPU構成のPLCシステムの拡張構成例を示す説明図である。 従来のCPUモジュールの概略構成を示す説明図である。 本発明のCPUモジュールの概略構成の一例を示す説明図である。
以下、本発明の実施の形態を説明する。
始めに図9を用い第1の実施例を説明する。次に図10、11を用い第2の実施例を説明する。最後に図12〜14を用い第3の実施例を説明する。
図9は、本発明のマルチCPU構成における同期方法を示している。本実施例におけるPLCシステムのマルチCPU構成は従来と同じであり、例えば既に説明した図1〜3のようになる。ここでは、CPUモジュール1(14)とCPUモジュール2(14)とにおける同期を説明するが、動作に直接関係しない部位の説明は省略する。また、構成は同じなので、図3と同じ引用番号を付与した箇所の個別説明も省略する。
従来、CPUモジュール1(14)やCPUモジュール2(14)は、夫々に搭載するクロック発生部36で生成されるパルスに基づいてスキャンを実行している。本来、同等の構成、同等の性能にて動作する機器の場合、スキャン動作も同様になる。しかしながら、電源投入の時間の差異やCPUモジュールの初期化内容の違いなどにより、スキャンタイミングにギャップが生じる可能性がある。尚、クロック発生部36で生成されるパルスはどのようなものであっても構わないが、通常は水晶発振子などにより供給される安定した信号であり、以降の説明ではクロックパルスと記述する。
図9の太い矢印は、割り込み信号の流れを示している。ここでは、CPUモジュール1(14)を基準局とし、CPUモジュール2(14)との同期を図る。尚、基準局となるCPUモジュール14は予め決めておいても良いし、全てのCPUモジュール14の局番SW52の値を比較し、最小(最大)の局番SW52の値を有するCPUモジュール14を基準局としても構わない。
基準局となったCPUモジュール14は、同期を目的とする割り込みを発生させる。この同期を目的とする割り込みでは、例えば、カウンタ34のカウンタ値を基づいて所定のタイミングで割り込みを行なう。割り込み制御部32で発生させた割り込み信号を、演算プロセッサ42の指令をネットワークLSI54経由でネットワーク20に送信する。ネットワーク20より割り込み信号を受信したCPUモジュール14は、ネットワークLSI54を経由し演算プロセッサ42の指令により割り込み制御部32で割り込みを発生させる。以上の一連の動作により、基準局で発生させた同期を目的とする割り込みが、他のCPUモジュール14でも同期を目的とする割り込みが生成される。
尚、図9の場合、同じベースボード10上のCPUモジュール14同士なので、ネットワーク20を経由せず、図2で示したバスコネクタ24を経由し直接CPUモジュール14同士のメモリ(ここでは、割り込みを対象とするレジスタ)にアクセスして構わない。更に、同期を目的とする割り込み専用線を設けても構わない。これはバスコネクタ24に追加しても良いし、別途配線しても構わない。
上述の所定のタイミングについて説明する。
基準局から同期を目的とする割り込み信号するタイミングは、クロック発生部36のクロックパルスごとに実施すれば必ず同期するが、処理が頻繁になりネットワーク20のトラフィック負荷や演算プロセッサ42の処理負荷に影響が大きい。
ところで、スキャン周期に対し100%のタスクを積むことは設計上の見地からも一般的には行わない。図4で示すようにスキャン周期60に対しタスク68は時間的に余裕を見込んだ長さになる。そこで、基準局のタスク完了後に信号を送信することにより、他のCPUモジュール14のスキャン立ち上がりを確実に同期させることが可能になる。例えば、基準局の次のスキャン周期60の立ち上がりのタイミング、或いはその直前のクロックパルスのタイミングにおいて、信号を送信する。具体的には、クロック発生部36のクロックパルスの発生周期(時間)を予め求めておき、カウンタ値と発生周期との乗算により経過時間を求める。この経過時間とスキャン周期との値が等しく(或いは経過時間の方が大きくなった)場合、信号を送信する。或いは、この経過時間より数クロック前の経過時間を比較の条件として用いる。
尚、スキャン周期ごとに信号送信を実施する必要は無く、PLCシステムの全体設計に基づき、例えば数スキャン周期に1回で良く、一方でスキャン周期が長い場合は1回のスキャン内で数回の同期を実施しても構わない。
また、基準局のタスク完了直後のタイミングに限定する必要はないが、タスク開始の直前に信号を送信する場合、CPUモジュール14の動作タイミングによっては1パルス以上の誤差で基準局より先に他のCPUモジュール14がスキャンを開始している可能性もあるので、タスク開始の直前より余裕時間を見込んで早めに信号を送信するのが好ましい。
同期を目的とする割り込み信号の送出形態は特に限定しないが、上述の通り同じベースボード10上にあるCPUモジュール14同士においては、バスコネクタ24を経由するので簡単な信号でよい。一方で、ネットワーク20に送信する形態では、専用のメッセージフレームを生成しても良いし、データ送信のフレームに割り込み信号の発生情報を追加しても構わない。受信局で割り込みの発生を認識可能な形式であれば良い。
フレームの送受信の伝送時間が問題となるようなPLCシステムであれば、たとえばIEEE1588のような同期プロトコルを用いて構わない。
以上のように同期を目的とする割り込み信号により、各CPUモジュール14の同期を実現する。
ところで各CPUモジュール14は、スキャン周期の制御も割り込み制御部32が制御する。即ちスキャン周期の立ち上がり時には、割り込みが発生し、このタイミングに基づいてタスク管理が行なわれ、結果アプリケーションが実行される。このスキャン周期の制御に関しても、カウンタ34のカウンタ値を用いる。そこでカウンタ値が同じタイミングで更新され、同値を保持していればスキャン周期も同期することになる。そこで基準局から同期を目的とする割り込み信号を送信する替わりに、基準局のカウンタ値を送信し、他のCPUモジュール14のカウンタ値に反映させても構わない。この場合、受信したCPUモジュール14は直ちに受信したカウンタ値で自己のカウンタ値を更新する。その後、各CPUモジュール14は、自己のカウンタ値に基づいてスキャンを実施する。
図10は、タスク周期が整数倍になるアプリケーションの実行タイミングの一例を示しており、左側から右側に向って時系列が経過しており、各CPUモジュールにおける処理タイミングの流れを示している。
マルチCPU構成のPLCシステムにおいては、各CPUモジュール14に実装されるユーザアプリケーションを並列動作させることで処理時間の短縮を図る負荷分散のようなアプリケーションもあるが、アプリケーションの可読性の向上や保守交換、機能アップなどを容易とするように機能分散型のアプリケーション実装もある。機能分散型のアプリケーションでは、各CPUモジュール14のアプリケーションの処理周期が異なることもありえる。
加えて、他のCPUモジュール14で数回演算した結果を参照して自己のCPUモジュール14のアプリケーションを1回実行させるなど、整数倍周期で異なるアプリケーションタスクを実行しなければならない場合もある。
図10の場合、上段のCPU1モジュール72はスキャン周期124で処理し、中段のCPU2モジュール74はスキャン周期126で処理し、CPU3モジュール76はスキャン周期128で処理を実行している。ここで例えば、CPU2モジュール74の処理bはCPU1モジュール72の処理aを2回実行した結果を用いている。CPU3モジュール76の処理cはCPU1モジュール72の処理aを1回実行した結果を用いている。
図11は、本発明における実行周期が整数倍のアプリケーションの実行方法を示したものであり、CPUモジュール14内におけるカウンタ34の概略構成になる。
通常、カウンタ34にはカウンタA132と設定値A134、及び比較器A136を有する。カウンタA132はカウンタ値を格納する領域で、クロック発生部36より受けたクロックパルスをカウントアップする。設定値A134は割り込みを発生させる周期を設定する領域で予め設定値を設定しておく。比較器A136はカウンタA132と設定値A134との値を比較し、一致した場合は割り込み制御部32に信号を送信する。
本実施例のではカウンタ34で、この構成に加えてカウンタB142と設定値B144、及び比較器B146を有する。この場合、比較器A136はカウンタB142に信号を送信するが、破線の割り込み制御部32に信号は送信しない。
カウンタB142は比較器A136から受けた信号をカウントアップする。設定値B144は割り込みを発生させる周期を設定する領域で予め設定値を設定しておく。尚、設定値B144に設定する値は、基準となるカウンタ34(カウンタA)の周期の何倍の周期で動作させるかの値になる。比較器B146はカウンタB142と設定値B144との値を比較し、一致した場合は割り込み制御部32に信号を送信する。
割り込み制御部36は、信号を受けたタイミングで演算プロセッサ42へ割り込みを掛け、演算プロセッサ42は他のCPUモジュール14のカウンタ値を送信する。
図11では説明を簡単にするため、比較器を複数設け直列構造としたが、これは発明を限定するものではなく、基本となる周期のn倍の周期を出力できれば、この例に限らない。
図12は、マルチCPU構成のPLCシステムの拡張構成例を示したものである。ここで、CPUモジュール14の機能を拡張し、拡張バスコネクタ28を有するのがCPUモジュール15になる。この拡張バスコネクタ28は、ネットワーク21によりベースボード11と接続される。ベースボード11は、基本的な構造はベースボード10と同様だが、CPUモジュール14を搭載しない点、外部との接続は拡張バスコネクタ28と繋ぐネットワーク21になる点が異なる。尚、ここでは各CPUモジュール15から夫々1台の機器しか繋いでいないが、これは一例に過ぎず、更に機能モジュール等の機器を繋いでも構わない。このような一点鎖線で囲まれた領域得が、PLCシステム201となる。また、ここでは図1のネットワーク20を基本系統、図13のネットワーク21を拡張系統と呼称する。
図12の例では、一点鎖線で囲まれるPLCシステム201はネットワーク20で接続される基本系統の他に、ネットワーク21で接続される拡張系統を二つ持つことになる。
このため、基本系統のCPUモジュール14のスキャンの同期だけでなく、拡張系統のCPUモジュール15の同期も保証する必要が生じる。
図13は、図12の拡張構成を実現させる従来のCPUモジュールの概略構成を示した
ものである。ここでCPUモジュール14は、複数の基本CPU30を持ち、片方の基本CPU30は図3で示すような従来の構成で、もう片方の基本CPU30は拡張バスコネクタ28により拡張ネットワークに接続される。また、双方の基本CPU30の情報を媒介するインタフェースLSI58と共有RAM49とを更に有する。
このように一つのCPUモジュール14内に複数の基本CPU30を持ち、夫々がネットワークを保持することにより、スキャン周期に影響を与えることなく、各機器の接続台を増やすことができる。の増設が可能になる。
一方で、一つのCPUモジュール14内に複数の基本CPU30を持ち、夫々が独立したクロック発生部36に基づいて動作しているが、その同期について考慮がなされていない。
図14は、図12の拡張構成を実現させる本発明のCPUモジュールの概略構成の一例を示したものである。一つのCPUモジュール14内に複数の基本CPU30を持ち、夫々がネットワークを保持する点は図13の従来の構成と同様なので、ここでは図13との相違点について説明する。
図13では同等の機能の基本CPU30であったが、ここでは基本CPU30aにのみクロック発生部36を有する。また、カウンタ34を基本CPU30aと基本CPU30bとで共有化し、例えばインタフェースLSI58内に保持する。加えて割り込み制御部32もインタフェースLSI58内に保持する。
このような構成にすることにより、CPUモジュール14は、複数の基本CPU、複数の系統のネットワークへのアクセスを可能としつつも、内部でのカウンタ34を共用しているので、各ネットワークに対し同期した演算プロセッサ42によりアプリケーションタスクの実行が可能になる。
尚、共有RAM49は特に図示しないが、必要に応じて保持する構成であっても構わない。また、クロック発生部36はCPUモジュール15内に一つであり、カウンタ34及び割り込み制御部32も双方の基本CPUから同等のアクセスが可能であれば、この構成に限らない。
100 プログラマブルコントローラ(PLC)
200、201 プログラマブルコントローラシステム(PLCシステム)
10、11 ベースボード
12 電源モジュール
14、15 CPUモジュール
16 IOモジュール
18 機能モジュール
20、21 ネットワーク
22 ネットワーク用コネクタ
24 バスコネクタ
26 モジュール用コネクタ
28 拡張バスコネクタ
30、30a、30b 基本CPU
32 割り込み制御部
34 カウンタ
36 クロック発生部
38、48 RAM
42 演算プロセッサ
44 システムプロセッサ
46 フラッシュROM
49 共有RAM
52 局番スイッチ
54、56 ネットワーク集積回路(ネットワークインターフェース)
58、59 インターフェース集積回路
60、92、94、96 スキャン周期
62、64、66 プッログラム1〜3
68 タスク
72、74、76 CPU1〜3モジュール
82、84 変数A、B
101 周期
102 処理X
104、106 変数A、Bの書き込み
108、116 変数A、Bの読み込み
112、118 判定
114、122 処理
124、126、128 実行周期
132、142 カウンタ
134、144 設定値
136、146 比較器

Claims (8)

  1. 第1のアプリケーションを実行する第1のCPUモジュールと、
    前記第1のアプリケーションの実行結果を用いる第2のアプリケーションを実行する第2のCPUモジュールと、を有するプログラムコントローラにおいて、
    前記第1のCPUモジュールと前記第2のCPUモジュールとの間で読み書きするときに用いるCPU間バスと、
    前記第1のCPUモジュール内で動作し、スキャン周期に基づいて割り込みを発生させて前記第1のアプリケーションを実行させる第1の割り込み処理部と、
    前記第2のCPUモジュール内で動作し、前記スキャン周期に基づいて割り込みを発生させて前記第2のアプリケーションを実行させる第2の割り込み処理部と、を備え、
    前記第1のCPUモジュールは、前記第1のCPUモジュールのスキャン開始時刻と前記第2のCPUモジュールのスキャン開始時刻との同期を目的とする割り込みを前記第1の割り込み処理部に通知して前記第1のアプリケーションを実行させると共に、前記CPU間バスに信号を送信し、
    前記信号を受信した前記第2のCPUモジュールは、前記第2の割り込み処理部に前記同期を目的とする割り込みを通知して、前記第2のアプリケーションを実行させること、
    を特徴とするプログラマブルコントローラ。
  2. 請求項1に記載のプログラマブルコントローラにおいて、
    前記信号の専用回線を更に備え、
    前記第1の割り込み処理部は前記同期を目的とする割り込みが発生したときに、前記信号を前記専用回線を経由させて、前記第2の割り込み処理部に同期を目的とする割り込みが発生したことを直接伝達すること、
    を特徴とするプログラマブルコントローラ。
  3. 請求項1または2に記載のプログラマブルコントローラにおいて、
    前記第1のCPUモジュールは、経過時間を自己のパルスをカウントアップして計測する第1のカウンタを更に有し、該第1のカウンタのカウンタ値に基づく所定のタイミングで前記第1の割り込み処理部に前記同期を目的とする割り込みを通知すること、
    を特徴とするプログラマブルコントローラ。
  4. 請求項3に記載のプログラマブルコントローラにおいて、
    前記所定のタイミングとは、前記第1のカウンタのカウンタ値より求まる時間とスキャン周期とが一致したとき或いはその直前であること、
    を特徴とするプログラマブルコントローラ。
  5. 請求項3または4のいずれか1項に記載のプログラマブルコントローラにおいて、
    前記第2のアプリケーションの実行周期が複数の前記スキャン周期にまたがるときは、
    前記第1のCPUモジュールは、複数回に1回のタイミングで前記CPU間バスに前記信号を送信すること、
    を特徴とするプログラマブルコントローラ。
  6. 第1のアプリケーションを定周期で実行する第1のCPUモジュールを含む第1のプログラマブルコントローラと、
    前記第1のアプリケーションの実行結果を用いる第2のアプリケーションを定周期で
    実行する第2のCPUモジュールを含む第2のプログラマブルコントローラと、
    前記第1のCPUモジュールと前記第2のCPUモジュールとを繋ぐネットワークと、
    を有するプログラムコントローラシステムにおいて、
    前記第1のCPUモジュールは、
    経過時間を自己のパルスをカウントアップして計測する第1のカウンタと、該第1のカウンタ値に基づいてスキャンを開始させる第1の割り込み処理部と、を有し、
    前記第2のCPUモジュールは、
    経過時間を自己のパルスをカウントアップして計測する第2のカウンタと、該第2のカウンタ値に基づいてスキャンを開始させる第2の割り込み処理部と、を有し、
    前記第1のCPUモジュールは、所定のタイミングで前記第1のカウンタ値を前記ネットワークを経由して送信し、
    前記第2のCPUモジュールは、受信した前記第1のカウンタ値で前記第2のカウンタ値を更新すること、
    を特徴とするプログラマブルコントローラシステム。
  7. 請求項6に記載のプログラマブルコントローラシステムにおいて、
    前記所定のタイミングとは、前記第1のカウンタのカウンタ値より求まる時間とスキャン周期とが一致したとき或いはその直前であること、
    を特徴とするプログラマブルコントローラシステム。
  8. 請求項6または7に記載のプログラマブルコントローラシステムにおいて、
    前記第2のアプリケーションの実行周期が複数のスキャン周期にまたがるときは、
    前記第1のCPUモジュールは、複数回に1回のタイミングで前ネットワークに前記第1のカウンタ値を送信すること、
    を特徴とするプログラマブルコントローラシステム。

JP2009281134A 2009-12-11 2009-12-11 同期プログラマブルコントローラ、同期プログラマブルコントローラシステム Pending JP2011123688A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009281134A JP2011123688A (ja) 2009-12-11 2009-12-11 同期プログラマブルコントローラ、同期プログラマブルコントローラシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009281134A JP2011123688A (ja) 2009-12-11 2009-12-11 同期プログラマブルコントローラ、同期プログラマブルコントローラシステム

Publications (1)

Publication Number Publication Date
JP2011123688A true JP2011123688A (ja) 2011-06-23

Family

ID=44287515

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009281134A Pending JP2011123688A (ja) 2009-12-11 2009-12-11 同期プログラマブルコントローラ、同期プログラマブルコントローラシステム

Country Status (1)

Country Link
JP (1) JP2011123688A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014080457A1 (ja) * 2012-11-20 2014-05-30 株式会社安川電機 プログラマブルコントローラ
US9438363B2 (en) 2012-08-01 2016-09-06 Mitsubishi Electric Corporation Communication device, communication system, and synchronous control method
KR20210064039A (ko) * 2019-11-25 2021-06-02 후지 덴키 가부시키가이샤 프로그래머블 컨트롤러 시스템 및 모듈
US11327921B2 (en) 2019-05-09 2022-05-10 Jtekt Corporation Control device and inter-module communication method
CN116149250A (zh) * 2022-12-20 2023-05-23 西北核技术研究所 一种基于硬定时器的多plc控制器高时间精度指令同步方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0227405A (ja) * 1988-07-15 1990-01-30 Toshiba Corp プログラマブルコントローラ
JPH05189385A (ja) * 1992-01-09 1993-07-30 Fuji Xerox Co Ltd 分散処理環境系におけるタイマ同期方式
JPH09219714A (ja) * 1996-02-09 1997-08-19 Toshiba Corp 伝送制御システム
JPH113234A (ja) * 1997-06-12 1999-01-06 Ishikawajima Harima Heavy Ind Co Ltd 異制御周期プロセスにおけるデータ通信方法
JP2000112519A (ja) * 1998-10-02 2000-04-21 Toshiba Corp 分散型プロセス入出力装置
JP2005293569A (ja) * 2004-03-11 2005-10-20 Omron Corp 同期コントローラ
JP2009289131A (ja) * 2008-05-30 2009-12-10 Mitsubishi Electric Corp マルチコントローラシステム
JP2010061458A (ja) * 2008-09-04 2010-03-18 Yaskawa Electric Corp マシンコントローラシステムおよびマシンコントローラ間同期方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0227405A (ja) * 1988-07-15 1990-01-30 Toshiba Corp プログラマブルコントローラ
JPH05189385A (ja) * 1992-01-09 1993-07-30 Fuji Xerox Co Ltd 分散処理環境系におけるタイマ同期方式
JPH09219714A (ja) * 1996-02-09 1997-08-19 Toshiba Corp 伝送制御システム
JPH113234A (ja) * 1997-06-12 1999-01-06 Ishikawajima Harima Heavy Ind Co Ltd 異制御周期プロセスにおけるデータ通信方法
JP2000112519A (ja) * 1998-10-02 2000-04-21 Toshiba Corp 分散型プロセス入出力装置
JP2005293569A (ja) * 2004-03-11 2005-10-20 Omron Corp 同期コントローラ
JP2009289131A (ja) * 2008-05-30 2009-12-10 Mitsubishi Electric Corp マルチコントローラシステム
JP2010061458A (ja) * 2008-09-04 2010-03-18 Yaskawa Electric Corp マシンコントローラシステムおよびマシンコントローラ間同期方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9438363B2 (en) 2012-08-01 2016-09-06 Mitsubishi Electric Corporation Communication device, communication system, and synchronous control method
WO2014080457A1 (ja) * 2012-11-20 2014-05-30 株式会社安川電機 プログラマブルコントローラ
JP6015768B2 (ja) * 2012-11-20 2016-10-26 株式会社安川電機 プログラマブルコントローラ
US10768601B2 (en) 2012-11-20 2020-09-08 Kabushiki Kaisha Yaskawa Denki Programmable controller
US11327921B2 (en) 2019-05-09 2022-05-10 Jtekt Corporation Control device and inter-module communication method
KR20210064039A (ko) * 2019-11-25 2021-06-02 후지 덴키 가부시키가이샤 프로그래머블 컨트롤러 시스템 및 모듈
KR102494296B1 (ko) * 2019-11-25 2023-01-31 후지 덴키 가부시키가이샤 프로그래머블 컨트롤러 시스템 및 모듈
JP7439474B2 (ja) 2019-11-25 2024-02-28 富士電機株式会社 プログラマブルコントローラシステムおよびモジュール
CN116149250A (zh) * 2022-12-20 2023-05-23 西北核技术研究所 一种基于硬定时器的多plc控制器高时间精度指令同步方法

Similar Documents

Publication Publication Date Title
KR101502713B1 (ko) 시퀀서 시스템 및 그 제어 방법
US6832326B2 (en) Multiprocessor clock synchronization with adjustment based on measuring propagation delay between a processor and a plurality of processors
KR101109030B1 (ko) 클록 공급 방법 및 정보 처리 장치
WO2015128981A1 (ja) プログラマブルコントローラシステム、そのコントローラ
JP2011123688A (ja) 同期プログラマブルコントローラ、同期プログラマブルコントローラシステム
JP2016110458A (ja) プログラマブル・ロジック・コントローラ、基本ユニット、制御方法およびプログラム
CN104838615A (zh) 信号同步系统、节点同步系统、信号同步方法以及节点同步方法
JP2013205286A (ja) 情報処理装置、管理コントローラ、システム時刻同期方法、及びプログラム
EP2498163A2 (en) Information Processing Apparatus and Time-of-Day Control Method
EP2933697B1 (en) Plc system having a plurality of cpu modules and control method thereof
WO2012132692A1 (ja) 並列処理システム及び並列処理システムの動作方法
JP5067670B2 (ja) マシンコントローラシステム
CN115378761B (zh) 一种基于PLC的EtherCAT主站系统快速实现方法
Fuehrer et al. Time triggered can (ttcan)
US11137794B2 (en) Systems and methods for synchronization of multiple processors
KR20130019617A (ko) Plc 네트워크 증설방법 및 이를 이용한 네트워크 증설시스템
US20140365629A1 (en) Information processing system
JP2006048284A (ja) プログラマブルコントローラ装置およびオプションモジュールとの同期方法
JP7439474B2 (ja) プログラマブルコントローラシステムおよびモジュール
CN116306953B (zh) 一种量子物理实验平台的实时测控系统架构
JPH07200486A (ja) 情報処理装置
JP5892083B2 (ja) パラメータ設定装置、パラメータ設定プログラム及びパラメータ設定方法
US11797421B2 (en) Semiconductor apparatus and debug system
JP2007249560A (ja) プログラマブルコントローラにおけるcpuモジュール
JP6885801B2 (ja) バンク方式のデュアルポートメモリ

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20110422

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121015

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131008

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140225