(57)【要約】【課題】  従来からユニット間データを送受する際に用いられているバス（システムバス）を利用し、同期制御専用のバスを持たせることなく同期制御機能を実現すること【解決手段】  ＣＰＵユニットは、通常のサイクリックに行う処理実行中にタイマ割り込みが入ると、その処理を中断し、同期制御を行う他の同期ユニットに対してシステムバスを用いて同期データを一斉同報で送信する。同期ユニットは、一斉同報による同期データを受信したことを契機として同期サイクルを実行し、その同期サイクルの開始に伴い、受信した同期データを取得し、入出力処理を実行後、ＩＮデータの同期データのリフレッシュ処理（ａ）を行う。ＣＰＵユニットは、そのＩＮデータの同期データリフレッシュを行い（ｂ）、同期割り込みタスク処理により次に送信する同期データを求める（ｃ）。同期ユニットは、常に最新の同期データを取得し、同時に動作する。【選択図】        図２
2010198600.tif 000002
【特許請求の範囲】
【請求項１】
同期制御を行う複数のユニットから構成される産業用コントローラであって、
前記複数のユニットのうちの１つのユニットが、同期の実行タイミングをあわせる制御をするサイクルマスタとなり、
そのサイクルマスタは、
通常のサイクリックに行う処理とは別に、タイマ割り込みに従って同期制御を行う他のユニットに対してメッセージ送信やＩＯデータの送信に使用するシステムバスを用いて同期データを一斉同報で送信する処理と、
前記他のユニットのＩＮデータの同期データを取得し、取得した同期データに基づく割り込みタスク処理を実行後、次回の一斉同報のための準備処理を実行する機能を有し、
前記同期制御を行う他のユニットは、前記サイクルマスタから一斉同報により前記同期データを受信したことを契機として同期サイクルを実行し、その同期サイクルの開始に伴い、前記送られてきた同期データを取得し、入出力処理を実行後、ＩＮデータの同期データのリフレッシュ処理を行い、その後に、受信した同期データに基づく演算処理を行ない、次の一斉同報による前記同期データの受信を待った後に前記演算処理結果を出力するように構成したことを特徴とする産業用コントローラ。
【請求項２】
前記サイクルマスタは、前記同期データを一斉同報で送信する処理後は、通常のサイクリックに行う処理を再開し、前記タイマ割り込みを受けてから、前記同期制御を行う他のユニットが同期サイクル開始から前記同期データリフレッシュ処理までに要する時間以上で設定された基準時間が経過したときに行なわれる後に割り込み処理により前記ＩＮデータの同期データを取得する処理を実行するように構成したことを特徴とする請求項１に記載の産業用コントローラ。
【請求項３】
前記サイクルマスタが送信する同期データは、指令値となるＯＵＴデータを含み、
前記取得した同期データに基づく割り込み処理は、取得した前記ＩＮデータの同期データに基づき、前記指令値を算出するものであることを特徴とする請求項１または２に記載の産業用コントローラ。
【請求項４】
前記同期制御は、主軸の動作にあわせて１または複数の従軸の動作を制御するものであることを特徴とする請求項１から３のいずれか１項に記載の産業用コントローラ。
【請求項５】
前記サイクルマスタは、産業用コントローラ全体を統括制御するＣＰＵユニットであることを特徴とする請求項１から４のいずれか１項に記載の産業用コントローラ。
【請求項６】
前記サイクルマスタは、一斉同報による同期データとともに、同期停止命令を送る機能を持ち、
前記他のユニットは、同期停止命令を受信すると、同期制御を停止することを特徴とする請求項１から５のいずれか１項に記載の産業用コントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、産業用コントローラに関するものである。
【背景技術】
【０００２】
ＦＡ（Ｆａｃｔｏｒｙ  Ａｕｔｏｍａｔｉｏｎ）におけるネットワークシステムは、生産設備内の入力機器及び出力機器の制御を司る１または複数のＰＬＣ（Programmable Logic Controller）と、そのＰＬＣにより動作が制御される機器とが、制御系のネットワークに接続される。それらＰＬＣと機器は、その制御系のネットワークを介してサイクリックに通信を行なうことで、ＩＮデータ及びＯＵＴデータ（以下Ｉ／Ｏデータという）の送受を行ない、生産設備を制御する。
【０００３】
ＰＬＣは、制御プログラムに基づいて演算実行するＣＰＵユニット、センサやスイッチなどの入力機器を接続してそれらのオン・オフ信号を入力信号として取り込む入力ユニット、アクチュエータやリレーなどの出力機器を接続してそれらに対して出力信号を送り出す出力ユニット、ネットワークに接続された他の装置とデータの送受を行なう通信ユニット、マスタスレーブ通信をするためのマスタユニット、各ユニットに電源を供給する電源ユニット、などの複数のユニットを組み合わせることにより構成されている。これらのユニットは、システムバスにより電気的に接続され、そのシステムバスを介して所定のユニット間でデータの送受を行なう。
【０００４】
ＣＰＵユニットにおける制御は、入力ユニットで入力した信号をＣＰＵユニットのＩ／Ｏメモリに取り込み（ＩＮリフレッシュ）、予め登録されたユーザプログラム記述言語（例えばラダー言語）で組まれたユーザプログラムに基づき論理演算をし（演算実行）、その演算実行結果をＩ／Ｏメモリに書き込んで出力ユニットに送り出し（ＯＵＴリフレッシュ）、その後、いわゆる周辺処理を行うと言うことをサイクリックに繰り返し処理するようになる。
【０００５】
ＰＬＣを構成するユニットの中には、特殊な演算や制御を行う特殊ユニットがある。この特殊ユニットは、例えば、温度等のアナログ値を受け、ＰＩＤ制御を行う等の専用のプロセス制御（アナログ制御）のプログラムを実施する機能を持つプロセス制御ユニットや、モーション制御を行うモーションコントロールユニットなど、各種のものがある。このモーションコントロールユニットは複数のモータを駆動制御できるものであり、その用途は、複数のモータの駆動軸を３軸（いわゆるＸ軸、Ｙ軸、Ｚ軸）の方向（左右、前後、上下の３方向）とし、駆動系の対象物の位置決めを制御するような例がある。
【０００６】
この種の特殊ユニットは、通常、ユーザプログラムが実装され、ＣＰＵユニットにおけるサイクリックな制御とは別に、各特殊ユニットが、それぞれ独自にユーザプログラムの実行やＩ／Ｏリフレッシュや周辺処理等をサイクリックに行っている。ところで、各特殊ユニットが制御する機器の動作を同期制御したいという要求がある。すなわち、最近、メカ機構で構成されていた装置を、電子的な動作への置き換えが進んでいる。これは、メカ機構は、保守が煩雑であるばかりでなく、変更や微調整に難があるため、ソフト変更やデータによるチェックが容易な電子化へと進んでいるためである。たとえば、従来一本のシャフト（主軸）にギアやカムを用いて別の軸（従軸）を連係し、当該主軸のシャフトの動きに連動して各軸（従軸）を動かしていた機能の場合において、主軸のシャフトの動きに対する従軸の動作のタイミングを変更するには、カムの形状を変えたり、ギア比を変更したりする必要があるので煩雑である。そこで、主軸のシャフトや、各従軸に対し、それぞれ別々の駆動モータその他の駆動装置を連結し、その駆動装置の動作タイミングを調整することで、上記のメカ機構によるシャフト（主軸）と各軸（従軸）の連係動作を擬似的に再現するようにしている。このようにすると、主軸のシャフトの動きに対する従軸の動作のタイミングを変更する場合に簡単に対応できる。
【０００７】
係る同期制御を行うためには、シャフト（主軸）や各軸（従軸）の制御を行う特殊ユニットの同期を取る必要がある。係る同期をとる技術として、たとえば特許文献１に開示された発明がある。この特許文献１に開示された発明は、データを送受するためのシステムバスとは別に、同期信号を送るための同期専用バスでユニット間を結び、ＣＰＵユニットが同期専用バスを介して各特殊ユニットに対して同期信号を送り、各特殊ユニットは、前記同期専用バスを介して送られてくる同期信号を受信することを契機に、１サイクル分の演算実行を行なうものである。また、実際のＩＯデータ等の送受は、システムバスを介して伝送する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００５−２９３５６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上記の特許文献１の発明では、サイクルマスタモジュールと各モーションコントロールモジュールのサイクルを同期させることができる。しかし、システムバスとは別に同期専用バスを別途設ける必要があるので、高価となるばかりでなく、同期専用バスを有していない既存のハードウェア構成を利用することができないという課題もある。
【課題を解決するための手段】
【００１０】
上記の課題を解決するために、本発明は、（１）同期制御を行う複数のユニットから構成される産業用コントローラである。そして、前記複数のユニットのうちの１つのユニットが、同期の実行タイミングをあわせる制御をするサイクルマスタとした。そのサイクルマスタは、通常のサイクリックに行う処理とは別に、タイマ割り込みに従って同期制御を行う他のユニットに対してメッセージ送信やＩＯデータの送信に使用するシステムバスを用いて同期データを一斉同報で送信する処理と、前記他のユニットのＩＮデータの同期データを取得し、取得した同期データに基づく割り込み処理を実行後、次回の一斉同報のための準備処理を実行する機能を有する。前記同期制御を行う他のユニットは、前記サイクルマスタから一斉同報により前記同期データを受信したことを契機として同期サイクルを実行し、その同期サイクルの開始に伴い、前記送られてきた同期データを取得し、入出力処理を実行後、ＩＮデータの同期データのリフレッシュ処理を行い、その後に、受信した同期データに基づく演算処理を含むサイクリックに行う処理を実行し、次の一斉同報による前記同期データの受信を待つように構成した。サイクルマスタが実行する「他のユニットのＩＮデータの同期データを取得」は、実施形態における「同期データリフレッシュ処理」に対応する。産業用コントローラは、ＰＬＣその他のＦＡにおいて用いられる各種のコントローラ・制御装置である。
【００１１】
本発明では、同期専用バスを用いることなく、汎用のシリアルバスを使用し、簡易な手段で同期制御が可能となる。同期制御をする場合、ＣＰＵユニットが所定のタイミングで一斉同報（マルチキャスト）により同期データを送る。この一斉同報による同期データの送信が、従来の同期開始信号を兼用するようにしたので、係る同期データを受信した各ユニットは、同期サイクルを開始する。そして、各ユニットは、受け取った同期データに基づいてぞれぞれの処理を実行するので、同時性が確保できるとともに、各ユニット間でタイミングを合わせた同期制御が行える。このように、一斉同報による同期データの送信処理に基づいて各ユニットにおける同期サイクルを開始するようにしたので、従来のように同期サイクルをあわせるための同期信号（同期開始信号）を送信する必要がなく、同期専用バスが不要となり、データを送信する汎用のシステムバスを用いた通信で同期制御が実行される。さらに、各ユニットは、同期制御開始当初に入出力処理並びに同期データのリフレッシュ処理まで実行するので、そのリフレッシュ処理によりＩＮデータの同期データは、最新のデータに更新される。そして、その後に行われるサイクルマスタにおけるＩＮデータの同期データを取得する処理により、各ユニットが持つ最新の同期データ（ＩＮ）がサイクルマスタに収集される。この最新の同期データが、次回の一斉同報による同期データの送信に反映されるので、サイクルマスタ並びに各ユニットは、常に最新の同期データに基づいて各処理を実行することができる。
【００１２】
（２）前記同期制御を行う他のユニットは、前記同期データリフレッシュ処理までを、同期サイクル開始後予め設定された時間以内に完了するように動作し、前記サイクルマスタは、前記同期データを一斉同報で送信する処理後は、通常のサイクリックに行う処理を再開し、前記タイマ割り込みを受けてから、前記基準時間以上で設定された基準時間経過後に割り込み処理により前記ＩＮデータの同期データを取得する処理を実行するように構成するとよい。時間Ａは、実施形態では、同期サイクルタイムの１／４としたが、別の時間を設定してももちろん良い。本発明によれば、サイクルマスタが、一斉同報による同期データの送信後に行う「ＩＮデータの同期データを取得する処理」の開始タイミングを時間で制御するため、各ユニットからの完了通知を監視する必要がなく、その間、通常のサイクリックに行う処理を実行することができるので好ましい。
【００１３】
（３）前記サイクルマスタが送信する同期データは、指令値となるＯＵＴデータを含み、前記取得した同期データに基づく割り込み処理は、取得したＩＮデータの同期データに基づき、前記指令値を算出するものとすることができる。この発明では、サイクルマスタ側で各ユニットが実行する処理の指令値を算出し、各ユニットは受け取った指令値に基づき同期制御を行う。
【００１４】
（４）前記同期制御は、主軸の動作にあわせて１または複数の従軸の動作を制御するものとすることができる。この種の同期制御としては、たとえば、変速機能付きギアボックスに接続されたロールと同じ働きをする電子シャフトや、機械カムと同様な働きをする電子カムなどがある。
【００１５】
（５）前記サイクルマスタは、産業用コントローラ全体を統括制御するＣＰＵユニットとすることができる。なお、本発明では、サイクルマスタは、ＣＰＵユニット以外のユニットでももちろんよい。
【００１６】
（６）前記サイクルマスタは、一斉同報による同期データとともに、同期停止命令を送る機能を持ち、前記他のユニットは、同期停止命令を受信すると、同期制御を停止する機能を備えると良い。この同期停止命令は、同期制御をしているすべてのユニットに対して行っても良いし、一部のユニットに対して行っても良い。これにより、同期制御をしている所定のユニットに対し、起動後に、同期制御を解除し、非同期による制御を行わせることができ、システムの状況に応じて柔軟で適切な制御を行うことができる。
【発明の効果】
【００１７】
本発明は、従来からユニット間データを送受する際に用いられているバス（システムバス）を利用し、同期制御専用のバスを持たせることなく同期制御機能を実現することかできる。また、各ユニットの実行サイクル同時性が確保できるとともに、最新のデータに基づいて同期制御が行える。
【図面の簡単な説明】
【００１８】
【図１】本発明の好適な一実施形態を示す図である。
【図２】各ユニットの機能を説明する図である。
【図３】ＩＮデータからＯＵＴデータを出力するまでのフローを示す図である。
【図４】具体的なデータの流れを説明する図である。
【図５】同期停止機能を説明する図である。
【発明を実施するための形態】
【００１９】
図１に示すように、本実施形態のＰＬＣ１０は、複数のユニットを連結して構成されるビルディングブロックタイプである。図では、この複数のユニットは、少なくとも１つのＣＰＵユニット１１を有し、更に、特殊ユニットとしてのカウンタユニット１２と、位置制御ユニット１３と、を備える。また、ＰＬＣ１０は、入力ユニット１４や出力ユニット１５や、図示省略する電源ユニットや通信ユニットなどの通常のユニットも備えている。これらの各ユニットは、ユニットの側面に設けられたコネクタ同士を接続することで、電気的に接続される。この接続により、各ユニットは、システムバス１０ａにて接続され、ユニット間でのデータの送受が行なわれる。
【００２０】
特殊ユニットは、演算処理，ＩＯリフレッシュ，共通処理，周辺サービス等の一連の処理をサイクリックに実行する。入力ユニットや出力ユニットのように、接続されたＩＯ機器と、ＣＰＵユニットの間に入り、ＩＯデータの受け渡しのような単純な処理を行うのではなく、所定の演算処理をサイクリックに実行し、自ら接続された出力機器の動作を制御するなどの機能を備える。これらのことから、高機能ユニットなどと称されることもある。演算処理は、予め設定されたプログラムを実行するものでも良いし、ユーザプログラムを実行するものでもよい。
【００２１】
ＣＰＵユニット１１は、ＭＰＵ１１ａと、システムメモリ１１ｂと、ワークメモリ１１ｃと、ユーザメモリ１１ｄと、ＩＯメモリ１１ｅと、演算ＡＳＩＣ１１ｆと、バスインターンフェース１１ｇと、を備えている。ＭＰＵ１１ａは、ＣＰＵユニット用のマイクロプロセッサユニットであり、システムメモリ１１ｂに格納されているシステムプログラムを実行することによってＰＬＣ全体を統括制御する。また、ユーザメモリ１１ｄに格納されているユーザプログラムの一部を実行するように構成される場合もある。
【００２２】
システムメモリ１１ｂは、ＣＰＵユニット用のシステムプログラムを格納する不揮発性のメモリである。ワークメモリ１１ｃは、ＭＰＵ１１ａが動作する際にワークとして使用されるメモリであり、ＲＡＭ等で実現される。ユーザメモリ１１ｄは、ＰＬＣを動作させて外部機器を制御するためにユーザが作成するプログラム（ユーザプログラム）を格納するメモリである。ＩＯメモリ１１ｅは、入力ユニット１４を介して外部機器からの入手したデータを格納したり、ユーザプログラムの実行結果として出力ユニット１５を介して外部機器へ出力するデータを格納したりする。また、このＩＯメモリ１１ｅには、ＣＰＵユニット１１の動作を規定するパラメータなども格納する。これらのメモリは、機能に応じて別々のブロックとしてそれぞれ分けて描画したが、実機においては、複数のメモリを物理的に同じメモリの異なる番地に割り当てるようにしても良い。
【００２３】
演算ＡＩＳＣ１１ｆは、ユーザメモリ１１ｄに格納されているユーザプログラムを実行するためのＡＳＩＣである。また、バスインタフェース１１ｇは、システムバス１０ａとのインタフェースを司るものである。
【００２４】
また、カウンタユニット１２は、ＭＰＵ１２ａと、システムメモリ１２ｂと、ワークメモリ１２ｃと、カウンタ１２ｄと、を備えている。ＭＰＵ１２ａは、システムメモリ１２ｂに格納されているシステムプログラムを実行することによってカウンタユニット１２を制御する。システムメモリ１２ｂは、カウンタユニット用のシステムプログラムを格納する不揮発性のメモリである。ワークメモリ１２ｃは、ＭＰＵ１２ａが動作する際にワークとして使用されるメモリであり、ＲＡＭ等で実現される。カウンタ１２ｄは、外部機器（例えば、サーボモータ２の出力軸の回転に伴い所定角度ごとにパルスを出力するエンコーダ３）からのパルスをカウントする機能を備える。また、バスインタフェース１１ｇは、システムバス１０ａとのインタフェースを司るものである。
【００２５】
位置制御ユニット１３は、ＭＰＵ１３ａと、システムメモリ１３ｂと、ワークメモリ１３ｃと、ユーザメモリ１３ｄと、パルスジェネレータ１３ｅ、バスインターンフェース１３ｆと、を備えている。ＭＰＵ１３ａは、システムメモリ１３ｂに格納されているシステムプログラムを実行することによって位置制御ユニット１３を制御する。また、ユーザメモリ１３ｄに格納されているユーザプログラムの一部を実行するように構成される場合もある。システムメモリ１３ｂは、位置制御ユニット用のシステムプログラムを格納する不揮発性のメモリである。ワークメモリ１３ｃは、ＭＰＵ１３ａが動作する際にワークとして使用されるメモリであり、ＲＡＭ等で実現される。ユーザメモリ１３ｄは、位置制御ユニット１３を動作させて外部機器を制御するためにユーザが作成するプログラム（ユーザプログラム）を格納するメモリである。パルスジェネレータ１３ｅは、外部機器（例えば、サーボドライバ１）に対して操作出力信号を出力する機能を備える。また、バスインタフェース１３ｆは、システムバス１０ａとのインタフェースを司るものである。
【００２６】
なお、上記の各ユニットを構成するハードウェア構成自体は、従来のものと同様である。ここで本実施形態では、ＣＰＵユニット１１と、特殊ユニットであるカウンタユニット１２と位置制御ユニット１３とが、ユニット間同期制御を行うようにしている。そして、同期信号を、システムバス１０ａを用いて送るようにしている。この同期制御を行うに際し、同期信号を発するマスタとして機能するユニットが必要となり、本実施形態では、ＣＰＵユニットがそれを代行する。
【００２７】
図２に示すように、サイクルマスタとなるユニット（ここでは、ＣＰＵユニット１１）の動作として、サイクリックな通常サイクル処理とは別に動作する同期サイクルを用意した。通常サイクルでは、既存のＰＬＣのＣＰＵユニットと同様に、共通処理、サイクル実行タスク処理、周辺サービス処理、Ｉ／Ｏリフレッシュ処理などを繰り返し実行するものである。図２では、Ｉ／Ｏリフレッシュ処理の例として、「基本Ｉ／Ｏリフレッシュ」、「高機能Ｉ／Ｏサイクリックサービス」、「ＣＰＵ高機能サイクリックサービス」が示されている。「基本Ｉ／Ｏリフレッシュ」では基本Ｉ／Ｏユニットと呼ばれる入力ユニット１４や出力ユニット１５などとのデータ交換が行われる。「高機能Ｉ／Ｏサイクリックサービス」、「ＣＰＵ高機能サイクリックサービス」では、それぞれ高機能Ｉ／Ｏユニット、ＣＰＵ高機能ユニットと呼ばれる特殊ユニットとのデータ交換が行われる。この通常サイクルのＩ／Ｏリフレッシュ処理で行われる他ユニットとのデータ交換は非同期で実行される。ここで、非同期で実行されるという意味は、後述する同期ユニットの同期サイクルで実行されるサイクリックサービスとは連動していないと言う意味である。一方、同期対象のユニットである同期ユニット（カウンタユニット１２、位置制御ユニット１３）と同期データを同期させながらデータ交換する処理は同期サイクルにて行われる。
【００２８】
同期サイクルは、ＣＰＵユニット１１における同期割込みタスクの実行周期で定期的に実行される。同期サイクルの処理において、同期データの共有と更新（データリンク）を行う。また、そのタイミングで各同期ユニットの演算・入出力処理が実行される。これにより、同期ユニットとの間での同期データについてのＩ／Ｏリフレッシュが完了する。この同期サイクルの処理が実行されている期間は、通常サイクルの処理を中断する。同期割込みタスクの実行周期を同期サイクルタイムと呼び、この一定の周期（たとえば１ｍｓｅｃ）で行なわれる同期データの共有と各ユニットの処理の同期化により、同期サイクルタイムで最新のＩＯデータのＩ／Ｏリフレッシュが行われるので、ＣＰＵユニット１１と各同期ユニット１２，１３は、ばらつきのない一定周期の制御を実現することがでる。
【００２９】
本実施形態では、起動時に同期モードの設定がされて同期制御を行う同期ユニットは、ＣＰＵユニットから一斉同報による同期データを受信すると、それが、同期サイクルの開始タイミングであると認識し、同期サイクルを開始する制御を行う。
【００３０】
この同期サイクルで実行される具体的な処理は、まず、ＣＰＵユニット１１のＭＰＵ１１ａは、同期サイクルのためのＬｖ．１５タイマ割り込み（最優先処理）を受けると、現在実行中の通常サイクルの処理を中断するとともにＬｖ．５タイマを起動する。図２では、「ＣＰＵ高機能サイクリックサービス」が中断されているが、タイマ割り込みの発生タイミングにより、中断される処理はもちろん異なることがある。また、当該中断は、以下に説明する同期サイクルにおける実際の処理の実行中の期間のみであり、それ以外の期間は通常サイクルの処理を実行する。
【００３１】
Ｌｖ．１５タイマ割り込みを受けたＭＰＵ１１ａは、まず「同期処理」として、システムバス１０ａを利用して、各同期ユニット１２，１３に対して一斉同報でＣＰＵユニット１１のデータリンクに格納している最新のＩＯデータ（同期データ：各同期ユニットに対する指令値）を送信する。この一斉同報により送信する同期データは、すべての同期ユニットに対して一斉同報で送るので、各同期ユニットで必要とするデータのすべて（総和）であり、ある同期ユニットでは不要なデータもある。また、後述するように、本システムによる同期制御では、ＣＰＵユニットが同期データを各同期ユニットから同期制御周期中に収集し、後述する同期割り込みタスク処理後、次の同期制御周期時に各同期ユニットへ一斉同報で配信するので、各同期ユニットから見ると、今回の一斉同報送信では、前回の同期制御周期でＣＰＵユニットにより処理された情報が受け取れることになる。
【００３２】
この一斉同報による同期データを受けた同期ユニットは、そのタイミングで自己の同期制御サイクルをスタートさせる。すなわち、システムバス１０ａ上には一斉同報のフレームが流れるので、受信側の同期ユニットのバスインタフェース１２ｅ，１３ｆにて一斉同報のフレームであると解釈され、各インタフェースは、それぞれのＭＰＵ１２ａ，１３ａに対して、一斉同報受信の割込みを挙げる。同期ユニット１２，１３のＭＰＵ１２ａ，１３ａは、それを契機として同期ユニット側の同期サイクルを開始する。つまり一斉同報で送られてきた同期データを取得する。この取得した同期データは、事前に割り当てたワークメモリ１２ｃ内のメモリ領域に格納する。そして、その同期ユニットに接続された機器に対する出力並びに入力処理を実行する。本実施形態の場合、カウンタユニット１２は、入力処理でカウンタ１２ｄにてカウントしていた値をワークメモリ１２ｃに取り込む。また、位置制御ユニットの場合、パルスジェネレータ１３ｅを介してサーボドライバ１に対して次のサイクルでの指令値を送る。その後、それぞれのＭＰＵ１２ａ，１３ａは、同期データのリフレッシュ処理を実行する。この同期データは、ＣＰＵユニットとの間でデータリンク方式によりＣＰＵユニットに渡すようになっている。そこで、あらかじめ同期データのリフレッシュ処理において同期ユニット内に設定された、データリンクのための所定のメモリエリア（データリンクエリア）内の所定のアドレスに、送信すべき同期データ（フィードバック値（ＩＮデータ）等）を格納する。
【００３３】
各同期ユニット１２は、同期サイクルの１／４までに、この同期データリフレッシュ処理を完了するように動作する。この同期データリフレッシュ処理の後、演算処理や共通処理や周辺サービスやサイクリックサービスを行い、次の一斉同報による同期データの受信を待つ。なお、サイクリックサービスとしては、たとえば、上記の同期データリフレッシュで送受信した同期データ以外の一般のデータについて、ＣＰＵユニットとの間で行う非同期のデータ交換処理がある。この非同期のデータ交換処理は、従来技術と同じであり詳述は避けるが概略つぎのように構成することで実現できる。同期ユニット側にＣＰＵユニットとの共有メモリを備え、その共有メモリ上に同期ユニットからＣＰＵユニットへ渡したいデータを格納するエリア、および、ＣＰＵユニットから同期ユニットへ渡したいデータを格納するエリアを設ける。この共有メモリを同期ユニットは同期ユニットのサイクリックサービスにおいて読み書きし、ＣＰＵユニットはＣＰＵユニットの通常サイクルのＩ／Ｏリフレッシュ処理（図２の例では、同期ユニットは高機能Ｉ／Ｏユニットを想定しているため高機能サイクリックサービスが該当する）において読み書きすることでユニット間のデータ交換が可能となる。なお、同期ユニット側のサイクリックサービスの実行タイミングとＣＰＵユニット側のＩ／Ｏリフレッシュ処理の実行タイミングは同期していない。
【００３４】
一方、ＣＰＵユニット１１側では、「同期処理」を実行後は、中断を停止し、通常サイクルの実行を再開する。そして、ＣＰＵユニット１１は、同期サイクルのためのＬｖ．１５タイマ割り込みを発生させた後、同期サイクルタイム（たとえば１ｍｓｅｃ）の１／４  を経過したならば、ＬＶ．５タイマ割り込みを発生する。ＭＰＵ１１ａは、このタイマ割り込みを受け、実行中の通常サイクルの処理を再び中断し、同期サイクルの処理、つまり、「同期データリフレッシュ処理」，「同期割り込みタスク処理」，「同期準備処理」を実行する。「同期データリフレッシュ処理」は、データリンク方式により、同期ユニットが同期データリフレッシュ処理で同期ユニットのデータリンクエリア内に格納した同期データをCPUユニットが取得し、CPUユニットのデータリンクエリアに当該同期データを格納する処理である。また、「同期割り込みタスク処理」は、予め設定された同期割り込みプログラムを実行するものである。この同期割り込みプログラムは、同期データリフレッシュ処理で取得した同期データ（ＩＮデータ）に基づき、次の同期サイクルの同期処理で各同期ユニットに送信する同期データ（ＯＵＴデータ・指令値）を求めるプログラムである。「同期処理準備処理」は、次の同期サイクルの同期処理で各同期ユニットに送信する準備であり、前記プログラムを演算実行して算出した同期データを、データリンクエリアの対応する箇所に格納する処理である。この一連の処理を実行したならば、ＣＰＵユニットは、中断を停止し、通常サイクルを再開する。
【００３５】
本実施形態では、同期処理をした後、同期ユニットの同期データリフレッシュ処理完了通知を受け付けるのを待つのではなく、タイマによる時間で同期データリフレッシュを行うようにしたので、同期処理が完了後、通常サイクルの処理が実行できる。
【００３６】
次に、同期サイクル開始のためのＬｖ１５．タイマ割り込みを受けると、同期処理準備で格納した同期データを一斉同報により各同期ユニットに対して送信する。以下、上記の繰り返しを行うことで、各同期ユニットは、最新の同期データを使用して、同期制御サイクルのスタートと同時に同期制御を行うことが可能となる。よって、精度のよい同期制御が行える。そして、ＣＰＵユニットと各同期ユニットは、最新の同期データを共有し、動作できる。さらに、ＣＰＵユニットは、一斉同報のタイミングが毎サイクル、一定間隔でずれが発生しないように、割り込み禁止レベルの高い（本実施形態では、優先度最大）タイマ割り込み処理を使用することで、ずれを防止している。
【００３７】
このようにするとで、たとえば図３に示すように、同期ユニット（カウンタユニット１２）で取得したデータ（カウンタ値）は、その取得した同期サイクル中でＣＰＵユニット１にデータリンク方式による同期データリフレッシュ（ＩＮ）で転送され、次の同期サイクルの同期処理でそのカウンタ値に基づく指令値（ＯＵＴデータ）が、それぞれの同期ユニット（位置制御ユニット１３）に送られ、パルスが出力されることになる。
【００３８】
次に、図４に基づいて、上記の同期制御の動作を説明する。この例では、主軸の位置情報を元に複数の従軸が協調して動作する必要があるアプリケーションであり、主軸の位置を検出するカウンタユニット１２と、主軸並びに従軸を動作させる位置制御ユニット１３を備えている。ここでは、２つの従軸用の出力機器（サーボモータ等）が接続されている位置制御ユニット１３が２つある。なお、図示省略するが、ＰＬＣは、主軸を駆動するためのサーボモータを制御するユニットも備えている。この主軸用のユニットは、従軸用のユニットと同じでも良いし別のものでもよい。
【００３９】
まず、ある同期サイクルを実行し、主軸のサーボモータの位置等の主軸データをカウンタユニット１２が取得し、カウンタユニット１２内の同期データリフレッシュにより、カウンタユニットのデータリンクエリアに主軸データを格納する（図２，図４中“ａ”）。
【００４０】
この主軸データは、Ｌｖ．５タイマ割り込みによるＣＰＵユニットの同期データリフレッシュ（ＩＮ）処理により、ＣＰＵユニットのデータリンクエリアの所定位置に格納される（図２，図４中“ｂ”）。そして、格納した主軸データに基づいて、同期割り込みタスク処理として、各従軸用にプログラム（従軸１軸プログラム〜従軸４軸プログラム）を実行する（図２，図４中“ｃ”）。次いで、「同期処理準備」を実行し、プログラムの実行により求めた各従軸の指令値（従軸１データ〜従軸４データ）を、ＣＰＵユニットのデータリンクエリアの所定エリアに格納する（図２，図４中“ｄ”）。
【００４１】
そして、次のＬｖ．１５のタイマ割り込みに基づく同期処理により、上記の格納した各従軸データが同期データとして一斉同報で各位置制御ユニットに送られる（図２，図４中“e”）。各位置制御ユニットは、その同期データを受け取り、自己に関係する従軸データを予め決められた各位置制御ユニットのデータリンクエリアに格納する（図２，図４中“ｆ”）。このようにして、主軸の動作（最新のデータ）に基づいて、各従軸の制御が行える。
【００４２】
次に、図５に基づいて、同期ユニットの停止機能を説明する。本実施形態では、同期ユニットは、同期制御をする同期モードと、同期制御をしない非同期モードを切り替えることができる。この切り替えは、設定スイッチの切り替えや、設定ツール装置等を用いて内部メモリへの設定等により行え、起動時に、どのモードで動作するかが確定する。そして、起動時に同期モードの設定がされていると認識した場合は、一斉同報の割込みを受け付ける（同期データを受信する）と、それが同期サイクルの開始をするように動作する。そして、このように同期モードで動作している場合において、ユニット間同期制御を実行している全ての同期ユニット、あるいは任意の組合せの同期ユニットに対して、実行中の機能を停止する機能を備えている。具体的には、一斉同報により送信する同期データとともに、図５に示すような同期停止有無を通知するフラグを併せて送信する。このフラグは、全ての同期ユニットに対して停止指令を与える全同期ユニット停止と、あらかじめ設定した組合せのユニットに対して停止指令を与える同期グループ停止がある。そして、ＣＰＵユニットのデータリンクエリアの所定アドレスを、当該停止命令を通知するためのエリアとしている。図５では、１５ビットのエリアが確保され、当該エリアの１５ビット目は、全同期ユニット停止リレーとなり、このリレーをＯＮすることにより、全同期ユニットに対して実行中の動作を停止する指令が一斉に与えられる。また、当該エリアの００〜１４ビットは、同期グループ停止リレーとなっている。このリレーをＯＮすると、同期ユニット側の同期グループ停止選択パラメータで該当するビットが選択されている同期ユニットに対して、実行中の動作を停止する指令が与えられる。図では、“０２”ビットがＯＮになると、予め関連づけられている同期ユニット２，３の同期制御が停止される。この場合、同期ユニット１，４は、その後も同期制御を継続することになる。
【００４３】
このように、起動後であっても、ＣＰＵユニットからの通知により、一部または全部の同期ユニットに対する同期制御を停止することができる。もちろん、その後に該当するビットをＯＦＦにすることで、停止が解除され、再び同期制御が開始されることになる。
【符号の説明】
【００４４】
１０  ＰＬＣ
１１  ＣＰＵユニット
１２  カウンタユニット
１３  位置制御ユニット
【図１】
2010198600.tif 000003
【図２】
2010198600.tif 000004
【図３】
2010198600.tif 000005
【図４】
2010198600.tif 000006
【図５】
2010198600.tif 000007