ＭｄｏｂｕｓＲＴＵログ支援ソフトの使い方－－スクリプトの自動生成とログファイル変換ソフト－－スクリプトの自動生成とログファイル変換ソフト－－
スクリプトの自動生成とログファイル変換ソフト－－〔LogFriendForModbusRTU〕〕

２０２２年１月７日 （株）データ･テクノ （改 1 版）
２０２０年９月１５日 （株）データ･テクノ■■概要
ＳＤロガーとラインコンバータで、Ｍｏｄｂｕｓからデータを取得し、記録することを支援する、パソコン上のプログラムです。
設定された条件で、ＳＤロガーのスクリプトを自動生成する機能と、ＳＤロガーで記録されたファイルをＣＳＶに変換する機能があります。
生成と変換は、ドラッグアンドドロップの、簡単な操作で行うことが出来ます。
何れも画面上で条件を設定します。設定した条件はプログラムが終了しても保存されます。また、個別のファイルに保存することもできます。
Ver. 0.02 から、ロガーで日付時刻を付加する機能を、支援する機能が追加されました。
■■インストール
インストール作業は特に必要ありません、ダウンロードしたファイルを適当なフォルダに展開し、「LogFriendFotModbu
sRTU.exe」をダブルクリックなどで起動してください。
実行には、「.NTE Framework 3.5」以降を必要とします。
ＭｄｏｂｕｓＲＴＵログ支援ソフト

LogFriendForModbusRTU.exe

ＭｄｏｂｕｓＲＴＵログ支援ソフトの使い方〔LogFriendForModbusRTU(X5020031-1)〕（改 1 版）1/10

■■操作

ＭｄｏｂｕｓＲＴＵログ支援ソフトの使い方〔LogFriendForModbusRTU(X5020031-1)〕（改 1 版）2/10

●フレーム（配列要素）の追加削除※その他の配列要素（値）も同様にして追加、削除が行なえます。

ＭｄｏｂｕｓＲＴＵログ支援ソフトの使い方〔LogFriendForModbusRTU(X5020031-1)〕（改 1 版）3/10

■■設定●スクリプトの自動生成、ログファイルの変換は、この設定をもとに行なわれます。
Frame...

複数のフレームを設定できます。
Modbus 上のクエリー、レスポンスの１回のやり取りを、フレームという単位で扱います。同じノードの連続するレジスタがひとつのフレームで取得できます。

Node

1～247

Function

Coil, Status, Input, Holding, DateTime
取得する、Modbus 上のデータの種類を指定します。
ロガーで日付時刻を付加する場合は DateTime を指定してください。

NodeView

True, False

ノードアドレスを出力項目に含めるかどうか。
ロガーで日付時刻を付加する場合は False を指定してください。

FunctionView

True, False

ファンクションコードを出力項目に含めるかどうか。
ロガーで日付時刻を付加する場合は False を指定してください。

Register

1～9999取得する、Modbus 上のレジスタの開始アドレスを1 から始まるオフセット値で指定してください。
ロガーで日付時刻を付加する場合は無視されます。

Format<文字列>

ロガーで日付時刻を付加する場合は、その書式をロガーのLOG 文の形式で指定してください。
その他では無視されます。

Value...

複数の値を設定できます。値の変換方法などを設定します。

ノードアドレス（スレーブアドレス、デバイスアドレス）
ロガーで日付時刻を付加する場合は無視されます。

タイトル行に表示する文字列。
ひとつも指定が無ければ、タイトル行は出力されません。

Title

<文字列>

Type

Int16, UInt16, Float, Double, Int32, UInt32, Bit, Through
値の種類
Coil, Status は Bit を指定してください。
Input, Holding は Bit, Through 以外を指定してください。
DateTime は Through を指定してください。

EndianBig, Little

エンディアン（Bit, DateTime では無視されます）

1 ミリ秒～999 分

クエリーを送信するまでの待ち時間
この時間内に前のレスポンスの受信が完了している必要があります。

