# MXF **Repository Path**: dfcnb/mxf ## Basic Information - **Project Name**: MXF - **Description**: 这是一个自用的通信控件,可以自定义控件绑定变量,也可以连接抖音进行抓取弹窗, - **Primary Language**: Unknown - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 11 - **Created**: 2026-05-21 - **Last Updated**: 2026-05-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MXF — 工业通信框架 > 一款面向工业自动化的 .NET 通信框架,支持多协议、多传输层,覆盖 PLC 数据采集、设备联网、直播数据抓取等场景。 ## 项目概览 MXF(Messaging & eXchange Framework)是一套为工业现场通信设计的 .NET 框架,核心思想是**连接层与协议层彻底解耦**,通过 `IConnect` + `IProtocol` + `Manager` 三层架构,实现协议可插拔、传输可切换的设备通信模型。 ## 项目结构 ``` MXF/ # 核心类库(MS.csproj) ├── Conn/ # 连接层 │ ├── IBase.cs # IConnect / IProtocol / State 抽象定义 │ ├── TcpClientEX.cs # TCP 客户端(自动重连、状态监控、错误上抛) │ ├── SerialMaster.cs # 串口主机(RS485 多站轮询) │ ├── Device.cs # 设备信息模型 │ └── Manager.cs # 调度管理器(装配、握手、采集、缓存、事件分发) ├── Protocols/ # 协议层 │ ├── Protocol.cs # 协议基类 │ ├── ProtocolConfig.cs # 协议配置模型 │ ├── IProtocol.cs # 协议接口 │ ├── check.cs # 校验工具(CRC/FCS/和校验) │ ├── Modbus.cs # Modbus TCP 协议 │ ├── Modbus/Rtu.cs # Modbus RTU 协议 │ ├── Siemens/S7_NET.cs # 西门子 S7 协议(以太网) │ ├── Siemens/S7_PPI.cs # 西门子 S7-PPI 协议(串口) │ ├── Mitsubishi/FX_SERIAL.cs # 三菱 FX 串口协议 │ └── MqttClient.cs # MQTT Client 协议 ├── Net/ # 网络工具 │ ├── HttpClientEX.cs # 增强版 HTTP 客户端 │ ├── HttpSever.cs # 轻量 HTTP 服务器 │ ├── TcpServer.cs # TCP 服务器 │ ├── WebHook.cs # WebHook 推送 │ ├── Helper.cs # 网络辅助工具 │ └── DouYin/ # 抖音直播数据抓取 │ ├── LiveGrabber.cs │ ├── Protobuf.cs │ └── SignatureController.cs ├── DB/ # 数据库 │ └── SqlBuilder.cs # SQL 构造器 ├── FileHelper/ # 文件工具 │ ├── Base.cs │ ├── Csv.cs │ ├── Ini.cs │ ├── Json.cs │ ├── Txt.cs │ └── Xml.cs ├── Tools/ # 通用工具 │ ├── FaltFunc.cs # 容错函数 │ ├── Fun.cs # 通用函数 │ ├── SleepPreventer.cs # 防休眠 │ ├── Speech.cs # 语音播报 │ ├── Workflow.cs # 工作流引擎 │ └── sys.cs # 系统工具 └── GlobalVar.cs # 全局变量 mymain/ # 主程序(WinForms) my测试/ # 测试项目 ``` ## 核心架构 ``` ┌─────────────────────────────────────────────────┐ │ Manager │ │ 设备装配 │ 握手调度 │ 轮询采集 │ 缓存 │ 事件分发 │ ├─────────────────────────────────────────────────┤ │ IProtocol │ │ 地址解析 │ 读命令构建 │ 写命令构建 │ 响应解析 │ │ S7_NET │ ModbusTcp │ ModbusRtu │ MqttClient │ ← 可插拔 ├─────────────────────────────────────────────────┤ │ IConnect │ │ 连接管理 │ 自动重连 │ 数据收发 │ 状态监控 │ │ TcpClientEX │ SerialMaster │ ← 可切换 └─────────────────────────────────────────────────┘ ``` ### 关键设计原则 1. **连接层 ≠ 协议层**:`TcpClientEX` / `SerialMaster` 只负责字节流传输,不解析协议 2. **协议可插拔**:新增协议只需实现 `IProtocol` 接口,无需修改连接层 3. **自动重连**:连接层内置指数退避重连,重连后业务恢复由调度层编排 4. **统一调度**:`Manager` 统一负责设备装配、握手、轮询、缓存、事件分发 ## 支持的协议 | 协议 | 传输层 | 说明 | |------|--------|------| | Siemens S7 (NET) | TCP 102 | 西门子 S7-300/400/1200/1500 以太网 | | Siemens S7-PPI | Serial | 西门子 S7-200 串口 | | Modbus TCP | TCP 502 | 标准 Modbus TCP | | Modbus RTU | Serial | 标准 Modbus RTU(CRC16) | | Mitsubishi FX | Serial | 三菱 FX 系列(和校验) | | MQTT Client | TCP 1883 | MQTT 3.1.1 发布/订阅 | ## 使用示例 ```csharp // 创建 S7 设备 var device = new DeviceInfo { ip = "192.168.1.10", port = 102 }; var connect = new TcpClientEX(device); var protocol = new S7_NET(); var manager = new Manager(connect, protocol); // 注册读取标签 manager.RegRead("温度", "VW100", 1000); // 地址, 轮询间隔 ms manager.RegRead("压力", "VD200", 2000); // 启动采集 manager.Start(); // 读取当前值 var temp = manager.GetValue("温度"); // 写入 manager.Write("VW100", 1234); ``` ## 依赖 - .NET 6.0+(兼容 .NET 6 / 7 / 8) - 无额外 NuGet 依赖(纯原生实现) ## 特性 - ✅ 多协议支持(S7 / Modbus / Mitsubishi / MQTT) - ✅ 多传输层(TCP / Serial) - ✅ 自动断线重连 - ✅ 多站轮询(RS485 总线) - ✅ HTTP/WebHook 推送 - ✅ 多格式文件读写(CSV/JSON/XML/INI/TXT) - ✅ SQL 构造器 - ✅ 抖音直播数据抓取 - ✅ 工作流引擎 - ✅ 语音播报 ## 作者 Magcir ## 许可证 本项目仅供学习与交流使用。