
無料で利用できるミニプログラム!!
Modbus Slave
Modbus Slaveは、100のウィンドウで最大100台のスレーブデバイスをエミュレートできます。このシミュレーションツールを使用してPLCプログラミングをスピードアップします。ベンダーからスレーブデバイスを受け取る前に、プログラミングとテストを開始します。メインアプリケーションは、開いているドキュメントに含まれるデータにアクセスできます。Modbusポーリングと同じユーザーインターフェイス。
Serial Trafficの監視Visual Basic、Excelなどとの接続のための化。特定の要件に応じてModbusデータを解釈して表示します。たとえば、Excelで依存データを編集します。プログラムに付属のExcel example.xlsを試してください。
Modbusスレーブで開かれる各ウィンドウは、同じまたは異なるスレーブノードからのデータを表すように設定できます。
Modbusスレーブのシステム要件
ハードウェア要件
プロセッサー。1 GHz以上を推奨
1 GB RAM
5 MBのハードディスク空き容量
1,024 x 768ディスプレイ解像度オペレーティングシステム要件
Windows 7からWindows 11までのすべてのバージョンのWindowsをサポートします。
Modbus Slaveバージョン8はWindows XPで動作します。
1.1.1とnbsp;サイレントインストール
サイレントインストールでは、ユーザーの操作は不要で、ユーザーインタフェースはありません。ユーザーにはダイアログボックスが表示されず、質問もされません。
コマンドライン/Sスイッチを使用します。
Modbusスレーブ機能
接続する。
Modbus Slaveは以下の方法でデバイスからデータを読み書きします。
- RS 232またはRS 485ネットワーク上のModbus RTUまたはASCII。(USB/RS232/485コンバータ
- Modbus TCP/IP
- Modbus over TCP/IP。(Modbus RTUはTCPパケットにカプセル化される)
- プロトコルUDP/IP
- UDP/IPベースのModbus。(Modbus RTUはUDPパケットにカプセル化される)
サポートされるModbus機能
- 01 0 x 01リードコイル
- 02 0x02離散入力の読み込み
- 03 0x03リードホールドレジスタ
- 04 0x04入力レジスタの読み取り
- 05 0 x 05 1つのコイルの书き込み
- 06 0x06 1つのレジスタに书き込み
- 08 0 x 08 Diagnosticsシリアルのみ
- 11 0x 0B通信イベントカウンタを取得シリアルのみ
- 15 0 x 0F複数のコイルへの書き込み
- 16 0 x 10複数のレジスタに書き込む
- 17 0x11サーバー IDのレポートシリアル回のみ
- 22 0 x 16マスク书込みレジスタ
- 23 0 x 17複数のレジスタの読み取り/書き込み
- 43 / 14 0x2B/0x0EデバイスIDの読み取り
表示フォーマット
各セルは個別にフォーマットできます。
- 16ビット符号付きレジスタ(Signed 16-bit register)
- 16ビット符号なしレジスタ(Unsigned 16-bit register)
- 16(Hex)
- バイナリ(Binary)
- 任意のワード/バイト順序の32ビット符号付き整数32-bit signed integer with any word/byte order)
- 任意のワード/バイト順序の32ビット符号なし整数32-bit unsigned integer with any word/byte order)
- 任意のワード/バイト順序の64ビット符号付き整数64-bit signed integer with any word/byte order)
- 任意のワード/バイト順序の64ビット符号なし整数64-bit unsigned integer with any word/byte order)
- 任意のワード/バイト順序の32ビット浮動小数点数32-bit float with any word/byte order)
- 任意のワード/バイトの64ビット倍精度小数点数64-bit double float with any word/byte order)
その他の機能
- Excel VBA、Pythonなどと接続するためのOLE/オートメーション用。
- データフローの監視
- 印刷と印刷プレビュー
- フォントの選択
- 条件付き色
- ズーム/Zoom
- リアルタイムグラフ
- ワークスペースの保存/オープン
概要:概要
Modbus Slaveはマルチドキュメントインタフェースを使用する。つまり、複数のウィンドウを開くことができます。それぞれが異なるデータ内容を持ち、異なるスレーブデバイスを同時にシミュレートします。

この写真は2つの窓を示している。1つは、アドレス0(40001)スレーブid1からの10個の保持レジスタをシミュレートし、もう1つは、アドレス0(40001)スレーブid2からの10個の保持レジスタをシミュレートする。
いつでもどこでも支援
F 1を参照。現在選択されているアイテムに関連するトピックのコンテキスト依存ヘルプを取得できます。
SHIFT + F1カーソルがヘルプカーソル(矢印+疑問符)に変わる特別な“ヘルプモード”を呼び出します。次に、ユーザーは、メニュー項目、ツールバーボタン、またはウィンドウなど、ユーザーインターフェイス内の可視オブジェクトを選択することができます。これにより、選択したアイテムを説明するトピックに関するヘルプが開きます。
セルの名前
ここに任意のテキストを入力して、値セルを指定できます。Excelのセルからテキストをコピー/ペーストすることもできます。
値のセル
Modbusレジスタのデータ値を表示する。値セルをダブルクリックすると、ダイアログ·ボックスが表示され、値セルに新しい値を入力できます。値セルに数値を入力すると、入力ダイアログも表示されます。

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

