FINS/UDPとFINS/TCPの比較
比較
-
FINS/UDP
-
FINS/TCP
-
- 特徴
コネクションレスの通信プロトコルなので PCからPLCへデータを送信するとき相手のPLCが居る居ないに関わらず一方的にデータを送ります
・コネクションレスのためコネクション数に制限がない
・一斉同報が使用できる
・多階層のIPネットワーク(例:インターネット)を経由する場合は通信の信頼性が落ちる
・接続の手続きが無いため手続きに掛かる時間を短縮できる(高速)
-
- 特徴
コネクション型の通信プロトコルなので PCからPLCへメッセージを送る前にコネクションの開設要求して確立します
・コネクション数に制限がある
・一斉同報が使用できない
・多階層のIPネットワーク(例:インターネット)を経由する場合でも通信の信頼性が高い
・接続の手続きがあるためUDP/IPより処理時間が掛かる
・サーバ側の設定で接続できるクライアントを制限できる
-
- フレーム構造
Ethernet2 IP UDP FINS FCS
-
- フレーム構造
Ethernet2 IP TCP FINS/TCP
ヘッダFINS FCS
-
- UDPポート番号
PLCのポート番号はデフォルト:9600(変更可)
PCのポート番号に指定はありませんが、PLCと同じ9600にすると分かりやすい
-
- TCPポート番号
← UDPと同様
-
コネクションレス
-
- TCPのコネクション
PLCのFINS/TCPコネクションは
最大16個(同時)
-
- 通信手順
前処理不要で直接FINSフレームを送信 -
- 通信手順
1. TCPのコネクションを確立
2. FINSノードアドレス情報を交換
3. 取得したFINSノードアドレスを使ってFINSフレームを送信
PCからノードアドレス=0で送信して空いているFINSノードアドレスを受信(自動割付FINSノードアドレス)
-
- 自動割付FINSアドレス
- FINSノードアドレス情報送信コマンドを使ってノードアドレスを取得します
送信コマンドHeader "FINS" Length 0x0000000c Command 0x00000000 ErrorCode 0x00000000 ClientNodeAddress 0x00000000
受信コマンドHeader "FINS" Length 0x00000010 Command 0x00000001 ErrorCode 0x00000000 ClientNodeAddress 0x00000001-0x000000fe ServerNodeAddress 0x00000001-0x000000fe
-
- FINS/TCPヘッダ
- FINS/TCPではFINSフレームの前にFINS/TCPヘッダを付加します
Header "FINS" Length 0x00000014-0x000007e4 Command 0x00000002 ErrorCode 0x00000000 FINSフレーム
フレームの例
FINSヘッダ | FINSコマンド | ||||||||||||
ICF | RSV | GCT | DNA | DA1 | DA2 | SNA | SA1 | SA2 | SID | MRC | SRC | TEXT | |
(例) | 80 | 00 | 02 | 00 | 01 | 00 | 00 | 0A | 00 | 01 | 05 | 01 | - |
FINS/TCPヘッダ | FINSヘッダ | ||||||
Header | Length | Command | ErrorCode | ICF | RSV | GCT | |
(例) | "FINS" | 00000014 | 00000002 | 00000000 | 80 | 00 | 02 |
FINSヘッダ (続き) | FINSコマンド | |||||||||
DNA | DA1 | DA2 | SNA | SA1 | SA2 | SID | MRC | SRC | TEXT | |
00 | 01 | 00 | 00 | 0A | 00 | 01 | 05 | 01 | - |