Modbus Poll중국어用户手册(2023/08/01)版

무료무료 기술 자료

이 글은 바로 읽을 수 있으며 기초 학습과 검색 유입에 적합합니다.

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

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

2023-08-01

1.Modbus Poll

Modbus Poll 은(는)사용하기 쉬움的 Modbus 마스터模拟器,专为多种用途而개발。其中:

  • Modbus 从设备设计者可快速轻松地测试프로토콜인터페이스
  • 需要现场测试Modbus设备或네트워크的自动化엔지니어링师
  • 想要从设备읽기和/或更改特定服务데이터的服务엔지니어링师
  • 更改从设备中的 Modbus 레지스터
  • 来自 Modbus 设备的로그데이터
  • 故障排除和合规性测试

1.1. Modbus 轮询的系统要求

硬件要求

处理器; 建议 1 GHz 或更快
1 GB RAM
5 MB 可用硬盘空间
1024 x 768 显示分辨率操作系统要求

支持从 Windows 7 到 Windows 11 的所有 Windows 버전。
Modbus Poll 버전 7 在 Windows XP 上运行。

1.1.1. 静默安装

静默安装不需要用户干预,并且没有用户界面。用户看不到任何对话框,也不会被问到任何문제。
使用命令行 /S 开关。

1.2. 终止用户许可프로토콜

在使用 Modbus Poll 之前,您应仔细阅读以下条款和条件。除非您有 Witte Software 签署的不同许可프로토콜,否则您使用本软件即表示您接受本许可프로토콜和保证。如果您不接受这些条款,您必须바로정지使用该软件。

版权。
Modbus Poll(“软件”)版权所有 2002-2023,归 Witte Software 所有,모든 권리 보유。

评估和회원가입。
这不是무료软件。您特此被许可在 30 天内무료使用本软件进行评估。

如果您在 30 天评估期后使用本软件,则需要支付회원가입费。

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

本软件的一份회원가입副本可以由在一台或多台계산机上个人使用该软件的一个人使用,也可以安装在由多人使用的一台계산机上,但不能同时安装在这两种계산机上。

有关订单和定价的信息,请访问https://www.modbustools.com/order.html

Modbus Poll 许可证是永久的。一旦您购买了特定主要버전的许可证,并且只要遵守许可프로토콜,您就可以永久使用该버전,无需额外费用。

分配。
如果您不包含您的许可证密钥,您将被授权복사本软件;向任何人提供原件的精确副本;并通过电子방식分发未经修改的软件。特别禁止您对任何此类副本收费。

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

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

2. Modbus 轮询功能

2.1. 연결

Modbus Poll 使用以下방식从设备읽기/쓰기데이터:

  • RS232 或 RS485 네트워크上的 Modbus RTU 或 ASCII。(USB/RS232/485컨버터)
  • Modbus TCP/IP
  • TCP/IP 上的 Modbus。(Modbus RTU/ASCII封装在TCP데이터包中)
  • 프로토콜UDP/IP
  • 基于 UDP/IP 的 Modbus。(Modbus RTU/ASCII封装在UDP데이터包中)

2.2. 支持的 Modbus 功能

  • 01 (0x01) 읽기코일
  • 02 (0x02) 이산 입력 읽기 (FC02)
  • 03 (0x03) 유지 레지스터 읽기 (FC03)
  • 04 (0x04) 입력 레지스터 읽기 (FC04)
  • 05 (0x05) 写单个코일
  • 06 (0x06) 写单个레지스터
  • 08 (0x08) 诊断(仅限串行线)
  • 11 (0x0B) 获取通讯事件计数器(仅限串行线)
  • 15 (0x0F) 다중 코일 쓰기 (FC15)
  • 16 (0x10) 다중 레지스터 쓰기 (FC16)
  • 17 (0x11) 보고서服务器 ID(仅限串行线路)
  • 22 (0x16) 掩码写레지스터
  • 23 (0x17) 读/写多个레지스터
  • 43 / 14 (0x2B / 0x0E) 읽기设备标识

2.3. 데이터记录

  • 将데이터记录到文本文件
  • 将데이터直接记录到 Excel 中

2.4. 표시 형식

每个单元格都可以单独형식化。

  • 有符号 16 位레지스터
  • 无符号 16 位레지스터
  • 16진수
  • 2진수
  • 具有任意字/바이트顺序的 32 位有符号整数
  • 具有任意字/바이트顺序的 32 位无符号整数
  • 具有任意字/바이트顺序的 64 位有符号整数
  • 具有任意字/바이트顺序的 64 位无符号整数
  • 具有任意字/바이트顺序的 32 位浮点数
  • 具有任意字/바이트顺序的 64 位双浮点

2.5. 其他功能

  • 用于与 Excel VBA、Python 等연결的 OLE/自动化。
  • 데이터流量监控
  • 打印和打印预览
  • 字体选择
  • 条件颜色
  • 缩放
  • 实时图表
  • 저장/열기工作区
  • 주소扫描

3. 개요

Modbus Poll 使用多문서인터페이스。这意味着可以열기多个窗口。每一个同时具有来自不同从设备的不同데이터콘텐츠。

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

这张照片显示了两个열기的窗户。一次읽기来自从机 id 1 的 10 个유지 레지스터,另一次읽기来自从机 id 2 的 10 个유지 레지스터。

3.1. 随时随地提供帮助

按 F1即可获取与当前所选项目相关的主题的上下文相关帮助。

SHIFT + F1调用特殊的“帮助모드”,其中光标变成帮助光标(箭头+问号)。然后,用户可以选择用户界面中的可见对象,例如菜单项、도구栏버튼或窗口。这将열기有关설명所选项目的主题的帮助。

3.2. 命名单元格

您可以在此处键入任何文本来指定值单元格。您还可以从 Excel 单元格복사/粘贴文本。

3.3. 值单元格

显示 Modbus 레지스터的데이터值。如果双击值单元格,将出现一个对话框,您可以将新值쓰기从设备。在值单元格中键入数字也会显示该对话框。可以选择用于쓰기值的 Modbus 功能。

