- 1. Modbus Slave
- 2. Modbus 从站的system要求
- 3. Modbus从站特性
- 4. connect
- 5. 支持的 Modbus Function
- 6. Display format
- 7. 其他Function
- 8. 概述
- 9. 随时随地提供帮助
- 10. 命名单元格
- 11. 值单元格
- 12. 更改字体
- 13. 条件颜色
- 14. 缩放
- 15. 实时图表
- 16. 打开一个新窗口
- 17. connect对话框
- 18. connect(Connection)
- 19. 串口设置(Serial Settings)
- 20. TCP/IP服务器(TCP/IP Server)
- 21. 从机定义(Slave definition)
- 22. 从机ID(Slave ID)
- 23. function code(Function)
- 24. address(Address)
- 25. 隐藏名称列(Hide name columns)
- 26. 单元格中的address(Address in cell)
- 27. PLC address(基address 1)PLC Addresses (Base 1)
- 28. 行数(Rows)
- 29. 实时图表(Real time Charting)
- 30. 设置(Settings)
- 31. 变焦Function
- 32. 平移Function
- 33. 将data链接到图表系列
- 34. 出口系列
- 35. Display format
- 36. 本机 Modbus register
- 37. 32 位有符号整数(32-bit signed integer)
- 38. 32 位无符号整数(32-bit unsigned integer)
- 39. 64 位有符号整数(64-bit signed integer)
- 40. 64 位无符号整数(64-bit unsigned integer)
- 41. 32位浮点数(32-bit floating)
- 42. 64位双精度浮点数(64-bit double)
- 43. 保存/打开工作区
- 44. 通讯流量
- 45. OLE/自动化
- 46. Excel 示例
- 47. Python示例
- 48. connectFunction/属性
- 49. 自动化设置Function
- 50. 自动化data属性
- 51. Modbus Slave 中文版用户手册及软件Download

Mini Program Version,free使用!!!
Modbus Slave
Modbus Slave 用于在 100 个窗口中模拟多达 100 个从机设备!使用此模拟Tools加快您的 PLC 编程速度。在从供应商处收到从属设备之前,请开始编程和测试。主应用程序可以访问任何打开Document中包含的data。与 Modbus 轮询相同的用户界面。
监控串行流量。用于与 Visual Basic、Excel 等connect的 OLE 自动化。根据您的具体要求解释和显示 Modbus data。例如,在 Excel 中Edit从属data。尝试该程序附带的 Excel example.xls。
Modbus 从站中打开的每个窗口都可以配置为表示来自相同或不同从站节点的data。
Modbus 从站的system要求
硬件要求
处理器; 建议 1 GHz 或更快
1 GB RAM
5 MB 可用硬盘空间
1024 x 768 显示分辨率Operationsystem要求
支持从 Windows 7 到 Windows 11 的所有 Windows 版本。
Modbus Slave 版本 8 在 Windows XP 上运行。
1.1.1. 静默安装
静默安装不需要用户干预,并且没有用户界面。用户看不到任何对话框,也不会被问到任何问题。
使用命令行 /S switch。
Modbus从站特性
connect
Modbus Slave 使用以下方式从设备读取/写入data:
- RS232 或 RS485 网络上的 Modbus RTU 或 ASCII。(USB/RS232/485转换器)
- Modbus TCP/IP
- TCP/IP 上的 Modbus。(Modbus RTU封装在TCPdata包中)
- 协议UDP/IP
- 基于 UDP/IP 的 Modbus。(Modbus RTU封装在UDPdata包中)
支持的 Modbus Function
- 01 (0x01) 读取线圈
- 02 (0x02) Read discrete inputs
- 03 (0x03) Read and hold register
- 04 (0x04) Read input register
- 05 (0x05) 写单个线圈
- 06 (0x06) 写单个register
- 08 (0x08) 诊断(仅限串行线)
- 11 (0x0B) 获取通讯事件计数器(仅限串行线)
- 15 (0x0F) Write multiple coils
- 16 (0x10) Write multiple registers
- 17 (0x11) 报告服务器 ID(仅限串行线路)
- 22 (0x16) 掩码写register
- 23 (0x17) 读/写多个register
- 43 / 14 (0x2B / 0x0E) 读取设备标识
Display format
每个单元格都可以单独format化。
- 16位有符号register(Signed 16-bit register)
- 16位无符号register(Unsigned 16-bit register)
- hexadecimal(Hex)
- binary(Binary)
- 具有任意字/byte order的 32 位有符号整数(32-bit signed integer with any word/byte order)
- 具有任意字/byte order的 32 位无符号整数(32-bit unsigned integer with any word/byte order)
- 具有任意字/byte order的 64 位有符号整数(64-bit signed integer with any word/byte order)
- 具有任意字/byte order的 64 位无符号整数(64-bit unsigned integer with any word/byte order)
- 具有任意字/byte order的 32 位浮点数(32-bit float with any word/byte order)
- 具有任意字/byte order的 64位双精度浮点数(64-bit double float with any word/byte order)
其他Function
- 用于与 Excel VBA、Python 等connect的 OLE/自动化。
- data流量监控
- 打印和打印预览
- 字体选择
- 条件颜色
- 缩放
- 实时图表
- 保存/打开工作区
概述
Modbus Slave 使用多Document界面。这意味着可以打开多个窗口。每一个具有不同的data内容,用于同时模拟不同的从机设备。

