| 項目 | FINS-UDP | FINS-TCP |
|---|---|---|
| 接続 | 不要 | 必要 |
| 速度 | 高速 | やや遅い |
| 信頼性 | 普通 | 高い |
| コネクション数 | 制限なし | 最大16 |
同一LAN内でPLCと通信する場合は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 |
PLCのポート番号はデフォルト:9600(変更可)
PCのポート番号に指定はありませんが、PLCと同じ9600にすると分かりやすい
← UDPと同様
PLCのFINS/TCPコネクションは
最大16個(同時)
前処理不要で直接FINSフレームを送信
1. TCPのコネクションを確立
2. FINSノードアドレス情報を交換
PCからノードアドレス=0で送信して空いているFINSノードアドレスを受信(自動割付FINSノードアドレス)
3. 取得した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フレームの前にFINS/TCPヘッダを付加します
| Header | "FINS" |
| Length | 0x00000014-0x000007e4 |
| Command | 0x00000002 |
| ErrorCode | 0x00000000 |
| FINSフレーム |
LengthはCommandから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 | - | |
同一LAN内でPLCと通信する場合は高速で設定が容易なFINS/UDPが一般的です。VPNやインターネット経由など通信の信頼性を重視する場合はFINS/TCPが適しています。
FINS-UDPはコネクションレス通信であり、接続手続きが不要なため高速です。一斉同報通信が可能で、コネクション数の制限もありません。
FINS-TCPはコネクション型通信であり、接続確立後に通信を行います。通信の信頼性が高く、FINSノードアドレスの自動割付機能を利用できます。