“响应成功时닫기对话框”复选框用于在成功보내기值时自动닫기对话框。当要更改大量值时,这很方便。这样,可以快速选择新单元格,然后再次键入新值。

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

3.4. 更改字体

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

  • 选择要更改的单元格,然后右键单击。
  • 选择要更改的单元格,然后菜单→显示→字体。
Modbus Poll中文用户手册(2023/08/01)版插图2

3.5. 条件颜色

条件颜色可帮助您直观地显示特定范围内的值。3 种颜色选择

  • 默认颜色:如果没有任何条件颜色계산 결과为 true,则使用此颜色。
  • 规则 1:如果表达式的계산 결과为 true,则使用此颜色选择。规则 1 优先于规则 2。
  • 规则 2:如果表达式的계산 결과为 true,则使用此颜色选择。

7 比较运算符

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

当데이터유형为 float 或 32 位 long 유형时,不能使用“and”运算符。如果选择“and”,则条件值将以16진수数字形式입력。如果单元格和条件值中的任何位均为 1,则其계산 결과为 true。

3.5.1. 颜色예제

如果单元格值介于 398 和 402 之间,则为绿色

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

3.6. 缩放

缩放可帮助您将原始值缩放为人类可读的值。缩放仅适用于有符号和无符号 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 服务器/슬레이브的值。如果选择 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 네트워크통신,请选择 TCP/IP。在这种情况下,슬레이브 ID 与 MODBUS TCP/IP 中使用的单元 ID 相同。
    포트号默认为 502。
    如果연결失败,请尝试在命令提示符下是否可以 ping 通您的设备。如果 ping 命令失败,则 Modbus 轮询也会失败。
  3. Modbus UDP/IP:
    如果要与 MODBUS UDP/IP 네트워크통신,请选择 UDP/IP。这与 Modbus TCP/IP 相同,但使用无연결 UDP 프로토콜。
  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. 시리얼 포트设置

使用这些매개변수来设置串行포트设置。仅当연결유형为“串行포트”时它们才可用。모드

使用此选项选择RTU或ASCII모드。默认 RTU。响应超时

指定 Modbus 轮询在放弃之前应대기从属设备响应的时间길이。默认值为 1000 毫秒。轮询之间的最小지연

无论扫描速率如何,此设置都可确保传输下一个请求之前的最小지연。该设置的分辨率约为15ms。在某些계산机上可以获得更好的分辨率,但并非전체。

如果将此值设置为低于 20 毫秒,则无法保证响应与新请求之间的时间间隔为 3.5 个문자。这是因为 Windows 调度程序每 10 - 20 毫秒전환一次任务。如果您在串行 RS485 네트워크中轮询多个슬레이브,则不应将该值设置为低于 20ms。这是为了确保 3.5 个문자的时间间隙。在 TCP/IP 네트워크中,小于 20 毫秒就可以了。仅与一台从设备的串行연결时间小于 20ms 即可。

用户통신 속도

如果默认통신 속도均无用,请指定自定义통신 속도。

4.3. 远程服务器

远程服务器设置仅在使用以太网연결时可用。IP주소

服务器 IP 주소。默认为本地主机 127.0.0.1港口

服务器포트号。默认502연결超时

用于建立연결的最长时间。默认 1000

4.4. 高级设置

即时战略전환

RTS 전환指定如果바이트可用于传输,则 RTS 线将为高电平。보내기所有缓冲바이트后,RTS 线将为低电平。
如果您的 232/485 컨버터没有自动方向开关,则可以使用它来전환方向。

如果可能,应避免使用 RTS 控制的 RS232/RS485 컨버터。对于Windows、Linux等非实时操作系统,很难确定发射机닫기的具体时间。如果过早닫기,문자可能仍位于 FIFO 或 UART 的보내기레지스터中,并且这些문자将会丢失。因此从机将无法识别该消息。另一方面,如果닫기得太晚,则从设备的消息会被损坏,并且主设备将无法识别该消息。

数字SR

DSR 指定是否监视 DSR(데이터集就绪)信号以进行출력流控制。如果该成员为 TRUE 并且 DSR 닫기,则출력将暂停,直到再次보내기 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 到 255。(MODBUS 프로토콜사양规定为 247)。值 0 也可以直接与 MODBUS/TCP 或 MODBUS/UDP 设备통신。

5.2. 기능 코드

您可以选择 8 个功能代码中的 1 个。

5.2.1. 읽기功能

읽기函数返回的데이터显示在网格窗口上。

  • 01:읽기코일(0x)
  • 02:이산 입력 읽기 (FC02) (1x)
  • 03:유지 레지스터 읽기 (FC03)(4x)
  • 04:입력 레지스터 읽기 (FC04)(3x)

5.2.2. 编写函数

쓰기函数쓰기网格窗口上显示的데이터。

  • 05:단일 코일 쓰기 (FC05)(쓰기코일 상태)
  • 06:단일 레지스터 쓰기 (FC06)(쓰기유지 레지스터)
  • 15:다중 코일 쓰기 (FC15)(Writes to Coils)
  • 16:다중 레지스터 쓰기 (FC16)(Writes to Holding registers)

5.3. 주소

Modbus프로토콜中的주소很混乱!一些프로토콜사양使用프로토콜/消息주소,而其他프로토콜사양则使用设备寻址。

5.3.1. 프로토콜/消息주소

某些프로토콜사양使用从 0 到 65535 计数的프로토콜/消息주소以及功能代码。这也是新的 Modbus 사양所使用的콘텐츠。这是通过线路보내기的消息中的주소。

Modbus Poll 使用从 0 到 65535 计数的프로토콜/消息주소。

5.3.2. 设备주소

一些프로토콜사양使用设备주소/레지스터。레지스터从 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 轮询。

유지 레지스터 읽기 (FC03)

您希望每 1000ms 从从机 ID 2 읽기设备주소 40011 中的 20 个레지스터。从“4”我们知道这是功能03“유지 레지스터 읽기 (FC03)”。

  • 从机 ID = 2
  • 功能 =“03 유지 레지스터 읽기 (FC03) (4x)”
  • 주소 = 10(11 减 1)
  • 数量 = 20
  • 扫描率 = 1000
이산 입력 읽기 (FC02)

