MBServer Modbus通信组件详解:ActiveX控件与TCP服务器库

本文目录
  1. 1. MBServer 概述
  2. 2. MBServer ActiveX 组件
  3. 3. 支持的功能
  4. 4. 在 VBA(Excel)中使用 MBServer ActiveX
  5. 5. 在 C# 中使用 MBServer ActiveX
  6. 6. MBServer ActiveX 的局限性
  7. 7. MBServer TCP(mblogic)
  8. 8. 组成部分
  9. 9. Linux 上安装 MBServer TCP
  10. 10. 使用 mbclient 测试
  11. 11. 现代替代方案
  12. 12. 总结

MBServer 概述

MBServer 是 modbus.org 推荐的两个互补的 Modbus 通信组件。需要注意的是,它们虽然都叫 “MBServer”,但实际上是两个不同的项目:

  • MBServer ActiveXmbserver.tripod.com):一个免费的 ActiveX 自动化服务器,用于在 Windows 平台上通过 Modbus RTU/ASCII 和 Modbus TCP 协议与 PLC 或其他工业设备通信
  • MBServer TCPsourceforge.net/projects/mblogic):一个开源的 Modbus TCP 服务器/客户端库集合,包含独立服务器、客户端和命令行工具

MBServer ActiveX 组件

MBServer ActiveX 是一个进程外(out-process)的 ActiveX 自动化服务器,这意味着它可以被任何支持 COM/OLE 的语言调用——Visual Basic 6、VBA(Excel 宏)、C#、C++、Delphi 等。它是一个 FREEWARE(免费软件),不需要付费即可使用全部功能。

支持的功能

  • Modbus RTU/ASCII(串口 RS-232/RS-485)
  • Modbus TCP(以太网通信)
  • 功能码:FC01 读线圈、FC02 读离散输入、FC03 读保持寄存器、FC04 读输入寄存器、FC05 写单线圈、FC06 写单寄存器、FC15 写多线圈、FC16 写多寄存器
  • 自动重连机制
  • 多线程安全设计

在 VBA(Excel)中使用 MBServer ActiveX

这是 MBServer ActiveX 最实用的场景之一——在 Excel 中直接读写 PLC 数据:

' VBA 代码:在 Excel 中读取 Modbus TCP 设备数据
Sub ReadModbusData()
    Dim mb As Object
    Set mb = CreateObject("MBServer.MBServerCtrl.1")
    
    ' 配置 Modbus TCP 连接
    mb.Protocol = 3  ' 3 = Modbus TCP
    
    ' 连接设备
    If mb.Connect("192.168.1.100", 502) Then
        ' 读取从站 1,起始地址 40001,10 个保持寄存器
        Dim values As Variant
        values = mb.ReadHoldingRegisters(1, 40001, 10)
        
        ' 将数据写入 Excel 单元格
        Dim i As Integer
        For i = 0 To UBound(values)
            Cells(i + 1, 1).Value = values(i)
        Next i
        
        mb.Disconnect
    Else
        MsgBox "连接失败!"
    End If
End Sub

在 C# 中使用 MBServer ActiveX

// C# 代码:通过互操作调用 MBServer ActiveX
using System.Runtime.InteropServices;

Type mbType = Type.GetTypeFromProgID("MBServer.MBServerCtrl.1");
dynamic mb = Activator.CreateInstance(mbType);

mb.Protocol = 3;  // Modbus TCP
if (mb.Connect("192.168.1.100", 502))
{
    // 读取 10 个保持寄存器
    Array values = (Array)mb.ReadHoldingRegisters(1, 40001, 10);
    foreach (var v in values)
    {
        Console.WriteLine(v);
    }
    mb.Disconnect();
}

MBServer ActiveX 的局限性

