HOME ダウンロードに戻る

 
 
「 通信制御サンプルプログラムにTCPでなくUDPを使用している理由 」
 
【UDPは信頼性が低いのか?】
 
UDPはTCPに比べ信頼性が低いと言われています。
これは通信エラー時の再送回復処理がUDPプロトコル内に含まれない為です。
ただしこの処理がプロトコル内で行われるTCPが完全かと言われると再送回数を無限に繰り返す訳に行かない事からも100%のプロトコルという訳でもありません。
 
TCPを使用する場合その信頼性は内部再送システムにかかっている訳ですがその再送システムの作りは一様ではありません。
再送時間間隔やその回数はTCP実装(ドライバソフト作成)者の判断に全て委ねられて作られている為です。
そしてこの再送処理は一般的に安全を見込んで長い時間かけて繰り返し行われる場合が多いようです
 
しかしながらこの再送処理に長時間取られては困る場合があります。
通信経路に問題が生じた場合にそれが断線なのか不安定な状況なのかをすばやく判断し、すぐさま次の処理に移りたい場合があるからです。
この様な場合には、内部遅延の無い単純なUDPプロトコルが向いています。
 
ただしUDPにはTCPのような信頼性向上のための再送処理がありませんのでこれを司る部分はアプリケーション側に組み込む必要があります。
通常応答データが任意の時間待っても戻らない場合に再送を何回か繰り返すプログラムをアプリケーションに加えます。
これが上手に組み込められればTCPを使った場合の信頼性と変わらないシステムが得られます。
 
※注 ) UDPにはパケットデータをチェックサムしない仕様も許可されているので注意が必要です。ここではチェックサムされているUDPを使用すると言う前提で書かれています。(KARACRIX製品はチェックサムされる仕様で作られています)
 
【UDPのメリット】
 
そして信頼性を確保したUDPシステムではそのプロトコル仕様を活かしTCPシステムでは困難な以下に示す様な事柄が可能となります。
 
1. 細かなリアルタイム通信制御
    再送システムを取り込んだ場合の時間間隔と回数を通信状況の問題のレベルに合わせてアプリケーション側で自由にで決められるので、TCPに比べ動的で細かなリアルタイム通信システムが組めるようになる。
2. ブロードキャスト通信
    UDPはTCPの1対1の限定通信でなく1対Nの多局通信が行えるため、緊急信号による一斉(ブロードキャスト)制御を含めた通常通信が可能となる。
3. 軽量高速プロトコル
    プロトコル仕様が非常に単純で軽量であることから高速計測通信制御にも向いている。
 
以上のようにTCPも良いものですが、UDPも再送の問題をクリアしてしまえば大変便利で使い勝手が良いものです。
この様な事から計測制御用の通信サンプル及び実用化プログラムにUDPを利用しています。
 
 
【サンプルプログラムでは】
 
「通信&警報マネージャ多機能プログラム(通信制御ドライバS1)」(通信サンプル)のUDPデータ再送システムの概略
1.装置より応答データが任意の時間待っても戻らない場合に再送を何回か繰り返します。
2.再送回数と応答最大待時間はそれぞれ(デフォルト定義では)3回10秒としています。
3.再送処理を行っても繋がらなかった場合には、次回からはその装置に対して間引き通信します。
4.間引き通信とは、繋がらなかった装置(あるいは通信経路)がダウンしている可能性が高いと判断し、
 その様な装置に対して毎回通信と再送処理を行う事は無駄と考え復帰を検出する為の通信という位置付けのものです。
 従って間引き中の装置に対する再送回数と応答最大待時間はそれぞれ1回(デフォルト定義では)1秒としています。
5.再送処理に関する設定はプログラム内のdefine値で定義します。
6.お使いの通信環境に合わせ定義を変更するなどしてお使いください。
 なお定義変更後はプログラムを再コンパイルしてください。
#define LAN_COMMANDRETRYs (3)   通常の再送回数   (一部にも無線LAN使用時には5推奨)
#define LAN_RCVTOUTSECs (10)   通常の応答最大待時間(秒)   (一部にも無線LAN使用時には60推奨)
#define LAN_RCVTOUTSEC_ERR (1)   間引き通信時の応答最大待時間(秒)
#define LAN_ERRORRETRYSECs (20)   間引き(間隔)時間(秒)   [本設定時間毎に間引き通信を行うの意]
 
 


HOME