JP6545427B1 - 通信システム、通信装置、及びプログラム - Google Patents

通信システム、通信装置、及びプログラム Download PDF

Info

Publication number
JP6545427B1
JP6545427B1 JP2019521506A JP2019521506A JP6545427B1 JP 6545427 B1 JP6545427 B1 JP 6545427B1 JP 2019521506 A JP2019521506 A JP 2019521506A JP 2019521506 A JP2019521506 A JP 2019521506A JP 6545427 B1 JP6545427 B1 JP 6545427B1
Authority
JP
Japan
Prior art keywords
value
counter
error detection
unit
communication device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019521506A
Other languages
English (en)
Other versions
JPWO2020049698A1 (ja
Inventor
直輝 伊藤
直輝 伊藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP6545427B1 publication Critical patent/JP6545427B1/ja
Publication of JPWO2020049698A1 publication Critical patent/JPWO2020049698A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • H04L1/1671Details of the supervisory signal the supervisory signal being transmitted together with control information
    • H04L1/1678Details of the supervisory signal the supervisory signal being transmitted together with control information where the control information is for timing, e.g. time stamps

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Programmable Controllers (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

CPUユニット(100)のクロック値変換部(151)は、CPUユニット(100)の安全用クロック(111)のキャリーカウンタの値を置き換えて、キャリーカウンタが取る値を分散させる。CPUユニット(100)は、タイムスタンプの値と、タイムスタンプの値とキャリーカウンタの値とから生成された第1誤り検出符号と、を含むフレームをCPUユニット(101)に送信する。CPUユニット(101)のクロック値変換部(151)は、CPUユニット(100)と同様に、CPUユニット(101)の安全用クロック(111)のキャリーカウンタの値を分散させる。CPUユニット(101)の誤り検出部(153)は、受信したタイムスタンプの値とCPUユニット(101)の安全用クロック(111)のキャリーカウンタの値とから生成した第2誤り検出符号が、第1誤り検出符号に対して設定された条件を満たすか否かを判別する。

Description

本発明は、通信システム、通信装置、及びプログラムに関する。
ファクトリーオートメーションの分野では、機能安全の観点から通信の信頼性を高めることが要望されている。ここで、機能安全とは、安全を確保する機能を導入して、実現される許容可能なレベルの安全のことである。
通信の信頼性の向上のためリアルタイム性が要望されている。工場内の装置間では、安全制御に関する情報が送受信される。安全制御に関する情報は、例えば、非常停止スイッチが押されたことの通知、非常停止のため電源遮断の指示等を含む。このような安全制御に関する情報は、遅延することなく宛先の装置に到達する必要がある。
データの遅延を検出するため、例えば、工場内の装置が、送信時刻を示す時間情報を付加したデータを他の装置に送信する。データを受信した他の装置は、受信した時間情報から、そのデータが適正な時間内に届いたものであるかを判別する。特許文献1には、送信側の通信装置が時間情報を付与したデータを送信し、受信側の通信装置が、受信した時間情報と受信側の通信装置が有するクロックが示す時間情報とを比較することが記載されている。
ここで、従来のクロックは、例えば、設定された時間毎にクロック信号を発生するクロック発生回路と、クロック発生回路が出力したクロック信号の数をカウントするカウンタとを含む。図4Aに従来のカウンタの構成の一例を示す。図示する例では、カウンタは、クロック信号の数を数えるカウンタであるタイムスタンプ11と、タイムスタンプが桁あふれすると加算されるキャリーカウンタ12とを含む。クロックは時間を計時する機能を備えたものであることから、タイムスタンプ11とキャリーカウンタ12の値は順次加算される。タイムスタンプ11とキャリーカウンタ12の初期値には、ゼロ、現在の日付等がセットされていた。
また、通信の信頼性の向上のためデータが正確に伝送されることが要望されている。伝送路上においては、符号化されたデータの一部が欠落する、符号化されたデータの一部の0と1とが反転する、といった符号誤りが発生する場合がある。上述のような安全制御に関するデータが伝送されているときに符号誤りが発生した場合、受信側の装置には本来のデータとは異なる誤ったデータが伝送され、受信側の装置が予期しない動作をすることも想定される。このため、安全制御に関する情報を正確に伝送することが安全の確保に繋がる。
機能安全に関する基準であるIEC61784−3では、定義された安全の目標水準毎に、許容される残存エラー率について定義されている。残存エラーとは、通信装置が受信データに対して、伝送路上で発生した符号の誤りを検出するために誤り検出を行っても、見逃されてしまうエラーをいう。IEC61784−3では、残存エラーが発生する確率を示す残存エラー率の算出方法が定められている。機能安全を実現するために、残存エラー率を抑えることが望ましいといえる。しかし、残存エラーは、誤り検出を行ったとしても見逃されてしまうエラーであり、このようなエラーの検出率を上げることは容易ではない。
また、上述のIEC61784−3では、残存エラー率の算出に、送信されるデータにおいて頻繁に出現する値の出現確率を使用することが規定されている。言い換えると、特定の値が出現する頻度が高い場合、その値の出現確率を残存エラー率の算出に採用しなければならない。この場合、高い出現確率を使用するため、残存エラー率が高くなってしまう。
上述のように、送信されるデータに時間情報を付加する場合、時間情報についても符号の誤りが発生する可能性があるので、時間情報も誤り検出の対象となる。従来、クロックのタイムスタンプ11は、十分に長い時間をカウントすることができるように設定されている。タイムスタンプ11がごく短い期間で桁あふれしてしまうと、データの伝送中にタイムスタンプ11が桁あふれすることがある。その結果、送信時に付加されたタイムスタンプの値と、受信時のタイムスタンプの値とが同じとなるといった事態が発生するおそれがある。よって、タイムスタンプ11が桁あふれすることはあまりない。仮にタイムスタンプ11の値が桁あふれした場合でも、再度タイムスタンプ11が桁あふれするまでには、長い時間がかかるため、キャリーカウンタ12の値が加算される頻度はきわめて低いといえる。
この結果、キャリーカウンタ12の値は初期値のまま、あるいは初期値付近の値を取ることが多いと言える。言い換えると、キャリーカウンタ12の値として、初期値付近の値が出現する確率が高いと言える。
特開2003−298563号公報
図5Aに示すように、キャリーカウンタ12の初期値としてゼロを設定した場合、キャリーカウンタ12の値としてゼロ近傍の値が出現する確率が高くなる。この場合、キャリーカウンタ12の値としてゼロが出現する確率を残存エラー率の算出に使用することになる。また、図5Bに示すように、キャリーカウンタ12の初期値として現在の日付を設定した場合、キャリーカウンタ12の値として、初期値として設定した日付近傍の値が出現する確率が高くなる。この場合、キャリーカウンタ12の値として設定された日付が出現する確率を残存エラー率の算出に使用することになる。このように、従来のクロックのキャリーカウンタ12では、特定の値の出現頻度が高くなるため、高い出現確率を残存エラー率の算出に使用せざるを得ず、残存エラー率を下げることは難しかった。
本発明は上記実情に鑑みてなされたものであり、残存エラー率を下げるため、クロックのカウンタの値の出現頻度を分散させることを目的とする。
上記目的を達成するため、本発明の通信システムでは、第1通信装置と第2通信装置とが相互に通信する。第1通信装置の第1計時手段は、時間経過をカウントする第1カウンタと、前記第1カウンタの桁あふれをカウントする第2カウンタとを備える。第1通信装置の第1データ変換手段は、予め設定されたタイミングで、予め設定された方式を使用して生成した値で、第2カウンタの値を置き換えて、第2カウンタが取る値を分散させる。第1通信装置の第1誤り検出手段は、第1カウンタの値と、第2カウンタの値とから第1誤り検出符号を生成する。第1通信装置の第1通信手段は、第2通信装置へ宛てたデータに第1カウンタの値と第1誤り検出符号とを付加したフレームを生成し、生成したフレームを前記第2通信装置に送信する。第2通信装置の第2計時手段は、時間経過をカウントする第3カウンタと、第3カウンタの桁あふれをカウントする第4カウンタとを備える。第2通信装置の第2データ変換手段は、設定されたタイミングで、設定された方式を使用して生成した値で、第4カウンタの値を置き換えて、前記第4カウンタが取る値を分散させる。第2通信装置の第2通信手段は、第1通信装置からフレームを受信する。第2通信装置の第2誤り検出手段は、フレームに含まれる第1カウンタの値と、第2計時手段の第4カウンタの値と、から第2誤り検出符号を生成し、生成した第2誤り検出符号が、フレームに含まれる第1誤り検出符号に対して設定された条件を満たすか否かを判別する。
本発明の通信システムの第1通信装置は、設定されたタイミングで、設定された方式を使用して生成した値で、第1カウンタの桁あふれをカウントする第2カウンタの値を置き換えて、第2カウンタが取る値を分散させる。第2通信装置は、第1通信装置と同様に、設定されたタイミングで、設定された方式を使用して生成した値で、第3カウンタの桁あふれをカウントする第4カウンタの値を置き換えて、第4カウンタが取る値を分散させる。このような構成を備えることで、クロックのカウンタの値の出現頻度を分散させることができる。
実施の形態1に係る通信システムのハードウェア構成を示すブロック図 実施の形態1に係る通信システムの機能ブロック図 実施の形態1に係る安全用クロックの構成を示す図 従来の安全用クロックがカウントされる様子を示す図 従来の安全用クロックのタイムスタンプの桁あふれの様子を示す図 従来の安全用クロックのキャリーカウンタの初期値が0の場合において、キャリーカウンタの値とその出現確率との関係を示す図 キャリーカウンタの初期値にカレンダーが示す日を設定した場合において、キャリーカウンタの値とその出現確率との関係を示す図 実施の形態1に係る安全用クロックのビットシフトによるデータ変換の方式を示す図 実施の形態1に係る安全用クロックが桁あふれする様子を示す図 実施の形態1に係るCRCの生成の方法を示す図 実施の形態1に係る誤り検出の方法を示す図 実施の形態1に係るデータ変換処理のフローチャート 実施の形態2に係る安全用クロックの構成を示す図 実施の形態2に係る安全用クロックが桁あふれする様子を示す図 実施の形態2に係る安全用クロックのビットシフトによるデータ変換の方式を示す図 実施の形態3に係る通信システムの構成を示す図 実施の形態3に係る管理情報に格納されるデータの例を示す図 実施の形態3に係るデータ変換処理のフローチャート 実施の形態4に係る通信システムの構成を示す図 実施の形態4に係る変換データ格納部に格納されるデータの一例を示す図
以下、本発明の実施の形態に係る通信システム10について、図面を参照しつつ詳細に説明する。
(実施の形態1)
図1に示すように、実施の形態1に係る通信システム10において、プログラマブルロジックコントローラ1とプログラマブルロジックコントローラ2とが、ネットワーク600を介して通信する。プログラマブルロジックコントローラ1、2は、例えば、生産システム、制御システム等において稼動する検出器、被制御機器を制御する。被制御機器は、産業用ロボット用のアクチュエータとサーボモータとを含む。プログラマブルロジックコントローラ1は、第1通信装置の一例であり、プログラマブルロジックコントローラ2は、第2通信装置の一例である。また、プログラマブルロジックコントローラ1は、他の通信装置の一例であり、プログラマブルロジックコントローラ2は、通信装置の一例である。また、プログラマブルロジックコントローラ1は、第1のコンピュータの一例であり、プログラマブルロジックコントローラ2は、第2のコンピュータの一例である。
プログラマブルロジックコントローラ1は、CPUユニット100と、ネットワークユニット200とを有する。CPUユニット100とネットワークユニット200は、不図示の電源ユニットとともに、ベースユニットに装着され、電源ユニットから供給された電源によって動作する。CPUユニット100とネットワークユニット200とは共有バス300によって接続されており、共有バス300を介して相互に通信する。CPUユニット100は、プログラマブルロジックコントローラ1全体を制御する。ネットワークユニット200は、CPUユニット100の制御の下、他のネットワークユニット、検出器、被制御機器等と通信する。
プログラマブルロジックコントローラ2は、CPUユニット101と、ネットワークユニット201とを含む。以下、プログラマブルロジックコントローラ1を例に説明を行うが、プログラマブルロジックコントローラ2もプログラマブルロジックコントローラ1と同様の構成を備える。
実施の形態1において、プログラマブルロジックコントローラ1とプログラマブルロジックコントローラ2とは、機能安全に対応した通信を行うものとする。具体的には、プログラマブルロジックコントローラ1及び2は、受信したデータが期待された時間内に到達していないと判別すると、受信したデータに含まれるコマンドを無効とみなして、受信したデータを破棄する。このため、CPUユニット100及び101は相互に同期して動作する計時装置であるクロックをそれぞれ備える。CPUユニット100及び101が備えるクロックについては後述する。
図1に示すように、CPUユニット100はハードウェア構成として、各種データを記憶する記憶装置110と、ネットワークユニット200と共有バス300を介して通信を行う通信I/F(Interface)回路120と、CPUユニット100全体を制御する演算装置130と、を有する。記憶装置110と、通信I/F回路120と、はいずれも内部バス190を介して演算装置130に接続されており、演算装置130と通信する。以下、CPUユニット100を例に説明するが、プログラマブルロジックコントローラ2のCPUユニット101も同様の構成を備えるものとする。
記憶装置110は、揮発性メモリと不揮発性メモリとを含み、プログラムと各種データとを記憶する。また、記憶装置110は、演算装置130のワークメモリとして用いられる。また、記憶装置110は、演算装置130が実行することにより、後述のデータ変換処理と誤り検出処理を実現するためのプログラム001を記憶する。
通信I/F回路120は、演算装置130の制御の下、共有バス300を介してネットワークユニット200とデータの送受信を行う。通信I/F回路120は、演算装置130が出力したデータを共有バス300を介してネットワークユニット200に送信する。通信I/F回路120がネットワークユニット200に送信するデータは、例えば、プログラマブルロジックコントローラ1のCPUユニット100がプログラマブルロジックコントローラ2のCPUユニット101に送信するコマンドを含む。また、通信I/F回路120は、ネットワークユニット200から共有バス300を介して受信したデータを演算装置130に出力する。通信I/F回路120がネットワークユニット200から受信したデータは、例えば、プログラマブルロジックコントローラ2のCPUユニット101がプログラマブルロジックコントローラ1のCPUユニット100に送信したコマンドを含む。
演算装置130は、CPU(Central Processing Unit)を含む。演算装置130は、記憶装置110に記憶されている各種プログラムを実行して、CPUユニット100の各種機能を実現する。
ネットワークユニット200はハードウェア構成として、各種データを記憶する記憶装置210と、通信のための通信I/F回路220と、ネットワークユニット200全体を制御する演算装置230と、を有する。記憶装置210と、通信I/F回路220とは、いずれも内部バス290を介して演算装置230に接続されており、演算装置230と通信する。ネットワークユニット200を例に説明するが、プログラマブルロジックコントローラ2のネットワークユニット201も同様の構成を備えるものとする。
記憶装置210は、揮発性メモリと不揮発性メモリとを含み、演算装置230が、ネットワークユニット200の各種機能を実現するために実行するプログラムと各種データとを記憶する。また、記憶装置210は、CPUユニット100とネットワークユニット201とから受信したデータを一時的に記憶する。通信I/F回路220は、共有バス300を介してCPUユニット100とデータの送受信を行う。また、通信I/F回路220は、CPUユニット100から供給されたデータを、ネットワークユニット201にネットワーク600を介して送信する。通信I/F回路220は、ネットワークユニット201からネットワーク600を介して受信したデータをCPUユニット100に供給する。演算装置230は、CPUを含む。演算装置230は、記憶装置210に記憶されているプログラムを実行してネットワークユニット200の各種機能を実現する。
図2に示すように、CPUユニット100は、機能的には、機能安全の観点から設けられた安全用クロック111と、安全用クロック111のカウンタの値の変換方式を記憶する変換方式記憶部112と、安全用クロック111のカウンタの値の変換タイミングを記憶する変換タイミング記憶部113と、プログラマブルロジックコントローラ2から受信したデータを記憶する受信データ記憶部114と、プログラマブルロジックコントローラ2に宛てたデータを記憶する送信データ記憶部115と、安全用クロック111のカウンタの値を変換するクロック値変換部151と、他の通信装置とやり取りするデータを生成する通信部152と、送受信データの誤り検出を行う誤り検出部153と、各種のデータ処理を行うデータ処理部154とを含む。
CPUユニット100の変換方式記憶部112と変換タイミング記憶部113とは第1記憶手段の一例である。CPUユニット100のクロック値変換部151は第1データ変換手段の一例である。CPUユニット100の通信部152は第1通信手段の一例である。CPUユニット100の誤り検出部153は第1誤り検出手段の一例である。
安全用クロック111は、設定された期間毎にクロックを発生するクロック発生回路と、クロック信号の発生の回数をカウントするカウンタとを有した計時装置である。図3に示すように、安全用クロック111は、タイムスタンプ1111とキャリーカウンタ1112との2つのカウンタを備える。タイムスタンプ1111は、不図示のクロック発生回路が出力したクロック信号の数を数える。キャリーカウンタ1112は、タイムスタンプ1111が桁あふれすると加算される。図示する例では、タイムスタンプ1111がカウントした数は、下位16ビットに格納される。キャリーカウンタ1112がカウントした数は、上位32ビットに格納される。
タイムスタンプ1111は十分に長い時間をカウントすることができるよう設計されているものとする。タイムスタンプ1111が十分に長い時間をカウントすることができるため、タイムスタンプ1111が桁あふれすることはほとんどない。この結果、キャリーカウンタ1112の値は初期値から変わることがほとんどなく、キャリーカウンタ1112の取る値は偏ったものとなってしまう。このため、実施の形態1においては、キャリーカウンタ1112の値を、決められたタイミングで、決められた方式で変換して、キャリーカウンタ1112の取る値を分散する。
キャリーカウンタ1112の値は、タイムスタンプ1111が桁あふれすると加算されるものの、キャリーカウンタ1112の値は決められたタイミングで変換されるため、キャリーカウンタ1112の値は、厳密にはタイムスタンプ1111が桁あふれした回数を示すものではない。キャリーカウンタ1112の値の変換については後述する。安全用クロック111は、図1に示す記憶装置110と、演算装置130とにより実現される。
図2に示すCPUユニット100の安全用クロック111は第1計時手段の一例である。CPUユニット100の安全用クロックのタイムスタンプ1111は第1カウンタの一例である。CPUユニット100の安全用クロック111のキャリーカウンタ1112は第2カウンタの一例である。
CPUユニット101の安全用クロック111も、CPUユニット100の安全用クロック111と同様の構成を備える。CPUユニット101の安全用クロック111の不図示のクロック発生回路は、CPUユニット100の安全用クロック111のクロック発生回路と同じタイミングでクロックを発生する。また、CPUユニット101の安全用クロック111のタイムスタンプ1111及びキャリーカウンタ1112の初期値は、CPUユニット100の安全用クロック111のタイムスタンプ1111及びキャリーカウンタ1112の初期値と同じである。さらに、CPUユニット101においても、CPUユニット100と同様に、キャリーカウンタ1112の値を、決められたタイミングで、決められた方式で変換して、キャリーカウンタ1112の取る値を分散する。このように、CPUユニット101の安全用クロック111のタイムスタンプ1111及びキャリーカウンタ1112の値は、CPUユニット100の安全用クロック111のタイムスタンプ1111及びキャリーカウンタ1112の値と常に同じとなるように制御されている。
CPUユニット101の安全用クロック111は第2計時手段の一例である。CPUユニット101の安全用クロック111のタイムスタンプ1111は第3カウンタの一例である。CPUユニット101の安全用クロック111のキャリーカウンタ1112は第4カウンタの一例である。
まず、比較のため、図4A、図4Bを参照して、従来の安全用クロックのカウントの方式を説明する。なお、安全用クロックのタイムスタンプ11とキャリーカウンタ12のそれぞれの初期値は「0」であると仮定して説明を行う。タイムスタンプ11と安全用クロックのキャリーカウンタ12の初期値は、例えば、プログラマブルロジックコントローラ1及び2の管理者により設定される。
従来は、図4Aに示すように、下位16ビットのタイムスタンプ11の値が、設定された期間毎に加算されていく。図4Bに示すように、タイムスタンプ11の値がカウント可能な上限値を超える、即ち桁あふれすると、キャリーカウンタ12の値が加算され、タイムスタンプ11の値は、初期値の0に戻る。タイムスタンプ11の値が順次加算され、再び、タイムスタンプ11の値が桁あふれすると、キャリーカウンタ12の値が加算される。このように、従来は、キャリーカウンタ12の値は、タイムスタンプ11の値の桁あふれ回数を示していた。なお、図4A、図4Bにおけるキャリーカウンタ12の値とタイムスタンプ11の値とは、16進で示している。以降同様である。
あるいは、プログラマブルロジックコントローラ1及び2の管理者が、キャリーカウンタ1112の初期値に、「0」ではなく、カレンダーが示す日を示す値を設定する場合もある。例えば、初期値が「4月10日」を示す値であるとする。この場合も、設定された期間毎にタイムスタンプ1111の値が加算され、タイムスタンプ11の値が桁あふれしたときに、キャリーカウンタ12が加算される。
ここで、タイムスタンプ11は十分に長い時間をカウントすることができるよう設計されていることから、タイムスタンプ11の桁あふれが発生することはあまりないと考えられる。この結果、キャリーカウンタ12の値は初期値のまま、あるいは初期値付近の値を取ることが多いと言える。言い換えると、キャリーカウンタ12の値として、初期値付近の値が出現する確率が高いと言える。
図5Aに示すように、キャリーカウンタ12の初期値としてゼロを設定した場合、キャリーカウンタ12の値としてゼロ近傍の値が出現する頻度が高くなる。また、キャリーカウンタ12が加算される頻度が低いこと、さらに、例えば、装置の再起動により、タイムスタンプ11及びキャリーカウンタ12の値がリセットされることもあることから、実運用上においてはキャリーカウンタ12が取り得る値は限られている。図5Bに示すように、キャリーカウンタ12の初期値として現在の日付を設定した場合、キャリーカウンタ12の値として、初期値として設定された日付近傍の値が出現する頻度が高くなる。このように、キャリーカウンタ12の初期値を「0」に設定した場合でも、あるいは初期値をカレンダーが示す日に設定した場合でも、図5A、図5Bに示すように、キャリーカウンタ12が取る値は偏ってしまう。
上記の実情に鑑みて、実施の形態1に係るCPUユニット100は、設定されたタイミングで安全用クロック111のキャリーカウンタ1112の値を示すビットをシフトし、キャリーカウンタ1112の値を変換する。設定されたタイミングでビットシフトを行うことにより、キャリーカウンタ1112の値は変換前とは異なる値に変わる。CPUユニット100は、ビットシフトによりキャリーカウンタ1112の値を変換するので、キャリーカウンタ1112の値は順次加算されるわけではない。この結果、キャリーカウンタ1112が取る値を分散することができる。タイムスタンプ1111の値については、従来通り、設定された初期値から、設定された期間毎に順次加算される。タイムスタンプ1111の値が桁あふれすると、キャリーカウンタ1112の値は、ビットシフトによる変換が行われた後であれば、変換後の値から加算される。また、タイムスタンプ1111の値が桁あふれした時点で、ビットシフトによる変換が行われていなければ、設定された初期値から加算される。キャリーカウンタ1112の値の変換の具体的な方法は後述する。
図2に示す変換方式記憶部112には、安全用クロック111のキャリーカウンタ1112の値を変換する方式を示すデータを記憶する。例えば、プログラマブルロジックコントローラ1及び2の管理者が、変換方式記憶部112に安全用クロック111のキャリーカウンタ1112の値を変換する方式を示すデータを予め格納する。変換方式記憶部112は、記憶装置110により実現される。実施の形態1においては、前述のように、安全用クロック111のキャリーカウンタ1112の値の変換はビットシフトにより行われる。このため、変換方式記憶部112は、キャリーカウンタ1112のうち、変換の対象となるビットを特定する情報と、シフトする方向を示す情報と、シフトするビット数を示す情報とを記憶する。
例えば、図6に示すように、安全用クロック111のキャリーカウンタ1112の値の初期値にカレンダーの日付である「04月01日」がセットされているものとする。具体的には、「0」、「4」、「0」、「1」のそれぞれの1桁の10進値が8桁の2進値に変換された値がカウンタにセットされる。変換方式記憶部112には、変換方式として「上位24ビットを、右に、8ビット単位で循環シフトさせる」と記憶されているものとする。この場合、上位24ビットが、8ビット単位で右に循環シフトされると、キャリーカウンタ1112の上位24ビットが並べ変えられる。
例えば、図7に示す状態で、タイムスタンプ1111に桁あふれが生じると、キャリーカウンタ1112が加算される。
変換タイミング記憶部113は、安全用クロック111のキャリーカウンタ1112の値を変換するタイミングを示すデータを記憶する。例えば、プログラマブルロジックコントローラ1及び2の管理者が、変換タイミング記憶部113に安全用クロック111のキャリーカウンタ1112の値を変換するタイミングを示すデータを予め格納する。変換タイミング記憶部113は、図1に示す記憶装置110により実現される。図2に示す変換タイミング記憶部113が記憶するタイミングは、タイムスタンプ1111の値が加算される設定されたタイミングとは独立したタイミングである。
キャリーカウンタ1112の値を変換するタイミングは、例えば、1ミリ秒毎といったものであってもよいし、あるいは、安全用クロック111のタイムスタンプ1111が決められた回数だけカウントした場合としてもよい。また、あるいは、変換の実行タイミングは、安全用クロック111が桁あふれした場合としてもよい。あるいは、変換の実行タイミングは、安全用クロック111の設定されたビットの値が変化した場合としてもよい。なお、実施の形態1においては、安全用クロック111のカウンタの値の偏りをなくすことを目的としているため、キャリーカウンタ1112の値を変換する間隔は短く設定されていることが望ましい。
受信データ記憶部114は、ネットワークユニット200がネットワークユニット201から受信したデータであって、後述の誤り検出部153が検査して誤りがないと判別したデータを格納する。ネットワークユニット200がネットワークユニット201から受信したデータは,例えば、プログラマブルロジックコントローラ2からプログラマブルロジックコントローラ1に宛てたコマンドを含む。受信データ記憶部114は、図1に示す記憶装置110により実現される。図2に示す受信データ記憶部114に格納されたデータは、後述のデータ処理部154によって適宜処理される。
送信データ記憶部115は、プログラマブルロジックコントローラ2に宛てて送信されるデータを格納する。送信データ記憶部115は、図1に示す記憶装置110により実現される。図2に示す送信データ記憶部115には、後述のデータ処理部154が、送信用のデータを書き込む。
クロック値変換部151は、変換タイミング記憶部113が記憶するタイミングで、変換方式記憶部112が記憶する方式で、安全用クロック111のキャリーカウンタ1112の値を変換する。クロック値変換部151の機能は図1に示す演算装置130がプログラム001を実行することにより実現される。
通信部152は、プログラマブルロジックコントローラ2に宛てて送信する送信フレームを生成する。送信フレームは、ヘッダ部と、データ部と、誤り検出符号とを含む。ヘッダ部は宛先情報を含む。データ部は、送信データ記憶部115に格納されているプログラマブルロジックコントローラ2に宛てたデータと安全用クロック111のタイムスタンプ1111の値とを含む。誤り検出符号は、後述の誤り検出部153により生成される。通信部152は、生成した送信フレームを共有バス300を介してネットワークユニット200に送信する。通信部152は共有バス300を介してネットワークユニット200からデータを受信する。ネットワークユニット200から供給されるデータは、ネットワークユニット200がプログラマブルロジックコントローラ2のネットワークユニット201から受信したデータである。通信部152は、図1に示す通信I/F回路120と演算装置130とにより実現される。
図2に示す誤り検出部153は、プログラマブルロジックコントローラ2に宛てて送信される送信フレームに付加するCRC(Cyclic Redundancy Check)を生成する。誤り検出部153は、プログラマブルロジックコントローラ2から受信した受信フレームに付加されているCRCを使用した誤り検出を行う。実施の形態においては、誤り検出部153は、伝送路上でデータが破損したか否かの誤りチェックを、CRCを使用して行うものとする。誤り検出部153の機能は、図1に示す演算装置130がプログラム001を実行することにより実現される。
具体的には、図2に示す誤り検出部153は、ネットワークユニット200がネットワークユニット201に送信する送信フレームに付加する誤り検出符号としてCRCを算出する。実施の形態1においては、図8に示すように、誤り検出部153は、送信データ記憶部115に格納されているプログラマブルロジックコントローラ2に宛てたデータと、安全用クロック111のタイムスタンプ1111の値及びキャリーカウンタ1112の値からCRCを生成する。誤り検出部153は、生成したCRCを通信部152に出力する。以下、送信側が生成したCRCをCRC_sと称することがある。送信側が生成したCRC_sは第1誤り検出符号の一例である。
また、誤り検出部153は、図9に示すように、ネットワークユニット200がネットワークユニット201から受信した受信フレームに付加されたCRC_sが、受信フレームから算出したCRCと一致するかを判別する。上述のように、送信側では、送信用のデータと、安全用クロック111のタイムスタンプ1111の値及びキャリーカウンタ1112の値からCRC_sが生成されている。このため、誤り検出部153は、通信部152が受信した受信フレームのデータ部に含まれているデータと、データ部に含まれているタイムスタンプ1111の値と、自身の安全用クロック111のキャリーカウンタ1112の値と、からCRCを生成する。以下、受信側が生成したCRCをCRC_rと称することがある。誤り検出部153は、生成したCRC_rと、受信フレームに含まれるCRC_sとが一致するか否かを判別する。受信側が生成したCRC_rは第2誤り検出符号の一例である。
CRC_rと、CRC_sとが一致しない場合、誤り検出部153は、当該受信フレームを破棄する。当該受信フレームのデータが壊れているからである。
また、CRC_rと、CRC_sとが一致する場合、誤り検出部153は、受信データのデータ部に含まれるタイムスタンプ1111の値が、自身の安全用クロック111のタイムスタンプ1111が示す現在時刻より指定された時間を遡った値であるか否かを判別する。具体的には、誤り検出部153は、受信データに含まれるタイムスタンプ1111の値に指定されたオフセット時間を加算した時刻が、自身の安全用クロック111が示す現在時刻以前であるか否かを判別する。これは、受信データが、期待された時間内に到達したか否かを判別するためである。
誤り検出部153は、受信データに含まれるタイムスタンプ1111の値に指定されたオフセット時間を加算した時刻が、自身の安全用クロック111が示す現在時刻以前であると判別すると、受信フレームのデータを受信データ記憶部114に格納する。
一方、誤り検出部153は、受信データに含まれるタイムスタンプ1111の値に指定されたオフセット時間を加算した時刻が、自身の安全用クロック111が示す現在時刻以降であると、当該受信フレームを破棄する。当該受信フレームが期待された時間内に到達していないからである。
データ処理部154は、プログラマブルロジックコントローラ2に宛てたデータを送信データ記憶部115に格納する。データ処理部154は、プログラマブルロジックコントローラ2宛てのデータとして、例えば、プログラマブルロジックコントローラ2に接続された制御対象機器に対するコマンドを送信データ記憶部115に格納する。また、データ処理部154は、受信データ記憶部114に格納されたデータに適宜処理を行う。例えば、データ処理部154に格納されたデータがプログラマブルロジックコントローラ2で収集された検査データである場合、データ処理部154は、検査データの統計処理を行う。データ処理部154は、図1に示す演算装置130により実現される。
図2に示すプログラマブルロジックコントローラ2のCPUユニット101は、CPUユニット100と同様の構成を有するものとする。
プログラマブルロジックコントローラ1のCPUユニット100と、プログラマブルロジックコントローラ2のCPUユニット101と、においては、安全用クロック111の値が一致する必要がある。このため、CPUユニット101の変換方式記憶部112には、CPUユニット100の変換方式記憶部112と同様の変換方式に関するデータが格納されている。例えば、プログラマブルロジックコントローラ1及び2の管理者が、CPUユニット101の変換方式記憶部112に、CPUユニット100の変換方式記憶部112と同様の変換方式に関するデータを格納する。CPUユニット101の変換タイミング記憶部113には、CPUユニット100の変換タイミング記憶部113と同様の変換のタイミングに関する情報が格納されている。よって、プログラマブルロジックコントローラ2のCPUユニット101においても、プログラマブルロジックコントローラ1のCPUユニット100と、同じタイミングで、同じ方式で、安全用クロック111のキャリーカウンタの値が変換される。この結果、CPUユニット100の安全用クロック111の値と、CPUユニット101の安全用クロック111の値とは常に一致したものとなる。CPUユニット100及び101はそれぞれビットシフトにより自身の安全用クロック111のキャリーカウンタ1112の値を変換する。よって、CPUユニット100及び101それぞれのキャリーカウンタ1112の値は順次加算されるわけではない。この結果、キャリーカウンタ1112が取る値を分散することができる。なお、プログラマブルロジックコントローラ1の安全用クロック111と、プログラマブルロジックコントローラ2の安全用クロック111とには、同じ値の初期値が設定される必要がある。
CPUユニット101の変換方式記憶部112と変換タイミング記憶部113とは第2記憶手段の一例である。CPUユニット101のクロック値変換部151は第2データ変換手段の一例である。CPUユニット101の通信部152は第2通信手段の一例である。CPUユニット101の誤り検出部153は第2誤り検出手段の一例である。
ネットワークユニット200は、機能的には、CPUユニット100と共有バス通信を行い、ネットワークユニット201と通信する通信部221を含む。
通信部221は、共有バス300を介して、CPUユニット100とデータの送受信を行う。さらに、通信部221は、ネットワーク600を介して、ネットワークユニット201と通信する。例えば、通信部221は、共有バス300を介して、CPUユニット100からプログラマブルロジックコントローラ2に宛てたデータを受信する。通信部221は、受信した当該データを、ネットワーク600を介してネットワークユニット201に送信する。また、通信部221は、ネットワーク600を介して、ネットワークユニット201からデータを受信する。通信部221は、受信した当該データを共有バス300を介してCPUユニット100に送信する。通信部221は、図1に示す記憶装置210と通信I/F回路220と演算装置230とにより実現される。
ネットワーク600は、例えば、イーサネット(登録商標)といった規格のLAN(Lacal Area Network)である。
次に、図2に示すクロック値変換部151が行う変換処理を説明する。図10に示すように、クロック値変換部151は、変換タイミング記憶部113に記憶された変換を実行されたタイミングであるか否かを判別する(ステップS11)。変換を実行するタイミングであると判別すると(ステップS11;Yes)、クロック値変換部151は、クロック値の変換を実行する(ステップS12)。
変換方式記憶部112に、変換方式として「上位24ビットを、右に、8ビット単位で循環シフトさせる」と記憶されていると仮定する。この場合、クロック値変換部151は、図6に示すように、安全用クロック111のカウンタの値の上位24ビットを、8ビット単位に右に循環シフトする。従って、安全用クロック111のキャリーカウンタ1112の値が変換後の値に書き換えられる。図10に示すように、クロック値変換部151は、再び、ステップS11の処理に進む。
一方、ステップS11で変換を実行するタイミングでないと判別すると(ステップS11;No)、クロック値変換部151は、実行のタイミングが来るまで待機する。
また、CPUユニット101においては、CPUユニット100と同じタイミングで同様の方法で安全用クロック111のキャリーカウンタ1112の値を変換している。このため、CPUユニット100の安全用クロック111のキャリーカウンタ1112の値と、CPUユニット101の安全用クロック111のキャリーカウンタ1112の値とは、同じように、分散されることになる。
以上が実施の形態1に係る構成である。実施の形態1では、安全用クロック111が有するカウンタのうちキャリーカウンタ1112の値をビットシフトした値で置き換えた。安全用クロック111のカウンタの設定された範囲の値を変換することで、安全用クロック111のカウンタの値の出現頻度を分散させることができる。しかし、安全用クロック111のカウンタの値は別の方法で変換してもよい。
(実施の形態2)
実施の形態2における安全用クロックの値の変換は、あらかじめ設定された生成方法で生成した乱数で、安全用クロック111のカウンタの値を置き換えることによって行う。以下、実施の形態1と異なる点を中心に説明を行う。
図2に示す安全用クロック111は、実施の形態1と同様に、設定された期間毎にクロックを発生するクロック発生回路と、クロック信号の発生の回数をカウントするカウンタとを有する。図11に示すように、実施の形態2に係る安全用クロック111は、タイムスタンプ1111とキャリーカウンタ1112との2つのカウンタを備える。タイムスタンプ1111は、不図示のクロック発生回路が出力したクロック信号の数を数える。キャリーカウンタ1112は、タイムスタンプ1111の桁あふれをカウントする。さらに、安全用クロック111は、設定されたタイミングで値が書き換えられる領域であるスクランブル領域1113を有する。図11に、実施の形態2における安全用クロック111のカウンタが保持するビット列の構成を示す。下位16ビットがタイムスタンプ1111の領域として割り当てられている点は、図3に示す実施の形態1と同様である。上位32ビットのうち、8ビットはキャリーカウンタ1112の領域として割り当てられている。上位ビット32ビットのうちの残りの24ビットは、スクランブル領域1113として割り当てられている。実施の形態2においては、決められたタイミングで、スクランブル領域1113の値が生成された乱数の値で置き換えられる。
実施の形態1とは、キャリーカウンタ1112の割り当てビット数は異なるものの、図12に示すように、タイムスタンプ1111が桁あふれすると、キャリーカウンタ1112の値が加算される。
図2に示す変換方式記憶部112には、図11に示すスクランブル領域1113のうち変換の対象とする範囲と、乱数生成アルゴリズムと、乱数生成のためのシードと、が定義されている。例えば、変換方式記憶部112に、対象範囲が上位24ビットであり、乱数生成アルゴリズムとして「アルゴリズム2000」を使用し、シードとして「シード3000」を使用することが定義されているとする。この場合、生成した乱数で指定された範囲を置き換えると、例えば、図13のように、安全用クロック111のスクランブル領域1113の値が変換される。
CPUユニット100及び101のそれぞれの安全用クロック111のカウンタの値を一致させなくてはいけない。このため、図2に示す変換方式記憶部112に格納される乱数生成アルゴリズムは、CPUユニット100及び101が、同じシードを使用した場合に同じ値を得ることができるアルゴリズムである必要がある。
さらに、実施の形態2においては、安全用クロック111のカウンタの値の偏りをなくすことを目的としているため、生成した乱数を0と1とを含むビット列にした場合の、0と1の出現率が均等となり、乱数生成アルゴリズムの評価テストをパスした乱数生成アルゴリズムを選定することが望ましい。
変換タイミング記憶部113には、図11に示す安全用クロック111のスクランブル領域1113の指定された範囲の値を変換するタイミングが記憶されている。
クロック値変換部151は、変換タイミング記憶部113が記憶するタイミングで、変換方式記憶部112において指定されている乱数生成アルゴリズムとシードとから乱数を生成する。クロック値変換部151は、スクランブル領域1113において、変換方式記憶部112において指定された範囲の値を、生成した乱数を示す0と1とを含むビット列で置き換える。このようにして、安全用クロック111のスクランブル領域1113の値が変換される。よって、実施の形態2においても、安全用クロック111のキャリーカウンタ1112が取る値を分散させることができる。実施の形態2におけるクロック値変換部151の変換のフローは、図10に示す実施の形態1と同様である。
また、乱数生成アルゴリズムによっては初期化処理が必要なものもある。変換方式記憶部112で指定された乱数生成アルゴリズムが初期化処理を必要とする場合、クロック値変換部151は、変換タイミング記憶部113で指定されたタイミングより前に初期化処理を行っておく。
(実施の形態3)
実施の形態1のビットシフトより、実施の形態2の乱数生成の方が、安全用クロック111の偏りの抑制には効果があるが、乱数生成を使用した変換の方法を採用することは、CPUユニット100及び101にとって処理の負荷が高い。処理の負荷の観点から、CPUユニット100及び101の処理性能に応じて、ビットシフトを使用した変換の方法を採用する方が好ましいこともある。このように、複数のCPUユニットそれぞれが、個々の性能に応じて、ビットシフトあるいは乱数生成による変換方式を採用することが望ましい場合もある。
また、実施の形態1、2では、CPUユニット100及び101がそれぞれ、安全用クロック111のカウンタの値を変換する方式を変換方式記憶部112に、変換のタイミングを変換タイミング記憶部113に記憶している。しかし、CPUユニット100の数が多くなれば、管理者が各CPUユニット100に変換の方式と変換タイミングとを設定する必要があり、手間がかかる。
このため、実施の形態3では、安全用クロックのカウンタの値の変換について管理する側の通信装置と、安全用クロックのカウンタの値の変換について管理される側の通信装置と、をあらかじめ決め、管理する側の通信装置が、管理される側の通信装置に、安全用クロックの値の変換方式及び変換タイミングを通知するものとする。
図14に実施の形態3に係る通信システム50の構成を示す。プログラマブルロジックコントローラ1は、管理する側の通信装置である。プログラマブルロジックコントローラ3及び4は、管理される側の通信装置である。プログラマブルロジックコントローラ1、3及び4は、ネットワーク600を介して相互に通信可能である。以下実施の形態1、2と異なる点を中心に説明する。
実施の形態3において、プログラマブルロジックコントローラ1のCPUユニット100は、プログラマブルロジックコントローラ3との通信に使用する安全用クロック111と、プログラマブルロジックコントローラ4との通信に使用する安全用クロック116とを有する。
安全用クロック111は図3に示す構成を備え、安全用クロック116は図11に示す構成を備えるものとする。CPUユニット100は、安全用クロック111の値をビットシフトにより変換し、安全用クロック116の値を乱数で置き換えて変換するものとする。
また、実施の形態3において、CPUユニット100は、実施の形態1及び2における変換方式記憶部112及び変換タイミング記憶部113の代わりに、管理情報117を備える。管理情報117は、管理する側のプログラマブルロジックコントローラ1が、管理される側のプログラマブルロジックコントローラ3及び4に通知する安全用クロックの値の変換方式及び変換タイミングを示す情報を格納する。図15に示すように、管理情報117は、管理対象のプログラマブルロジックコントローラを識別する情報と、管理対象が有する安全用クロックを識別する情報と、安全用クロックの値を変換する変換方式を示す情報と、変換タイミングを示す情報と、を定義する。
ここで、安全用クロック111と、後述のプログラマブルロジックコントローラ3のCPUユニット102が有する安全用クロック111aとは、同じ値を取る必要がある。安全用クロック116と、後述のプログラマブルロジックコントローラ4のCPUユニット103が有する安全用クロック116aとは、同じ値を取る必要がある。このため、管理情報117には、プログラマブルロジックコントローラ3の安全用クロック111aについて、安全用クロック111と同様の変換方式及び変換タイミングを示す情報が格納されている。管理情報117には、プログラマブルロジックコントローラ4の安全用クロック116aについて、安全用クロック116と同様の変換方式及び変換タイミングを示す情報が格納されている。なお、CPUユニット100は、安全用クロック111と安全用クロック111aとが対応し、安全用クロック116と安全用クロック116aとが対応することを示す情報を予め記憶しているものとする。管理情報117は図1に示す記憶装置110により実現される。管理情報117は第1記憶手段の一例である。
図14に示すクロック値変換部151は、管理情報117に定義された変換方式と変換タイミングとに従って、安全用クロック111及び116の値を変換する。
さらに、クロック値変換部151は、管理情報117が示す管理対象のプログラマブルロジックコントローラに、管理情報117に定義された変換方式と変換のタイミングとを通知する。クロック値変換部151は、管理対象毎の定義された変換方式と変換のタイミングとを示す情報を通信部152に出力する。従って、通信部152は、データ変換指示であることを示す特定のコマンドと、変換方式と変換タイミングとを示す情報とを含むフレームを生成して、生成したフレームをネットワークユニット200に送信する。ネットワークユニット200は、CPUユニット100から供給されたフレームをネットワークユニット202及び203に送信する。クロック値変換部151は通知手段の一例である。
プログラマブルロジックコントローラ1の一方の管理対象であるプログラマブルロジックコントローラ3のCPUユニット102は、安全用クロック111aを有している。安全用クロック111aは、安全用クロック111と同様に、図3に示す構成を備えるものとする。安全用クロック111aは、CPUユニット100の安全用クロック111と同じ値を取るよう制御される。
また、CPUユニット102においては、クロック値変換部151aは、安全用クロック111aの値を、CPUユニット100から通知された変換方式と変換のタイミングとで変換する。通信部152aは、ネットワークユニット202がネットワークユニット200から特定のコマンドを含むフレームを受信した場合、そのフレームに含まれる変換方式と変換のタイミングとを示す情報を、クロック値変換部151aに供給する。CPUユニット102は、実施の形態1のCPUユニット100及び101が有している変換方式記憶部112及び変換タイミング記憶部113を有していない。
プログラマブルロジックコントローラ1の他方の管理対象であるプログラマブルロジックコントローラ4のCPUユニット103は、安全用クロック116aを有している。
安全用クロック116aは、安全用クロック116と同様に、図11に示す構成を備えるものとする。安全用クロック116aは、CPUユニット100の安全用クロック116と同じ値を取るよう制御される。CPUユニット103のクロック値変換部151a、通信部152aの構成は、CPUユニット102と同様である。CPUユニット103は、CPUユニット102と同様に、実施の形態1に係る変換方式記憶部112及び変換タイミング記憶部113を有していない。
なお、CPUユニット102及び103について、実施の形態1及び2のCPUユニット100及び101と同様の符号を付した構成について、実施の形態3で特に言及しない構成については、実施の形態1、2とほぼ同様であるものとする。
上記構成を有するCPUユニット100と102と103とは、図16に示すように、データ変換の処理を行う。
まず、CPUユニット100におけるデータ変換の処理を説明する。CPUユニット100は管理する側であるので(ステップS21;Yes)、CPUユニット102、103に対して、管理情報117にそれぞれ定義された変換方式と変換タイミングとを通知する(ステップS22)。CPUユニット102、103から、変換が可能である旨の応答があれば、変換の方式と変換タイミングとが確定したと判別して(ステップS23;Yes)、次のステップの処理を行う。ステップS24において、CPUユニット100は変換を実行するタイミングであると判別すると(ステップS24;Yes)、CPUユニット102、103に割り当てられた安全用クロック111、116の値の変換処理を実行する(ステップS25)。以上が、CPUユニット100の処理である。なお、ステップS23において、CPUユニット100は、CPUユニット102、103のうち、変換が可能である旨の応答があったいずれか、あるいは両方のための安全用クロックの値の変換処理を行う。一方、ステップS23において、CPUユニット102、103から、変換が可能である旨の応答がない場合、あるいは、変換が不可能である旨の応答があった場合、CPUユニット100は、変換の方式と変換タイミングとが確定していないと判別して(ステップS23;Nо)、再びステップS21の処理に戻る。
また、管理される側の一方のCPUユニット102におけるデータ変換の処理を説明する。CPUユニット102は管理する側ではないので(ステップS21;Nо)、データ変換方式と変換タイミングをCPUユニット100から受信したか否かを判別する(ステップS26)。受信した場合(ステップS26;Yes)、CPUユニット102は、変換処理が可能であるか否かを判別し、判別した結果をCPUユニット100に通知する(ステップS27)。例えば、指定される変換の間隔が短いため処理負荷の面から処理を行うことができない、乱数生成のアルゴリズムのプログラムを有していない、といった場合には、変換処理が不可能であると判別する。一方、変換処理が可能であると判別した場合、変換の方式と変換タイミングとが確定したことになるので(ステップS23;Yes)、CPUユニット102は、ステップS24以降の処理を行い、安全用クロック111aの値の変換を行う。管理される側の他方のCPUユニット103もCPUユニット102と同様の処理を行う。
(実施の形態4)
実施の形態3では、CPUユニット100が2つの安全用クロック111及び116を有する。ここで、安全用クロック111及び116は、データが期待された時間内に到着したかの判別にも使用されるため、高い精度で計時できることが要求される。このため、CPUユニット100が安全用クロック111及び116用にそれぞれ高精度の計時用素子を備える必要があり、コストがかさむ。
実施の形態4では、管理する側の通信装置であるCPUユニット100が1つの安全用クロック111だけを有し、管理対象のCPUユニット102及び103のそれぞれの安全用クロックのデータ変換を管理する構成を説明する。
実施の形態3と異なり、図17に示すように、実施の形態4に係るCPUユニット100は、1つの安全用クロック111のみを有する。実施の形態4においても、CPUユニット100は、図15に示す管理情報117を備えるものとする。
クロック値変換部151は、図15に示す管理情報117が記憶するタイミングと変換方式で、安全用クロック111の値を変換した値を求め、求めた値を変換データ格納部118に格納する。CPUユニット100は、CPUユニット102及び103を管理するため、それぞれの安全用クロックのためのデータ変換を行った値を変換データ格納部118に保存する。変換データ格納部118には、CPUユニット102の安全用クロック111aの値と同じ値と、CPUユニット103の安全用クロック116aの値と同じ値とが保持されることになる。
具体的には、クロック値変換部151は、CPUユニット102の安全用クロック111aの変換タイミングと同じタイミングで、安全用クロック111aの変換方式と同じ変換方式を使用して安全用クロック111の値を変換した値を求める。クロック値変換部151は、図18に示すように、求めた値を管理対象及び管理対象が有する安全用クロックを識別する情報とともに変換データ格納部118に格納する。CPUユニット102においても、CPUユニット100と同じ変換タイミングとで、同じ変換方式を使用して安全用クロック111aの値を変換している。このため、変換データ格納部118に格納されている値は、CPUユニット102の安全用クロック111aの値と一致する。
また、クロック値変換部151は、CPUユニット103の安全用クロック116aの変換タイミングと同じタイミングで、安全用クロック116aの変換方式と同じ変換方式を使用して安全用クロック111の値を変換した値を求め、求めた値を変換データ格納部118に格納する。CPUユニット103はCPUユニット100と同じ変換タイミングで、同じ変換方式を使用して安全用クロック116aの値を変換している。このため、変換データ格納部118に格納された値は、CPUユニット103の安全用クロック116aの値と一致する。
プログラマブルロジックコントローラ3、4との通信の際には、誤り検出部153は、安全用クロック111のキャリーカウンタ1112の値ではなく、変換データ格納部118に格納された、相手先に対応づけられた変換後のキャリーカウンタ1112の値を使用してCRCの生成、誤り検出を行う。以上が実施の形態4に係る構成である。
以上説明したように、実施の形態1〜4においては、CPUユニット100の安全用クロックの指定された範囲の値と、CPUユニット100の通信先のCPUユニット101、102、103の安全用クロックの指定された範囲の値と、を同じタイミングで、同じ方法で別の値に置き換える。従って、置き換え後の安全用クロックの値を一致させつつ、安全用クロックの値の偏りを低減することができる。よって、安全用クロックの値が誤り検出の対象となる場合に残存エラー率を下げることができる。
実施の形態1においては、キャリーカウンタ1112の値を置き換えるためビットシフトを使用する。このため、CPUユニット100に負荷をかけず、残存エラー率を低減することが可能である。
実施の形態2においては、生成した乱数でキャリーカウンタ1112の値を置き換えるため、ビットシフトによる方法に比べ、安全用クロック111の値をより分散させることができる。よって、残存エラー率の低減に高い効果を奏する。
実施の形態3においては、データ変換処理方式および実行タイミングを通信で共有することにより、個々の通信装置への設定を行う必要がない。また、マスタとスレーブのそれぞれの処理性能に応じて適したデータ変換処理方式を選択することができる。例えば、処理性能の低い通信装置との通信においては、処理負荷が高い乱数の生成ではなく、ビットシフトの方法を採用することができる。このようにして、既存の通信装置にも、上述した実施の形態に係る構成を採用することができる。
実施の形態4では、キャリーカウンタの値を直接書き換えないため、安全用クロックの値は、例えば、カレンダーデータ通りの時間を示している。このため、安全用クロックの値を、ある通信装置からデータが期待時間内に他の通信装置に到着しているかを確認するといった、他の用途でも使用することができるようになる。また、マスタは、安全用クロックのため、高精度な計時素子を1つだけ有すればよいので、安全用クロックを複数有する場合に比べ、コストを抑えることができる。
実施の形態1〜4において、プログラマブルロジックコントローラ1〜4が相互に通信を行う例を説明したが、これに限られない。例えば、プログラマブルロジックコントローラ1だけがデータを送信する機能を備え、プログラマブルロジックコントローラ2〜4は、データを受信するだけの構成であってもよい。この場合、送信側のプログラマブルロジックコントローラ1は、誤り検出符号を生成し、誤り検出符号と自身の安全用クロックのタイムスタンプとを含むフレームを他のプログラマブルロジックコントローラに送信する。受信側のプログラマブルロジックコンローラ2〜4は、プログラマブルロジックコントローラ1から受信したタイムスタンプと自信の安全用クロックのキャリーカウンタとから誤り検出符号を生成し、生成した誤り検出符号とプログラマブルロジックコントローラ1から受信した誤り検出符号とが一致するか否かを判別すればよい。
上記の実施の形態1〜4においては、CPUユニットが安全用クロックを有し、安全用クロックの値を変換する処理を行う例を説明したが、CPUユニットではなく、ネットワークユニットが上述した変換処理を行うように構成してもよい。
上記のデータ変換処理に係るプログラムを記録する記録媒体としては、磁気ディスク、光ディスク、光磁気ディスク、フラッシュメモリ、半導体メモリ、磁気テープを含むコンピュータ読取可能な記録媒体を使用することができる。
本発明は、広義の精神と範囲を逸脱することなく、様々な実施形態及び変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施形態ではなく、請求の範囲によって示される。そして、請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。
001 プログラム、1,2,3,4 プログラマブルロジックコントローラ、10,50 通信システム、11、1111 タイムスタンプ、12、1112 キャリーカウンタ、100,101,102,103 CPUユニット、110,210 記憶装置、111,111a,116,116a 安全用クロック、112 変換方式記憶部、113 変換タイミング記憶部、114 受信データ記憶部、115 送信データ記憶部、117 管理情報、118 変換データ格納部、120,220 通信I/F回路、130,230 演算装置、151,151a クロック値変換部、152,152a,221 通信部、154 データ処理部、153 誤り検出部、190,290 内部バス、200,201,202,203 ネットワークユニット、300 共有バス、600 ネットワーク、1113 スクランブル領域、2000 アルゴリズム、3000 シード

Claims (12)

  1. 第1通信装置と第2通信装置とが相互に通信する通信システムであって、
    前記第1通信装置は、
    時間経過をカウントする第1カウンタと、前記第1カウンタの桁あふれをカウントする第2カウンタとを備える第1計時手段と、
    予め設定されたタイミングで、予め設定された方式を使用して生成した値で、前記第2カウンタの値を置き換えて、前記第2カウンタが取る値を分散させる第1データ変換手段と、
    前記第1カウンタの値と、前記第2カウンタの値とから第1誤り検出符号を生成する第1誤り検出手段と、
    前記第2通信装置へ宛てたデータに前記第1カウンタの値と前記第1誤り検出符号とを付加したフレームを生成し、生成した前記フレームを前記第2通信装置に送信する第1通信手段と、
    を有し、
    前記第2通信装置は、
    時間経過をカウントする第3カウンタと、前記第3カウンタの桁あふれをカウントする第4カウンタとを備える第2計時手段と、
    前記設定されたタイミングで、前記設定された方式を使用して生成した値で、前記第4カウンタの値を置き換えて、前記第4カウンタが取る値を分散させる第2データ変換手段と、
    前記第1通信装置から前記フレームを受信する第2通信手段と、
    前記フレームに含まれる前記第1カウンタの値と、前記第2計時手段の前記第4カウンタの値と、から第2誤り検出符号を生成し、生成した前記第2誤り検出符号が、前記フレームに含まれる前記第1誤り検出符号に対して設定された条件を満たすか否かを判別する第2誤り検出手段と、
    を有する、
    通信システム。
  2. 前記第2カウンタの初期値と前記第4カウンタの初期値とは同じである、
    請求項1に記載の通信システム。
  3. 前記第1データ変換手段は、前記第2カウンタの値の指定された範囲の値を、指定された方向に、指定されたビット数だけシフトさせた値で置き換え、
    前記第2データ変換手段は、前記第1データ変換手段と同一の方法で、前記第4カウンタの値の置き換えを行う、
    請求項1又は2に記載の通信システム。
  4. 前記第1データ変換手段は、前記第2カウンタの値の指定された範囲の値を、指定された生成方法で生成した乱数で、置き換え、
    前記第2データ変換手段は、前記第1データ変換手段と同一の方法で、前記第4カウンタの値の置き換えを行う、
    請求項1又は2に記載の通信システム。
  5. 前記第1通信装置の前記第1誤り検出手段は、前記第2通信装置へ宛てた前記データと、前記第1カウンタの値と、前記第2カウンタの値とから前記第1誤り検出符号を生成し、
    前記第2通信装置の前記第2誤り検出手段は、前記フレームに含まれる前記第2通信装置へ宛てた前記データと、前記フレームに含まれる前記第1カウンタの値と、前記第2計時手段の前記第4カウンタの値と、から前記第2誤り検出符号を生成する、
    請求項1から4のいずれか1項に記載の通信システム。
  6. 前記第2誤り検出手段は、生成した前記第2誤り検出符号が、前記フレームに含まれる前記第1誤り検出符号に対して設定された条件を満たさないと判別すると、前記フレームを破棄する、
    請求項1から5のいずれか1項に記載の通信システム。
  7. 前記第2誤り検出手段は、生成した前記第2誤り検出符号が、前記フレームに含まれる前記第1誤り検出符号と一致するか否かを判別する、
    請求項1から6のいずれか1項に記載の通信システム。
  8. 前記第2誤り検出手段は、前記第3カウンタの値が示す時刻と、前記フレームに含まれる前記第1カウンタの値が示す時刻と、から前記フレームが設定された時間内に前記第2通信装置に到達したか否かを判別し、前記フレームが設定された時間内に前記第2通信装置に到達していないと判別すると、前記フレームを破棄する、
    請求項1から7のいずれか1項に記載の通信システム。
  9. 前記第1通信装置は、
    前記設定されたタイミングを示す情報と、前記設定された方式を示す情報とを記憶する第1記憶手段、
    を有し、
    前記第2通信装置は、
    前記設定されたタイミングを示す情報と、前記設定された方式を示す情報とを記憶する第2記憶手段、
    を有する、
    請求項1から8のいずれか1項に記載の通信システム。
  10. 前記第1通信装置は、
    前記設定されたタイミングを示す情報と、前記設定された方式を示す情報とを記憶する第1記憶手段と、
    前記第2通信装置に、前記第1記憶手段に格納した情報を提供する通知手段と、
    を有する、
    請求項1から8のいずれか1項に記載の通信システム。
  11. 他の通信装置と通信する通信装置であって、
    前記他の通信装置は、時間経過をカウントする第1カウンタと、前記第1カウンタの桁あふれをカウントする第2カウンタとを備えており、予め設定されたタイミングで、予め設定された方式を使用して生成した値で、前記第2カウンタの値を置き換えて、前記第2カウンタが取る値を分散させ、前記第1カウンタの値と、前記第2カウンタの値とから第1誤り検出符号を生成し、前記通信装置へ宛てたデータに前記第1カウンタの値と前記第1誤り検出符号とを付加したフレームを生成し、生成した前記フレームを前記通信装置に送信し、
    前記通信装置は、
    時間経過をカウントする第3カウンタと、前記第3カウンタの桁あふれをカウントする第4カウンタとを備える第2計時手段と、
    前記設定されたタイミングで、前記設定された方式を使用して生成した値で、前記第4カウンタの値を置き換えて、前記第4カウンタが取る値を分散させる第2データ変換手段と、
    前記他の通信装置から前記フレームを受信する第2通信手段と、
    前記フレームに含まれる前記第1カウンタの値と、前記第2計時手段の前記第4カウンタの値と、から第2誤り検出符号を生成し、生成した前記第2誤り検出符号が、前記フレームに含まれる前記第1誤り検出符号に対して設定された条件を満たすか否かを判別する第2誤り検出手段と、
    を有する、
    通信装置。
  12. 第1のコンピュータと第2のコンピュータとが相互に通信する通信システムにおいて、
    前記第1のコンピュータに、時間経過をカウントする第1カウンタと、前記第1カウンタの桁あふれをカウントする第2カウンタとを備える第1計時手段を実現させ、
    前記第1のコンピュータに、予め設定された方法で前記第2カウンタの値を分散させ、
    前記第1のコンピュータに、前記第1カウンタの値と、前記第2カウンタの値とから第1誤り検出符号を生成させ、前記第2のコンピュータへ宛てたデータに前記第1カウンタの値と前記第1誤り検出符号とを付加したフレームを生成させ、前記フレームを前記第2のコンピュータに送信させ、
    前記第2のコンピュータに、時間経過をカウントする第3カウンタと、前記第3カウンタの桁あふれをカウントする第4カウンタとを備える第2計時手段を実現させ、
    前記第2のコンピュータに、前記第1のコンピュータと同じ方法で前記第4カウンタの値を分散させ、
    前記第2のコンピュータに、前記第1のコンピュータから送信された前記フレームに含まれる前記第1カウンタの値と、前記第2計時手段の前記第4カウンタの値と、から第2誤り検出符号を生成させ、前記第2誤り検出符号が前記フレームに含まれる前記第1誤り検出符号に対して設定された条件を満たすか否かを判別させる、
    プログラム。
JP2019521506A 2018-09-06 2018-09-06 通信システム、通信装置、及びプログラム Active JP6545427B1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2018/033097 WO2020049698A1 (ja) 2018-09-06 2018-09-06 通信システム、通信装置、方法及びプログラム

Publications (2)

Publication Number Publication Date
JP6545427B1 true JP6545427B1 (ja) 2019-07-17
JPWO2020049698A1 JPWO2020049698A1 (ja) 2020-09-10

Family

ID=67297532

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019521506A Active JP6545427B1 (ja) 2018-09-06 2018-09-06 通信システム、通信装置、及びプログラム

Country Status (4)

Country Link
US (1) US11126487B2 (ja)
JP (1) JP6545427B1 (ja)
DE (1) DE112018007879B4 (ja)
WO (1) WO2020049698A1 (ja)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3613219B2 (ja) 2001-10-02 2005-01-26 日本電気株式会社 変調装置、通信システム、変調プログラム
US7254133B2 (en) * 2002-07-15 2007-08-07 Intel Corporation Prevention of denial of service attacks
JP3627743B2 (ja) 2003-04-03 2005-03-09 ヤマハ株式会社 データ伝送システムにおけるノード
DE102014114883A1 (de) * 2014-10-14 2016-04-14 Beckhoff Automation Gmbh Verfahren und System zum Überwachen eines ersten Teilnehmers eines Kommunikationsnetzwerks

Also Published As

Publication number Publication date
US20210182138A1 (en) 2021-06-17
US11126487B2 (en) 2021-09-21
JPWO2020049698A1 (ja) 2020-09-10
DE112018007879T5 (de) 2021-04-22
WO2020049698A1 (ja) 2020-03-12
DE112018007879B4 (de) 2022-02-17

Similar Documents

Publication Publication Date Title
CA3007206C (en) Using blockchain to track information for devices on a network
KR102652569B1 (ko) 비용 최적화된 환경들에서 phy 레벨 하드웨어 타임스탬핑 및 시간 동기화의 수행
US11196723B2 (en) Encrypted control system, encrypted control method, and encrypted control program
US20180189119A1 (en) Method of Managing Event Generation For An Industrial Controller
EP3809636B1 (en) Time delay measuring method and network device
US11190354B2 (en) Randomness verification system and method of verifying randomness
CN105929723B (zh) 通过纠错功能进行寿命预测的控制装置
CN113364638B (zh) 用于epa组网的方法、电子设备和存储介质
US10326757B2 (en) Technologies for enhancing computer security
CN109981382A (zh) 一种检测误码的方法及装置
JP6545427B1 (ja) 通信システム、通信装置、及びプログラム
US8578201B2 (en) Conversion of timestamps between multiple entities within a computing system
JP7063976B2 (ja) 少なくとも1つの安全なプロデューサーと少なくとも1つの安全なコンシューマーとの間のデータ伝送
US20210065919A1 (en) Method and control system for controlling and/or monitoring devices
JP6934346B2 (ja) コンピュータ化されたシステムおよび冗長システム
US9282041B2 (en) Congestion profiling of computer network devices
CN103259879A (zh) 设备节点地址码的标定方法及装置
US11601494B2 (en) Method for transferring data from a device to a data management means, switching unit, device and system
JP2016103110A (ja) 多重化制御装置
JP2015056766A (ja) クラウド制御システム、及びその制御プログラムの実行方法
US10594687B2 (en) Technologies for enhancing computer security
Li-Baboud et al. Semiconductor manufacturing equipment data acquisition simulation for timing performance analysis
WO2014181570A1 (ja) 時刻ベース処理装置
Li et al. Semiconductor factory and equipment clock synchronization for e-manufacturing
JP2018109928A (ja) タイマ回路

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190422

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190422

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20190422

TRDD Decision of grant or rejection written
A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20190514

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190521

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190618

R150 Certificate of patent or registration of utility model

Ref document number: 6545427

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250