- RS-485(2線式半二重)
- HDLC
- NRZI符号(0で電位を反転、1は反転しない)
以上の条件において、存在しないはずのフレームがアナライザーでモニターされることがあります。正常なフレームの後に、[Flag] [0xFD等の短いデータ] [Abort] のように表示されるケースが多いです。この問題の原因は、フレーム送信後にRS-485ドライバーが Disable になるタイミングにあります。
RS-485の場合、機器がデータを送信する時に、その機器はRS-485ドライバーを Enable にします。そして、フレームの終端フラグの送信が完了してからドライバーを Disable にします。
NRZI符号の場合、フレームの終端フラグ以降の電位が High になる場合と Low になる場合の両方があり得ます。
フレームの終端フラグ以降の電位が Low、かつ、ドライバーを Disable にするタイミングが早い場合に問題が発生します。
○ 終端フラグ以降の電位が High の場合
この場合、問題は発生しません。
終端フラグの送信完了後、ドライバーが Disable になると、回線の電位が High から Hi-Z(ハイインピーダンス状態)に遷移しますが、受信する側の機器からは常に High とみなされるため影響はありません。
○ 終端フラグ以降の電位が Low で問題が発生する場合
下記の図で、「送信データ」は送信側機器が送信したデータ、「受信データ」は受信側機器が実際に受け取るデータを示します。
終端フラグ以降の電位が Low の場合、ドライバーが Disable になって電位が Hi-Z になると、受信側機器は、Low が High になったと認識します。つまりそこに「0」が出現し、データがあると認識してしまいます。
これは、終端フラグの後、十分な時間が経過する前にドライバーが Disable になった場合に発生します。
アナライザーのモニター結果としては、終端フラグとアボートの間にフレームが記録されることになります。アナライザーはフラグとフラグ、または、フラグとアボートの間をデータとして記録するためです。
※ アボート:7 bit 以上の連続した「1」
○ 終端フラグ以降の電位が Low で問題が発生しない場合
終端フラグの後、8 bit 時間以上が経過してからドライバーが Disable になると、問題となるデータが検出されることはありません。
実際の通信システムにおいては、終端フラグとアボートの間に検出されるデータは破棄されるためエラーにはならないことが多いようです。しかし、一部では問題となることもあるようです。