您希望每 500ms 从슬레이브 ID 5 읽기주소 110201 的 1000 个코일。从“1”我们知道这是功能02“이산 입력 읽기 (FC02)”

  • 从机 ID = 5
  • 功能 =“02 이산 입력 읽기 (FC02) (1x)”
  • 주소 = 10200 (10201 - 1)
  • 数量 = 1000
  • 扫描率 = 500

5.4. 扫描率

扫描速率可设置为 0 至 3600000ms。请注意,将扫描速率设置为低于事务时间是没有意义的。如果使用 9600 통신 속도的串行연결并请求 125 个레지스터,则事务时间大约为 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
“读/写一次”버튼

5.5.1. 出错时禁用

发生错误时禁用读/写。

5.6. 隐藏名称列

隐藏所有名称列。如果不使用它们,这可以方便地腾出更多空间。

5.7. 单元格中的주소

如果활성화,주소也会显示在值单元格中,例如:2000 = 00000

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

5.8. PLC 주소(基주소 1)

此选项会将주소显示为设备주소。

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

5.9. 安然/丹尼尔·莫德

Enron 或 Enron/Daniels Modbus 是带有一些“供应商扩​​展”的표준 Modbus。这些扩展的确切影响取决于上下文,但最常见的 Modbus 命令按预期工作。有一些供应商定义的自定义函数可用 - 但很少有用户期望或使用它们。最大的影响与 32 位데이터值的读/写방식有关。

Enron-Modbus 定义了两个特殊的 4x 유지 레지스터范围:

  • 假设 4x5001 到 4x5999 是 32 位长整数(每个레지스터 4 个바이트)。
  • 假设 4x7001 到 4x7999 是 32 位浮点(每个레지스터 4 个바이트)。

在 Modbus 中处理 32 位值并不是 Enron-MB 所独有的。然而,Enron-MB 采取了有争议的步骤,即每个레지스터返回 4 바이트,而不是 Modbus 사양中术语“유지 레지스터”所暗示的 2 바이트。这意味着 Enron-Modbus 中的레지스터 4x5001 和 4x5002 轮询会返回 8 바이트或两个 32 位整数,而표준 Modbus 只会返回 4 바이트或一个 32 位整数(被视为两个 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 轴
  • 标题。如果标题为空,则使用阅读窗口中的名称进行初始化
  • 抵消

展示

  • 文件名
  • 주소

偏移对于在同一 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 扩展名。

分隔符:选择分隔文本文件中的值的문자。복사/粘贴到 Excel 时使用制表符分隔符。此外还给出了一些附加信息。

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

7. 주소扫描

扫描주소范围以获取设备中所有有效주소的列表。주소被逐一읽기,읽기结果以列表形式显示。

扫描所有 65535 个주소需要一些时间,具体取决于연결유형、服务器设备等。

7.1. 导出주소扫描

저장주소扫描데이터到磁盘或복사到剪贴板。将데이터直接粘贴到 Excel 中以进行进一步处理。
尽管使用非逗号필드分隔符,但该文件仍具有 .csv 扩展名。

分隔符:选择分隔文本文件中的值的문자。복사/粘贴到 Excel 时使用制表符分隔符。

8. 표시 형식

기호要형식化的单元格。从显示菜单中选择 28 种표시 형식之一。

8.1. 本机 Modbus 레지스터

16 位 Modbus 레지스터可以以 4 种不同的모드显示。

  • 签
  • 未签名
  • 16진수
  • ASCII - 16진수
  • 2진수

8.2. 32 位有符号整数

它结合了 2 个 16 位 Modbus 레지스터。它可以以 4 种不同的字/바이트顺序显示。

  • 有符号整数 大尾数
  • 有符号整数 小尾数
  • 有符号整数大端바이트交换
  • 有符号整数小端바이트交换例子바이트顺序:AB CD(大端)
    10진수数 123456789 或16진수数07 5B CD 15
    Modbus 消息中通过线路传输的顺序:07 5B CD 15

8.3. 32 位无符号整数

它结合了 2 个 16 位 Modbus 레지스터。它可以以 4 种不同的字/바이트顺序显示。

  • 无符号整数 大尾数
  • 无符号整数 小尾数
  • 无符号整数 Big-endian 바이트交换
  • 无符号整数小端바이트交换例子바이트顺序:AB CD(大端)
    10진수数 123456789 或16진수数07 5B CD 15
    Modbus 消息中通过线路传输的顺序:07 5B CD 15

8.4. 64 位有符号整数

它结合了 4 个 16 位 Modbus 레지스터。它可以以 4 种不同的字/바이트顺序显示。

  • 有符号整数 大尾数
  • 有符号整数 小尾数
  • 有符号整数大端바이트交换
  • 有符号整数小端바이트交换例子바이트顺序:AB CD EF GH(大端)
    10진수数 -1,234,567,890,123,456,789 或16진수数EE DD EF 0B 82 16 7E EB
    Modbus 消息中的线路顺序:EE DD EF 0B 82 16 7E EB

8.5。64 位无符号整数

它结合了 4 个 16 位 Modbus 레지스터。它可以以 4 种不同的字/바이트顺序显示。

  • 无符号整数 大尾数
  • 无符号整数 小尾数
  • 无符号整数 Big-endian 바이트交换
  • 无符号整数小端바이트交换例子바이트顺序:AB CD EF GH(大端)
    10진수数 1,234,567,890,123,456,789 或16진수数11 22 10 F4
    7D E9 81 15 Modbus 消息中的线路顺序:11 22 10 F4 7D E9 81 15

8.6。32位浮点

它结合了 2 个 16 位 Modbus 레지스터。它可以以 4 种不同的字/바이트顺序显示。

  • 浮点大尾数
  • 浮点数小尾数
  • 浮点大端바이트交换
  • 浮点小端바이트交换例子바이트顺序:AB CD(大端)
    浮点数 123456.00 或16진수47 F1 20 00
    Modbus 消息中的线路顺序:47 F1 20 00

8.7. 64位双

它结合了 4 个 16 位 Modbus 레지스터。它可以以 4 种不同的字/바이트顺序显示。

  • 双大尾数
  • 双小端
  • 双大端바이트交换
  • 双小端바이트交换例子바이트顺序:AB CD EF GH(大端)
    浮点数 123456789.00 或16진수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)
    온도 19.7

