Modbus Poll中文用户手册(2023/08/01)版

freeFree Technical Resource

This content is free to read, suitable for basic learning and search traffic.

Modbus Poll中文用户手册(2023/08/01)版

Witte Software® https://www.modbustools.com

2023-08-01

1.Modbus Poll

Modbus Poll 是一款易于使用的 Modbus マスターSimulator(シミュレータ),専用に多种用途而开发。among them:

  • Modbus 从デバイス设计者可快速轻松地测试协议接口
  • 需要现场测试Modbusデバイス或网络的自動化エンジニア
  • 想要从デバイス読み取り和/或更改特定服务データ的服务エンジニア
  • 更改从デバイス中的 Modbus register
  • 来自 Modbus デバイス的日志データ
  • トラブルシューティング和合规性测试

1.1. Modbus ポーリング的系统要求

硬件要求

処理器; 建议 1 GHz 或更快
1 GB RAM
5 MB 可用硬盘空间
1024 x 768 表示分辨率オペレーティングシステム要求

サポート从 Windows 7 to Windows 11 的すべての Windows 版本。
Modbus Poll 版本 7 在 Windows XP 上运行。

1.1.1. 静默インストール

静默インストール必要なし。用户干预,并且ない用户界面。用户看不到任何对话框,也不会被问到任何問題。
使用命令行 /S switch。

1.2. 终止用户许可协议

在使用 Modbus Poll 之前,您应仔细阅读以下条款和条件。除非您有 Witte Software 签署的不同许可协议,否则您使用本软件即表示您接受本许可協定と保证。もし您不接受这些条款,您必须立即停止使用该软件。

版权。
Modbus Poll(“软件”)著作権すべての 2002-2023,归 Witte Software すべての,All rights reserved。

评估和登録。
这ではない無料软件。您特此被许可在 30 天内無料使用本软件进行评估。

もし您在 30 天评估期后使用本软件,则需要支付登録费。

30 天评估期后未经登録使用本软件将违反美国和国际版权法。

本软件的一份登録副本可以由在一台或多台計算机上个人使用该软件的一个人使用,也可以インストール在由多人使用的一台計算机上,但不能同时インストール在这两种計算机上。

有关订单和定价的信息,ご訪問ください。https://www.modbustools.com/order.html

Modbus Poll ライセンスは是永久的。一旦您购买了特定主要版本的ライセンスは,并且只要遵守许可协议,您就可以永久使用该版本,无需额外费用。

分配。
もし您不包含あなたのライセンスは密钥,您将被認証コピー本软件;向任何人提供原件的精确副本;并経由電子方式分发未经修改的软件。特别禁止您对任何此类副本收费。

有限保修。
本软件按原样提供,WITTE SOFTWARE 不承担与本软件相关的すべての明示或默示保证,包括但不限于适销性和特定用途适用性的任何默示保证。

损害赔偿限制。
对于因使用或无法使用该软件而造成的任何间接、后果性或附带损害,WITTE SOFTWARE 或参与该软件的作成、生产或交付的任何人均不承担责任,即使 WITTE SOFTWARE 已被告知这种可能性此类损害或索赔。在任何情况下,无论索赔形式如何,WITTE SOFTWARE 对任何损害的责任均不超过为使用本软件的许可所支付的价格。使用该软件的人承担与该软件的质量和性能相关的すべての风险。

2. Modbus ポーリング功能

2.1. connect

Modbus Poll 使用以下方式从デバイス読み取り/写入データ:

  • RS232 或 RS485 网络上的 Modbus RTU 或 ASCII。(USB/RS232/485変換器です。)
  • Modbus TCP/IP
  • TCP/IP 上的 Modbus。(Modbus RTU/ASCII封装在TCPデータパケットは中)
  • ProtocolUDP/IP
  • 基于 UDP/IP 的 Modbus。(Modbus RTU/ASCII封装在UDPデータパケットは中)

2.2. サポート的 Modbus Function

  • 01 (0x01) リードコイル
  • 02 (0x02) Read discrete inputs
  • 03 (0x03) Read and hold register
  • 04 (0x04) Read input register
  • 05 (0x05) write single coil
  • 06 (0x06) write single register
  • 08 (0x08) 诊断(仅限串行线)
  • 11 (0x0B) 取得通讯イベント数器(仅限串行线)
  • 15 (0x0F) Write multiple coils
  • 16 (0x10) Write multiple registers
  • 17 (0x11) 报告サーバー·サーバー ID(仅限串行线路)
  • 22 (0x16) 掩码写レジスタ
  • 23 (0x17) 读/write multiple registers
  • 43 / 14 (0x2B / 0x0E) 読み取りデバイス标识

2.3. Data recording

  • 将データ記録到文本記事件
  • 将データ直接记录到 Excel 中

2.4. Display format

每个ユニット格都可以单独格式化。

  • 記号付き。 16 位レジスタ
  • 符号なし。 16 位レジスタ
  • hexadecimal
  • binary
  • 具有任意字/バイト顺序的 32 ビット符号付き整数
  • 具有任意字/バイト顺序的 32 ビット符号なし整数
  • 具有任意字/バイト顺序的 64 ビット符号付き整数
  • 具有任意字/バイト顺序的 64 ビット符号なし整数
  • 具有任意字/バイト顺序的 32 ビット浮動小数点数
  • 具有任意字/バイト顺序的 64 位双浮点

2.5. 其他功能

  • 用于与 Excel VBA、Python 等连接的 OLE/自動化。
  • データトラフィックモニタリング
  • 打印和打印预览
  • 字体選択
  • 条件颜色
  • Zoom
  • 实时图表
  • 保存/打开工作区
  • アドレス扫描

3. 概述

Modbus Poll 使用多ドキュメント接口。这意味着可以打开多个窗口。每一个同时具有来自不同从デバイス的不同データ内容。

Modbus Poll中文用户手册(2023/08/01)版イラスト

这张照片表示了2つ打开的窗户。一次読み取り来自スレーブ id 1 的 10 レジスタを保持する。,另一次読み取り来自スレーブ id 2 的 10 レジスタを保持する。。

3.1. 随时随地提供帮助

按 F1即可取得与当前所选项目相关的主题的Contextより相关帮助。

SHIFT + F1调用特殊的“帮助モード”,其中光标变成帮助光标(箭头+问号)。然后,用户可以選択用户界面中的可见对象,例如菜单项、工具栏按钮或窗口。这将打开有关説明所选项目的主题的帮助。

3.2. 命名ユニット格

您可以在此处键入任何文本来指定值ユニット格。您还可以从 Excel ユニット格コピー/貼り付け文本。

3.3. 值ユニット格

表示 Modbus レジスタ的データ值。もし双击值ユニット格,将出现一个对话框,您可以将新值写入从デバイス。在值ユニット格中键入数字也会表示该对话框。可以選択用于値の書き込み的 Modbus Function。

“レスポンス成功时关闭对话框”复选框用于在成功送信值时自动关闭对话框。当要更改大量值时,这很方便。这样,可以快速選択新ユニット格,然后再次键入新值。

Modbus Poll中文用户手册(2023/08/01)版イラスト1

3.4. 更改字体

要更改字体,您有 2 个选项

  • 選択要更改的ユニット格,然后右クリック单击。
  • 選択要更改的ユニット格,然后菜单→表示→字体。
Modbus Poll中文用户手册(2023/08/01)版イラスト2

3.5. 条件颜色

条件颜色可帮助您直观地表示特定範囲内的值。3 种颜色選択

  • デフォルト颜色:もしない任何条件颜色計算结果为 true,则使用此颜色。
  • Rules 1:もし表达式的計算结果为 true,则使用此颜色選択。Rules 1 优先于ルール 2。
  • Rules 2:もし表达式的計算结果为 true,则使用此颜色選択。

7 比较运算符

  • 不曾用过
  • equal to
  • 比...更棒
  • 少于
  • 大于或等于
  • 小于或等于

当データ型为 float 或 32 位 long タイプ时,不能使用“and”运算符。もし選択“and”,则条件值将以十六进制数字形式入力。もしユニット格和条件值中的任何位均为 1,则其計算结果为 true。

3.5.1. 颜色サンプル

もしユニット格值介于 398 和 402 之间,则为绿色

Modbus Poll中文用户手册(2023/08/01)版イラスト3

3.6. Zoom

缩放可帮助您将元の值缩放为人类可读的值。缩放仅適用される記号付き。和符号なし。 16/32 ビット整数型。