WaitTime…

Value

1～60000

Unit

MS, S, M●サポートしているデータの種類と Register に記述する値
Function symbol

データの種類Coil
Status
Input
Holding

コイル
入力ステータス
入力レジスタ保持レジスタModbus 上のアドレス範囲
1～999910001～19999
30001～39999
40001～49999

Register に記述する値
1～99991～99991～99991～9999ＭｄｏｂｕｓＲＴＵログ支援ソフトの使い方〔LogFriendForModbusRTU(X5020031-1)〕（改 1 版）4/10

●エンディアンの説明（リトルエンディアン）（ビッグエンディアン）■■生成されるスクリプト●生成されるスクリプト例#f:ENCODE *#LOOP

受信データに「*」が含まれた場合、ログデータは「**」に置き換えて記録する（エンコード機能を設定）。
#END までを繰り返し。

#WAIT TIME 1S#LOG *120@Y/@M/@D,@h:@m:@s

設定された時間待つ。

#WAIT TIME 1S#LOG *_:010400000008F1CC設定された時間待つ。
「_」はフレーム番号に置き換える。
設定されたクエリーを送信する。

・・・

フレームの数だけ続く。

#END＃LOOP の終了。

ＭｄｏｂｕｓＲＴＵログ支援ソフトの使い方〔LogFriendForModbusRTU(X5020031-1)〕（改 1 版）5/10

●フレームの分離についてクエリーの送信に先立って、開始マーク「*_」が記録されます（「_」はフレーム番号）。
レスポンス中に「*」が含まれた場合は「**」に置き換えられます（エンコード機能）。
Modbus RTU では一定時間受信が無いことで、フレームの区切りを判断しなければなりません。
しかしＳＤロガーで記録されたデータには、時間経過は失われているので、フレームの開始の判断が難しくなります。
ロギングの開始から全く冗長な受信が無い場合は、受信バイト数で判断できないこともありませんが、ひとたび狂うと後を続けるのが難しくなります。
そこでクエリーの送信前に開始マーク「*_」をログデータに記録します。
データを解析する側は、「*_」を見つけることでフレームの開始を知ることが出来ます。
しかしそれをすると、Modbus 機器が返すレスポンス自身に「*_」が含まれると区別がつかなくなります。
そのためエンコード機能を使います。エンコード機能を使い、本来のデータに「*」が含まれる場合はふたつの「**」に置き換えて記録します。
データを解析する側は、「*_」は開始マークとして認識ますが、「**_」は本来のデータ（「*_」）だと認識します。

ＭｄｏｂｕｓＲＴＵログ支援ソフトの使い方〔LogFriendForModbusRTU(X5020031-1)〕（改 1 版）6/10

■■設定例(入力レジスタ)※つぎのように定義された入力レジスタ値を取得する例を示します。
※ノードアドレス=1、待ち時間＝1 秒の場合。
●入力レジスタの定義
アドレス

説明

30001
30002
30003
30004
30005
30006
30007
30008
30009
30010
30011
30012

値Ａ： 符号あり整数値（16 ビット）
値Ｂ： 符号なし整数値（16 ビット）
値Ｃ： 浮動小数点値（単精度）
値Ｄ： 浮動小数点値（倍精度）

値Ｅ： 符号あり整数値（32 ビット）
値Ｆ： 符号なし整数値（32 ビット）

●設定例
Frame[0]Node1Function

Input

NodeView

True

FunctionView

TrueRegister

1

Value[0]
Title

値Ａ

Type

Int16

EndianBig

Value[1]
Title

値Ｂ

Type

UInt16

EndianBig

Value[2]
Title

値Ｃ

Type

Float

EndianBig

Value[3]
Title

値Ｄ

Type

DoubleEndianBig

Value[4]
Title

値Ｅ

Type

Int32

EndianBig

Value[5]
Title

値Ｆ

Type

UInt32EndianBig

WaitTime…
Value

1

Unit

S