根据您的系统,使用逗号或句点来分隔小数。

11. 导出到Modbus Slave

将名称、值和형식导出到 Modbus 슬레이브文件。*.mbs

需要 Modbus Slave 버전 7.4.0 或更高버전才能열기该文件。

12. 测试中心

此测试对话框的目的是帮助 MODBUS 슬레이브设备개발人员使用自己组成的任何문자串来测试设备。
列表框显示보내기的데이터以及수신的데이터。
下拉列表框中可以有多个测试문자串。입력문자串后,按“추가到列表”버튼,该문자串就会추가到列表中。
当按下“보내기”버튼时,将보내기所选문자串。열기列表

从文件中恢复测试문자串。저장列表

将测试문자串存储到文件中。清除

清除测试列表。추가到列表

将当前测试문자串추가到列表中。추가支票

将 CRC 或 LRC 추가到입력문자串的末尾。

使用测试中心时,您可能希望禁用其他窗口的통신。选中“读/写定义”对话框中的“读/写禁用”复选框。设置→读/写定义。

12.1。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 对。

12.2. TCP/IP 예제

읽기 10 个유지 레지스터。00 00 00 00 00 06 01 03 00 00 00 0A

前 6 个바이트是 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。복사

使用복사버튼将选定的 Tx/Rx 문자串복사到剪贴板。
SHIFT 和 CTRL 键可与鼠标一起使用来选择和취소选择문자串、选择문자串组以及选择不相邻的문자串。

在执行其他命令时保持此窗口열기。

13.Modbus데이터记录

您可以将데이터记录到文本文件或直接记录到 Microsoft Excel。

13.1. 文本文件

从设置菜单中选择“로그”或使用快捷键:Alt+L

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

当您想要정지데이터记录时,请在设置菜单上选择注销命令。

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

13.1.1. 记录率

每读

为所有 Modbus 请求编写로그行。将频率记录为扫描速率。选择

指定로그速率(以秒为单位)。与扫描速率无关。

例如,如果扫描速率为 10000 毫秒,则设置 1 秒的记录速率是没有意义的,因为仅当新데이터准备就绪时才会记录데이터。

13.1.2. 分隔符

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

意味着值按列组织。逗号

值以쉼표로 구분。标签

值由制表符分隔。

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、功能等。
    • 名称:插入로그的名称。

固定宽度的文本文件예제: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 请求쓰기로그行。将频率记录为扫描速率。
  • 选择:指定로그速率(以秒为单位)。로그与扫描速率无关。
    备注:如果扫描速率为 10000ms,则设置 1 秒的记录速率是没有意义的,因为仅当新데이터准备好时才会记录데이터。
  • 정지时间:指定로그行数。请注意,Excel 2003 限制为 65,536 行,Excel 2007 限制为 1,048,576 行。

13.2.2. 标头信息

  • 插入标题:信息插入到 Excel 工作表的最上面 3 行。
    • 顶行中的单元格名称:在第 3 行中插入名称。
    • 投票定义:在第 2 行插入 ID、功能等。
    • 名称:在第 1 行插入로그名称。
Modbus Poll中文用户手册(2023/08/01)版插图19

带有标题信息的 Excel 로그。

14.通讯流量

选择菜单“显示”→“通讯”以显示串行线路或以太网电缆上的流量。使用정지버튼暂时정지更新以进行检查。

使用복사버튼将所选行복사到剪贴板。

该窗口仅显示通过 Modbus Poll 보내기和수신的데이터。您不能将其用作데이터嗅探器。
在执行其他命令时保持此窗口열기。

15.OLE/自动化

自动化(以前称为 OLE 自动化)使一个적용程序可以操作另一적용程序中实现的对象。

自动化클라이언트是一个可以操作属于另一个적용程序的公开对象的적용程序。这也称为自动化제어기。

自动化服务器是向其他적용程序公开可编程对象的적용程序。Modbus Poll是一个自动化服务器。

这意味着您可以使用任何支持VBA(Visual Basic for Applications)的程序(例如Visual Basic、Excel等)根据您的具体要求解释和显示modbus데이터。

15.1. Excel 예제

当您想要编写宏时,您应该显示“개발人员”选项卡或在개발人员모드下运行。

15.1.1. Excel 2007

Modbus Poll中文用户手册(2023/08/01)版插图20
  1. 单击 Microsoft Office 버튼,然后单击 Excel 选项。
  2. 单击“流行”,然后选中“在功能区中显示개발人员选项卡”复选框。
    请注意,功能区是 Microsoft Fluent 用户界面的一部分。

15.1.2. Excel 2010、2016

  1. 单击文件选项卡。
  2. 单击选项。Excel 选项窗口将열기。
  3. 在左侧窗格中单击“自定义功能区”。
  4. 在右侧窗格的“主选项卡”下,选中“개발人员”复选框。
  5. 单击“确定”。“개발人员”选项卡现在应该显示在功能区中(最右侧的选项卡)。

15.1.3。Excel 예제代码

此예제열기两个窗口。一个읽기레지스터,另一个읽기코일。
Modbus 轮询是隐藏的,但您可以通过취소注释“ShowWindow”行来显示它。这将显示其中一个窗口。