Modbus Poll中文用户手册(2023/08/01)版イラスト4

(X1,Y1) 和 (X2,Y2)

穿过两点 (X1,Y1) 和 (X2,Y2) 的直线

Slope=m=Y2−Y1X2−X1

直线方程

Y=m⋅(X−X1)+Y1

精确小数点后的位数。使能够

必须有効才能缩放来自 Modbus Server/スレーブ的值。もし選択 16/32 ビット整数型表示格式以外的格式,则自动無効缩放。

3.7. 实时图表

该图表可以实时绘制 12 个系列,每个系列最多 100000 个点。

3.8. アドレス扫描

扫描アドレス範囲以取得デバイス中すべての有效アドレス的リスト。

3.9. 打开一个新窗口

要打开另一个窗口,您有 3 个选项:

  • 按 CTRL+N
  • 在文件菜单中選択新建
  • Modbus Poll中文用户手册(2023/08/01)版イラスト5工具栏上的

4. 连接对话框

要打开连接对话框,您有 2 个选项:

  • 按F3
  • 从连接菜单中選択连接
Modbus Poll中文用户手册(2023/08/01)版イラスト6

4.1. 联系

有 5 种不同的连接タイプ:

  1. 串行:
    経由串行线路的 Modbus。RS232 或 RS485。可以使用USB串行変換器です。。
  2. Modbus TCP/IP:
    もし要与 MODBUS TCP/IP 网络通信,Please select TCP/IP。在这种情况下,slave ID 与 MODBUS TCP/IP で使用する。的ユニット ID 相同。
    ポート番号デフォルト为 502。
    もし接続の失敗,请尝试在命令提示符下是否可以 ping 通あなたのデバイス。もし ping 命令失敗,则 Modbus ポーリング也会失敗。
  3. Modbus UDP/IP:
    もし要与 MODBUS UDP/IP 网络通信,Please select UDP/IP。这与 Modbus TCP/IP 相同,但使用无连接 UDP Protocol。
  4. TCP/IP 上的 Modbus RTU/ASCII:
    这是経由 TCP/IP 网络而ではない串行线路送信的 RTU 或 ASCII メッセージ。
  5. Modbus RTU/ASCII over UDP/IP:
    这是経由 UDP/IP 网络而ではない串行线路送信的 RTU 或 ASCII メッセージ。
连接タイプ 3-5 ではないwww.modbus.org指定的標準 Modbus ,但追加它们是为了方便。

根据あなたの選択,一些其他設定将呈灰色。

4.2. シリアルポート設定

使用这些参数来設定串行ポートの設定。仅当连接タイプ为“串行ポート”时它们才可用。モード

使用此选项選択RTUASCIIモード。デフォルト RTU。レスポンス·タイムアウト

指定 Modbus ポーリング在放弃之前应待機中从属デバイスレスポンス的时间長さ。デフォルト値为 1000 毫秒。ポーリング之间的最小延迟

无论扫描速率如何,此設定都可确保传输下一个リクエスト之前的最小延迟。该設定的分辨率约为15ms。在某些計算机上可以获得更好的分辨率,但并非すべて。

もし将此值設定为低于 20 毫秒,则无法保证レスポンス与新リクエスト之间的時間の間隔为 3.5 个文字。这是因为 Windows 调度程序每 10 - 20 毫秒切换一次任务。もし您在串行 RS485 网络中ポーリング多个スレーブ,则不应将该值設定为低于 20ms。这是为了确保 3.5 个文字的时间间隙。在 TCP/IP 网络中,less than 20 毫秒就可以了。仅与一台从デバイス的串行连接时间小于 20ms 即可。

用户ボーレート

もしデフォルトボーレート均无用,请指定自定义ボーレート。

4.3. 远程サーバー·サーバー

远程サーバー·サーバー設定仅在使用イーサネット(イーサネット)连接时可用。IPaddress

Server IP address。デフォルト为本地マスター 127.0.0.1港口

サーバー側。口号。デフォルト502接続タイムアウト

用于建立连接的最长时间。デフォルト 1000

4.4. エキスパート設定

即时战略切换

RTS 切换指定もしバイト可用于传输,则 RTS 线将为高电平。送信すべての缓冲バイト后,RTS 线将为低电平。
もしあなたの 232/485 変換器です。ない自动方向开关,则可以使用它来切换方向。

もし可能,应避免使用 RTS 控制的 RS232/RS485 Converters。对于Windows、Linux等非实时オペレーティングシステム,很难确定发射机关闭的具体时间。もし过早关闭,文字可能仍位于 FIFO 或 UART 的送信レジスタ中,并且这些文字将会丢失。因此スレーブ将認識できない该メッセージ。另一方面,もし关闭得太晚,则从デバイス的メッセージ会被损坏,并且主デバイス将認識できない该メッセージ。

数字SR

DSR 指定是否监视 DSR(データ集就绪)信号以进行出力フロー制御制。もし该成员为 TRUE 并且 DSR Close,则出力将暂停,直到再次送信 DSR。CTS

CTS 指定是否监视 CTS(クリア送信)信号以进行出力トラフィック控制。もし有効此复选框并且关闭 CTS,则出力将暂停,直到再次送信 CTS。数字TR

DTR 指定每当ポート打开时是否有効或無効 DTR。消除回声

もしあなたのデバイス或 RS232/RS485 変換器です。回显刚刚送信的文字。

5. 读/写定义

使用此命令定义活动窗口要监视的データ。

要打开读/写定义对话框,您有 3 个选项:

  • 按 F8
  • 从設定菜单中選択“读/写定义”
  • Modbus Poll中文用户手册(2023/08/01)版イラスト7工具栏上的
Modbus Poll中文用户手册(2023/08/01)版イラスト8

5.1. スレーブID

範囲 1 to 255。(MODBUS プロトコルの仕様规定为 247)。值 0 也可以直接与 MODBUS/TCP 或 MODBUS/UDP デバイス通信。

5.2. function code

您可以選択 8 个功能代码中的 1 个。

5.2.1. 読み取り功能

読み取り函数戻る的データ表示在网格窗口上。

  • 01:リードコイル(0x)
  • 02:Read discrete inputs (1x)
  • 03:Read and hold register(4x)
  • 04:Read input register(3x)

5.2.2. 编写函数

写入函数写入网格窗口上表示的データ。

  • 05:Write into a single coil(写入コイルの状態)
  • 06:Write to a single register(書き込み保持レジスタ)
  • 15:Write multiple coils(Writes to Coils)
  • 16:Write multiple registers(Writes to Holding registers)

5.3. address

Modbusプロトコル中的アドレス很混乱!一些プロトコルの仕様使用协议/メッセージアドレス,而其他プロトコルの仕様则使用デバイス寻址。

5.3.1. Protocol/メッセージアドレス

某些プロトコルの仕様使用从 0 to 65535 计数的协议/メッセージアドレス以及功能代码。这也是新的 Modbus 规范所使用的内容。这是経由线路送信的メッセージ中的アドレス。

Modbus Poll 使用从 0 to 65535 计数的协议/メッセージアドレス。

5.3.2. Device address

一些プロトコルの仕様使用デバイスアドレス/register。レジスタ从 1 开始计数。第一个数字説明要使用的功能。这意味着デバイスアドレス 40101 由アドレス 100 标识。“4”表示レジスタを保持する。和 4x レジスタ从 1 开始计数。更令人困惑的是:4x 表示功能代码 03,3x 表示功能代码 04!

5.3.3. 5 位与 6 位寻址

アドレス格式 4x 从 40001 计数到 49999。下一アドレスはこちら。ではない50000。在过去,9999 アドレスはこちら。就足够了。一部の情况下9999还不够。然后追加一个零。40101 变为 400101,依此类推。这称为 6 位寻址或扩展寻址。

这ではない Modbus ポーリング的問題。410001 变成 10000。“4”被丢弃,剩下的 10001 减 1,因为我们从 0 而ではない 1 开始计数。

5.3.4. アドレスサンプル

这些サンプル表示了もし规范使用デバイスアドレス,如何設定 Modbus ポーリング。

Read and hold register

您希望每 1000ms 从スレーブ ID 2 読み取りデバイスアドレス 40011 中的 20 Registers。从“4”我们知道这是功能03“Read and hold register”。

  • スレーブ ID = 2
  • Function =“03 Read and hold register (4x)”
  • address = 10(11 减 1)
  • Quantity = 20
  • 扫描率 = 1000
Read discrete inputs

