
미니프로그램 버전,무료使用!!!
Modbus Poll简介
Modbus Poll 은(는)사용하기 쉬움的 Modbus 마스터模拟器,专为多种用途而개발。
其中包括:
- Modbus 슬레이브设备设计人员,用于快速轻松地测试프로토콜인터페이스
- 需要在现场测试Modbus设备或네트워크的自动化엔지니어링师
- 想要从设备中읽기和/或更改特定服务데이터的服务엔지니어링师
- 更改从设备中的 Modbus 레지스터
- 记录来自 Modbus 设备的데이터
- 故障排除和合规性测试
Modbus Poll 的系统要求
硬件要求
处理器;建议使用 1 GHz 或更快 1 GB RAM
5 MB 可用硬盘空间
1024 x 768 显示分辨率操作系统要求
支持从 Windows 7 到 Windows 11 的所有 Windows 버전。
Modbus Poll功能
연결
Modbus Poll使用以下방식对从设备읽기/쓰기데이터:
- RS232 或 RS485 네트워크上的 Modbus RTU 或 ASCII。(USB/RS232/485컨버터)
- 基于 TCP/IP 的 Modbus。(封装在TCP데이터包中的Modbus RTU/ASCII)
- 基于 UDP/IP 的 Modbus。(封装在 UDP 데이터包中的 Modbus RTU/ASCII)
支持的Modbus功能
- 01 (0x01) 읽기코일
- 02 (0x02) 이산 입력 읽기 (FC02)
- 03 (0x03) 유지 레지스터 읽기 (FC03)
- 04 (0x04) 입력 레지스터 읽기 (FC04)
- 05 (0x05) 쓰기单코일
- 06 (0x06) 단일 레지스터 쓰기 (FC06)
- 08 (0x08) 诊断(仅限串行线路)
- 11 (0x0B) 获取통신事件计数器(仅限串行线路)
- 15 (0x0F) 다중 코일 쓰기 (FC15)
- 16 (0x10) 다중 레지스터 쓰기 (FC16)
- 17 (0x11) 报表服务器 ID(仅限串行行)
- 22 (0x16) 掩码쓰기레지스터
- 23 (0x17) 读/写多个레지스터
- 43 / 14 (0x2B / 0x0E) 읽기设备标识
데이터记录
- 将데이터记录到文本文件
- 将데이터直接记录到 Excel 中
표시 형식
每个单元格都可以单独设置형식。
| 중국어설명 | 英文설명 |
|---|---|
| 16位有符号레지스터 | Signed 16-bit register |
| 16位无符号레지스터 | Unsigned 16-bit register |
| 16진수 | Hex |
| 2진수 | 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/자동화。
- 监控데이터流量
- 打印和打印预览
- 字体选择
- 条件颜色
- 缩放
- 实时图表
- 저장/열기工作区
- 주소扫描
Modbus Poll개요
Modbus Poll 使用多窗口界面。这意味着可以열기几个窗口。 每个都同时具有来自不同슬레이브设备的不同데이터콘텐츠。

随时随地提供帮助
按 F1 并获取与当前所选项目关联的主题的上下文相关帮助。
SHIFT + F1 调用一种特殊的“帮助모드”,在这种모드下,光标会变成帮助光标(箭头 + 问号)。 然后,用户可以在用户界面中选择可见对象,例如菜单项、도구栏버튼或窗口。 这将열기有关설명所选项目的主题的帮助。
命名单元格
在这里,您可以键入任何文本来指定值单元格。您还可以从 Excel 单元格복사/粘贴文本。
值单元格
显示Modbus레지스터的데이터值。如果双击值单元格,则会出现一个对话框 将新值쓰기从设备。在值单元格中键入数字也会显示对话框。 可以选择用于쓰기值的 Modbus 函数。
“在响应正常时닫기对话框”复选框用于在成功보내기值时自动닫기对话框。 当要更改大量值时,这很方便。这样,可以快速选择新单元格,然后再次键入新值。

更改字体
要更改字体,您有 2 个选项
- 选择要更改的单元格,然后单击鼠标右键。
- 选择要更改的单元格,然后选择 Menu→Display→Font。

条件颜色
条件颜色可帮助您直观地显示特定范围内的值。3种颜色选择
- 默认颜色:如果没有任何条件颜色的계산 결과为 true,则使用此颜色。
- 规则 1:如果表达式的계산 결과为 true,则使用此颜色选择。规则 1 优先于规则 2。
- 规则 2:如果表达式的계산 결과为 true,则使用此颜色选择。
7种比较运算符
| 중국어설명 | 英文설명 |
|---|---|
| 未使用 | not used |
| 等于 | equal to |
| 大于 | greater than |
| 小于 | less than |
| 大于等于 | greater than or equal to |
| 小于等于 | less than or equal to |
| 与 | and |
当데이터유형为浮点型或 32 位长유형时,不能使用“and”运算符。 如果选择“and”,则条件值将作为16진수数字입력。 如果单元格和条件值中的任何位均为 1,则계산 결과为 true。
颜色예제
如果单元格值大于 0,则为绿色,如果小于 0,则为红色。

缩放
缩放可帮助您将原始值缩放为人类可读的值。缩放仅适用于有符号和无符号的 16/32 位整数。

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

线方程

精度
小数点后的位数。
使
必须활성화才能从 Modbus 服务器/슬레이브缩放值。如果出现其他情况,则自动禁用缩放 选择 16/32 位整数표시 형식。
实时图表
该图表可以实时绘制 12 个시리즈,每个시리즈最多 100000 个点。
주소扫描
扫描주소范围以获取设备中所有有效주소的列表。
열기一个新窗口
要열기另一个窗口,您有 3 个选项:
- 按 CTRL+N
- 在文件菜单中选择新建
- 压
在도구栏上
연결对话框
要열기연결对话框,您有 2 个选项:
- 按 F3
- 从연결菜单中选择연결

