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ノードアドレス情報を交換
    PCからノードアドレス=0で送信して空いているFINSノードアドレスを受信(自動割付FINSノードアドレス)

    3. 取得した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フレーム
    LengthはCommandからFINSフレームの最後までのバイト数

フレームの例

FINS/UDPフレーム
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/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 -

この記事へのコメント