MODBUS RTUからMS SQLデータベースへのリアルタイムログ記録
MODBUS RTUシリアルデバイスをポーリングし、レジスタデータをデータベース構造に従ってMsSQLデータベースに直接エクスポートする完全ガイド。
1. プロトコル設定: MODBUS RTU
通信タイプ: アクティブポーリング(RS485/COM上のマスター/スレーブ)
MODBUSはデータをバイナリで送信するため、パーサーは特定の保持レジスタ(例:40001)または入力レジスタを抽出する必要があります。センサーが32ビット浮動小数点数を使用している場合、隣接する2つの16ビットレジスタを読み取り、正しいバイトスワップ(エンディアン)を適用して浮動小数点数を再構築するようにパーサーを設定します。
シリアル接続にこの基本設定を適用してください:
{
"port": "COM3",
"baud_rate": 9600,
"data_bits": 8,
"stop_bits": 1,
"parity": "none",
"protocol": "modbus_rtu_serial",
"poll_interval_ms": 1000
}
データをクエリして解析するためのMODBUS RTUプラグインの選択

MODBUS RTUクエリキュー:異なるレジスタを読み取るためのカスタム設定
MODBUS RTU を Microsoft SQL Server に接続する準備はできましたか?
2. データベース設定: Microsoft SQL Server
Data LoggerのODBCエクスポートモジュール内で、組み込みのSQL Server Native ClientまたはOLE DBプロバイダーを使用します。ロガーサービスアカウントにデータベースアクセス権がある場合、Windows認証がシームレスにサポートされます。
次のSQLスクリプトを使用してターゲットテーブルを作成してください。 高頻度の産業用シリアルログ記録には、DATETIMEの代わりにDATETIME2を使用して、より高い精度のタイムスタンプを実現してください。
CREATE TABLE SerialData ( RecordID INT IDENTITY(1,1) PRIMARY KEY, LogTime DATETIME2 DEFAULT SYSUTCDATETIME(), PortID NVARCHAR(20), SensorReading FLOAT );

ロガー内のMicrosoft SQL Serverコネクタ。

SQLServerデータベース接続設定。例:SQL Express。

SQLキュー。
3. プロトコル固有のトラブルシューティング
- タイムアウトまたはCRCエラー: TCPとは異なり、シリアルMODBUS RTUは厳密なタイミングに依存しています、RS485のA/B配線が逆接続されていないこと、ソフトウェアのボーレートとデバイスIDがスレーブデバイスと完全に一致していることを確認してください。
- デバイスが「Illegal address」エラーコードを返す: MODBUSリクエストで関数#4の代わりに関数#3を使用してみてください。それ以外の場合、正しいレジスタアドレスを使用していることを確認してください。絶対オフセット(40001のような論理アドレスではなく)を指定してみてください。
- 複数の値を1行のデータ行としてエクスポートしたいのに、ロガーが1値ずつ書き込む: MODBUSプラグイン設定で「すべてのデータを一度にエクスポート」オプションを有効にする必要があります。
4. データベース固有のトラブルシューティング
- ユーザーのログインに失敗しました / アクセスが拒否されました: RS232 Data LoggerをバックグラウンドWindowsサービスとして実行する場合、サービスがデフォルトの「Local System」アカウントではなく、db_datawriterロールを持つドメインアカウントで実行されていることを確認してください。または、「SQL Server」認証方式で別のユーザーを作成してください。
- データベースがオフラインの場合、どうなりますか?データは失われますか?: SQL Database Proプラグインを使用してください。データベースがオフラインの間、一時ファイルにデータを書き込み、後で復元することができます。
- 数字を送信する場合のみコードが機能します。文字を送信しようとすると機能しません。: 1. パーサー変数を文字列として宣言する必要があります。 2. テーブルには「VARCHAR」または「NVARCHAR」型の列を含める必要があります。この列のサイズはデータに対して十分である必要があります。 3. データエクスポートプラグインの「Binding」ページで、対応する列のデータ型として「string」を選択する必要があります。