您希望每 500ms 从スレーブ ID 5 読み取りアドレス 110201 的 1000 1つのコイル。从“1”我们知道这是功能02“Read discrete inputs”

  • スレーブ ID = 5
  • Function =“02 Read discrete inputs (1x)”
  • address = 10200 (10201 - 1)
  • Quantity = 1000
  • 扫描率 = 500

5.4. 扫描率

扫描速率可設定为 0 to 3600000ms。请注意,将扫描速率設定为低于トランザクション时间是ない意义的。もし使用 9600 ボーレート的串行连接并リクエスト 125 Registers,则トランザクション时间大约为 8 + 2 + 250 + 2 = 262ms + リクエスト和レスポンス之间的间隙(>3.5 个文字の時間)。在这种情况下,将扫描速率設定为 100ms 是ない意义的,因为トランザクション时间至少为 262ms + スレーブ延迟(间隙)+ ポーリング之间的最短时间。(在连接对话框 F3 中に設置。)。

5.5. 读/写無効

“读/写無効”复选框可用于临时有効或無効该窗口的通信。然后会表示文本(已無効)以及 Tx 和エラーカウンター·カウンター。

Modbus Poll中文用户手册(2023/08/01)版イラスト9
もし“读/写”被無効,您可以使用“读/写一次”按钮或按 F6 发出单个リクエスト。

Modbus Poll中文用户手册(2023/08/01)版イラスト10
“读/写一次”button

5.5.1. 出错时無効

发生エラー时無効读/写。

5.6. 非表示名称列

非表示すべての名称列。もし不使用它们,这可以方便地腾出もっと見る空间。

5.7. ユニット格中的アドレス

もし有効,アドレス也会表示在值ユニット格中,例如:2000 = 00000

Modbus Poll中文用户手册(2023/08/01)版イラスト11

5.8. PLC address(基アドレス 1)

此选项会将アドレス表示为デバイスアドレス。

Modbus Poll中文用户手册(2023/08/01)版イラスト12

5.9. 安然/丹尼尔·莫德

Enron 或 Enron/Daniels Modbus 是带有一些“供应商扩​​展”的標準 Modbus。这些扩展的确切影响取决于Contextより,但最も一般的な的 Modbus 命令按预期工作。有一些供应商定义的自定义函数可用 - 但很少有用户期望または使用它们。最大的影响与 32 ビット·データ值的读/写方式有关。

Enron-Modbus 定义了2つ特殊的 4x レジスタを保持する。範囲:

  • 假设 4x5001 to 4x5999 是 32 位长整数(すべてのレジスタ。 4 バイト単位。)。
  • 假设 4x7001 to 4x7999 是 32 位浮点(すべてのレジスタ。 4 バイト単位。)。

在 Modbus 処理中です 32 位值并ではない Enron-MB 所独有的。然而,Enron-MB 采取了有争议的步骤,即すべてのレジスタ。戻る 4 bytes,而ではない Modbus 规范中术语“レジスタを保持する。”所暗示的 2 bytes。这意味着 Enron-Modbus 中的レジスタ 4x5001 和 4x5002 ポーリング会戻る 8 bytes或2つ 32 ビット整数型,而標準 Modbus 只会戻る 4 bytes或一个 32 ビット整数型(被视为2つ 16 ビット整数型)。此外,Enron-MB 中的ポーリングレジスタ 4x5010 戻る第十个 32 位长整数,而標準 Modbus 会考虑此範囲内第五个 32 位长整数的 1/2。

5.10. 行数

指定您喜欢的网格中的行数。

6. 实时图表

使用此命令可在图表中实时绘制最多 12 个データ系列。
实时图表速度很快,能够在收到新データ后尽快绘制新线。

すべての图表設定都与工作区一起存储。保存/打开工作区

要打开实时图表对话框,您有 2 个选项:

  • 按 Alt + R
  • 从表示菜单中選択“实时图表”
Modbus Poll中文用户手册(2023/08/01)版イラスト13

X 轴表示自图表启动以来的秒数。

当点到达图表末尾时,有 3 个选项:

  • 结束时停止:图表停止。
  • 结束时重新启动:图表再スタート。。
  • 继续:继续,直到达到最大点数或按下停止按钮。

6.1. 設定

デフォルト情况下,すべての 12 个系列都链接到左侧 Y 轴。もし要将系列链接到右 Y 轴,请选中“右 Y 轴”复选框。指定

  • 颜色
  • 右 Y 轴
  • 标题。もし标题为空,则使用阅读窗口中的名称进行初期化
  • 抵消

表示

  • 文件名
  • address

偏移对于在同一 Y 轴上对齐データ点很有用。例如,0 或 1 的データ点可以偏移,这样它们就不会绘制在彼此之上。

Modbus Poll中文用户手册(2023/08/01)版イラスト14

6.2. 变焦功能

もし您想もっと見る>>詳細はこちら,放大图表会很有用。缩放由鼠标左键控制。要缩放图表的特定部分,只需左键单击图表(这将是缩放矩形的左上角)并拖动到右下角。将出现一个矩形。一旦释放鼠标按钮,轴就会自动调整到您選択的エリア。

もし您左键单击图表(例如开始缩放),但もし您移動到左上角,则使用缩放和平移功能完成的すべての修改都将被キャンセル(图表将处于原来的ステータス)在进行平移和缩放操作之前)。

6.3. 平移功能

要平移控件,请右クリック单击控件上的某处并移動鼠标。鼠标下方的点将跟随鼠标的移動。

除非将 Modbus データユニット链接到 12 个系列之一,否则图表不知道要使用哪些データ。为此,選択一个值ユニット格,然后从菜单→表示中選択“链接到图表”。

Modbus Poll中文用户手册(2023/08/01)版イラスト15

6.5. 出口系列

将系列データ保存する。磁盘或コピー到剪贴板。将データ直接貼り付け到 Excel 中以进行进一步処理。
尽管使用非逗号字段分隔符,但该文件仍具有 .csv 扩展名。

分隔符:選択分隔文本記事件中的值的文字。Copy/貼り付け到 Excel 使用するとき制表符分隔符。此外还给出了一些附加信息。

  • 点数
  • 最大分值
  • 最小分值
  • 平均分值
Modbus Poll中文用户手册(2023/08/01)版イラスト16

7. アドレス扫描

扫描アドレス範囲以取得デバイス中すべての有效アドレス的リスト。アドレス被逐一読み取り,読み取り结果以リスト形式表示。

扫描すべての 65535 アドレスはこちら。需要一些时间,具体取决于连接タイプ、サーバー·サーバーデバイス等。

7.1. 导出アドレス扫描

保存アドレス扫描データ到磁盘或コピー到剪贴板。将データ直接貼り付け到 Excel 中以进行进一步処理。
尽管使用非逗号字段分隔符,但该文件仍具有 .csv 扩展名。

分隔符:選択分隔文本記事件中的值的文字。Copy/貼り付け到 Excel 使用するとき制表符分隔符。

8. Display format

标记要格式化的ユニット格。从表示菜单中選択 28 种表示格式之一。

8.1. 本机 Modbus register

16 位 Modbus レジスタ可以以 4 种不同的モード表示。

  • 未签名
  • hexadecimal
  • ASCII - hexadecimal
  • binary

8.2. 32 ビット符号付き整数

它结合了 2 个 16 位 Modbus register。它可以以 4 种不同的字/バイト顺序表示。

  • 記号付き。整数 大尾数
  • 記号付き。整数 小尾数
  • 記号付き。整数ビッグエンディアンバイトスワップ
  • 記号付き。整数リトルエンディアンバイトスワップ例子バイト顺序:AB CD(ビッグエンディアン)
    十进制数 123456789 或十六进制数07 5B CD 15
    Modbus メッセージ中経由线路传输的顺序:07 5B CD 15

8.3. 32 ビット符号なし整数

它结合了 2 个 16 位 Modbus register。它可以以 4 种不同的字/バイト顺序表示。

  • 符号なし。整数 大尾数
  • 符号なし。整数 小尾数
  • 符号なし。整数 Big-endian バイトスワップ
  • 符号なし。整数リトルエンディアンバイトスワップ例子バイト顺序:AB CD(ビッグエンディアン)
    十进制数 123456789 或十六进制数07 5B CD 15
    Modbus メッセージ中経由线路传输的顺序:07 5B CD 15

8.4. 64 ビット符号付き整数