ActiveX 技术诞生于 1990 年代,在现代 Windows 开发中已经逐渐被 .NET、COM Interop 等更新技术取代。MBServer ActiveX 仅支持 32 位 Windows,在 64 位应用程序中需要通过 WOW64 兼容层或 surrogate process 来使用。对于新项目,更推荐使用 NModbus(C#)或 ASComm.NET 等 .NET 原生库。

MBServer TCP(mblogic)

MBServer TCP 是一个完全不同的项目,定位为开源的 Modbus TCP 工具集,托管在 SourceForge。许可证为 GPL(适合开源项目使用,商业项目需注意合规)。

组成部分

  • mbserverd:独立的 Modbus TCP 服务器守护进程,可以部署为系统服务
  • mbclient:命令行 Modbus TCP 客户端,用于测试和脚本调用
  • libmblogic:C 语言 Modbus TCP 协议库,可以被其他程序调用

Linux 上安装 MBServer TCP

# 从 SourceForge 下载源码
git clone https://git.code.sf.net/p/mblogic/code mblogic-code
cd mblogic-code

# 编译(需要 gcc 和 make)
./configure
make
sudo make install

# 启动 Modbus TCP 服务器
mbserverd -p 502 -a 1

使用 mbclient 测试

# 读取 127.0.0.1:502 上从站 1 的保持寄存器 0-9
mbclient -H 127.0.0.1 -p 502 -a 1 -f 3 -s 0 -n 10

# 写入从站 1 的保持寄存器 0
mbclient -H 127.0.0.1 -p 502 -a 1 -f 6 -s 0 -v 1234

现代替代方案

由于 MBServer ActiveX 技术栈较老,且 mblogic 项目活跃度不高,在实际项目中推荐以下替代方案:

需求场景推荐方案说明
Windows .NET/C# 开发NModbus 或 ASComm.NET.NET 原生库,无需 ActiveX 依赖
Excel VBA 读取 PLCMBServer ActiveX仍然是 VBA 场景最简单的方式
Linux 服务器libmodbus 或 pymodbus更活跃的 C/Python 库
嵌入式 Linuxlibmodbus轻量,支持 RTU 和 TCP

总结

MBServer 代表了 Modbus 通信的两个经典实现方向:MBServer ActiveX 专为 Windows 桌面应用和 Office 自动化设计,适合快速搭建简单的 Modbus 数据采集界面;MBServer TCP(mblogic)则是 Linux 环境下的开源 Modbus TCP 服务器和命令行工具。虽然它们的技术栈相对老旧,但作为学习资料和历史参考仍然有价值。在实际新项目中,建议根据平台和需求选择更现代的替代方案。

技术术语(共 8 个)—— 点击展开
Modbus RTU基于串行链路的Modbus协议,使用二进制编码和CRC校验
Modbus TCP基于以太网的Modbus协议变体,使用TCP/IP传输
功能码Modbus功能码指定读/写操作类型,如01读线圈、03读保持寄存器
寄存器Modbus 寄存器存储数据单元,分线圈/离散输入/保持/输入寄存器四类
PLC可编程逻辑控制器,工业自动化控制的核心设备
串口计算机与外部设备进行串行通信的物理接口
线圈Modbus位可读写数据,地址从00001开始
保持寄存器Modbus 16位可读写数据,地址从40001开始
来源/工具信息 —— 点击展开
来源 Modbus中文网(modbus.cn) —— 国内领先的Modbus通信协议技术社区 分类 Modbus编程开发 字数 2605 字 · 阅读约 7 分钟 更新 2026-06-26 永久链接 https://www.modbus.cn/mbserver-modbus%e9%80%9a%e4%bf%a1%e7%bb%84%e4%bb%b6%e8%af%a6%e8%a7%a3%ef%bc%9aactivex%e6%8e%a7%e4%bb%b6%e4%b8%8etcp%e6%9c%8d%e5%8a%a1%e5%99%a8%e5%ba%93/
推荐工具:Modbus调试助手 微信小程序
Modbus中文网官方推出的Modbus调试工具,支持 Modbus RTU/TCP 实时通信调试、寄存器读写、线圈控制、数据监控和报文分析。 无需安装,微信搜索「Modbus调试助手」即可使用。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
把这篇资料用于真实项目?

进入工具中心进行报文解析、CRC 校验和设备调试,或提交需求获取选型与接入建议。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注