연결(Connection)
有 5 种不同的연결유형:
- 串行:
串行线路上的Modbus。RS232 或 RS485。可以使用USB串行컨버터。 - Modbus TCP/IP:
如果要与 MODBUS TCP/IP 네트워크통신,请选择 TCP/IP。在本例中,从属 ID 是 与 MODBUS TCP/IP 中使用的设备 ID 相同。
포트号默认为 502。
如果연결失败,请尝试在命令提示符下对设备执行 ping 操作。如果 ping 命令失败,则 Modbus 轮询也会失败。 - Modbus UDP/IP:
如果要与 MODBUS UDP/IP 네트워크통신,请选择 UDP/IP。这与Modbus相同 TCP/IP,但改用연결较少的 UDP 프로토콜。 - Modbus RTU/ASCII over TCP/IP:
这是通过 TCP/IP 네트워크而不是串行线路보내기的 RTU 或 ASCII 消息。 - Modbus RTU/ASCII over UDP/IP:
这是通过 UDP/IP 네트워크而不是串行线路보내기的 RTU 或 ASCII 消息。
注意:연결유형 3-5 不是 www.modbus.org 指定的표준 Modbus,但为了方便起见,추가了它们。
根据您的选择,其他一些设置将显示为灰色。
시리얼 포트设置(Serial Settings)
使用这些매개변수可以设置串行포트设置。仅当연결유형为“串行포트”时,它们才可用。
모드
使用此选项可选择 RTU 或 ASCII 모드。默认 RTU。
响应超时
指定 Modbus 轮询在放弃之前应대기从机设备响应的时间길이。默认值为 1000ms。
轮询之间的最小지연
无论扫描速率如何,此设置都可确保在传输下一个请求之前将지연降至最低。 此设置的分辨率约为 15 毫秒。在某些계산机上可以获得更好的分辨率,但不是전체。
注意:
1.如果将此值设置为低于 20 毫秒,则无法保证响应和新请求之间的 3.5 个문자的时间间隔。 这是因为 Windows 计划程序每 10 - 20 毫秒전환一次任务。
2.如果轮询串行 RS485 네트워크中的多个슬레이브,则不应将该值设置为低于 20 毫秒。这是为了确保 3.5 个문자的时间间隔。
3.在 TCP/IP 네트워크中,小于 20 毫秒是可以的。
4.仅与一个从设备的串行연결小于 20 毫秒即可。
用户통신 속도
如果默认통신 속도均无用,请指定自定义통신 속도。
远程服务器
远程服务器设置仅在使用以太网연결时可用。
IP주소
服务器 IP 주소。默认值为 localhost 127.0.0.1
포트
服务器포트号。默认值 502
연결超时
用于建立연결的最长时间。默认值 1000
高级设置
RTS 전환
RTS Toggle 指定如果바이트可用于传输,则 RTS 行将为高电平。보내기完所有缓冲바이트后,RTS 行将变为低电平。
如果您有一个没有自动方向전환的 232/485 컨버터,您可以使用它来전환方向。
注意:
如果可能,应避免使用 RTS 控制的 RS232/RS485 컨버터。 很难确定以非实时방식닫기发射器的确切时间 Windows 和 Linux 等操作系统。如果过早닫기,문자可能仍会坐着 在FIFO或UART的发射레지스터中,这些문자将丢失。因此奴隶 无法识别该消息。另一方面,如果它닫기得太晚,那么从机的消息 已损坏,主服务器将无法识别该消息。
DSR형식
DSR 指定是否监视 DSR(데이터集就绪)信号以进行출력流量控制。如果此成员为 TRUE 且 DSR 处于닫기状态,则출력将挂起,直到再次보내기 DSR。
CTS服务
CTS 指定是否监控 CTS(clear-to-send)信号以进行출력流量控制。如果활성화此复选框并닫기 CTS,则출력将暂停,直到再次보내기 CTS。
DTR公司
DTR 指定在열기포트时是활성화还是禁用 DTR。
삭제 Echo
如果您的设备或 RS232/RS485 컨버터回显刚刚보내기的문자。
读/写定义
使用此命令可以定义要监视的活动窗口的데이터。
若要열기“读/写定义”对话框,有 3 个选项:
- 按 F8
- 从“设置”菜单中选择“读/写定义”
- 压
在도구栏上

슬레이브ID
范围 1 到 255。(MODBUS프로토콜사양是247)。值 0 也可用于直接与 MODBUS/TCP 或 MODBUS/UDP 设备통신。
函数代码
您可以从 8 个功能代码中选择 1 个。
읽기函数
읽기函数返回的데이터将显示在网格窗口中。
- 01:읽기코일 (0x)
- 02: 이산 입력 읽기 (FC02) (1x)
- 03: 유지 레지스터 읽기 (FC03) (4x)
- 04: 입력 레지스터 읽기 (FC04) (3x)
编写函数
쓰기函数쓰기显示在网格窗口上的데이터。
- 05: 쓰기单코일(쓰기코일 상태)
- 06: 단일 레지스터 쓰기 (FC06)(쓰기유지 레지스터)
- 15:다중 코일 쓰기 (FC15)(쓰기코일)
- 16:다중 레지스터 쓰기 (FC16)(쓰기유지 레지스터)
주소
Modbus 프로토콜中的주소令人困惑!某些프로토콜사양使用프로토콜/消息 주소,其他人使用设备寻址。
프로토콜/消息주소
某些프로토콜사양使用从 0 到 65535 计数的프로토콜/消息주소以及 函数代码。这也是新的Modbus사양所使用的。这是里面的주소 通过네트워크보내기的消息。
Modbus Poll 使用프로토콜/消息주소计数从 0 到 65535。
设备주소
某些프로토콜사양使用设备주소/레지스터。레지스터计数从 1 开始。 第一位数字설명要使用的函数。这意味着设备주소 40101 由주소 100 标识。“4”表示유지 레지스터,4x 레지스터从 1 开始计数。 因此,“4XXXX”引用是隐式的。 更令人困惑的是:4x 表示功能代码 03,3x 表示功能代码 04!
5 位数字与 6 位寻址
주소형식 4x 从 40001 计数到 49999。下一个주소不是 50000。 在过去,9999个주소就足够了。在某些情况下,9999 是不够的。 然后추가一个零。40101 变为 400101,依此类推。这称为 6 位寻址或扩展寻址。
这不是 Modbus Poll 的문제。410001变成 10000。“4”被扔掉,其余的 10001 当我们从 0 而不是 1 开始计数时,会减少 1。
주소예제
这些예제显示了在사양使用设备주소时如何设置 Modbus Poll。
유지 레지스터 읽기 (FC03)
您希望每 1000 毫秒从从属 ID 2 읽기设备주소 40011 的 20 个레지스터。从“4”中我们知道这是函数 03“유지 레지스터 읽기 (FC03)”。
- 슬레이브 ID = 2
- 函数 = “03 유지 레지스터 읽기 (FC03) (4x)”
- 주소 = 10(11 减去 1)
- 数量 = 20
- 扫描速率 = 1000
이산 입력 읽기 (FC02)
您希望每 500 毫秒从주소 110201 从 ID 5 읽기 1000 个코일。从“1”中我们知道这是函数 02“이산 입력 읽기 (FC02)”
- 슬레이브 ID = 5
- 函数 = “02 이산 입력 읽기 (FC02) (1x)”
- 주소 = 10200 (10201 - 1)
- 数量 = 1000
- 扫描率 = 500
扫描速率
扫描速率可以从0到3600000ms设置。请注意,将扫描速率设置为低于事务 时间没有意义。如果使用 9600 波特的串行연결并请求 125 个레지스터 事务时间大约是 8 + 2 + 250 + 2 = 262ms + 请求之间的间隔(>3.5 个문자时间) 和回应。在这种情况下,将扫描速率设置为100ms是没有意义的,因为事务时间 至少 262 毫秒 + 슬레이브지연(间隙)+ 轮询之间的最短时间。(在연결对话框 F3 中设置)。
禁用读/写
“禁用读/写”复选框可用于临时활성화或禁用통신 此窗口。然后显示文本 (Disabled) 以及 Tx 和 오답 计数器。

如果禁用了“读/写”,您可以使用“读/写一次”버튼或按 F6 发出单个请求。

“读/写一次”버튼
出错时禁用
如果出现错误,请禁用读/写。
隐藏名称列
隐藏所有名称列。如果不使用它们,这可以方便地腾出更多空间。
单元格中的주소
如果활성화,则주소也会显示在值单元格中,例如:2000 = 00000

PLC주소(基数1)
此选项会将주소显示为设备주소。

Enron/Daniel모드
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 个바이트而不是 2 个바이트的有争议的步骤 Modbus 사양中的术语“유지 레지스터”。这意味着对레지스터进行轮询 Enron-Modbus 中的 4x5001 和 4x5002 返回 8 个바이트或两个 32 位整数,而 Standard Modbus 只会返回 4 个바이트或一个 32 位整数,被视为两个 16 位整数。 此外,Enron-MB 中的轮询레지스터 4x5010 返回第十个 32 位长整数, 而표준 Modbus 会考虑此范围内第五个 32 位长整数的 1/2。
行
指定您喜欢的网格中的行数。
实时图表
使用此命令可在图表中实时绘制多达 12 个데이터시리즈。
实时图表速度快,能够在收到新데이터时快速绘制新线。
注意:
所有图表设置都저장在工作区文件中。저장/열기工作区
要열기“实时图表”对话框,您有 2 个选项:
- 按 Alt + R
- 从显示菜单中选择“实时图表”

