(57)【特許請求の範囲】
【請求項１】
内部バスで接続された、要求コマンドを送信する要求側モジュールと前記要求コマンドで指定された処理を実行する応答側モジュールとを有し、前記要求側モジュールは、送信した要求コマンドに対する応答コマンドを前記応答側モジュールから受信したときに、他の処理を実行可能な状態に移行するようになっているプログラマブルコントローラのモジュール間のメッセージ通信方式であって、
前記要求コマンドを受信した応答側モジュールは、前記要求コマンドが、複数領域データの読み出し要求であるときには、前記要求コマンドを受信したことを表す承認応答を前記要求側モジュールに返送した後、前記要求コマンドに対する処理を行って前記要求コマンドに対する応答コマンドを前記要求側モジュールに送信し、
前記要求コマンドを送信した要求側モジュールは、前記要求コマンドに対する承認応答を受信したとき他の処理を実行可能な状態に移行し、前記応答コマンドを受信したときに当該応答を受信したことを表す承認応答を返送するようになっていることを特徴とするモジュール間のメッセージ通信方式。
【請求項２】
前記要求コマンドを受信した応答側モジュールは、要求される複数領域データのうち、正常データを得ることができなかったデータが存在する場合には、正常データを得ることができたデータのみを前記応答コマンドに付加するようになっていることを特徴とする請求項１記載のモジュール間のメッセージ通信方式。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、プログラマブルコントローラを構成するＣＰＵモジュールと通信モジュールとの間のメッセージ通信方式に関する。
【０００２】
【従来の技術】
一般に、ＣＰＵモジュールと通信モジュールとの間のやりとりをメッセージ通信によって行うようにしたプログラマブルコントローラにおいては、例えば図５に示すように、要求コマンド（要求フレームＦ５１）の発行元である通信モジュールＭ１においては、この要求コマンドＦ５１に対する応答コマンド（応答フレームＦ６１）を受信してから、次の要求コマンドを発行するための要求コマンド処理を行うようにしている。
【０００３】
また、受信した要求コマンドで要求されている処理を行うことができない場合、例えば、要求コマンドで複数領域のデータの読み出しを要求され、要求された複数領域のデータ全ての読み出しを行うことができない場合には、要求コマンドに対する処理ができなかったと判定し、異常応答として応答コマンドを生成し、これを要求コマンドの送信元モジュールに返送するようにしている。
【０００４】
【発明が解決しようとする課題】
しかしながら、上述のように、要求コマンドの送信元のモジュールにおいて、要求コマンドに対する応答コマンドを受信した時点で他の処理に移行するような場合、例えば、ネットワークとの通信処理を行う通信モジュールＭ１から、図示しない各種入出力装置を管理するＣＰＵモジュールＭ２に対して、複数領域のデータの読み出し要求を行う要求コマンドを送信した場合、ＣＰＵモジュールＭ２では、要求コマンドをうけて指定された複数領域のデータの読み出しを行い、これをもとに応答コマンドを生成しこれを返送することになる。このとき、指定されたデータの領域数が多い場合には、その分ＣＰＵモジュールＭ２での処理時間がかかることになる。
【０００５】
この間、ＣＰＵモジュールＭ２からは応答コマンドが送信されないため、要求コマンドを送信した通信モジュールＭ１では、要求コマンドに対する応答コマンドの受信待ち状態となり、通信モジュールＭ１では、この間は他の処理を行うことができないという問題がある。
また、ＣＰＵモジュールＭ２において、データの読み出し処理時に、何らかの異常が発生した等によって全てのデータを得ることができない場合には、要求コマンドに対する応答コマンドを得ることができなかったとして、図６に示すように、応答コマンド（応答フレームＦ６２）にリードデータを付加せずに、トータルサイズは零として送信するようにしている。
【０００６】
つまり、リード指定された複数領域のデータのうちその一部のみが異常であり、正常にリードすることができたものについても、リードデータを通信モジュールＭ１に送信しないようにしている。このため、リード要求を行った図示しない上位装置においては、リード処理において正常に獲得することができなかったデータだけでなく、正常に獲得することができたデータについてもリフレッシュを行うことができないという問題がある。
【０００７】
そこで、この発明は、上記従来の未解決の問題点に着目してなされたものであり、要求コマンドの送信元のモジュールにおける待ち時間を削減すると共に、的確にデータのリフレッシュを行うことの可能なモジュール間のメッセージ通信方式を提供することを目的としている。
【０００８】
【課題を解決するための手段】
上記目的を達成するために、本発明の請求項１に係るモジュール間のメッセージ通信方式は、内部バスで接続された、要求コマンドを送信する要求側モジュールと前記要求コマンドで指定された処理を実行する応答側モジュールとを有し、前記要求側モジュールは、送信した要求コマンドに対する応答コマンドを前記応答側モジュールから受信したときに、他の処理を実行可能な状態に移行するようになっているプログラマブルコントローラのモジュール間のメッセージ通信方式であって、前記要求コマンドを受信した応答側モジュールは、前記要求コマンドが、複数領域データの読み出し要求であるときには、前記要求コマンドを受信したことを表す承認応答を前記要求側モジュールに返送した後、前記要求コマンドに対する処理を行って前記要求コマンドに対する応答コマンドを前記要求側モジュールに送信し、前記要求コマンドを送信した要求側モジュールは、前記要求コマンドに対する承認応答を受信したとき他の処理を実行可能な状態に移行し、前記応答コマンドを受信したときに当該応答を受信したことを表す承認応答を返送するようになっていることを特徴としている。
【０００９】
なお、ここでいう複数領域データは、複数の異なる領域に格納されたデータのことをいう。
また、請求項２に係るモジュール間のメッセージ通信方式は、前記要求コマンドを受信した応答側モジュールは、要求される複数領域データのうち、正常データを得ることができなかったデータが存在する場合には、正常データを得ることができたデータのみを前記応答コマンドに付加するようになっていることを特徴としている。
【００１１】
【発明の実施の形態】
以下に、本発明の実施の形態を説明する。
図１は、本発明におけるモジュール間のメッセージ通信方式を適用したプログラマブルコントローラの一例を示す構成図であって、プログラマブルコントローラ（ＰＬＣ）１０は、ネットワークシステムを構成する図示しない各種制御装置或いは制御用パソコン等の上位装置と通信回線Ｌを介して接続されている。
【００１２】
前記プログラマブルコントローラ１０は、通信回線Ｌを介して他の機器との通信を行う通信モジュールＭ１と、上位装置から通知される、図示しない各種入出力装置への出力情報を中継すると共に、各種入出力装置からの入力情報に対し、これを所定のフォーマットに変換したり、或いは前記入力情報に基づいて所定の演算処理を行う等の処理を行ってその結果を所定の記憶領域に記憶するＣＰＵモジュールＭ２と、を少なくとも備えており、これらモジュールは内部バス２０によって接続されている。
【００１３】
前記通信モジュールＭ１は、図２に示すように、通信回線Ｌを介して他の装置から自己のプログラマブルコントローラ宛に送信されたコマンドフレームを受信し、これに基づき所定フォーマットの要求フレームＦ１を生成する。そして、この生成した要求フレームＦ１を、前記内部バス２０を介して前記ＣＰＵモジュールＭ２に送信して要求フレームＦ１に対する応答フレームＦ２の受信待ち状態となり、前記応答フレームＦ２を受信したとき、他の処理を実行可能な状態に移行する。また、上位装置から、ＣＰＵモジュールＭ２で記憶する複数の異なる領域に格納された複数領域データの送信指示が行われた場合には、図３に示すように、要求フレームＦ１１を生成し、これを前記ＣＰＵモジュールＭ２に送信後、前記ＣＰＵモジュールＭ２から要求フレームＦ１１に対するＡＣＫフレームＦ２１の受信待ち状態となり、前記ＡＣＫフレームＦ２１を受信したとき、他の処理を実行可能な状態に移行する。そして、ＡＣＫフレームＦ２１に付加された通信状態が正常であれば、他の処理を実行し、通信状態が異常であれば再度要求フレームを送信する等の処理を行う。
【００１４】
その後、前記ＣＰＵモジュールＭ２から要求フレームＦ１１に対する応答フレームＦ２２を受信したときには、前記ＣＰＵモジュールＭ２から応答フレームＦ２２を受信したことを表すＡＣＫフレーム（承認応答）Ｆ１２をＣＰＵモジュールＭ２に送信する。このＡＣＫフレーム１２には、例えば応答フレームＦ２２を正常に受信したか否かを表す情報を付加する。そして、ＣＰＵモジュールＭ１から受信した応答フレームＦ２２を、所定のフォーマットに変換して通信回線Ｌを介して要求元の装置宛に送信する。
【００１５】
一方、前記ＣＰＵモジュールＭ２は、図２に示すように、前記通信モジュールＭ１から要求フレームＦ１を受信したときには、この要求フレームＦ１で指示された処理を行って応答フレームＦ２を生成し、これを通信モジュールＭ１に送信する。また、前記要求フレームＦ１で、ＣＰＵモジュールＭ２で記憶する複数領域データの送信指示が行われた場合には、図３に示すように、要求フレームＦ１１を受信したことを通知するためのＡＣＫフレーム（承認応答）Ｆ２１を通信モジュールＭ１に送信する。前記ＡＣＫフレームＦ２１には、例えば、要求フレームＦ１１を正常に受信したか否かを表す情報を付加して送信する。
【００１６】
そして、ＣＰＵモジュールＭ２は、前記ＡＣＫフレームＦ２１を送信した後、前記要求フレームＦ１１で指示された処理を行い、これに応じた応答フレームＦ２２を生成し、通信モジュールＭ１に送信する。そして、応答フレームＦ２２に対する通信モジュールＭ１からのＡＣＫフレームＦ１２の受信待ち状態となる。このとき、例えば、ＣＰＵモジュール２において所定の記憶領域に格納されている指定された複数領域データを読み出すことができない場合、或いは何らかの異常によって、指定された複数領域データを全て獲得することができなかった場合には、獲得することができたデータのみ前記応答フレームＦ２２に付加し、獲得できなったものについては、獲得できなかったデータに該当する後述のリードサイズ２１４ｂを“０”に設定する。
【００１７】
そして、ＣＰＵモジュールＭ２は、応答フレームＦ２２に対する応答として通信モジュールＭ１からＡＣＫフレームＦ１２を受信したとき、他の処理を実行可能な状態に移行し、前記ＡＣＫフレームＦ１２で通信状況が正常として設定されている場合には他の処理を実行し、通信状況として異常が設定されている場合には、再度応答フレームを送信する等の処理を行う。
【００１８】
前記ＣＰＵモジュールＭ２で記憶する複数領域データの読み出し要求を行うための要求フレームＦ１１は、例えば図３に示すように構成されている。つまり、読み出すデータ数と読み出し要求であることを指示する情報（図３では、Ｎ個リード要求）１１１と、フレームのトータルサイズ１１２と、読み出し領域を指定するリードアドレス１１３ａ及び読み出しサイズを指定するリードサイズ１１３ｂとを含んで構成され、リードアドレス１１３ａ及びリードサイズ１１３ｂは、前記Ｎ個リード要求１１１において指定された個数Ｎ個分付加されている。
【００１９】
また、要求フレームが複数領域データの読み出しを要求する要求フレームＦ１１であるときの、前記ＣＰＵモジュールＭ２からのＡＣＫフレームＦ２１は、例えば図３に示すように構成されている。つまり、Ｎ個リード要求に対する応答であることを表す情報（図３の場合、Ｎ個リード要求）２２１、要求フレームＦ１１を正常に受信することができたか否かを表す状態情報２２２とから構成されている。
【００２０】
また、要求フレームが複数領域データの読み出しを要求する要求フレームＦ１１であるときの、これに対する前記ＣＰＵモジュールＭ２からの応答フレームＦ２２は、例えば図３のＦ２２に示すように、Ｎ個リード要求に対する応答であることを表す情報（図３の場合Ｎ個リード応答）２１１、要求フレームＦ１１で指定された全てのデータを正常に読み出すことができたか否かを表すデータの獲得情報２１２、トータルサイズ２１３、リードアドレス２１４ａ及びリードサイズ２１４ｂ及びリードデータ２１４ｃとから構成され、前記リードアドレス２１４ａ及びリードサイズ２１４ｂ及びリードデータ２１４ｃは、前記Ｎ個リード要求１１１において指定されたＮ個分付加されている。
【００２１】
また、要求フレームが複数領域データの読み出しを要求する要求フレームＦ１１であるときの、前記通信モジュールＭ１からＣＰＵモジュールＭ２へのＡＣＫフレーム１２は、例えば図３に示すように構成されている。つまり、Ｎ個リード応答に対する応答であることを表す情報（図３の場合、Ｎ個リード応答）１２１、応答フレームＦ１２を正常に受信することができたか否かを表す状態情報１２２とから構成されている。
【００２２】
次に、上記実施の形態の動作を説明する。
今、通信回線Ｌを介して接続された図示しない上位装置から、プログラマブルコントローラ１０宛の処理要求のコマンドフレームが送信されると、プログラマブルコントローラ１０の通信モジュールＭ１では、自己宛のコマンドフレームであることからこれを取り込む。そして、処理要求が、プログラマブルコントローラ１０で記憶している複数領域データのリード要求でないとき、例えば、連続した単一領域のリード要求である場合には、通信モジュールＭ１では、図２に示すように、従来と同様の手順にしたがって、要求フレームＦ１を作成してこれを送信し、このとき、複数領域データのリード要求ではないから、要求フレームＦ１に対する応答フレームＦ２を待つ待ち状態に移行する。一方、ＣＰＵモジュールＭ２では、要求フレームＦ１を受信すると、複数領域データのリード要求ではないから、要求フレームＦ１で指定された処理を行い、これに対する応答フレームＦ２を生成して、通信モジュールＭ１に送信する。通信モジュールＭ１では、応答フレームＦ２を受信したことから、待ち状態が解除され、他の処理を実行可能な状態に移行する。
【００２３】
一方、上位装置から、プログラマブルコントローラ１０宛に、プログラマブルコントローラ１０で記憶している複数領域データをリードするよう指示するコマンドフレームが送信されると、プログラマブルコントローラ１０の通信モジュールＭ１においては、これを取り込み、図３のＦ１１に示す構成の要求フレームを生成する。つまり、Ｎ個のリード要求であるという情報１１１、トータルサイズ１１２、各読み出しデータ毎のリードアドレス１１３ａ、リードサイズ１１３ｂを指定する情報とから、要求フレームＦ１１を生成し、これをＣＰＵモジュールＭ２宛に送信する。そして、通信モジュールＭ１は、ＣＰＵモジュールＭ２からＡＣＫフレームＦ２１の受信待ち状態となる。
【００２４】
一方、ＣＰＵモジュールＭ２では、要求フレームＦ１１を受信したことから、まず、要求フレームＦ１１を正常に受信することができたかどうかを判定し、その受信状況を付加してＡＣＫフレームＦ２１を通信モジュールＭ１に送信する。そして、要求フレームＦ１１の指示にしたがって、リードアドレス１１３ａ及びリードサイズ１１３ｂで指定された領域から、指定されたＮ個のデータの読み出しを行い、指定されたデータを正常に得ることができた場合には、図３のＦ２２に示すように、指定された領域から読み出したデータをリードサイズ２１４ｂの後に付加する。そして、要求フレームＦ１１で指定されたデータを全て正常に得ることができた場合には、データの獲得情報２１２を“正常”として設定し、この応答フレームＦ２２を通信モジュールＭ１に送信する。そして、通信モジュールＭ１からＡＣＫフレームＦ１２の受信待ち状態となる。
【００２５】
前記通信モジュールＭ１では、前記要求フレームＦ１１を送信した後、これに対する応答としてＡＣＫフレームＦ２１を受信すると、その状態情報２２２を参照し、正常であれば、他の処理を実行可能な状態に移行し、異常であるならば、再度要求フレームＦ１１を送信する等の処理を行う。
そして、ＣＰＵモジュールＭ２から応答フレームＦ２２を受信すると、そのデータの獲得情報２１２を参照し、図３の場合、正常にデータが獲得されていると設定されているから、この応答フレームＦ２２を所定フォーマットに変換し、通信回線Ｌを介して、複数領域データの読み出し要求のコマンドフレームに対する応答として、要求元の上位装置宛に送信する。
【００２６】
上位装置では、複数領域データの読み出し要求のコマンドフレームに対する応答のコマンドフレームを受信すると、データの獲得情報が正常と設定されていることから、全てのデータを正常に獲得できたと認識し、読み出したデータに基づいて所定の処理を実行する。
一方、ＣＰＵモジュールＭ２において、要求フレームＦ１１で指定された全てのデータを正常に獲得することができなかった場合には、ＣＰＵモジュールＭ２では、図４に示すように、各データに対応する、リードサイズ２１４ｂのうち、正常に読み出しを行うことのできなかった、この場合データ２のリードサイズ２１４ｂとして、“０”を設定し、リードデータ２１４ｃは付加しない。そして、指定された全てのデータを獲得することができなったことから、データの獲得情報２１２として“異常”を設定し、応答フレームＦ２２を通信モジュールＭ１宛に送信する。
【００２７】
通信モジュールＭ１では、この応答フレームＦ２２を所定のフォーマットに変換して上位装置に送信する。
上位装置では、読み出し要求のコマンドフレームに対する応答のコマンドフレームを受信すると、データの獲得情報２１２が異常と設定されていることから、全てのデータを正常に獲得することができなかったことを認識し、そのリードサイズ２１４ｂを参照し、リードサイズ２１４ｂとして“０”が設定されているデータについては、データの読み出しを正常に行うことができなかったと判定する。そして、正常に読み出しを行うことができたもののみに基づいて、例えばデータのリフレッシュ等の処理を行う。
【００２８】
ここで、通信モジュールＭ１は、要求フレームＦ１１をＣＰＵモジュールＭ２に送信した後、ＣＰＵモジュールＭ２からのＡＣＫフレームＦ２１の受信待ち状態となるため、ＣＰＵモジュールＭ２からＡＣＫフレームＦ２１を受信するまでの間は、他の処理を実行することができない。しかしながら、ＣＰＵモジュールＭ２では、要求フレームＦ１１を受信した時点で折り返しＡＣＫフレームＦ２１を送信するようにしており、要求フレームＦ１１で指定された処理を行う以前に、ＡＣＫフレームＦ２１を送信するようにしている。
【００２９】
したがって、通信モジュールＭ２は、応答フレームＦ２２を受信する以前に、受信待ち状態が解除され他の処理を実行可能な状態に移行するから、通信モジュールＭ２での受信待ち時間を短縮することができ、その分、通信モジュールＭ２を効率よく作動させることができる。よって、処理効率を向上させることができる。
【００３０】
また、このとき、ＣＰＵモジュールＭ２では、指定されたデータを全て正常に獲得することができなかった場合には、獲得できたものについては応答フレームに付加して送信するようにし、獲得できなかったものについては、応答フレームＦ２２においてリードサイズ２１４ｂを“０”として設定することによって、獲得することのできなかったデータがどのデータであるかを通知するようにしているから、例えば上位装置等、ＣＰＵモジュールＭ２から読み出したデータに基づいて処理を行う装置においては、正常に獲得することができたデータについては、そのデータを獲得することができる。
【００３１】
したがって、全てのデータを獲得することはできないものの、異常なデータを除く、正常なデータについては獲得することができるから、正常なデータについてはそのリフレッシュ等を行うことができる。よって、上位装置においてＣＰＵモジュールＭ２から読み出したデータに基づいて行う処理を効率よく行うことができる。
【００３２】
なお、上記実施の形態においては、通信モジュールＭ１からＣＰＵモジュールＭ２に対してＣＰＵモジュールＭ２で保持する複数領域データのリード要求が行われたときに、ＣＰＵモジュールＭ２において、要求フレームＦ１１に対してＡＣＫフレームＦ２１を返送するようにした場合について説明したが、通信モジュールＭ１及びＣＰＵモジュールＭ２間に限らず、送信した要求コマンドに対する応答コマンドを受信したときに、他の処理を実行可能な状態に移行するようにメッセージ通信を行うモジュール間等であっても、同様に適用することができる。また、リード要求に限るものではなく、例えば、複数領域へのデータの書き込み等、通信モジュールＭ１からの要求に対する処理をＣＰＵモジュールＭ２において行う場合に、その処理に比較的時間を要する場合に適用すれば効果的である。
【００３３】
【発明の効果】
以上説明したように、本発明の請求項１又は請求項２に係るモジュール間のメッセージ通信方式によれば、要求コマンドを送信した要求側モジュールでは、要求コマンドの送信先の応答側モジュールから承認応答を受信した時点で、他の処理を実行可能な状態に移行することができるから、要求コマンドに対する応答を待つ待ち時間を短縮することができ、処理効率を向上させることができる。
【図面の簡単な説明】
【図１】本発明を適用したプログラマブルコントローラの一例を示す構成図である。
【図２】本発明の動作説明に供する説明図である。
【図３】本発明の動作説明に供する説明図である。
【図４】本発明の動作説明に供する説明図である。
【図５】従来の動作説明に供する説明図である。
【図６】従来の動作説明に供する説明図である。
【符号の説明】
１０  プログラマブルコントローラ
Ｌ  通信回線
Ｍ１  通信モジュール
Ｍ２  ＣＰＵモジュール
【図１】
0003861649.tif 000002
【図２】
0003861649.tif 000003
【図３】
0003861649.tif 000004
【図４】
0003861649.tif 000005
【図５】
0003861649.tif 000006
【図６】
0003861649.tif 000007