(57)【特許請求の範囲】
【請求項１】
１つのマスタユニットと複数のスレーブユニットがシステムバスに接続されて構成されるプログラマブルコントローラであって、
前記スレーブユニットは、前記マスタユニットから送信された送信フレームを正常受信した場合にレスポンスを返信する機能を備え、
前記マスタユニットは、前記スレーブユニットからのレスポンスの受信を待つことなく、異なるスレーブユニット宛の複数の送信フレームを一括りとして複数回連続して送信する機能を備えたことを特徴とするプログラマブルコントローラ。
【請求項２】
前記マスタユニットは、前記レスポンスを受信した場合、前記複数回に満たなくても該当する送信フレームの送信を停止するようにしたことを特徴とする請求項１に記載のプログラマブルコントローラ。
【請求項３】
前記マスタユニットは、同一の送信フレームに対する前記レスポンスを複数回受信した場合、２回目以降は破棄することを特徴とする請求項２に記載のプログラマブルコントローラ。
【請求項４】
前記１つのマスタユニットと複数のスレーブユニットが一体化されたブロック体と、前記複数のスレーブが一体化された延長ブロック体とを備え、前記ブロック体と前記延長ブロック体とは延長ケーブルで接続され、
前記複数回連続して送信する回数は、前記ブロック体を構成するスレーブユニット宛の送信フレームよりも、前記延長ブロック体を構成するスレーブユニット宛の送信フレームの方が多く設定することを特徴とする請求項１から３のいずれかに記載のプログラマブルコントローラ。
【請求項５】
前記複数回連続して送信する回数は、前記一括りとした前記複数の送信フレームを全て同じにすることを特徴とする請求項１から３のいずれかに記載のプログラマブルコントローラ。
【請求項６】
前記複数回連続して送信する回数は、前記一括りとした前記複数の送信フレームで異なるようにしたことを特徴とする請求項１から３のいずれかに記載のプログラマブルコントローラ。
【請求項７】
マスタ−スレーブ通信におけるマスタ機能を備えたマスタ通信回路であって、
スレーブ通信回路宛の送信フレームを送信する送信制御部と、
前記スレーブ通信回路からのレスポンスを受信する受信制御部と、
前記受信制御部による前記レスポンスの受信を待つことなく、前記送信制御部に異なるスレーブ通信回路宛の複数の送信フレームを一括りとして複数回連続して送信させる通信コントローラ部とを備えたことを特徴とするマスタ通信回路。
【請求項８】
前記通信コントローラ部は、前記受信制御部が前記レスポンスを受信した場合、前記複数回に満たなくても該当する送信フレームの送信を停止するようにしたことを特徴とする請求項７に記載のマスタ通信回路。
【請求項９】
前記通信コントローラ部は、前記受信制御部が同一の送信フレームに対する前記レスポンスを複数回受信した場合、２回目以降は破棄することを特徴とする請求項８に記載のマスタ通信回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルコントローラおよびマスタ通信回路に関するもので、特に、システムバスを用いたユニット間の伝送方式の改良に関する。
【背景技術】
【０００２】
ＦＡ（Factory Automation）におけるネットワークシステムは、生産工場内に配備された産業ロボットその他の生産設備の入力機器及び出力機器の制御を司る１または複数のＰＬＣ（Programmable Logic Controller）と、そのＰＬＣにより動作が制御される機器とが、制御系のネットワークに接続される。
【０００３】
ＰＬＣは、ＣＰＵユニットや、Ｉ／Ｏユニットなどの各種のユニットを連結して構成される。Ｉ／Ｏユニットには、センサやスイッチなどの入力機器を接続してそれらのオン・オフ信号を入力信号として取り込む入力ユニットやアクチュエータやリレーなどの出力機器を接続してそれらに対して出力信号を送り出す出力ユニット等がある。ＣＰＵユニットのＭＰＵが出力ユニットのメモリに書き込んだ出力データに基づいて、出力ユニットが出力機器に対して出力信号を出力する。また、入力機器から入力された入力信号は、入力ユニット内のメモリに格納され、そのメモリに対してＣＰＵユニットのＭＰＵがアクセして入力データを取得する。このように、ＣＰＵユニットのＭＰＵが、各ユニットのメモリに対してアクセスしてデータの読み書きをしている。しかし、処理速度の高速化に伴い、ＭＰＵが、各ユニットのメモリにアクセスしてデータの読み書きをするのは困難となってきている。
【０００４】
そこで、本発明者は、ＰＬＣネットワークケーブルに接続されたノード間の通信技術を利用し、１つのＰＬＣを構成するユニット間でデータの送受を行うことを考えた。具体的には、ＣＰＵユニットがマスタで、その他のユニットがスレーブとしてマスタ−スレーブ通信によりデータの送受を行うようにした。また、この種の通信技術では、送信フレームが相手に正常受信された場合に相手先からＡＣＫフレームが返送される仕組みを取り、一定期間内にＡＣＫフレームが返送されてこない場合には、送信できなかったと判断して再送するようにしている。これにより、目的とするデータを相手に確実に送信できるようになる。この種の再送技術は、特許文献１などに開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−１８６８９２号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、一般のネットワーク接続されたノード間で行われる再送技術をそのままＰＬＣのユニット間のデータ通信に利用することはできない。すなわち、ＰＬＣを構成するユニット間のデータの送受は、高速で次々とデータを送りたいという要求がある。しかし、一旦当該データを格納した送信フレームを送り、相手からのＡＣＫフレームの返信の有無を確認し、不達の場合に再送し、送信完了の場合に次のデータを格納した送信フレームを送信すると、待ち時間が長くなり、通信技術を用いて高速にデータを送受する意義が無くなる。
【０００７】
さらに、データ通信をする場合にノイズの影響を考慮する必要がある。係るノイズによる送信エラーの回避のために、上記のように再送技術があるが、高速通信をすることで１つの送信フレームを送信するための時間が非常に短くなる。その結果、インパルスノイズのように非常に短時間に単発で発生するようなノイズは、一般的なネットワークケーブルを用いた通信の場合には、１の送信フレームのなかの何ビットかが消失するだけであったが、高速通信を図ると、送信フレーム全体が消失してしまうことになる。また、高速通信をするために、前後の送信フレームを詰めて送信した場合には、インパルスノイズといった短い短発のノイズであっても前後複数個分の送信フレームが損傷し通信エラーとなる恐れがある。
【０００８】
よって、ＰＬＣを構成するユニット間の通信を、確実かつ高速に行いたいという課題がある。
【課題を解決するための手段】
【０００９】
上記の課題を解決するために、本発明のプログラマブルコントローラは、（１）１つのマスタユニットと複数のスレーブユニットがシステムバスに接続されて構成されるプログラマブルコントローラであって、前記スレーブユニットは、前記マスタユニットから送信された送信フレームを正常受信した場合にレスポンスを返信する機能を備え、前記マスタユニットは、前記スレーブユニットからのレスポンスの受信を待つことなく、異なるスレーブユニット宛の複数の送信フレームを一括りとして複数回連続して送信する機能を備えるようにした。
【００１０】
本発明のマスタユニットは、異なるスレーブユニット宛の送信フレームを一括りとして複数回連続して送信する。すなわち、１回目の送信処理で、係る一括りの送信フレームを所定の順番で送信する。次いで、２回目の送信処理で、一括りの送信フレームを所定の順番で送信する。以後、設定された複数回分繰り返し送信処理をする。なお、１回目と２回目で送信する順番は、実施形態では、同じにしているが、本発明では必ずしも同じにする必要はない。但し、同じにした方が、処理（制御）が簡単に行えるので好ましい。スレーブユニットは、ＰＬＣを構成するユニットであるため、マスタユニットと非常に近く、送信フレームの伝搬時間も短い。また、各ユニットに対し、短時間で順次送信する必要があり、必然的に一括りの複数の送信フレームも、できるだけ送信間隔は短くしたいという要求がある。さらに、高速化の要請から、１つの送信フレームを送信するのに要する時間も短くなる。その結果、インパルスノイズのように比較的短い期間に発生するノイズであっても、１つの送信フレーム全体或いは複数の送信フレームがノイズの影響を受けて正常に送信できない事態を生じるおそれもある。しかし本発明では、上記のように、一括りの送信フレームの送信処理を複数回行うため、同一の送信フレームのみを連続して送信することがないので、仮にノイズにより前後に連続する複数の送信フレームが送信できなくても、同一の送信フレームが全てノイズにより送信できなくなることはない。よって、高速かつ確実に各送信フレームを所望のスレーブユニットに送ることができる。
【００１１】
（２）前記マスタユニットは、前記レスポンスを受信した場合、前記複数回に満たなくても該当する送信フレームの送信を停止するようにするとよい。設定されたレスポンスは、例えば、実施形態のＡＣＫフレームの送信や送信要求フレームに対するＩＮフレームの送信などがある。このようにすると、例えば、マスタユニットに近いスレーブユニットのようにレスポンスが早く戻ってくる場合、複数回の送信フレームを送る前に係るレスポンスが戻ってくる可能性がある。係る場合に、レスポンスを受信したならば、その送信フレームは正しく相手に届いているので、それ以降送るのは無駄である。そこで、レスポンスを受信後は、該当する送信フレームの送信を行わないので、必要な送信フレームのみ送信でき、システムの通信に関する負荷が軽減される。
【００１２】
（３）前記マスタユニットは、同一の送信フレームに対する前記レスポンスを複数回受信した場合、２回目以降は破棄するとよい。返送されてきたレスポンスは、所定の受信処理を実行し、メモリ等に格納される。同一の送信フレームに対するレスポンスを一度受信できれば、その送信フレームが相手に正しく伝達できたことが確認できるので、それ以降のレスポンスの受信処理は、無駄であり、メモリの不要な浪費になり好ましくない。そこで本発明では、係る２回目以降のレスポンスを破棄することで、無駄な処理を実行する野抑制できる。
【００１３】
（４）前記１つのマスタユニットと複数のスレーブユニットが一体化されたブロック体と、前記複数のスレーブが一体化された延長ブロック体とを備え、前記ブロック体と前記延長ブロック体とは延長ケーブルで接続され、前記複数回連続して送信する回数は、前記ブロック体を構成するスレーブユニット宛の送信フレームよりも、前記延長ブロック体を構成するスレーブユニット宛の送信フレームの方が多く設定することよい。延長ケーブルがあると、その前後でノイズの影響が異なる。つまり、マスタユニットからみて延長ケーブルよりも下流側のスレーブユニットに対する送信フレームの方が、上流側のスレーブユニットに対する送信フレームよりもノイズの影響を受けやすく、正常送信できない確率が高い。従って、係る下流側である延長ブロック体を構成するスレーブユニットへの連続送信回数を多く設定することで、確実に送信することができる。一方、ＣＰＵユニットと共に連結されたブロック体を構成するスレーブユニットの場合、１回或いは２回等の少ない回数で正常に伝達される可能性が高い。従って、連続送信する複数回の回数を少なくしても送信が可能であり、それに伴い正常に受信された後も同一フレームを送信し続けるといった無駄な処理の発生を抑制できる。
【００１４】
（５）前記複数回連続して送信する回数は、前記一括りとした前記複数の送信フレームを全て同じにするとよい。そのようにすると、送信回数の管理・制御が一括して行えるので好ましい。（６）また、前記複数回連続して送信する回数は、前記一括りとした前記複数の送信フレームで異なるようにしてもよい。係る構成にする、スレーブユニットごとに適切な送信回数をセットすることで、より確実に無駄なく送信処理を行うことができる。
【発明の効果】
【００１５】
本発明では、複数回連続して送信フレームを送信するようにしたので、ＰＬＣを構成するユニット間の通信を、確実かつ高速に行うことができる。
【図面の簡単な説明】
【００１６】
【図１】本発明に係るプログラマブルコントローラの好適な第１実施形態を示す図である。
【図２】連続送信を説明する図である。
【図３】連続送信を説明する図である。
【図４】第２実施形態を説明する図である。
【図５】変形例を説明する図である。
【図６】変形例を示す図である。
【発明を実施するための形態】
【００１７】
図１は、本発明のプログラマブルコントローラ（以下、「ＰＬＣ」）１０の第１実施形態を示している。このＰＬＣ１０は、各種の機能を実現するための複数のユニットを連結して構成される。この複数のユニットは、少なくとも１つのＣＰＵユニット２０を有する。更に、本実施形態のＰＬＣ１０は、Ｉ／Ｏユニット３０（入力ユニット、出力ユニット、入出力ユニットなど），高機能Ｉ／Ｏユニット４０（高機能入力ユニット、高機能出力ユニット、高機能入出力ユニットなど），エンドユニット５０を備えている。図示省略するが、ＰＬＣ１０を構成する各ユニットに対して電源供給を行うための電源ユニットも備えている。もちろん、ＰＬＣ１０を構成するユニットは、上記のものに限ることはなく、実行したい制御に応じて必要なものを適宜取捨選択して構成する。
【００１８】
これらの各ユニットは、ケースの側面にコネクタ１５を備える。各ユニットは、コネクタ１５同士を連結することで、電気的に接続される。すなわち、コネクタ１５には、高速シリアル通信線の一端が接続され、高速シリアル通信線の他端は、ユニットの内部回路（本実施形態ではＡＳＩＣ）に接続される。また、電源線も接続される。これにより、隣接するユニットのコネクタ１５同士を連結することで、電源ユニットからのユニットへの電源供給が行えるとともに、ユニット間でデータ通信が行える。
【００１９】
さらにＰＬＣ１０のユニット間の通信は、ＡＳＩＣを用いて行い、高速化を図っている。そして、本実施形態の高速シリアル通信線で構成されるシステムバスは、下り用システムバス１１と上り用システムバス１２の２系統で構成される。このように、各システムバス１１，１２を流れるフレームの方向を固定することで、通信時のフレームの衝突の発生確率を抑制し、より確実かつスムーズに伝送できるようにしている。
【００２０】
ＣＰＵユニット２０は、ＦＡネットワークを構成する各機器の動作を制御するもので、「共通処理」，「ＩＮリフレッシュ」（マスタがスレーブのデータを読み出す処理），「ユーザプログラムの演算実行」，「ＯＵＴリフレッシュ」（マスタからスレーブへデータを書き込む処理），「周辺サービス」をサイクリックに実行する。ＣＰＵユニット２０は、マスタとなり、システムバス１１，１２で接続された各ユニット（スレーブ）との間の通信を管理する。
【００２１】
ＣＰＵユニット２０は、ＭＰＵ２１と、ＥＥＰＲＯＭ２２と、ＲＡＭ２３と、ＡＳＩＣ２４と、通信回路２５と、を備えている。ＥＥＰＲＯＭ２２は、ＣＰＵユニット用のシステムプログラムや、ユーザプログラムや、ＩＮデータ・ＯＵＴデータ等のＩＯデータが格納される。ＭＰＵ２１は、ＣＰＵユニット用のマイクロプロセッサユニットであり、ＥＥＰＲＯＭ２２に格納されているシステムプログラムやユーザプログラムを実行することによってＰＬＣ全体を統括制御する。ＲＡＭ２３は、ＭＰＵ２１が動作する際にワークメモリとして使用されるメモリである。
【００２２】
ＡＩＳＣ２４は、ユーザプログラムの一部を実行する機能を有する。また、本発明との関係で言うと、ＡＳＩＣ２４は、他のユニットとの間でマスタ−スレーブ通信を行う機能を有する。すなわち、ＡＳＩＣ２４は、ＭＰＵ２１と通信するためのＭＰＵインタフェース部（図示省略）や、スレーブユニットとの間で送受するＩＯデータ等を格納する共有メモリ部２４ｃや、スレーブユニットとの間でマスタ−スレーブ通信を管理する通信コントローラ部２４ｄや、システムバス１１，１２に接続され、実際にデータの送受を行う送信制御部２４ａ並びに受信制御部２４ｂを備えている。上述したように、システムバス１１，１２の伝送方向を一方向に固定したため、送信制御部２４ａは下り用システムバス１１に接続し、受信制御部２４ｂは上り用システムバス１２に接続する。
通信回路２５は、フィールドネットワークに接続されたリモートＩ／Ｏ等の機器との間で通信する。
【００２３】
Ｉ／Ｏユニット３０や高機能Ｉ／Ｏユニット４０は、センサやスイッチなどの入力機器を接続してそれらのオン・オフ信号を入力信号として取り込む入力ユニットやアクチュエータやリレーなどの出力機器を接続してそれらに対して出力信号を送り出す出力ユニット等である。それらのユニット３０，４０は、スレーブユニットとなる。
【００２４】
Ｉ／Ｏユニット３０は、ＡＳＩＣ３１や、自己に接続される外部機器と入力信号や出力信号の送受をするためのインタフェース（図示省略）等を備える。ＡＳＩＣ３１は、システムバス１１，１２に対してデジチェーン接続されている。よって、ＡＳＩＣ３１は、下り用システムバス１１に接続される送信制御部３１ａ並びに受信制御部３１ｂ、上り用システムバス１２に接続される送信制御部３１ｃ並びに受信制御部３１ｄ、通信コントローラ部３１ｅ等を備える。ＡＳＩＣ３１の通信コントローラ部３１ｅは、下り用システムバス１１を伝送されてくるフレームを受信制御部３１ｂで受信すると、所定の処理を実行し、対となる送信制御部３１ａから下流側のスレーブユニットへ送信する。同様に通信コントローラ部３１ｅは、上り用システムバス１２を伝送されてくるフレームを受信制御部３１ｄで受信すると、所定の処理を実行し、対となる送信制御部３１ｃから上流側の隣のユニットへ送信する。もちろん、下り用システムバス１１で送られてきたフレームが自己宛のもので、その処理結果としてＣＰＵユニット２０にレスポンス／ＡＣＫを返す場合、係るレスポンスは、送信制御部３１ｃから上り用システムバス１２に送信する。
【００２５】
高機能Ｉ／Ｏユニット４０は、上記のＩ／Ｏユニット３０と同様にＡＳＩＣ４１、自己に接続される外部機器と入力信号や出力信号の送受をするためのインタフェース（図示省略）等に加え、ＭＰＵ４４を備える。このＭＰＵ４４が、より複雑な処理を実行することで、高機能Ｉ／Ｏユニット４０が、演算処理，ＩＯリフレッシュ，共通処理，周辺サービス等の一連の処理をサイクリックに実行する。つまり、高機能Ｉ／Ｏユニット４０は、自ら接続された出力機器の動作を制御するなどの機能を備え、特殊ユニットと称することもできる。演算処理は、予め設定されたプログラムを実行するものでも良いし、ユーザプログラムを実行するものでもよい。
【００２６】
また、高機能Ｉ／Ｏユニット４０のＡＳＩＣ４１は、システムバス１１，１２に対してデジチェーン接続されている。よって、ＡＳＩＣ４１は、下り用システムバス１１に接続される送信制御部４１ａ並びに受信制御部４１ｂ、上り用システムバス１２に接続される送信制御部４１ｃ並びに受信制御部４１ｄ、通信コントローラ部４１ｅ等を備える。また、高機能Ｉ／Ｏユニット４０はＭＰＵ４４を備えることから、ＡＳＩＣ４１にはＭＰＵインタフェース部を備える。さらに、本実施形態では、この高機能Ｉ／Ｏユニット４０がＣＰＵユニット２０から最も離れた最終のユニットであるため、その後にエンドユニット５０が装着される。そして、高機能Ｉ／Ｏユニット４０のＡＳＩＣ４１の送信制御部４１ａは、エンドユニット５０内の終端抵抗５１に接続される。
【００２７】
次に、本発明の要部となるマスタユニットからのフレーム送信機能について説明する。マスタユニットであるＣＰＵユニット２０のＡＳＩＣ２４は、各種のフレームを作成し、送信する。この送信するフレームは、例えば、ＯＵＴデータを送信するためのＯＵＴフレーム，スレーブに対してＩＮデータを要求する送信要求フレーム，スレーブに対してメッセージデータの送信要求をする送信要求フレーム，アプリケーションで発生した割り込み要因にともない送信する割り込みフレームなどがある。
【００２８】
これらの送信フレームは、例えばＭＰＵ２１が送信すべきデータをＡＳＩＣ２４の共有メモリ部２４ｃ内の送信テーブルに格納する。そして、ＡＳＩＣ２４の実行タイミングになると、通信コントローラ部２４ｄがそのデータを読み出すと共に、送信制御部２４ａに与え、ヘッダや訂正符号を付加して符号化し、パラレル／シリアル変換して下り用システムバス１１に送信する。また、送信フレームには、送信要求毎の各フレームにユニークなトランザクションＩＤが付加される。
【００２９】
一方、Ｉ／Ｏユニット３０や高機能Ｉ／Ｏユニット４０等のスレーブユニットは、受信制御部３１ｂ，４１ｂにて送信フレームを受信すると、シリアル／パラレル変換した後、復号化してフレームチェックを行う。チェックが正常と判定されると、自己宛の送信フレームの場合には、送信フレームで送られてきたデータに基づく所定の処理を実行する。
【００３０】
すなわち、スレーブユニットは、受信した送信フレームがＯＵＴフレームの場合、送られてきたＯＵＴデータに基づくＯＵＴリフレッシュを行うとともに、ＡＣＫフレームを作成し、送信制御部２４ｃからマスタユニットに向けて送信する。このＡＣＫフレームをＣＰＵユニット２０のＡＳＩＣ２４が受信制御部２４ｂを介して取得すると、マスタユニットは、先に送信したＯＵＴフレームがスレーブユニットに受信されたことを認識する。また、スレーブユニットは、受信した送信フレームがＩＮデータを要求する送信要求フレームの場合、最新のＩＮデータを格納したＩＮフレームを作成し、送信制御部３１ｃ，４１ｃからマスタユニットに向けて返送する。スレーブユニットは、受信した送信フレームがメッセージデータを要求する送信要求フレームの場合、受信時点でスレーブユニット内に送信可能なメッセージが存在するとそのメッセージを格納したメッセージフレームを作成し、送信制御部３１ｃ，４１ｃからマスタユニットに向けて返送する。さらに、スレーブユニットが受信した送信フレームが割り込みフレームの場合、スレーブユニットのＡＳＩＣは、割り込み要求に応じた処理を行うと共に、ＡＣＫフレームを作成し、送信制御部３１ｃ，４１ｃからマスタユニットに向けて送信する。このＡＣＫフレームには、受信した送信フレームに付加されていたトランザクションＩＤを付加する。これにより、ＣＰＵユニット２０は、トランザクションＩＤをキーにして、受信したＡＣＫフレームがどの送信要求についてのものかを認識できる。
【００３１】
また、デジチェーン接続されているため、スレーブユニットの受信制御部３１ｂ，４１ｂで受信した送信フレームは、通信コントローラ部３１ｅ，４１ｅに与えられ、最終的に、送信制御部３１ａ，４１ａにてパラレル−シリアル変換され、伝送路である下り用システムバス１１に出力される。
【００３２】
ここで本実施形態では、マスタユニットであるＣＰＵユニット２０のＡＳＩＣ２４は、共有メモリ部２４ｃ内の送信テーブルにセットされた一括りの複数の送信要求を、スレーブユニットからのＡＣＫフレームの受信を待つことなく所定の順番で繰り返し指定回数だけ連続して送信する。つまり、例えば、３つの送信要求があり、繰り返し送信回数が３回とすると、ＡＳＩＣ２４は、図２（ａ），図３に示すタイミングで送信処理を実行する。図２では、図示の便宜上、各送信要求の送信フレームを、数字のみ示している。また、各送信フレームは、前後に詰めた状態で次々と送るようにしている。これにより、システムバス上での高速送信が確保され、ＰＬＣ１０を構成する各ユニット間の高速通信が担保される。
【００３３】
まず、１回目の送信処理として、送信要求−１，送信要求−２，送信要求−３の順番で、各送信要求の送信フレームを作成するとともに送信する。そして、グループの最後の送信要求−３の送信フレームを送信したならば、２回目の送信処理に移行し、送信要求−１，送信要求−２，送信要求−３の順番で、各送信要求の送信フレームを作成するとともに送信する。その後、３回目の送信処理に移行し、送信要求−１から順番に送信する。そして、送信要求−３の送信フレームを送信すると、ＡＣＫチェック時間監視用のタイマをスタートさせる。もちろん、一般的に行われる送信の度にＡＣＫ監視タイマを起動するようにしてもよい。
【００３４】
ＡＳＩＣ２４は、ＡＣＫフレームを受信すると、それに含まれるトランザクションＩＤから受信したＡＣＫフレームがどの送信要求に対するものかを認識できる。この受信したＡＣＫフレームは、共有メモリ部２４ｃの所定のメモリエリアに格納される。そして、タイマでＡＣＫチェック時間が経過した時点で、ＡＣＫが必要となる全ての送信要求フレームに対するＡＣＫフレーム（或いはＩＮフレーム等のスレーブユニットからのレスポンス）が返送されてきた否かを判断し、送信要求グループに属する全ての送信フレームについての送達確認ができたならば、正常完了する。もちろん、送信フレームの種類によっては、送信のみしてスレーブユニットからのレスポンスを要求しないものもあり、そのような送信フレームについては、ＡＣＫフレームがあったとみなすか、監視対象から排除することで対応する。一方、送信フレームは正常に送信できなかったと判断した場合は、ＣＰＵユニット２０のＭＰＵ２１およびまたはＡＳＩＣ２４は、所定の処理を実行する。もちろん、一般的に行われる送信の度にＡＣＫ監視タイマを起動するようにした場合には、上記の正常に送信できたか否かの判断もその都度行えばよい。
【００３５】
このように、複数の送信フレームの送信を、順番に繰り返すことで、例えば図２（ｂ）に示すようにインパルスノイズが発生し、連続した複数の送信フレームが正常に送信できない事態が発生しても、複数回送信を繰り返すことで、確実に全ての送信フレームを送ることができる。すなわち、一般のネットワークケーブルで接続されたノード間の通信と相違し、ＰＬＣのシステムバス内でのデータ通信であり、しかも、従来よりも高速通信を行うようにしたため、例えば、１つの送信フレームを送信するのに要する時間は、数十ｎｓｅｃ〜数百ｎｓｅｃ程度となり、この時間は、通信速度が速くなるとさらに短くなる。一方、インパルスノイズは、数百ｎｓｅｃ以上の時間で発生している。従って、一般的なネットワーク通信でのインパルスノイズの影響は、１つの送信フレーム内の何ビットかの欠落ですむが、本実施形態のＰＬＣでは、送信フレーム全体がエラーとなる。しかも、前後に詰めて連続して送信フレームを送信することから、連続した複数の送信フレームがエラーとなる。そして、図２（ｂ）に示すように、１回目の送信要求−１から２回目の送信要求−１までの４つの送信フレームがエラーになった場合でも、送信要求−２と送信要求−３については、２回目の送信処理でスレーブユニットに送ることができ、また、送信要求−１については３回目の送信処理でスレーブユニットに送ることができる。
【００３６】
これに対し、同じ送信フレームを複数回送信する場合でも、同一の送信要求についての送信フレームを所定回数連続して送信し、次に別の送信要求についての送信フレームを所定回数連続して送信するような場合には、正しく送信できないおそれがある。３つの送信要求の送信フレームを、それぞれ３回ずつ送信した場合、図２（ｃ）に示すように、まず送信要求−１についての送信フレームを３回連続して送信した後、送信要求−２についての送信フレームについての送信処理に移行することになる。すると、上記の図２（ｂ）と同様に先頭から４つ分の送信フレームがノイズで送信できない場合、図２（ｃ）に示すように送信要求−２の２回目の送信から正常送信できるので、送信要求−１については送ることができなくなってしまうという弊害がある。
【００３７】
また、ノイズが無く、送信処理した全ての送信フレームが正しく送られた場合、図２（ａ）に示すように、本実施形態では、送信要求−１の送信開始から送信要求−２を送信するまでの最短時間Ｔ１は、送信フレーム１つ分の送信時間となり、この時間は、繰り返し送信する回数に関係なく一定となる。これに対し、図２（ｃ）に示すように同じ送信フレームを複数回送信する場合、送信要求−１の送信開始から送信要求−２を送信するまでの最短時間Ｔ２は、送信フレーム３つ分の送信時間となる。そして、この時間は、繰り返し送信する回数が多くなればなるほど長くなるという問題を生じる。ノイズに強くなるように、繰り返し送信する回数を長くした場合、その差はより顕著に表れる。
【００３８】
また、マスタユニットであるＣＰＵユニット２０は、送信フレームには、送信要求毎にユニークなトランザクションＩＤを付加する。そのため、ＣＰＵユニット２０は、２回目以降の連続送信時における同一の送信要求についての送信フレームには、初回と同じトランザクションＩＤを付加する。つまり、送信要求−１についての送信フレームは、３回繰り返し送信する場合、３つとも同じトランザクションＩＤとなる。
【００３９】
このため、図３に示すように、スレーブユニット（受信側）は、同じトランザクションＩＤのフレームを複数回受信することがあり、この場合、スレーブユニットは、以下のレスポンスを返送する。すなわち、ＯＵＴフレームを受信したスレーブユニットのＡＳＩＣは、その都度ＡＣＫフレームを返送する。これにより同一のスレーブからのＡＣＫフレームも連続ではなくバラバラにばらけて返送されるためＡＣＫもノイズに強くなる。なお、同一の送信フレームを連続して複数回送信した場合には、その送信フレームを受信したスレーブからのＡＣＫフレームも連続して送信されることになり、送信時と同様にノイズの影響を受けやすくなる。
【００４０】
また、スレーブユニットのＡＳＩＣは、２回目以降に受信したＯＵＴフレームにて送られてきたＯＵＴデータ（送信要求）については、それを用いたＯＵＴリフレッシュなどすることなくそのまま破棄する。これにより、スレーブユニットは、無駄な更新・書き換え処理を実行しないですむ。
【００４１】
ＩＮデータ用の送信要求フレームを受信したスレーブユニットのＡＳＩＣは、最新ＩＮデータでＩＮフレームを作成するとともに返送し、メッセージ用の送信要求フレームを受信したスレーブユニットのＡＳＩＣは、受信時点で送信可能なメッセージデータでメッセージフレームを返送する。割り込み要求フレームを受信したスレーブユニットのＡＳＩＣは、前回の割り込み要因に従って処理が行われているので、割り込み要因の更新は行わないが、正常受信を通知するためＡＣＫフレームは返送する。
【００４２】
図４は、本発明の第２実施形態の要部の機能を示している。上述した第１実施形態では、同じグループに属する送信要求を、予め定められた回数だけ繰り返し送信している。これにより、例えば１回目の送信処理で全ての送信フレームが目的のスレーブに伝達されたとしても、２回目、３回目の送信処理を実行することになる。この場合、２回目，３回目の送信処理は、本来は無駄な送信となり、通信トラフィックが混み他の送信要求の送信が遅れたり、各ユニットでの処理負荷も増すので好ましくない。さらに、説明の便宜上、送信要求が３つとしているが、スレーブの数が多く、１つのグループを構成する送信要求の数が増えたり、ノイズに強くなるように繰り返し送信する回数が増えると、その問題がより顕著に表れる。
【００４３】
そこで本実施形態では、連続送信の実行中に送達確認がとれ、正常完了したスレーブユニットが確認できた場合、その送達確認できた正常に送信された送信フレームは、送信回数が設定された所定回数に達していなくてもそれ以降は送信しないようにした。これにより、無駄な送信フレームの送信処理の発生が軽減され、効率よく迅速に送信できる。
【００４４】
具体的には、連続送信の実行中にＡＣＫフレームを受信した場合、対応する送信要求の送信フレームは送信しない（送信処理をスキップする）ようにする。対応する要求フレームは、ＡＣＫフレームに格納されたトランザクションＩＤから特定できる。スキップ処理は、例えば、送信テーブルに、送信要求と関連付けて送信完了フラグを設け、ＡＣＫフレームを受信した場合に当該送信完了フラグをＯＮにする。通信コントローラ部２４ｄは、送信処理対象の送信要求を特定するに際し、送信テーブルを先頭から順に読み出すが、このとき、送信完了フラグがＯＮになっている送信要求は読み出すことなく、対象を次の送信要求に移行することで実現できる。また、送信テーブルに格納される各送信要求に対し、送信残り回数を関連付けて記憶する。初期値は、設定された連続送信回数で、第１実施形態で説明した図２，図３の例では、「３」がセットされる。そして、１回送信するごとに、１ずつ減算し、「０」になったならば今回の連続送信は完了とし、ＡＣＫチェック待ちとするようにした場合、途中でＡＣＫフレームを受信したならば、当該残り回数を「０」に更新する。これにより、そのＡＣＫフレームを受信した後で、対応する送信要求が送信順番に来たとしても、残り回数が「０」になっているのでスキップし、その次の送信要求を送信対象にすることができる。
【００４５】
特に、送信テーブルに多数の送信要求がエントリしてあり、マスタユニットの近くに配置されたスレーブユニットは、送信フレーム・ＡＣＫフレームの通信に要する時間が短いので、連続送信の実行中に送達確認が正常完了する可能性が高くなる。
【００４６】
具体的な動作の一例を示すと、図４のようになる。ここでは、ノイズなど発生せず、全ての送信フレームがそれぞれのスレーブユニットに伝達されているものとする。また、「送信要求−１」は、ノード番号＃１のスレーブユニット宛のもの、「送信要求−２」は、ノード番号＃２のスレーブユニット宛のもの、「送信要求−３」は、ノード番号＃３のスレーブユニット宛のものとする。また、スレーブユニットは、マスタユニット側から昇順方式でノード番号が設定されている。これにより、ノード番号＃１がマスタユニットに最も近いスレーブユニットである。図１の例では、ＣＰＵユニット２０に隣接するＩ／Ｏユニット３０がノード番号＃１となり、次のＩ／Ｏユニット３０がノード番号＃２となり、高機能Ｉ／Ｏユニット４０がノード番号＃３となる。
【００４７】
また、本実施形態では、各ユニットのＡＳＩＣは、デジチェーン接続されているため、ノード番号＃２のスレーブユニット宛の送信フレームは、一旦ノード番号＃１のスレーブユニットのＡＳＩＣで受信された後、転送されてノード番号＃２のスレーブで受信される。よって、マスタユニット側（ＣＰＵユニット２０）から離れるほど（ノード番号が大きくなるほど）フレームが伝搬されるのに要する時間が長くなる。
【００４８】
係る前提において、１回目の送信処理で、送信要求−１の送信フレーム、送信要求−２の送信フレーム、送信要求−３の送信フレームに対し、その順番で順次送信する。すると、送信要求−１の送信フレームは、スレーブ＃１で正常受信され、ＡＣＫフレームが返送される。また、送信要求−２の送信フレームは、スレーブ＃１で転送されてスレーブ＃２で正常受信され、ＡＣＫフレームが返送される。このＡＣＫフレームは、一旦スレーブ＃１に取り込まれ、転送されることでマスタユニットに到達する。同様に、送信要求−３の送信フレームは、スレーブ＃１，スレーブ＃２を経てスレーブ＃３に至る。そして、正常受信されると、上記の逆の経路を経てＡＣＫフレームがマスタユニットに到達する。
【００４９】
図示するように、１回目の送信処理に基づくスレーブ＃１からのＡＣＫフレームが、２回目の送信処理における送信要求−１の送信フレームの送信前にマスタユニットに受信されているので（（１）参照）、送信要求−１について２回目以降の送信はスキップする。これに伴い、２回目の送信処理は、送信要求−２と送信要求−３の送信フレームについて実行する。
【００５０】
２回目の送信処理が完了後、３回目の送信処理に移行する前に、１回目の送信処理で送信した送信要求−２の送信フレームに対するスレーブ＃２からのＡＣＫフレームがマスタユニットで受信されている（（２）参照）。従って、この段階で送信要求−２も送信対象から外れ、３回目の送信処理では送信要求−３の送信フレームのみが送信される。
【００５１】
また、３回目の送信処理の終了後、ＡＣＫチェック時間のタイムアップする前に、１回目の送信処理で送信した送信要求−３の送信フレームに対するスレーブ＃３からのＡＣＫフレームがマスタユニットで受信されている（（３）参照））。これにより、スレーブ＃３からの送達確認が正常完了したと認識され、今回の送信処理は、全て正常に送達されたことになる。また、ＡＣＫチェック時間は、３回目の送信処理で送信される全ての送信フレームに対するＡＣＫフレームが返信されてくるのに十分な時間が設定される。
【００５２】
また、図から明らかなように、例えば、２回目の送信処理で送信要求−２を送信した後に１回目の送信処理に基づくＡＣＫフレームを受信しているので、その後に、その２回目の送信処理に基づくＡＣＫフレームがスレーブ＃２から返送されてくる。送信要求−３については、マスタユニットは、合計３回のＡＣＫフレームを受信することになる。
【００５３】
そこで、マスタユニットの受信制御部２４ｂは、ＡＣＫフレームを受信した後で連続送信のために同じＡＣＫフレームをさらに受信した場合、当該ＡＣＫフレームを受信破棄する。これにより、共有メモリ部２４ｃに格納されるＡＣＫフレームは、同一の送信フレームに対するものは１つとなるのでメモリ領域の無用な消費並びに格納処理を削減できる。同じＡＣＫフレームか否かはトランザクションＩＤが同一であるか否かで判断する。
【００５４】
上記の例では、ＡＣＫフレームについて説明したが、ＩＮフレーム等を受信した場合でもスレーブユニット側で正常に受信したと判断できるので、上記と同様の送信制御を行う。
【００５５】
また、上述した実施形態では、送信テーブルに格納された同じグループに属する送信要求の送信フレームの送信回数は同じに設定したが、適宜異ならせても良い。この場合、送信要求ごとに残り送信回数にセットする初期値としての送信回数を関連付けて登録し、１回送信するごとにその残り送信回数の値を１つずつ減算し０になったならばその送信要求についてスキップし、全ての送信要求に関連付けられた残り送信回数が０になったならば、ＡＣＫチェック時間のタイムアップを待つようにすることで実現できる。また、送信テーブルを複数設けることもできる。その場合に、連続送信回数ごとにグループ分けすると、送信回数を送信要求ごとに設定・管理する必要がないので、制御が簡単になる。
【００５６】
連続送信回数は、ユニットのノイズ環境によりユニット毎に異なる設定とするとよい。例えば、図５に示すように、複数のユニットを連結して構成されるブロック体の最終段に
延長ユニット６０を取り付け、その延長ユニット６０同士を延長ケーブル１４により接続することで、複数のブロックからＰＬＣが構成されることがある。この場合、延長ケーブル１４以降のスレーブユニットへの送信フレームは、ノイズの影響により通信エラーになる確率が高いので、連続回数を大きい値にし、ＣＰＵユニット２０を含むブロック体に連結されたスレーブユニットは、ＣＰＵユニット２０との間に延長ケーブルが介在しないためにノイズの発生も少ないので連続回数を小さくし、無駄な送信の発生を削減すると良い。
【００５７】
また、全てのスレーブユニットに対して２以上の連続回数にする必要はなく、例えば、ＣＰＵユニット２０に近いスレーブユニットに対しては、連続回数を１，すなわち、１回のみ送信し、繰り返し送信をしないようにしてもよい。
【００５８】
さらにまた、上述した各実施形態では、ユニットの側面同士をコネクタで接続するタイプのものとしたが、本発明はこれに限ることはなく、例えば、各スレーブユニットをベースユニットに設けたスロットに装着するものでも良い。
【００５９】
また、上述した各実施形態では、ＣＰＵユニット２０（マスタ）とＩ／Ｏユニット３０，高機能Ｉ／ＰＯユニット４０（スレーブ）とは、デジチェーン接続しているが、本発明は必ずしも係る接続形態を採る必要はなく、他の各種の通信方式をとれる。
【００６０】
また、上記のマスタからスレーブに対してフレームを送信する際に、複数回連続して送信する技術は、たとえば図６に示すようなネットワークに接続されるリモートＩ／Ｏターミナル７０等にも適用できる。すなわち、ネットワーク全体を見ると、ＰＬＣ１０がマスタとなり、フィールドネットワーク８０に接続された各機器がスレーブとなって、ＰＬＣ１０と機器との間で、ネットワークでのマスタ−スレーブ通信をしてデータの送受を行う。この機器には、単独の機器もあれば、Ｉ／Ｏターミナル（ターミナルＩ／Ｏ，ターミナル装置などと称されることもある）のように、そのＩ／Ｏターミナルにさらに複数のＩ／Ｏ機器が接続されるものもある。そして、このＩ／Ｏターミナルの一つの形態として、図６に示すようにビルディングブロック型のリモートＩ／Ｏターミナル７０がある。
【００６１】
このリモートＩ／Ｏターミナル７０は、通信ユニット７１と、１または複数のＩ／Ｏユニット７２（スライスＩ／Ｏユニット）とを連結して構成され、それら連結されたユニット７１，７２は、内部バス（システムバス）７３で電気的に接続され、データの送受ができる。Ｉ／Ｏユニットは、適宜増減できるので、システム構成に応じて変更調整できる。この内部バス７３は、上述した実施形態のシステムバスと同様に、複数系統で構成しても良い。
【００６２】
また、リモートＩ／Ｏターミナル７０は、ＰＬＣ１０と同様に、最終段にはエンドユニットが連結されて終端され、また、最終段に接続ユニットを連結するとともに、接続ケーブルで他のリモートＩ／Ｏターミナルを接続することもできる。
【００６３】
通信ユニット７１は、フィールドネットワーク８０を介してＰＬＣ１０のＣＰＵユニット２０の通信回路２５に接続される。通信ユニット７１は、フィールドネットワーク８０に接続されたＰＬＣ１０等の装置と通信する機能と、自己に連結されたＩ／Ｏユニット７２と通信する機能を有する。Ｉ／Ｏユニット７２のデータは、一旦通信ユニット７１に収集され、一括でマスタであるＰＬＣ１０（ＣＰＵユニット２０）とデータ交換する。
【００６４】
通信ユニット７１とＩ／Ｏユニット７２との間は、通信ユニット７１がマスタとなり、Ｉ／Ｏユニット７２がスレーブとなり、マスタ−スレーブ通信を行う。そして、通信ユニット７１は、Ｉ／Ｏユニット７２との間で内部バス７３経由で通信する際に、上述したＣＰＵユニット２０と同様に、一括りの送信フレームを複数回連続して送信する技術を実装すると良い。
【符号の説明】
【００６５】
１０  ＰＬＣ
１１  下り用システムバス
１２  上り用システムバス
１４  延長ケーブル
２０  ＣＰＵユニット
２１  ＭＰＵ
２４  ＡＳＩＣ
３０  Ｉ／Ｏユニット
３１  ＡＳＩＣ
４０  高機能Ｉ／Ｏユニット
４１  ＡＳＩＣ
４４  ＭＰＵ
６０  延長ユニット
７０  リモートＩ／Ｏターミナル
７１  通信ユニット
７２  Ｉ／Ｏユニット
【図１】
0005408445.tif 000002
【図２】
0005408445.tif 000003
【図３】
0005408445.tif 000004
【図４】
0005408445.tif 000005
【図５】
0005408445.tif 000006
【図６】
0005408445.tif 000007