ＭｄｏｂｕｓＲＴＵログ支援ソフトの使い方〔LogFriendForModbusRTU(X5020031-1)〕（改 1 版）7/10

■■設定例２(コイル)※つぎのように定義されたコイルの値を取得する例を示します。
※ノードアドレス=1、待ち時間＝1 秒の場合。
●コイルの定義

アドレス説明1234コイルＡ
コイルＢ
コイルＣ
コイルＤ

●設定例
Frame[0]Node1Function

Coil

NodeView

True

FunctionView

TrueRegister

1

Value[0]
Title

コイルＡ

Type

Bit

EndianBig

Value[1]
Title

コイルＢ

Type

Bit

EndianBig

Value[2]
Title

コイルＣ

Type

Bit

EndianBig

Value[3]
Title

コイルＤ

Type

Bit

EndianBig

WaitTime…
Value

1

UnitS
※Endian の設定は無視される。

ＭｄｏｂｕｓＲＴＵログ支援ソフトの使い方〔LogFriendForModbusRTU(X5020031-1)〕（改 1 版）8/10

■■設定例３(日付時刻の付加)
ロガーで日付時刻を付加させる場合は、Function に DateTime を指定してください。
Value はひとつだけ設け、Type に Through を指定してください。
Format にはロガーのスクリプトの、LOG 文の書式で指定してください。「20@Y/@M/@D,@h:@m:@s」と記述すると「2022/01/01,10:10:10」のような書式で付加されます。
この例では日付と時刻はふたつの列に分かれて付加されます。
Format には LOG 文の書式ならば任意のものが指定できます。従って日付時刻に限らず LOG 文で記録できるものなら、他のものも記録できます。
タイトル行を設ける場合は Title に任意の文字列が指定できます。日付時刻が複数列に渡る場合は、列の区切りに「,（カンマ）」も記述してください。
NodeView, FunctionView は False を指定してください。
日付時刻の付加には WaitTime は必要ありません。DateTime の、つぎのフレームの WaitTime には 0 を指定できます。
DateTime を指定したフレーム自身の WaitTime の必要性は、直前のフレームに依存します。
Node, Register の設定は DateTime が指定された場合は無視されます。Endian の設定は、Trough が指定された場合は無視されます。
この機能は Ver. 0.02 から使用できます。
●設定例 「2022/01/01,10:10:10」のような書式で、ふたつの列に分かれて付加される例です。
Frame[0]※Node1Function

DateTime

NodeView

False

FunctionView

False

Register1

Format20@Y/@M/@D,@h:@m:@s※Value[0]Title

Date, TimeType

Through

EndianBig

タイトルに表示したい任意の文字列を指定してください※

WaitTime…
Value

1

UnitS
※これらの設定は無視されます。

ＭｄｏｂｕｓＲＴＵログ支援ソフトの使い方〔LogFriendForModbusRTU(X5020031-1)〕（改 1 版）9/10

●設定例 「10:10:10」のような書式で時刻だけ付加される例です。
Frame[0]Node1Function

DateTimeNodeView

False

FunctionView

False

Register1

Format@h:@m:@s※※Value[0]
Title

Time

Type

Through

EndianBig

タイトルに表示したい任意の文字列を指定してください※

WaitTime…
Value

1

UnitS
※これらの設定は無視されます。
■■その他
ModbusRTU ログ支援ソフト（LogFriendForModbusRTU）は、弊社製品でデータ収集を行なう目的でのみ、無償でご使用いただけます。
その他の目的には、ご使用にならないようにお願いいたします。

株式会社データ・テクノ
京都市下京区西七条東御前田町４８番地〒600-8898 TEL:(075)313-3275 FAX:(075)314-0576
http://www.datatecno.co.jp/
・本取扱説明書の内容は、改良のため予告なく変更することがあります。

ＭｄｏｂｕｓＲＴＵログ支援ソフトの使い方〔LogFriendForModbusRTU(X5020031-1)〕
10（改 1 版）10/