Modbus関連製品の推奨:peidianxiang.taobao.com
Modbus Pollの概要
Modbus pollこれは、Modbus RTU、ASCI I、TCP/IPなどのプロトコルモードをサポートする非常に人気のあるModbusマスターデバイスエミュレータであり、Modbus通信機器担当者が通信プロトコルをテストおよびシミュレーションすることができ、デバイスの監視、テスト、デバッグを改善し、Modbus通信プロセス中の様々なメッセージデータを観察しやすく、多くの時間を節約するだけでなく、作業効率を大幅に向上させます。
マルチドキュメントインターフェイスをサポートし、複数のスレーブデバイス/データドメインを同時に監視できます。各ウィンドウは、デバイスID、機能、アドレス、サイズ、ポーリング間隔から簡単に設定できます。任意のウィンドウからレジスタとコイルを読み書きできます。別のレジスタを変更したい場合は、値をダブルクリックするだけです。または、複数のレジスタ/コイル値を変更できます。浮動小数点、倍精度、long(バイトシーケンスで交換可能)など、データを提供するさまざまな形式。
Modbus Pollオペレーティングシステム要件
ハードウェア要件
プロセッサ:1 GHz以上を推奨
メモリ:1 GB RAM
ハードディスク:5 MBの空き容量
解像度:1024 x 768以上
システム:Windows 7からWindows 11までのすべてのバージョンのWindowsをサポートします。
Modbus Poll 7はWindows XP 上で動作する。
ユーザーライセンス契約の終了
Modbus Pollを使用する前に、以下の利用規約をよくお読みください。Witte Softwareとの別のライセンス契約がない限り、本ソフトウェアの使用は、本ライセンス契約および保証に同意したものとみなされます。本規約に同意しない場合は、直ちにソフトウェアの使用を中止してください。
著作権です。
Modbus Poll(“ソフトウェア”)は、Witte Softwareの2002-2022著作権すべてのです。
評価と登録。
フリーソフトウェアではない。30日間、このソフトウェアを無償で使用して評価することが許可されます。
30日間の評価期間後にソフトウェアを使用する場合は、登録料がかかります。
30日間の評価期間後にソフトウェアを登録しないことは、米国および国際著作権法に違反します。
本ソフトウェアの登録コピー 1部は、個人が1台以上のコンピュータ上で本ソフトウェアを個人的に使用することもできます。また、複数の人が使用する単一のコンピュータにインストールすることもできますが、同時に使用することはできません。
注文と価格については、こちらをご覧ください。https://www.modbustools.com/order.html
Modbus Pollのライセンスは永久です。特定のバージョンのライセンスを購入し、ライセンス契約を遵守している限り、追加料金なしでそのバージョンを永久に使用できます。
分布している。
お客様がライセンスキーを含まない場合、お客様は本ソフトウェアを複製し、オリジナルの正確なコピーを誰にでも提供し、本ソフトウェアを改変されていない形式で電子的に配布することを許可されます。そのようなコピーを請求することは明示的に禁止されます。
限定保証です。
本ソフトウェアは現状のまま提供され、WITTEソフトウェアは、商品性および特定目的への適合性に関する黙示保証を含むがこれらに限定されない、本ソフトウェアに関する明示または黙示のすべての保証を行いません。
損害賠償の制限
WITTEソフトウェア、または本ソフトウェアの作成、生産、または配信に関与するいかなる者も、WITTEソフトウェアがかかる損害または請求の可能性を知らされていたとしても、かかるソフトウェアの使用または使用不能から生じる間接的、結果的、または付随的損害について責任を負いません。いかなる場合においても、請求の形式にかかわらず、WITTE SOFT WAREの損害に対する責任は、ソフトウェアの使用許諾のために支払った価格を超えません。ソフトウェアを使用する人は、ソフトウェアの品質と性能に関するすべてのリスクを負います。
Modbus Pollの機能
接続する。
Modbusはデバイスからの読み書きデータをポーリングします。
- RS 232またはRS 485ネットワーク上のModbus RTUまたはASCII。(USB/RS232/485コンバータ
- Modbus TCP/IP
- TCP/IPベースのModbus。(Modbus RTU/ASCIIはTCPパケットにカプセル化されている)
- Modbus UDP/IP
- UDP/IPベースのModbus。(UDPパケットにカプセル化されたModbus RTU/ASCII)
サポートされるModbus機能
- 0 1:コイルを読む
- 0 2:離散入力の読み取り
- 03:読み込み保持レジスタ
- 0 4:入力レジスタの読み取り
- 0 5:シングルコイルを書く
- 0 6:単一レジスタの書き込み
- 15:複数のコイルを書く
- 16:複数のレジスタを書き込む
- 17サーバIDのレポート
- 22:マスク書き込みレジスタ
- 23:レジスタの読み取り/書き込み
- 43/14:デバイスIDの読み取り
データ·レコード
- テキストファイルへのデータの記録
- データをExcelに直接記録する
表示フォーマット
- 各セルは個別にフォーマットできます。
- 符号付き16ビットレジスタ
- 符号なし16ビットレジスタ
- 16進法
- Binaryシングル
- 任意のワード/バイト順序の32ビット符号付き整数
- 任意のワード/バイト順序の32ビット符号なし整数
- 任意のワード/バイト順序の64ビット符号付き整数
- 任意のワード/バイト順序の64ビット符号なし整数
- 任意のワード/バイト順序の32ビット浮動小数点数
- 任意のワード/バイトの64ビット小数点数
その他の機能
- Excel VBA、PythonなどとのインターフェースのためのOLE/オートメーション用。
- データトラフィックの監視
- 印刷と印刷プレビュー
- フォントの選択
- 条件付きの色。
- ズーム/Zoom
- リアルタイムグラフ
概要:概要
Modbus Pollは、複数のModbusスレーブとデータゾーンを同時に監視できるマルチウィンドウインターフェースをサポートしています。各ウィンドウについて、ModbusスレーブのID、ファンクションコード、アドレス、長さ、ポーリング時間を指定するだけで、任意のウィンドウからレジスタとコイルを読み書きできます。

取扱説明書
押してF1現在選択されているアイテムに関連するヘルプドキュメントを取得できます。
SHIFT + F1特殊な“ヘルプモード”が呼び出され、カーソルがヘルプカーソル矢印+疑問符に変わります。次に、ユーザーは、メニュー項目、ツールバーボタン、またはウィンドウなど、ユーザーインターフェイス内の可視オブジェクトを選択することができます。これにより、選択したアイテムを説明するトピックに関するヘルプが開きます。
セルの名前
ここに任意のテキストを入力して、値セルを指定できます。Excelのセルからテキストをコピー/ペーストすることもできます。
値のセル
Modbusレジスタのデータ値を表示する。値のセルをダブルクリックすると、ダイアログでスレーブデバイスに新しい値を書き込むことができます。値のセルに数値を入力すると、ダイアログボックスも表示されます。値の書き込みに使用するModbus機能を選択可能。
チェックボックスClose dialog on Response okを使用すると、値が正常に送信されたときにダイアログボックスが自動的に閉じられます。これは、多くの値を変更したい場合に便利です。これにより、新しいセルをすばやく選択して、新しい値をもう一度入力できます。

フォントの変更
フォントを変更するには、2つのオプションがあります。
- 変更するセルを選択し、右クリックします。
- 変更するセルを选択し、メニュー →表示→フォントを选択します。

条件付きの色。
条件付きカラーを使用すると、特定の範囲内の値を視覚的に表示できます。3色から選択
- デフォルトの色:条件付き色がtrueと評価されない場合に使用されます。
- ルール1:式が真と評価される場合、この色選択が使用されます。
- ルール2:式が真と評価される場合、この色選択が使用されます。ルール2はルール1より優先される。
7つの比較演算子
- 未使用。
- 等しい。
- より..。より良いです。
- より少ない。
- より大きいか等しい
- 以下または等しい
- そして、
データ型が小数点または32ビット长型のは、AND演算子を使用できません。“and”を選択すると、条件値は16進数で入力されます。セルと条件値のいずれかのビットが1の場合、結果は真と評価されます。
色の例
セルの値が398 ~ 402の場合は緑色
ズーム/Zoom
スケーリングを使用すると、元の値を人間が読める値にスケーリングできます。スケーリングは、符号付きおよび符号なしの16/32ビット整数にのみ適用されます。
(X1 Y1
X1
小文字l o p e = m =はい2-はい1 X 2-X 1小文字l o pe= m =はい2-はい1 X 2-X 1直線方程式
is = m ⋅ X-X 1 + Y 1 is = m ⋅ X-X 1 + is 1 is正確
小数点以下の桁数。可能にする
Modbusサーバ/スレーブからの値をスケーリングするには有効にする必要があります。16/32ビット整数表示形式以外を选択すると、拡大は的に无効になります。
リアルタイムグラフ
グラフは、最大100,000点の12系列をリアルタイムで描画できます。
新しいウィンドウを開く。
別のウィンドウを開くには、3つのオプションがあります。
接続ダイアログ
接続ダイアログを開くには、2つのオプションがあります。
- 略称はF 3。
- 接続メニューから接続を選択します
コンタクト·コネクション
接続には5種類あります。
- Serialより:
シリアル回線経由のModbus。RS 232またはRS 485 USBシリアルコンバータが使用できる。 - Modbus TCP/IP:
MODBUS TCP/IPネットワークと通信する場合は、“TCP/IP”を選択します。この場合、スレーブIDはMODBUS TCP/IPで使用されるセルIDと同じです。
ポート番号は502です。
接続に失敗した場合は、コマンドプロンプトでデバイスにpingを実行できるかどうかを試してください。pingコマンドに失敗すると、Modbus Pollも失敗します。 - Modbus UDP/IP:
MODBUS UDP/IPネットワークと通信する場合は、UDP/IPを選択します。これはModbus TCP/IPと同じですが、コネクションレスUDPプロトコルを使用しています。 - Modbus RTU/ASCII over TCP/IP:
これは、シリアル回線ではなくTCP/IPネットワークを介して送信されるRTUまたはASCIIメッセージです。 - Modbus RTU/ASCII over UDP/IP:
これは、シリアル回線ではなくUDP/IPネットワークを介して送信されるRTUまたはASCIIメッセージです。
| 接続タイプ3-5いいえ www.modbus.org標準Modbusが指定されているが、便宜上追加された。 |
選択に応じて、他の設定の一部がグレー表示されます。
シリアル
これらのパラメータを使用して、シリアルポートの設定を行います。それらは接続タイプにのみあります。シリアルポート”の時に利用可能。モデルは
このオプションを使用して選択しますRTUまたはASCIIモデルです。略称はRTU。レスポンス·タイムアウト
Modbus Pollがスレーブからの応答を破棄するまで待機する時間を指定します。デフォルト値は1000ミリ秒です。ポーリング间の最小遅延
この設定により、スキャン·レートに関係なく、次のリクエストが送信されるまでの最小遅延が保証されます。こののは约15msです一部のコンピュータではより良い解像度が得られますが、すべてではありません。
| この値を20ミリ秒未満に設定すると、レスポンスと新しいリクエストの間の3.5文字の間隔は保証されません。これは、Windowsスケジューラがタスクを10 ~ 20ミリ秒ごとに切り替えるためです。シリアルRS 485ネットワークで複数のスレーブをポーリングする場合は、この値を20ミリ秒未満に設定しないでください。これは3.5文字間隔を確保するためです。TCP/IPネットワークでは、20ミリ秒未満でも大丈夫です。20ミリ秒未満の1台のスレーブデバイスへのシリアル接続のみが可能です。 |
リモートサーバ
リモート·サーバの設定は、Ethernet接続を使用している場合にのみ使用できます。IPアドレス
サーバーのIPアドレスデフォルトは127.0.0.1ポート
サーバーのポート番号デフォルトの502接続タイムアウト
接続を確立するために使用される最大時間。1,000ドル
高度な設定
RTS切り替え
RTS Toggleは、バイトが転送可能な場合、RTSラインがハイになることを指定します。すべてのバッファバイトが送信されると、RTSラインはローになります。
自動方向スイッチのない232/485コンバータをお持ちの場合は、これを使用して方向を切り替えることができます。
| 可能な限り、RTS制御RS 232/RS 485コンバータの使用は避けてください。WindowsやLinuxなどの非リアルタイムオペレーティングシステムでは、トランスミッタをシャットダウンする正確な時間を決定することは困難です。早期にシャットダウンすると、文字がFIFOまたはUARTの送信レジスタに残り、文字が失われます。そのため、スレーブはメッセージを認識しない。一方、シャットダウンが遅すぎると、スレーブのメッセージが破壊され、マスターはメッセージを認識できなくなります。 |
DSR
DSRは、出力フロー制御のためにDSR Data Set Ready信号を監視するかどうかを指定します。このメンバーがTRUEで、が闭じている、出力はが再送信されるまで中断されます。中央旅団の
CTSは、出力フロー制御のためにCTS Clear Send信号を監視するかどうかを指定する。このチェックボックスをオンにしてCTSをオフにすると、CTSが再度送信されるまで出力が一時停止されます。DTRは
DTRは、ポートを開くときにDTRを有効または無効にするかを指定します。Echoを削除する
お使いのデバイスまたはRS 232/RS 485コンバータが送信した文字をエコーする場合。
Read/Write Definition
このコマンドを使用して、アクティブなウィンドウで監視するデータを定義します。
読み取り/書き込み定義ダイアログを開くには、次の3つのオプションがあります。
ステーションIDから。
1から255までの範囲。MODBUSプロトコル仕様说 247値0は、MODBUS/TCPまたはMODBUS/UDPデバイスと直接通信するためにも受け入れられます。
関数コードの特徴
8つの機能コードのうち1つを選択できます。
5.2.1。読み込み関数
read関数から返されたデータは、グリッドウィンドウに表示されます。
- 0 1:リードコイル(0 x)
- 02入力の読み込み1x
- 0 3:リードホールドレジスタ(4 x)
- 0 4:入力レジスタの読み取り(3 x)
2.2.と関数を書く。
write関数はグリッドウィンドウに表示されるデータを書き込みます。
- 05単一コイルへの书き込みコイル书き込み
- 0 6:単一レジスタに書き込む(書き込み保持レジスタ)
- 15のコイルへの书き込みWrites to Coils
- 16複数のレジスタに書き込むWrites to Holding registers
アドレス:address
Modbusプロトコルのアドレスは紛らわしい!プロトコル仕様によってはプロトコル/メッセージアドレスを使用するものもあれば、デバイスアドレスを使用するものもある。
5.3.1。プロトコル/メッセージアドレス
プロトコル仕様によっては、0から655 3 5までのプロトコル/メッセージアドレスと機能コードを使用するものもある。これは新しいModbus仕様でも使用されます。これは、ネットワーク経由で送信されるメッセージ内のアドレスです。
Modbus Pollは0から655 3 5までのプロトコル/メッセージアドレスを使用します。
3.2.とnbsp;デバイスのアドレス
一部のプロトコル仕様はデバイスアドレス/レジスタを使用する。レジスタは1からカウントを開始します。最初の数字は、使用する機能を記述します。つまり、デバイスアドレス40101はアドレス100で識別されます。“4”は保持レジスタを示し、4 xレジスタは1からカウントを開始します。さらに紛らわしいのは、4 xが機能コード03、3 xが機能コード04です。
5.3と。5ビットと6ビットのアドレス
アドレス形式4 xは40001から49999までカウントされます。次のアドレス。いいえ。5万人だ以前は9999アドレスで十分でした。しかし、9999では不十分です。そしてゼロを追加します。40101は400101になります。これを8ビット·アドレス指定または拡張アドレス指定と呼びます。
Modbus Pollではありません。10001は10000になる。“4”は捨てられ、残りの10001は1ではなく0から数えるので、1を引いた。
5.3とnbsp;アドレスの例
これらの例は、仕様がデバイスアドレスを使用する場合のModbusポーリングの設定方法を示しています。
リードホールドレジスタ
ID 2のデバイスアドレス40011から1000ミリ秒ごとに20個のレジスタを読み出すようにします。“4”から、これが機能03“Read Hold Register”であることがわかります。
- ステーションID = 2
- =“03読み込み保持レジスタ
- アドレス:10(11マイナス1)
- サイズ= 20
- スキャン率 = 1000
離散入力の読み取り
スレーブID 5のアドレス110201から500ミリ秒ごとに1000個のコイルを読み取りたいとします。“1”から、機能0 2“離散入力の読み取り”であることがわかります。
- ステーションID = 5
- =“02読み取り
- アドレス= 10200 10201 - 1
- 数量 = 1,000
- スキャン率 = 500
スキャン率
スキャンレートは0 ~ 360000msに設定できます。スキャンレートをトランザクション時間よりも低く設定しても意味がありません。9600ボーのシリアル接続を使用し、125個のレジスタを要求する場合、トランザクション時間は約8 + 2 + 250 + 2 = 262ms +リクエストとレスポンスの間のギャップ(3.5文字時間)になります。この場合、トランザクション時間が少なくとも262ミリ秒+スレーブ内の遅延(ギャップ)+ポーリング間の最小時間であるため、スキャンレートを例えば100ミリ秒に設定することは意味がありません。(接続ダイアログF 3で設定)。
読み取り/書き込み禁止
Read/Write Disabledチェックボックスを使用すると、このウィンドウの通信を一時的に有効または無効にできます。その後、テキスト(無効)とTxおよびエラーカウンタが表示されます。
5.5.1。エラー時の無効化
エラー発生時に読み取り/書き込みを無効にします。
名前列の非表示
すべての名前列を非表示にします。それらを使用しない場合は、より多くのスペースを解放します。
セル内のアドレス
有効にすると、アドレスは値セルにも表示されます例2000 = 0000
PLCアドレス(基数 1)
このオプションでは、アドレスがデバイスアドレスとして表示されます。
エンロン/ダニエルモデル
EnronまたはEnron/Daniels Modbusは、いくつかの“ベンダー拡張”を備えた標準Modbusです。これらの拡張の正確な影響はコンテキストに依存しますが、最も一般的なModbusコマンドは期待通りに動作します。カスタマイズされたベンダー定義機能はいくつかありますが、ユーザーが期待したり使用したりする人はほとんどいません。最大の影響は、32ビットのデータ値の読み書き方法に関係しています。
Enron-Modbusは2つの特別な4 x保持レジスタ範囲を定義している。
- 4 x 5001 ~ 4 x 5999は、32ビットの長整数(レジスタあたり4バイト)を想定しています。
- 4 x 70 0 1 ~ 4 x 7999は、32ビット浮動小数点数(レジスタあたり4バイト)を想定しています。
Modbusで32ビット値を扱うのはEnron-MBだけのことではない。しかし、Enron-MBはModbus仕様の“レジスタを保持する”という用語が意味する2バイトではなく、各レジスタが4バイトを返すという議論の余地のあるステップを取った。つまり、Enron-Modbusのレジスタ4 x 5001と4 x 5002のポーリングは8バイトまたは2つの32ビット整数を返すのに対し、標準のModbusは4バイトまたは1つの32ビット整数を返し、2つの16ビット整数として扱われる。さらに、Enron-MBのポーリングレジスタ4 x 5010は10番目の32ビット長整数を返しますが、標準のModbusはこの範囲内の5番目の32ビット長整数の1/2を考慮します。
OKです。
グリッド内の任意の行数を指定します。
リアルタイムグラフ
このコマンドを使用すると、最大12個のデータ系列をリアルタイムでグラフに描画できます。
リアルタイムチャートは高速で、新しいデータを受信するとすぐに新しい線を描画できます。
| すべてのチャート設定はワークスペースに保存されます。ワークスペースの保存/オープン |
ライブ·チャート·ダイアログ·ボックスを開くには、次の2つのオプションがあります。
- Alt + Rキー
- 表示メニューから“ライブ·チャート”を选択
X軸には、グラフの起動からの秒数が表示されます。
ポイントがグラフの最後に到達すると、3つのオプションがあります。
- 終了時に停止:グラフが止まる。
- 終了時の再開:グラフ再開です。
- 続きを読む:最大ポイントに達するか、停止を押すまで続けます。
セットアップ
デフォルトでは、12個の系列すべてが左のY軸にリンクされています。シリーズを右 Y 轴にリンクするは、[右 Y 轴]チェックボックスをオンにします。指定する
- 色は
- 右のY軸
- タイトル:Title
- オフセットオフセット
表示する。
- ファイル名:File Name
- アドレス:address
オフセットは、同じY軸上でデータポイントを整列させる場合に便利です。たとえば、0または1のデータポイントをオフセットして、互いに描画しないようにすることができます。
ズーム機能
より詳細な情報を表示したい場合は、グラフを拡大すると便利です。ズームはマウスの左ボタンで制御されます。チャートの特定の部分を拡大/縮小するには、チャートを左クリックし(拡大/縮小長方形の左上隅になります)、右下隅までドラッグします。長方形が現れます。マウスボタンを放すと、選択した領域に軸が自動的に調整されます。
グラフを左クリックした場合ズームを開始するなど、左上隅に移動すると、ズームおよびパン機能を使用して行ったすべての変更が取り消されますパンおよびズームを使用して操作する前に、グラフは元の状態になります。
パンニング機能
コントロールをパンするには、コントロール上のどこかを右クリックしてマウスを動かします。マウスの下にあるポイントは、マウスの動きに従います。
グラフ·シリーズへのデータのリンク
Modbusデータユニットを12の系列のいずれかにリンクしない限り、チャートはどのデータを使用するかを知りません。これを行うには、値のセルを選択し、メニュー →表示から“チャートにリンク”を選択します。
レプリケーション·ファミリ
シリーズ·データをディスクに保存するか、クリップボードにコピーします。データをExcelに直接貼り付けて、さらに処理します。
カンマ以外のフィールド区切り文字を使用していますが、ファイルの拡張子は.csvです。
区切り文字:テキストファイル内で値を区切る文字を選択します。Excelタブを使用します。さらに、いくつかの追加情報が提供された。
- ポイント数ポイント
- 最大値の値
- 最小値の値
- 平均得点率は
表示フォーマット
書式設定するセルをマークします。表示メニューから、28種類の表示形式のいずれかを選択します。
ネイティブModbusレジスタ
16ビットModbusレジスタは4つの異なるモードで表示できます。
- 署名済み。
- 署名なし。
- 16進法
- Binaryシングル
32ビット符号付き整数
これは2つの16ビットModbusレジスタを組み合わせたものです。4つの異なるワード/バイト順序で表示できます。
- 符号付き整数 Big-Endian
- 符号付き整数 Little-Endian
- 符号付き整数ビッグエンディアン·バイト·スワップ
- 符号付き整数リトルエンディアン·バイト交換例バイト順序:AB CD (Big-endian)
10進数 123456789または16進数07 5B CD 15
Modbusメッセージのラインを通過する順序:07 5B CD 15
32ビット符号なし整数
これは2つの16ビットModbusレジスタを組み合わせたものです。4つの異なるワード/バイト順序で表示できます。
- 符号なし整数 Big-Endian
- 符号なし整数リトルエンデン
- 符号なし整数ビッグエンディアン·バイト·スワップ
- 符号なし整数リトルエンディアン·バイト交換例バイト順序:AB CD (Big-endian)
10進数 123456789または16進数07 5B CD 15
Modbusメッセージのラインを通過する順序:07 5B CD 15
64ビット符号付き整数
これは4つの16ビットModbusレジスタを組み合わせたものです。4つの異なるワード/バイト順序で表示できます。
- 符号付き整数 Big-Endian
- 符号付き整数 Little-Endian
- 符号付き整数ビッグエンディアン·バイト·スワップ
- 符号付き整数リトルエンディアン·バイト交換例バイト順序:AB CD EF GH(ビッグエンディアン)
10進数-1,23 4,56 7,890,123,45 6,78 9または16進数EE DD EF 0B 82 16 7E EB
Modbusメッセージでの回線通過の順序:EE DD EF 0B 82 16 7E EB
64ビット符号なし整数
これは4つの16ビットModbusレジスタを組み合わせたものです。4つの異なるワード/バイト順序で表示できます。
- 符号なし整数 Big-Endian
- 符号なし整数リトルエンデン
- 符号なし整数ビッグエンディアン·バイト·スワップ
- 符号なし整数リトルエンディアン·バイト交換例バイト順序:AB CD EF GH(ビッグエンディアン)
10進数1,23 4,56 7,890,123,456,789または16進数11 22 10 F4 7D E9 81 15
Modbusメッセージのラインを通過する順序:11 22 10 F4 7D E9 81 15
32 位フローティング
これは2つの16ビットModbusレジスタを組み合わせたものです。4つの異なるワード/バイト順序で表示できます。
- 浮動小数点ビッグエンディアン
- 浮動小数点リトルエンディアン
- 浮動小数点ビッグエンディアンバイトスワップ
- 浮動小数点リトルエンバイトスワップの例バイト順序:AB CD (Big-endian)
浮動小数点数123456.00または16進数47 F1 20 00
Modbusメッセージのラインを通過する順序:47 F1 20 00
64ビットの倍精度
これは4つの16ビットModbusレジスタを組み合わせたものです。4つの異なるワード/バイト順序で表示できます。
- ダブルビッグエンド
- 二重リトルエンディアン序
- デュアルビッグエンディアンバイトスワップ
- ダブルリトルエンバイト交換の例バイト順序:AB CD EF GH (Big-endian)
浮動小数点数123456 7 8 9.0 0または16進数41 9D 6F 34 54 00 00 00
Modbusメッセージのラインを通過する順序:41 9D 6F 34 54 00 00 00
ワークスペースの保存/オープン
関連するModbusウィンドウをたくさん開いている場合は、開いているModbusウィンドウと並べられているすべてのModbusウィンドウの現在のレイアウトのスナップショットを1つのワークスペースに保存すると便利です。
ワークスペース *mbwは、开いているすべてのウィンドウの表示とファイル名を含むファイルです。実際の内容じゃないファイル→ワークスペースの保存に進みます。
ワークスペースファイルを開くと、Modbus PollはすべてのModbusウィンドウを開き、保存したレイアウトに表示します。
csvへのエクスポート
名前と値をカンマ、セミコロン、またはタブ区切り値ファイルにエクスポートします。“ファイル”ダイアログから選択
- カンマ区切り値ファイル *.csv
“温度”、“19.7” - セミコロン区切り値ファイル *.csv
"Temperature";"19.7" - タブ区切り値ファイル *.txt
気温は19.7
使用しているシステムによっては、カンマまたはピリオドが小数点以下の区切りに使用されます。
テストセンター
このテストダイアログの目的は、MODBUSからのデバイス開発者が自分で構成した任意の文字列を使用してデバイスをテストできるようにすることです。
リストボックスには、送信データと受信データが表示されます。
ドロップダウン·リスト·ボックスに複数のテスト文字列を指定できます。文字列を入力したら、リストに追加ボタンを押して、リストに文字列を追加します。
“送信”ボタンを押すと、選択した文字列が送信されます。リストを開く
ファイルからテスト文字列を残します。リストの保存
テスト文字列をファイルに保存します。クリアする。
テストリストをクリア。リストに追加。
現在のテスト文字列をリストに追加します。チェックの追加
入力文字列の末尾にCRCまたはLRCを追加します。
テストセンターを使用する場合、他のウィンドウからの通信を無効にすることができます。[読み取り/書き込み定義]ダイアログボックスの[読み取り/書き込み無効]チェックボックスをオンにします。Read/Write Definitionを設定する
ASCIIの例
コンボボックス内の文字列
3A 30 31 30 33 30 30 30 30 30 30 30 41
LRCが追加されたに転送される文字列
3A 30 31 30 33 30 30 30 30 30 30 30 41 46 32 0D 0A
CR LFペアも追加されました。
TCP/IPの例
10個の保持レジスタを読み込む。
00 00 00 00 00 06 01 03 00 00 00 0A
最初の6バイトはTCP/IPヘッダです。
テストセンター文字列ファイル
メモ帳などのテキストエディタを使用すると、テストで使用する文字列を準備できます。
ファイルの最初の行は、文字列“Test Center”でなければなりません。これはModbus Pollが正しいファイル形式を知る方法です。“リストを開く”を押して準備したテキストファイルを開きます。
10.1とnbsp;文字列リストの内容
テストセンター 3 A 30 30 30 30 30 30 30 30 30 30 30 41 3 A 30 32 30 30 30 30 30 30 30 30 30 41 3 A 30 30 30 30 30 30 30 30 30 30 30 41
レプリケーション
[Copy]ボタンを使用して、選択したTx/Rx文字列をクリップボードにコピーします。
SHIFTキーとCTRLキーは、マウスとともに使用して、文字列の選択と選択解除、文字列グループの選択、隣接していない文字列の選択を行うことができます。
| 他のコマンドを実行するときは、このウィンドウを開いたままにします。 |
Modbusデータログ
データをテキストファイルに記録することも、Microsoft Excelに直接記録することもできます。
テキストファイル
“設定”メニューから“ログ”を選択するか、ショートカットキーを使用しますAlt+L
各Modbusウィンドウは別々のテキストファイルに記録されます。
データの記録を停止する場合は、設定メニューからログアウトコマンドを選択します。
1.1.1とタグ:日誌率
読むたびに
すべてのModbusリクエストのログラインを記述します。周波数はスキャンレートとして選択する。
ログレートを秒単位で指定します。スキャン速度に関係ない。
| スキャンレートがたとえば10,000ミリ秒の場合、新しいデータが準備されたときにのみデータが記録されるため、ログレートを1 秒に設定しても意味がありません。 |
1.1.2.と【区切り文字】
区切り文字として、次のいずれかを使用できます。固定幅
値が列ごとに編成されていることを示します。コンマ
カンマで区切られた値。Labelsラベル
タブで区切られた値。
1.1.3とnbsp;データ変更のみを記録する
最後のログ以降にデータが変更された場合にのみ、新しいログ·ローを書き込むように指定します。
1.1.4。タグ:エラーの記録
ログのタイムアウトなどのエラーを指定します。
11.1.5。記録の日付
現在の日付をログ時刻に追加するよう指定します。
11.1.6。ミリ秒の記録
ログ時間にミリ秒を追加するよう指定します。
11.1.7。ログアドレス:Log Address
Modbusアドレスをログに追加するよう指定します。
11.1.8。“OK”を押すと記録が開始
okボタンが押されたときに記録を開始するように指定します。それ以外の場合、ログ設定は *mbpファイルを保存するときにのみ保存されます。
11.1.9。*mbpを開いたときにログを開始する
*.mbpファイルを開いたときにロギングが自動的に開始されるように指定します。
11.1.10。アーカイブの即時更新
これにより、ログラインはファイルシステムにキャッシュされず、直ちに物理的に書き込まれます。
11.1.11。その他追加
選択したファイルにログを添付するように指定します。新しいファイルが作成されます。
11.1.12。真夜中の新しいログファイル
現在のログファイルを閉じ、真夜中に新しいファイルを開始します。タイムスタンプがファイル名に追加されます。
固定幅のテキストファイルの例
22:28:13 <40001> 17395 0 0 0 0 0 0 0 0 22:28:14 <40001> 17396 1 0 0 0 0 0 0 0 22:28:15 <40001> 17394 1 0 0 2 55 0 0 0 22:28:16 <40001> 13350 1 0 0 4 0 0 0 0
Excelスプレッドシートにデータをインポートできます。
Microsoft Excelとは
この機能にはMicrosoft Excelが必要です。Excel 2003のログは、Excelワークシートの最大行数であるため、65,53 5ログに制限されています。Excel 2007以降では1,048,576行に制限されています。各Modbusウィンドウは、別々のExcelテーブルに記録されます。
“設定”メニューから“Excelログ”を選択するか、ショートカットキーを使用しますAlt+X
記録中はExcelテーブルに触れないでください。記録が中断されます。
2.1.と。タグ:日誌率
- 読むたびに:すべてのModbus要求のログ行を書き込みます。周波数はスキャンレートとして
- 選択する:ログレートを秒単位で指定します。ログはスキャン·レートに依存しません。
コメント:スキャン·レートがたとえば10000ミリ秒の場合、新しいデータが準備されたときにのみデータが記録されるため、記録レートを1 秒に設定しても意味がありません。 - 停止後:ログの行数を指定します。Excel 2003では65,536行、Excel 2007では1,048,576行に制限されていることに注意してください。
2.2.2。nbsp;ヘッダ情報
- タイトルを挿入:情報は、Excelワークシートの一番上の3 行に挿入されます。
- 最初の行でセルに名前を付けます3 行目に名前を挿入します。
- ポーリングの定義:2 行目にID,Functionなどを挿入する.
- 名前は:1 行目にログ名を挿入します。
タイトル情報付きのExcelログ。
通信トラフィック量
メニュー Display→Communicationを選択して、シリアルラインまたはイーサネットケーブル上のトラフィックを表示します。停止ボタンを使用して、チェックのため更新を一時的に停止します。
“コピー”ボタンを使用して、選択した行をクリップボードにコピーします。
| このウィンドウにはModbus Pollが送受信するデータのみが表示されます。データスニファとしては使用できません。 |
| 他のコマンドを実行するときは、このウィンドウを開いたままにします。 |
OLE/オートメーション
オートメーション(旧OLEオートメーション)は、あるアプリケーションが別のアプリケーションで実装されたオブジェクトを操作できるようにします。
オートメーションクライアントは、別のアプリケーションに属する公開オブジェクトを操作できるアプリケーションです。オートメーションコントローラとも呼ばれます。
オートメーションサーバは、プログラマブルオブジェクトを他のアプリケーションに公開するアプリケーションです。Modbus Poll自動化されたサーバーです。
つまり、Visual Basic、Excelなど、VBA Visual Basic for Applicationsをサポートする任意のプログラムを使用して、特定の要件に応じてmodbusデータを解釈して表示できます。
Excelの例
マクロを記述する場合は、開発者タブを表示するか、開発者モードで実行してください。
13.1.1. Excel 2007
- Microsoft Officeボタンをクリックし、Excelオプションをクリックします。
- [人気]をクリックし、リボンチェックボックスの[開発者の表示]タブをオンにします。
リボンはMicrosoft fluentユーザーインタフェースの一部であることに注意してください。
13.1.2. Excel 2010, 2016
- ファイルタブをクリックします。
- オプションをクリック。Excelオプションウィンドウが開きます。
- 左側のペインで、カスタムリボンをクリックします。
- 右側のペインのメインタブで、“開発者”チェックボックスをオンにします。
- OKをクリック。これで、リボン右端のタブに“開発者”タブが表示されます。
1.1.3。nbsp;Excelサンプル·コード
この例では、2つのウィンドウを開きます。1つの読み取りレジスタともう1つの読み取りコイル。
Modbus Pollは非表示ですが、“ShowWindow”行のコメントを解除することで表示できます。いずれかのウィンドウが表示されます。
Modbus Pollのインストールにも例があります。
スタート→すべてのプログラム→ Modbusポーリング→ ExcelサンプルExcel VBAサンプル
Publicdoc1AsObjectPublicdoc2AsObjectPublicappAsObjectDimresAsIntegerDimnAsIntegerPrivateSubStartModbusPoll_Click()Setapp=CreateObject("Mbpoll.Application")Setdoc1=CreateObject("Mbpoll.Document")Setdoc2=CreateObject("Mbpoll.Document")' Read 10 Holding Registers every 1000msres=doc1.ReadHoldingRegisters(1, 0, 10, 1000)' Read 10 Coil Status every 1000msres=doc2.ReadCoils(1, 0, 10, 1000)' doc1.ShowWindow()app.Connection=1' Modbus TCP/IPapp.IPAddress="127.0.0.1"' local hostapp.ServerPort=502
app.ConnectTimeout=1000
res=app.OpenConnection()EndSubPrivateSubRead_Click()
Cells(5, 7)=doc1.ReadResult()'Show results for the requestsCells(6, 7)=doc2.ReadResult()Forn=0 To9
Cells(5+n, 2)=doc1.SRegisters(n)NextnForn=0 To9
Cells(18+n, 2)=doc2.Coils(n)NextnEndSubPythonの例
このPythonの例はウィンドウを開き、可能なすべてのデータフォーマットを設定します。Pythonの例
importwin32com.clientaswin32
SIGNED=0
UNSIGNED=1
HEX=2
BINARY=3
FLOAT_LE_BS=4
FLOAT_BE=5
DOUBLE_LE_BS=6
DOUBLE_BE=7
S32_LE_BS=8
S32_BE=9
FLOAT_LE=10
FLOAT_BE_BS=11
DOUBLE_LE=12
DOUBLE_BE_BS=13
S32_LE=14
S32_BE_BS=15
U32_BE=17
U32_LE_BS=18
U32_BE_BS=19
U32_LE=20
S64_BE=21
S64_LE_BS=22
S64_BE_BS=23
S64_LE=24
U64_BE=25
U64_LE_BS=26
U64_BE_BS=27
U64_LE=28#EndiannessBE=0
LE=3
BE_BS=2
LE_BS=1
App=win32.Dispatch('Mbpoll.Application')
App.Connection=1
App.IPAddress="127.0.0.1"
App.ServerPort=502
App.OpenConnection#Create a Modbus display window called Win1Win1=win32.Dispatch("Mbpoll.Document")# Read 100 holding registers from slave ID 1, address 0 (40001) every 1000msWin1.ReadHoldingRegisters(1, 0, 100, 1000)# Show the Modbus windowWin1.ShowWindow()# Show 20 rowsWin1.Rows(1)# Disable refresh for speedWin1.EnableRefresh=False# Set all different formats
# This sets how the value is displayedWin1.SetFormat(0, SIGNED)
Win1.SetFormat(1, UNSIGNED)
Win1.SetFormat(2, HEX)
Win1.SetFormat(3, BINARY)
Win1.SetFormat(4, S32_BE)
Win1.SetFormat(6, S32_LE)
Win1.SetFormat(8, S32_BE_BS)
Win1.SetFormat(10, S32_LE_BS)
Win1.SetFormat(12, U32_BE)
Win1.SetFormat(14, U32_LE)
Win1.SetFormat(16, U32_BE_BS)
Win1.SetFormat(18, U32_LE_BS)
Win1.SetFormat(20, S64_BE)
Win1.SetFormat(24, S64_LE)
Win1.SetFormat(28, S64_BE_BS)
Win1.SetFormat(32, S64_LE_BS)
Win1.SetFormat(40, U64_BE)
Win1.SetFormat(44, U64_LE)
Win1.SetFormat(48, U64_BE_BS)
Win1.SetFormat(52, U64_LE_BS)
Win1.SetFormat(60, FLOAT_BE)
Win1.SetFormat(62, FLOAT_LE)
Win1.SetFormat(64, FLOAT_BE_BS)
Win1.SetFormat(66, FLOAT_LE_BS)
Win1.SetFormat(80, DOUBLE_BE)
Win1.SetFormat(84, DOUBLE_LE)
Win1.SetFormat(88, DOUBLE_BE_BS)
Win1.SetFormat(92, DOUBLE_LE_BS)# Set all Names to used formatWin1.SetName(0, "SIGNED")
Win1.SetName(1, "UNSIGNED")
Win1.SetName(2, "HEX")
Win1.SetName(3, "BINARY")
Win1.SetName(4, "S32_BE")
Win1.SetName(6, "S32_LE")
Win1.SetName(8, "S32_BE_BS")
Win1.SetName(10, "S32_LE_BS")
Win1.SetName(12, "U32_BE")
Win1.SetName(14, "U32_LE")
Win1.SetName(16, "U32_BE_BS")
Win1.SetName(18, "U32_LE_BS")
Win1.SetName(20, "S64_BE")
Win1.SetName(24, "S64_LE")
Win1.SetName(28, "S64_BE_BS")
Win1.SetName(32, "S64_LE_BS")
Win1.SetName(40, "U64_BE")
Win1.SetName(44, "U64_LE")
Win1.SetName(48, "U64_BE_BS")
Win1.SetName(52, "U64_LE_BS")
Win1.SetName(60, "FLOAT_BE")
Win1.SetName(62, "FLOAT_LE")
Win1.SetName(64, "FLOAT_BE_BS")
Win1.SetName(66, "FLOAT_LE_BS")
Win1.SetName(80, "DOUBLE_BE")
Win1.SetName(84, "DOUBLE_LE")
Win1.SetName(88, "DOUBLE_BE_BS")
Win1.SetName(92, "DOUBLE_LE_BS")# RefreshWin1.EnableRefresh=True
Win1.ResizeAllColumns ()
Win1.ResizeWindow()print(Win1.GetName(1))
_=input("Press ENTER to quit:")接続機能/属性
次のプロパティと機能は、接続ダイアログボックスF3で設定したものと同じです。
3.1.3とタグ:連絡
接続目的の接続を選択します。シリアルポートまたはイーサネット接続のいずれかを選択できます。
プロパティ接続する。整数の有効な値
0 =シリアルポート
1 = Modbus TCP/IP
2 = Modbus UDP/IP
3 = Modbus ASCII/RTU over TCP/IP
4 = Modbus ASCII/RTU over UDP/IP
例を挙げる
Connection=0 3.2.3。B:ボーレート
Connection = 0の場合のみ適用
プロパティBaudRate as Long有効な値
300
600
1200
2400
4800
96 0 0(デフォルト)
14400
19200
38400
56000
57600
115200
128000
153600
230400
256000
460800
216 0例
BaudRate=96003.3.と。nbsp;データセット
Connection = 0の場合のみ適用
プロパティDataBits整数の有効な値
7
8(デフォルト)
例を挙げる
DataBits=83.4.と。タグ:平価
Connection = 0の場合のみ適用
プロパティパリティ検査整数の有効な値
0 =なし
1 = 奇数。
2 = 偶数(デフォルト)
例を挙げる
Parity=213.5と。●ストップ·ビット
Connection = 0の場合のみ適用
プロパティStopBits整数の有効な値
1(デフォルト)
2
例を挙げる
StopBits=113.3.6。シリアルポート
Connection = 0の場合のみ適用
SerialPortの設定プロパティを整数有効値に設定
1…255
デフォルト= 1例
SerialPort=13.7.とタグ:モデル
Connection = 0の場合のみ適用
プロパティモデルは整数の有効な値
0 = RTUモード
1 = ASCIIモード
例を挙げる
Mode=13.8.と。エコーを削除する。
Connection = 0の場合のみ適用
お使いのデバイスまたはRS 232/RS 485コンバータが送信した文字をエコーする場合。
プロパティRemoveEcho整数の有効な値
0(デフォルト)
1(エコーの除去)
例を挙げる
RemoveEcho=113.3.9。レスポンス·タイムアウト
ResponseTimeoutは、Modbus Pollがスレーブからの応答を破棄するまで待機する時間をms単位で指定します。
プロパティResponseTimeout整数の有効な値
50…100000
デフォルト値= 1000例
ResponseTimeout=100013.3.10。ポーリング間の遅延
プロパティDelayBetweenPolls整数の有効な値
0…1000
デフォルト= 20例
DelayBetweenPolls=2013.3.11。サーバーのポート
Connection = 1 4ののみ
プロパティServerPort as Long有効な値
0…65535
50 2例の例
ServerPort=50213.3.12。接続タイムアウト
ConnectTimeoutは、Modbus PollがTCP/IP接続の成功を待機する時間を指定します。
Connection = 1 4ののみ
プロパティConnectTimeout整数の有効な値
100 ~ 30000ミリ秒
デフォルト= 1000ミリ秒例
ConnectTimeout=100013.3.13。IPバージョン
Connection = 1 4ののみ
プロパティIPVersion整数の有効な値
4 = IPバージョン4(デフォルト)
IPバージョン6
例を挙げる
IPVersion=413.3.14。オープン·コネクション
Connectionプロパティーで選択した接続を開きます。
関数の機能OpenConnection ViewCube ViewCube整数パラメータとして整数パラメータとして
この関数にはパラメータがない。戻り値は
エラー 3-5:最新のシリアルドライバがあるか確認してください。
| エラーです。 | 説明する。 |
|---|---|
| 0成功する。 | |
| 1 | シリアルポートが使えない |
| 3 | Serial Portです。ポートドライバから現在の設定を取得できません。 |
| 4 | Serial Portです。シリアルポートドライバはポート設定を受け付けません。 |
| 5 | Serial Portです。シリアルポートドライバはタイムアウト設定を受け付けません。 |
| 12 | TCP/UDP接続に失敗しました。WSA開始。 |
| 13 | TCP/UDP接続に失敗しました。接続エラー |
| 14 | TCP/UDP接続に失敗しました。サスペンションサスペンション。 |
| 15 | TCP/UDP接続に失敗しました。IOCTL |
| 17 | TCP/UDP接続に失敗しました。ソケットエラー |
| 21 | TCP/UDP接続に失敗しました。アドレス情報の提供 |
| 255 | 接続が開いた。 |
Excelの例Modbus TCP/IP接続を開く方法
PublicappAsObjectDimresAsInteger' Create an object to Modbus PollSetapp=CreateObject("Mbpoll.Application")
app.Connection=1' Select Modbus TCP/IPapp.IPVersion=4
app.IPAddress="192.168.1.27"
app.ServerPort=502
app.ConnectTimeout=1000
app.ResponseTimeout=1000
res=app.OpenConnection()Pythonサンプルシリアル接続の設定方法
importwin32com.clientaswin32
App=win32.Dispatch('Mbpoll.Application')
App.Connection=0 # Serial connectionApp.SerialPort=3# Com port 3App.BaudRate=9600# 9600 baudApp.Parity=0 # None parityApp.Mode=0 # RTU modeApp.ResponseTimeout=1000# Wait 1000ms until give upApp.DelayBetweenPolls=20# Ensure minimum 20 ms gap until next requestApp.OpenConnection#Create a Modbus display window called Win1Win1=win32.Dispatch("Mbpoll.Document")# Read 10 holding registers from slave ID 1, address 0 (40001) every 1000msWin1.ReadHoldingRegisters(1, 0, 10, 1000)# Show the Modbus windowWin1.ShowWindow()# Show 10 rowsWin1.Rows(0)# Disable refresh for speedWin1.EnableRefresh=False# Set the name of the registersWin1.SetName(0, "Register 0")# Set the value to writeWin1.EnableRefresh=True
Win1.ResizeAllColumns ()
Win1.ResizeWindow()
_=input("Press ENTER to quit:")接続を閉じる
関数の機能CloseConnection ViewCube ViewCube整数パラメータとして整数パラメータとして
この関数にはパラメータがない。戻り値は
成功率はゼロ。失敗した場合はゼロ以外の値。
ShowCommunicationTraffic
トラフィックウィンドウを表示します。
関数の機能ShowCommunicationTraffic ViewCube ViewCubeパラメータ
この関数にはパラメータがない。戻り値は
いいえ。
通信トラフィックの閉鎖
トラフィックウィンドウが表示されている場合は閉じます。
関数の機能CloseCommunicationTraffic ViewCube ViewCubeパラメータ
この関数にはパラメータがない。戻り値は
いいえ。
読み込み関数
次の機能は、読み取り/書き込み定義ダイアログボックスF8で設定したものと同じです。読み取り関数はModbus Pollドキュメントに関連付けられています。(データウィンドウの例)
' First a Modbus Poll document is needed.PublicdocAsObjectSetdoc=CreateObject("Mbpoll.Document")
res=doc.ReadCoils(1, 0, 100, 1000)' Read 100 coils every 1000ms| プロパティを使用してデータを取得するには、読み取りを作成する必要があります。 |
リードコイル
Modbus関数コード0 1
関数の機能ReadCoils SlaveID As Integer
SlaveID:アドレス1から255まで
Address:データアドレスBase 0
Quantity:データの数です1から2000まで
スキャン速度: 0 ~ 3600000ミリ秒の戻り値
成功すれば真です。失敗した場合はfalse
離散入力の読み取り
Modbus関数コード0 2
関数の機能ReadDiscreteInputs SlaveID As Integer
SlaveID:アドレス1から255まで
Address:データアドレスBase 0
Quantity:データの数です1から2000まで
スキャン速度: 0 ~ 3600000ミリ秒の戻り値
成功すれば真です。失敗した場合はfalse
13.4.3. ReadHoldingRegisters
Modbus関数コード0 3
関数の機能ReadHoldingRegisters SlaveID As Integer
SlaveID:アドレス1から255まで
Address:データアドレスBase 0
Quantity:データの数です1から125まで
スキャン速度: 0 ~ 3600000ミリ秒の戻り値
成功すれば真です。失敗した場合はfalse
13.4と。nbsp;入力レジスタの読み取り
Modbus関数コード0 4
関数の機能ReadInputRegisters SlaveID As Integer
SlaveID:アドレス1から255まで
Address:データアドレスBase 0
Quantity:データの数です1から125まで
スキャン速度: 0 ~ 3600000ミリ秒の戻り値
成功すれば真です。失敗した場合はfalse
自動書き込み関数
write関数は、プロパティで埋められた配列に格納された値を書き込みます。次のWrite関数は、データウィンドウを作成しません。データウィンドウを作成するには、Win関数を使用します。WriteMultipleRegistersWin。
5.1.1と1つのコイルを書く
Modbus機能コード0 5。
書き込み配列の最初のコイルに格納されます。
関数の機能WriteSingleCoil SlaveID As Integer
SlaveID:アドレス0から255まで
住所:アドレス:データ·アドレスBase 0戻り値
書き込み配列が準備され、データが送信された場合にtrue。配列が空である場合、またはパラメータが間違っている場合はFALSE。
制御アプリケーションは、書き込まれた値を読み書きして書き込みを検証する責任があります。
5.2.5。1つのレジスタを書く。
Modbus機能コード0 6。
書き込みは、書き込み配列の最初のレジスタに格納されます。
関数の機能WriteSingleRegister SlaveID As Integer
SlaveID:アドレス0から255まで
住所:アドレス:データ·アドレスBase 0戻り値
書き込み配列が準備され、データが送信された場合にtrue。配列が空である場合、またはパラメータが間違っている場合はFALSE。
制御アプリケーションは、書き込まれた値を読み書きして書き込みを検証する責任があります。
13.5と。複数のコイルを書く。
Modbus機能コード15.
書き込み配列に格納されたコイルを書き込みます。
関数の機能WriteMultipleCoils SlaveID As Integer
書き込み配列が準備され、データが送信された場合にtrue。配列が空である場合、またはパラメータが間違っている場合はFALSE。
制御アプリケーションは、書き込まれた値を読み書きして書き込みを検証する責任があります。パラメータ
SlaveID:アドレス0から255まで
Address:データアドレスBase 0
Quantityデータの量。1968年まで
5.4と。複数のレジスタを書く。
Modbus機能コード16.
write配列に格納されたレジスタを書き込む。
関数の機能WriteMultipleRegisters SlaveID As Integer
SlaveID:アドレス0から255まで
Address:データアドレスBase 0
Quantity:データの数です1から123の戻り値
書き込み配列が準備され、データが送信された場合にtrue。配列が空である場合、またはパラメータが間違っている場合はFALSE。
制御アプリケーションは、書き込まれた値を読み書きして書き込みを検証する責任があります。
5.5.5。nbsp;Pythonの例
Pythonの例では、アドレス0 40001から10個のレジスタを読み込み、5個のレジスタを書き込むウィンドウを作成する方法を示します。Pythonの例
importsysimporttimeimportwin32com.clientaswin32
App=win32.Dispatch('Mbpoll.Application')
App.Connection=1# TCP/IP connectionApp.IPAddress="127.0.0.1"
App.ResponseTimeout=1000# Wait 1000ms until give upApp.DelayBetweenPolls=20# Ensure minimum 20 ms gap until next requestApp.ConnectTimeout=500# Wait 500ms until give upApp.ServerPort=502
result=App.OpenConnectionifresult!=0:print("Connection failed. Error: ", result)
sys.exit()#Create a Modbus display window called Win1Win1=win32.Dispatch("Mbpoll.Document")# Read 10 holding registers from slave ID 1, address 0 (40001) every 1000msWin1.ReadHoldingRegisters(1, 0, 10, 1000)# Show the Modbus windowWin1.ShowWindow()# Show 10 rowsWin1.Rows(0)# Resize the window to fit to the gridWin1.ResizeWindow()
time.sleep(1.0)# Wait until read is doneifWin1.ReadResult==0:# Check read resultprint("Modbus register 0 (40001) = ", Win1.SRegisters(0))else:print("Read failed error: = ", Win1.ReadResult)print("Tx count = %d, Rx count = %d"%(Win1.GetTxCount, Win1.GetRxCount))# Prepare the internal array in Modbus Poll with data to writeWin1.SRegisters(0, 1)# Note that parameter 1 is not aWin1.SRegisters(1, 10)# Modbus address but an index to the arrayWin1.SRegisters(2, 100)
Win1.SRegisters(3, 1000)
Win1.SRegisters(4, 10000)# Write the registers. This function do not create a window in Modbus Poll
# Use the function <<WriteMultipleRegistersWin>> to create a data windowWin1.WriteMultipleRegisters (1, 0, 5)
_=input("Wait for write Press ENTER:")ifWin1.WriteResult==0:# Check write resultprint("Modbus write success")else:print("Write failed error: = ", WriteResult)
_=input("Press ENTER to quit:")様々な機能
Modbus Pollドキュメントに関連付けられた機能。(データウィンドウ)
6.1.1とA:ウィンドウを表示
デフォルトのModbusドキュメントウィンドウは非表示です。ShowWindow関数はModbus Pollを可視化し、データ内容を含むドキュメントを表示します。
関数の機能ウィンドウの表示()パラメータ
この関数にはパラメータがない。戻り値は
いいえ。
6.2.とnbsp; TxCountを取得する
回収依頼の数
関数の機能GetTxCount ViewCubeパラメータがある限り
この関数にはパラメータがない。戻り値は
リクエストの数。
6.3.とnbsp;受入数の取得
応答数を返す。
関数の機能GetRxCount ViewCubeパラメータがある限り
この関数にはパラメータがない。戻り値は
応答の数。
6.4と。名前を取得する。
取得値の名前。
関数の機能GetNameインデックスは整数
INDEX:インデックス0は最初のModbusアドレスに対応する。戻り値は
名前は。
6.5と。nbsp;コレクション名
値の名前を変更します。関数の機能SetNameインデックスは整数、名前は文字列
INDEX:インデックス0は最初のModbusアドレスに対応する。
名前は:値セルの名前。戻り値は
いいえ。
13.6.6。すべてフォーマット。
すべての値セルを選択したフォーマットでフォーマットします。
関数の機能FormatAll[整数としてフォーマット]パラメータ
フォーマット:値のセルのフォーマット。戻り値は
いいえ。
6.7と。nbsp;フォーマットの取得
Modbus値の表示形式を取得します。
関数の機能GetFormatインデックスは整数
INDEX:インデックス0は最初のModbusアドレスに対応する。
戻り値は
| ID | フォーマット形式 |
|---|---|
| 0サイン。 | |
| 1 | 署名なし。 |
| 2 | 16進法 |
| 3 | Binaryシングル |
| 4 | 浮動小数点リトルエンバイトスワップ |
| 5 | 浮動小数点ビッグエンディアン |
| 6 | デュアルリトルエンバイトスワップ |
| 7 | ダブルビッグエンディアン順序 |
| 8 | 32ビット符号付きリトルエンド·バイトスワップ |
| 9 | 32ビット符号付き大長順序 |
| 10 | 浮動小数点リトルエンディアン |
| 11 | 浮動小数点ビッグエンディアンバイトスワップ |
| 12 | 二重リトルエンディアン序 |
| 13 | デュアルビッグエンディアンバイトスワップ |
| 14 | 32ビット符号付きリトルエンディアン |
| 15 | 32ビット符号付きビッグエンディアン·バイト·スワップ |
| 17 | 32ビット符号なしビッグエンディアン |
| 18 | 32ビット符号なしリトルエンバイトスワップ |
| 19 | 32ビット符号なしビッグエンディアン·バイト·スワップ |
| 20 | 32ビット符号なしリトルエンディアン |
| 21 | 64ビット符号付き大文順序 |
| 22 | 64ビット符号付きリトルエンディアン·バイト·スワップ |
| 23 | 64ビット符号付きビッグエンディアン·バイト交換 |
| 24 | 64ビット符号付きリトルエンディアン |
| 25 | 64ビット符号なしビッグエンド |
| 26 | 64ビット符号なしリトルエンバイトスワップ |
| 27 | 64ビット符号なしビッグエンディアン·バイト·スワップ |
| 28 | 64ビット符号なしリトルエンディアン |
| この設定は、表示のみに使用されます。値の取得/設定関数を使用する場合は、正しいバイト順序を取得するためにbyteOrderを使用する必要があります。 |
6.8.8。nbsp;フォーマットの設定
Modbus値の表示形式を変更します。上記の書式値を参照してください。
関数の機能SetFormat[インデックスは整数、フォーマットは整数]パラメータ
INDEX:インデックス0は最初のModbusアドレスに対応する。
フォーマット:値のセルのフォーマット。戻り値は
いいえ。
13.6.9。ウィンドウのサイズ変更
開いているウィンドウのサイズをグリッドに合わせて調整します。
関数の機能ウィンドウの調整()パラメータ
この関数にはパラメータがない。戻り値は
いいえ。
13.6.10。すべての列のサイズ変更
すべての列のサイズをセル内の値に合わせて変更します。
関数の機能ResizeAllColumns ViewCube ViewCubeパラメータ
この関数にはパラメータがない。戻り値は
いいえ。
13.6.11。OKです。
グリッド内の行数を指定します。
関数の機能OKです。NumberRows
NumberRows:グリッド内の行数
| ID | 説明する。 |
|---|---|
| 0 10行(デフォルト) | |
| 1 | 20行。 |
| 2 | 50 行。 |
| 3 | 100 行。 |
| 4 | 適切な量 |
戻り値は
いいえ。
13.6.12。結果の読み取り
このプロパティを使用して、Readとの確立された通信が正常に実行されているかどうかを確認します。
プロパティReadResult As Integerパラメータ
この関数にはパラメータがない。戻り値は
| エラーです。 | 説明する。 |
|---|---|
| 0成功する。 | |
| 1 | タイムアウトエラー |
| 2 | CRCエラー |
| 3 | RESPONSE ERROR応答が予期された従属ID、機能、アドレスではない |
| 4 | 書き込み間違い。 |
| 5 | 読み取りエラー |
| 6 | ポートが開いていないエラー |
| 10 | データが初期化されない |
| 11 | 不十分なバイト受信 |
| 16 | バイト数エラー |
| 19 | トランザクションIDエラー |
| 81時間。 | 違法な機能 |
| 82時間。 | 違法なデータアドレス |
| 83時間。 | 不正なデータ値 |
| 84時間。 | サーバーデバイスの障害 |
| 85時間。 | 承認する |
| 86時間。 | サーバー機器がビジー |
| 87時間。 | NAK:否定的な確認 |
| 8Ah | ゲートウェイパスが使用できません |
| 8Bh | ゲートウェイターゲットデバイスが応答できません |
13.6.13。結果を書く。
この関数を使用して、書き込みが成功したかどうかを確認します。
スレーブの結果が利用可能になるまで、値はDATA_UNINITIALIZEDです。可能な値のリストについては、を参照してください。ReadResult 。
プロパティWriteResult As Integerの戻り値
書き込み結果を整数として返します。
オートメーションのデータプロパティ
次のプロパティは、Modbus Pollの内部書き込み/読み取り配列の値を設定または取得するために使用されます。使用されるインデックスはModbusアドレスではない。使用するアドレスに関係なく、インデックスは常に0からカウントされます。データプロパティはModbus Pollドキュメントに関連付けられています。(データウィンドウ)
各データプロパティには2つのバージョンがあります。
- 接尾辞のないもの、例えばSRegisters内部の書き込み/読み取り配列から値を設定または取得するために使用されます。
- 例えば、勝利の一つとして、SRegistersWinデータウィンドウから直接値を設定または取得できます。これは、データウィンドウが関数の書き込みに使用されるときに使用されます。WriteMultipleRegistersWin。
例1:
' doc is assumed created first. See Excel example.' Writes 1 to index 0 in the data array used for the Write function laterdoc.SRegisters(0)=1
doc.SRegisters(1)=10
doc.SRegisters(2)=1234' Write 3 registers stored in Modbus Poll internal array' to Modbus address 100 (40101)' A window is not createdres=doc.WriteMultipleRegisters(1, 100, 3)' The above example do not create a data window but just make a single Modbus write.浮動小数点値の例2
3つの浮動小数点値を書く。
' doc is assumed created first. See Excel example.doc.Floats(0)=1.3
doc.Floats(2)=10.5
doc.Floats(4)=1234.12' Write the 6 register stored in Modbus Pollres=doc. WriteMultipleRegisters(1, 0, 6)' 6 Registers are written as a floating point value is 32 bit wide.例3:
3つのレジスタに書き込むウィンドウを作成します。
' doc is assumed created first. See Excel example.' A window is created that writes the content every 1000msres=doc.WriteMultipleRegistersWin(1, 100, 3, 1000)' Writes 1 to the first cell in the data windowdoc.SRegistersWin(0)=1
doc.SRegistersWin(1)=10
doc.SRegistersWin(2)=1234' Now the 3 registers are written to slave id 1 address 100 every 1000ms7.1.1とコイル、コイルが勝つ。
プロパティコイルコイルコイル(インデックスは整数)は整数記述
write配列構造体にコイルをセットするか、read配列からコイルを返します。シンタックス
コイルコイルコイルインデックス
13.7.2. SRegisters, SRegistersWin
プロパティSRegisters Index As Integer
write配列構造体にレジスタをセットするか、read配列からレジスタを返します。シンタックス
SRegisters(インデックス)[=新しい値]
13.7.3. URegisters, URegistersWin
プロパティURegisters(インデックスは整数)記述する限り
write配列構造体にレジスタをセットするか、read配列からレジスタを返します。シンタックス
URegisters(インデックス)[=新しい値]
13.7.4. Ints_32, Ints_32Win
プロパティInts_32(インデックスは整数)はDoubleの記述
書き込み配列構造体に32ビット整数を設定するか、読み取り配列から整数を返します。シンタックス
Ints_32(インデックス)[=新しい値]
13.7.5。UInts_32, UInts_32Win
プロパティUInts_32 Index As Integer
書き込み配列構造体に32ビット符号なし整数を設定するか、読み取り配列から符号なし整数を返します。シンタックス
UInts_32(インデックス)[=新しい値]
13.7.6。Ints_64, Ints_64Win
プロパティInts_64(インデックスは整数)はDoubleの記述
write配列構造体に64ビット整数を設定するか、読み出し配列から整数を返します。シンタックス
Ints_64(インデックス)[=新しい値]
13.7.7. UInts_64, UInts_64Win
プロパティUInts_64 Index As Integer
write配列構造体に64ビット符号なし整数を設定するか、読み出し配列から符号なし整数を返します。シンタックス
UInts_64(インデックス)[=新しい値]
13.7.8。車が勝つ。
プロパティ浮動小数点数(インデックスは整数)単一の記述
write配列構造体に浮動小数点数を設定するか、read配列から浮動小数点数を返します。シンタックス
浮動小数点数インデックス
13.7.9。ダブル、ダブル勝利。
プロパティ倍精度の数(インデックスは整数)倍精度数の説明
書き込み配列構造体でdoubleを設定するか、読み出し配列からdoubleを返します。シンタックス
ダブルダブル。インデックス
13.7.10。バイトエンディアン
プロパティByteOrder Integerの説明
Ints_32、UInts_32、Ints_64、UInts_64、Floats、Doublesの各プロパティで使用されるバイト順序を設定します。
Winバージョンではこのプロパティは使用されませんByteOrder。
| ID | バイトエンディアン |
|---|---|
| ビッグサイズ(デフォルト) | |
| 1 | リトルエンディングバイトスワップ |
| 2 | ビッグエンディアン·バイト交換 |
| 3 | スモール·エンド |
Ints_32の例:
タイトル:Big Ends
10進数123456 7 8 9または16進数0 7 5B CD 15
Modbusメッセージでラインを通過する順序:0 7 5B CD 15構文
バイト順序(新しい価値観)
関数の記述データウィンドウの作成
次の機能は、読み取り/書き込み定義ダイアログボックスF8で設定したものと同じです。
これらの関数はデータウィンドウを作成し、データウィンドウ内のデータ内容はスキャンレートに基づいて書き込まれます。
8.1.1と1つのコイルが勝つ。
Modbus機能コード0 5。
関数の機能WriteSingleCoilWin SlaveID As Integer
SlaveID:アドレス1から255まで
住所:アドレス:データアドレスBase 0
ScanRate: 0 ~ 3600000msの戻り値
成功すれば真です。失敗した場合はfalse
8.2.と。1つのレジスタが勝つ。
Modbus機能コード0 6。
関数の機能WriteSingleRegisterWin SlaveID As Integer
SlaveID:アドレス1から255まで
住所:アドレス:データアドレスBase 0
ScanRate: 0 ~ 3600000msの戻り値
成功すれば真です。失敗した場合に偽のPythonサンプルウィンドウを開き、1000ミリ秒ごとにレジスタに書き込む方法
importwin32com.clientaswin32
SIGNED=0
App=win32.Dispatch('Mbpoll.Application')
App.Connection=1
App.IPAddress="127.0.0.1"
App.ServerPort=502
App.OpenConnection#Create a Modbus display window called Win1Win1=win32.Dispatch("Mbpoll.Document")# Write 1 holding registers to slave ID 1, address 0 (40001) every 1000 msWin1.WriteSingleRegisterWin(1, 0, 1000)# Show the Modbus windowWin1.ShowWindow()# Fit rows to quantityWin1.Rows(4)# Disable refresh for speedWin1.EnableRefresh=False# This sets how the value is displayedWin1.SetFormat(0, SIGNED)# Set the Name of the registerWin1.SetName(0, "Setting")# Set the value to writeWin1.SRegistersWin(0, 100)
Win1.EnableRefresh=True
Win1.ResizeAllColumns ()
Win1.ResizeWindow()
_=input("Press ENTER to quit:")13.8.3. WriteMultipleCoilsWin
Modbus機能コード15。
関数の機能WriteMultipleCoilsWin SlaveID As Integer
SlaveID:アドレス1から255まで
Address:データアドレスBase 0
Quantity:データの数です1968年まで
スキャン速度: 0 ~ 3600000ミリ秒の戻り値
成功すれば真です。失敗した場合はfalse
13.8.4. WriteMultipleRegistersWin
Modbus機能コード16。
関数の機能WriteMultipleRegistersWin SlaveID As Integer
SlaveID:アドレス1から255まで
Address:データアドレスBase 0
Quantity:データの数です1から123まで
スキャン速度: 0 ~ 3600000ミリ秒の戻り値
成功すれば真です。失敗した場合はfalse
異常とエラー情報
Modbusの例外とエラーメッセージは、各ウィンドウの2 行目に赤いテキストで表示されます。。

Modbus例外コード
Modbus例外は、デバイスから返されるエラーです。
| コードコード。 | 名前は | 意味がある。 |
|---|---|---|
| 01 | 違法な機能 | クエリで受信された機能コードは、サーバ(またはスレーブ)が許可する操作ではありません。これは、関数コードが新しいデバイスにのみ適用され、選択したユニットに実装されていないためです。また、サーバ(またはスレーブ)がこのタイプのリクエストを処理するためにエラー状態にあることを示すこともあります。例えば、設定されておらず、レジスタ値を返すよう求められているためです。 |
| 02 | 違法なデータアドレス | クエリで受信したデータアドレスは、サーバが許可しているアドレスではありません。具体的には、参照番号と伝送長の組み合わせは無効である。レジスタが100個あるコントローラの場合、PDUは最初のレジスタ0をアドレス指定し、最後のレジスタ99をアドレス指定する。リクエストが送信されたレジスタアドレスが96で、レジスタ数が4であれば、リクエストは(少なくともアドレスに関しては)レジスタ96、97、98、99で正常に実行されます。開始レジスタアドレスが96で、レジスタ数が5のリクエストを送信すると、レジスタ96、9 7、9 8、99、100に対して操作を試み、アドレス100のレジスタがないため、このリクエストは例外コード0 x 0 2“不正なデータアドレス”で失敗します。 |
| 03 | 不正なデータ値 | クエリデータフィールドに含まれる値は、サーバまたはスレーブが許可する値ではありません。これは、暗黙の長さが間違っているなど、複雑なリクエストの残りの部分の構造にエラーがあることを示します。MODBUSプロトコルは特定のレジスタの特定の値の重要性を認識していないため、レジスタに格納されたデータ項目がアプリケーションが期待する値を超える値を持つことを意味しません。 |
| 04 | サーバーデバイスの障害 | サーバ(またはセカンダリ·サーバ)が要求された操作を実行しようとしたときに、回復不可能なエラーが発生しました。 |
| 05 | 承認する | 特にプログラミングコマンドと組み合わせて使用されます。 サーバー(またはスレーブサーバー)がリクエストを受け入れ、処理していますが、その処理には長い時間がかかります。クライアントまたはマスターでタイムアウトエラーが発生しないように、このレスポンスを返します。クライアントまたはマスタは、次に、処理が完了したかどうかを判定するために、ポーリングプログラム完了メッセージを発行することができる。 |
| 06 | サーバー機器がビジー | 特にプログラミングコマンドと組み合わせて使用されます。 サーバー(またはスレーブ)が長時間のプログラムコマンドを処理している。サーバ(またはスレーブ)がアイドル状態の場合、クライアント(またはマスタ)は後でメッセージを再送信する必要があります。 |
| 0A | ゲートウェイパスが使用できません | ゲートウェイと組み合わせて使用すると、ゲートウェイが要求を処理するために入力ポートから出力ポートへの内部通信パスを割り当てることができないことを示します。通常、ゲートウェイの設定ミスや過負荷を意味します。 |
| 0B | ゲートウェイ·ターゲット·デバイスの応答に失敗しました | ゲートウェイと組み合わせて使用すると、ターゲット·デバイスから応答が得られないことを示します。これは通常、デバイスがネットワーク上に存在しないことを意味します。 |
Modbusポーリングエラーメッセージ
| エラーメッセージの表示 | 意味がある。 |
|---|---|
| タイムアウトエラー | 予想された時間内に応答がありませんでした。次の内容を確認します。シリアル接続ボーレート、パリティ、データビット、ストップビットなどのシリアル設定。Modbusモード、RTUまたはASCIIスレーブID応答タイムアウトTCP/IP接続応答タイムアウトホストとポートがスレーブと一致しているかどうかを確認する |
| 応答エラー | 反応は予想外だった。ステーションIDの違い。 |
| CRCエラー | 受信した応答のCRC値が正しくありません。 |
| 書き込みエラー | これはシリアルドライバからされるエラーです。USB/RS232/485ドングルを使用していて、USBケーブルを外している場合に発生することがあります。割り込み条件入出力エラーシリアル接続エラー出力バッファオーバーフロー TCP/IP接続を使用した書き込みエラーは、通常、接続の喪失が原因です。 |
| 読み取りエラー | これはシリアルドライバからされるエラーです。構成エラー文字バッファオーバーフローパリティエラー入力バッファオーバーフロー入出力エラー割り込み条件TCP/IP接続を使用した読み取りエラーは、通常、接続の喪失が原因です。 |
| 受信バイト数が不十分 | 応答が期待される長さではない。 |
| バイト数エラー | 応答のバイト数が正しくありません。予想と比べると。 |
| トランザクションIDエラー | これは、MODBUSサーバがリクエストのトランザクション識別子をレスポンスでコピーするトランザクションペアリングに使用されます。 |
ソフトウェアバージョンはModbus Poll 9.9.2.1690中国語版です。コメントしてダウンロードしてください!!

11
111
下载
1
很好
1111111
222
111111
11111
感谢シェア
学习
xz
介绍的很详细,非常好用
xiazia
感谢
下载
谢谢
666
感谢
收下
谢谢楼主
最新版吗?给力!
感谢楼主
感谢楼主
感谢楼主
感谢楼主
感谢感谢
感谢楼主
介绍的很详细,非常好用
ceshi