它结合了 4 个 16 位 Modbus register。它可以以 4 种不同的字/バイト顺序表示。

  • 記号付き。整数 大尾数
  • 記号付き。整数 小尾数
  • 記号付き。整数ビッグエンディアンバイトスワップ
  • 記号付き。整数リトルエンディアンバイトスワップ例子バイト顺序:AB CD EF GH(ビッグエンディアン)
    十进制数 -1,234,567,890,123,456,789 或十六进制数EE DD EF 0B 82 16 7E EB
    Modbus メッセージ中的线路顺序:EE DD EF 0B 82 16 7E EB

8.5。64 ビット符号なし整数

它结合了 4 个 16 位 Modbus register。它可以以 4 种不同的字/バイト顺序表示。

  • 符号なし。整数 大尾数
  • 符号なし。整数 小尾数
  • 符号なし。整数 Big-endian バイトスワップ
  • 符号なし。整数リトルエンディアンバイトスワップ例子バイト顺序:AB CD EF GH(ビッグエンディアン)
    十进制数 1,234,567,890,123,456,789 或十六进制数11 22 10 F4
    7D E9 81 15 Modbus メッセージ中的线路顺序:11 22 10 F4 7D E9 81 15

8.6。32位浮点

它结合了 2 个 16 位 Modbus register。它可以以 4 种不同的字/バイト顺序表示。

  • 浮点大尾数
  • 浮動小数点数小尾数
  • 浮点ビッグエンディアンバイトスワップ
  • 浮点リトルエンディアンバイトスワップ例子バイト顺序:AB CD(ビッグエンディアン)
    浮動小数点数 123456.00 或十六进制47 F1 20 00
    Modbus メッセージ中的线路顺序:47 F1 20 00

8.7. 64位双

它结合了 4 个 16 位 Modbus register。它可以以 4 种不同的字/バイト顺序表示。

  • 双大尾数
  • 双リトルエンディアン
  • 双ビッグエンディアンバイトスワップ
  • 双リトルエンディアンバイトスワップ例子バイト顺序:AB CD EF GH(ビッグエンディアン)
    浮動小数点数 123456789.00 或十六进制41 9D 6F 34 54 00 00 00
    Modbus メッセージ中的线路顺序:41 9D 6F 34 54 00 00 00

9. 保存/打开工作区

もし您打开许多相关的 Modbus 窗口,可以方便地在一个工作区中保存すべての打开和配列的 Modbus 窗口的当前布局的快照。

工作区 (*mbw) 是一个包含すべての打开窗口的表示信息和文件名的文件。ではない实际内容。为此,请转到“文件”→“保存工作区”。

连接和图表設定存储在工作区文件中。

当您打开工作区文件时,Modbus ポーリング会打开すべての Modbus 窗口并以您保存的布局表示它们。

10.导出为csv

将名称和值导出到逗号、分号或制表符分隔值文件。从文件对话框中選択

  • 逗号分隔值文件 (*.csv)
    "Temperature","19.7"
  • 分号分隔值文件 (*.csv)
    "Temperature";"19.7"
  • 制表符分隔值文件 (*.txt)
    temperature 19.7

根据あなたの系统,使用逗号或句点来分隔小数。

11. 导出到Modbus Slave

将名称、值和格式导出到 Modbus スレーブ文件。*.mbs

需要 Modbus Slave 版本 7.4.0 或更高版本才能打开该文件。

12. 测试中心

此测试对话框的目的是帮助 MODBUS スレーブデバイス开发人员使用自己组成的任何ストリング·ストリング来测试デバイス。
リスト框表示送信的データ以及受信的データ。
下拉リスト框中可以有多个测试ストリング·ストリング。入力ストリング·ストリング后,按“追加到リスト”button,该ストリング·ストリング就会追加到リスト中。
当按下“send”按钮时,将送信所选ストリング·ストリング。打开リスト

从文件中恢复测试ストリング·ストリング。保存リスト

将测试ストリング·ストリング存储到文件中。Clear

クリア测试リスト。追加到リスト

将当前测试ストリング·ストリング追加到リスト中。追加支票

将 CRC 或 LRC 追加到入力ストリング·ストリング的末尾。

使用测试中心时,您可能希望無効其他窗口的通信。选中“读/写定义”对话框中的“读/写無効”复选框。設定→读/写定义。

12.1。ASCII example

组合框中的ストリング·ストリング: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 对。

12.2. TCP/IP example

read 10 レジスタを保持する。。00 00 00 00 00 06 01 03 00 00 00 0A

前 6 个byteは TCP/IP 标头。

12.3。测试中心ストリング·ストリング文件

使用记事本或类似的文本編集器,您可以准备要在测试で使用する。的ストリング·ストリング。
文件中的最初の行必须是ストリング·ストリング“TestCenter”。这就是 Modbus Poll 知道文件格式正确的方式。按“打开リスト”打开準備して的文本記事件。

12.3.1. ストリング·ストリングリスト的内容

测试中心 3A 30 31 30 33 30 30 30 30 30 30 30 41 3A 30 32 30 33 30 30 30 30 30 30 30 41 3A 30 33 30 33 30 30 30 30 30 30 30 41

12.4。Copy

使用コピー按钮将选定的 Tx/Rx ストリング·ストリングコピー到剪贴板。
SHIFT 和 CTRL 键可与鼠标一起使用来選択和キャンセル選択ストリング·ストリング、選択ストリング·ストリング组以及選択不相邻的ストリング·ストリング。

在执行其他命令时保持此窗口打开。

13.ModbusData recording

您可以将データ記録到文本記事件或直接记录到 Microsoft Excel。

13.1. 文本記事件

从設定菜单中選択“日志”または使用快捷键:Alt+L

每个 Modbus 窗口都会记录到其单独的文本記事件中。

当您想要停止データ記録时,请在設定菜单上選択注销命令。

Modbus Poll中文用户手册(2023/08/01)版イラスト17

13.1.1. 记录率

每读

为すべての Modbus リクエスト编写日志行。将频率记录为扫描速率。Choice

指定日志速率(以秒为単位)。与扫描速率无关。

例如,もし扫描速率为 10000 毫秒,则設定 1 秒的记录速率是ない意义的,因为仅当新データ准备就绪时才会记录データ。

13.1.2. 分隔符

作为分隔符,您可以使用以下选项之一:固定宽度

意味着值按列组织。逗号

值以逗号分隔。Tags

值由制表符分隔。

13.1.3。仅当データ发生更改时才记录

指定仅当自上次日志以来有任何データ更改时才写入新的日志行。

13.1.4。记录エラー

指定记录タイムアウト等エラー。

13.1.5。记录日期

指定将当前日期追加到日志时间中。

13.1.6。使用“T”作为分隔符

指定时间和日期由 ISO 8601 中指定的字母“T”分隔。

13.1.7。记录毫秒

指定将毫秒追加到日志时间中。

13.1.8。日志アドレス

指定将 Modbus アドレス追加到日志中。

13.1.9。按下“确定”后开始记录

指定按下确定按钮时开始记录。否则,日志設定仅在保存 *mbp 文件时存储。

13.1.10。*mbp 打开时启动日志

指定打开 *.mbp 文件时自动启动ジャーナル·レコード。

13.1.11。立即冲入档案

这确保日志行不会被缓存到文件系统中,而是立即以物理方式写入。

13.1.12。附加

指定将日志附加到所选文件。否则会作成一个新文件。

13.1.13。午夜新日志文件

关闭当前日志文件并在午夜启动新文件。时间戳会追加到あなたの文件名中。

13.1.14。标头信息

  • 插入标题:信息插入到日志文件的顶部。
    • 顶行中的名称ユニット格:插入名称。
    • 投票定义:插入 ID、功能等。
    • Name:插入日志的名称。

固定宽度的文本記事件サンプル: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 電子表格中的データ。

13.2. 微软Excel

此功能需要インストール Microsoft Excel。Excel 2003 日志限制为 65535 条日志,因为这是 Excel 工作表中的最大行数。Excel 2007 或更高版本仅限于 1,048,576 行。每个 Modbus 窗口都会记录到其单独的 Excel 工作表中。

从設定菜单中選択 Excel Log または使用快捷键:Alt+X

记录时请勿触摸 Excel 工作表,因为这会中断记录。

Modbus Poll中文用户手册(2023/08/01)版イラスト18