这张照片显示了两个打开的窗口。一个模拟来自address 0 (40001) 从机 id 1 的 10 个保持register,另一个模拟来自address 0 (40001) 从机 id 2 的 10 个保持register。
随时随地提供帮助
按 F1即可获取与当前所选项目Related的主题的上下文Related帮助。
SHIFT + F1调用特殊的“帮助模式”,其中光标变成帮助光标(箭头+问号)。然后,用户可以选择用户界面中的可见对象,例如菜单项、Tools栏button或窗口。这将打开有关描述所选项目的主题的帮助。
命名单元格
您可以在此处键入任何Text来指定值单元格。您还可以从 Excel 单元格Copy/粘贴Text。
值单元格
显示 Modbus register的data值。如果双击值单元格,将出现一个对话框,您可以在该值单元格中输入新值。在值单元格中键入数字也会显示输入对话框。

更改字体
要更改字体,您有 2 个选项
- 选择要更改的单元格,然后右键单击。
- 选择要更改的单元格,然后选择菜单→显示→字体。

条件颜色
条件颜色可帮助您直观地显示特定范围内的值。3 种颜色选择
- 默认颜色:如果没有任何条件颜色Computation result为 true,则使用此颜色。
- Rules 1:如果表达式的Computation result为 true,则使用此颜色选择。Rules 1 优先于Rules 2。
- Rules 2:如果表达式的Computation result为 true,则使用此颜色选择。
7 种比较运算符
- not used: 未使用
- equal to: 等于
- greater than: 大于
- less than: 小于
- greater than or equal to: 大于等于
- less than or equal to: 小于等于
- and: 与
当data type为 float 或 32 位 long Type时,不能使用“and”运算符。如果选择“and”,则条件值将以hexadecimal数字形式输入。如果单元格和条件值中的任何位均为 1,则其Computation result为 true。
颜色示例
如果单元格值大于 0,则为绿色;如果小于 0,则为红色。

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

(X1,Y1) 和 (X2,Y2)
一条通过两点 (X1,Y1) 和 (X2,Y2) 的直线
Slope=m=Y2−Y1/X2−X1
直线方程
Y=m⋅(X−X1)+Y1
精确
小数点后的位数。
Enable
必须Enable此Function,以从Modbus服务器/从站缩放值。如果选择了非16/32位整数Display format,缩放会自动禁用
实时图表
该图表可以实时绘制 12 个系列,每个系列最多 100000 个点。
打开一个新窗口
要打开另一个窗口,您有 3 个选项:
- 按 CTRL+N
- 在文件菜单中选择新建
- 按
Tools栏上的
connect对话框
要打开connect对话框,您有 2 个选项:
- 按F3
- 从connect菜单中选择connect

connect(Connection)
有 5 种不同的connectType:
- 串口:
通过串行线路的 Modbus。RS232 或 RS485。可以使用USB串行转换器。 - Modbus TCP/IP:
如果要与 MODBUS TCP/IP 网络通信,请选择 TCP/IP。在这种情况下,从站 ID 与 MODBUS TCP/IP 中使用的单元 ID 相同。
端口号默认为 502。 - Modbus UDP/IP:
如果要与 MODBUS UDP/IP 网络通信,请选择 UDP/IP。这与 Modbus TCP/IP 相同,但使用无connect UDP 协议。 - TCP/IP 上的 Modbus RTU:
这是通过 TCP/IP 网络而不是串行线路send的 RTU 消息。 - Modbus RTU Over UDP/IP:
这是通过 UDP/IP 网络而不是串行线路send的 RTU 消息。
根据您的选择,一些其他设置将呈灰色。
串口设置(Serial Settings)
使用这些参数来设置串行端口设置。仅当connectType为“串行端口”时它们才可用。模式
使用此选项选择RTU或ASCII模式。默认 RTU。数字SR
指定是否监视 DSR(data集就绪)信号以进行输出流控制。如果该成员为 TRUE 并且 DSR Close,则输出将暂停,直到再次send DSR。CTS
指定是否监视 CTS(Clearsend)信号以进行输出流量控制。如果Enable此复选框并且Close CTS,则输出将暂停,直到再次send CTS。即时战略Switch
指定如果byte可用于传输,则 RTS 线将为高电平。send所有缓冲byte后,RTS 线将为低电平。
如果您的 232/485 转换器没有自动方向switch,则可以使用它来Switch方向。
| 如果可能,应避免使用 RTS 控制的 RS232/RS485 转换器。对于Windows、Linux等非实时Operationsystem,很难确定发射机Close的具体time。如果过早Close,字符可能仍位于 FIFO 或 UART 的sendregister中,并且这些字符将会丢失。因此从机将无法识别该消息。另一方面,如果Close得太晚,则从设备的消息会被损坏,并且主设备将无法识别该消息。 |
TCP/IP服务器(TCP/IP Server)
TCP/IP 服务器设置仅在使用以太网connect时可用。IPaddress
指定要侦听的 IP address。如果您的 PC 上有多个网络connect,这非常有用。Modbus Slave 的每个实例都可以侦听特定网络。默认为本地主机 127.0.0.1任何address
如果您希望 Modbus Slave 侦听所有网络,请选中此项。忽略单元 ID
许多PLC设备会忽略该field,并且大多数客户端默认值为零。然而,网关或专用程序可以使用单元号来指示需要什么Type的处理。港口
服务器端口号。默认502
从机定义(Slave definition)
使用此命令可以定义要为活动窗口定义的data数组。
要打开 Slave Definition 对话框,您有 3 个选项:
- 按 F8
- 从设置菜单中选择“从站定义”
- 按
Tools栏上的

