# Visionpro框架 **Repository Path**: pandaq147/Vision ## Basic Information - **Project Name**: Visionpro框架 - **Description**: 48651333336413205648312 - **Primary Language**: C# - **License**: MulanPSL-2.0 - **Default Branch**: 代码优化 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-12-06 - **Last Updated**: 2026-03-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Vision 项目文档 ## 项目简介 Vision 是一个基于 C# 的视觉检测软件,主要用于工业自动化领域中的图像处理和机器视觉任务。该项目集成了多种通信协议、图像采集模块、视觉处理算法以及用户权限管理功能,适用于多种工业场景。 ## 主要功能模块 ### 1. 图像采集模块 - **OpenCV 图像采集**:通过 `OpencvGetImage` 模块实现 USB 相机图像采集。 - **海康视觉模块**:集成 VM 系列视觉处理模块,支持图像处理和结果显示。 ### 2. 通信模块 - **S7 通信**:支持与西门子 S7 系列 PLC 的通信,包括 S7-1200、S7-300、S7-400 等型号。 - **TCP 通信**:支持 TCP 客户端和服务器通信,可用于与其他设备进行数据交互。 - **串口通信**:支持串口通信,用于控制光源等外部设备。 ### 3. 标定与校准 - **手动标定**:提供多种手动标定工具,如 `FormCalibrationFile`、`FormManualRotationCenter` 等,支持用户进行图像与机器人坐标系的标定。 - **自动标定**:通过 `CalibrationUtils` 类实现自动标定功能,支持多种标定模式。 ### 4. 数据管理 - **全局变量管理**:支持全局变量的定义、修改和保存,便于流程间的数据共享。 - **日志管理**:提供详细的日志记录功能,支持日志的搜索、筛选和导出。 ### 5. 用户权限管理 - **用户登录与权限控制**:支持多级用户权限管理,包括管理员、操作员等角色,确保系统安全性。 ### 6. 流程管理 - **工作流管理**:支持多个工作流的创建、编辑和运行,每个工作流可以包含多个模块。 - **模块化设计**:每个模块可以独立配置和运行,支持模块的拖拽排序和参数设置。 ## 技术架构 ### 1. 分层架构 - **UI 层**:使用 Windows Forms 实现用户界面,提供直观的操作界面。 - **业务逻辑层**:核心逻辑处理,包括图像处理、通信、标定等功能。 - **数据访问层**:负责与外部设备(如 PLC、相机)的通信,以及数据的读写操作。 ### 2. 插件架构 - **插件加载**:通过 `PluginTypeRegistry` 类实现插件的动态加载,支持模块的扩展和热插拔。 - **模块化设计**:每个模块可以独立开发、测试和部署,便于维护和升级。 ### 3. 依赖注入 - **依赖注入**:使用 `DependencyInjection` 类实现依赖注入,简化模块之间的耦合度。 ## 核心类与接口 ### 1. `ModuleBase` - **功能**:所有模块的基类,提供模块的基本功能,如初始化、运行、配置保存等。 - **关键方法**: - `RunModule()`:执行模块的核心逻辑。 - `Init()`:初始化模块的参数和资源。 - `SaveToConfig()` 和 `LoadFromConfig()`:模块配置的保存与加载。 ### 2. `ICommunication` - **功能**:通信模块的接口,定义了通信模块的基本行为。 - **关键方法**: - `Start()` 和 `Stop()`:启动和停止通信。 - `Send()` 和 `Receive()`:发送和接收数据。 ### 3. `IRunModule` - **功能**:运行模块的接口,定义了模块的基本运行逻辑。 - **关键方法**: - `Run()`:执行模块的运行逻辑。 - `GetFormUI()`:获取模块的用户界面。 ### 4. `SolutionContainer` - **功能**:解决方案容器,管理多个解决方案,支持解决方案的加载、保存和切换。 - **关键方法**: - `LoadSolution()`:加载指定的解决方案。 - `SaveSolution()`:保存当前解决方案。 ### 5. `Logger` - **功能**:日志记录器,支持多种日志输出方式(如文件、RichTextBox)。 - **关键方法**: - `Debug()`、`Info()`、`Warn()`、`Error()`:记录不同级别的日志信息。 ## 使用说明 ### 1. 安装与配置 - **环境要求**:.NET Framework 4.7.2 或更高版本。 - **依赖库**:Cognex VisionPro、OpenCV、Siemens S7.NET 等。 - **配置文件**:通过 `app.config` 和 `ini` 文件进行系统配置。 ### 2. 启动与运行 - **启动程序**:运行 `Vision.exe` 启动主程序。 - **登录系统**:输入用户名和密码登录系统,根据权限进入不同界面。 - **加载解决方案**:选择或创建解决方案,加载相应的流程和模块。 ### 3. 图像采集 - **USB 相机采集**:通过 `FormManualCalibTakeCameroImage` 界面进行图像采集。 - **VM 视觉模块**:通过 `VMRunModule` 类加载 VM 视觉处理模块,进行图像处理。 ### 4. 通信配置 - **S7 通信**:通过 `S7Client` 类配置 S7 通信参数,如 IP 地址、端口号、PLC 类型等。 - **TCP 通信**:通过 `TCPServer` 类配置 TCP 通信参数,如 IP 地址、端口号等。 ### 5. 标定与校准 - **手动标定**:通过 `FormCalibrationFile` 和 `FormManualRotationCenter` 等界面进行手动标定。 - **自动标定**:通过 `CalibrationUtils` 类实现自动标定功能。 ### 6. 数据管理 - **全局变量**:通过 `FormGlobVariableTable` 界面管理全局变量。 - **日志查看**:通过 `FormLog` 界面查看系统日志,支持日志的搜索、筛选和导出。 ### 7. 用户权限管理 - **用户管理**:通过 `FormUserAdmin` 界面管理用户账户和权限。 - **权限控制**:通过 `UserRole` 枚举定义不同角色的权限,确保系统安全性。 ## 开发与扩展 ### 1. 模块开发 - **模块基类**:继承 `ModuleBase` 类,实现模块的核心逻辑。 - **模块配置**:实现 `IModuleConfig` 接口,定义模块的配置信息。 - **模块界面**:通过 `UserControl` 实现模块的用户界面。 ### 2. 插件开发 - **插件注册**:通过 `PluginTypeRegistry` 类注册插件类型。 - **插件加载**:通过 `Load` 方法加载插件 DLL 文件。 ### 3. 日志扩展 - **自定义日志器**:继承 `ILogger` 接口,实现自定义的日志记录方式。 - **日志输出**:通过 `Logger` 类添加自定义日志器,实现日志的多样化输出。 ## 许可证 本项目采用 [MIT License](https://opensource.org/licenses/MIT),允许在商业环境中使用,但必须保留原始版权和许可声明。 ## 贡献指南 欢迎贡献代码和文档。请遵循以下步骤: 1. Fork 项目。 2. 创建新分支。 3. 提交更改。 4. 发起 Pull Request。 ## 联系方式 如有任何问题或建议,请联系项目维护者。 --- **注意**:本 README 文件基于项目结构和代码分析生成,具体功能和实现细节可能因实际代码版本而有所不同。