(57)【要約】  ＣＰＵユニット（１００）のクロック値変換部（１５１）は、ＣＰＵユニット（１００）の安全用クロック（１１１）のキャリーカウンタの値を置き換えて、キャリーカウンタが取る値を分散させる。ＣＰＵユニット（１００）は、タイムスタンプの値と、タイムスタンプの値とキャリーカウンタの値とから生成された第１誤り検出符号と、を含むフレームをＣＰＵユニット（１０１）に送信する。ＣＰＵユニット（１０１）のクロック値変換部（１５１）は、ＣＰＵユニット（１００）と同様に、ＣＰＵユニット（１０１）の安全用クロック（１１１）のキャリーカウンタの値を分散させる。ＣＰＵユニット（１０１）の誤り検出部（１５３）は、受信したタイムスタンプの値とＣＰＵユニット（１０１）の安全用クロック（１１１）のキャリーカウンタの値とから生成した第２誤り検出符号が、第１誤り検出符号に対して設定された条件を満たすか否かを判別する。
2020049698.tif 000002
【特許請求の範囲】
【請求項１】
第１通信装置と第２通信装置とが相互に通信する通信システムであって、
前記第１通信装置は、
時間経過をカウントする第１カウンタと、前記第１カウンタの桁あふれをカウントする第２カウンタとを備える第１計時手段と、
予め設定されたタイミングで、予め設定された方式を使用して生成した値で、前記第２カウンタの値を置き換えて、前記第２カウンタが取る値を分散させる第１データ変換手段と、
前記第１カウンタの値と、前記第２カウンタの値とから第１誤り検出符号を生成する第１誤り検出手段と、
前記第２通信装置へ宛てたデータに前記第１カウンタの値と前記第１誤り検出符号とを付加したフレームを生成し、生成した前記フレームを前記第２通信装置に送信する第１通信手段と、
を有し、
前記第２通信装置は、
時間経過をカウントする第３カウンタと、前記第３カウンタの桁あふれをカウントする第４カウンタとを備える第２計時手段と、
前記設定されたタイミングで、前記設定された方式を使用して生成した値で、前記第４カウンタの値を置き換えて、前記第４カウンタが取る値を分散させる第２データ変換手段と、
前記第１通信装置から前記フレームを受信する第２通信手段と、
前記フレームに含まれる前記第１カウンタの値と、前記第２計時手段の前記第４カウンタの値と、から第２誤り検出符号を生成し、生成した前記第２誤り検出符号が、前記フレームに含まれる前記第１誤り検出符号に対して設定された条件を満たすか否かを判別する第２誤り検出手段と、
を有する、
通信システム。
【請求項２】
前記第２カウンタの初期値と前記第４カウンタの初期値とは同じである、
請求項１に記載の通信システム。
【請求項３】
前記第１データ変換手段は、前記第２カウンタの値の指定された範囲の値を、指定された方向に、指定されたビット数だけシフトさせた値で置き換え、
前記第２データ変換手段は、前記第１データ変換手段と同一の方法で、前記第４カウンタの値の置き換えを行う、
請求項１又は２に記載の通信システム。
【請求項４】
前記第１データ変換手段は、前記第２カウンタの値の指定された範囲の値を、指定された生成方法で生成した乱数で、置き換え、
前記第２データ変換手段は、前記第１データ変換手段と同一の方法で、前記第４カウンタの値の置き換えを行う、
請求項１又は２に記載の通信システム。
【請求項５】
前記第１通信装置の前記第１誤り検出手段は、前記第２通信装置へ宛てた前記データと、前記第１カウンタの値と、前記第２カウンタの値とから前記第１誤り検出符号を生成し、
前記第２通信装置の前記第２誤り検出手段は、前記フレームに含まれる前記第２通信装置へ宛てた前記データと、前記フレームに含まれる前記第１カウンタの値と、前記第２計時手段の前記第４カウンタの値と、から前記第２誤り検出符号を生成する、
請求項１から４のいずれか１項に記載の通信システム。
【請求項６】
前記第２誤り検出手段は、生成した前記第２誤り検出符号が、前記フレームに含まれる前記第１誤り検出符号に対して設定された条件を満たさないと判別すると、前記フレームを破棄する、
請求項１から５のいずれか１項に記載の通信システム。
【請求項７】
前記第２誤り検出手段は、生成した前記第２誤り検出符号が、前記フレームに含まれる前記第１誤り検出符号と一致するか否かを判別する、
請求項１から６のいずれか１項に記載の通信システム。
【請求項８】
前記第２誤り検出手段は、前記第３カウンタの値が示す時刻と、前記フレームに含まれる前記第１カウンタの値が示す時刻と、から前記フレームが設定された時間内に前記第２通信装置に到達したか否かを判別し、前記フレームが設定された時間内に前記第２通信装置に到達していないと判別すると、前記フレームを破棄する、
請求項１から７のいずれか１項に記載の通信システム。
【請求項９】
前記第１通信装置は、
前記設定されたタイミングを示す情報と、前記設定された方式を示す情報とを記憶する第１記憶手段、
を有し、
前記第２通信装置は、
前記設定されたタイミングを示す情報と、前記設定された方式を示す情報とを記憶する第２記憶手段、
を有する、
請求項１から８のいずれか１項に記載の通信システム。
【請求項１０】
前記第１通信装置は、
前記設定されたタイミングを示す情報と、前記設定された方式を示す情報とを記憶する第１記憶手段と、
前記第２通信装置に、前記第１記憶手段に格納した情報を提供する通知手段と、
を有する、
請求項１から８のいずれか１項に記載の通信システム。
【請求項１１】
他の通信装置と通信する通信装置であって、
前記他の通信装置は、時間経過をカウントする第１カウンタと、前記第１カウンタの桁あふれをカウントする第２カウンタとを備えており、予め設定されたタイミングで、予め設定された方式を使用して生成した値で、前記第２カウンタの値を置き換えて、前記第２カウンタが取る値を分散させ、前記第１カウンタの値と、前記第２カウンタの値とから第１誤り検出符号を生成し、前記通信装置へ宛てたデータに前記第１カウンタの値と前記第１誤り検出符号とを付加したフレームを生成し、生成した前記フレームを前記通信装置に送信し、
前記通信装置は、
時間経過をカウントする第３カウンタと、前記第３カウンタの桁あふれをカウントする第４カウンタとを備える第２計時手段と、
前記設定されたタイミングで、前記設定された方式を使用して生成した値で、前記第４カウンタの値を置き換えて、前記第４カウンタが取る値を分散させる第２データ変換手段と、
前記他の通信装置から前記フレームを受信する第２通信手段と、
前記フレームに含まれる前記第１カウンタの値と、前記第２計時手段の前記第４カウンタの値と、から第２誤り検出符号を生成し、生成した前記第２誤り検出符号が、前記フレームに含まれる前記第１誤り検出符号に対して設定された条件を満たすか否かを判別する第２誤り検出手段と、
を有する、
通信装置。
【請求項１２】
第１通信装置と第２通信装置とが相互に通信する方法であって、
前記第１通信装置が、時間経過をカウントする第１カウンタと、前記第１カウンタの桁あふれをカウントする第２カウンタとを備える第１計時手段を有し、
前記第２通信装置が、時間経過をカウントする第３カウンタと、前記第３カウンタの桁あふれをカウントする第４カウンタとを備える第２計時手段を有し、
前記第１通信装置が、予め設定された方法で、前記第２カウンタが取る値を分散させるステップと、
前記第１通信装置が、前記第１カウンタの値と、前記第２カウンタの値とから第１誤り検出符号を生成するステップと、
前記第１通信装置が、前記第２通信装置へ宛てたデータに前記第１カウンタの値と前記第１誤り検出符号とを付加したフレームを生成し、生成した前記フレームを前記第２通信装置に送信するステップと、
前記第２通信装置が、前記第１通信装置と同じ方法で、前記第４カウンタが取る値を分散させるステップと、
前記第２通信装置が、前記第１通信装置から前記フレームを受信するステップと、
前記第２通信装置が、前記フレームに含まれる前記第１カウンタの値と、前記第２計時手段の前記第４カウンタの値と、から第２誤り検出符号を生成し、生成した前記第２誤り検出符号が、前記フレームに含まれる前記第１誤り検出符号に対して設定された条件を満たすか否かを判別するステップと、
を含む方法。
【請求項１３】
第１のコンピュータと第２のコンピュータとが相互に通信する通信システムにおいて、
前記第１のコンピュータに、時間経過をカウントする第１カウンタと、前記第１カウンタの桁あふれをカウントする第２カウンタとを備える第１計時手段を実現させ、
前記第１のコンピュータに、予め設定された方法で前記第２カウンタの値を分散させ、
前記第１のコンピュータに、前記第１カウンタの値と、前記第２カウンタの値とから第１誤り検出符号を生成させ、前記第２のコンピュータへ宛てたデータに前記第１カウンタの値と前記第１誤り検出符号とを付加したフレームを生成させ、前記フレームを前記第２のコンピュータに送信させ、
前記第２のコンピュータに、時間経過をカウントする第３カウンタと、前記第３カウンタの桁あふれをカウントする第４カウンタとを備える第２計時手段を実現させ、
前記第２のコンピュータに、前記第１のコンピュータと同じ方法で前記第４カウンタの値を分散させ、
前記第２のコンピュータに、前記第１のコンピュータから送信された前記フレームに含まれる前記第１カウンタの値と、前記第２計時手段の前記第４カウンタの値と、から第２誤り検出符号を生成させ、前記第２誤り検出符号が前記フレームに含まれる前記第１誤り検出符号に対して設定された条件を満たすか否かを判別させる、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システム、通信装置、方法及びプログラムに関する。
【背景技術】
【０００２】
ファクトリーオートメーションの分野では、機能安全の観点から通信の信頼性を高めることが要望されている。ここで、機能安全とは、安全を確保する機能を導入して、実現される許容可能なレベルの安全のことである。【０００３】
通信の信頼性の向上のためリアルタイム性が要望されている。工場内の装置間では、安全制御に関する情報が送受信される。安全制御に関する情報は、例えば、非常停止スイッチが押されたことの通知、非常停止のため電源遮断の指示等を含む。このような安全制御に関する情報は、遅延することなく宛先の装置に到達する必要がある。【０００４】
データの遅延を検出するため、例えば、工場内の装置が、送信時刻を示す時間情報を付加したデータを他の装置に送信する。データを受信した他の装置は、受信した時間情報から、そのデータが適正な時間内に届いたものであるかを判別する。特許文献１には、送信側の通信装置が時間情報を付与したデータを送信し、受信側の通信装置が、受信した時間情報と受信側の通信装置が有するクロックが示す時間情報とを比較することが記載されている。【０００５】
ここで、従来のクロックは、例えば、設定された時間毎にクロック信号を発生するクロック発生回路と、クロック発生回路が出力したクロック信号の数をカウントするカウンタとを含む。図４Ａに従来のカウンタの構成の一例を示す。図示する例では、カウンタは、クロック信号の数を数えるカウンタであるタイムスタンプ１１と、タイムスタンプが桁あふれすると加算されるキャリーカウンタ１２とを含む。クロックは時間を計時する機能を備えたものであることから、タイムスタンプ１１とキャリーカウンタ１２の値は順次加算される。タイムスタンプ１１とキャリーカウンタ１２の初期値には、ゼロ、現在の日付等がセットされていた。【０００６】
また、通信の信頼性の向上のためデータが正確に伝送されることが要望されている。伝送路上においては、符号化されたデータの一部が欠落する、符号化されたデータの一部の０と１とが反転する、といった符号誤りが発生する場合がある。上述のような安全制御に関するデータが伝送されているときに符号誤りが発生した場合、受信側の装置には本来のデータとは異なる誤ったデータが伝送され、受信側の装置が予期しない動作をすることも想定される。このため、安全制御に関する情報を正確に伝送することが安全の確保に繋がる。【０００７】
機能安全に関する基準であるＩＥＣ６１７８４−３では、定義された安全の目標水準毎に、許容される残存エラー率について定義されている。残存エラーとは、通信装置が受信データに対して、伝送路上で発生した符号の誤りを検出するために誤り検出を行っても、見逃されてしまうエラーをいう。ＩＥＣ６１７８４−３では、残存エラーが発生する確率を示す残存エラー率の算出方法が定められている。機能安全を実現するために、残存エラー率を抑えることが望ましいといえる。しかし、残存エラーは、誤り検出を行ったとしても見逃されてしまうエラーであり、このようなエラーの検出率を上げることは容易ではない。【０００８】
また、上述のＩＥＣ６１７８４−３では、残存エラー率の算出に、送信されるデータにおいて頻繁に出現する値の出現確率を使用することが規定されている。言い換えると、特定の値が出現する頻度が高い場合、その値の出現確率を残存エラー率の算出に採用しなければならない。この場合、高い出現確率を使用するため、残存エラー率が高くなってしまう。【０００９】
上述のように、送信されるデータに時間情報を付加する場合、時間情報についても符号の誤りが発生する可能性があるので、時間情報も誤り検出の対象となる。従来、クロックのタイムスタンプ１１は、十分に長い時間をカウントすることができるように設定されている。タイムスタンプ１１がごく短い期間で桁あふれしてしまうと、データの伝送中にタイムスタンプ１１が桁あふれすることがある。その結果、送信時に付加されたタイムスタンプの値と、受信時のタイムスタンプの値とが同じとなるといった事態が発生するおそれがある。よって、タイムスタンプ１１が桁あふれすることはあまりない。仮にタイムスタンプ１１の値が桁あふれした場合でも、再度タイムスタンプ１１が桁あふれするまでには、長い時間がかかるため、キャリーカウンタ１２の値が加算される頻度はきわめて低いといえる。【００１０】
この結果、キャリーカウンタ１２の値は初期値のまま、あるいは初期値付近の値を取ることが多いと言える。言い換えると、キャリーカウンタ１２の値として、初期値付近の値が出現する確率が高いと言える。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００３−２９８５６３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
図５Ａに示すように、キャリーカウンタ１２の初期値としてゼロを設定した場合、キャリーカウンタ１２の値としてゼロ近傍の値が出現する確率が高くなる。この場合、キャリーカウンタ１２の値としてゼロが出現する確率を残存エラー率の算出に使用することになる。また、図５Ｂに示すように、キャリーカウンタ１２の初期値として現在の日付を設定した場合、キャリーカウンタ１２の値として、初期値として設定した日付近傍の値が出現する確率が高くなる。この場合、キャリーカウンタ１２の値として設定された日付が出現する確率を残存エラー率の算出に使用することになる。このように、従来のクロックのキャリーカウンタ１２では、特定の値の出現頻度が高くなるため、高い出現確率を残存エラー率の算出に使用せざるを得ず、残存エラー率を下げることは難しかった。【００１３】
本発明は上記実情に鑑みてなされたものであり、残存エラー率を下げるため、クロックのカウンタの値の出現頻度を分散させることを目的とする。
【課題を解決するための手段】
【００１４】
上記目的を達成するため、本発明の通信システムでは、第１通信装置と第２通信装置とが相互に通信する。第１通信装置の第１計時手段は、時間経過をカウントする第１カウンタと、前記第１カウンタの桁あふれをカウントする第２カウンタとを備える。第１通信装置の第１データ変換手段は、予め設定されたタイミングで、予め設定された方式を使用して生成した値で、第２カウンタの値を置き換えて、第２カウンタが取る値を分散させる。第１通信装置の第１誤り検出手段は、第１カウンタの値と、第２カウンタの値とから第１誤り検出符号を生成する。第１通信装置の第１通信手段は、第２通信装置へ宛てたデータに第１カウンタの値と第１誤り検出符号とを付加したフレームを生成し、生成したフレームを前記第２通信装置に送信する。第２通信装置の第２計時手段は、時間経過をカウントする第３カウンタと、第３カウンタの桁あふれをカウントする第４カウンタとを備える。第２通信装置の第２データ変換手段は、設定されたタイミングで、設定された方式を使用して生成した値で、第４カウンタの値を置き換えて、前記第４カウンタが取る値を分散させる。第２通信装置の第２通信手段は、第１通信装置からフレームを受信する。第２通信装置の第２誤り検出手段は、フレームに含まれる第１カウンタの値と、第２計時手段の第４カウンタの値と、から第２誤り検出符号を生成し、生成した第２誤り検出符号が、フレームに含まれる第１誤り検出符号に対して設定された条件を満たすか否かを判別する。
【発明の効果】
【００１５】
本発明の通信システムの第１通信装置は、設定されたタイミングで、設定された方式を使用して生成した値で、第１カウンタの桁あふれをカウントする第２カウンタの値を置き換えて、第２カウンタが取る値を分散させる。第２通信装置は、第１通信装置と同様に、設定されたタイミングで、設定された方式を使用して生成した値で、第３カウンタの桁あふれをカウントする第４カウンタの値を置き換えて、第４カウンタが取る値を分散させる。このような構成を備えることで、クロックのカウンタの値の出現頻度を分散させることができる。
【図面の簡単な説明】
【００１６】
【図１】実施の形態１に係る通信システムのハードウェア構成を示すブロック図
【図２】実施の形態１に係る通信システムの機能ブロック図
【図３】実施の形態１に係る安全用クロックの構成を示す図
【図４Ａ】従来の安全用クロックがカウントされる様子を示す図
【図４Ｂ】従来の安全用クロックのタイムスタンプの桁あふれの様子を示す図
【図５Ａ】従来の安全用クロックのキャリーカウンタの初期値が０の場合において、キャリーカウンタの値とその出現確率との関係を示す図
【図５Ｂ】キャリーカウンタの初期値にカレンダーが示す日を設定した場合において、キャリーカウンタの値とその出現確率との関係を示す図
【図６】実施の形態１に係る安全用クロックのビットシフトによるデータ変換の方式を示す図
【図７】実施の形態１に係る安全用クロックが桁あふれする様子を示す図
【図８】実施の形態１に係るＣＲＣの生成の方法を示す図
【図９】実施の形態１に係る誤り検出の方法を示す図
【図１０】実施の形態１に係るデータ変換処理のフローチャート
【図１１】実施の形態２に係る安全用クロックの構成を示す図
【図１２】実施の形態２に係る安全用クロックが桁あふれする様子を示す図
【図１３】実施の形態２に係る安全用クロックのビットシフトによるデータ変換の方式を示す図
【図１４】実施の形態３に係る通信システムの構成を示す図
【図１５】実施の形態３に係る管理情報に格納されるデータの例を示す図
【図１６】実施の形態３に係るデータ変換処理のフローチャート
【図１７】実施の形態４に係る通信システムの構成を示す図
【図１８】実施の形態４に係る変換データ格納部に格納されるデータの一例を示す図
【発明を実施するための形態】
【００１７】
以下、本発明の実施の形態に係る通信システム１０について、図面を参照しつつ詳細に説明する。
【００１８】
（実施の形態１）
図１に示すように、実施の形態１に係る通信システム１０において、プログラマブルロジックコントローラ１とプログラマブルロジックコントローラ２とが、ネットワーク６００を介して通信する。プログラマブルロジックコントローラ１、２は、例えば、生産システム、制御システム等において稼動する検出器、被制御機器を制御する。被制御機器は、産業用ロボット用のアクチュエータとサーボモータとを含む。プログラマブルロジックコントローラ１は、第１通信装置の一例であり、プログラマブルロジックコントローラ２は、第２通信装置の一例である。また、プログラマブルロジックコントローラ１は、他の通信装置の一例であり、プログラマブルロジックコントローラ２は、通信装置の一例である。また、プログラマブルロジックコントローラ１は、第１のコンピュータの一例であり、プログラマブルロジックコントローラ２は、第２のコンピュータの一例である。
【００１９】
プログラマブルロジックコントローラ１は、ＣＰＵユニット１００と、ネットワークユニット２００とを有する。ＣＰＵユニット１００とネットワークユニット２００は、不図示の電源ユニットとともに、ベースユニットに装着され、電源ユニットから供給された電源によって動作する。ＣＰＵユニット１００とネットワークユニット２００とは共有バス３００によって接続されており、共有バス３００を介して相互に通信する。ＣＰＵユニット１００は、プログラマブルロジックコントローラ１全体を制御する。ネットワークユニット２００は、ＣＰＵユニット１００の制御の下、他のネットワークユニット、検出器、被制御機器等と通信する。
【００２０】
プログラマブルロジックコントローラ２は、ＣＰＵユニット１０１と、ネットワークユニット２０１とを含む。以下、プログラマブルロジックコントローラ１を例に説明を行うが、プログラマブルロジックコントローラ２もプログラマブルロジックコントローラ１と同様の構成を備える。
【００２１】
実施の形態１において、プログラマブルロジックコントローラ１とプログラマブルロジックコントローラ２とは、機能安全に対応した通信を行うものとする。具体的には、プログラマブルロジックコントローラ１及び２は、受信したデータが期待された時間内に到達していないと判別すると、受信したデータに含まれるコマンドを無効とみなして、受信したデータを破棄する。このため、ＣＰＵユニット１００及び１０１は相互に同期して動作する計時装置であるクロックをそれぞれ備える。ＣＰＵユニット１００及び１０１が備えるクロックについては後述する。
【００２２】
図１に示すように、ＣＰＵユニット１００はハードウェア構成として、各種データを記憶する記憶装置１１０と、ネットワークユニット２００と共有バス３００を介して通信を行う通信Ｉ／Ｆ（Interface）回路１２０と、ＣＰＵユニット１００全体を制御する演算装置１３０と、を有する。記憶装置１１０と、通信Ｉ／Ｆ回路１２０と、はいずれも内部バス１９０を介して演算装置１３０に接続されており、演算装置１３０と通信する。以下、ＣＰＵユニット１００を例に説明するが、プログラマブルロジックコントローラ２のＣＰＵユニット１０１も同様の構成を備えるものとする。
【００２３】
記憶装置１１０は、揮発性メモリと不揮発性メモリとを含み、プログラムと各種データとを記憶する。また、記憶装置１１０は、演算装置１３０のワークメモリとして用いられる。また、記憶装置１１０は、演算装置１３０が実行することにより、後述のデータ変換処理と誤り検出処理を実現するためのプログラム００１を記憶する。
【００２４】
通信Ｉ／Ｆ回路１２０は、演算装置１３０の制御の下、共有バス３００を介してネットワークユニット２００とデータの送受信を行う。通信Ｉ／Ｆ回路１２０は、演算装置１３０が出力したデータを共有バス３００を介してネットワークユニット２００に送信する。通信Ｉ／Ｆ回路１２０がネットワークユニット２００に送信するデータは、例えば、プログラマブルロジックコントローラ１のＣＰＵユニット１００がプログラマブルロジックコントローラ２のＣＰＵユニット１０１に送信するコマンドを含む。また、通信Ｉ／Ｆ回路１２０は、ネットワークユニット２００から共有バス３００を介して受信したデータを演算装置１３０に出力する。通信Ｉ／Ｆ回路１２０がネットワークユニット２００から受信したデータは、例えば、プログラマブルロジックコントローラ２のＣＰＵユニット１０１がプログラマブルロジックコントローラ１のＣＰＵユニット１００に送信したコマンドを含む。
【００２５】
演算装置１３０は、ＣＰＵ（Central Processing Unit）を含む。演算装置１３０は、記憶装置１１０に記憶されている各種プログラムを実行して、ＣＰＵユニット１００の各種機能を実現する。
【００２６】
ネットワークユニット２００はハードウェア構成として、各種データを記憶する記憶装置２１０と、通信のための通信Ｉ／Ｆ回路２２０と、ネットワークユニット２００全体を制御する演算装置２３０と、を有する。記憶装置２１０と、通信Ｉ／Ｆ回路２２０とは、いずれも内部バス２９０を介して演算装置２３０に接続されており、演算装置２３０と通信する。ネットワークユニット２００を例に説明するが、プログラマブルロジックコントローラ２のネットワークユニット２０１も同様の構成を備えるものとする。
【００２７】
記憶装置２１０は、揮発性メモリと不揮発性メモリとを含み、演算装置２３０が、ネットワークユニット２００の各種機能を実現するために実行するプログラムと各種データとを記憶する。また、記憶装置２１０は、ＣＰＵユニット１００とネットワークユニット２０１とから受信したデータを一時的に記憶する。通信Ｉ／Ｆ回路２２０は、共有バス３００を介してＣＰＵユニット１００とデータの送受信を行う。また、通信Ｉ／Ｆ回路２２０は、ＣＰＵユニット１００から供給されたデータを、ネットワークユニット２０１にネットワーク６００を介して送信する。通信Ｉ／Ｆ回路２２０は、ネットワークユニット２０１からネットワーク６００を介して受信したデータをＣＰＵユニット１００に供給する。演算装置２３０は、ＣＰＵを含む。演算装置２３０は、記憶装置２１０に記憶されているプログラムを実行してネットワークユニット２００の各種機能を実現する。
【００２８】
図２に示すように、ＣＰＵユニット１００は、機能的には、機能安全の観点から設けられた安全用クロック１１１と、安全用クロック１１１のカウンタの値の変換方式を記憶する変換方式記憶部１１２と、安全用クロック１１１のカウンタの値の変換タイミングを記憶する変換タイミング記憶部１１３と、プログラマブルロジックコントローラ２から受信したデータを記憶する受信データ記憶部１１４と、プログラマブルロジックコントローラ２に宛てたデータを記憶する送信データ記憶部１１５と、安全用クロック１１１のカウンタの値を変換するクロック値変換部１５１と、他の通信装置とやり取りするデータを生成する通信部１５２と、送受信データの誤り検出を行う誤り検出部１５３と、各種のデータ処理を行うデータ処理部１５４とを含む。
【００２９】
ＣＰＵユニット１００の変換方式記憶部１１２と変換タイミング記憶部１１３とは第１記憶手段の一例である。ＣＰＵユニット１００のクロック値変換部１５１は第１データ変換手段の一例である。ＣＰＵユニット１００の通信部１５２は第１通信手段の一例である。ＣＰＵユニット１００の誤り検出部１５３は第１誤り検出手段の一例である。
【００３０】
安全用クロック１１１は、設定された期間毎にクロックを発生するクロック発生回路と、クロック信号の発生の回数をカウントするカウンタとを有した計時装置である。図３に示すように、安全用クロック１１１は、タイムスタンプ１１１１とキャリーカウンタ１１１２との２つのカウンタを備える。タイムスタンプ１１１１は、不図示のクロック発生回路が出力したクロック信号の数を数える。キャリーカウンタ１１１２は、タイムスタンプ１１１１が桁あふれすると加算される。図示する例では、タイムスタンプ１１１１がカウントした数は、下位１６ビットに格納される。キャリーカウンタ１１１２がカウントした数は、上位３２ビットに格納される。
【００３１】
タイムスタンプ１１１１は十分に長い時間をカウントすることができるよう設計されているものとする。タイムスタンプ１１１１が十分に長い時間をカウントすることができるため、タイムスタンプ１１１１が桁あふれすることはほとんどない。この結果、キャリーカウンタ１１１２の値は初期値から変わることがほとんどなく、キャリーカウンタ１１１２の取る値は偏ったものとなってしまう。このため、実施の形態１においては、キャリーカウンタ１１１２の値を、決められたタイミングで、決められた方式で変換して、キャリーカウンタ１１１２の取る値を分散する。
【００３２】
キャリーカウンタ１１１２の値は、タイムスタンプ１１１１が桁あふれすると加算されるものの、キャリーカウンタ１１１２の値は決められたタイミングで変換されるため、キャリーカウンタ１１１２の値は、厳密にはタイムスタンプ１１１１が桁あふれした回数を示すものではない。キャリーカウンタ１１１２の値の変換については後述する。安全用クロック１１１は、図１に示す記憶装置１１０と、演算装置１３０とにより実現される。
【００３３】
図２に示すＣＰＵユニット１００の安全用クロック１１１は第１計時手段の一例である。ＣＰＵユニット１００の安全用クロックのタイムスタンプ１１１１は第１カウンタの一例である。ＣＰＵユニット１００の安全用クロック１１１のキャリーカウンタ１１１２は第２カウンタの一例である。
【００３４】
ＣＰＵユニット１０１の安全用クロック１１１も、ＣＰＵユニット１００の安全用クロック１１１と同様の構成を備える。ＣＰＵユニット１０１の安全用クロック１１１の不図示のクロック発生回路は、ＣＰＵユニット１００の安全用クロック１１１のクロック発生回路と同じタイミングでクロックを発生する。また、ＣＰＵユニット１０１の安全用クロック１１１のタイムスタンプ１１１１及びキャリーカウンタ１１１２の初期値は、ＣＰＵユニット１００の安全用クロック１１１のタイムスタンプ１１１１及びキャリーカウンタ１１１２の初期値と同じである。さらに、ＣＰＵユニット１０１においても、ＣＰＵユニット１００と同様に、キャリーカウンタ１１１２の値を、決められたタイミングで、決められた方式で変換して、キャリーカウンタ１１１２の取る値を分散する。このように、ＣＰＵユニット１０１の安全用クロック１１１のタイムスタンプ１１１１及びキャリーカウンタ１１１２の値は、ＣＰＵユニット１００の安全用クロック１１１のタイムスタンプ１１１１及びキャリーカウンタ１１１２の値と常に同じとなるように制御されている。
【００３５】
ＣＰＵユニット１０１の安全用クロック１１１は第２計時手段の一例である。ＣＰＵユニット１０１の安全用クロック１１１のタイムスタンプ１１１１は第３カウンタの一例である。ＣＰＵユニット１０１の安全用クロック１１１のキャリーカウンタ１１１２は第４カウンタの一例である。
【００３６】
まず、比較のため、図４Ａ、図４Ｂを参照して、従来の安全用クロックのカウントの方式を説明する。なお、安全用クロックのタイムスタンプ１１とキャリーカウンタ１２のそれぞれの初期値は「０」であると仮定して説明を行う。タイムスタンプ１１と安全用クロックのキャリーカウンタ１２の初期値は、例えば、プログラマブルロジックコントローラ１及び２の管理者により設定される。
【００３７】
従来は、図４Ａに示すように、下位１６ビットのタイムスタンプ１１の値が、設定された期間毎に加算されていく。図４Ｂに示すように、タイムスタンプ１１の値がカウント可能な上限値を超える、即ち桁あふれすると、キャリーカウンタ１２の値が加算され、タイムスタンプ１１の値は、初期値の０に戻る。タイムスタンプ１１の値が順次加算され、再び、タイムスタンプ１１の値が桁あふれすると、キャリーカウンタ１２の値が加算される。このように、従来は、キャリーカウンタ１２の値は、タイムスタンプ１１の値の桁あふれ回数を示していた。なお、図４Ａ、図４Ｂにおけるキャリーカウンタ１２の値とタイムスタンプ１１の値とは、１６進で示している。以降同様である。
【００３８】
あるいは、プログラマブルロジックコントローラ１及び２の管理者が、キャリーカウンタ１１１２の初期値に、「０」ではなく、カレンダーが示す日を示す値を設定する場合もある。例えば、初期値が「４月１０日」を示す値であるとする。この場合も、設定された期間毎にタイムスタンプ１１１１の値が加算され、タイムスタンプ１１の値が桁あふれしたときに、キャリーカウンタ１２が加算される。
【００３９】
ここで、タイムスタンプ１１は十分に長い時間をカウントすることができるよう設計されていることから、タイムスタンプ１１の桁あふれが発生することはあまりないと考えられる。この結果、キャリーカウンタ１２の値は初期値のまま、あるいは初期値付近の値を取ることが多いと言える。言い換えると、キャリーカウンタ１２の値として、初期値付近の値が出現する確率が高いと言える。
【００４０】
図５Ａに示すように、キャリーカウンタ１２の初期値としてゼロを設定した場合、キャリーカウンタ１２の値としてゼロ近傍の値が出現する頻度が高くなる。また、キャリーカウンタ１２が加算される頻度が低いこと、さらに、例えば、装置の再起動により、タイムスタンプ１１及びキャリーカウンタ１２の値がリセットされることもあることから、実運用上においてはキャリーカウンタ１２が取り得る値は限られている。図５Ｂに示すように、キャリーカウンタ１２の初期値として現在の日付を設定した場合、キャリーカウンタ１２の値として、初期値として設定された日付近傍の値が出現する頻度が高くなる。このように、キャリーカウンタ１２の初期値を「０」に設定した場合でも、あるいは初期値をカレンダーが示す日に設定した場合でも、図５Ａ、図５Ｂに示すように、キャリーカウンタ１２が取る値は偏ってしまう。
【００４１】
上記の実情に鑑みて、実施の形態１に係るＣＰＵユニット１００は、設定されたタイミングで安全用クロック１１１のキャリーカウンタ１１１２の値を示すビットをシフトし、キャリーカウンタ１１１２の値を変換する。設定されたタイミングでビットシフトを行うことにより、キャリーカウンタ１１１２の値は変換前とは異なる値に変わる。ＣＰＵユニット１００は、ビットシフトによりキャリーカウンタ１１１２の値を変換するので、キャリーカウンタ１１１２の値は順次加算されるわけではない。この結果、キャリーカウンタ１１１２が取る値を分散することができる。タイムスタンプ１１１１の値については、従来通り、設定された初期値から、設定された期間毎に順次加算される。タイムスタンプ１１１１の値が桁あふれすると、キャリーカウンタ１１１２の値は、ビットシフトによる変換が行われた後であれば、変換後の値から加算される。また、タイムスタンプ１１１１の値が桁あふれした時点で、ビットシフトによる変換が行われていなければ、設定された初期値から加算される。キャリーカウンタ１１１２の値の変換の具体的な方法は後述する。
【００４２】
図２に示す変換方式記憶部１１２には、安全用クロック１１１のキャリーカウンタ１１１２の値を変換する方式を示すデータを記憶する。例えば、プログラマブルロジックコントローラ１及び２の管理者が、変換方式記憶部１１２に安全用クロック１１１のキャリーカウンタ１１１２の値を変換する方式を示すデータを予め格納する。変換方式記憶部１１２は、記憶装置１１０により実現される。実施の形態１においては、前述のように、安全用クロック１１１のキャリーカウンタ１１１２の値の変換はビットシフトにより行われる。このため、変換方式記憶部１１２は、キャリーカウンタ１１１２のうち、変換の対象となるビットを特定する情報と、シフトする方向を示す情報と、シフトするビット数を示す情報とを記憶する。
【００４３】
例えば、図６に示すように、安全用クロック１１１のキャリーカウンタ１１１２の値の初期値にカレンダーの日付である「０４月０１日」がセットされているものとする。具体的には、「０」、「４」、「０」、「１」のそれぞれの１桁の１０進値が８桁の２進値に変換された値がカウンタにセットされる。変換方式記憶部１１２には、変換方式として「上位２４ビットを、右に、８ビット単位で循環シフトさせる」と記憶されているものとする。この場合、上位２４ビットが、８ビット単位で右に循環シフトされると、キャリーカウンタ１１１２の上位２４ビットが並べ変えられる。
【００４４】
例えば、図７に示す状態で、タイムスタンプ１１１１に桁あふれが生じると、キャリーカウンタ１１１２が加算される。
【００４５】
変換タイミング記憶部１１３は、安全用クロック１１１のキャリーカウンタ１１１２の値を変換するタイミングを示すデータを記憶する。例えば、プログラマブルロジックコントローラ１及び２の管理者が、変換タイミング記憶部１１３に安全用クロック１１１のキャリーカウンタ１１１２の値を変換するタイミングを示すデータを予め格納する。変換タイミング記憶部１１３は、図１に示す記憶装置１１０により実現される。図２に示す変換タイミング記憶部１１３が記憶するタイミングは、タイムスタンプ１１１１の値が加算される設定されたタイミングとは独立したタイミングである。
【００４６】
キャリーカウンタ１１１２の値を変換するタイミングは、例えば、１ミリ秒毎といったものであってもよいし、あるいは、安全用クロック１１１のタイムスタンプ１１１１が決められた回数だけカウントした場合としてもよい。また、あるいは、変換の実行タイミングは、安全用クロック１１１が桁あふれした場合としてもよい。あるいは、変換の実行タイミングは、安全用クロック１１１の設定されたビットの値が変化した場合としてもよい。なお、実施の形態１においては、安全用クロック１１１のカウンタの値の偏りをなくすことを目的としているため、キャリーカウンタ１１１２の値を変換する間隔は短く設定されていることが望ましい。
【００４７】
受信データ記憶部１１４は、ネットワークユニット２００がネットワークユニット２０１から受信したデータであって、後述の誤り検出部１５３が検査して誤りがないと判別したデータを格納する。ネットワークユニット２００がネットワークユニット２０１から受信したデータは，例えば、プログラマブルロジックコントローラ２からプログラマブルロジックコントローラ１に宛てたコマンドを含む。受信データ記憶部１１４は、図１に示す記憶装置１１０により実現される。図２に示す受信データ記憶部１１４に格納されたデータは、後述のデータ処理部１５４によって適宜処理される。
【００４８】
送信データ記憶部１１５は、プログラマブルロジックコントローラ２に宛てて送信されるデータを格納する。送信データ記憶部１１５は、図１に示す記憶装置１１０により実現される。図２に示す送信データ記憶部１１５には、後述のデータ処理部１５４が、送信用のデータを書き込む。
【００４９】
クロック値変換部１５１は、変換タイミング記憶部１１３が記憶するタイミングで、変換方式記憶部１１２が記憶する方式で、安全用クロック１１１のキャリーカウンタ１１１２の値を変換する。クロック値変換部１５１の機能は図１に示す演算装置１３０がプログラム００１を実行することにより実現される。
【００５０】
通信部１５２は、プログラマブルロジックコントローラ２に宛てて送信する送信フレームを生成する。送信フレームは、ヘッダ部と、データ部と、誤り検出符号とを含む。ヘッダ部は宛先情報を含む。データ部は、送信データ記憶部１１５に格納されているプログラマブルロジックコントローラ２に宛てたデータと安全用クロック１１１のタイムスタンプ１１１１の値とを含む。誤り検出符号は、後述の誤り検出部１５３により生成される。通信部１５２は、生成した送信フレームを共有バス３００を介してネットワークユニット２００に送信する。通信部１５２は共有バス３００を介してネットワークユニット２００からデータを受信する。ネットワークユニット２００から供給されるデータは、ネットワークユニット２００がプログラマブルロジックコントローラ２のネットワークユニット２０１から受信したデータである。通信部１５２は、図１に示す通信Ｉ／Ｆ回路１２０と演算装置１３０とにより実現される。
【００５１】
図２に示す誤り検出部１５３は、プログラマブルロジックコントローラ２に宛てて送信される送信フレームに付加するＣＲＣ（Cyclic Redundancy Check）を生成する。誤り検出部１５３は、プログラマブルロジックコントローラ２から受信した受信フレームに付加されているＣＲＣを使用した誤り検出を行う。実施の形態においては、誤り検出部１５３は、伝送路上でデータが破損したか否かの誤りチェックを、ＣＲＣを使用して行うものとする。誤り検出部１５３の機能は、図１に示す演算装置１３０がプログラム００１を実行することにより実現される。
【００５２】
具体的には、図２に示す誤り検出部１５３は、ネットワークユニット２００がネットワークユニット２０１に送信する送信フレームに付加する誤り検出符号としてＣＲＣを算出する。実施の形態１においては、図８に示すように、誤り検出部１５３は、送信データ記憶部１１５に格納されているプログラマブルロジックコントローラ２に宛てたデータと、安全用クロック１１１のタイムスタンプ１１１１の値及びキャリーカウンタ１１１２の値からＣＲＣを生成する。誤り検出部１５３は、生成したＣＲＣを通信部１５２に出力する。以下、送信側が生成したＣＲＣをＣＲＣ＿ｓと称することがある。送信側が生成したＣＲＣ＿ｓは第１誤り検出符号の一例である。
【００５３】
また、誤り検出部１５３は、図９に示すように、ネットワークユニット２００がネットワークユニット２０１から受信した受信フレームに付加されたＣＲＣ＿ｓが、受信フレームから算出したＣＲＣと一致するかを判別する。上述のように、送信側では、送信用のデータと、安全用クロック１１１のタイムスタンプ１１１１の値及びキャリーカウンタ１１１２の値からＣＲＣ＿ｓが生成されている。このため、誤り検出部１５３は、通信部１５２が受信した受信フレームのデータ部に含まれているデータと、データ部に含まれているタイムスタンプ１１１１の値と、自身の安全用クロック１１１のキャリーカウンタ１１１２の値と、からＣＲＣを生成する。以下、受信側が生成したＣＲＣをＣＲＣ＿ｒと称することがある。誤り検出部１５３は、生成したＣＲＣ＿ｒと、受信フレームに含まれるＣＲＣ＿ｓとが一致するか否かを判別する。受信側が生成したＣＲＣ＿ｒは第２誤り検出符号の一例である。
【００５４】
ＣＲＣ＿ｒと、ＣＲＣ＿ｓとが一致しない場合、誤り検出部１５３は、当該受信フレームを破棄する。当該受信フレームのデータが壊れているからである。
【００５５】
また、ＣＲＣ＿ｒと、ＣＲＣ＿ｓとが一致する場合、誤り検出部１５３は、受信データのデータ部に含まれるタイムスタンプ１１１１の値が、自身の安全用クロック１１１のタイムスタンプ１１１１が示す現在時刻より指定された時間を遡った値であるか否かを判別する。具体的には、誤り検出部１５３は、受信データに含まれるタイムスタンプ１１１１の値に指定されたオフセット時間を加算した時刻が、自身の安全用クロック１１１が示す現在時刻以前であるか否かを判別する。これは、受信データが、期待された時間内に到達したか否かを判別するためである。
【００５６】
誤り検出部１５３は、受信データに含まれるタイムスタンプ１１１１の値に指定されたオフセット時間を加算した時刻が、自身の安全用クロック１１１が示す現在時刻以前であると判別すると、受信フレームのデータを受信データ記憶部１１４に格納する。
【００５７】
一方、誤り検出部１５３は、受信データに含まれるタイムスタンプ１１１１の値に指定されたオフセット時間を加算した時刻が、自身の安全用クロック１１１が示す現在時刻以降であると、当該受信フレームを破棄する。当該受信フレームが期待された時間内に到達していないからである。
【００５８】
データ処理部１５４は、プログラマブルロジックコントローラ２に宛てたデータを送信データ記憶部１１５に格納する。データ処理部１５４は、プログラマブルロジックコントローラ２宛てのデータとして、例えば、プログラマブルロジックコントローラ２に接続された制御対象機器に対するコマンドを送信データ記憶部１１５に格納する。また、データ処理部１５４は、受信データ記憶部１１４に格納されたデータに適宜処理を行う。例えば、データ処理部１５４に格納されたデータがプログラマブルロジックコントローラ２で収集された検査データである場合、データ処理部１５４は、検査データの統計処理を行う。データ処理部１５４は、図１に示す演算装置１３０により実現される。
【００５９】
図２に示すプログラマブルロジックコントローラ２のＣＰＵユニット１０１は、ＣＰＵユニット１００と同様の構成を有するものとする。
【００６０】
プログラマブルロジックコントローラ１のＣＰＵユニット１００と、プログラマブルロジックコントローラ２のＣＰＵユニット１０１と、においては、安全用クロック１１１の値が一致する必要がある。このため、ＣＰＵユニット１０１の変換方式記憶部１１２には、ＣＰＵユニット１００の変換方式記憶部１１２と同様の変換方式に関するデータが格納されている。例えば、プログラマブルロジックコントローラ１及び２の管理者が、ＣＰＵユニット１０１の変換方式記憶部１１２に、ＣＰＵユニット１００の変換方式記憶部１１２と同様の変換方式に関するデータを格納する。ＣＰＵユニット１０１の変換タイミング記憶部１１３には、ＣＰＵユニット１００の変換タイミング記憶部１１３と同様の変換のタイミングに関する情報が格納されている。よって、プログラマブルロジックコントローラ２のＣＰＵユニット１０１においても、プログラマブルロジックコントローラ１のＣＰＵユニット１００と、同じタイミングで、同じ方式で、安全用クロック１１１のキャリーカウンタの値が変換される。この結果、ＣＰＵユニット１００の安全用クロック１１１の値と、ＣＰＵユニット１０１の安全用クロック１１１の値とは常に一致したものとなる。ＣＰＵユニット１００及び１０１はそれぞれビットシフトにより自身の安全用クロック１１１のキャリーカウンタ１１１２の値を変換する。よって、ＣＰＵユニット１００及び１０１それぞれのキャリーカウンタ１１１２の値は順次加算されるわけではない。この結果、キャリーカウンタ１１１２が取る値を分散することができる。なお、プログラマブルロジックコントローラ１の安全用クロック１１１と、プログラマブルロジックコントローラ２の安全用クロック１１１とには、同じ値の初期値が設定される必要がある。
【００６１】
ＣＰＵユニット１０１の変換方式記憶部１１２と変換タイミング記憶部１１３とは第２記憶手段の一例である。ＣＰＵユニット１０１のクロック値変換部１５１は第２データ変換手段の一例である。ＣＰＵユニット１０１の通信部１５２は第２通信手段の一例である。ＣＰＵユニット１０１の誤り検出部１５３は第２誤り検出手段の一例である。
【００６２】
ネットワークユニット２００は、機能的には、ＣＰＵユニット１００と共有バス通信を行い、ネットワークユニット２０１と通信する通信部２２１を含む。
【００６３】
通信部２２１は、共有バス３００を介して、ＣＰＵユニット１００とデータの送受信を行う。さらに、通信部２２１は、ネットワーク６００を介して、ネットワークユニット２０１と通信する。例えば、通信部２２１は、共有バス３００を介して、ＣＰＵユニット１００からプログラマブルロジックコントローラ２に宛てたデータを受信する。通信部２２１は、受信した当該データを、ネットワーク６００を介してネットワークユニット２０１に送信する。また、通信部２２１は、ネットワーク６００を介して、ネットワークユニット２０１からデータを受信する。通信部２２１は、受信した当該データを共有バス３００を介してＣＰＵユニット１００に送信する。通信部２２１は、図１に示す記憶装置２１０と通信Ｉ／Ｆ回路２２０と演算装置２３０とにより実現される。
【００６４】
ネットワーク６００は、例えば、イーサネット（登録商標）といった規格のＬＡＮ（Lacal Area Network）である。
【００６５】
次に、図２に示すクロック値変換部１５１が行う変換処理を説明する。図１０に示すように、クロック値変換部１５１は、変換タイミング記憶部１１３に記憶された変換を実行されたタイミングであるか否かを判別する（ステップＳ１１）。変換を実行するタイミングであると判別すると（ステップＳ１１；Ｙｅｓ）、クロック値変換部１５１は、クロック値の変換を実行する（ステップＳ１２）。
【００６６】
変換方式記憶部１１２に、変換方式として「上位２４ビットを、右に、８ビット単位で循環シフトさせる」と記憶されていると仮定する。この場合、クロック値変換部１５１は、図６に示すように、安全用クロック１１１のカウンタの値の上位２４ビットを、８ビット単位に右に循環シフトする。従って、安全用クロック１１１のキャリーカウンタ１１１２の値が変換後の値に書き換えられる。図１０に示すように、クロック値変換部１５１は、再び、ステップＳ１１の処理に進む。
【００６７】
一方、ステップＳ１１で変換を実行するタイミングでないと判別すると（ステップＳ１１；Ｎｏ）、クロック値変換部１５１は、実行のタイミングが来るまで待機する。
【００６８】
また、ＣＰＵユニット１０１においては、ＣＰＵユニット１００と同じタイミングで同様の方法で安全用クロック１１１のキャリーカウンタ１１１２の値を変換している。このため、ＣＰＵユニット１００の安全用クロック１１１のキャリーカウンタ１１１２の値と、ＣＰＵユニット１０１の安全用クロック１１１のキャリーカウンタ１１１２の値とは、同じように、分散されることになる。
【００６９】
以上が実施の形態１に係る構成である。実施の形態１では、安全用クロック１１１が有するカウンタのうちキャリーカウンタ１１１２の値をビットシフトした値で置き換えた。安全用クロック１１１のカウンタの設定された範囲の値を変換することで、安全用クロック１１１のカウンタの値の出現頻度を分散させることができる。しかし、安全用クロック１１１のカウンタの値は別の方法で変換してもよい。
【００７０】
（実施の形態２）
実施の形態２における安全用クロックの値の変換は、あらかじめ設定された生成方法で生成した乱数で、安全用クロック１１１のカウンタの値を置き換えることによって行う。以下、実施の形態１と異なる点を中心に説明を行う。
【００７１】
図２に示す安全用クロック１１１は、実施の形態１と同様に、設定された期間毎にクロックを発生するクロック発生回路と、クロック信号の発生の回数をカウントするカウンタとを有する。図１１に示すように、実施の形態２に係る安全用クロック１１１は、タイムスタンプ１１１１とキャリーカウンタ１１１２との２つのカウンタを備える。タイムスタンプ１１１１は、不図示のクロック発生回路が出力したクロック信号の数を数える。キャリーカウンタ１１１２は、タイムスタンプ１１１１の桁あふれをカウントする。さらに、安全用クロック１１１は、設定されたタイミングで値が書き換えられる領域であるスクランブル領域１１１３を有する。図１１に、実施の形態２における安全用クロック１１１のカウンタが保持するビット列の構成を示す。下位１６ビットがタイムスタンプ１１１１の領域として割り当てられている点は、図３に示す実施の形態１と同様である。上位３２ビットのうち、８ビットはキャリーカウンタ１１１２の領域として割り当てられている。上位ビット３２ビットのうちの残りの２４ビットは、スクランブル領域１１１３として割り当てられている。実施の形態２においては、決められたタイミングで、スクランブル領域１１１３の値が生成された乱数の値で置き換えられる。
【００７２】
実施の形態１とは、キャリーカウンタ１１１２の割り当てビット数は異なるものの、図１２に示すように、タイムスタンプ１１１１が桁あふれすると、キャリーカウンタ１１１２の値が加算される。
【００７３】
図２に示す変換方式記憶部１１２には、図１１に示すスクランブル領域１１１３のうち変換の対象とする範囲と、乱数生成アルゴリズムと、乱数生成のためのシードと、が定義されている。例えば、変換方式記憶部１１２に、対象範囲が上位２４ビットであり、乱数生成アルゴリズムとして「アルゴリズム２０００」を使用し、シードとして「シード３０００」を使用することが定義されているとする。この場合、生成した乱数で指定された範囲を置き換えると、例えば、図１３のように、安全用クロック１１１のスクランブル領域１１１３の値が変換される。
【００７４】
ＣＰＵユニット１００及び１０１のそれぞれの安全用クロック１１１のカウンタの値を一致させなくてはいけない。このため、図２に示す変換方式記憶部１１２に格納される乱数生成アルゴリズムは、ＣＰＵユニット１００及び１０１が、同じシードを使用した場合に同じ値を得ることができるアルゴリズムである必要がある。
【００７５】
さらに、実施の形態２においては、安全用クロック１１１のカウンタの値の偏りをなくすことを目的としているため、生成した乱数を０と１とを含むビット列にした場合の、０と１の出現率が均等となり、乱数生成アルゴリズムの評価テストをパスした乱数生成アルゴリズムを選定することが望ましい。
【００７６】
変換タイミング記憶部１１３には、図１１に示す安全用クロック１１１のスクランブル領域１１１３の指定された範囲の値を変換するタイミングが記憶されている。
【００７７】
クロック値変換部１５１は、変換タイミング記憶部１１３が記憶するタイミングで、変換方式記憶部１１２において指定されている乱数生成アルゴリズムとシードとから乱数を生成する。クロック値変換部１５１は、スクランブル領域１１１３において、変換方式記憶部１１２において指定された範囲の値を、生成した乱数を示す０と１とを含むビット列で置き換える。このようにして、安全用クロック１１１のスクランブル領域１１１３の値が変換される。よって、実施の形態２においても、安全用クロック１１１のキャリーカウンタ１１１２が取る値を分散させることができる。実施の形態２におけるクロック値変換部１５１の変換のフローは、図１０に示す実施の形態１と同様である。
【００７８】
また、乱数生成アルゴリズムによっては初期化処理が必要なものもある。変換方式記憶部１１２で指定された乱数生成アルゴリズムが初期化処理を必要とする場合、クロック値変換部１５１は、変換タイミング記憶部１１３で指定されたタイミングより前に初期化処理を行っておく。
【００７９】
（実施の形態３）
実施の形態１のビットシフトより、実施の形態２の乱数生成の方が、安全用クロック１１１の偏りの抑制には効果があるが、乱数生成を使用した変換の方法を採用することは、ＣＰＵユニット１００及び１０１にとって処理の負荷が高い。処理の負荷の観点から、ＣＰＵユニット１００及び１０１の処理性能に応じて、ビットシフトを使用した変換の方法を採用する方が好ましいこともある。このように、複数のＣＰＵユニットそれぞれが、個々の性能に応じて、ビットシフトあるいは乱数生成による変換方式を採用することが望ましい場合もある。
【００８０】
また、実施の形態１、２では、ＣＰＵユニット１００及び１０１がそれぞれ、安全用クロック１１１のカウンタの値を変換する方式を変換方式記憶部１１２に、変換のタイミングを変換タイミング記憶部１１３に記憶している。しかし、ＣＰＵユニット１００の数が多くなれば、管理者が各ＣＰＵユニット１００に変換の方式と変換タイミングとを設定する必要があり、手間がかかる。
【００８１】
このため、実施の形態３では、安全用クロックのカウンタの値の変換について管理する側の通信装置と、安全用クロックのカウンタの値の変換について管理される側の通信装置と、をあらかじめ決め、管理する側の通信装置が、管理される側の通信装置に、安全用クロックの値の変換方式及び変換タイミングを通知するものとする。
【００８２】
図１４に実施の形態３に係る通信システム５０の構成を示す。プログラマブルロジックコントローラ１は、管理する側の通信装置である。プログラマブルロジックコントローラ３及び４は、管理される側の通信装置である。プログラマブルロジックコントローラ１、３及び４は、ネットワーク６００を介して相互に通信可能である。以下実施の形態１、２と異なる点を中心に説明する。
【００８３】
実施の形態３において、プログラマブルロジックコントローラ１のＣＰＵユニット１００は、プログラマブルロジックコントローラ３との通信に使用する安全用クロック１１１と、プログラマブルロジックコントローラ４との通信に使用する安全用クロック１１６とを有する。
【００８４】
安全用クロック１１１は図３に示す構成を備え、安全用クロック１１６は図１１に示す構成を備えるものとする。ＣＰＵユニット１００は、安全用クロック１１１の値をビットシフトにより変換し、安全用クロック１１６の値を乱数で置き換えて変換するものとする。
【００８５】
また、実施の形態３において、ＣＰＵユニット１００は、実施の形態１及び２における変換方式記憶部１１２及び変換タイミング記憶部１１３の代わりに、管理情報１１７を備える。管理情報１１７は、管理する側のプログラマブルロジックコントローラ１が、管理される側のプログラマブルロジックコントローラ３及び４に通知する安全用クロックの値の変換方式及び変換タイミングを示す情報を格納する。図１５に示すように、管理情報１１７は、管理対象のプログラマブルロジックコントローラを識別する情報と、管理対象が有する安全用クロックを識別する情報と、安全用クロックの値を変換する変換方式を示す情報と、変換タイミングを示す情報と、を定義する。
ここで、安全用クロック１１１と、後述のプログラマブルロジックコントローラ３のＣＰＵユニット１０２が有する安全用クロック１１１ａとは、同じ値を取る必要がある。安全用クロック１１６と、後述のプログラマブルロジックコントローラ４のＣＰＵユニット１０３が有する安全用クロック１１６ａとは、同じ値を取る必要がある。このため、管理情報１１７には、プログラマブルロジックコントローラ３の安全用クロック１１１ａについて、安全用クロック１１１と同様の変換方式及び変換タイミングを示す情報が格納されている。管理情報１１７には、プログラマブルロジックコントローラ４の安全用クロック１１６ａについて、安全用クロック１１６と同様の変換方式及び変換タイミングを示す情報が格納されている。なお、ＣＰＵユニット１００は、安全用クロック１１１と安全用クロック１１１ａとが対応し、安全用クロック１１６と安全用クロック１１６ａとが対応することを示す情報を予め記憶しているものとする。管理情報１１７は図１に示す記憶装置１１０により実現される。管理情報１１７は第１記憶手段の一例である。
【００８６】
図１４に示すクロック値変換部１５１は、管理情報１１７に定義された変換方式と変換タイミングとに従って、安全用クロック１１１及び１１６の値を変換する。
【００８７】
さらに、クロック値変換部１５１は、管理情報１１７が示す管理対象のプログラマブルロジックコントローラに、管理情報１１７に定義された変換方式と変換のタイミングとを通知する。クロック値変換部１５１は、管理対象毎の定義された変換方式と変換のタイミングとを示す情報を通信部１５２に出力する。従って、通信部１５２は、データ変換指示であることを示す特定のコマンドと、変換方式と変換タイミングとを示す情報とを含むフレームを生成して、生成したフレームをネットワークユニット２００に送信する。ネットワークユニット２００は、ＣＰＵユニット１００から供給されたフレームをネットワークユニット２０２及び２０３に送信する。クロック値変換部１５１は通知手段の一例である。
【００８８】
プログラマブルロジックコントローラ１の一方の管理対象であるプログラマブルロジックコントローラ３のＣＰＵユニット１０２は、安全用クロック１１１ａを有している。安全用クロック１１１ａは、安全用クロック１１１と同様に、図３に示す構成を備えるものとする。安全用クロック１１１ａは、ＣＰＵユニット１００の安全用クロック１１１と同じ値を取るよう制御される。
【００８９】
また、ＣＰＵユニット１０２においては、クロック値変換部１５１ａは、安全用クロック１１１ａの値を、ＣＰＵユニット１００から通知された変換方式と変換のタイミングとで変換する。通信部１５２ａは、ネットワークユニット２０２がネットワークユニット２００から特定のコマンドを含むフレームを受信した場合、そのフレームに含まれる変換方式と変換のタイミングとを示す情報を、クロック値変換部１５１ａに供給する。ＣＰＵユニット１０２は、実施の形態１のＣＰＵユニット１００及び１０１が有している変換方式記憶部１１２及び変換タイミング記憶部１１３を有していない。
【００９０】
プログラマブルロジックコントローラ１の他方の管理対象であるプログラマブルロジックコントローラ４のＣＰＵユニット１０３は、安全用クロック１１６ａを有している。
安全用クロック１１６ａは、安全用クロック１１６と同様に、図１１に示す構成を備えるものとする。安全用クロック１１６ａは、ＣＰＵユニット１００の安全用クロック１１６と同じ値を取るよう制御される。ＣＰＵユニット１０３のクロック値変換部１５１ａ、通信部１５２ａの構成は、ＣＰＵユニット１０２と同様である。ＣＰＵユニット１０３は、ＣＰＵユニット１０２と同様に、実施の形態１に係る変換方式記憶部１１２及び変換タイミング記憶部１１３を有していない。
【００９１】
なお、ＣＰＵユニット１０２及び１０３について、実施の形態１及び２のＣＰＵユニット１００及び１０１と同様の符号を付した構成について、実施の形態３で特に言及しない構成については、実施の形態１、２とほぼ同様であるものとする。
【００９２】
上記構成を有するＣＰＵユニット１００と１０２と１０３とは、図１６に示すように、データ変換の処理を行う。
【００９３】
まず、ＣＰＵユニット１００におけるデータ変換の処理を説明する。ＣＰＵユニット１００は管理する側であるので（ステップＳ２１；Ｙｅｓ）、ＣＰＵユニット１０２、１０３に対して、管理情報１１７にそれぞれ定義された変換方式と変換タイミングとを通知する（ステップＳ２２）。ＣＰＵユニット１０２、１０３から、変換が可能である旨の応答があれば、変換の方式と変換タイミングとが確定したと判別して（ステップＳ２３；Ｙｅｓ）、次のステップの処理を行う。ステップＳ２４において、ＣＰＵユニット１００は変換を実行するタイミングであると判別すると（ステップＳ２４；Ｙｅｓ）、ＣＰＵユニット１０２、１０３に割り当てられた安全用クロック１１１、１１６の値の変換処理を実行する（ステップＳ２５）。以上が、ＣＰＵユニット１００の処理である。なお、ステップＳ２３において、ＣＰＵユニット１００は、ＣＰＵユニット１０２、１０３のうち、変換が可能である旨の応答があったいずれか、あるいは両方のための安全用クロックの値の変換処理を行う。一方、ステップＳ２３において、ＣＰＵユニット１０２、１０３から、変換が可能である旨の応答がない場合、あるいは、変換が不可能である旨の応答があった場合、ＣＰＵユニット１００は、変換の方式と変換タイミングとが確定していないと判別して（ステップＳ２３；Ｎо）、再びステップＳ２１の処理に戻る。
【００９４】
また、管理される側の一方のＣＰＵユニット１０２におけるデータ変換の処理を説明する。ＣＰＵユニット１０２は管理する側ではないので（ステップＳ２１；Ｎо）、データ変換方式と変換タイミングをＣＰＵユニット１００から受信したか否かを判別する（ステップＳ２６）。受信した場合（ステップＳ２６；Ｙｅｓ）、ＣＰＵユニット１０２は、変換処理が可能であるか否かを判別し、判別した結果をＣＰＵユニット１００に通知する（ステップＳ２７）。例えば、指定される変換の間隔が短いため処理負荷の面から処理を行うことができない、乱数生成のアルゴリズムのプログラムを有していない、といった場合には、変換処理が不可能であると判別する。一方、変換処理が可能であると判別した場合、変換の方式と変換タイミングとが確定したことになるので（ステップＳ２３；Ｙｅｓ）、ＣＰＵユニット１０２は、ステップＳ２４以降の処理を行い、安全用クロック１１１ａの値の変換を行う。管理される側の他方のＣＰＵユニット１０３もＣＰＵユニット１０２と同様の処理を行う。
【００９５】
（実施の形態４）
実施の形態３では、ＣＰＵユニット１００が２つの安全用クロック１１１及び１１６を有する。ここで、安全用クロック１１１及び１１６は、データが期待された時間内に到着したかの判別にも使用されるため、高い精度で計時できることが要求される。このため、ＣＰＵユニット１００が安全用クロック１１１及び１１６用にそれぞれ高精度の計時用素子を備える必要があり、コストがかさむ。
【００９６】
実施の形態４では、管理する側の通信装置であるＣＰＵユニット１００が１つの安全用クロック１１１だけを有し、管理対象のＣＰＵユニット１０２及び１０３のそれぞれの安全用クロックのデータ変換を管理する構成を説明する。
【００９７】
実施の形態３と異なり、図１７に示すように、実施の形態４に係るＣＰＵユニット１００は、１つの安全用クロック１１１のみを有する。実施の形態４においても、ＣＰＵユニット１００は、図１５に示す管理情報１１７を備えるものとする。
【００９８】
クロック値変換部１５１は、図１５に示す管理情報１１７が記憶するタイミングと変換方式で、安全用クロック１１１の値を変換した値を求め、求めた値を変換データ格納部１１８に格納する。ＣＰＵユニット１００は、ＣＰＵユニット１０２及び１０３を管理するため、それぞれの安全用クロックのためのデータ変換を行った値を変換データ格納部１１８に保存する。変換データ格納部１１８には、ＣＰＵユニット１０２の安全用クロック１１１ａの値と同じ値と、ＣＰＵユニット１０３の安全用クロック１１６ａの値と同じ値とが保持されることになる。
【００９９】
具体的には、クロック値変換部１５１は、ＣＰＵユニット１０２の安全用クロック１１１ａの変換タイミングと同じタイミングで、安全用クロック１１１ａの変換方式と同じ変換方式を使用して安全用クロック１１１の値を変換した値を求める。クロック値変換部１５１は、図１８に示すように、求めた値を管理対象及び管理対象が有する安全用クロックを識別する情報とともに変換データ格納部１１８に格納する。ＣＰＵユニット１０２においても、ＣＰＵユニット１００と同じ変換タイミングとで、同じ変換方式を使用して安全用クロック１１１ａの値を変換している。このため、変換データ格納部１１８に格納されている値は、ＣＰＵユニット１０２の安全用クロック１１１ａの値と一致する。
【０１００】
また、クロック値変換部１５１は、ＣＰＵユニット１０３の安全用クロック１１６ａの変換タイミングと同じタイミングで、安全用クロック１１６ａの変換方式と同じ変換方式を使用して安全用クロック１１１の値を変換した値を求め、求めた値を変換データ格納部１１８に格納する。ＣＰＵユニット１０３はＣＰＵユニット１００と同じ変換タイミングで、同じ変換方式を使用して安全用クロック１１６ａの値を変換している。このため、変換データ格納部１１８に格納された値は、ＣＰＵユニット１０３の安全用クロック１１６ａの値と一致する。
【０１０１】
プログラマブルロジックコントローラ３、４との通信の際には、誤り検出部１５３は、安全用クロック１１１のキャリーカウンタ１１１２の値ではなく、変換データ格納部１１８に格納された、相手先に対応づけられた変換後のキャリーカウンタ１１１２の値を使用してＣＲＣの生成、誤り検出を行う。以上が実施の形態４に係る構成である。
【０１０２】
以上説明したように、実施の形態１〜４においては、ＣＰＵユニット１００の安全用クロックの指定された範囲の値と、ＣＰＵユニット１００の通信先のＣＰＵユニット１０１、１０２、１０３の安全用クロックの指定された範囲の値と、を同じタイミングで、同じ方法で別の値に置き換える。従って、置き換え後の安全用クロックの値を一致させつつ、安全用クロックの値の偏りを低減することができる。よって、安全用クロックの値が誤り検出の対象となる場合に残存エラー率を下げることができる。
【０１０３】
実施の形態１においては、キャリーカウンタ１１１２の値を置き換えるためビットシフトを使用する。このため、ＣＰＵユニット１００に負荷をかけず、残存エラー率を低減することが可能である。
【０１０４】
実施の形態２においては、生成した乱数でキャリーカウンタ１１１２の値を置き換えるため、ビットシフトによる方法に比べ、安全用クロック１１１の値をより分散させることができる。よって、残存エラー率の低減に高い効果を奏する。
【０１０５】
実施の形態３においては、データ変換処理方式および実行タイミングを通信で共有することにより、個々の通信装置への設定を行う必要がない。また、マスタとスレーブのそれぞれの処理性能に応じて適したデータ変換処理方式を選択することができる。例えば、処理性能の低い通信装置との通信においては、処理負荷が高い乱数の生成ではなく、ビットシフトの方法を採用することができる。このようにして、既存の通信装置にも、上述した実施の形態に係る構成を採用することができる。
【０１０６】
実施の形態４では、キャリーカウンタの値を直接書き換えないため、安全用クロックの値は、例えば、カレンダーデータ通りの時間を示している。このため、安全用クロックの値を、ある通信装置からデータが期待時間内に他の通信装置に到着しているかを確認するといった、他の用途でも使用することができるようになる。また、マスタは、安全用クロックのため、高精度な計時素子を１つだけ有すればよいので、安全用クロックを複数有する場合に比べ、コストを抑えることができる。
【０１０７】
実施の形態１〜４において、プログラマブルロジックコントローラ１〜４が相互に通信を行う例を説明したが、これに限られない。例えば、プログラマブルロジックコントローラ１だけがデータを送信する機能を備え、プログラマブルロジックコントローラ２〜４は、データを受信するだけの構成であってもよい。この場合、送信側のプログラマブルロジックコントローラ１は、誤り検出符号を生成し、誤り検出符号と自身の安全用クロックのタイムスタンプとを含むフレームを他のプログラマブルロジックコントローラに送信する。受信側のプログラマブルロジックコンローラ２〜４は、プログラマブルロジックコントローラ１から受信したタイムスタンプと自信の安全用クロックのキャリーカウンタとから誤り検出符号を生成し、生成した誤り検出符号とプログラマブルロジックコントローラ１から受信した誤り検出符号とが一致するか否かを判別すればよい。
【０１０８】
上記の実施の形態１〜４においては、ＣＰＵユニットが安全用クロックを有し、安全用クロックの値を変換する処理を行う例を説明したが、ＣＰＵユニットではなく、ネットワークユニットが上述した変換処理を行うように構成してもよい。
【０１０９】
上記のデータ変換処理に係るプログラムを記録する記録媒体としては、磁気ディスク、光ディスク、光磁気ディスク、フラッシュメモリ、半導体メモリ、磁気テープを含むコンピュータ読取可能な記録媒体を使用することができる。
【０１１０】
本発明は、広義の精神と範囲を逸脱することなく、様々な実施形態及び変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施形態ではなく、請求の範囲によって示される。そして、請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。
【符号の説明】
【０１１１】
００１  プログラム、１，２，３，４  プログラマブルロジックコントローラ、１０，５０  通信システム、１１、１１１１  タイムスタンプ、１２、１１１２  キャリーカウンタ、１００，１０１，１０２，１０３  ＣＰＵユニット、１１０，２１０  記憶装置、１１１，１１１ａ，１１６，１１６ａ  安全用クロック、１１２  変換方式記憶部、１１３  変換タイミング記憶部、１１４  受信データ記憶部、１１５  送信データ記憶部、１１７  管理情報、１１８  変換データ格納部、１２０，２２０  通信Ｉ／Ｆ回路、１３０，２３０  演算装置、１５１，１５１ａ  クロック値変換部、１５２，１５２ａ，２２１  通信部、１５４  データ処理部、１５３  誤り検出部、１９０，２９０  内部バス、２００，２０１，２０２，２０３  ネットワークユニット、３００  共有バス、６００  ネットワーク、１１１３  スクランブル領域、２０００  アルゴリズム、３０００  シード
【図１】
2020049698.tif 000003
【図２】
2020049698.tif 000004
【図３】
2020049698.tif 000005
【図４Ａ】
2020049698.tif 000006
【図４Ｂ】
2020049698.tif 000007
【図５Ａ】
2020049698.tif 000008
【図５Ｂ】
2020049698.tif 000009
【図６】
2020049698.tif 000010
【図７】
2020049698.tif 000011
【図８】
2020049698.tif 000012
【図９】
2020049698.tif 000013
【図１０】
2020049698.tif 000014
【図１１】
2020049698.tif 000015
【図１２】
2020049698.tif 000016
【図１３】
2020049698.tif 000017
【図１４】
2020049698.tif 000018
【図１５】
2020049698.tif 000019
【図１６】
2020049698.tif 000020
【図１７】
2020049698.tif 000021
【図１８】
2020049698.tif 000022
【手続補正書】
【提出日】平成31年4月22日(2019.4.22)
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本発明は、通信システム、通信装置、及びプログラムに関する。
【手続補正３】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１通信装置と第２通信装置とが相互に通信する通信システムであって、
前記第１通信装置は、
時間経過をカウントする第１カウンタと、前記第１カウンタの桁あふれをカウントする第２カウンタとを備える第１計時手段と、
予め設定されたタイミングで、予め設定された方式を使用して生成した値で、前記第２カウンタの値を置き換えて、前記第２カウンタが取る値を分散させる第１データ変換手段と、
前記第１カウンタの値と、前記第２カウンタの値とから第１誤り検出符号を生成する第１誤り検出手段と、
前記第２通信装置へ宛てたデータに前記第１カウンタの値と前記第１誤り検出符号とを付加したフレームを生成し、生成した前記フレームを前記第２通信装置に送信する第１通信手段と、
を有し、
前記第２通信装置は、
時間経過をカウントする第３カウンタと、前記第３カウンタの桁あふれをカウントする第４カウンタとを備える第２計時手段と、
前記設定されたタイミングで、前記設定された方式を使用して生成した値で、前記第４カウンタの値を置き換えて、前記第４カウンタが取る値を分散させる第２データ変換手段と、
前記第１通信装置から前記フレームを受信する第２通信手段と、
前記フレームに含まれる前記第１カウンタの値と、前記第２計時手段の前記第４カウンタの値と、から第２誤り検出符号を生成し、生成した前記第２誤り検出符号が、前記フレームに含まれる前記第１誤り検出符号に対して設定された条件を満たすか否かを判別する第２誤り検出手段と、
を有する、
通信システム。
【請求項２】
前記第２カウンタの初期値と前記第４カウンタの初期値とは同じである、
請求項１に記載の通信システム。
【請求項３】
前記第１データ変換手段は、前記第２カウンタの値の指定された範囲の値を、指定された方向に、指定されたビット数だけシフトさせた値で置き換え、
前記第２データ変換手段は、前記第１データ変換手段と同一の方法で、前記第４カウンタの値の置き換えを行う、
請求項１又は２に記載の通信システム。
【請求項４】
前記第１データ変換手段は、前記第２カウンタの値の指定された範囲の値を、指定された生成方法で生成した乱数で、置き換え、
前記第２データ変換手段は、前記第１データ変換手段と同一の方法で、前記第４カウンタの値の置き換えを行う、
請求項１又は２に記載の通信システム。
【請求項５】
前記第１通信装置の前記第１誤り検出手段は、前記第２通信装置へ宛てた前記データと、前記第１カウンタの値と、前記第２カウンタの値とから前記第１誤り検出符号を生成し、
前記第２通信装置の前記第２誤り検出手段は、前記フレームに含まれる前記第２通信装置へ宛てた前記データと、前記フレームに含まれる前記第１カウンタの値と、前記第２計時手段の前記第４カウンタの値と、から前記第２誤り検出符号を生成する、
請求項１から４のいずれか１項に記載の通信システム。
【請求項６】
前記第２誤り検出手段は、生成した前記第２誤り検出符号が、前記フレームに含まれる前記第１誤り検出符号に対して設定された条件を満たさないと判別すると、前記フレームを破棄する、
請求項１から５のいずれか１項に記載の通信システム。
【請求項７】
前記第２誤り検出手段は、生成した前記第２誤り検出符号が、前記フレームに含まれる前記第１誤り検出符号と一致するか否かを判別する、
請求項１から６のいずれか１項に記載の通信システム。
【請求項８】
前記第２誤り検出手段は、前記第３カウンタの値が示す時刻と、前記フレームに含まれる前記第１カウンタの値が示す時刻と、から前記フレームが設定された時間内に前記第２通信装置に到達したか否かを判別し、前記フレームが設定された時間内に前記第２通信装置に到達していないと判別すると、前記フレームを破棄する、
請求項１から７のいずれか１項に記載の通信システム。
【請求項９】
前記第１通信装置は、
前記設定されたタイミングを示す情報と、前記設定された方式を示す情報とを記憶する第１記憶手段、
を有し、
前記第２通信装置は、
前記設定されたタイミングを示す情報と、前記設定された方式を示す情報とを記憶する第２記憶手段、
を有する、
請求項１から８のいずれか１項に記載の通信システム。
【請求項１０】
前記第１通信装置は、
前記設定されたタイミングを示す情報と、前記設定された方式を示す情報とを記憶する第１記憶手段と、
前記第２通信装置に、前記第１記憶手段に格納した情報を提供する通知手段と、
を有する、
請求項１から８のいずれか１項に記載の通信システム。
【請求項１１】
他の通信装置と通信する通信装置であって、
前記他の通信装置は、時間経過をカウントする第１カウンタと、前記第１カウンタの桁あふれをカウントする第２カウンタとを備えており、予め設定されたタイミングで、予め設定された方式を使用して生成した値で、前記第２カウンタの値を置き換えて、前記第２カウンタが取る値を分散させ、前記第１カウンタの値と、前記第２カウンタの値とから第１誤り検出符号を生成し、前記通信装置へ宛てたデータに前記第１カウンタの値と前記第１誤り検出符号とを付加したフレームを生成し、生成した前記フレームを前記通信装置に送信し、
前記通信装置は、
時間経過をカウントする第３カウンタと、前記第３カウンタの桁あふれをカウントする第４カウンタとを備える第２計時手段と、
前記設定されたタイミングで、前記設定された方式を使用して生成した値で、前記第４カウンタの値を置き換えて、前記第４カウンタが取る値を分散させる第２データ変換手段と、
前記他の通信装置から前記フレームを受信する第２通信手段と、
前記フレームに含まれる前記第１カウンタの値と、前記第２計時手段の前記第４カウンタの値と、から第２誤り検出符号を生成し、生成した前記第２誤り検出符号が、前記フレームに含まれる前記第１誤り検出符号に対して設定された条件を満たすか否かを判別する第２誤り検出手段と、
を有する、
通信装置。
【請求項１２】
第１のコンピュータと第２のコンピュータとが相互に通信する通信システムにおいて、
前記第１のコンピュータに、時間経過をカウントする第１カウンタと、前記第１カウンタの桁あふれをカウントする第２カウンタとを備える第１計時手段を実現させ、
前記第１のコンピュータに、予め設定された方法で前記第２カウンタの値を分散させ、
前記第１のコンピュータに、前記第１カウンタの値と、前記第２カウンタの値とから第１誤り検出符号を生成させ、前記第２のコンピュータへ宛てたデータに前記第１カウンタの値と前記第１誤り検出符号とを付加したフレームを生成させ、前記フレームを前記第２のコンピュータに送信させ、
前記第２のコンピュータに、時間経過をカウントする第３カウンタと、前記第３カウンタの桁あふれをカウントする第４カウンタとを備える第２計時手段を実現させ、
前記第２のコンピュータに、前記第１のコンピュータと同じ方法で前記第４カウンタの値を分散させ、
前記第２のコンピュータに、前記第１のコンピュータから送信された前記フレームに含まれる前記第１カウンタの値と、前記第２計時手段の前記第４カウンタの値と、から第２誤り検出符号を生成させ、前記第２誤り検出符号が前記フレームに含まれる前記第１誤り検出符号に対して設定された条件を満たすか否かを判別させる、
プログラム。
【国際調査報告】
2020049698.tif 000023
2020049698.tif 000024
2020049698.tif 000025