从机ID(Slave ID)
范围 1 到 255。(MODBUS 协议规范规定为 247)。值 0 也可以直接与 MODBUS/TCP 或 MODBUS/UDP 设备通信。
function code(Function)
您可以选择 4 个Function代码中的 1 个。
- 01:读取线圈(0x)。接受写入Function 05 和 15
- 02:Read discrete inputs (1x)
- 03:Read and hold register(4x)。接受写入Function 06、16、22 和 23
- 04:Read input register(3x)
address(Address)
Modbus协议中的address很混乱!一些协议规范使用协议/消息address,而其他协议规范使用设备寻址。
协议/消息address
某些协议规范使用从 0 到 65535 计数的协议/消息address以及Function代码。这也是新的 Modbus 规范所使用的内容。这是通过线路send的消息中的address。
Modbus Slave 使用协议/消息address从 0 到 65535 计数。
Device address
一些协议规范使用Device address/register。register从 1 开始计数。第一个数字描述要使用的Function。这意味着Device address 40101 由address 100 标识。“4”表示保持register和 4x register从 1 开始计数。因此“4XXXX”引用是隐式的。更令人困惑的是:4x 表示Function代码 03,3x 表示Function代码 04!
5 位与 6 位寻址
addressformat 4x 从 40001 计数到 49999。下一个address不是50000。在过去,9999 个address就足够了。有些情况下9999还不够。然后添加一个零。40101 变为 400101,依此类推。这称为 6 位寻址或扩展寻址。
这对于 Modbus Slave 来说不是问题。410001 变成 10000。“4”被丢弃,剩下的 10001 减 1,因为我们从 0 而不是 1 开始计数。
address示例
这些示例展示了在规范使用Device address的情况下如何设置 Modbus 从站。
定义保持register
您想要从设备 ID 2 的Device address 40011 定义 20 个register。从“4”我们知道这是Function 03“Read and hold register”。
- 从机 ID = 2
- Function =“03 Read and hold register (4x)”
- address = 10(11 减 1)
- quantity = 20
定义离散输入
您想要从从站 ID 5 的address 110201 定义 1000 个线圈。从“1”我们知道这是Function 02“Read discrete inputs”
- 从机 ID = 5
- Function =“02 Read discrete inputs (1x)”
- address = 10200 (10201 – 1)
- quantity = 1000
隐藏名称列(Hide name columns)
隐藏所有名称列。如果不使用它们,这可以方便地腾出More空间。
单元格中的address(Address in cell)
如果Enable,address也会显示在值单元格中,例如:2000 = 00000

PLC address(基address 1)PLC Addresses (Base 1)
此选项会将address显示为Device address。

行数(Rows)
指定您喜欢的网格中的行数。
实时图表(Real time Charting)
使用此命令可在图表中实时绘制最多 12 个data系列。
实时图表速度很快,能够在收到新data后尽快绘制新线。
| 所有图表设置都保existence工作区文件中。保存/打开工作区 |
要打开实时图表对话框,您有 2 个选项:
- 按 Alt + R
- 从显示菜单中选择“实时图表”

X 轴显示自图表启动以来的秒数。
当点到达图表末尾时,有 3 个选项:
- End时停止:图表停止。
- End时重新启动:图表重新开始。
- 继续:继续,直到达到最大点数或按下停止button。
设置(Settings)
默认情况下,所有 12 个系列都链接到左侧 Y 轴。如果要将系列链接到右 Y 轴,请选中“右 Y 轴”复选框。指定
- 颜色
- 右 Y 轴
- 标题。如果标题为空,则使用阅读窗口中的名称进行初始化
- 抵消
展示
- 文件名
- address
偏移对于在同一 Y 轴上对齐data点很有用。例如,0 或 1 的data点可以偏移,这样它们就不会绘制在彼此之上。

变焦Function
如果您想See more详细信息,放大图表会很有用。缩放由鼠标左键控制。要缩放图表的特定部分,只需左键单击图表(这将是缩放矩形的左上角)并拖动到右下角。将出现一个矩形。一旦释放鼠标button,轴就会自动调整到您选择的区域。
如果您左键单击图表(例如开始缩放),但如果您移动到左上角,则使用缩放和平移FunctionComplete的所有修改都将被Cancel(图表将处于原来的状态)在进行平移和缩放Operation之前)。
平移Function
要平移控件,请右键单击控件上的某处并移动鼠标。鼠标下方的点将跟随鼠标的移动。
将data链接到图表系列
除非将 Modbus data单元链接到 12 个系列之一,否则图表不知道要使用哪些data。为此,请选择一个值单元格,然后从菜单→显示中选择“链接到图表”。

