# 自动脚本
**Repository Path**: geek-i/automatic-script
## Basic Information
- **Project Name**: 自动脚本
- **Description**: 练习中。。
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-08-07
- **Last Updated**: 2026-08-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 拧扣机工控上位机软件
[](https://dotnet.microsoft.com/)
[](https://docs.microsoft.com/en-us/dotnet/desktop/winforms/)
[](./LICENSE)
> 专为石油管件拧扣/卸扣设备定制的工控上位机软件,实现 PLC 控制、实时数据采集、扭矩曲线绘制、生产数据管理、操作员权限、软件授权防护及自动升级全流程功能。
---
## 📚 目录
- [项目介绍](#-项目介绍)
- [技术栈](#-技术栈)
- [软件架构](#-软件架构)
- [核心模块](#-核心模块)
- [项目结构](#-项目结构)
- [快速开始](#-快速开始)
- [贡献指南](#-贡献指南)
- [许可证](#-许可证)
- [联系方式](#-联系方式)
---
## 📖 项目介绍
本项目为石油管件拧扣/卸扣设备量身打造的上位机控制软件,基于 **.NET 8 WinForms** 构建,采用现代化 UI 组件库 **AntdUI**,为工业现场提供了稳定、高效、易用的操控终端。
**应用场景**:石油管件拧扣机、卸扣机以及其他需要扭矩/转速精确控制的工业设备。
**核心价值**:
- 稳定:HslCommunication 工业级通信保障
- 智能:实时曲线+数据存储+自动升级
- 安全:RSA 硬件机器码绑定授权
- 易用:现代化 Ant Design 风格界面
---
## 🛠️ 技术栈
| 层次 | 组件 | 用途 |
|------|------|------|
| UI层 | AntdUI + WinForms | 汉堡菜单、标签页、拖拽面板界面 |
| 通信层 | HslCommunication | 西门子S7 PLC寄存器读写 |
| 数据层 | MySQL + SqlSugar ORM | 生产数据存储与管理 |
| 可视化 | ScottPlot 5.x | 扭矩/转速实时曲线绘制 |
| 日志 | log4net | 系统/SQL日志分离存储 |
| 安全 | RSA非对称加密 | 硬件机器码绑定授权 |
---
## 🏗️ 软件架构
本项目为 Windows 工控桌面软件,采用分层设计:
| 层级 | 组件 | 说明 |
|------|------|------|
| **UI 层** | WinForms + AntdUI | 汉堡菜单、标签页、拖拽面板 |
| **业务逻辑层** | HslCommunication
SqlSugar ORM
RSA 授权模块 | PLC 通信
数据库访问
机器码绑定授权 |
| **底层依赖** | .NET 8 | 运行时环境 |
- **开发框架**:.NET 8 Desktop + WinForms
- **UI 组件库**:AntdUI(汉堡菜单、标签页、拖拽面板、界面美化)
- **PLC 通信**:HslCommunication(西门子 S7 系列 PLC,寄存器读写、数据采集、状态复位)
- **数据库**:MySQL + SqlSugar ORM(生产数据、工艺参数存储管理)
- **绘图组件**:ScottPlot 5.x(扭矩/转速实时曲线、历史曲线回放)
- **日志系统**:log4net(系统日志、SQL 执行日志分离存储)
- **授权模块**:RSA 非对称加密(硬件机器码绑定、注册码授权、有效期管控)
- **升级模块**:客户端 + 服务端(程序版本检测、静默自动更新)
---
## ⚙️ 核心模块
| 模块 | 功能 |
|------|------|
| **UI 管理** | 菜单切换、标签页清理、侧边栏拖拽记忆 |
| **PLC 控制器** | 西门子 S7 状态监控、工艺参数下发、状态复位 |
| **数据采集** | 扭矩/转速实时采集、ScottPlot 曲线渲染 |
| **数据持久化** | SqlSugar + MySQL 生产记录入库、历史数据查询 |
| **日志管理** | log4net 系统日志 + SQL 独立分目录日志 |
| **权限管理** | 操作员分级、功能按钮级权限控制 |
| **授权管理** | RSA 硬件绑定注册码 + 有效期管控 |
| **自动升级** | 客户端检测版本 → 服务器下发更新包 → 静默更新 |
---
## 📂 项目结构
```text
📁 项目结构
├─ LB_Antd # 主程序(业务核心)
│ ├─ UI 管理 # 菜单切换、标签页清理、侧边栏拖拽记忆
│ ├─ PLC 控制器 # 西门子 S7 状态监控、工艺参数下发、状态复位
│ ├─ 数据采集 # 扭矩 / 转速实时采集、ScottPlot 曲线渲染
│ ├─ 数据持久化 # SqlSugar+MySQL 生产记录入库、历史数据查询
│ ├─ 日志管理 # log4net 系统日志 + SQL 独立分目录日志
│ └─ 权限管理 # 操作员登录验证、页面操作权限控制
├─ LB_Antd_Licenser # 软件授权工具项目
│ └─ RSA 密钥生成 # 读取硬件 (CPU / 硬盘) 机器码、生成限时注册码
├─ UpgradeClient # 自动升级客户端
│ └─ 版本检测 # 启动校验版本、静默下载增量包更新
└─ UpgradeServer # 升级服务端
└─ 版本包管理 # 新版本文件托管、版本信息配置
```
---
## 🚀 快速开始
### 环境要求
| 项目 | 要求 |
|------|------|
| 操作系统 | Windows 10 / 11 |
| 运行时 | .NET 8 Desktop Runtime |
| 数据库 | MySQL 5.7+ |
| PLC 通信 | 西门子 S7 系列(通过以太网) |
### 安装步骤
1. **克隆仓库**
```bash
git clone https://gitee.com/geek-i/jy_-nkj.git
```
2. **还原 NuGet 依赖**
```bash
dotnet restore
```
3. **修改数据库连接字符串**
```bash
编辑 appsettings.json
或 App.config 中的 ConnectionStrings,指向实际 MySQL 实例。
```
4. **配置 PLC 通信参数**
```bash
根据现场的 PLC 设备,在程序设置中填写 IP 地址、机架号(Rack)、槽号(Slot)。
```
5. **启动服务端(可选)**
```bash
如果启用自动升级功能,需先运行 UpgradeServer(升级服务端)。
```
6. **运行主程序**
```bash
cd LB_Antd
dotnet run
或直接运行 LB_Antd.exe
```
## 常见问题
**Q: 程序启动报错“找不到 PLC”?**
**A:** 请检查 PLC IP 地址是否正确,确保上位机与 PLC 处于同一网段,并确认防火墙未屏蔽 102 端口(西门子 S7 默认端口)。
**Q: 注册码如何生成?**
**A:** 使用 `LB_Antd_Licenser` 工具,输入目标设备的机器码和期望的到期日期,即可生成对应的注册码。
**Q: 数据无法保存到数据库?**
**A:** 请检查 MySQL 服务是否正常运行,以及连接字符串中的用户名/密码是否正确。