13.2.1. 记录率

  • 每次読み取り:为すべての Modbus リクエスト写入日志行。将频率记录为扫描速率。
  • Choice:指定日志速率(以秒为単位)。日志与扫描速率无关。
    備考:もし扫描速率为 10000ms,则設定 1 秒的记录速率是ない意义的,因为仅当新データ準備して时才会记录データ。
  • 停止时间:指定日志行数。请注意,Excel 2003 限制为 65,536 行,Excel 2007 限制为 1,048,576 行。

13.2.2. 标头信息

  • 插入标题:信息插入到 Excel 工作表的最上面 3 行。
    • 顶行中的ユニット格名称:在第 3 行中插入名称。
    • 投票定义:在第 2 行插入 ID、功能等。
    • Name:在第 1 行插入日志名称。
Modbus Poll中文用户手册(2023/08/01)版イラスト19

带有标题信息的 Excel 日志。

14.通讯トラフィック

選択菜单“表示”→“通讯”以表示串行线路或イーサネット(イーサネット)电缆上的トラフィック。使用停止按钮暂时停止更新以进行チェック。

使用コピー按钮将所选行コピー到剪贴板。

该窗口仅表示経由 Modbus Poll 送信和受信的データ。您不能将其用作データ嗅探器。
在执行其他命令时保持此窗口打开。

15.OLE/自動化

自動化(以前称为 OLE 自動化)使一个应用程序可以操作另一应用程序実現しました的对象。

自動化クライアント側は是一个可以操作属于另一个应用程序的公开对象的应用程序。这也称为自動化コントローラーは。

自動化サーバーは、向其他应用程序公开可プログラミング对象的应用程序。Modbus Poll是一个自動化サーバー·サーバー。

这意味着您可以使用任何サポートVBA(Visual Basic for Applications)的程序(例如Visual Basic、Excel等)根据あなたの具体要求解释和表示modbusdata。

15.1. Excel example

当您想要编写宏时,您应该表示“开发人员”タブ或在开发人员モード下运行。

15.1.1. Excel 2007

Modbus Poll中文用户手册(2023/08/01)版イラスト20
  1. 单击 Microsoft Office button,然后单击 Excel 选项。
  2. 单击“流行”,然后选中“在功能区中表示开发人员タブ”复选框。
    请注意,功能区是 Microsoft Fluent 用户界面的一部分。

15.1.2. Excel 2010、2016

  1. 单击文件タブ。
  2. 单击选项。Excel 选项窗口将打开。
  3. 在左侧窗格中单击“自定义功能区”。
  4. 在右侧窗格的“主タブ”下,选中“开发人员”复选框。
  5. 单击“确定”。“开发人员”タブ现在应该表示在功能区中(最右侧的タブ)。

15.1.3。Excel サンプルコード

此サンプル打开2つ窗口。一个読み取りレジスタ,另一个リードコイル。
Modbus ポーリング是非表示的,但您可以経由キャンセル注释“ShowWindow”行来表示它。这将表示其中一个窗口。

Modbus ポーリングインストール中还包含一个サンプル。
开始 → すべての程序 → Modbus ポーリング → Excel exampleExcel VBA example

Public doc1 As Object
Public doc2 As Object
Public app As Object
Dim res As Integer
Dim n As Integer

Private Sub StartModbusPoll_Click()
   Set app = CreateObject("Mbpoll.Application")
   Set doc1 = CreateObject("Mbpoll.Document")
   Set doc2 = CreateObject("Mbpoll.Document")
' Read 10 Holding Registers every 1000ms
   res = doc1.ReadHoldingRegisters(1, 0, 10, 1000)
' Read 10 Coil Status every 1000ms
   res = doc2.ReadCoils(1, 0, 10, 1000)
' doc1.ShowWindow()
   app.Connection = 1 ' Modbus TCP/IP
   app.IPAddress = "127.0.0.1" ' local host
   app.ServerPort = 502
   app.ConnectTimeout = 1000
   res = app.OpenConnection()
End Sub

Private Sub Read_Click()
   Cells(5, 7) = doc1.ReadResult() 'Show results for the requests
   Cells(6, 7) = doc2.ReadResult()

   For n = 0 To 9
      Cells(5 + n, 2) = doc1.SRegisters(n)
   Next n

   For n = 0 To 9
      Cells(18 + n, 2) = doc2.Coils(n)
   Next n
End Sub

15.2. Pythonexample