条件付き色
条件付きカラーを使用すると、特定の範囲内の値を視覚的に表示できます。3色から選択
- デフォルト色:条件付き色がtrueと評価されない場合に使用されます。
- ルール1:式がtrueと評価された場合、この色選択が使用されます。ルール1はルール2よりも優先される。
- ルール2:式がtrueと評価された場合、この色選択が使用されます。
7つの比較演算子
- not usedCLARiX未使用
- equal toEssbaseと等しい
- greater thanCelerraがより大きい
- less thanCLARiXより小さい
- greater than or equal toCelerraが等しい以上
- less than or equal toが以下の
- andCelerraと
データ型がfloatまたは32ビットlongの場合、“and”演算子は使用できません。“and”を選択すると、条件値は16進数で入力されます。セルと条件値のどちらかのビットが1の、その値はtrueと评価されます。
色の例
セル値が0より大きいは绿、0より小さいは赤になります。

ズーム/Zoom
スケーリングを使用すると、元の値を人間が読める値にスケーリングできます。スケーリングは、符号付きおよび符号なしの16/32ビット整数にのみ適用されます。

(X1 Y1
2点X1、Y1とX2、Y2を通る
Slope=m=Y2−Y1/X2−X1
直線の方程式
Y=m⋅(X−X1)+Y1
正確には
小数点以下の桁数。
有効にする
Modbusサーバー/スレーブから値をスケーリングするには、この機能を有効にする必要があります。16/32ビット以外の整数表示形式を選択した場合、スケーリングは自動的に無効になります
リアルタイムグラフ
グラフは、最大100,000点の12系列をリアルタイムで描画できます。
新しいウィンドウを開く。
別のウィンドウを開くには、3つのオプションがあります。
- Ctrl+Nキー
- “ファイル”メニューから“新規”を選択
- 押して
toolbarの
接続ダイアログ
接続ダイアログを開くには、2つのオプションがあります。
- 略称はF 3。
- 接続メニューから接続を選択します

接続する。(Connection)
接続には5種類あります。
- シリアルポート:
シリアル回線経由のModbus。RS 232またはRS 485 USBシリアルコンバータが使用できる。 - Modbus TCP/IP:
MODBUS TCP/IPネットワークと通信する場合は、“TCP/IP”を選択します。この場合、スレーブIDはMODBUS TCP/IPで使用されるセルIDと同じです。
ポート番号は502です。 - Modbus UDP/IP:
MODBUS UDP/IPネットワークと通信する場合は、UDP/IPを選択します。これはModbus TCP/IPと同じですが、コネクションレスUDPプロトコルを使用します。 - Modbus RTU on TCP/IP:
これは、シリアル回線ではなくTCP/IPネットワークを介して送信されるRTUメッセージです。 - Modbus RTU Over UDP/IP:
これは、シリアル回線ではなくUDP/IPネットワークを介して送信されるRTUメッセージです。
選択に応じて、その他の設定の一部がグレー表示されます。
シリアルポートの設定(Serial Settings)
これらのパラメータを使用して、シリアルポートの設定を行います。接続タイプがある場合のみ。シリアルポート”の時にのみ利用可能となる。モデルは
このオプションで選択RTUまたはASCIIモデルです。略称はRTU。デジタルSR
出力フロー制御のためにDSR Data Set Readyシグナルを監視するかどうかを指定します。このメンバーがTRUEでDSRがオフの場合、DSRが再度送信されるまで出力は一時停止されます。CTSについて
出力フロー制御用にCTS Clear Send信号を監視するかどうかを指定します。このチェックボックスをオンにしてCTSをオフにすると、CTSが再度送信されるまで出力が一時停止されます。即時戦略の変更
バイトが転送可能な場合、RTSラインがハイレベルになることを指定します。すべてのバッファバイトが送信されると、RTSラインはローレベルになります。
お使いの232/485コンバータに自動方向スイッチがない場合は、方向を切り替えるために使用できます。
| 可能な限り、RTS制御RS 232/RS 485コンバータの使用は避けてください。WindowsやLinuxなどの非リアルタイムオペレーティングシステムでは、送信機がシャットダウンする正確な時間を決定することは困難です。早期にシャットダウンすると、FIFOまたはUARTの送信レジスタに文字が残り、文字が失われる可能性があります。そのため、スレーブはメッセージを認識しない。一方、シャットダウンが遅すぎると、スレーブからのメッセージが破損し、マスターがメッセージを認識しなくなります。 |
TCP/IPサーバ(TCP/IP Server)
TCP/IPサーバは、Ethernet接続を使用するにのみ使用できます。IPアドレス
待機するIPアドレスを指定します。これは、PCに複数のネットワーク接続がある場合に便利です。Modbus Slaveのすべてのインスタンスは特定のネットワークをリッスンできます。デフォルトはローカルホスト127.0.0.1任意のアドレス
Modbus Slaveがすべてのネットワークをリッスンする場合は、このチェックボックスをオンにします。ユニットIDを無視
多くのPLCデバイスはこのフィールドを無視し、ほとんどのクライアントのデフォルト値はゼロです。しかしながら、ゲートウェイまたは専用プログラムは、ユニット番号を使用して、どのタイプの処理が必要かを示すことができる。港のこと
サーバーのポート番号背番号は50 2。
Definition forシングル(Slave definition)
このコマンドを使用して、アクティブなウィンドウに定義するデータの配列を定義します。
“Slave Definition”ダイアログ·ボックスを開くには、3つのオプションがあります。
- 略称はF 8。
- セットアップメニューから“ステーションから定義”を選択
- 押して
toolbarの

スレーブID。(Slave ID)
1から255までの範囲。(MODBUSプロトコル仕様では247と規定されている。値0は、MODBUS/TCPまたはMODBUS/UDPデバイスと直接通信することもできます。
関数コードの特徴(Function)
4つの機能コードのうち1つを選択できます。
- 0 1:リードコイル(0 x)。Accept Write機能0 5と15
- 02入力の読み込み1x
- 0 3:読み出しホールドレジスタ(4 x)。书き込み受け入れ06、16、22、23
- 0 4:入力レジスタの読み取り(3 x)
アドレス:address(Address)
Modbusプロトコルのアドレスは混乱しています!いくつかのプロトコル仕様はプロトコル/メッセージアドレスを使用し、他のプロトコル仕様はデバイスアドレスを使用します。
プロトコル/メッセージアドレス
一部のプロトコル仕様では、0から655 3 5までのプロトコル/メッセージアドレスと機能コードを使用します。これは新しいModbus仕様でも使用されているものです。これは、回を介して送信されるメッセージのアドレスです。
Modbus Slaveはプロトコル/メッセージアドレスを0から655 3 5までカウントします。
デバイスアドレス
一部のプロトコル仕様はデバイスアドレス/レジスタを使用する。レジスタは1からカウントを開始します。最初の数字は、使用する機能を記述します。つまり、デバイスアドレス40101はアドレス100で識別されます。“4”はホールドレジスタと4 xレジスタが1からカウントを開始することを意味します。したがって、“4 XXXX”参照は暗黙的です。さらに紛らわしいのは、4 xが機能コード03、3 xが機能コード04です。
5ビットと6ビットのアドレス指定
アドレス形式4 xは40001から49999までカウントされます。次の住所はない。50000。以前は9999アドレスで十分でした。9999では不十分です。そしてゼロを追加します。40101は400101になります。これを8ビット·アドレス指定または拡張アドレス指定と呼びます。
Modbus Slaveでは問題ありません。410001は10000になります“4”は捨てられ、1ではなく0から数え始めるので、残りの10001は1を引いた。
アドレスの例
これらの例は、デバイスアドレスを指定した場合にModbusスレーブをセットアップする方法を示します。
保持レジスタの定義
デバイスID 2のデバイスアドレス40011から20個のレジスタを定義したいとします。“4”から、これが機能03“Read Hold Register”であることがわかります。
- マシンID = 2
- =“03読み込み保持レジスタ
- アドレス:10(11マイナス1)
- サイズ= 20
ショップ型入力の定義
スレーブID 5のアドレス110201から1000個のコイルを定義します。“1”から、機能0 2“離散入力の読み取り”であることがわかります。
- マシンID = 5
- =“02読み取り
- アドレス= 10200 10201 - 1
- 数量 = 1,000
名前列の非表示(Hide name columns)
すべての名前列を非表示にします。それらを使用しない場合は、より多くのスペースを解放することができます。
セル内のアドレス(Address in cell)
有効にすると、アドレスは値セルにも表示されます例2000 = 0000

PLCアドレス(ベースアドレス1)PLC Addresses (Base 1)
このオプションを選択すると、アドレスがデバイスアドレスとして表示されます。

行の数(Rows)
グリッド内の任意の行数を指定します。
リアルタイムグラフ(Real time Charting)
このコマンドを使用して、グラフに最大12個のデータ系列をリアルタイムで描画します。
リアルタイムチャートは高速で、新しいデータを受け取るとすぐに新しい線を描画できます。
| すべてのチャート設定はワークスペースファイルに保存されます。ワークスペースの保存/オープン |
ライブ·チャート·ダイアログ·ボックスを開くには、次の2つのオプションがあります。
- Alt + Rキー
- 表示メニューから“ライブ·チャート”を选択

X軸には、グラフの起動からの秒数が表示されます。
ポイントがグラフの最後に到達すると、3つのオプションがあります。
- 終了時に停止:グラフが止まる。
- 終了時の再起動:グラフ再開です。
- 続きを読む:続けて最大ポイントに達するか、停止ボタンを押すまで。
セットアップ(Settings)
デフォルトでは、12個の系列すべてが左のY軸にリンクされています。シリーズを右 Y 轴にリンクするは、[右 Y 轴]チェックボックスをオンにします。指定する
- 色は
- 右のY軸
- タイトルは。タイトルが空の場合は、読書ウィンドウの名前で初期化されます
- オフセットオフセット
表示会です。
- ファイル名:File Name
- アドレス:address
オフセットは、同じY軸上でデータポイントを整列させる場合に便利です。例えば、0または1のデータポイントは、互いに描画されないようにオフセットすることができます。

ズーム機能。
より詳細な情報を表示したい場合は、グラフを拡大すると便利です。ズームはマウスの左ボタンで制御されます。チャートの特定の部分を拡大/縮小するには、チャートを左クリックし(拡大/縮小長方形の左上隅になります)、右下隅までドラッグします。長方形が現れます。マウスボタンを放すと、軸は自動的に選択した領域に調整されます。
グラフを左クリックした場合(ズームを開始するなど)、左上隅に移動すると、ズームおよびパン機能を使用して行ったすべての変更がキャンセルされます(パンおよびズーム操作を行う前に、グラフは元の状態になります)。
パンニング機能
コントロールをパンするには、コントロール上のどこかを右クリックしてマウスを動かします。マウスの下にあるポイントは、マウスの動きに従います。
グラフ·シリーズへのデータのリンク
Modbusデータユニットが12の系列のいずれかにリンクされていない限り、チャートはどのデータを使用するかを知りません。これを行うには、値のセルを選択し、メニュー →表示から“チャートにリンク”を選択します。

Exportシリーズ
シリーズ·データをディスクに保存するか、クリップボードにコピーします。データをExcelに直接貼り付けて、さらに処理します。
カンマ以外のフィールド区切り文字を使用していても、ファイルの拡張子は.csvです。
区切り文字:テキストファイル内の値を区切る文字を選択します。Excelにコピー/ペーストするときは、タブ区切り文字を使用します。追加情報も提供されています。
- ポイント数ポイント
- 最大値は
- 最小値は
- 平均得点率は

表示フォーマット
書式設定するセルをマークします。表示メニューから、28種類の表示形式のいずれかを選択します。
ネイティブModbusレジスタ
16ビットModbusレジスタは4つの異なるモードで表示できます。
- 署名済み。
- 署名なし。
- 16進法
- ASCII -16进数
- Binaryシングル
32ビット符号付き整数(32-bit signed integer)
2つの16ビットModbusレジスタを搭載している。4つの異なるワード/バイト順序で表示できます。
- 符号付き整数 大仮数
- 符号付き整数 小仮数
- 符号付き整数ビッグエンディアン·バイト·スワップ
- 符号付き整数リトルエンディアン·バイト交換例バイト順序:AB CD(ビッグサイズ)
10進数 123456789または16進数07 5B CD 15
Modbusメッセージのライン上での転送順序:07 5B CD 15
32ビット符号なし整数(32-bit unsigned integer)
2つの16ビットModbusレジスタを搭載している。4つの異なるワード/バイト順序で表示できます。
- 符号なし整数 大仮数
- 符号なし整数 小仮数
- 符号なし整数 Big-endianバイト交換{{しんぼるなしちょうBig-endianバイトかいば}}
- 符号なし整数リトルエンディアン·バイト交換例バイト順序:AB CD(ビッグサイズ)
10進数 123456789または16進数07 5B CD 15
Modbusメッセージのライン上での転送順序:07 5B CD 15
64ビット符号付き整数(64-bit signed integer)
4つの16ビットModbusレジスタを搭載している。4つの異なるワード/バイト順序で表示できます。
- 符号付き整数 大仮数
- 符号付き整数 小仮数
- 符号付き整数ビッグエンディアン·バイト·スワップ
- 符号付き整数リトルエンディアン·バイト交換例バイト順序: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ビット符号なし整数(64-bit unsigned integer)
4つの16ビットModbusレジスタを搭載している。4つの異なるワード/バイト順序で表示できます。
- 符号なし整数 大仮数
- 符号なし整数 小仮数
- 符号なし整数 Big-endianバイト交換{{しんぼるなしちょうBig-endianバイトかいば}}
- 符号なし整数リトルエンディアン·バイト交換例バイト順序:AB CD EF GH(ビッグエンディアン)
10進数1,23 4,56 7,890,123,456,789または16進数11 22 10 F4
7D E 9 81 15 Modbusメッセージでの回線順序:11 22 10 F4 7D E9 81 15
32ビット浮動小数点数(32-bit floating)
2つの16ビットModbusレジスタを搭載している。4つの異なるワード/バイト順序で表示できます。
- 浮動小数点数
- 浮動小数点数小仮数
- 浮動小数点ビッグエンディアンバイトスワップ
- 浮動小数点リトルエンバイトスワップの例バイト順序:AB CD(ビッグサイズ)
浮動小数点数123456.00または16進数47 F1 20 00
Modbusメッセージでの回線順序:47 F1 20 00
64ビット倍精度小数点数(64-bit double)
4つの16ビットModbusレジスタを搭載している。4つの異なるワード/バイト順序で表示できます。
- ダブル·ビッグ·エンド
- ダブルエンド。
- デュアルビッグエンディアンバイトスワップ
- ダブルリトルエンバイト交換の例バイト順序:AB CD EF GH(ビッグエンディアン)
浮動小数点数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ウィンドウの現在のレイアウトのスナップショットを1つのワークスペースに簡単に保存できます。
ワークスペース *mswは、开いているすべてのウィンドウの表示とファイル名を含むファイルです。実際の内容じゃないファイル→ワークスペースの保存に進みます。
接続とチャート設定はワークスペース·ファイルに保存されます。
ワークスペースファイルを開くと、Modbus SlaveはすべてのModbusウィンドウを開き、保存したレイアウトで表示します。
通信の流れ
メニューの[表示] → [通信]を選択して、シリアルラインまたはイーサネットケーブルのトラフィックを表示します。停止ボタンを使用して、チェックのため更新を一時的に停止します。
“コピー”ボタンを使用して、选択した行をクリップボードにコピーします。

| ウィンドウにはModbusスレーブが送受信するデータのみが表示されます。データスニファとしては使用できません。 |
| 他のコマンドを実行するときは、このウィンドウを開いたままにします。 |
OLE/オートメーション
オートメーション(旧OLEオートメーション)は、あるアプリケーションが別のアプリケーションで実装されたオブジェクトを操作できるようにする。
オートメーションクライアントは、他のアプリケーションに属する公開オブジェクトを操作できるアプリケーションです。オートメーションコントローラとも呼ばれます。
オートメーションサーバは、プログラム可能オブジェクトを他のアプリケーションに公開するアプリケーションです。Modbus Slave自動化されたサーバーです。
つまり、VBA(Visual Basic for Applications)をサポートする任意のプログラム(Visual Basic、Excelなど)を使用して、特定の要件に応じてmodbusデータを解釈して表示できます。
Excelの例
マクロを記述する場合は、“開発者”タブを表示するか、開発者モードで実行する必要があります。
Excel 2007

- “Microsoft Office”ボタンをクリックし、“Excelオプション”をクリックします。
- [人気]をクリックし、[リボンに開発者タブを表示]チェックボックスをオンにします。
リボンはMicrosoft Fluentユーザーインターフェイスの一部であることに注意してください。
Excel 2010、2016
- ファイルタブをクリックします。
- オプションをクリック。Excelオプションウィンドウが開きます。
- 左側のペインで、[リボンをカスタマイズ]をクリックします。
- 右側のペインの[メインタブ]で、[開発者]チェックボックスをオンにします。
- “OK”をクリック。[开発者]タブがリボン一番右のタブに表示されるはずです。
Excelサンプル·コード
この例では、ホールド·レジスタをシミュレートするウィンドウを開きます。
Modbus Slaveは非表示ですが、“ShowWindow”行のコメントを解除することで表示できます。いずれかのウィンドウが表示されます。
Modbus Slaveのインストールにも例があります。
スタート→すべてのプログラム→ Modbus Slave → Excelの例Excel VBAの例
Public doc As Object
Public app As Object
Dim status As Integer
Dim n As Integer
Private Sub StartSlave_Click()
' Create an application object. You can only create 1 application object
Set app = CreateObject("Mbslave.Application")
' Create a new Modbus Slave document (Data Window)
' This is the same as open a new data window in Modbus Slave
' You can create up to 50 Modbus Slave documents (Data Window)
Set doc = CreateObject("Mbslave.Document")
' Show Modbus Slave
' res = doc.ShowWindow()
' Create doc2 if needed.
' Set doc2 = CreateObject("Mbslave.Document")
' Set one of 5 connection types.
app.Connection = 1 ' Modbus TCP/IP
' TCP/IP settings.
' No need to set IP address. We listen to any address. (Default).
app.ServerPort = 502
app.IPVersion = 4
' Open the connection.
res = app.OpenConnection()
Range("D5").Value = res
res = doc.SetupHoldingRegisters(1, 100, 8)
doc.SRegisters(0) = 1 ' Modbus address 100
doc.SRegisters(1) = -10 ' Note that the Index used counts from 0
doc.URegisters(2) = 50000 ' no matter the Modbus address used.
doc.URegisters(3) = 60000
doc.Longs(4) = 10000 ' A long takes 2 registers
doc.Floats(6) = 123.45 ' A float takes 2 registers
' Now a master can read 8 Holding registers with a mix of 3 data types
End SubPythonの例
このPythonの例はウィンドウを開き、可能なすべてのデータフォーマットを設定します。Pythonの例
import win32com.client as win32
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
#Endianness
BE = 0
LE = 3
BE_BS = 2
LE_BS = 1
App = win32.Dispatch('Mbslave.Application')
App.Connection = 1
App.IPAddress = "127.0.0.1"
App.ServerPort = 502
App.OpenConnection
#Create a Modbus display window called Win1
Win1 = win32.Dispatch("Mbslave.Document")
# Setup 100 holding registers with slave ID 1, address 0 (40001)
Win1.SetupHoldingRegisters(1, 0, 100)
# Show the Modbus window
Win1.ShowWindow()
# Show 20 rows
Win1.Rows(1)
# Disable refresh for speed
Win1.EnableRefresh = False
# Set all different formats
# This sets how the value is displayed
# Use ByteOrder to set the actual endianness
Win1.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 format
Win1.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")
# Set different values
Win1.SRegisters(0, -100)
Win1.SRegisters(1, 100)
Win1.URegisters(2, 43690)
Win1.URegisters(3, 65535)
Win1.ByteOrder = BE
Win1.Ints_32(4, -123456)
Win1.ByteOrder = LE
Win1.Ints_32(6, -123456)
Win1.ByteOrder = BE_BS
Win1.Ints_32(8, -123456)
Win1.ByteOrder = LE_BS
Win1.Ints_32(10, -123456)
Win1.ByteOrder = BE
Win1.UInts_32(12, 123456)
Win1.ByteOrder = LE
Win1.UInts_32(14, 123456)
Win1.ByteOrder = BE_BS
Win1.UInts_32(16, 123456)
Win1.ByteOrder = LE_BS
Win1.UInts_32(18, 123456)
Win1.ByteOrder = BE
Win1.Ints_64(20, -123456)
Win1.ByteOrder = LE
Win1.Ints_64(24, -123456)
Win1.ByteOrder = BE_BS
Win1.Ints_64(28, -123456)
Win1.ByteOrder = LE_BS
Win1.Ints_64(32, -123456)
Win1.ByteOrder = BE
Win1.UInts_64(40, 123456)
Win1.ByteOrder = LE
Win1.UInts_64(44, 123456)
Win1.ByteOrder = BE_BS
Win1.UInts_64(48, 123456)
Win1.ByteOrder = LE_BS
Win1.UInts_64(52, 123456)
Win1.ByteOrder = BE
Win1.Floats (60, 123.456)
Win1.ByteOrder = LE
Win1.Floats (62, 123.456)
Win1.ByteOrder = BE_BS
Win1.Floats(64, 123.456)
Win1.ByteOrder = LE_BS
Win1.Floats(66, 123.456)
Win1.ByteOrder = BE
Win1.Doubles(80, 123.456)
Win1.ByteOrder = LE
Win1.Doubles(84, 123.456)
Win1.ByteOrder = BE_BS
Win1.Doubles(88, 123.456)
Win1.ByteOrder = LE_BS
Win1.Doubles(92, 123.456)
# Refresh
Win1.EnableRefresh = True
Win1.ResizeAllColumns ()
Win1.ResizeWindow()
print (Win1.GetName(1))
_ = input("Press ENTER to quit:")接続機能/属性
次のプロパティと機能は、接続ダイアログボックスF3で設定したものと同じです。
接続する。
接続目的の接続を選択します。シリアルポートまたはイーサネット接続のいずれかを選択できます。
プロパティ接続する。整数の有効な値
0 =シリアルポート
1 = Modbus TCP/IP
2 = Modbus UDP/IP
3 = Modbus RTU over TCP/IP
4 = Modbus RTU over UDP/IP
例を挙げる
Connection = 0
ボーレート
接続のみ= 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 = 9600
データ·ビット
接続のみ= 0
プロパティDataBits整数として有効な値
7
8(デフォルト)
例を挙げる
DataBits = 8
チェックビット
接続のみ= 0
プロパティ:Propertyパリティパリティ整数として有効な値
0 =なし
1 = 奇数。
2 = 偶数(デフォルト)
例を挙げる
Parity = 2
ストップ·ビット
接続のみ= 0
プロパティStopBits整数として有効な値
1(デフォルト)
2
例を挙げる
StopBits = 1
シリアルポート
接続のみ= 0
プロパティSerialPort整数として有効な値
1…255
デフォルト= 1例
SerialPort = 1
サーバーのポート
接続のみ= 1 4
プロパティServerPortLongの有効な値
0…65535
50 2例の例
ServerPort = 502
IPバージョン
接続のみ= 1 4
プロパティIPVersion整数として有効な値
4 = IPバージョン4(デフォルト)
IPバージョン6
例を挙げる
IPVersion = 4
任意のアドレス
接続のみ= 1 4
プロパティAnyAddress整数として有効な値
0 =任意のアドレス= false
1 =任意のアドレス= true(デフォルト)
例を挙げる
AnyAddress = 1
ユニットIDを無視
接続のみ= 1 4
プロパティIgnoreUnitIDIntegerとして有効な値
0 =ユニットIDを無視= false
1 =ユニットIDを無視= trueデフォルト
例を挙げる
IgnoreUnitID = 1
オープン·コネクション
[接続]プロパティーを使用して選択した接続を開きます。
関数の機能OpenConnection Biped Biped整数として
戻り値:
成功した場合はゼロ。失敗した場合、ゼロ以外の値。Modbus TCP/IP接続を開く方法
Public app As Object
Dim res As Integer
' Create an object to Modbus Slave
Set app = CreateObject("Mbslave.Application")
app.Connection = 1 ' Select Modbus TCP/IP
app.IPVersion = 4
' app.IPAddress = "192.168.1.27" ' No need to setup if AnyAddress = 1. Modbus Slave listen on all.
app.ServerPort = 502
res = OpenConnection()シリアル接続の設定方法の例
Public app As Object
Dim status As Integer
' Create an object to Modbus Slave
Set app = CreateObject("Mbslave.Application")
app.Connection = 0 ' Mode is serial port
app.SerialPort = 1 ' Com port 1
app.BaudRate = 9600 ' 9600 baud
app.Parity = 0 ' None parity
app.Mode = 0 ' RTU mode
status = app.OpenConnection()接続を閉じる
関数の機能CloseConnection () As Integer戻り値は
成功した場合はゼロ。失敗した場合、ゼロ以外の値。
通信トラフィックの表示
関数の機能ShowCommunicationTraffic ()
トラフィックウィンドウを表示します。
通信トラフィックの閉鎖
関数の機能CloseCommunicationTraffic ()
トラフィックウィンドウが表示されている場合は閉じます。
自動設定機能
次の機能は、読み取り/書き込み定義ダイアログボックスF8で設定したものと同じです。読み取り機能はModbusスレーブドキュメントに関連付けられています。(データ付きのウィンドウ)
.例:例
Res = doc.SetupDiscreteInputs (1, 100, 5) Coils (0) = 1 ' Address 100 = 1 Coils (1) = 0 ' Note that the index used in Coils starts from 0 Coils (2) = 1 ' no matter the address used. Coils (3) = 0 Coils (4) = 1 ' Now the Master reads 1, 0, 1, 0, 1 when read 5 discrete inputs starting from address 100
コイルの設定
Function SetupCoils SlaveID As Integer
成功すれば真です。成功しなかった場合は偽パラメータ
SlaveID:アドレス1から255まで
住所:アドレス:データアドレス(ベース0)
数量:より:データの量。1万から1万
ショップ型入力の設定
関数の機能ショップ型入力の設定(SlaveIDは整数、アドレスは整数、数量は整数)整数として値を返す
成功すれば真です。成功しなかった場合は偽パラメータ
SlaveID:アドレス1から255まで
住所:アドレス:データアドレス(ベース0)
数量:より:データの量。1万から1万
保持レジスタの設定
関数の機能SetupHoldingRegisters SlaveID As Integer
成功すれば真です。成功しなかった場合は偽パラメータ
SlaveID:アドレス1から255まで
住所:アドレス:データアドレス(ベース0)
数量:より:データの量。1万から1万
入力レジスタの設定
関数の機能SetupInputRegisters SlaveID As Integer
成功すれば真です。成功しなかった場合は偽パラメータ
SlaveID:アドレス1から255まで
住所:アドレス:データアドレス(ベース0)
数量:より:データの量。1万から1万
ウィンドウ·ディスプレイ
関数の機能ShowWindow ()
デフォルトでは、Modbusドキュメントウィンドウは非表示です。ShowWindow機能により、Modbus Pollはデータ内容を含むドキュメントを表示します。
名前の取得
関数の機能GetName(インデックスは整数)文字列の説明
値の名前を取得します。
インデックス0は最初のModbusアドレスに対応します。
名前の設定
関数の機能SetName(インデックスは整数、名前は文字列)説明
値の名前を設定します。
インデックス0は最初のModbusアドレスに対応します。
自動インクリメント
プロパティAutoIncrement(インデックスは整数)ブール値の説明
値の自動インクリメントを設定します。
インデックス0は最初のModbusアドレスに対応します。
シンタックス
オートインクリメント(インデックス)[=新しい値]
すべてフォーマット。
関数の機能FormatAll(整数でフォーマット)
選択したフォーマットを使用して、すべての値のセルをフォーマットします。パラメータ
フォーマット:値のセルのフォーマット。
フォーマットの取得
関数の機能GetFormat(インデックスは整数)整数として記述する
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ビット符号なしリトルエンディアン |
| この設定は、表示のみに使用されます。Get/Set値関数を使用する場合、正しいバイト順序を取得するにはbyteOrderを使用する必要があります。 |
フォーマットの設定
関数の機能SetFormat(インデックスは整数、フォーマットは整数)説明
Modbus値の表示フォーマットを設定します。上記の書式値を参照してください。
ウィンドウのサイズ変更
関数の機能ResizeWindow ()
開いているウィンドウのサイズをグリッドに合わせて変更します。
行の数
関数の機能Rows (NumberRows)
グリッド内の行数を指定します。パラメータ
NumberRows:グリッド内の行数
| ID | 説明する。 |
|---|---|
| 0 10行(デフォルト) | |
| 1 | 20 行。 |
| 2 | 50 行。 |
| 3 | 適切な量 |
オートメーションのデータプロパティ
以下のプロパティは、Modbusスレーブの内部書き込み/読み取り配列の値を設定または取得するために使用されます。使用されるインデックスはModbusアドレスではない。使用するアドレスに関係なく、インデックスは常に0からカウントされます。データプロパティはModbusスレーブドキュメントに関連付けられます。(データの窓)
例1:
' doc is assumed created first. See Excel example. doc.SRegisters(0) = 1 doc.SRegisters(1) = 10 doc.SRegisters(2) = 1234
浮動小数点値を使用した例2
doc.Floats(0) = 1.3 doc.Floats(2) = 10.5 doc.Floats(4) = 1234.12
コイルコイルコイル(Coils)
属性コイルぷろぱてぃコイルインデックスAs Integer As Integer As Integer
説明する。
write配列構造体にコイルをセットするか、read配列からコイルを返します。
構文
Coils(Index) [=newvalue]
Short Registerシングル(SRegisters)
プロパティショートレジスタインデックスAs Integer As Integer As Integer
説明する。
write配列構造体にレジスタをセットするか、read配列からレジスタを返します。
構文
SRegisters(Index) [=newvalue]
符号なしレジスタ(URegisters)
属性符号なしレジスタインデックスAs Integer As Long
説明する。
write配列構造体にレジスタをセットするか、read配列からレジスタを返します。
構文
URegisters(インデックス)[=新しい値]
全32巻。(Ints_32)
プロパティ32ビット整数インデックスAs Integer As Double {{ぷろぱてぃ 32 bit IntegerいんでっくすAs Integer As Double}}
説明する。
write配列構造体に32ビット整数を設定するか、読み出し配列から整数を返します。
構文
URegisters(Index) [=newvalue]
符号なし32ビット整数(UInts_32)
プロパティ符号なし32ビット整数インデックスAs Integer As Double
説明する。
書き込み配列構造体に32ビット符号なし整数を設定するか、読み取り配列から符号なし整数を返します。
構文
UInts_32(Index) [=newvalue]
全64巻。(Ints_64)
プロパティ64ビット整数インデックスAs Integer As Double {{ぷろぱてぃ 64 bit IntegerいんでっくすAs Integer As Double}}
説明する。
write配列構造体に64ビット整数を設定するか、読み出し配列から整数を返します。
構文
Ints_64(Index) [=newvalue]
符号なし64ビット整数(UInts_64)
プロパティ符号なし64ビット整数インデックスAs Integer As Double
説明する。
64ビットの符号なし整数をwrite配列構造体に設定するか、読み出し配列から符号なし整数を返します。
構文
UInts_64(Index) [=newvalue]
浮動小数点数(Floats)
アトリビュート浮動小数点インデックスAs Integer As Single
説明する。
write配列構造体に浮動小数点数を設定するか、read配列から浮動小数点数を返します。
構文
Floats(Index) [=newvalue]
倍精度浮動小数点数(Doubles)
アトリビュート倍精度浮動小数点インデックスAs Integer As Double
説明する。
write配列構造体に倍精度浮動小数点数を設定するか、読み出し配列から倍精度浮動小数点数を返します。
構文
Doubles(Index) [=newvalue]
バイト順序(ByteOrder)
プロパティByteOrder整数としての記述
Ints_32、UInts_32、Ints_64、UInts_64、浮動小数点数、倍精度浮動小数点数の各プロパティで使用されるバイト順序を設定します。
| ID | バイト順序 |
|---|---|
| 0大命令(デフォルト) | |
| 1 | リトルエンディアンバイトスワップ |
| 2 | ビッグエンディアン·バイト交換 |
| 3 | スモール·エンド |
Ints_32の例:
タイトル:Big Ending Order
10進数123456 7 8 9または16進数0 7 5B CD 15
Modbusメッセージでの転送順序:0 7 5B CD 15
構文
バイト順序[=新しい値]

無料で利用できるミニプログラム!!
非常需要找个软件
试试看
求软件
good
good
サポート
学习求教
adada
求软件
一直在找这个软件,终于找到 ,非常好用
*这软件不错*
OK
网络上还没看到这么详尽的チュートリアル太棒了!
チュートリアル挺详细的,我还需要软件
求プログラミング
666
woxuyao
很全很赞
チュートリアル挺详细的,我还需要软件
贼好用
需要需要,下载测试
66
666
v
666
很棒,太需要了
太棒了,正需要
好好好666
好好好
チュートリアル详细!太棒了!
666