Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

ソケット通信の電文仕様について思考整理する

0
Posted at

はじめに

お仕事で独自の電文仕様を考えることが稀にあり、思考整理のためにまとめました。FA 業界に携わることが多い人間の視点です。

前提条件

マスタースレーブ方式の同期通信です。

補足
調べてみると、この「マスタースレーブ」という呼び方は奴隷制度を連想させるため、各分野で用語の見直しや置き換えが進んでいるようです。

ITmedia NEWS - IT 用語も「奴隷」廃止の動き「slave」は「フォロワー」や「レプリカ」に (2020/07/13 08:55)

GitHub のデフォルトブランチ名も、いつのまにか「master」から「main」に変更されていましたが、この運動の影響っぽいですね。

電文仕様

1. ASCII 電文仕様例

性能より可読性を重視。特に指定がなければ、この方式を採用するイメージです。

基本仕様

  • 電文全体で最大 128 文字。
  • 必要に応じて送信元 ID や、タイムアウト後の再送処理のためにリクエスト番号(シーケンス番号)を加えることもあります。
  • 開始コードはとりあえず @ にしていますが、協力会社様の文化に合わせて : や % を使うこともあります。
項目 文字数 仕様
開始コード 1 @
データ長 3 コマンド ID + データの文字数 (003 ~ 119)
コマンド ID 3 000 ~ 999
データ 可変 最大 116 文字
チェックサム 2 データ長 ~ データの XOR (LRC)
終了コード 2 CRLF (\r\n)

(例)装置状態通知電文の場合

  • 例では、状態コード 01 を通知します。
項目 文字数 仕様
開始コード 1 @
データ長 3 005
コマンド ID 3 010
状態コード 2 00: 自動 / 01: 手動 / 02: 異常
チェックサム 2 データ長 ~ データの XOR (LRC)
終了コード 2 CRLF (\r\n)
@0050100105\r\n

2. バイナリ 電文仕様例

可読性より性能を重視。が、秒間 100 電文程度の通信であれば、現代の一般的な LAN 環境では ASCII でもバイナリでも問題ないです(それ以上の通信速度は経験がないため、分からないですが、数値上は全然大丈夫だと思います)。

基本仕様

  • 電文全体で最大 128 バイト。
  • エンディアンには注意しましょう。
項目 バイト数 仕様
開始コード 1 バイト 0x55
データ長 1 バイト コマンド ID + データのバイト数 (0x01 ~ 0x7C)
コマンド ID 1 バイト 0x00 ~ 0xFF
データ 最大 123 バイト コマンドに応じた情報
チェックサム 1 バイト データ長 ~ データの XOR (LRC)
終了コード 1 バイト 0xAA

(例)時刻情報更新要求電文の場合

  • 例では、時刻情報 2023/03/20 15:45:30 を通知します。
  • 時刻情報は BCD (Binary-Coded Decimal) とします。
項目 バイト数 仕様
開始コード 1 バイト 0x55
データ長 1 バイト 0x07
コマンド ID 1 バイト 0x10
時刻情報 6 バイト 年月日時分秒 (BCD)
チェックサム 1 バイト データ長 ~ データの XOR (LRC)
終了コード 1 バイト 0xAA
55 07 10 23 03 20 15 45 30 77 AA

おわりに

FA は比較的クローズドな世界なので、他の方の意見や情報も聞きたいです。

0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?