(57)【要約】【課題】数値制御装置における通信において、再送されたフレームも破壊されていた場合に、再送回数を抑制しつつ機械の停止を防ぐ。【解決手段】ＣＲＣによる誤り検出機能を備えた数値制御装置は、少なくとも１回分の受信フレームを保存することができる受信バッファと、１回目の受信フレームと再送された２回目の受信フレームとを比較して不一致箇所を検出する比較部と、受信フレームに基づいてＣＲＣを計算する複数のＣＲＣ計算部と、複数のＣＲＣ計算部のそれぞれに送るデータであって受信フレームに含まれるデータを制御するデータ選択部と、複数のＣＲＣ計算部のそれぞれの計算結果に基づいて、使用するデータを選択する結果選択部とを有し、２回目の受信フレームの受信時に、１回目の受信フレームと２回目の受信フレームとを組み合わせたパターンのＣＲＣも並行して計算することで誤り訂正する機能を有する。【選択図】図１
2020080463.tif 000002
【特許請求の範囲】
【請求項１】
ＣＲＣによる誤り検出機能を備えた機械の数値制御装置において、
少なくとも１回分の受信フレームを保存することができる受信バッファと、
１回目の受信フレームと再送された２回目の受信フレームとを比較して不一致箇所を検出する比較部と、
受信フレームに基づいてＣＲＣを計算する複数のＣＲＣ計算部と、
前記複数のＣＲＣ計算部のそれぞれに送るデータであって受信フレームに含まれるデータを制御するデータ選択部と、
前記複数のＣＲＣ計算部のそれぞれのＣＲＣ計算結果に基づいて、使用するデータを選択する結果選択部と、
を有し、
２回目の受信フレームの受信時に、１回目の受信フレームと２回目の受信フレームとを組み合わせたパターンのＣＲＣも並行して計算することで誤り訂正する機能を有する、
数値制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御対象物を制御するためにユニット間で通信によるデータの受け渡しを行う数値制御装置に関する。
【背景技術】
【０００２】
工作機械の数値制御装置では、数値制御装置から離れた位置にモータを駆動する駆動装置やソレノイド等を制御するためのＩ／Ｏ装置が存在するため、指令等のデータを通信する必要がある。
【０００３】
イーサネット（登録商標）に関して規定されたＩＥＥＥ８０２．３を利用する場合において、データが格納されたフレームが破壊された場合に誤ったフレームに基づき制御対象物が動作することを防ぐために、フレームが破壊されたことを検出する手段としてバースト誤りを検出しやすいＣＲＣ（Cyclic Redundancy Check：巡回冗長検査）が用いられることがある。
【０００４】
また、ノイズ等によってフレームが破壊されたことにより正しいフレームを受け取ることができなかった場合の対策として、フレームの再送により正常にフレームを受け取ることができる確率を高めることが行われる場合がある。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、ＣＲＣによる誤り検出では、誤り箇所を特定することができず、誤りを訂正することができないため、正しいフレームを受け取るために再送が必要になる。しかし、リアルタイム性が重要になる数値制御装置における通信では、同一フレームの再送を複数回実施すると規定時間内に通信を完了することができないため、機械が停止する。
【０００６】
本発明の目的は、数値制御装置における通信において、再送されたフレームも破壊されていた場合に、再送回数を抑制しつつ機械の停止を防ぐことにある。
【課題を解決するための手段】
【０００７】
本発明に係る数値制御装置は、ＣＲＣによる誤り検出機能を備えた機械の数値制御装置であって、少なくとも１回分の受信フレームを保存することができる受信バッファと、１回目の受信フレームと再送された２回目の受信フレームとを比較して不一致箇所を検出する比較部と、受信フレームに基づいてＣＲＣを計算する複数のＣＲＣ計算部と、前記複数のＣＲＣ計算部のそれぞれに送るデータであって受信フレームに含まれるデータを制御するデータ選択部と、前記複数のＣＲＣ計算部のそれぞれのＣＲＣ計算結果に基づいて、使用するデータを選択する結果選択部と、を有し、２回目の受信フレームの受信時に、１回目の受信フレームと２回目の受信フレームとを組み合わせたパターンのＣＲＣも並行して計算することで誤り訂正する機能を有する。
【発明の効果】
【０００８】
本発明によれば、少ない遅延で誤り訂正を行うことが可能となり、機械の停止を防止することが可能となる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態に係るシステムを示すブロック図である。
【図２】本発明の実施形態に係る誤り訂正方法を説明する図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態について、図に基づいて説明する。
【００１１】
図１に示すように、制御装置１は、制御部１１と、送信部１２と、受信部１３と、を備える。送信部１２は、送信するデータを格納する送信バッファ１２１と、送信フレームの生成を行う送信制御部１２２と、フレームに付与するＣＲＣを計算するＣＲＣ計算部１２３と、フレームを送信するフレーム送信部１２４と、を備える。受信部１３は、フレームを受信するフレーム受信部１３４と、受信フレームのＣＲＣをチェックするＣＲＣ計算部１３３ａと、フレームの情報に応じてデータ格納先等を制御する受信制御部１３２と、受信したデータを格納する受信バッファ１３１と、を備え、通常の受信処理を行う。また、受信部１３は、受信フレーム同士を比較して不一致箇所を検出する比較部１３５と、不一致箇所と不一致時のフレームを一時的に保存する不一致バッファ１３６と、誤り訂正用のＣＲＣ計算部１３３ｂ，１３３ｃと、不一致回数をカウントし、ＣＲＣ計算部１３３ｂ，１３３ｃに送るデータを切り替えるデータ選択部１３７と、ＣＲＣ計算部１３３ａ，１３３ｂ，１３３ｃで計算した結果から使用するデータパターンを選択する結果選択部１３８と、を更に備える。駆動装置２も制御装置１と同様に、制御部２１と、送信部２２と、受信部２３と、を備える。送信部２２の構成は、送信部１２の構成と同じである。受信部２３の構成は、受信部１３の構成と同じである。
【００１２】
エラーが発生しない正常な通信時は、制御装置１が生成した指令値を駆動装置２へと送信し、駆動装置２は指令値を受け取り、指令に応じて機械を駆動させ、応答を制御装置１へと送信する。具体的には、制御装置１の制御部１１は、駆動装置２に対する指令値を生成し、送信バッファ１２１に指令値を書き込む。その後、制御部１１は、送信制御部１２２に対して送信開始指令を送る。送信開始指令を受け付けた送信制御部１２２は、送信バッファ１２１のデータをＣＲＣ計算部１２３に送る。ＣＲＣ計算部１２３は、受け取ったデータからＣＲＣを計算し、データにＣＲＣ情報を付加したフレームを、フレーム送信部１２４へと送る。フレーム送信部１２４は、送られてきたフレームを駆動装置２に送信する。
【００１３】
駆動装置２内のフレーム受信部２３４は、制御装置１から受信したフレームをＣＲＣ計算部２３３ａを介して受信制御部２３２へと送る。ＣＲＣ計算部２３３ａは、受信フレームのＣＲＣを計算し、受信フレームのデータが正しいかを判定し、その判定結果を受信制御部２３２に通知する。受信制御部２３２は、受信フレームを受信バッファ２３１に保存し、ＣＲＣ計算部２３３ａから受信フレームが正常である判定を受けた場合は、制御部２１へ受信が完了したことを通知する。制御部２１は、受信バッファ２３１に保存されたフレーム内にある指令情報に基づいて装置を駆動させ、その応答の情報を送信バッファ２２１に保存し、制御装置１宛に送信するように送信制御部２２２へと指示する。指示を受けた送信制御部２２２は送信部１２と同様の動作で制御装置１にフレームを送信する。
【００１４】
前記通信の流れにおいて、制御装置１から送信されたフレームが破壊された場合は、受信制御部２３２は、受信フレームを受信バッファ２３１に保存し、ＣＲＣ計算部２３３ａから受信フレームが異常であることを通知されたため、送信制御部２２２に対して再送要求のフレームの送信を指令する。指令を受けた送信制御部２２２は、再送要求のフレームを生成し、制御装置１に対して送信する。再送要求を受信した制御装置１は、要求に応じて、同一のフレームを駆動装置２に再送する。
【００１５】
再送されたフレームを受信した駆動装置２は、フレームの受信処理時に誤り訂正処理を並行して実行する。この誤り訂正処理に関して図２も参照して説明する。図２（ａ）は、再送前の受信フレームにおいてＡ０バイト目からＡ１バイト目までの区間でデータが破壊されたことを示している。図２（ｂ）は、再送時の受信フレームにおいてＢ０バイト目からＢ１バイト目までの区間でデータが破壊されたことを示している。図２（ｃ）と図２（ｄ）は、再送前と再送時の２回の受信フレームを組み合わせて作成されたフレームを示している。本実施形態では、ＣＲＣの性質上、ＣＲＣ長より長いバースト誤りがあり、単一フレームで２箇所以上の誤りがある場合は、信頼性が低下するため、誤り訂正を行わない。そのため、以下では、フレームが破壊された区間がＣＲＣ長より短い場合について説明する。
【００１６】
フレーム受信部２３４は、受信したフレームをＣＲＣ計算部２３３ａを介して受信制御部２３２へと渡す。再送時受信フレームを受け取った受信制御部２３２は、受信バッファ２３１に保存されていた再送前受信フレームを読み出し、再送前受信フレームと再送時受信フレームを、比較部２３５とデータ選択部２３７へと送信し、また、受信バッファ２３１に再送時受信フレームを保存する。比較部２３５は、受け取った再送前受信フレームと再送時受信フレームとを比較し、それらのフレーム同士が不一致だった場合は、不一致検出信号をデータ選択部２３７に出力する。図２の例の場合は、Ａ０バイトからＡ１バイトまでの区間、及び、Ｂ０バイトからＢ１バイトまでの区間において、再送前受信フレームと再送時受信フレームとの間に不一致が生じているため、これらの区間に関して不一致検出信号が出力される。データ選択部２３７は、図２（ｃ）に示されているＣＲＣ計算をＣＲＣ計算部２３３ｂに実行させ、図２（ｄ）に示されているＣＲＣ計算をＣＲＣ計算部２３３ｃに実行させるように、データの振り分けを行う。
【００１７】
具体的には、データ選択部２３７は、再送時受信フレームの受信開始時はＣＲＣ計算部２３３ｂには、再送時受信フレーム（ｂ）を送信し、ＣＲＣ計算部２３３ｃには、再送前受信フレーム（ａ）を送信する。そして、データ選択部２３７は、不一致検出信号（Ａ０）を受け取った場合は、そこからＣＲＣ長（本実施例ではＣＬＢｙｔｅ）までの間は、前記送信先（ＣＲＣ計算部２３３ｂ，２３３ｃ）に前記データを送信し、Ａ０＋ＣＬの位置から受信フレームを入れ替え、ＣＲＣ計算部２３３ｂには再送前受信フレーム（ａ）を送信し、ＣＲＣ計算部２３３ｃには再送時受信フレーム（ｂ）を送信する。また、その際に、データ選択部２３７は、データ選択部２３７内部にあるフレーム内のデータの不一致数を記録するカウンタ（以下、不一致カウンタ）を１増加させ、不一致バッファ２３６に不一致位置の先頭を示すＡ０のデータと、ＣＬバイト分のデータであるＡ０からＡ０＋ＣＬ−１のデータを保存する。データ選択部２３７は、次の不一致検出信号（Ｂ０）を受け取った場合も、上記と同様の動作を行う。つまり、データ選択部２３７は、Ｂ０＋ＣＬの位置からＣＲＣ計算部２３３ｂとＣＲＣ計算部２３３ｃに送るデータを再度入れ替え、前記と同様に不一致カウンタを増加させ、不一致バッファ２３６に不一致箇所の先頭を示すＢ０のデータと、ＣＬバイト分のデータであるＢ０からＢ０＋ＣＬ−１のデータを保存する。これ以降は受信完了まで不一致検出信号は現れないため、各ＣＲＣ計算部（ＣＲＣ計算部２３３ａ，２３３ｂ，２３３ｃ）は、自身に振り分けられたデータに基づいてＣＲＣを計算し、そのＣＲＣ結果を結果選択部２３８へと送る。
【００１８】
結果選択部２３８は、３個のＣＲＣ計算部（ＣＲＣ計算部２３３ａ，２３３ｂ，２３３ｃ）から計算結果を受け取り、有効な結果の判定を行う。再送時受信フレームのＣＲＣ計算結果であるＣＲＣ計算部２３３ａの結果が正しい場合は、結果選択部２３８は、受信バッファ２３１に格納した再送時受信フレームをそのまま使用する。ＣＲＣ計算部２３３ｂのＣＲＣ計算結果のみが正しかった場合は、ＣＲＣ計算部２３３ｂが計算した受信フレーム（図２（ｃ）に示されている受信フレーム）が正しいため、結果選択部２３８は、不一致バッファ２３６に保存した不一致箇所Ｂの再送前受信データ（Ｂ０からＢ０＋ＣＬ−１のデータ）を受信バッファ２３１に書き込み、誤り訂正を行う。ＣＲＣ計算部２３３ｃのＣＲＣ計算結果のみが正しい場合は、結果選択部２３８は、不一致バッファに保存した不一致箇所Ａの再送前受信データ（Ａ０からＡ０＋ＣＬ−１のデータ）を受信バッファ２３１に書き込み、誤り訂正を行う。ＣＲＣ計算部２３３ｂとＣＲＣ計算部２３３ｃの両方のＣＲＣ計算結果が正しい場合は、どちらかが２箇所誤った結果ＣＲＣ計算結果が一致しているため、結果選択部２３８は、誤り訂正を行わず、受信制御部２３２に受信エラーであることを通知し、再び再送要求を行う。同様に、結果選択部２３８は、全てのＣＲＣ計算部の結果が誤りの場合も誤り訂正を行わず、受信制御部２３２に受信エラーであることを通知し、再び再送要求を行う。
【００１９】
誤り訂正を行わないＣＲＣ長以上の誤りがある場合、及び、同一のフレームで２カ所以上の誤りが存在する場合は、不一致箇所が３箇所以上となる（ＣＲＣ長を超えた誤りは２箇所として数える）ため、不一致カウンタが３以上であるならば、受信フレームの信頼性が低いため誤り訂正を無効化する。無効化は、データ選択部２３７がＣＲＣ計算部２３３ｂとＣＲＣ計算部２３３ｃに対し、リセット入力を続け、ＣＲＣ計算結果を固定値とすることで行う。
【００２０】
＜変形例１＞
上記の実施形態では、フレームを正常に受信できなかった場合に再送要求を送ることで再送処理を行う場合について説明したが、再送要求に応じて再送するのではなく、常に同一フレームを複数回送信する等の方法によって、２回以上のフレームを受信してもよい。
【００２１】
＜変形例２＞
上記の実施形態では、制御装置１と駆動装置２が１対１通信で接続されている場合について説明したが、例えばリング接続等の１対１通信以外で接続されたネットワークが用いられてもよい。この場合、受信バッファを通信相手毎に用意することで、フレームと再送フレームとの間に、他の通信相手との通信フレームが割り込んでも誤り訂正を行うことが可能になる。
【００２２】
上記の制御装置１及び駆動装置２は、一例としてハードウェア資源とソフトウェアとの協働により実現される。具体的には、制御装置１及び駆動装置２は、図示しないＣＰＵ等のプロセッサを備えている。当該プロセッサが、図示しない記憶装置に記憶されたプログラムを読み出して実行することにより、制御装置１及び駆動装置２の各部の機能が実現される。上記プログラムは、ＣＤやＤＶＤ等の記録媒体を経由して、又は、ネットワーク等の通信経路を経由して、記憶装置に記憶される。または、制御装置１及び駆動装置２の各部は、例えばプロセッサや電子回路等のハードウェア資源により実現されてもよい。その実現においてメモリ等のデバイスが利用されてもよい。別の例として、制御装置１及び駆動装置２の各部は、ＤＳＰ（Digital Signal Processor）やＦＰＧＡ（Field Programmable Gate Array）等によって実現されてもよい。
【符号の説明】
【００２３】
１  制御装置、２  駆動装置、１１，２１  制御部、１２，２２  送信部、１３，２３  受信部、１２１，２２１  送信バッファ、１２２，２２２  送信制御部、１２３，１３３ａ，１３３ｂ，１３３ｃ，２２３，２３３ａ，２３３ｂ，２３３ｃ  ＣＲＣ計算部、１２４，２２４  フレーム送信部、１３１，２３１  受信バッファ、１３２，２３２  受信制御部、１３４，２３４  フレーム受信部、１３５，２３５  比較部、１３６，２３６  不一致バッファ、１３７，２３７  データ選択部、１３８，２３８  結果選択部。
【図１】
2020080463.tif 000003
【図２】
2020080463.tif 000004