JPH09233107A - 通信システム - Google Patents

通信システム

Info

Publication number
JPH09233107A
JPH09233107A JP8033472A JP3347296A JPH09233107A JP H09233107 A JPH09233107 A JP H09233107A JP 8033472 A JP8033472 A JP 8033472A JP 3347296 A JP3347296 A JP 3347296A JP H09233107 A JPH09233107 A JP H09233107A
Authority
JP
Japan
Prior art keywords
collision detection
bits
detection code
simultaneous collision
simultaneous
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.)
Pending
Application number
JP8033472A
Other languages
English (en)
Inventor
Rei Okada
礼 岡田
Takuya Sakurai
拓也 櫻井
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.)
Azbil Corp
Original Assignee
Azbil 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 Azbil Corp filed Critical Azbil Corp
Priority to JP8033472A priority Critical patent/JPH09233107A/ja
Publication of JPH09233107A publication Critical patent/JPH09233107A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Small-Scale Networks (AREA)

Abstract

(57)【要約】 【課題】 短い同時衝突検知コードで多数の子機に対応
することができるようにする。 【解決手段】 同時衝突検知コードの長さを8ビットと
した場合、その中の4ビットを「0」,残る4ビットを
「1」とする。アドレス1の子機の応答メッセージに付
与する同時衝突検知コードを「00001111」(図
1(a))、アドレス2の子機の応答メッセージに付与
する同時衝突検知コードを「00010111」(図1
(b))とすると、同時衝突の結果生じる同時衝突検知
コードは、「00000111」となる(図1
(c))。同時衝突検知コード中の「1」のビットの数
が4つより少なくなったことにより、親機において応答
メッセージの同時衝突を検出することができる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、共通の通信バス
を介して親機と複数の子機との間で通信を行う通信シス
テムに関するものである。
【0002】
【従来の技術】従来より、この種の通信システムでは、
親機から複数の子機へ共通の通信バスを介して同一の問
い合わせを同時に送信し、子機はこの問い合わせを受信
したときに必要があれば応答メッセージを親機に送信す
るという方法がとられている。すなわち、親機と複数の
子機間の通信において、子機が親機に対してメッセージ
を送信する必要性が頻繁に生じない場合、親機は全ての
子機に対して1台ずつ順にメッセージの送信を促すより
も、全ての子機に対して同時に送信を促す方が効率よく
子機のデータを収集することができる。
【0003】この通信方法では、まれにではあるが、複
数の子機の応答メッセージが衝突するという事態が生じ
る。この場合、親機はその応答メッセージの衝突を検出
し、誤ったデータを収集することを避けなければならな
い。そこで、従来においては、次のようにして応答メッ
セージの衝突を検出するようにしている。
【0004】応答メッセージの衝突の可能性としては複
数の応答メッセージが同時に衝突する場合(以下、同時
衝突と呼ぶ:図7(a)参照)と、そうでない場合(以
下、非同時衝突と呼ぶ:図7(b)参照)とがある。非
同時衝突の場合、一般に「フレーミングエラー」が生じ
るので、その衝突を検出することができる。同時衝突の
場合、パリティチェック,CRCチェック等の誤り検出
では、その衝突を検出することが保証できない。このた
め、特殊なコード(同時衝突検知コード)を子機の応答
メッセージに付与することにより、すなち同時衝突検知
コードを付与した応答メッセージを親機に送信すること
により、親機において応答メッセージの同時衝突の検出
を可能にしている。
【0005】従来、この同時衝突検知コードとしては、
子機のアドレスに対応する1つのビットを反転させたコ
ードを用いている。例えば、アドレス1の子機の同時衝
突検知コードを「11111110」、アドレス2の子
機の同時衝突検知コードを「11111101」とす
る。この場合、アドレス1の子機とアドレス2の子機の
応答メッセージとが同時衝突すると、重畳した結果生じ
る同時衝突検知コードは「11111100」となる。
すなわち、アドレス1の子機の同時衝突検知コード「1
1111110」とアドレス2の子機の同時衝突検知コ
ード「11111101」との論理積がとられ、同時衝
突後の同時衝突検知コードは「11111100」とな
る。これにより、すなわち同時衝突検知コード中に
「0」のビットが2つ生じていることにより、親機にお
いて応答メッセージの同時衝突を検出することができ
る。また、どのビットが「0」であるかを調べることに
よって、同時衝突を起こした子機のアドレスを知ること
ができる。
【0006】
【発明が解決しようとする課題】しかしながら、このよ
うな従来の応答メッセージの同時検出方法によると、同
時衝突検知コードのビット数は少なくとも子機の台数と
等しくしなければならない。このため、子機の台数が多
い場合、コード長が長くなってしまう。例えば、子機の
台数が64台の場合、コード長は64ビット=8バイト
となる。
【0007】本発明はこのような課題を解決するために
なされたもので、その目的とするところは、短い同時衝
突検知コードで多数の子機に対応することの可能な通信
システムを提供することにある。
【0008】
【課題を解決するための手段】このような目的を達成す
るために、第1発明(請求項1に係る発明)は、上述し
た通信システムにおいて、同時衝突検知コードを、この
同時衝突検知コードの長さをnビットとしたとき、nが
偶数である場合、その中のn/2ビットを「0」,残る
n/2ビットを「1」とし、nが奇数である場合、その
中の(n+1)/2ビットを「1」,残る(n−1)/
2ビットを「0」、或いは、その中の(n+1)/2ビ
ットを「0」,残る(n−1)/2ビットを「1」とし
たものである。この発明によれば、同時衝突検知コード
の長さを例えば8ビットとした場合(n=8)、その中
の4ビットが「0」,残る4ビットが「1」とされる。
また、同時衝突検知コードの長さを例えば9ビットとし
た場合(n=9)、その中の5ビットが「1」,残る4
ビットが「0」、或いは、その中の5ビットが「0」,
残る4ビットが「1」とされる。
【0009】第2発明(請求項2に係る発明)は、上述
した通信システムにおいて、同時衝突検知コードを、子
機のアドレスコードの長さをmビットとしたとき、その
属する子機のアドレスコードの各ビットの値を「1」と
「0」とで互いに異なるビットパターンの2ビットの2
進コードに変換して得られる2mビットのコードとした
ものである。この発明によれば、例えば、子機のアドレ
スコードの長さを4ビット(m=4)とし、その同時衝
突検知コードが属する子機のアドレスコードを「000
1」とすると、このアドレスコードの各ビットの値を
「1」と「0」とで互いに異なるビットパターンの2ビ
ットの2進コードに変換した2mビットの同時衝突検知
コードとされる。例えば、「1」→「10」、「0」→
「01」に変換すると、同時衝突検知コードは「010
10110」とされる。
【0010】第3発明(請求項3に係る発明)は、第1
発明又は第2発明において、子機から親機に送信する応
答メッセージの先頭に同時衝突検知コードと全子機で共
通のビットパターンの非同時衝突検知コードとを所定の
順番で付与したものである。この発明によれば、子機か
ら親機への応答メッセージの先頭に、同時衝突検知コー
ドと非同時衝突検知コードとが、同時衝突検知コード,
非同時衝突検知コードの順、あるいは非同時衝突検知コ
ード,同時衝突検知コードの順に付与される。
【0011】
【発明の実施の形態】以下、本発明を実施の形態に基づ
き詳細に説明する。 〔実施の形態1:第1発明〕この実施の形態では、子機
からの応答メッセージに付与する同時衝突検知コード
を、この同時衝突検知コードの長さをnビットとしたと
き、nが偶数である場合、その中のn/2ビットを
「0」,残るn/2ビットを「1」とし、nが奇数であ
る場合、その中の(n+1)/2ビットを「1」,残る
(n−1)/2ビットを「0」、或いは、その中の(n
+1)/2ビットを「0」,残る(n−1)/2ビット
を「1」とする。
【0012】例えば、同時衝突検知コードの長さを8ビ
ットとした場合(n=8)、その中の4ビットを
「0」,残る4ビットを「1」とする。また、同時衝突
検知コードの長さを例えば9ビット(n=9)とした場
合、その中の5ビットを「1」,残る4ビットを
「0」、或いは、その中の5ビットを「0」,残る4ビ
ットを「1」とする。
【0013】今、同時衝突検知コードの長さを8ビット
とし、その中の4ビットを「0」,残る4ビットを
「1」とした場合について考える。この場合、例えば、
アドレス1の子機の応答メッセージに付与される同時衝
突検知コードは「00001111」とされ(図1
(a))、アドレス2の子機の応答メッセージに付与さ
れる同時衝突検知コードは「00010111」とされ
る(図1(b))。
【0014】この場合、同時衝突の結果生じる同時衝突
検知コードは、「00000111」となる(図1
(c))。これにより、すなわち同時衝突検知コード中
の「1」のビットの数が4つより少なくなったことによ
り、親機において応答メッセージの同時衝突を検出する
ことが可能となる。
【0015】この方法によれば、「0」が4ビット,
「1」が4ビットあるコードの組合せは70通り( 8
4 =70)であり、1バイトの同時衝突検知コードで7
0台の子機に対応することができることになる。また、
この方法によれば、親機において、同時衝突を起こした
子機をある程度しぼり込むことができる。例えば、上記
の例だと、同時衝突を起こした子機はその同時衝突検知
コードの0,1,2ビット目が「1」であるものである
から、これに該当する子機だけにあらためて問い合わせ
ればよく、全子機に問い合わせるよりも時間を短縮する
ことができる。
【0016】なお、上述においては、同時衝突検知コー
ドの長さを8ビットとした場合について説明したが、さ
らにビット数を増やすことにより対応し得る子機の数が
多くなることは言うまでもなく、nを偶数とした場合、
対応し得る子機の数は nn/ 2 となり、nを奇数とした
場合、対応し得る子機の数は n(n+1)/2 或いは n
(n-1)/2 となる。
【0017】〔実施の形態2:第2発明〕この実施の形
態では、子機からの応答メッセージに付与する同時衝突
検知コードを、子機のアドレスコードの長さをmビット
としたとき、その属する子機のアドレスコードの各ビッ
トの値を「1」と「0」とで互いに異なるビットパター
ンの2ビットの2進コードに変換して得られる2mビッ
トのコードとする。
【0018】例えば、子機のアドレスコードの長さを4
ビット(m=4)とし、その同時衝突検知コードが属す
る子機のアドレスコードを「0001」とした場合(図
2(a))、このアドレスコードの各ビットの値を
「1」と「0」とで互いに異なるビットパターンの2ビ
ットの2進コードに変換した2mビットのコードを同時
衝突検知コードとする。例えば、「1」→「10」、
「0」→「01」に変換し、同時衝突検知コードを「0
1010110」とする(図2(b))。
【0019】今、アドレス1の子機のアドレスコードを
「0001」、アドレス2の子機のアドレスコードを
「0010」とすると、アドレス1の子機の応答メッセ
ージに付与される同時衝突検知コードは「010101
10」となり(図2(b))、アドレス2の子機の応答
メッセージに付与される同時衝突検知コードは「010
11001」となる(図2(d))。この場合、同時衝
突の結果生じる同時衝突検知コードは、「010100
00」となる(図2(e))。この同時衝突検知コード
について、「10」→「1」、「01」→「0」、「0
0」→「*」のように再変換すれば、「00**」とな
る(図2(f))。これにより、すなわち再変換したコ
ードに「*」があることにより、親機において衝突を検
出することができる。
【0020】この方法によれば、2mビットの同時衝突
検知コードで、2m 台の子機に対応することができる。
例えば、同時衝突検知コードのコード長が12ビットの
場合、26 =64台の子機に対応することができること
になる。また、この方法によれば、親機において、同時
衝突を起こした子機をある程度しぼり込むことができ
る。例えば、上記の例だと、同時衝突を起こした子機の
アドレスコードは、「0000」、「0001」、「0
010」、「0011」の4つに限定でき、これに該当
する子機だけにあらためて問い合わせればよい。すなわ
ち、この方法によれば、実施の形態1に対して同時衝突
検知コードは少し長くなるが、同時衝突を起こした子機
をしぼり込むことができる。
【0021】〔実施の形態3:第3発明〕この実施の形
態では、子機から親機に送信する応答メッセージの先頭
に、実施の形態1や2で説明した同時衝突検知コードと
全子機で共通のビットパターンの非同時衝突検知コード
とを所定の順番で付与する。
【0022】図3(a)は子機からの応答メッセージの
一例を示す。この応答メッセージでは、8ビットの非同
時衝突検知コードAと8ビットの同時衝突検知コードB
とからなる16ビットの衝突検知コードCを、その先頭
に2連で付与している。非同時衝突検知コードAは、全
子機に対して共通であり、その全ビットが「0」とされ
ている。同時衝突検知コードBは、子機毎に異なるビッ
トパターンであり、その中の4ビットが「0」,残る4
ビットが「1」とされている。
【0023】なお、図3(a)においては、非同時衝突
検知コードAと同時衝突検知コードBとを、非同時衝突
検知コードA,同時衝突検知コードBの順で付与してい
るが、図3(b)に示すように同時衝突検知コードB,
非同時衝突検知コードAの順に付与するようにしてもよ
い。非同時衝突検知コードAは非同時衝突が起こった場
合、「フレーミングエラー」が確実に起こるためにあ
る。同時衝突検知コードBは同時衝突を検出するために
ある。また、信頼性向上のため、非同時衝突検知コード
Aと同時衝突検知コードBとからなる衝突検知コードC
を2連で付与するようにしている。
【0024】図4に親機が子機のデータを収集するとき
のフローチャートを示す。親機は、共通の通信バスを介
して同一の問い合わせを同時に送信し、全ての子機に対
して同時にメッセージの送信を促す(ステップ40
1)。子機は、この問い合わせを受信したときに必要が
あれば、2連の衝突検知コードCを付与した応答メッセ
ージを親機に送信する。親機は、この子機からの応答メ
ッセージを受けて、まず「フレーミングエラー」がある
か否かをチェックする(ステップ402)。
【0025】〔フレーミングエラー〕データは1バイト
単位で送信される。その際、先頭にスタートビットが1
ビット、後ろにストップビットが1〜2ビットが追加さ
れる。通常、スタートビットは「0」とされ、ストップ
ビットは「1」とされる。図5に非同時衝突検知コード
Aの送られ方を示す。図において、STはスタートビッ
トであり、STPはストップビットである。この図で
は、ストップビットSTPを2ビットとしている。
【0026】今、子機SAおよびSBから親機へ応答メ
ッセージが送信され、この応答メッセージが3ビットず
れて衝突する場合を考えてみる。この場合、子機SAか
らのスタートビットSTおよびストップビットSTPを
含む非同時衝突検知コードA(図6(a))と、子機S
BからのスタートビットSTおよびストップビットST
Pを含む非同時衝突検知コードA(図6(b))とが衝
突すると、衝突後のスタートビットSTおよびストップ
ビットSTPを含む非同時衝突検知コードAは図6
(c)のようになる。すなわち、スタートビットSTは
「0」のままであるが、ストップビットSTPは
「0」,「0」となる。親機は、このストップビットS
TPが「1」,「1」となっていないことにより、「フ
レーミングエラー」を認識する。
【0027】非同時衝突検知コードAの連続している
「0」のビット数は1個〜8個までが有効(この場合、
1フレーム8ビットであるので、9個連続していても意
味がない)で、その数は多い方が時間差の長い非同時衝
突を検出することができる。この実施の形態では、時間
差の長い非同時衝突を検出することができるように、非
同時衝突検知コードAを8ビットとしている。
【0028】ステップ402において「フレーミングエ
ラー」が検出されれば、親機は、全ての子機に対して1
台ずつ順にメッセージの送信を促す(ステップ40
7)。ステップ402において「フレーミングエラー」
が検出されなければ、親機は、ステップ403へ進む。
【0029】ステップ403において、親機は、送信さ
れてくる子機からの応答メッセージの先頭の2連の衝突
検知コードCが同一であるか否かをチェックする。2連
の衝突検知コードCが同一でなければ、衝突検知コード
Cが異常であるものとして、全ての子機に対して1台ず
つ順にメッセージの送信を促す(ステップ407)。2
連の衝突検知コードCが同一であれば、衝突検知コード
Cに異常がないものとして、ステップ404へ進む。
【0030】ステップ404において、親機は、衝突検
知コードCにおける同時衝突検知コードBの「1」の値
を有するビットの数をチェックする。「1」の値を有す
るビットの数が4でなければ、同時衝突が生じたものと
判断し、同時衝突を起こした可能性のある子機に対して
1台ずつ順にメッセージの送信を促す(ステップ40
8)。「1」の値を有するビットの数が4であれば、C
RCチェックを行う(ステップ405)。
【0031】ステップ405において、CRCチェック
の結果が「NO」であれば、その子機に対してメッセー
ジの再送信を促す(ステップ409)。CRCチェック
の結果が「YES」であれば、受信データを格納する
(ステップ406)。
【0032】
【発明の効果】以上説明したことから明らかなように本
発明によれば、第1発明では、同時衝突検知コードの長
さを例えば8ビットとした場合(n=8)、その中の4
ビットが「0」,残る4ビットが「1」とされ、また、
同時衝突検知コードの長さを例えば9ビットとした場
合、その中の5ビットが「1」,残る4ビットが
「0」、或いは、その中の5ビットが「0」,残る4ビ
ットが「1」とされ、短い同時衝突検知コードで多数の
子機に対応することが可能となる。また、この場合、同
時衝突を起こした子機をある程度しぼり込みむことも可
能となる。
【0033】また、第2発明では、例えば、子機のアド
レスコードの長さを4ビット(m=4)とし、その同時
衝突検知コードが属する子機のアドレスコードを「00
01」とすると、このアドレスコードの各ビットの値を
「1」と「0」とで互いに異なるビットパターンの2ビ
ットの2進コードに変換した2mビットの同時衝突検知
コードとされ(例えば、「1」→「10」、「0」→
「01」に変換すると、同時衝突検知コードは「010
10110」とされる)、第1発明に対して同時衝突検
知コードは少し長くなるが、同時衝突を起こした子機を
しぼり込むことが可能となる。
【0034】また、第3発明では、子機から親機への応
答メッセージの先頭に、同時衝突検知コードと非同時衝
突検知コードとが、同時衝突検知コード,非同時衝突検
知コードの順、あるいは非同時衝突検知コード,同時衝
突検知コードの順に付与され、第1発明又は第2発明の
効果に加えて、親機において非同時衝突を確実に検出す
ることが可能となる。
【図面の簡単な説明】
【図1】 本発明に係る通信システムの実施の形態1を
説明するための図である。
【図2】 本発明に係る通信システムの実施の形態2を
説明するための図である。
【図3】 本発明に係る通信システムの実施の形態3に
おける子機からの応答メッセージの一例を示す図であ
る。
【図4】 実施の形態3における親機が子機のデータを
収集するときのフローチャートである。
【図5】 実施の形態3における非同時衝突検知コード
の送られ方を示す図である。
【図6】 実施の形態3における子機からの応答メッセ
ージの衝突によって生じる非同時衝突検知コードの変化
を示す図である。
【図7】 同時衝突および非同時衝突を説明するための
図である。
【符号の説明】
A…非同時衝突検知コード、B…同時衝突検知コード、
C…衝突検知コード、ST…スタートビット、STP…
ストップビット。

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 親機から複数の子機へ共通の通信バスを
    介して同一の問い合わせを同時に送信し、子機はこの問
    い合わせを受信したときに必要があれば子機毎に異なる
    ビットパターンの同時衝突検知コードを付与した応答メ
    ッセージを親機に送信する通信システムにおいて、 前記同時衝突検知コードは、この同時衝突検知コードの
    長さをnビットとしたとき、 nが偶数である場合、その中のn/2ビットが「0」,
    残るn/2ビットが「1」とされ、 nが奇数である場合、その中の(n+1)/2ビットが
    「1」,残る(n−1)/2ビットが「0」、或いは、
    その中の(n+1)/2ビットが「0」,残る(n−
    1)/2ビットが「1」とされていることを特徴とする
    通信システム。
  2. 【請求項2】 親機から複数の子機へ共通の通信バスを
    介して同一の問い合わせを同時に送信し、子機はこの問
    い合わせを受信したときに必要があれば子機毎に異なる
    ビットパターンの同時衝突検知コードを付与した応答メ
    ッセージを親機に送信する通信システムにおいて、 前記同時衝突検知コードは、子機のアドレスコードの長
    さをmビットとしたとき、その属する子機のアドレスコ
    ードの各ビットの値を「1」と「0」とで互いに異なる
    ビットパターンの2ビットの2進コードに変換して得ら
    れる2mビットのコードとされていることを特徴とする
    通信システム。
  3. 【請求項3】 請求項1又は2において、子機から親機
    に送信する応答メッセージの先頭に前記同時衝突検知コ
    ードと全子機で共通のビットパターンの非同時衝突検知
    コードとが所定の順番で付与されていることを特徴とす
    る通信システム。
