回答編集履歴

1

Modbusのプロトコル仕様について追記

2021/09/25 16:18

投稿

dodox86
dodox86

スコア9256

test CHANGED
@@ -15,3 +15,29 @@
15
15
 
16
16
 
17
17
  言葉の捉え方ですが、スタートが3文字分、エンドが5文字分の無通信時間でそれぞれを示すとありますが、言い方を変えると「データフレームの受信が始まるまで少なくとも3文字分の無通信時間が設けられる。」「5文字分以上の無通信時間が発生したら、とにかくそればデータフレームの送信が終わったことを示す。」とも取れます。そう考えるとデータフレームの受信にほぼ専念できるような気がしますがどうでしょうか。
18
+
19
+
20
+
21
+ ---
22
+
23
+ **Modbus RTUのプロトコルを考慮して追記しました:**
24
+
25
+
26
+
27
+ こちらは株式会社エム・システム技研(M-System)さんがWEBで公開されているModbusのプロトコルに関する概要の説明書ですが、
28
+
29
+ [Modbus プロトコル概説書 - M-System](https://www.m-system.co.jp/mssjapanese/kaisetsu/nmmodbus.pdf)
30
+
31
+
32
+
33
+ 一部引用させていただくと、「2.2.(2) RTUモード時のフレーム」において以下の文章があります。
34
+
35
+
36
+
37
+ > RTU モードの場合、少なくとも 3.5 文字分のサイレントインターバル(無通信時間)で始まり、3.5
38
+
39
+ > 文字分のサイレントインターバルで終ります。これを(表 2)では T1-T2-T3-T4 で表します
40
+
41
+
42
+
43
+ データ項目については少なくともAddressとFunctionがあるのですから、後続のData部が可変長であっても、先行してマスターから送信する際のクエリ内容を考えればどんなAddressとFunctionを受信すべきか、更には期待するデータ部の個数もマスター自身が知っているはずです。0個以上の可変になるならCRCを考慮に含めるか、その後の無通信時間をもって終了と判定できると考えられます。