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

freefree技术Resources

这篇内容可直接阅读,适合用于基础学习和Search引流。

MBServer Modbus通信组件详解:ActiveX控件与TCP服务器库缩略图
🌐 This page is not yet available in English. Showing the Chinese version. Back to Chinese page.
本文目录
  1. 1. MBServer 概述
  2. 2. MBServer ActiveX 组件
  3. 3. 支持的Function
  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):一个free的 ActiveX 自动化服务器,用于在 Windows 平台上通过 Modbus RTU/ASCII 和 Modbus TCP 协议与 PLC 或其他工业设备通信
  • MBServer TCPsourceforge.net/projects/mblogic):一个开源的 Modbus TCP 服务器/客户端库集合,包含独立服务器、客户端和命令行Tools

MBServer ActiveX 组件

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

支持的Function

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

在 VBA(Excel)中使用 MBServer ActiveX

这是 MBServer ActiveX 最实用的Scene之一——在 Excel 中直接读写 PLC data:

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

在 C# 中使用 MBServer ActiveX

// C# 代码:通过互Operation调用 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 个保持register
    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 来使用。对于新项目,更Recommended for use NModbus(C#)或 ASComm.NET 等 .NET 原生库。

MBServer TCP(mblogic)

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

组成部分

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

Linux 上安装 MBServer TCP

# 从 SourceForge Download源码
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 的保持register 0-9
mbclient -H 127.0.0.1 -p 502 -a 1 -f 3 -s 0 -n 10

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

现代替代方案

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

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

总结

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

技术术语(共 8 个)—— 点击展开
Modbus RTU基于串行链路的Modbus协议,使用binaryCoding和CRC check
Modbus TCP基于以太网的Modbus协议变体,使用TCP/IP传输
function codeModbusfunction code指定读/写OperationType,如01读线圈、03读保持register
registerModbus register存储data单元,分线圈/离散输入/保持/输入register四类
PLC可编程逻辑控制器,Automation控制的核心设备
串口计算机与外部设备进行串行通信的物理接口
线圈Modbus位可读写data,address从00001开始
保持registerModbus 16位可读写data,address从40001开始
来源/Tools信息 —— 点击展开
来源 Modbus Chinese Network(modbus.cn) —— China leadingModbus通信协议技术社区 Category Modbus编程开发 字数 2605 字 · 阅读约 7 分钟 更新 2026-06-26 永久链接 https://www.modbus.cn/43932.html
Recommended Tool: Modbus Debug Assistant WeChat Mini Program
Modbus Chinese Network官方推出的Modbus DebuggingTools,支持 Modbus RTU/TCP 实时通信debug、register读写、线圈控制、data监控和message分析。 无需安装,微信Search「Modbus DebuggingAssistant」即可使用。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
把这篇Resources用于真实项目?

进入Tools中心进行messageParse、CRC verification和设备debug,或Submit requirements获取选型与接入建议。

工程师member

把这篇文章变成可执行的debugResources

开通后可使用高级messageParse、Resources包Download、Code Example、工程案例和优先Technical Support,适合真实项目交付。

高级Tools不限次
Resources包与代码包
Complete Engineering Case Library
优先Technical Support入口

发表回复

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