一个基于 Go + Gin 框架开发 PMSM 风机监测系统:Flutter + Go + C# 全栈开源方案
标签: Go / Gin / Flutter / PMSM / 风机监测 / 工业物联网 / 开源项目 / C# / WinCC / 上位机
原文: 微信公众号「码农先森」https://mp.weixin.qq.com/s/Kq7KdnQJEnHp-0XJKoaQ1Q
GitHub: 见原文链接
项目概述
这是一个基于 Go + Gin 框架 开发的 PMSM 风机监测系统,采用 Flutter + Go + C# 全栈架构。
| 模块 | 技术栈 | 说明 |
|---|---|---|
| AppGUI | Flutter | Windows 桌面客户端 |
| WebServer | Go + Gin | 后端 HTTP 服务 + TCP Socket 监听 |
| WinCC | C# + .NET Framework 4.8 | 上位机网关,连接串口硬件 |
项目最大的特点是:无需硬件也能体验——内置演示模式,8 个风机设备模拟运行,非常适合学习物联网监控系统的开发思路。
系统架构
┌─────────────┐ HTTP/WebSocket ┌──────────────┐
│ Flutter │ <---------------------> │ Go + Gin │
│ Windows UI │ │ WebServer │
└─────────────┘ └──────┬───────┘
│ TCP Socket
┌──────┴───────┐
│ C# WinCC │
│ 上位机网关 │
└──────┬───────┘
│ 串口
┌──────┴───────┐
│ PMSM 风机 │
└─────────────┘
技术架构亮点
- Flutter 桌面端:跨平台 UI 框架,一次开发 Windows 应用
- Go + Gin 后端:高性能 HTTP 服务 + TCP Socket 实时通信
- C# 上位机网关:串口通信、协议解析、数据转发
- SQLite 数据库:轻量级本地存储
- WebSocket 实时推送:设备数据变更实时同步到前端
- CRC16 校验:工业通信协议常见的校验机制
项目目录结构
├── AppGUI/ # Flutter Windows 桌面端
│ ├── lib/
│ │ ├── main.dart
│ │ ├── screens/ # 页面
│ │ ├── widgets/ # 组件
│ │ ├── services/ # 网络请求、WebSocket
│ │ └── models/ # 数据模型
│ ├── pubspec.yaml
│ └── windows/
│
├── WebServer/ # Go后端服务
│ ├── src/
│ │ ├── config/ # 配置加载
│ │ ├── controllers/ # 请求处理、设备管理、协议解析
│ │ ├── httpserver/ # Gin HTTP服务封装
│ │ ├── models/ # 数据模型、数据库操作
│ │ ├── net/ # TCP Socket监听
│ │ ├── routers/ # 路由注册
│ │ └── sysinit/ # 系统初始化
│ ├── conf/ # 配置文件 (config.conf)
│ ├── data/ # SQLite数据库文件
│ ├── doc/ # Swagger API文档
│ └── main.go
│
├── WinCC/ # C#上位机网关
│ ├── Core/ # 核心逻辑(网关、串口、TCP客户端)
│ ├── Protocol/ # 通信协议(帧解析、CRC16校验)
│ ├── Utils/ # 日志工具
│ ├── config.json # 网关配置文件
│ └── WinCC.csproj
│
├── docs/ # 项目文档
└── README.md
快速开始
1. AppGUI(Flutter Windows)
cd AppGUI
flutter pub get
flutter build windows --release
# 输出: build/windows/x64/runner/Release/mywindows.exe
2. WebServer(Go)
cd WebServer
go run main.go
- 默认 HTTP 端口:8080
- TCP Socket 端口:8000
- Swagger 文档:http://localhost:8080/swagger/index.html
配置文件 conf/config.conf(首次运行自动生成):
{
"WebPort": 8080,
"SocketPort": 8000,
"DBPath": "data/webserver.db",
"FilePath": "upload"
}
3. WinCC(C#)
# 使用 Visual Studio 打开 WinCC.slnx 编译运行
# 或命令行指定配置文件:
WinCC.exe -c config.json
配置文件 config.json:
{
"serial": { "port": "COM3", "baudRate": 19200 },
"server": { "ip": "112.74.182.249", "port": 20019 },
"gateway": { "id": 1, "heartbeatInterval": 15000 },
"log": { "level": "info", "path": "./logs/gateway.log" }
}
核心功能
| 功能 | 说明 |
|---|---|
| 风机监控 | 实时监测电压、电流、转速、温度、振动加速度等参数 |
| 远程控制 | 设置转速、风量等级、运行模式 |
| 多设备支持 | 支持 PMSM10C、PMSM04E、PMSM15、PMSM10A 四种机型 |
| 实时推送 | WebSocket 实时推送设备数据变更 |
| 演示模式 | 无需连接服务器即可演示 |
| OTA 更新 | 支持应用版本更新 |
演示数据
项目内置演示数据,默认使用演示模式运行:
- 8 个风机设备(4 种类型各 2 个)
- 实时监测数据模拟
- 控制参数模拟
开发环境
| 环境 | 版本/要求 |
|---|---|
| Flutter SDK | 3.41.0 |
| Go | 1.26+ |
| .NET Framework | 4.8 |
| Visual Studio | 2026 |
注意事项
- 国内用户需配置 Flutter 镜像源
- Windows 桌面开发需启用开发者模式
- SQLite 数据库文件在首次运行时自动创建
- WinCC 网关需要串口硬件支持,无硬件时可使用演示模式
适合谁看?
- 🏭 工业物联网开发者 —— 学习风机监控、数据采集、协议解析
- 🖥️ 桌面应用开发者 —— 学习 Flutter 开发 Windows 工业软件
- 🐹 Go 后端开发者 —— 学习 Gin + TCP Socket + WebSocket 实时通信
- 🖥️ C# 上位机开发者 —— 学习串口通信、CRC16、网关设计
- 🎓 在校学生 —— 了解真实工业项目的技术栈和目录结构
总结
这个项目是一个非常典型的工业物联网监控系统全栈开源方案:
| 层级 | 技术 | 职责 |
|---|---|---|
| 展示层 | Flutter | Windows 桌面 UI |
| 服务层 | Go + Gin | HTTP API + TCP Socket 通信 |
| 网关层 | C# | 串口协议解析、数据转发 |
| 设备层 | PMSM 风机 | 工业传感器与执行器 |
核心学习点:
- 工业通信协议与 CRC16 校验
- TCP Socket 长连接与数据帧解析
- WebSocket 实时数据推送
- Go + Gin 构建物联网后端
- Flutter 开发 Windows 桌面应用
- 上位机网关与串口通信
最贴心的是项目自带演示模式,即使没有硬件也能完整体验整个系统,非常适合作为学习参考和二次开发基础。
相关链接
- 原文链接:https://mp.weixin.qq.com/s/Kq7KdnQJEnHp-0XJKoaQ1Q
Keywords: PMSM风机监测, Go Gin, Flutter Windows, C#上位机, 工业物联网, WinCC, 串口通信, CRC16, WebSocket, TCP Socket, SQLite, 开源项目