JP8033472A 1996-02-21 1996-02-21 通信システム Pending JPH09233107A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP8033472A JPH09233107A (ja) 1996-02-21 1996-02-21 通信システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP8033472A JPH09233107A (ja) 1996-02-21 1996-02-21 通信システム

Publications (1)

Publication Number Publication Date
JPH09233107A true JPH09233107A (ja) 1997-09-05

Family

ID=12387495

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8033472A Pending JPH09233107A (ja) 1996-02-21 1996-02-21 通信システム

Country Status (1)

Country Link
JP (1) JPH09233107A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6781567B2 (en) 2000-09-29 2004-08-24 Seiko Epson Corporation Driving method for electro-optical device, electro-optical device, and electronic apparatus
US6912021B2 (en) 2001-01-22 2005-06-28 Seiko Epson Corporation Electro-optical device, method for driving electro-optical device, electronic apparatus, and method for driving electronic apparatus
JP2012114488A (ja) * 2010-11-19 2012-06-14 Denso Corp 通信システム、ノード

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6781567B2 (en) 2000-09-29 2004-08-24 Seiko Epson Corporation Driving method for electro-optical device, electro-optical device, and electronic apparatus
US6912021B2 (en) 2001-01-22 2005-06-28 Seiko Epson Corporation Electro-optical device, method for driving electro-optical device, electronic apparatus, and method for driving electronic apparatus
JP2012114488A (ja) * 2010-11-19 2012-06-14 Denso Corp 通信システム、ノード

