回答編集履歴
1
Modbusのプロトコル仕様について追記
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を考慮に含めるか、その後の無通信時間をもって終了と判定できると考えられます。
|