# 自动脚本 **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 # 拧扣机工控上位机软件 [![.NET](https://img.shields.io/badge/.NET-8.0-purple?logo=dotnet)](https://dotnet.microsoft.com/) [![WinForms](https://img.shields.io/badge/WinForms-Desktop-blue?logo=windows)](https://docs.microsoft.com/en-us/dotnet/desktop/winforms/) [![License](https://img.shields.io/badge/License-MIT-green)](./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 服务是否正常运行,以及连接字符串中的用户名/密码是否正确。