Similar Documents

Publication Publication Date Title
JP2713226B2 (ja) ネットワークにおけるipアドレス自動生成方法
CA1218436A (en) Data transmitting and receiving apparatus
US5383185A (en) Method and apparatus for data collision detection in a multi-processor communication system
JPH09107373A (ja) ローカル通信システム
EP0862296A2 (en) Data communication system and electronic control unit used therein
US7808917B2 (en) Method and system for transmitting telegrams
US6907542B2 (en) System, device and method for determining the reliability of data carriers in a failsafe system network
JPH09233107A (ja) 通信システム
JPH0685793A (ja) 伝送誤り検出方式
JPS59134943A (ja) デ−タ通信システム
JP3252556B2 (ja) 通信装置
JP3088200B2 (ja) 多重通信装置
JP3088199B2 (ja) 多重通信装置
JP2002073430A (ja) エラー・メッセージを送信するための装置および方法
JP3112778B2 (ja) トークン再発生方式
JPH0614530Y2 (ja) 車両用電装品制御装置
JP2005004607A (ja) バスシステムおよびデータの同報通信方法
JPH0546733B2 (ja)
JP2874983B2 (ja) 通信装置
JPH05316125A (ja) シリアル多重通信システム
JPH0683186B2 (ja) デ−タ通信方式
JPS62176236A (ja) 応答パケツト送信時の伝送エラ−防止方法
JPH04369135A (ja) データ伝送方法
JPH0226152A (ja) 誤り検出回路の故障検定方法
JPS63254839A (ja) 誤り検出回路の故障診断方法