X 轴显示自图表启动以来的秒数。
当点到达图表的末尾时,有 3 个选项:
- 最后停下来:图表정지。
- 最后重新启动:图表重新开始。
- 继续:它一直持续到达到最大点数或按下정지键。
设置
默认情况下,所有 12 个시리즈都链接到左侧 Y 轴。检查 “右 Y 轴”复选框(如果要将시퀀스链接到右 Y 轴)。
指定
- 颜色
- 右 Y 轴
- 标题。如果标题为空,则使用阅读窗口中的名称进行初始化
- 抵消
显示
- 文件名
- 주소
偏移量可用于在同一 Y 轴上对齐데이터点。例如,데이터点为 0 或 1 可以偏移,这样它们就不会相互重叠绘制。

缩放功能
如果您想보기更多详细信息,放大图表会很有用。 缩放由鼠标左键控制。要缩放图表的特定部分,只需单击鼠标左键即可 在图表上(这将是缩放矩形的左上角),然后拖动到右下角。 将出现一个矩形。松开鼠标버튼后,轴将自动 根据您选择的区域进行调整。
如果您左键单击图表(例如开始缩放),但如果您移动到左上角, 使用缩放和平移功能完成的所有修改都将被취소 (图表将处于使用平移和缩放操作之前的状态)。
平移功能
若要平移控件,请右键单击控件上的某个位置并移动鼠标。鼠标下方的点 将跟随鼠标的移动。
将데이터链接到图表시리즈
除非您将 Modbus 데이터单元链接到 12 시리즈之一,否则图表不知道要使用哪些데이터。 为此,请选择一个值单元格,然后从菜单→显示中选择“链接到图表”。

导出시리즈
将시리즈데이터저장到磁盘或복사到剪贴板。将데이터直接粘贴到 Excel 中以供进一步处理。
尽管使用了非逗号필드分隔符,但该文件仍具有.csv扩展名。
分隔符:选择用于分隔文本文件中值的문자。복사/粘贴到 Excel 时使用制表符分隔符。此外,还提供了一些附加信息。
- 点数
- 最大点值
- 最小点值
- 平均分值

주소扫描
扫描주소范围以获取设备中所有有效주소的列表。逐个읽기주소,읽기结果显示在列表中。
注意:
扫描所有 65535 个주소需要一些时间,具体取决于연결유형、服务器设备等。

导出주소扫描
将주소扫描데이터저장到磁盘或복사到剪贴板。将데이터直接粘贴到 Excel 中以供进一步处理。
尽管使用了非逗号필드分隔符,但该文件仍具有.csv扩展名。
分隔符:选择用于分隔文本文件中值的문자。복사/粘贴到 Excel 时使用制表符分隔符。
표시 형식
기호要형식化的单元格。从显示菜单中选择 28 种표시 형식之一。
Native Modbus 레지스터
16 位 Modbus 레지스터可以以 4 种不同的모드显示。
- 签署
- 无符号
- 16진수
- ASCII - 16진수
- 二元的
32位有符号整数
它结合了 2 个 16 位 Modbus 레지스터。它可以以 4 种不同的字/바이트顺序显示。
- 有符号整数 Big-endian
- 有符号整数 Little-endian
- 有符号整数大端바이트交换
- 有符号整数 Little-endian 바이트交换例바이트顺序:AB CD(大端)
10진수数 123456789 或16진수 07 5B CD 15 在 Modbus 消息中通过线路
排列时的顺序:07 5B CD 15
32位无符号整数
它结合了 2 个 16 位 Modbus 레지스터。它可以以 4 种不同的字/바이트顺序显示。
- 无符号整数 Big-endian
- 无符号整数 Little-endian
- 无符号整数大端바이트交换
- 无符号整数 Little-endian 바이트交换例바이트顺序:AB CD(大端)
10진수数 123456789 或16진수 07 5B CD 15 在 Modbus 消息中通过线路
排列时的顺序:07 5B CD 15
64位有符号整数
它结合了 4 个 16 位 Modbus 레지스터。它可以以 4 种不同的字/바이트顺序显示。
- 有符号整数 Big-endian
- 有符号整数 Little-endian
- 有符号整数大端바이트交换
- 有符号整数 Little-endian 바이트交换例바이트顺序:AB CD EF GH (Big-endian)
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
64位无符号整数
它结合了 4 个 16 位 Modbus 레지스터。它可以以 4 种不同的字/바이트顺序显示。
- 无符号整数 Big-endian
- 无符号整数 Little-endian
- 无符号整数大端바이트交换
- 无符号整数 Little-endian 바이트交换例바이트顺序:AB CD EF GH(Big-endian)
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
32位浮点数
它结合了 2 个 16 位 Modbus 레지스터。它可以以 4 种不同的字/바이트顺序显示。
- 浮点 Big-endian
- 浮点 Little-endian
- 浮点大端바이트交换
- Float Little-endian 바이트交换例바이트顺序:AB CD(大端)
浮点数 123456.00 或16진수 47 F1 20 00 在 Modbus 消息中通过线路
排列的顺序:47 F1 20 00
64位双精度浮点数
它结合了 4 个 16 位 Modbus 레지스터。它可以以 4 种不同的字/바이트顺序显示。
- 双大端
- 双 Little-endian
- 双大端바이트交换
- 双 Little-endian 바이트交换例바이트顺序:AB CD EF GH(大端序)
浮点数 123456789.00 或16진수 41 9D 6F 34 54 00 00 00 在 Modbus 消息中通过线路
排序:41 9D 6F 34 54 00 00 00
저장/열기工作区
如果열기许多相关的 Modbus 窗口,则可以方便地将所有열기和排列的 Modbus 窗口的当前布局快照저장在一个工作区中。
工作区 (*mbw) 是包含所有열기窗口的显示信息和文件名的文件。 不是实际콘텐츠。为此,请转到“文件→저장工作区”。
“연결”和“图表”设置存储在工作区文件中。
当您열기工作区文件时,Modbus Poll 会열기所有 Modbus 窗口,并在您저장的布局中显示它们。
导出到 csv
将名称和值导出到逗号、分号或制表符分隔值文件。从文件对话框中选择
- 쉼표로 구분值文件 (*.csv)
“온도”,“19.7” - 分号分隔值文件 (*.csv)
“온도”;”19.7" - 制表符分隔值文件 (*.txt)
온도 19.7
根据您的系统,逗号或句点用于分隔小数。
导出到 Modbus Slave
将名称、值和형식导出到 Modbus Slave 文件。*.mbs
열기文件需要 Modbus Slave 버전 7.4.0 或更高버전。
考试中心
此测试对话框的目的是帮助 MODBUS 슬레이브设备개발人员使用任何 他们自己作曲的문자串。
列表框显示传输的데이터和수신的데이터。
您可以在下拉列表框中包含多个测试문자串。입력문자串后,按 “추가到列表”버튼,然后将문자串추가到列表中。
按下“보내기”버튼时보내기所选문자串。
열기列表
从文件中保留测试문자串。
저장列表
将测试문자串存储到文件中。
清除
清除测试列表。
추가到列表
将当前测试문자串추가到列表中。
추가检查
将 CRC 或 LRC 추가到입력문자串的末尾。
使用考试中心时,您可能需要禁用来自其他窗口的통신。 选中“读/写定义”对话框中的“读/写禁用”复选框。设置→读/写定义。
ASCII 예제
组合框中的문자串:3A 30 31 30 33 30 30 30 30 30 30 30 41
如果추가了 LRC,则传输的문자串3A 30 31 30 33 30 30 30 30 30 30 30 41 46 32 0D 0A
还추가了 CR LF 对。
TCP/IP 예제
읽기 10 个保留레지스터。00 00 00 00 00 06 01 03 00 00 00 0A
前 6 个바이트是 TCP/IP 标头。
测试中心문자串文件
使用文本편집器(如记事本或类似도구),您可以准备要在测试中使用的문자串。
文件中的第一行必须是문자串“TestCenter”。这就是 Modbus Poll 知道文件형식正确的방식。按“열기列表”열기准备好的文本文件。
문자串列表的콘텐츠
TestCenter 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
복사
使用“복사”버튼将选定的 Tx/Rx 문자串복사到剪贴板。
SHIFT 和 CTRL 键可以与鼠标一起使用,以选择和취소选择문자串、选择문자串组以及选择不相邻的문자串。
注意:
在执行其他命令时使此窗口保持열기状态。
Modbus 데이터记录
您可以将데이터记录到文本文件或直接记录到 Microsoft Excel。
文本文件
从设置菜单中选择“로그”或使用快捷键:Alt+L
每个 Modbus 窗口都记录到其单独的文本文件中。
当您要정지데이터记录时,请选择设置菜单上的注销命令。