Modbus 轮询安装中还包含一个예제。
开始 → 所有程序 → Modbus 轮询 → Excel 예제Excel VBA 예제

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 회원가입s every 1000ms
   res = doc1.ReadHolding회원가입s(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.IP주소 = "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.S회원가입s(n)
   Next n

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

15.2. Python예제

此 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('Mbpoll.Application')

App.Connection = 1
App.IP주소 = "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, 주소 0 (40001) every 1000ms
Win1.ReadHolding회원가입s(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 이름s to used format
Win1.Set이름(0, "SIGNED")
Win1.Set이름(1, "UNSIGNED")
Win1.Set이름(2, "HEX")
Win1.Set이름(3, "BINARY")

Win1.Set이름(4, "S32_BE")
Win1.Set이름(6, "S32_LE")
Win1.Set이름(8, "S32_BE_BS")
Win1.Set이름(10, "S32_LE_BS")

Win1.Set이름(12, "U32_BE")
Win1.Set이름(14, "U32_LE")
Win1.Set이름(16, "U32_BE_BS")
Win1.Set이름(18, "U32_LE_BS")

Win1.Set이름(20, "S64_BE")
Win1.Set이름(24, "S64_LE")
Win1.Set이름(28, "S64_BE_BS")
Win1.Set이름(32, "S64_LE_BS")

Win1.Set이름(40, "U64_BE")
Win1.Set이름(44, "U64_LE")
Win1.Set이름(48, "U64_BE_BS")
Win1.Set이름(52, "U64_LE_BS")

Win1.Set이름(60, "FLOAT_BE")
Win1.Set이름(62, "FLOAT_LE")
Win1.Set이름(64, "FLOAT_BE_BS")
Win1.Set이름(66, "FLOAT_LE_BS")

Win1.Set이름(80, "DOUBLE_BE")
Win1.Set이름(84, "DOUBLE_LE")
Win1.Set이름(88, "DOUBLE_BE_BS")
Win1.Set이름(92, "DOUBLE_LE_BS")

# Refresh
Win1.EnableRefresh = True

Win1.ResizeAllColumns ()
Win1.ResizeWindow()

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

print (Win1.Get이름(1))

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

15.3。연결功能/属性

以下属性和功能与您在연결对话框 (F3) 中的设置相同。

15.3.1。문의

연결选择所需的연결。可以选择串行포트或以太网연결之一。

属性연결为整数有效值

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. 통신 속도

仅适用于연결 = 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。데이터 비트

仅适用于연결 = 0

属性데이터Bits作为整数有效值

7
8(默认)
例子

데이터Bits = 8

15.3.4。平价

仅适用于연결 = 0

财产平价作为整数有效值

0 = 无
1 = 奇数
2 = 偶数(默认)
例子

Parity = 2

15.3.5。정지 비트

仅适用于연결 = 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。开放연결

열기使用“연결”属性选择的연결。

函数OpenConnection () 作为整数매개변수

该函数没有매개변수。返回值

对于错误3-5:请检查您是否安装了最新的시리얼 포트驱动。

错误설명
0成功
1시리얼 포트不可用
3串行포트。无法从포트驱动程序获取当前设置。
4串行포트。串行포트驱动程序不接受포트设置。
5串行포트。串行포트驱动程序不接受超时设置。
12TCP/UDP 연결失败。WSA启动
13TCP/UDP 연결失败。연결错误
14TCP/UDP 연결失败。暂停
15TCP/UDP 연결失败。IOCTL
17 号TCP/UDP 연결失败。套接字错误
21TCP/UDP 연결失败。주소信息
255연결已열기

如何열기 Modbus TCP/IP 연결的 Excel 예제

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.IP주소 = "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, 주소 0 (40001) every 1000ms
Win1.ReadHolding회원가입s(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.Set이름(0, "회원가입 0")

# Set the value to write
Win1.EnableRefresh = True

Win1.ResizeAllColumns ()
Win1.ResizeWindow()

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

15.3.15。닫기연결

函数닫기Connection () As Integer매개변수

该函数没有매개변수。返回值

如果成功则为零。如果失败则非零值。

15.3.16。显示通讯交通

显示통신流量窗口。

函数ShowCommunicationTraffic ()매개변수

该函数没有매개변수。返回值

没有任何

15.3.17。닫기通讯交通

닫기통신流量窗口(如果显示)。

函数닫기CommunicationTraffic ()매개변수

该函数没有매개변수。返回值

没有任何

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. 읽기코일

Modbus기능 코드01

기능 ReadCoils (SlaveID As Integer, 주소 As Long, Quantity As Integer, ScanRate As Long) As Integer매개변수

SlaveID:从机주소 1 至 255
주소:데이터주소(基址 0)
数量:데이터数量。1 至 2000
扫描速率: 0 至 3600000ms返回值

如果成功则为真。如果没有成功则为假

15.4.2. 이산 입력 읽기 (FC02)

Modbus功能代码02

기능 ReadDiscreteInputs (SlaveID As Integer, 주소 As Long, Quantity As Integer, ScanRate As Long) As Integer매개변수

SlaveID:从机주소 1 至 255
주소:데이터주소(基址 0)
数量:데이터数量。1 至 2000
扫描速率: 0 至 3600000ms返回值

如果成功则为真。如果没有成功则为假

15.4.3。읽기持有레지스터

Modbus功能代码03

기능 ReadHolding회원가입s (SlaveID As Integer, 주소 As Long, Quantity As Integer, ScanRate As Long) As Integer매개변수

SlaveID:从机주소 1 至 255
주소:데이터주소(基址 0)
数量:데이터数量。1 至 125
扫描速率: 0 至 3600000ms返回值

如果成功则为真。如果没有成功则为假

15.4.4。读입력 레지스터

Modbus 功能代码 04

기능 ReadInput회원가입s (SlaveID As Integer, 주소 As Long, Quantity As Integer, ScanRate As Long) As Integer매개변수

SlaveID:从机주소 1 至 255
주소:데이터주소(基址 0)
数量:데이터数量。1 至 125
扫描速率: 0 至 3600000ms返回值

如果成功则为真。如果没有成功则为假

15.5。自动쓰기功能

쓰기函数将存储在由属性填充的数组中的值쓰기。下面的 Write 函数不创建데이터窗口。要创建데이터窗口,请使用 Win 函数,例如WriteMultiple회원가입sWin。

15.5.1。写单코일

Modbus 功能代码 05。
쓰기存储在쓰기数组中的第一个코일。

기능 WriteSingleCoil (SlaveID As Integer, 주소 As Long) As Integer매개변수

SlaveID:从机주소 0 到 255
주소:데이터주소(基址 0)返回值

如果쓰기数组已准备好并且데이터已보내기,则为 True。如果数组为空或매개변수错误,则返回 False。
控制적용程序负责通过读回쓰기的值来验证쓰기操作。

15.5.2。写单个레지스터

Modbus 功能代码 06。
쓰기쓰기数组中存储的第一个레지스터。

기능 WriteSingle회원가입 (SlaveID As Integer, 주소 As Long) As Integer매개변수

SlaveID:从机주소 0 到 255
주소:데이터주소(基址 0)返回值

如果쓰기数组已准备好并且데이터已보내기,则为 True。如果数组为空或매개변수错误,则返回 False。
控制적용程序负责通过读回쓰기的值来验证쓰기操作。

15.5.3。다중 코일 쓰기 (FC15)

Modbus 功能代码 15.
쓰기存储在쓰기数组中的코일。

기능 WriteMultipleCoils (SlaveID As Integer, 주소 As Long, Quantity As Integer) As Integer返回值

如果쓰기数组已准备好并且데이터已보내기,则为 True。如果数组为空或매개변수错误,则返回 False。
控制적용程序负责通过读回쓰기的值来验证쓰기操作。매개변수

SlaveID:从机주소 0 到 255
주소:데이터주소(基址 0)数量데이터的数量
。1 至 1968 年

15.5.4。다중 레지스터 쓰기 (FC16)

Modbus 功能代码 16.
쓰기쓰기数组中存储的레지스터。

기능 WriteMultiple회원가입s (SlaveID As Integer, 주소 As Long, Quantity As Integer) As Integer매개변수

SlaveID:从机주소 0 到 255
주소:데이터주소(基址 0)
数量:데이터数量。1 至 123返回值

如果쓰기数组已准备好并且데이터已보내기,则为 True。如果数组为空或매개변수错误,则返回 False。
控制적용程序负责通过读回쓰기的值来验证쓰기操作。

15.5.5。Python예제

Python 예제如何创建一个从주소 0 (40001) 읽기 10 个레지스터,然后쓰기 5 个레지스터的窗口。Python예제

import sys
import time
import win32com.client as win32

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

App.Connection = 1            # TCP/IP connection
App.IP주소 = "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. 오답: ", result)
   sys.exit()

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

# Read 10 holding registers from slave ID 1, 주소 0 (40001) every 1000ms
Win1.ReadHolding회원가입s(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 레지스터 0 (40001) = ", Win1.S회원가입s(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 데이터 to write
Win1.S회원가입s(0, 1)   # Note that 파라미터 1 is not a
Win1.S회원가입s(1, 10)  # Modbus 주소 but an index to the array
Win1.S회원가입s(2, 100)
Win1.S회원가입s(3, 1000)
Win1.S회원가입s(4, 10000)
# Write the registers. This function do not create a window in Modbus Poll
# Use the function <<WriteMultiple회원가입sWin>> to create a 데이터 window
Win1.WriteMultiple회원가입s (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 문서窗口是隐藏的。ShowWindow 功能使 Modbus Poll 可见并显示带有데이터콘텐츠的문서。

函数显示窗口()매개변수

该函数没有매개변수。返回值

没有任何

15.6.2。获取보내기计数

获取请求数。

函数GetTxCount () 只要매개변수

该函数没有매개변수。返回值

请求的数量。

15.6.3。获取수신计数

获取响应数。

函数GetRxCount () 只要매개변수

该函数没有매개변수。返回值

响应数。

15.6.4。获取名称

获取值的名称。

函数Get이름(索引为整数)作为문자串매개변수

索引:索引0对应第一个Modbus주소。返回值

名字。

15.6.5。设置名称

更改值的名称。函数Set이름(索引为整数,名称为문자串)매개변수

索引:索引0对应第一个Modbus주소。
名称:值单元格的名称。返回值

没有任何

15.6.6。전체형식化

使用所选형식设置所有值单元格的형식。

函数FormatAll(형식化为整数)매개변수

형식:值单元格的형식。返回值

没有任何

15.6.7。获取형식

获取Modbus值的표시 형식。

函数GetFormat(索引为整数)作为整数매개변수

索引:索引0对应第一个Modbus주소。
返回值

ID형식
0签
1未签名
216진수
32진수
4浮点小端바이트交换
5浮点大尾数
6双小端바이트交换
7双大端
832 位有符号小端바이트交换
932 位有符号大尾数
10浮点数小尾数
11浮点大端바이트交换
12双小尾数
13双大端바이트交换
1432 位有符号小端바이트序
1532 位有符号大端바이트交换
17 号32 位无符号大端바이트序
1832 位无符号小端바이트交换
1932 位无符号大端바이트交换
2032 位无符号小端바이트序
2164 位有符号大尾数
2264 位有符号小端바이트交换
2364 位有符号大端바이트交换
2464 位有符号小端바이트序
2564 位无符号大端바이트序
2664 位无符号小端바이트交换
2764 位无符号大端바이트交换
2864 位无符号小端바이트序
此设置仅用于显示。使用 Get/Set 值函数时,您仍然需要使用 byteOrder 来获取正确的바이트顺序。

15.6.8。设置형식

更改 Modbus 值的표시 형식。请参阅上面的형식值。

函数SetFormat(索引为整数,형식为整数)매개변수

索引:索引0对应第一个Modbus주소。
형식:值单元格的형식。返回值

没有任何

15.6.9。调整窗口大小

调整열기的窗口的大小以适合网格。

函数调整窗口大小()매개변수

该函数没有매개변수。返回值

没有任何

15.6.10。调整所有列的大小

调整所有列的大小以适合单元格内的值。

函数调整所有列的大小()매개변수

该函数没有매개변수。返回值

没有任何

15.6.11。行数

指定网格中的行数。

函数行(NumberRows)매개변수

NumberRows:网格中的行数。

ID설명
010 行(默认)
120 行
250 行
3100 行
4适合数量

返回值

没有任何

15.6.12。읽기结果

使用此属性可检查通过 Read 建立的통신是否运行成功。

属性将结果읽기为整数매개변수

该函数没有매개변수。返回值

错误설명
0成功
1超时错误
2CRC错误
3响应错误(响应不是预期的슬레이브 ID、功能或주소)
4쓰기错误
5읽기错误
6포트未열기错误
10데이터未初始化
11收到的바이트数不足
16바이트计数错误
19交易ID错误
81小时非法职能
82小时非法데이터주소
83小时非法데이터值
84小时服务器设备故障
85小时承认
86小时服务器设备繁忙
87小时NAK-否定确认
8安时게이트웨이路径不可用
8Bh게이트웨이目标设备无法响应

15.6.13。쓰기结果

使用此函数检查쓰기是否成功。
该值一直为 데이터_UNINITIALIZED,直到슬레이브的结果可用为止。请参阅ReadResult以获取可能值的列表。

属性WriteResult As Integer返回值

以整数形式返回쓰기结果。

15.6.14。节省

저장当前窗口。函数Save (Path이름 As String) As Boolean매개변수

Path이름:文件应저장到的完全限定路径。返回值

布尔值例子

' 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\User이름\Desktop\testfile.mbp")

15.7。自动化데이터属性

以下属性用于在 Modbus Poll 中设置或获取内部쓰기/읽기数组中的值。使用的索引不是 Modbus 주소。无论使用什么주소,索引始终从 0 开始计数。데이터属性与 Modbus 轮询문서关联。(有데이터的窗口)

每个데이터属性有 2 个버전:

  • 没有后缀的一种,例如S회원가입s,用于从内部写/读数组设置或获取值。
  • 一种以 Win 作为后缀,例如S회원가입sWin,用于直接从데이터窗口设置或获取值。当데이터窗口用于쓰기函数(例如WriteMultiple회원가입sWin )时,将使用此功能。

예제1:

' doc is assumed created first. See Excel example.
' Writes 1 to index 0 in the 데이터 array used for the Write function later
doc.S회원가입s(0) = 1
doc.S회원가입s(1) = 10
doc.S회원가입s(2) = 1234
' Write 3 registers stored in Modbus Poll internal array
' to Modbus 주소 100 (40101)
' A window is not created
res = doc.WriteMultiple회원가입s(1, 100, 3)
' The above example do not create a 데이터 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. WriteMultiple회원가입s(1, 0, 6)
' 6 회원가입s 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 1000ms
res = doc.WriteMultiple회원가입sWin(1, 100, 3, 1000)
' Writes 1 to the first cell in the 데이터 window
doc.S회원가입sWin(0) = 1
doc.S회원가입sWin(1) = 10
doc.S회원가입sWin(2) = 1234
' Now the 3 registers are written to slave id 1 주소 100 every 1000ms

15.7.1。코일、코일Win

属性코일(索引为整数)为整数설명

在쓰기数组结构中设置一个코일或从읽기数组中返回一个코일。句法

코일(索引)[=新值]

15.7.2。S회원가입s、S회원가입sWin

属性S회원가입s(索引为整数)为整数설명

在쓰기数组结构中设置레지스터或从읽기数组中返回레지스터。句法

S회원가입s(索引)[=新值]

15.7.3。U회원가입s、U회원가입sWin

属性U회원가입s(索引为整数)只要설명

在쓰기数组结构中设置레지스터或从읽기数组中返回레지스터。句法

U회원가입s(索引)[=新值]

15.7.4。Ints_32、Ints_32Win

属性Ints_32(索引为整数)为 Double설명

在쓰기数组结构中设置一个 32 位整数,或从읽기数组中返回一个整数。句法

Ints_32(索引)[=新值]

15.7.5。UInts_32、UInts_32Win

属性UInts_32(索引为整数)为 Double설명

在쓰기数组结构中设置一个 32 位无符号整数,或从읽기数组中返回一个无符号整数。句法

UInts_32(索引)[=新值]

15.7.6。Ints_64、Ints_64Win

属性Ints_64(索引为整数)为 Double설명

在쓰기数组结构中设置一个 64 位整数,或从읽기数组中返回一个整数。句法

Ints_64(索引)[=新值]

15.7.7。UInts_64、UInts_64Win

属性UInts_64(索引为整数)为 Double설명

在쓰기数组结构中设置一个 64 位无符号整数,或从읽기数组中返回一个无符号整数。句法

UInts_64(索引)[=新值]

15.7.8。花车,花车赢

属性浮动(索引为整数)为单个설명

在쓰기数组结构中设置一个浮点数或从읽기数组中返回一个浮点数。句法

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

15.7.9。双打、双打获胜

属性双精度(索引为整数)为双精度설명

在쓰기数组结构中设置双精度值或从읽기数组中返回双精度值。句法

双打(索引)[=新值]

15.7.10。바이트顺序

属性ByteOrder作为整数설명

设置 Ints_32、UInts_32、Ints_64、UInts_64、Floats 和 Doubles 属性使用的바이트顺序。
Win 버전不使用此属性ByteOrder。

ID바이트顺序
0大尾数(默认)
1小端바이트交换
2大端바이트交换
3小尾数法

Ints_32 예제:
바이트顺序:Big-endian
10진수数 123456789 或16진수数 07 5B CD 15
Modbus 消息中通过线路传输的顺序:07 5B CD 15句法

바이트顺序[=新值]

15.8。编写函数(创建데이터窗口)

以下功能与您在读/写定义对话框 (F8) 中设置的功能相同。
该函数创建一个데이터窗口,并根据扫描速率쓰기데이터窗口中的데이터콘텐츠。

15.8.1。写单코일赢

Modbus 功能代码 05。

기능 WriteSingleCoilWin (SlaveID As Integer, 주소 As Long, ScanRate As Long) As Integer매개변수

SlaveID:从机주소 1 至 255
주소:데이터주소(Base 0)
扫描速率: 0 至 3600000ms返回值

如果成功则为真。如果没有成功则为假

15.8.2。写单레지스터Win

Modbus 功能代码 06。

기능 WriteSingle회원가입Win (SlaveID As Integer, 주소 As Long, ScanRate As Long) As Integer매개변수

SlaveID:从机주소 1 至 255
주소:데이터주소(Base 0)
扫描速率: 0 至 3600000ms返回值

如果成功则为真。如果没有成功则为假Python 예제如何열기一个窗口并每 1000 毫秒쓰기一个레지스터

import win32com.client as win32

SIGNED = 0

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

App.Connection = 1
App.IP주소 = "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, 주소 0 (40001) every 1000 ms
Win1.WriteSingle회원가입Win(1, 0, 1000)
# Show the Modbus window
Win1.ShowWindow()

# Fit rows to 수량
Win1.Rows(4)

# Disable refresh for speed
Win1.EnableRefresh = False

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

# Set the 이름 of the register
Win1.Set이름(0, "Setting")

# Set the value to write
Win1.S회원가입sWin(0, 100)
Win1.EnableRefresh = True

Win1.ResizeAllColumns ()
Win1.ResizeWindow()

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

15.8.3。다중 코일 쓰기 (FC15)Win

Modbus 功能代码 15。

기능 WriteMultipleCoilsWin (SlaveID As Integer, 주소 As Long, Quantity As Integer, ScanRate As Long) As Integer매개변수

SlaveID:从机주소 1 至 255
주소:데이터주소(基址 0)
数量:데이터数量。1 至 1968
扫描速率: 0 至 3600000ms返回值

如果成功则为真。如果没有成功则为假

15.8.4。다중 레지스터 쓰기 (FC16)Win

Modbus 功能代码 16。

기능 WriteMultiple회원가입sWin (SlaveID As Integer, 주소 As Long, Quantity As Integer, ScanRate As Long) As Integer매개변수

SlaveID:从机주소 1 至 255
주소:데이터주소(基址 0)
数量:데이터数量。1 至 123
扫描速率: 0 至 3600000ms返回值

如果成功则为真。如果没有成功则为假

16. 异常和错误消息

Modbus 异常和错误消息以红色文本显示在每个窗口的第二行。

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

16.1. Modbus 异常代码

Modbus 异常是从从设备返回的错误。

代码姓名意义
01非法功能查询中收到的功能代码不是服务器(或슬레이브)允许的操作。这可能是因为该功能代码仅适用于较新的设备,并且未在所选设备中实现。它还可能表明服务器(或从属设备)处于处理此类请求的错误状态,例如因为它未설정并且被要求返回레지스터 값。
02非法데이터주소查询中收到的데이터주소不是服务器允许的주소。更具体地,参考번호和传输길이的组合是无效的。对于有 100 个레지스터的제어기,PDU 将第一个레지스터寻址为 0,最后一个레지스터寻址为 99。如果提交的请求的시작레지스터주소为 96,레지스터 수량为 4,则该请求将成功运行(至少按주소)在레지스터 96、97、98、99 上。如果提交的请求的시작레지스터주소为 96,레지스터 수량为 5,则该请求将失败,并出现异常代码 0x02“非法데이터주소”因为它尝试对레지스터 96、97、98、99 和 100 进行操作,但不存在주소为 100 的레지스터。
03非法데이터价值查询데이터필드中包含的值不是服务器(或슬레이브)允许的值。这表明复杂请求的其余部分的结构存在错误,例如隐含的길이不正确。具体来说,这并不意味着提交存储在레지스터中的데이터项具有적용程序预期之外的值,因为 MODBUS 프로토콜不知道任何特定레지스터的任何特定值的重要性。
04服务器设备故障服务器(或从属服务器)尝试执行请求的操作时发生不可恢复的错误。
05承认专门与编程命令结合使用。
服务器(或슬레이브)已接受请求并正在处理它,但需要很长时间才能完成此操作。返回此响应是为了防止클라이언트(或主机)发生超时错误。클라이언트(或主机)接下来可以发出轮询程序完成消息以确定处理是否完成。
06服务器设备忙专门与编程命令结合使用。
服务器(或슬레이브)正在处理长时间的程序命令。当服务器(或从机)空闲时,클라이언트(或主机)应稍后重新传输消息。
0A게이트웨이路径不可用专门与게이트웨이结合使用,表示게이트웨이无法分配从입력포트到출력포트的内部통신路径来处理请求。通常意味着게이트웨이설정错误或过载。
0B게이트웨이目标设备响应失败专门与게이트웨이结合使用,表示未从目标设备获得响应。通常意味着该设备不存在于네트워크上。

16.2. Modbus 轮询错误消息

错误信息意义
超时错误未在预期时间内收到回复。检查以下콘텐츠:串行연결串行设置,例如통신 속도、奇짝수 패리티、데이터 비트、정지 비트等。Modbus 모드,RTU 或 ASCII从机ID响应超时TCP/IP 연결响应超时检查Host和Port与slave是否一致
响应错误回应不是预期的。不同的从机 ID。
CRC 错误收到的响应的 CRC 值不正确。
쓰기错误这是串行驱动程序보고서的错误。如果使用 USB/RS232/485 컨버터并且拔掉 USB 电缆,则可能会发生这种情况。有4种유형:中断条件입력/출력错误串行연결错误출력缓冲区溢出使用 TCP/IP 연결的쓰기错误通常是由于연결丢失造成的。
읽기错误这是串行驱动程序보고서的错误。有6种유형:成帧错误문자缓冲区溢出奇짝수 패리티错误입력缓冲区溢出입력/출력错误中断条件使用 TCP/IP 연결的읽기错误通常是由于연결丢失造成的。
收到的바이트数不足响应的길이不是预期的。
바이트计数错误响应中的바이트计数不正确。与预期相比。
交易ID错误它用于事务配对,MODBUS 服务器在响应中복사请求的트랜잭션 식별자。
실제 프로젝트에 이 자료를 활용하시겠습니까?

도구 센터에서 프레임 분석, CRC 검증, 장비 디버깅을 진행하거나 요청을 제출하여 선정 및 연동 제안을 받아보세요.

엔지니어 회원

이 글을 실행 가능한 디버깅 자료로 활용하세요

가입하면 고급 프레임 분석, 자료 패키지 다운로드, 코드 예제, 엔지니어링 사례, 우선 기술 지원을 이용할 수 있어 실제 프로젝트 납품에 적합합니다.

고급 도구 무제한 이용
자료 패키지와 코드 패키지
완전한 엔지니어링 사례 라이브러리
우선 기술 지원 채널

《 “Modbus Poll중국어用户手册(2023/08/01)版” 》 有 3 条评论

답글 작성

이메일 주소는 공개되지 않습니다. 必填项已用 * 标注