ACK
前のエントリの内容追加。
頭整理して考えてみると、ACK/NAKのフラグフィールドのある通信、
例えばCANとかI2C。
特定のフィールドがACKかどうかの判断が、
ノード間でずれた時に、修復不能の
ステートに入ったりするのが
致命的なんだと気づいた。
これ、同じライン、信号線を共有して動かしている以上、
原理的には、どうやっても回避できないような...
タイムアウト設定して、全部のステートマシンに
強制リセット掛けるくらいかな。
だったらいっそACK、NAKなんて使わないか、
完全に信号線分けてしまうのが、難しいステートに
入らなくていいよな。
となると、やっぱり、CANとかI2Cは
異常動作時の信頼性では失格で、
Ethernet(1xxBASE-T)、
UART、SPIなんかは合格なわけだ。
なにかすっきりした気分。
あー、CANの接続を1:1に限定するのも、
バス上でのACKの解釈を固定するのには、
かなり有効だよな...
CAN BUSの難しい挙動、ここがらみ多いし。
------
よくよく考えてみると、そもそも正常動作時?
の信頼性なんて、なんかあんまり
役に立たないような気がしてくるな?
| 固定リンク | 0
« あー、非同期通信 | トップページ | ロボット屋 »
コメント
あっ、ひらめいたw
CAN、すべての送信を再送禁止にして、すべての受信ノードをサイレントモードのみで構成すれば、
不用意なバスストールを完全に回避できるのでは???
どこかで誰かがやってそう。
というか、クローズドなCAN BUSなら、これが究極の高信頼ソリューションかも。
投稿: w谷 | 2020年8月29日 (土) 01時31分