« あー、非同期通信 | トップページ | ロボット屋 »

2020年8月28日 (金)

ACK

前のエントリの内容追加。

頭整理して考えてみると、ACK/NAKのフラグフィールドのある通信、
例えばCANとかI2C。

特定のフィールドがACKかどうかの判断が、
ノード間でずれた時に、修復不能の
ステートに入ったりするのが
致命的なんだと気づいた。

これ、同じライン、信号線を共有して動かしている以上、
原理的には、どうやっても回避できないような...

タイムアウト設定して、全部のステートマシンに
強制リセット掛けるくらいかな。


だったらいっそACK、NAKなんて使わないか、
完全に信号線分けてしまうのが、難しいステートに
入らなくていいよな。

となると、やっぱり、CANとかI2Cは
異常動作時の信頼性では失格で、
Ethernet(1xxBASE-T)、
UART、SPIなんかは合格なわけだ。

なにかすっきりした気分。


あー、CANの接続を1:1に限定するのも、
バス上でのACKの解釈を固定するのには、
かなり有効だよな...

CAN BUSの難しい挙動、ここがらみ多いし。

------

よくよく考えてみると、そもそも正常動作時?
の信頼性なんて、なんかあんまり
役に立たないような気がしてくるな?

| |

« あー、非同期通信 | トップページ | ロボット屋 »

コメント

あっ、ひらめいたw

CAN、すべての送信を再送禁止にして、すべての受信ノードをサイレントモードのみで構成すれば、
不用意なバスストールを完全に回避できるのでは???

どこかで誰かがやってそう。

というか、クローズドなCAN BUSなら、これが究極の高信頼ソリューションかも。

投稿: w谷 | 2020年8月29日 (土) 01時31分

コメントを書く



(ウェブ上には掲載しません)




« あー、非同期通信 | トップページ | ロボット屋 »