로그速率
每次읽기
为所有 Modbus 请求编写로그。将频率记录为扫描速率。
选择
指定로그速率(以秒为单位)。与扫描速率无关。
注意:
如果扫描速率为 10000 毫秒,则设置 1 秒로그速率是没有意义的,因为只有在新데이터准备就绪时才会记录데이터。
分隔符
作为分隔符,您可以使用以下选项之一:
固定宽度
表示值按列进行组织。
逗点
用쉼표로 구분的值。
标签
用制表符分隔的值。
仅更改데이터时记录로그
指定仅当自上次로그以来更改任何데이터时,才会쓰기新的로그行。
로그错误
指定记录超时等错误。
로그日期
指定将当前日期추가到로그时间中。
使用“T”作为分隔符
指定时间和日期以 ISO 8601 中指定的字母“T”分隔。
로그毫秒
指定将毫秒추가到로그时间中。
로그주소
指定将 Modbus 주소추가到로그中。
按 ok 时开始记录
指定在按下 ok 버튼时开始로그记录。否则,로그设置仅在저장 *mbp 文件时存储。
열기 *mbp 时开始记录
指定在열기 *.mbp 文件时自动启动로그记录。
바로새로고침到文件
这确保了로그行不会在文件系统中兑现,而是바로以物理방식쓰기。
追加
指定将로그追加到所选文件。否则,将创建一个新文件。
午夜新建로그文件
닫기当前로그文件,并在午夜启动一个新文件。时间戳将추가到您的文件名中。
头文件信息
- 插入标题:信息将插入到로그文件的顶部。
- 命名顶行中的单元格:插入名称。
- 投票定义:插入 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 电子表格中导入데이터。
Microsoft Excel
此功能要求安装 Microsoft Excel。Excel 2003 로그限制为 65535 条로그,因为这是 Excel 工作表中的最大行数。Excel 2007 或更高버전限制为 1,048,576 行。每个 Modbus 窗口都记录到其单独的 Excel 工作表中。
从设置菜单中选择“Excel 로그”或使用快捷键:Alt+X
记录时请勿触摸 Excel 工作表,因为这会中断로그记录。

로그速率
- 每个콘텐츠都写着:为所有 Modbus 请求编写로그。将频率记录为扫描速率。
- 选择:指定로그速率(以秒为单位)。로그与扫描速率无关。
备注:如果扫描速率为 10000 毫秒,则设置 1 秒로그速率是没有意义的,因为只有在新데이터准备就绪时才会记录데이터。 - 以下时间정지:指定로그行数。请注意,Excel 2003 限制为 65,536 行,Excel 2007 限制为 1,048,576 行。
头文件信息
- 插入标题:信息插入到 Excel 工作表最上面的 3 行中。
- 命名顶行中的单元格:在第 3 行中插入名称。
- 投票定义:在第 2 行中插入 ID、功能等。
- 名字:在第 1 行中插入로그名称。

带有标头信息的 Excel 로그。
통신流量
选择菜单“显示→통신”以显示串行线路或以太网电缆上的流量。使用정지버튼暂时정지更新以进行检查。
使用“복사”버튼将所选行복사到剪贴板。

注意:
此窗口仅显示 Modbus Poll 보내기和수신的데이터。您不能将其用作데이터嗅探器。
在执行其他命令时使此窗口保持열기状态。
OLE/自动化
自动化(以前称为 OLE 自动化)使一个적용程序可以操作在另一个적용程序中实现的对象。
自动化클라이언트是可以操作属于另一个적용程序的公开对象的적용程序。这也称为自动化제어기。
自动化服务器是向其他적용程序公开可编程对象的적용程序。Modbus Poll 是一个自动化服务器。
这意味着您可以使用任何支持VBA(Visual Basic for Applications)的程序,如Visual Basic,Excel等,根据您的特定要求来解释和显示modbus데이터。
Excel 예제
当您要编写宏时,应显示“개발人员”选项卡或在개발人员모드下运行。
Excel 2007的