此 Python サンプル打开一个窗口并設定すべての可能的データ格式。Python example

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('Mbpoll.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("Mbpoll.Document")

# Read 100 holding registers from slave ID 1, address 0 (40001) every 1000ms
Win1.ReadHoldingRegisters(1, 0, 100, 1000)
# 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
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")

# Refresh
Win1.EnableRefresh = True

Win1.ResizeAllColumns ()
Win1.ResizeWindow()

result = Win1.Save("C:\Users\UserName\Desktop\testfile.mbp")
print (result)

print (Win1.GetName(1))

_ = input("Press ENTER to quit:")

15.3。连接功能/属性

以下属性和功能与您在连接对话框 (F3) 中的設定相同。

15.3.1。联系

连接選択所需的连接。可以選択串行ポート或イーサネット(イーサネット)连接之一。

属性connect为整数有效值

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

15.3.2. Baud rate

仅適用される连接 = 0

属性BaudRate as Long有效值

300
600
1200
2400
4800
9600(デフォルト)
14400
19200
38400
56000
57600
115200
128000
153600
230400
256000
460800
921600例子

BaudRate = 9600

15.3.3。data bit

仅適用される连接 = 0

属性DataBits作为整数有效值

7
8(デフォルト)
例子

DataBits = 8

15.3.4。平价

仅適用される连接 = 0

财产平价作为整数有效值

0 = 无
1 = 奇数
2 = 偶数(デフォルト)
例子

Parity = 2

15.3.5。stop bit

仅適用される连接 = 0

属性StopBits作为整数有效值

1(デフォルト)
2
例子

StopBits = 1

15.3.6。串行ポート

仅適用される连接 = 0

属性SerialPort作为整数有效值

1…255

デフォルト値 = 1例子

SerialPort = 1

15.3.7。モード

仅適用される连接 = 0

属性モード为整数有效值

0 = RTU モード
1 = ASCII モード
例子

Mode = 1

15.3.8。削除回声

仅適用される Connection = 0
もしあなたのデバイス或 RS232/RS485 変換器です。回显刚刚送信的文字。

属性RemoveEcho as Integer有效值

0(デフォルト)
1(消除回声)
例子

RemoveEcho = 1

15.3.9。レスポンス·タイムアウト

ResponseTimeout 指定 Modbus ポーリング在放弃之前应待機中从属デバイスレスポンス的时间長さ(以毫秒为単位)。

属性ResponseTimeout作为整数有效值

50…100000

デフォルト値 = 1000例子

ResponseTimeout = 1000

15.3.10。ポーリング之间的延迟

属性DelayBetweenPolls作为 Integer有效值

0…1000

デフォルト値 = 20例子

DelayBetweenPolls = 20

15.3.11. サーバー側。口

仅適用される连接 = 1…4

属性ServerPort为 Long有效值

0…65535

デフォルト値 = 502例子

ServerPort = 502

15.3.12. 接続タイムアウト

ConnectTimeout 指定 Modbus ポーリング应待機中 TCP/IP 接続成功です。的时间長さ。

仅適用される连接 = 1…4

属性ConnectTimeout作为 Integer有效值

100…30000 毫秒

デフォルト値 = 1000 毫秒例子

ConnectTimeout = 1000

15.3.13。IP版本

仅適用される连接 = 1…4

属性IPVersion作为整数有效值

4 = IP 版本 4(デフォルト)
6 = IP 版本 6
例子

IPVersion = 4

15.3.14。开放连接

打开使用“connect”属性選択的连接。

函数OpenConnection () 作为整数参数

该函数ない参数。戻り値は

对于エラー3-5:请チェック您是否インストール了最新的シリアルポート驱动。

ErrorDescription
0成功
1シリアルポート不可用
3串行ポート。无法从ポート驱动程序取得当前設定。
4串行ポート。串行ポート驱动程序不接受ポートの設定。
5串行ポート。串行ポート驱动程序不接受タイムアウトの設定。
12TCP/UDP 接続の失敗。WSA启动
13TCP/UDP 接続の失敗。连接エラー
14TCP/UDP 接続の失敗。暂停
15TCP/UDP 接続の失敗。IOCTL
17 No.TCP/UDP 接続の失敗。套接字エラー
21TCP/UDP 接続の失敗。アドレス信息
255连接オープンしました

如何打开 Modbus TCP/IP 连接的 Excel example

Public app As Object
Dim res As Integer
' Create an object to Modbus Poll
Set app = CreateObject("Mbpoll.Application")
app.Connection = 1 ' Select Modbus TCP/IP
app.IPVersion = 4
app.IPAddress = "192.168.1.27"
app.ServerPort = 502
app.ConnectTimeout = 1000
app.ResponseTimeout = 1000
res = app.OpenConnection()

Python サンプル如何設定串行连接

import win32com.client as win32

App = win32.Dispatch('Mbpoll.Application')

App.Connection = 0            # Serial connection
App.SerialPort = 3            # Com port 3
App.BaudRate = 9600           # 9600 baud
App.Parity = 0                # None parity
App.Mode = 0                  # RTU mode
App.ResponseTimeout = 1000    # Wait 1000ms until give up
App.DelayBetweenPolls = 20    # Ensure minimum 20 ms gap until next request
App.OpenConnection

#Create a Modbus display window called Win1
Win1 = win32.Dispatch("Mbpoll.Document")

# Read 10 holding registers from slave ID 1, address 0 (40001) every 1000ms
Win1.ReadHoldingRegisters(1, 0, 10, 1000)
# Show the Modbus window
Win1.ShowWindow()
# Show 10 rows
Win1.Rows(0)

# Disable refresh for speed
Win1.EnableRefresh = False

# Set the name of the registers
Win1.SetName(0, "Register 0")

# Set the value to write
Win1.EnableRefresh = True

Win1.ResizeAllColumns ()
Win1.ResizeWindow()

_ = input("Press ENTER to quit:")

15.3.15。接続を閉じる

函数CloseConnection () As Integerparameter

该函数ない参数。戻り値は

もし成功则为零。もし失敗则非零值。

15.3.16。表示通讯交通

表示通信トラフィック窗口。

函数ShowCommunicationTraffic ()parameter

该函数ない参数。戻り値は

ない任何

15.3.17。关闭通讯交通

关闭通信トラフィック窗口(もし表示)。

函数CloseCommunicationTraffic ()parameter

该函数ない参数。戻り値は

ない任何

15.4。読み取り函数

以下功能与您在读/写定义对话框 (F8) 中に設置。的功能相同。読み取り功能与 Modbus ポーリングドキュメント关联。(有データ的窗口)例子

' First a Modbus Poll document is needed.
Public doc As Object

Set doc = CreateObject("Mbpoll.Document")
res = doc.ReadCoils(1, 0, 100, 1000) ' Read 100 coils every 1000ms
您まず必要です。作成読み取り,然后才能使用属性取得データ。

15.4.1. リードコイル

Modbusfunction code01

Function ReadCoils (SlaveID As Integer, Address As Long, Quantity As Integer, ScanRate As Long) As Integerparameter

SlaveID:スレーブアドレス 1 to 255
address:データアドレス(基址 0)
Quantity:データ数量。1 to 2000
扫描速率: 0 to 3600000ms戻り値は

もし成功则为真。もしない成功则为假

15.4.2. Read discrete inputs

Modbus功能代码02

Function ReadDiscreteInputs (SlaveID As Integer, Address As Long, Quantity As Integer, ScanRate As Long) As Integerparameter

SlaveID:スレーブアドレス 1 to 255
address:データアドレス(基址 0)
Quantity:データ数量。1 to 2000
扫描速率: 0 to 3600000ms戻り値は

もし成功则为真。もしない成功则为假

15.4.3。読み取り持有レジスタ

Modbus功能代码03

Function ReadHoldingRegisters (SlaveID As Integer, Address As Long, Quantity As Integer, ScanRate As Long) As Integerparameter

SlaveID:スレーブアドレス 1 to 255
address:データアドレス(基址 0)
Quantity:データ数量。1 to 125
扫描速率: 0 to 3600000ms戻り値は

もし成功则为真。もしない成功则为假

15.4.4。read input registers

Modbus 功能代码 04

Function ReadInputRegisters (SlaveID As Integer, Address As Long, Quantity As Integer, ScanRate As Long) As Integerparameter

SlaveID:スレーブアドレス 1 to 255
address:データアドレス(基址 0)
Quantity:データ数量。1 to 125
扫描速率: 0 to 3600000ms戻り値は

もし成功则为真。もしない成功则为假

15.5。自动写入功能

写入函数将存储在由属性填充的配列中的值写入。下面的 Write 函数不作成データ窗口。要作成データ窗口,请使用 Win 函数,例如WriteMultipleRegistersWin

15.5.1。シングルコイルを書く。

Modbus 功能代码 05。
写入存储在写入配列中的第一1つのコイル。

Function WriteSingleCoil (SlaveID As Integer, Address As Long) As Integerparameter

SlaveID:スレーブアドレス 0 to 255
address:データアドレス(基址 0)戻り値は

もし写入配列已準備して并且データ已送信,则为 True。もし配列为空或参数エラー,则戻る False。
控制应用程序负责経由读回写入的值来验证写入操作。

15.5.2。write single register

Modbus 功能代码 06。
写入写入配列中存储的第一1つのレジスタ。

Function WriteSingleRegister (SlaveID As Integer, Address As Long) As Integerparameter

SlaveID:スレーブアドレス 0 to 255
address:データアドレス(基址 0)戻り値は

もし写入配列已準備して并且データ已送信,则为 True。もし配列为空或参数エラー,则戻る False。
控制应用程序负责経由读回写入的值来验证写入操作。

15.5.3。Write multiple coils

Modbus 功能代码 15.
写入存储在写入配列中的コイル。

Function WriteMultipleCoils (SlaveID As Integer, Address As Long, Quantity As Integer) As Integer戻り値は

もし写入配列已準備して并且データ已送信,则为 True。もし配列为空或参数エラー,则戻る False。
控制应用程序负责経由读回写入的值来验证写入操作。parameter

SlaveID:スレーブアドレス 0 to 255
address:データアドレス(基址 0)数量データ的数量
1 to 1968 year

15.5.4。Write multiple registers

Modbus 功能代码 16.
写入写入配列中存储的レジスタ。

Function WriteMultipleRegisters (SlaveID As Integer, Address As Long, Quantity As Integer) As Integerparameter

SlaveID:スレーブアドレス 0 to 255
address:データアドレス(基址 0)
Quantity:データ数量。1 to 123戻り値は

もし写入配列已準備して并且データ已送信,则为 True。もし配列为空或参数エラー,则戻る False。
控制应用程序负责経由读回写入的值来验证写入操作。

15.5.5。Pythonexample

Python サンプル如何作成一个住所から。 0 (40001) read 10 Registers,然后写入 5 1つのレジスタ的窗口。Pythonexample

import sys
import time
import win32com.client as win32

App = win32.Dispatch('Mbpoll.Application')

App.Connection = 1            # TCP/IP connection
App.IPAddress = "127.0.0.1"

App.ResponseTimeout = 1000    # Wait 1000ms until give up
App.DelayBetweenPolls = 20    # Ensure minimum 20 ms gap until next request
App.ConnectTimeout = 500      # Wait 500ms until give up

App.ServerPort = 502
result = App.OpenConnection

if result != 0:
   print("Connection failed. Error: ", result)
   sys.exit()

#Create a Modbus display window called Win1
Win1 = win32.Dispatch("Mbpoll.Document")

# Read 10 holding registers from slave ID 1, address 0 (40001) every 1000ms
Win1.ReadHoldingRegisters(1, 0, 10, 1000)
# Show the Modbus window
Win1.ShowWindow()
# Show 10 rows
Win1.Rows(0)
# Resize the window to fit to the grid
Win1.ResizeWindow()

time.sleep(1.0) # Wait until read is done

if Win1.ReadResult == 0:    # Check read result
   print("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 write
Win1.SRegisters(0, 1)   # Note that parameter 1 is not a
Win1.SRegisters(1, 10)  # Modbus address but an index to the array
Win1.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 window
Win1.WriteMultipleRegisters (1, 0, 5)

_ = input("Wait for write Press ENTER:")

if Win1.WriteResult == 0:    # Check write result
   print("Modbus write success")
else:
   print("Write failed error: = ", WriteResult)

_ = input("Press ENTER to quit:")

15.6。多种功能

各种功能与 Modbus ポーリングドキュメント相关联。(有データ的窗口)

15.6.1。橱窗表示

デフォルト情况下,Modbus documentation窗口是非表示的。ShowWindow 功能使 Modbus Poll 可见并表示带有データ内容的ドキュメント。

函数表示窗口()parameter

该函数ない参数。戻り値は

ない任何

15.6.2。取得送信计数

取得リクエスト数。

函数GetTxCount () 只要参数

该函数ない参数。戻り値は

リクエスト的数量。

15.6.3。取得受信计数

取得レスポンス数。

函数GetRxCount () 只要参数

该函数ない参数。戻り値は

レスポンス数。

15.6.4。取得名称

取得值的名称。

函数GetName(索引为整数)作为ストリング·ストリング参数

索引:索引0对应第一个Modbusaddress。戻り値は

名字。

15.6.5。設定名称

更改值的名称。函数SetName(索引为整数,名称为ストリング·ストリング)parameter

索引:索引0对应第一个Modbusaddress。
Name:值ユニット格的名称。戻り値は

ない任何

15.6.6。すべて格式化

使用所选格式設定すべての值ユニット格的格式。

函数FormatAll(格式化为整数)parameter

format:值ユニット格的格式。戻り値は

ない任何

15.6.7。取得格式

取得Modbus值的表示格式。

函数GetFormat(索引为整数)作为整数参数

索引:索引0对应第一个Modbusaddress。
戻り値は

IDformat
0
1未签名
2hexadecimal
3binary
4浮点リトルエンディアンバイトスワップ
5浮点大尾数
6双リトルエンディアンバイトスワップ
7双ビッグエンディアン
832 位記号付き。リトルエンディアンバイトスワップ
932 位記号付き。大尾数
10浮動小数点数小尾数
11浮点ビッグエンディアンバイトスワップ
12双小尾数
13双ビッグエンディアンバイトスワップ
1432 位記号付き。リトルエンディアンバイトオーダー
1532 位記号付き。ビッグエンディアンバイトスワップ
17 No.32 ビット符号なしビッグエンディアンバイトオーダー
1832 ビット符号なしリトルエンディアンバイトスワップ
1932 ビット符号なしビッグエンディアンバイトスワップ
2032 ビット符号なしリトルエンディアンバイトオーダー
2164 位記号付き。大尾数
2264 位記号付き。リトルエンディアンバイトスワップ
2364 位記号付き。ビッグエンディアンバイトスワップ
2464 位記号付き。リトルエンディアンバイトオーダー
2564 ビット符号なしビッグエンディアンバイトオーダー
2664 ビット符号なしリトルエンディアンバイトスワップ
2764 ビット符号なしビッグエンディアンバイトスワップ
2864 ビット符号なしリトルエンディアンバイトオーダー
此設定仅用于表示。使用 Get/Set 值函数时,您仍然需要使用 byteOrder 来取得正确的バイト顺序。

15.6.8。設定格式

更改 Modbus 值的表示格式。请参阅上面的格式值。

函数SetFormat(索引为整数,格式为整数)parameter

索引:索引0对应第一个Modbusaddress。
format:值ユニット格的格式。戻り値は

ない任何

15.6.9。调整窗口大小

调整打开的窗口的大小以适合网格。

函数调整窗口大小()parameter

该函数ない参数。戻り値は

ない任何

15.6.10。调整すべての列的大小

调整すべての列的大小以适合ユニット格内的值。

函数调整すべての列的大小()parameter

该函数ない参数。戻り値は

ない任何

15.6.11。行数

指定网格中的行数。

函数(NumberRows)parameter

NumberRows:网格中的行数。

IDDescription
010 行(デフォルト)
120 行
250 行
3100 行
4适合数量

戻り値は

ない任何

15.6.12。読み取り结果

使用此属性可チェック経由 Read 建立的通信是否运行成功。

属性将结果read为整数参数

该函数ない参数。戻り値は

ErrorDescription
0成功
1タイムアウトエラー
2CRCError
3レスポンスエラー(レスポンスではない预期的スレーブ ID、功能或アドレス)
4写入エラー
5読み取りエラー
6ポート未打开エラー
10データ未初期化
11收到的Bytesの数不足
16バイト计数エラー
19交易IDError
81小时非法职能
82小时Illegal data address
83小时Illegal data value
84小时サーバー·サーバー機器の故障
85小时承认
86小时サーバー·サーバーデバイス繁忙
87小时NAK-否定確認
8安时Gateway path unavailable
8Bhゲートウェイ目标デバイス无法レスポンス

15.6.13。写入结果

使用此函数チェック写入是否成功。
该值一直为 DATA_UNINITIALIZED,直駅から。的结果可用为止。请参阅ReadResult以取得可能值的リスト。

属性WriteResult As Integer戻り値は

以整数形式戻る写入结果。

15.6.14。节省

保存当前窗口。函数Save (PathName As String) As Booleanparameter

PathName:文件应保存する。的完全限定路径。戻り値は

布尔值例子

' First a Modbus Poll document is needed.
Public doc As Object

Set doc = CreateObject("Mbpoll.Document")
res = doc.ReadCoils(1, 0, 100, 1000) ' Read 100 coils every 1000ms
res = doc.Save("C:\Users\UserName\Desktop\testfile.mbp")

15.7。自動化データ属性

以下属性用于在 Modbus Poll 中に設置。或取得内部写入/読み取り配列中的值。使用的索引ではない Modbus address。无论使用什么アドレス,索引始终从 0 开始计数。データ属性与 Modbus ポーリングドキュメント关联。(有データ的窗口)

每个データ属性有 2 个版本:

  • ない后缀的一种,例如SRegisters,用于从内部写/读配列設定或取得值。
  • 一种以 Win 作为后缀,例如SRegistersWin,用于直接从データ窗口設定或取得值。当データ窗口用于写入函数(例如WriteMultipleRegistersWin )时,将使用此功能。

example1:

' doc is assumed created first. See Excel example.
' Writes 1 to index 0 in the data array used for the Write function later
doc.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 created
res = 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 Poll
res = doc. WriteMultipleRegisters(1, 0, 6)
' 6 Registers are written as a floating point value is 32 bit wide.

example 3:
作成一个写入 3 1つのレジスタ的窗口。

' doc is assumed created first. See Excel example.
' A window is created that writes the content every 1000ms
res = doc.WriteMultipleRegistersWin(1, 100, 3, 1000)
' Writes 1 to the first cell in the data window
doc.SRegistersWin(0) = 1
doc.SRegistersWin(1) = 10
doc.SRegistersWin(2) = 1234
' Now the 3 registers are written to slave id 1 address 100 every 1000ms

15.7.1。コイル、コイルWin

属性コイル(索引为整数)为整数説明

在写入配列構造中に設置。一1つのコイル或从読み取り配列中戻る一1つのコイル。句法

コイル(索引)[=新值]

15.7.2。SRegisters、SRegistersWin

属性SRegisters(索引为整数)为整数説明

在写入配列構造中に設置。レジスタ或从読み取り配列中戻るレジスタ。句法

SRegisters(索引)[=新值]

15.7.3。URegisters、URegistersWin

属性URegisters(索引为整数)只要説明

在写入配列構造中に設置。レジスタ或从読み取り配列中戻るレジスタ。句法

URegisters(索引)[=新值]

15.7.4。Ints_32、Ints_32Win

属性Ints_32(索引为整数)为 DoubleDescription

在写入配列構造中に設置。一个 32 ビット整数型,或从読み取り配列中戻る一个整数。句法

Ints_32(索引)[=新值]

15.7.5。UInts_32、UInts_32Win

属性UInts_32(索引为整数)为 DoubleDescription

在写入配列構造中に設置。一个 32 ビット符号なし整数,或从読み取り配列中戻る一个符号なし。整数。句法

UInts_32(索引)[=新值]

15.7.6。Ints_64、Ints_64Win

属性Ints_64(索引为整数)为 DoubleDescription

在写入配列構造中に設置。一个 64 ビット整数型,或从読み取り配列中戻る一个整数。句法

Ints_64(索引)[=新值]

15.7.7。UInts_64、UInts_64Win

属性UInts_64(索引为整数)为 DoubleDescription

在写入配列構造中に設置。一个 64 ビット符号なし整数,或从読み取り配列中戻る一个符号なし。整数。句法

UInts_64(索引)[=新值]

15.7.8。花车,花车赢

属性浮动(索引为整数)为单个説明

在写入配列構造中に設置。一个浮動小数点数或从読み取り配列中戻る一个浮動小数点数。句法

浮動小数点数(索引)[=新值]

15.7.9。双打、双打获胜

属性双精度(索引为整数)为双精度説明

在写入配列構造中に設置。双精度值或从読み取り配列中戻る双精度值。句法

双打(索引)[=新值]

15.7.10。byte order

属性ByteOrder作为整数説明

設定 Ints_32、UInts_32、Ints_64、UInts_64、Floats 和 Doubles 属性使用的バイト顺序。
Win 版本不使用此属性ByteOrder

IDbyte order
0大尾数(デフォルト)
1リトルエンディアンバイトスワップ
2ビッグエンディアンバイトスワップ
3小尾数法

Ints_32 example:
byte order:Big-endian
十进制数 123456789 或十六进制数 07 5B CD 15
Modbus メッセージ中経由线路传输的顺序:07 5B CD 15句法

byte order[=新值]

15.8。编写函数(作成データ窗口)

以下功能与您在读/写定义对话框 (F8) 中に設置。的功能相同。
该函数作成一个データ窗口,并根据扫描速率写入データ窗口中的データ内容。

15.8.1。シングルコイルを書く。赢

Modbus 功能代码 05。

Function WriteSingleCoilWin (SlaveID As Integer, Address As Long, ScanRate As Long) As Integerparameter

SlaveID:スレーブアドレス 1 to 255
address:データアドレス(Base 0)
扫描速率: 0 to 3600000ms戻り値は

もし成功则为真。もしない成功则为假

15.8.2。単一レジスタの書き込みWin

Modbus 功能代码 06。

Function WriteSingleRegisterWin (SlaveID As Integer, Address As Long, ScanRate As Long) As Integerparameter

SlaveID:スレーブアドレス 1 to 255
address:データアドレス(Base 0)
扫描速率: 0 to 3600000ms戻り値は

もし成功则为真。もしない成功则为假Python サンプル如何打开一个窗口并每 1000 毫秒写入一1つのレジスタ

import win32com.client as win32

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 Win1
Win1 = win32.Dispatch("Mbpoll.Document")

# Write 1 holding registers to slave ID 1, address 0 (40001) every 1000 ms
Win1.WriteSingleRegisterWin(1, 0, 1000)
# Show the Modbus window
Win1.ShowWindow()

# Fit rows to quantity
Win1.Rows(4)

# Disable refresh for speed
Win1.EnableRefresh = False

# This sets how the value is displayed
Win1.SetFormat(0, SIGNED)

# Set the Name of the register
Win1.SetName(0, "Setting")

# Set the value to write
Win1.SRegistersWin(0, 100)
Win1.EnableRefresh = True

Win1.ResizeAllColumns ()
Win1.ResizeWindow()

_ = input("Press ENTER to quit:")

15.8.3。Write multiple coilsWin

Modbus 功能代码 15。

Function WriteMultipleCoilsWin (SlaveID As Integer, Address As Long, Quantity As Integer, ScanRate As Long) As Integerparameter

SlaveID:スレーブアドレス 1 to 255
address:データアドレス(基址 0)
Quantity:データ数量。1 to 1968
扫描速率: 0 to 3600000ms戻り値は

もし成功则为真。もしない成功则为假

15.8.4。Write multiple registersWin

Modbus 功能代码 16。

Function WriteMultipleRegistersWin (SlaveID As Integer, Address As Long, Quantity As Integer, ScanRate As Long) As Integerparameter

SlaveID:スレーブアドレス 1 to 255
address:データアドレス(基址 0)
Quantity:データ数量。1 to 123
扫描速率: 0 to 3600000ms戻り値は

もし成功则为真。もしない成功则为假

16. 異常和エラーメッセージ

Modbus 異常和エラーメッセージ以红色文本表示在每个窗口的2行目

Modbus Poll中文用户手册(2023/08/01)版イラスト21

16.1. Modbus 異常代码

Modbus 異常是从从デバイス戻る的エラー。

代码Name意义
01Illegal function查询中收到的功能代码ではないサーバー·サーバー(或スレーブ)允许的操作。这可能是因为该功能代码仅適用される较新的デバイス,并且未在所选デバイス実現しました。它还可能表明サーバー·サーバー(或从属デバイス)处于処理此类リクエスト的エラーステータス,例如因为它未設定并且被要求戻るレジスタの値。
02Illegal data address查询中收到的データアドレスではないサーバー·サーバー允许的アドレス。更具体地,参照编号和传損失の長さ的组合是无效的。对于有 100 1つのレジスタ的コントローラーは,PDU 将第一1つのレジスタ寻址为 0,最后一1つのレジスタ寻址为 99。もし送信的リクエスト的起始レジスター·アドレス为 96,レジスタの数为 4,则该リクエスト将成功运行(至少按アドレス)在レジスタ 96、97、98、99 上。もし送信的リクエスト的起始レジスター·アドレス为 96,レジスタの数为 5,则该リクエスト将失敗,并出现異常代码 0x02“Illegal data address”因为它尝试对レジスタ 96、97、98、99 和 100 进行操作,但不存在アドレス为 100 的レジスタ。
03違法なデータ价值查询データ字段中包含的值ではないサーバー·サーバー(或スレーブ)允许的值。这表明复杂リクエスト的其余部分的構造存在エラー,例如隐含の長ささ不正确。具体来说,这并不意味着送信存储在レジスタ中的データ项具有应用程序预期之外的值,因为 MODBUS 协议不知道任何特定レジスタ的任何特定值的重要性。
04サーバー·サーバー機器の故障Server(或从属サーバー·サーバー)尝试执行リクエスト的操作时发生不可恢复的エラー。
05承认专门与プログラミング命令结合使用。
Server(或スレーブ)已接受リクエスト并処理中です。它,但需要很长时间才能完成此操作。戻る此レスポンス是为了防止クライアント側は(或マスター)发生タイムアウトエラー。クライアント側は(或マスター)接下来可以发出ポーリング程序完成メッセージ以确定処理是否完成。
06サーバー·サーバーデバイスビジー专门与プログラミング命令结合使用。
Server(或スレーブ)処理中です。长时间的程序命令。当サーバー·サーバー(或スレーブ)暇なとき,クライアント側は(或マスター)应稍后重新传输メッセージ。
0AGateway path unavailable专门与ゲートウェイ结合使用,表示ゲートウェイ无法分配从入力ポート到出力ポート的内部通信路径来処理リクエスト。通常意味着ゲートウェイの構成エラー或过载。
0BGateway target device response failed专门与ゲートウェイ结合使用,表示未从目标デバイス获得レスポンス。通常意味着该デバイス不存在于网络上。

16.2. Modbus ポーリングエラーメッセージ

エラー信息意义
タイムアウトエラー未在预期时间内收到回复。チェック以下内容:串行连接串行設定,例如ボーレート、パリティ検査、data bit、ストップ·ビット等。Modbus モード,RTU 或 ASCIIスレーブIDレスポンス·タイムアウトTCP/IP 连接レスポンス·タイムアウトチェックHost和Port与slave是否一致
レスポンスエラー回应ではない预期的。不同的スレーブ ID。
CRC Error收到的レスポンス的 CRC 值不正确。
写入エラー这是串行驱动程序报告的エラー。もし使用 USB/RS232/485 変換器です。并且拔掉 USB 电缆,则可能会发生这种情况。有4种タイプ:中断条件入力/出力エラー串行连接エラー出力バッファオーバーフロー使用 TCP/IP 连接的写入エラー通常是由于连接丢失造成的。
読み取りエラー这是串行驱动程序报告的エラー。有6种タイプ:成フレームエラー文字バッファオーバーフロー奇偶検証エラー入力バッファオーバーフロー入力/出力エラー中断条件使用 TCP/IP 连接的読み取りエラー通常是由于连接丢失造成的。
收到的Bytesの数不足レスポンスの長ささではない预期的。
バイト计数エラーレスポンス中的バイト计数不正确。与预期相比。
交易IDError它用于トランザクション配对,MODBUS サーバー·サーバー在レスポンス中コピーリクエスト的トランザクション識別子。
Put this resource to use in a real project?

Go to the Tool Center for message parsing, CRC verification and device debugging, or submit your requirements for selection and integration advice.

Engineer Membership

Turn this article into actionable debugging resources

After activation, you can use advanced message parsing, resource pack downloads, code examples, engineering cases and priority technical support, suitable for real project delivery.

Unlimited Advanced Tools
Resource & Code Packs
Complete Engineering Case Library
Priority Technical Support

《 “Modbus Poll中文用户手册(2023/08/01)版” 》 有 3 条コメント

Leave a Reply

Your email address will not be published. Required fields are marked *.