出口系列
将系列data保存到磁盘或Copy到剪贴板。将data直接粘贴到 Excel 中以进行进一步处理。
尽管使用非逗号field分隔符,但该文件仍具有 .csv 扩展名。
分隔符:选择分隔Text文件中的值的字符。Copy/粘贴到 Excel 时使用制表符分隔符。此外还给出了一些附加信息。
- 点数
- 最大分值
- 最小分值
- 平均分值

Display format
标记要format化的单元格。从显示菜单中选择 28 种Display format之一。
本机 Modbus register
16 位 Modbus register可以以 4 种不同的模式显示。
- 签
- 未签名
- hexadecimal
- ASCII – hexadecimal
- binary
32 位有符号整数(32-bit signed integer)
它结合了 2 个 16 位 Modbus register。它可以以 4 种不同的字/byte order显示。
- 有符号整数 大尾数
- 有符号整数 小尾数
- 有符号整数大端byte交换
- 有符号整数小端byte交换例子byte order:AB CD(大端)
decimal数 123456789 或hexadecimal数07 5B CD 15
Modbus 消息中通过线路传输的顺序:07 5B CD 15
32 位无符号整数(32-bit unsigned integer)
它结合了 2 个 16 位 Modbus register。它可以以 4 种不同的字/byte order显示。
- 无符号整数 大尾数
- 无符号整数 小尾数
- 无符号整数 Big-endian byte交换
- 无符号整数小端byte交换例子byte order:AB CD(大端)
decimal数 123456789 或hexadecimal数07 5B CD 15
Modbus 消息中通过线路传输的顺序:07 5B CD 15
64 位有符号整数(64-bit signed integer)
它结合了 4 个 16 位 Modbus register。它可以以 4 种不同的字/byte order显示。
- 有符号整数 大尾数
- 有符号整数 小尾数
- 有符号整数大端byte交换
- 有符号整数小端byte交换例子byte order:AB CD EF GH(大端)
decimal数 -1,234,567,890,123,456,789 或hexadecimal数EE DD EF 0B 82 16 7E EB
Modbus 消息中的线路顺序:EE DD EF 0B 82 16 7E EB
64 位无符号整数(64-bit unsigned integer)
它结合了 4 个 16 位 Modbus register。它可以以 4 种不同的字/byte order显示。
- 无符号整数 大尾数
- 无符号整数 小尾数
- 无符号整数 Big-endian byte交换
- 无符号整数小端byte交换例子byte order:AB CD EF GH(大端)
decimal数 1,234,567,890,123,456,789 或hexadecimal数11 22 10 F4
7D E9 81 15 Modbus 消息中的线路顺序:11 22 10 F4 7D E9 81 15
32位浮点数(32-bit floating)
它结合了 2 个 16 位 Modbus register。它可以以 4 种不同的字/byte order显示。
- 浮点大尾数
- 浮点数小尾数
- 浮点大端byte交换
- 浮点小端byte交换例子byte order:AB CD(大端)
浮点数 123456.00 或hexadecimal47 F1 20 00
Modbus 消息中的线路顺序:47 F1 20 00
64位双精度浮点数(64-bit double)
它结合了 4 个 16 位 Modbus register。它可以以 4 种不同的字/byte order显示。
- 双大尾数
- 双小端
- 双大端byte交换
- 双小端byte交换例子byte order:AB CD EF GH(大端)
浮点数 123456789.00 或hexadecimal41 9D 6F 34 54 00 00 00
Modbus 消息中的线路顺序:41 9D 6F 34 54 00 00 00
保存/打开工作区
如果您打开许多Related的 Modbus 窗口,可以方便地在一个工作区中保存所有打开和排列的 Modbus 窗口的当前布局的快照。
工作区 (*msw) 是一个包含所有打开窗口的显示信息和文件名的文件。不是实际内容。为此,请转到文件→保存工作区。
connect和图表设置存储在工作区文件中。
当您打开工作区文件时,Modbus Slave 将打开所有 Modbus 窗口并以您保存的布局显示它们。
通讯流量
选择菜单“显示”→“通讯”以显示串行线路或以太网电缆上的流量。使用停止button暂时停止更新以进行检查。
使用Copybutton将所选行Copy到剪贴板。

| 该窗口仅显示 Modbus 从站send和receive的data。您不能将其用作data嗅探器。 |
| 在执行其他命令时保持此窗口打开。 |
OLE/自动化
自动化(以前称为 OLE 自动化)使一个应用程序可以Operation另一应用程序中实现的对象。
自动化客户端是一个可以Operation属于另一个应用程序的公开对象的应用程序。这也称为自动化控制器。
自动化服务器是向其他应用程序公开可编程对象的应用程序。Modbus Slave是一个自动化服务器。
这意味着您可以使用任何支持VBA(Visual Basic for Applications)的程序(例如Visual Basic、Excel等)根据您的具体要求解释和显示modbusdata。
Excel 示例
当您想要编写宏时,您应该显示“开发人员”选项卡或在开发人员模式下运行。
Excel 2007