- 单击 Microsoft Office 버튼,然后单击 Excel 选项。
- 单击“流行”,然后选中功能区中的“显示개발人员”选项卡复选框。
请注意,功能区是 Microsoft Fluent 用户界面的一部分。
Excel 2010、2016
- 单击“文件”选项卡。
- 单击选项。将열기“Excel 选项”窗口。
- 在左窗格中,单击“自定义功能区”。
- 在右窗格中的“主选项卡”下,选中“개발人员”复选框。
- 单击“确定”。“개발人员”选项卡现在应显示在功能区(最右侧选项卡)中。
Excel 예제代码
本예제열기两个窗口。一个읽기레지스터,另一个읽기코일。
Modbus Poll 是隐藏的,但您可以通过취소注释“ShowWindow”行来显示它。这将显示其中一个窗口。
Modbus Poll 安装中还包括一个예제。
开始→所有程序→Modbus Poll → 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()
' 创建 Modbus Poll 적용程序对象和两个문서对象
Set app = CreateObject("Mbpoll.Application")
Set doc1 = CreateObject("Mbpoll.Document")
Set doc2 = CreateObject("Mbpoll.Document")
' 읽기10个유지 레지스터,每1000ms읽기一次
res = doc1.ReadHolding회원가입s(1, 0, 10, 1000)
' 읽기10个코일 상태,每1000ms읽기一次
res = doc2.ReadCoils(1, 0, 10, 1000)
' 显示문서窗口(此行被注释,如需使用请취소注释)
' doc1.ShowWindow()
' 设置연결为 Modbus TCP/IP
app.Connection = 1
' 设置IP주소为本地主机
app.IP주소 = "127.0.0.1"
' 设置服务器포트为 502
app.ServerPort = 502
' 设置연결超时时间为 1000ms
app.ConnectTimeout = 1000
' 열기연결
res = app.OpenConnection()
End Sub
Private Sub Read_Click()
' 显示请求的结果
Cells(5, 7) = doc1.ReadResult() ' 显示유지 레지스터的읽기结果
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 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
# 바이트序定义
BE = 0
LE = 3
BE_BS = 2
LE_BS = 1
# 创建 Modbus Poll 적용实例
App = win32.Dispatch('Mbpoll.Application')
# 设置연결매개변수
App.Connection = 1 # 使用 Modbus TCP/IP
App.IP주소 = "127.0.0.1" # 本地주소
App.ServerPort = 502 # Modbus 포트
App.OpenConnection() # 열기연결
# 创建 Modbus 显示窗口实例
Win1 = win32.Dispatch("Mbpoll.Document")
# 从슬레이브ID为1的设备읽기100个유지 레지스터,주소从0 (40001) 开始,每1000ms읽기一次
Win1.ReadHolding회원가입s(1, 0, 100, 1000)
# 显示 Modbus 窗口
Win1.ShowWindow()
# 设置显示的行数
Win1.Rows(1)
# 禁用새로고침以提高速度
Win1.EnableRefresh = False
# 设置不同的데이터형식显示방식
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)
# 为不同형식的데이터设置표시 이름
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")
# 重新활성화새로고침
Win1.EnableRefresh = True
# 调整所有列的大小以适应콘텐츠
Win1.ResizeAllColumns()
# 调整窗口大小以适应콘텐츠
Win1.ResizeWindow()
# 저장설정到文件,指定文件路径
result = Win1.Save("C:\\Users\\User이름\\Desktop\\testfile.mbp")
# 打印저장结果
print(result)
# 打印第二个형식名称,作为예제
print(Win1.Get이름(1))
# 대기用户按 Enter 键退出,避免窗口直接닫기
_ = input("Press ENTER to quit:")
연결函数/属性
The following properties and functions do the same as you setup in the connection dialog (F3).
연결
“연결”(Connection) 选择所需的연결。可以选择串行포트或其中一个以太网연결。
属性연결为整数
取值范围
0 = Serial port
1 = Modbus TCP/IP
2 = Modbus UDP/IP
3 = Modbus ASCII/RTU over TCP/IP
4 = Modbus ASCII/RTU over UDP/IP
例如
Connection = 0
통신 속도
仅适用于연결 = 0
属性통신 속도与长
300
600
1200
2400
4800
9600 (默认)
14400
19200
38400
56000
57600
115200
128000
153600
230400
256000
460800
921600
例如
BaudRate = 9600
데이터 비트
仅适用于연결 = 0
属性 데이터Bits 作为整数
取值范围
7
8 (默认)
例如:
데이터Bits = 8
패리티
仅适用于연결 = 0
作为整数的属性奇偶校验
取值范围
0 = 无
1 = 奇数
2 = 偶数(默认)
例如:
Parity = 2
정지 비트
仅适用于연결 = 0
属性 StopBits as Integer取值范围
1 (默认)
2
例如:
StopBits = 1
串行포트
仅适用于연결 = 0
属性 SerialPort as Integer取值范围
1...255
默认值 = 1
例如:
SerialPort = 1
모드
仅适用于연결 = 0
属性모드为整数
取值范围
0 = RTU 모드
1 = ASCII 모드
例如:
Mode = 1
삭제Echo
仅适用于 연결 = 0
如果您的设备或 RS232/RS485 컨버터回显刚刚보내기的문자。
属性 RemoveEcho as Integer
取值范围
0(默认)
1(삭제回声)
例如:
RemoveEcho = 1
响应超时
ResponseTimeout 指定 Modbus Poll 在放弃之前应대기来自从设备响应的时间길이(以毫秒为单位)。
属性 ResponseTimeout 作为整数取值范围
50...100000
默认值 = 1000
例如:
ResponseTimeout = 1000
DelayBetweenPolls
属性 DelayBetweenPolls 作为整数取值范围
0...1000
默认值 = 20
例如:
DelayBetweenPolls = 20
服务器포트
仅适用于 Connection = 1...4
属性 ServerPort as Long取值范围
0...65535
默认值 = 502
例如:
ServerPort = 502
15.3.12. ConnectTimeout
ConnectTimeout 指定 Modbus Poll 대기 TCP/IP 연결成功的时间길이。
仅适用于 Connection = 1...4
属性 ConnectTimeout as Integer
取值范围
100...30000毫秒
默认值 = 1000ms
例如:
ConnectTimeout = 1000
IP버전
仅适用于 Connection = 1...4
属性 IPVersion as Integer
取值范围
4 = IP 버전 4(默认)
6 = IP 버전 6
例
IPVersion = 4
开放연결
열기使用 Connection 属性选择的연결。
函数 OpenConnection() 为整数
매개변수
此函数没有매개변수。
返回值
对于错误 3-5:请检查您是否拥有最新的시리얼 포트驱动程序。
| 错误 | 설명 |
|---|---|
| 0 | 成功 |
| 1 | 串行포트不可用 |
| 3 | 串行포트。无法从포트驱动程序获取当前设置。 |
| 4 | 串行포트。串行포트驱动程序不接受포트设置。 |
| 5 | 串行포트。串行포트驱动程序不接受超时设置。 |
| 12 | TCP/UDP 연결失败。WSA 启动 |
| 13 | TCP/UDP 연결失败。연결错误 |
| 14 | TCP/UDP 연결失败。超时 |
| 15 | TCP/UDP 연결失败。IOCTL |
| 17 | TCP/UDP 연결失败。套接字错误 |
| 21 | TCP/UDP 연결失败。주소信息 |
| 255 | 연결已열기 |
Excel 예제如何열기 Modbus TCP/IP 연결
Public app As Object
Dim res As Integer
' 创建一个指向 Modbus Poll 的对象
Set app = CreateObject("Mbpoll.Application")
' 选择 Modbus TCP/IP 프로토콜
app.Connection = 1
' 设置 IP 프로토콜버전为 IPv4
app.IPVersion = 4
' 设置目标设备的 IP 주소
app.IP주소 = "192.168.1.27"
' 设置服务器포트,默认为 502
app.ServerPort = 502
' 设置연결超时时间为 1000 毫秒
app.ConnectTimeout = 1000
' 设置响应超时时间为 1000 毫秒
app.ResponseTimeout = 1000
' 尝试열기연결,并将结果存储在변수 res 中
res = app.OpenConnection()Python 예제:如何设置串行연결
import win32com.client as win32
# 创建 Modbus Poll 적용程序对象
App = win32.Dispatch('Mbpoll.Application')
# 设置为串行연결
App.Connection = 0
# 选择 COM 포트 3
App.SerialPort = 3
# 设置통신 속도为 9600
App.BaudRate = 9600
# 设置奇짝수 패리티为无
App.Parity = 0
# 设置모드为 RTU
App.Mode = 0
# 设置响应超时时间为 1000ms
App.ResponseTimeout = 1000
# 设置两次请求之间的最小间隔时间为 20ms
App.DelayBetweenPolls = 20
# 열기연결
App.OpenConnection
# 创建一个 Modbus 显示窗口对象 Win1
Win1 = win32.Dispatch("Mbpoll.Document")
# 从슬레이브ID为1的设备읽기10个유지 레지스터,주소从0 (40001) 开始,每1000ms읽기一次
Win1.ReadHolding회원가입s(1, 0, 10, 1000)
# 显示 Modbus 窗口
Win1.ShowWindow()
# 设置显示的行数为10
Win1.Rows(0)
# 禁用새로고침以提高速度
Win1.EnableRefresh = False
# 为레지스터设置名称
Win1.Set이름(0, "회원가입 0")
# 重新활성화새로고침
Win1.EnableRefresh = True
# 调整所有列的大小以适应콘텐츠
Win1.ResizeAllColumns ()
# 调整窗口大小以适应콘텐츠
Win1.ResizeWindow()
# 대기用户按 Enter 键退出
_ = input("Press ENTER to quit:") 紧密연결
函数 닫기Connection() 为整数
매개변수
此函数没有매개변수。
返回值
如果成功,则为零。如果失败,则值为非零。
ShowCommunicationTraffic
显示통신流量窗口。
函数 ShowCommunicationTraffic()
매개변수
此函数没有매개변수。
返回值
没有
닫기CommunicationTraffic
如果显示,则닫기통신流量窗口。
函数 닫기CommunicationTraffic()
매개변수
此函数没有매개변수。
返回值
没有
읽기函数
以下函数的操作与您在读/写定义对话框 (F8) 中设置的相同。 읽기函数与 Modbus Poll 문서相关联。(包含데이터的窗口)
例如:
' 首先需要创建一个 Modbus Poll 문서对象
Public doc As Object
' 创建 Modbus Poll 문서对象实例
Set doc = CreateObject("Mbpoll.Document")
' 从슬레이브 ID 为 1 的设备읽기 100 个코일 상태,주소从 0 开始,每 1000 毫秒읽기一次
res = doc.ReadCoils(1, 0, 100, 1000) ' 읽기 100 个코일每 1000ms注意:必须先创建 Read,然后才能使用属性获取데이터。
읽기코일 ReadCoils
Modbus 功能代码 01
函数 ReadCoils(SlaveID 为整数,주소为长,数量为整数,ScanRate 为长)为整数
매개변수
奴隶ID:从주소 1 到 255
주소:데이터주소(以 0 为基数)
数量:데이터数量。1 至 2000
扫描速率:0 至 3600000msReturn value
True if success. False if not success
读이산 입력 ReadDiscreteInputs
Modbus 기능 코드 02
函数 读이산 입력(슬레이브ID As 整型, 주소 As 长整型, 数量 As 整型, 扫描率 As 长整型) As 整型
매개변수
- 슬레이브ID: 슬레이브 주소 1 至 255
- 주소: 데이터주소(基数 0)
- 数量: 데이터数量。1 至 2000
- 扫描率: 0 至 3600000ms
返回值
- 成功返回 True。失败返回 False。
读유지 레지스터 ReadHolding회원가입s
Modbus 기능 코드 03
函数 读유지 레지스터(슬레이브ID As 整型, 주소 As 长整型, 数量 As 整型, 扫描率 As 长整型) As 整型
매개변수
- 슬레이브ID: 슬레이브 주소 1 至 255
- 주소: 데이터주소(基数 0)
- 数量: 데이터数量。1 至 125
- 扫描率: 0 至 3600000ms
返回值
- 成功返回 True。失败返回 False。
读입력 레지스터 ReadInput회원가입s
Modbus 기능 코드 04
函数 读입력 레지스터(슬레이브ID As 整型, 주소 As 长整型, 数量 As 整型, 扫描率 As 长整型) As 整型
매개변수
- 슬레이브ID: 슬레이브 주소 1 至 255
- 주소: 데이터주소(基数 0)
- 数量: 데이터数量。1 至 125
- 扫描率: 0 至 3600000ms
返回值
- 成功返回 True。失败返回 False。
自动化쓰기函数
쓰기函数将存储在由属性填充的数组中的值쓰기。下面的쓰기函数不创建데이터窗口。要创建데이터窗口,请使用 Win 函数,例如 WriteMultiple회원가입sWin。
写单个코일 WriteSingleCoil
Modbus 기능 코드 05。
쓰기写数组中的第一个코일。
函数 写单个코일(슬레이브ID As 整型, 주소 As 长整型) As 整型
매개변수
- 슬레이브ID: 슬레이브 주소 0 至 255
- 주소: 데이터주소(基数 0)
返回值
- 如果写数组准备好且데이터已보내기,则返回 True。如果数组为空或매개변수错误,则返回 False。
- 控制적용程序负责通过回读쓰기的值来验证写操作。
写单个레지스터 WriteSingle회원가입
Modbus 기능 코드 06。
쓰기写数组中的第一个레지스터。
函数 写单个레지스터 (슬레이브ID As 整型, 주소 As 长整型) As 整型
매개변수
- 슬레이브ID: 슬레이브 주소 0 至 255
- 주소: 데이터주소(基数 0)
返回值
- 如果写数组准备好且데이터已보내기,则返回 True。如果数组为空或매개변수错误,则返回 False。
- 控制적용程序负责通过回读쓰기的值来验证写操作。
写多个코일 WriteMultipleCoils
Modbus 기능 코드 15。
쓰기写数组中存储的코일。
函数 写多个코일(슬레이브ID As 整型, 주소 As 长整型, 数量 As 整型) As 整型
매개변수
- 슬레이브ID: 슬레이브 주소 0 至 255
- 주소: 데이터주소(基数 0)
- 数量: 데이터数量。1 至 1968
返回值
- 如果写数组准备好且데이터已보내기,则返回 True。如果数组为空或매개변수错误,则返回 False。
- 控制적용程序负责通过回读쓰기的值来验证写操作。
写多个레지스터 WriteMultiple회원가입s
Modbus 기능 코드 16。
쓰기
写数组中存储的레지스터。
函数 写多个레지스터(슬레이브ID As 整型, 주소 As 长整型, 数量 As 整型) As 整型
매개변수
- 슬레이브ID: 슬레이브 주소 0 至 255
- 주소: 데이터주소(基数 0)
- 数量: 데이터数量。1 至 123
返回值
- 如果写数组准备好且데이터已보내기,则返回 True。如果数组为空或매개변수错误,则返回 False。
- 控制적용程序负责通过回读쓰기的值来验证写操作。
Python 예제
展示如何创建一个窗口,从주소 0(40001)읽기10个레지스터,然后쓰기5个레지스터的Python예제。
import sys
import time
import win32com.client as win32
# 创建Modbus Poll적용程序实例
App = win32.Dispatch('Mbpoll.Application')
# 设置연결유형为TCP/IP
App.Connection = 1
App.IP주소 = "127.0.0.1" # 设置IP주소
App.ResponseTimeout = 1000 # 设置响应超时时间为1000毫秒
App.DelayBetweenPolls = 20 # 设置请求间最小间隔为20毫秒
App.ConnectTimeout = 500 # 设置연결超时时间为500毫秒
App.ServerPort = 502 # 设置服务器포트为502
result = App.OpenConnection # 尝试열기연결
if result != 0:
print("Connection failed. 오답: ", result) # 연결失败时출력错误信息
sys.exit() # 退出程序
# 创建一个名为Win1的Modbus显示窗口
Win1 = win32.Dispatch("Mbpoll.Document")
# 从슬레이브ID 1的주소0 (40001)开始,每1000ms읽기10个유지 레지스터
Win1.ReadHolding회원가입s(1, 0, 10, 1000)
# 显示Modbus窗口
Win1.ShowWindow()
# 显示10行
Win1.Rows(0)
# 调整窗口大小以适应网格
Win1.ResizeWindow()
time.sleep(1.0) # 대기읽기完成
if Win1.ReadResult == 0: # 检查읽기结果
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))
# 在Modbus Poll的内部数组中准备要쓰기的데이터
Win1.S회원가입s(0, 1) # 注意,这里的1不是Modbus주소,而是数组的索引
Win1.S회원가입s(1, 10)
Win1.S회원가입s(2, 100)
Win1.S회원가입s(3, 1000)
Win1.S회원가입s(4, 10000)
# 쓰기레지스터。这个函数不会在Modbus Poll中创建窗口
# 使用函数 <<WriteMultiple회원가입sWin>> 来创建데이터窗口
Win1.WriteMultiple회원가입s(1, 0, 5)
_ = input("Wait for write Press ENTER:") # 대기쓰기,按回车继续
if Win1.WriteResult == 0: # 检查쓰기结果
print("Modbus write success")
else:
print("Write failed error: = ", Win1.WriteResult)
_ = input("Press ENTER to quit:") # 按回车退出15.6. 各种功能
各种功能与 Modbus Poll 문서相关联。(包含데이터的窗口)
15.6.1. ShowWindow
默认情况下,Modbus 문서窗口处于隐藏状态。ShowWindow 函数使 Modbus Poll 可见,并显示包含데이터콘텐츠的문서。
函数 ShowWindow()매개변수
此函数没有매개변수。返回值
没有
15.6.2. GetTx计数
获取请求数。
函数 GetTxCount() 只要매개변수
此函数没有매개변수。返回值
请求数。
获取수신计数
获取响应数量。
函数 获取수신计数() As 长整型
매개변수
此函数没有매개변수。
返回值
响应数量。
获取名称
获取值的名称。
函数 获取名称(索引 As 整型) As 문자串
매개변수
索引:索引0对应于第一个Modbus주소。
返回值
名称。
设置名称
更改值的名称。函数 设置名称(索引 As 整型, 名称 As 문자串)
매개변수
索引:索引0对应于第一个Modbus주소。
名称:值单元格的名称。
返回值
无
형식化전체
使用选定的형식형식化所有值单元格。
函数 형식化전체(형식 As 整型)
매개변수
형식:值单元格的형식。
返回值
无
获取형식
获取Modbus值的표시 형식。
函数 获取형식(索引 As 整型) As 整型
매개변수
索引:索引0对应于第一个Modbus주소。
返回值
| ID | 형식 (Format) | 중국어解释 |
|---|---|---|
| 0 | Signed | 有符号 |
| 1 | Unsigned | 无符号 |
| 2 | Hex | 16진수 |
| 3 | Binary | 2진수 |
| 4 | Float little-endian byte swap | 浮点数小端바이트交换 |
| 5 | Float big-endian | 浮点数大端 |
| 6 | Double little-endian byte swap | 双精度小端바이트交换 |
| 7 | Double big-endian | 双精度大端 |
| 8 | 32-bit Signed little-endian byte swap | 32位有符号小端바이트交换 |
| 9 | 32-bit Signed big-endian | 32位有符号大端 |
| 10 | Float little-endian | 浮点数小端 |
| 11 | Float big-endian byte swap | 浮点数大端바이트交换 |
| 12 | Double little-endian | 双精度小端 |
| 13 | Double big-endian byte swap | 双精度大端바이트交换 |
| 14 | 32-bit Signed little-endian | 32位有符号小端 |
| 15 | 32-bit Signed big-endian byte swap | 32位有符号大端바이트交换 |
| 17 | 32-bit Unsigned big-endian | 32位无符号大端 |
| 18 | 32-bit Unsigned little-endian byte swap | 32位无符号小端바이트交换 |
| 19 | 32-bit Unsigned big-endian byte swap | 32位无符号大端바이트交换 |
| 20 | 32-bit Unsigned little-endian | 32位无符号小端 |
| 21 | 64-bit Signed big-endian | 64位有符号大端 |
| 22 | 64-bit Signed little-endian byte swap | 64位有符号小端바이트交换 |
| 23 | 64-bit Signed big-endian byte swap | 64位有符号大端바이트交换 |
| 24 | 64-bit Signed little-endian | 64位有符号小端 |
| 25 | 64-bit Unsigned big-endian | 64位无符号大端 |
| 26 | 64-bit Unsigned little-endian byte swap | 64位无符号小端바이트交换 |
| 27 | 64-bit Unsigned big-endian byte swap | 64位无符号大端바이트交换 |
| 28 | 64-bit Unsigned little-endian | 64位无符号小端 |
注意:
此设置仅用于显示。使用 Get/Set 值函数时,仍需要使用 byteOrder 来获取正确的바이트序。
15.6.8. SetFormat
更改 Modbus 值的표시 형식。请参阅上面的형식值。
函数 SetFormat(索引为整数,형식为整数)매개변수
指数:索引 0 对应于第一个 Modbus 주소。
형식:值单元格的형식。返回值
没有
15.6.9. ResizeWindow
调整열기的窗口大小以适合网格。
函数 ResizeWindow()매개변수
此函数没有매개변수。返回值
没有
15.6.10. ResizeAllColumns
调整所有列的大小以适合单元格内的值。
函数 ResizeAllColumns()매개변수
此函数没有매개변수。返回值
没有
15.6.11. 行
指定网格中的行数。
函数行 (NumberRows)매개변수
数字行:网格中的行数。
| 번호 | 설명 |
|---|---|
| 0 | 10 行(默认) |
| 1 | 20 行 |
| 2 | 50 行 |
| 3 | 100 行 |
| 4 | 适合数量 |
返回值
没有
읽기结果
使用此属性来检查是否成功建立了与읽기操作的통신。
属性 읽기结果 As 整型
매개변수
此函数没有매개변수。
返回值
| 오답 | Description |
|---|---|
| 0 | 成功 SUCCESS |
| 1 | 超时错误 TIMEOUT ERROR |
| 2 | CRC错误 CRC ERROR |
| 3 | 响应错误(响应不是预期的슬레이브ID、기능 코드或주소)RESPONSE ERROR (The response was not the expected slave id, function or 주소) |
| 4 | 쓰기错误 WRITE ERROR |
| 5 | 읽기错误 READ ERROR |
| 6 | 포트未열기错误 PORT NOT OPEN ERROR |
| 10 | 데이터未初始化 데이터 UNINITIALIZED |
| 11 | 수신到的바이트不足 INSUFFICIENT BYTES RECEIVED |
| 16 | 바이트数错误 BYTE COUNT ERROR |
| 19 | 事务ID错误 TRANSACTION ID ERROR |
| 81h | 非法功能 ILLEGAL FUNCTION |
| 82h | 非法데이터주소 ILLEGAL 데이터 주소 |
| 83h | 非法데이터值 ILLEGAL 데이터 VALUE |
| 84h | 服务器设备失败 SERVER DEVICE FAILURE |
| 85h | 确认 ACKNOWLEDGE |
| 86h | 服务器设备忙 SERVER DEVICE BUSY |
| 87h | NAK-负确认 NAK-NEGATIVE ACKNOWLEDGMENT |
| 8Ah | 게이트웨이路径不可用 GATEWAY PATH UNAVAILABLE |
| 8Bh | 게이트웨이目标设备未响应 GATEWAY TARGET DEVICE FAILED TO RESPOND |
쓰기结果
使用此函数来检查쓰기操作是否成功。
在从슬레이브获得结果之前,值为데이터未初始化。参见읽기结果以获取可能的值列表。
属性
쓰기结果 As 整型
返回值
以整型返回쓰기结果。
저장
저장当前窗口。函数 저장(路径名 As 문자串) As 布尔型
매개변수
路径名:应저장文件的完全限定路径。
返回值
Boolean 布尔型
예제
# 首先需要一个Modbus Poll문서。
Public doc As Object
Set doc = CreateObject("Mbpoll.Document")
res = doc.ReadCoils(1, 0, 100, 1000) # 每1000毫秒읽기100个코일
res = doc.Save("C:\\Users\\User이름\\Desktop\\testfile.mbp") # 将문서저장到桌面的testfile.mbp文件自动化데이터属性
以下属性用于在Modbus Poll中的内部写/读数组中设置或获取值。使用的索引不是Modbus주소。无论使用的주소如何,索引总是从0开始计数。데이터属性与Modbus Poll문서相关联。(带有데이터的窗口)
每个데이터属性有两个버전:
一个没有后缀,例如S회원가입s,用于从内部写/读数组中设置或获取值。
一个带有Win后缀,例如S회원가입sWin,用于直接从데이터窗口设置或获取值。这在使用데이터窗口进行写操作(例如WriteMultiple회원가입sWin)时使用。
예제 1:
# 假设首先创建了doc。参见Excel예제。 # 在用于稍后写操作的데이터数组中,向索引0쓰기1 doc.S회원가입s(0) = 1 doc.S회원가입s(1) = 10 doc.S회원가입s(2) = 1234 # 将存储在Modbus Poll内部数组的3个레지스터 # 쓰기Modbus주소100(40101) # 不创建窗口 res = doc.WriteMultiple회원가입s(1, 100, 3) # 上述예제不创建데이터窗口,只是执行单次Modbus写操作。
예제 2,浮点数值:
쓰기3个浮点数值。
# 假设首先创建了doc。参见Excel예제。 doc.Floats(0) = 1.3 doc.Floats(2) = 10.5 doc.Floats(4) = 1234.12 # 将6个레지스터쓰기Modbus Poll res = doc.WriteMultiple회원가입s(1, 0, 6) # 쓰기6个레지스터,因为浮点数值是32位宽。
예제 3:
创建一个每1000ms쓰기3个레지스터的窗口。
# 假设首先创建了doc。参见Excel예제。 # 创建一个窗口,该窗口每1000ms쓰기콘텐츠 res = doc.WriteMultiple회원가입sWin(1, 100, 3, 1000) # 向데이터窗口的第一个单元格쓰기1 doc.S회원가입sWin(0) = 1 doc.S회원가입sWin(1) = 10 doc.S회원가입sWin(2) = 1234 # 现在每1000ms就将3个레지스터쓰기슬레이브id 1주소100
在这些코드 예제中,doc是Modbus Poll문서的一个实例,用于执行各种Modbus操作,如쓰기레지스터。예제展示了如何使用不带Win后缀的属性直接操作内部数组,以及如何使用带Win后缀的属性操作与데이터窗口关联的值。
코일, CoilsWin
Property Coils(Index As Integer) As IntegerDescription
Sets a coil in the write array structure or return a coil from the read array.Syntax
Coils(Index) [=newvalue]
短整型레지스터, S회원가입sWin
Property S회원가입s(Index As Integer) As IntegerDescription
Sets a register in the write array structure or return a register from the read array.Syntax
S회원가입s(Index) [=newvalue]
长整型레지스터, U회원가입sWin
属性 U회원가입s(Index As Integer) As Long설명
在写数组结构中设置레지스터或从읽기数组返回레지스터。语法
U회원가입s(索引) [=newvalue]
32位整型、Ints_32Win
属性 Ints_32(Index As Integer) As Double설명
在쓰기数组结构中设置一个 32 位整数,或从읽기数组中返回一个整数。语法
Ints_32(索引) [=newvalue]
32位无符号整型、UInts_32Win
属性 UInts_32(index as integer) as double설명
在쓰기数组结构中设置一个 32 位无符号整数,或从읽기数组返回一个无符号整数。语法
UInts_32(索引) [=新值]
64位整型、Ints_64Win
属性 Ints_64(Index As Integer) As Double설명
在쓰기数组结构中设置一个 64 位整数,或从읽기数组返回一个整数。语法
Ints_64(索引) [=新值]
64位无符号整型、UInts_64Win
属性 UInts_64(Index As Integer) As Double설명
在쓰기数组结构中设置一个 64 位无符号整数,或从읽기数组返回一个无符号整数。语法
UInts_64(索引) [=新值]
浮点数,FloatsWin
属性 floats(index as integer) as single설명
在쓰기数组结构中设置浮点数或从읽기数组返回浮点数。语法
浮点数(索引) [=新值]
双精度浮点数,DoublesWin
属性 doubles(index as integer) as double설명
在쓰기数组结构中设置双精度值,或从읽기数组返回双精度值。语法
双打(索引) [=newvalue]
바이트顺序
属性 ByteOrder As Integer설명
设置 Ints_32、UInts_32、Ints_64、UInts_64、Floats 和 Doubles 属性使用的바이트顺序。
Win 버전不使用此属性 ByteOrder。
| 번호 | 바이트序 |
|---|---|
| 0 | 大端(默认) Big-endian (Default) |
| 1 | 小端바이트交换 Little-endian byte swap |
| 2 | 大端바이트交换 Big-endian byte swap |
| 3 | 小端 Little-endian |
Ints_32예제:
바이트顺序:Big-endian
10진수数 123456789 或16진수 07 5B CD 15 在 Modbus 消息中通过线路
排序:07 5B CD 15语法
ByteOrder [=新值]
15.8. 쓰기函数(创建데이터窗口)
以下函数的操作与您在读/写定义对话框 (F8) 中设置的相同。
这些函数创建一个데이터窗口,并根据扫描速率쓰기데이터窗口中的데이터콘텐츠。
15.8.1. WriteSingleCoilWin
Modbus 功能代码 05。
函数 WriteSingleCoilWin(SlaveID As Integer, 주소 As Long, ScanRate As Long) As Integer매개변수
奴隶ID:从주소 1 到 255
주소:데이터주소(基数 0)
扫描速率:0 到 3600000ms返回值
如果成功,则为真。如果不是成功,则为假
15.8.2. WriteSingle회원가입Win
Modbus 功能代码 06。
函数 WriteSingle회원가입Win(SlaveID As Integer, 주소 As Long, ScanRate As Long) As Integer매개변수
奴隶ID:从주소 1 到 255
주소:데이터주소(基数 0)
扫描速率:0 到 3600000msReturn value
True if success. False if not success
Python Example how to 열기 a window and write a single register every 1000 ms
15.8.3. WriteMultipleCoilsWin
Modbus 功能代码 15.
函数 WriteMultipleCoilsWin(SlaveID 为整数,주소为长,数量为整数,ScanRate 为长)为整数매개변수
奴隶ID:从주소 1 到 255
주소:데이터주소(以 0 为基数)
数量:데이터数量。1 至 1968
扫描速率:0 至 3600000ms返回值
如果成功,则为真。如果不是成功,则为假
15.8.4. WriteMultiple회원가입sWin
Modbus 功能代码 16.
函数 WriteMultiple회원가입sWin(SlaveID 为整数,주소为长,数量为整数,ScanRate 为长)为整数매개변수
奴隶ID:从주소 1 到 255
주소:데이터주소(以 0 为基数)
数量:데이터数量。1 至 123
扫描速率:0 至 3600000ms返回值
如果成功,则为真。如果不是成功,则为假
16. 异常和错误消息
Modbus 异常和错误消息在 2 中以红色文本显示钕行。

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 | 服务器设备繁忙 | 专门与编程命令结合使用。 服务器(或从属服务器)正在处理长时间的程序命令。클라이언트(或主服务器)应稍后在服务器(或슬레이브)空闲时重新传输消息。 |
| 0安培 | 게이트웨이路径不可用 | 与게이트웨이结合使用,表示게이트웨이无法分配从입력포트到출력포트的内部통신路径来处理请求。通常表示게이트웨이설정错误或过载。 |
| 0乙 | 게이트웨이目标设备无法响应 | 与게이트웨이结合使用,表示未从目标设备获得响应。通常表示设备不在네트워크上。 |
16.2. Modbus Poll 错误消息
| 错误信息 | 意义 |
|---|---|
| 超时错误 | 未在预期时间内收到响应。 检查以下콘텐츠:串行연결串行设置,如통신 속도、奇짝수 패리티、데이터 비트、정지 비트等。Modbus 모드、RTU 或 ASCII슬레이브 ID响应超时TCP/IP 연결响应超时检查主机和포트是否与슬레이브一致 |
| 响应错误 | 响应不是预期的响应。不同的从属 ID。 |
| CRC错误 | 수신到的响应的 CRC 值不正确。 |
| 쓰기错误 | 这是串行驱动程序보고서的错误。如果使用 USB/RS232/485 컨버터并拔下 USB 电缆,则可能会发生这种情况。有 4 种유형:断裂条件I/O 错误串行연결错误출력缓冲区溢出使用 TCP/IP 연결的쓰기错误通常是由연결丢失引起的。 |
| 읽기错误 | 这是串行驱动程序보고서的错误。有 6 种유형:取景误差문자缓冲区溢出奇짝수 패리티误差입력缓冲区溢出I/O 错误断裂条件使用 TCP/IP 연결的읽기错误通常是由연결丢失引起的。 |
| 수신的바이트数不足 | 响应不是预期的길이。 |
| 바이트计数错误 | 响应中的바이트计数不正确。与预期相比。 |
| 事务 ID 错误 | 它用于事务配对,MODBUS服务器在响应中복사请求的트랜잭션 식별자。 |
미니프로그램 버전,무료使用!!!

求软件
非常好
*这软件可以*
这软件不错
666
튜토리얼挺详细的,我还需要软件,네트워크上还没看到这么详尽的튜토리얼!太棒了!
平台太好了
真滴太好用了
非常好
老六
很棒
平台太好了
需要需要
非常棒
嗯,好像可以
感谢感谢공유
太棒了
太棒了
1
튜토리얼很详细!太棒了!
兄弟
平台讚讚讚
11
123
3456
y456hg
谢谢楼主공유
测试用
네트워크上还没看到这么详尽的튜토리얼!太棒了!
太好了,非常好的자료
这个平台太好了.正是需要的。
这个平台太好了。