- 单击 Microsoft Office button,然后单击 Excel 选项。
- 单击“流行”,然后选中“在Function区中显示开发人员选项卡”复选框。
请注意,Function区是 Microsoft Fluent 用户界面的一部分。
Excel 2010、2016
- 单击文件选项卡。
- 单击选项。Excel 选项窗口将打开。
- 在左侧窗格中单击“CustomizationFunction区”。
- 在右侧窗格的“主选项卡”下,选中“开发人员”复选框。
- 单击“确定”。“开发人员”选项卡现在应该显示在Function区中(最右侧的选项卡)。
Excel 示例代码
此示例打开一个模拟保持register的窗口。
Modbus Slave 是隐藏的,但您可以通过Cancel注释“ShowWindow”行来显示它。这将显示其中一个窗口。
Modbus Slave 安装中还包含一个示例。
开始 → 所有程序 → Modbus Slave → Excel 示例Excel VBA 示例
Public doc As Object
Public app As Object
Dim status As Integer
Dim n As Integer
Private Sub StartSlave_Click()
' Create an application object. You can only create 1 application object
Set app = CreateObject("Mbslave.Application")
' Create a new Modbus Slave document (Data Window)
' This is the same as open a new data window in Modbus Slave
' You can create up to 50 Modbus Slave documents (Data Window)
Set doc = CreateObject("Mbslave.Document")
' Show Modbus Slave
' res = doc.ShowWindow()
' Create doc2 if needed.
' Set doc2 = CreateObject("Mbslave.Document")
' Set one of 5 connection types.
app.Connection = 1 ' Modbus TCP/IP
' TCP/IP settings.
' No need to set IP address. We listen to any address. (Default).
app.ServerPort = 502
app.IPVersion = 4
' Open the connection.
res = app.OpenConnection()
Range("D5").Value = res
res = doc.SetupHoldingRegisters(1, 100, 8)
doc.SRegisters(0) = 1 ' Modbus address 100
doc.SRegisters(1) = -10 ' Note that the Index used counts from 0
doc.URegisters(2) = 50000 ' no matter the Modbus address used.
doc.URegisters(3) = 60000
doc.Longs(4) = 10000 ' A long takes 2 registers
doc.Floats(6) = 123.45 ' A float takes 2 registers
' Now a master can read 8 Holding registers with a mix of 3 data types
End SubPython示例
此 Python 示例打开一个窗口并设置所有可能的data format。Python 示例
import win32com.client as win32
SIGNED = 0
UNSIGNED = 1
HEX = 2
BINARY = 3
FLOAT_LE_BS = 4
FLOAT_BE = 5
DOUBLE_LE_BS = 6
DOUBLE_BE = 7
S32_LE_BS = 8
S32_BE = 9
FLOAT_LE = 10
FLOAT_BE_BS = 11
DOUBLE_LE = 12
DOUBLE_BE_BS = 13
S32_LE = 14
S32_BE_BS = 15
U32_BE = 17
U32_LE_BS = 18
U32_BE_BS = 19
U32_LE = 20
S64_BE = 21
S64_LE_BS = 22
S64_BE_BS = 23
S64_LE = 24
U64_BE = 25
U64_LE_BS = 26
U64_BE_BS = 27
U64_LE = 28
#Endianness
BE = 0
LE = 3
BE_BS = 2
LE_BS = 1
App = win32.Dispatch('Mbslave.Application')
App.Connection = 1
App.IPAddress = "127.0.0.1"
App.ServerPort = 502
App.OpenConnection
#Create a Modbus display window called Win1
Win1 = win32.Dispatch("Mbslave.Document")
# Setup 100 holding registers with slave ID 1, address 0 (40001)
Win1.SetupHoldingRegisters(1, 0, 100)
# Show the Modbus window
Win1.ShowWindow()
# Show 20 rows
Win1.Rows(1)
# Disable refresh for speed
Win1.EnableRefresh = False
# Set all different formats
# This sets how the value is displayed
# Use ByteOrder to set the actual endianness
Win1.SetFormat(0, SIGNED)
Win1.SetFormat(1, UNSIGNED)
Win1.SetFormat(2, HEX)
Win1.SetFormat(3, BINARY)
Win1.SetFormat(4, S32_BE)
Win1.SetFormat(6, S32_LE)
Win1.SetFormat(8, S32_BE_BS)
Win1.SetFormat(10, S32_LE_BS)
Win1.SetFormat(12, U32_BE)
Win1.SetFormat(14, U32_LE)
Win1.SetFormat(16, U32_BE_BS)
Win1.SetFormat(18, U32_LE_BS)
Win1.SetFormat(20, S64_BE)
Win1.SetFormat(24, S64_LE)
Win1.SetFormat(28, S64_BE_BS)
Win1.SetFormat(32, S64_LE_BS)
Win1.SetFormat(40, U64_BE)
Win1.SetFormat(44, U64_LE)
Win1.SetFormat(48, U64_BE_BS)
Win1.SetFormat(52, U64_LE_BS)
Win1.SetFormat(60, FLOAT_BE)
Win1.SetFormat(62, FLOAT_LE)
Win1.SetFormat(64, FLOAT_BE_BS)
Win1.SetFormat(66, FLOAT_LE_BS)
Win1.SetFormat(80, DOUBLE_BE)
Win1.SetFormat(84, DOUBLE_LE)
Win1.SetFormat(88, DOUBLE_BE_BS)
Win1.SetFormat(92, DOUBLE_LE_BS)
# Set all Names to used format
Win1.SetName(0, "SIGNED")
Win1.SetName(1, "UNSIGNED")
Win1.SetName(2, "HEX")
Win1.SetName(3, "BINARY")
Win1.SetName(4, "S32_BE")
Win1.SetName(6, "S32_LE")
Win1.SetName(8, "S32_BE_BS")
Win1.SetName(10, "S32_LE_BS")
Win1.SetName(12, "U32_BE")
Win1.SetName(14, "U32_LE")
Win1.SetName(16, "U32_BE_BS")
Win1.SetName(18, "U32_LE_BS")
Win1.SetName(20, "S64_BE")
Win1.SetName(24, "S64_LE")
Win1.SetName(28, "S64_BE_BS")
Win1.SetName(32, "S64_LE_BS")
Win1.SetName(40, "U64_BE")
Win1.SetName(44, "U64_LE")
Win1.SetName(48, "U64_BE_BS")
Win1.SetName(52, "U64_LE_BS")
Win1.SetName(60, "FLOAT_BE")
Win1.SetName(62, "FLOAT_LE")
Win1.SetName(64, "FLOAT_BE_BS")
Win1.SetName(66, "FLOAT_LE_BS")
Win1.SetName(80, "DOUBLE_BE")
Win1.SetName(84, "DOUBLE_LE")
Win1.SetName(88, "DOUBLE_BE_BS")
Win1.SetName(92, "DOUBLE_LE_BS")
# Set different values
Win1.SRegisters(0, -100)
Win1.SRegisters(1, 100)
Win1.URegisters(2, 43690)
Win1.URegisters(3, 65535)
Win1.ByteOrder = BE
Win1.Ints_32(4, -123456)
Win1.ByteOrder = LE
Win1.Ints_32(6, -123456)
Win1.ByteOrder = BE_BS
Win1.Ints_32(8, -123456)
Win1.ByteOrder = LE_BS
Win1.Ints_32(10, -123456)
Win1.ByteOrder = BE
Win1.UInts_32(12, 123456)
Win1.ByteOrder = LE
Win1.UInts_32(14, 123456)
Win1.ByteOrder = BE_BS
Win1.UInts_32(16, 123456)
Win1.ByteOrder = LE_BS
Win1.UInts_32(18, 123456)
Win1.ByteOrder = BE
Win1.Ints_64(20, -123456)
Win1.ByteOrder = LE
Win1.Ints_64(24, -123456)
Win1.ByteOrder = BE_BS
Win1.Ints_64(28, -123456)
Win1.ByteOrder = LE_BS
Win1.Ints_64(32, -123456)
Win1.ByteOrder = BE
Win1.UInts_64(40, 123456)
Win1.ByteOrder = LE
Win1.UInts_64(44, 123456)
Win1.ByteOrder = BE_BS
Win1.UInts_64(48, 123456)
Win1.ByteOrder = LE_BS
Win1.UInts_64(52, 123456)
Win1.ByteOrder = BE
Win1.Floats (60, 123.456)
Win1.ByteOrder = LE
Win1.Floats (62, 123.456)
Win1.ByteOrder = BE_BS
Win1.Floats(64, 123.456)
Win1.ByteOrder = LE_BS
Win1.Floats(66, 123.456)
Win1.ByteOrder = BE
Win1.Doubles(80, 123.456)
Win1.ByteOrder = LE
Win1.Doubles(84, 123.456)
Win1.ByteOrder = BE_BS
Win1.Doubles(88, 123.456)
Win1.ByteOrder = LE_BS
Win1.Doubles(92, 123.456)
# Refresh
Win1.EnableRefresh = True
Win1.ResizeAllColumns ()
Win1.ResizeWindow()
print (Win1.GetName(1))
_ = input("Press ENTER to quit:")connectFunction/属性
以下属性和Function与您在connect对话框 (F3) 中的设置相同。
connect
connect选择所需的connect。可以选择串行端口或以太网connect之一。
属性connect为整数effective值
0 = 串行端口
1 = Modbus TCP/IP
2 = Modbus UDP/IP
3 = Modbus RTU over TCP/IP
4 = Modbus RTU over UDP/IP
例子
Connection = 0
Baud rate
仅适用于connect = 0
属性BaudRate as Longeffective值
300
600
1200
2400
4800
9600(默认)
14400
19200
38400
56000
57600
115200
128000
153600
230400
256000
460800
921600例子
BaudRate = 9600
data bit
仅适用于connect = 0
属性DataBits作为整数effective值
7
8(默认)
例子
DataBits = 8
check digit
仅适用于connect = 0
财产平价作为整数effective值
0 = 无
1 = 奇数
2 = 偶数(默认)
例子
Parity = 2
stop bit
仅适用于connect = 0
属性StopBits作为整数effective值
1(默认)
2
例子
StopBits = 1
串行端口
仅适用于connect = 0
属性SerialPort作为整数effective值
1…255
默认值 = 1例子
SerialPort = 1
服务器端口
仅适用于connect = 1…4
属性ServerPort为 Longeffective值
0…65535
默认值 = 502例子
ServerPort = 502
IP版本
仅适用于connect = 1…4
属性IPVersion作为整数effective值
4 = IP 版本 4(默认)
6 = IP 版本 6
例子
IPVersion = 4
任意address
仅适用于connect = 1…4
属性AnyAddress作为整数effective值
0 = 任何address = false
1 = 任何address = true(默认)
例子
AnyAddress = 1
忽略单位ID
仅适用于connect = 1…4
属性IgnoreUnitID作为 Integereffective值
0 = 忽略单元 ID = false
1 = 忽略单元 ID = true(默认)
例子
IgnoreUnitID = 1
开放connect
打开使用“connect”属性选择的connect。
函数OpenConnection () 作为整数
返回值:
如果成功则为零。如果失败则非零值。如何打开 Modbus TCP/IP connect的示例
Public app As Object
Dim res As Integer
' Create an object to Modbus Slave
Set app = CreateObject("Mbslave.Application")
app.Connection = 1 ' Select Modbus TCP/IP
app.IPVersion = 4
' app.IPAddress = "192.168.1.27" ' No need to setup if AnyAddress = 1. Modbus Slave listen on all.
app.ServerPort = 502
res = OpenConnection()如何设置串行connect的示例
Public app As Object
Dim status As Integer
' Create an object to Modbus Slave
Set app = CreateObject("Mbslave.Application")
app.Connection = 0 ' Mode is serial port
app.SerialPort = 1 ' Com port 1
app.BaudRate = 9600 ' 9600 baud
app.Parity = 0 ' None parity
app.Mode = 0 ' RTU mode
status = app.OpenConnection()Closeconnect
函数CloseConnection () As Integer返回值
如果成功则为零。如果失败则非零值。
显示通讯交通
函数ShowCommunicationTraffic ()
显示通信流量窗口。
Close通讯交通
函数CloseCommunicationTraffic ()
Close通信流量窗口(如果显示)。
自动化设置Function
以下Function与您在读/写定义对话框 (F8) 中设置的Function相同。读取Function与 Modbus 从站DocumentRelated联。(带有data的窗口)
.示例
Res = doc.SetupDiscreteInputs (1, 100, 5) Coils (0) = 1 ' Address 100 = 1 Coils (1) = 0 ' Note that the index used in Coils starts from 0 Coils (2) = 1 ' no matter the address used. Coils (3) = 0 Coils (4) = 1 ' Now the Master reads 1, 0, 1, 0, 1 when read 5 discrete inputs starting from address 100
设置线圈
Function SetupCoils (SlaveID As Integer, Address As Long, Quantity As Integer) As Integer返回值
如果成功则为真。如果没有成功则为假参数
SlaveID:从机address 1 至 255
address:dataaddress(基址 0)
quantity:dataquantity。1 至 10000
设置离散输入
函数设置离散输入(SlaveID 作为整数,address作为整数,quantity作为整数)作为整数返回值
如果成功则为真。如果没有成功则为假参数
SlaveID:从机address 1 至 255
address:dataaddress(基址 0)
quantity:dataquantity。1 至 10000
设置保持register
函数SetupHoldingRegisters (SlaveID As Integer, Address As Long, Quantity As Integer) As Integer返回值
如果成功则为真。如果没有成功则为假参数
SlaveID:从机address 1 至 255
address:dataaddress(基址 0)
quantity:dataquantity。1 至 10000
设置输入register
函数SetupInputRegisters (SlaveID As Integer, Address As Long, Quantity As Integer) As Integer返回值
如果成功则为真。如果没有成功则为假参数
SlaveID:从机address 1 至 255
address:dataaddress(基址 0)
quantity:dataquantity。1 至 10000
橱窗展示
函数ShowWindow ()
默认情况下,Modbus documentation窗口是隐藏的。ShowWindow Function使 Modbus Poll 可见并显示带有data内容的Document。
获取名称
函数GetName(索引为整数)为字符串描述
获取值的名称。
索引 0 对应于第一个 Modbus address。
设置名称
函数SetName(索引为整数,名称为字符串)描述
设置值的名称。
索引 0 对应于第一个 Modbus address。
自动递增
属性AutoIncrement(索引为整数)为布尔值描述
设置值的自动增量。
索引 0 对应于第一个 Modbus address。
句法
自动增量(索引)[=新值]
Allformat化
函数FormatAll(format化为整数)
使用所选format设置所有值单元格的format。参数
format:值单元格的format。
获取format
函数GetFormat(索引为整数)作为整数描述
获取Modbus值的Display format。
| ID | format |
|---|---|
| 0 | 签 |
| 1 | 未签名 |
| 2 | hexadecimal |
| 3 | binary |
| 4 | 浮点小端byte交换 |
| 5 | 浮点大尾数 |
| 6 | 双小端byte交换 |
| 7 | 双大端 |
| 8 | 32 位有符号小端byte交换 |
| 9 | 32 位有符号大尾数 |
| 10 | 浮点数小尾数 |
| 11 | 浮点大端byte交换 |
| 12 | 双小尾数 |
| 13 | 双大端byte交换 |
| 14 | 32 位有符号小端endianness |
| 15 | 32 位有符号大端byte交换 |
| 17 | 32 位无符号大端endianness |
| 18 | 32 位无符号小端byte交换 |
| 19 | 32 位无符号大端byte交换 |
| 20 | 32 位无符号小端endianness |
| 21 | 64 位有符号大尾数 |
| 22 | 64 位有符号小端byte交换 |
| 23 | 64 位有符号大端byte交换 |
| 24 | 64 位有符号小端endianness |
| 25 | 64 位无符号大端endianness |
| 26 | 64 位无符号小端byte交换 |
| 27 | 64 位无符号大端byte交换 |
| 28 | 64 位无符号小端endianness |
| 此设置仅用于显示。使用 Get/Set 值函数时,您仍然需要使用 byteOrder 来获取正确的byte order。 |
设置format
函数SetFormat(索引为整数,format为整数)描述
设置 Modbus 值的Display format。请参阅上面的format值。
调整窗口大小
函数ResizeWindow ()
调整打开的窗口的大小以适合网格。
行数
函数Rows (NumberRows)
指定网格中的行数。参数
NumberRows:网格中的行数。
| ID | 描述 |
|---|---|
| 0 | 10 行(默认) |
| 1 | 20 行 |
| 2 | 50 行 |
| 3 | 适合quantity |
自动化data属性
以下属性用于设置或获取 Modbus 从站内部写入/读取数组中的值。使用的索引不是 Modbus address。无论使用什么address,索引始终从 0 开始计数。data属性与 Modbus 从站Document关联。(有data的窗口)
示例1:
' doc is assumed created first. See Excel example. doc.SRegisters(0) = 1 doc.SRegisters(1) = 10 doc.SRegisters(2) = 1234
使用浮点值的示例 2:
doc.Floats(0) = 1.3 doc.Floats(2) = 10.5 doc.Floats(4) = 1234.12
线圈(Coils)
属性 线圈(索引 As Integer) As Integer
描述
在写入数组结构中设置一个线圈或从读取数组中返回一个线圈。
语法
Coils(Index) [=newvalue]
短整型register(SRegisters)
属性 短整型register(索引 As Integer) As Integer
描述
在写入数组结构中设置一个register或从读取数组中返回一个register。
语法
SRegisters(Index) [=newvalue]
无符号register(URegisters)
属性 无符号register(索引 As Integer) As Long
描述
在写入数组结构中设置一个register或从读取数组中返回一个register。
语法
URegisters(索引)[=新值]
32位整型(Ints_32)
属性 32位整型(索引 As Integer) As Double
描述
在写入数组结构中设置一个32位整数或从读取数组中返回一个整数。
语法
URegisters(Index) [=newvalue]
无符号32位整型(UInts_32)
属性 无符号32位整型(索引 As Integer) As Double
描述
在写入数组结构中设置一个32位无符号整数或从读取数组中返回一个无符号整数。
语法
UInts_32(Index) [=newvalue]
64位整型(Ints_64)
属性 64位整型(索引 As Integer) As Double
描述
在写入数组结构中设置一个64位整数或从读取数组中返回一个整数。
语法
Ints_64(Index) [=newvalue]
无符号64位整型(UInts_64)
属性 无符号64位整型(索引 As Integer) As Double
描述
在写入数组结构中设置一个64位无符号整数或从读取数组中返回一个无符号整数。
语法
UInts_64(Index) [=newvalue]
浮点数(Floats)
属性 浮点数(索引 As Integer) As Single
描述
在写入数组结构中设置一个浮点数或从读取数组中返回一个浮点数。
语法
Floats(Index) [=newvalue]
双精度浮点数(Doubles)
属性 双精度浮点数(索引 As Integer) As Double
描述
在写入数组结构中设置一个双精度浮点数或从读取数组中返回一个双精度浮点数。
语法
Doubles(Index) [=newvalue]
byte order(ByteOrder)
属性ByteOrder作为整数描述
设置 Ints_32、UInts_32、Ints_64、UInts_64、浮点数 和 双精度浮点数 属性使用的byte order。
| ID | byte order |
|---|---|
| 0 | 大端序(默认) |
| 1 | 小端序byte交换 |
| 2 | 大端序byte交换 |
| 3 | 小端序 |
Ints_32 示例:
byte order:大端序
decimal数123456789 或 hexadecimal 07 5B CD 15
在Modbus消息中的传输顺序:07 5B CD 15
语法
byte order [=新值]

Mini Program Version,free使用!!!

非常需要找个软件
试试看
求软件
good
good
支持
学习求教
adada
求软件
一直在找这个软件,终于找到 ,非常好用
*这软件不错*
OK
网络上还没看到这么详尽的Tutorial太棒了!
Tutorial挺详细的,我还需要软件
求编程
666
woxuyao
很全很赞
Tutorial挺详细的,我还需要软件
贼好用
需要需要,Download测试
66
666
v
666
很棒,太需要了
太棒了,正需要
好好好666
好好好
Tutorial详细!太棒了!
666