一个非常优秀的项目源码范例,C#+Visionpro9.0,三相机定位,PLC, 逻辑及代码都非常好,使用过的项目,是学习及项目参考的极佳范例。 注:主界面未放出来。

一、系统概述

FitLed复检拍两次系统是基于C#与VisionPro 9.0开发的工业视觉检测与控制解决方案,聚焦于LED与RCAM组件的精准定位、贴合检测及数据管理。系统整合三相机视觉定位、三菱PLC控制、多维度数据存储与远程数据交互功能,适用于高精度工业生产场景,可实现从视觉采集、数据处理到设备联动的全流程自动化控制,同时支持苹果PDCA系统与捷普OEE系统的数据对接,满足工业生产中的质量管控与生产效率分析需求。

二、核心模块功能解析

(一)配置管理模块

配置管理模块以Ini文件为核心,提供系统参数的统一读写与维护能力,确保系统各组件参数的一致性与可扩展性。

  1. Ini文件基础操作(IniBase类)
    - 基于Windows API(WritePrivateProfileStringGetPrivateProfileString)实现Ini文件的底层读写,支持Section(区域)、Key(键)、Value(值)的结构化存储。
    - 内置路径校验机制,在设置文件路径时自动检查文件是否存在,若不存在则记录错误信息,保障参数读取的可靠性。
    - 提供错误信息获取接口(GetError),便于问题排查,例如参数读写失败时返回具体错误代码与描述。
  2. 系统配置拓展(IniFitLed类)
    - 采用单例模式设计,确保系统运行过程中配置实例的唯一性,避免参数冲突。
    - 覆盖系统全场景参数管理,包括用户登录信息(用户名、密码)、设备配置(PLC逻辑号、密码)、视觉参数(三相机曝光值、角度上下限、数据放大系数)、数据存储路径(Log文件、CSV文件)及第三方系统对接参数(苹果PDCA服务器IP、端口、捷普OEE地址)。
    - 针对视觉检测场景,提供补偿值(X/Y轴偏移、角度偏移)的读写接口,支持多工位(4个工位)的独立补偿配置,提升定位精度。
    - 集成日志记录功能,参数读写失败时自动记录错误日志,便于追溯问题根源。

(二)数据表格模块

数据表格模块基于Windows Forms的DataGridView控件封装,提供标准化的表格展示与数据交互能力,主要用于日志展示与数据可视化。

  1. 表格基础封装(DataGridViewBase类)
    - 定义表格核心属性(表格实例、字体)与通用方法,支持表格行列初始化、样式配置(背景色、行列高度、是否允许用户操作)。
    - 提供单元格、行、列的文本与颜色设置接口,支持批量赋值与样式统一,减少重复代码。
    - 预留虚拟方法(ConfigurationSetTitle),便于子类根据业务需求拓展个性化配置。
  2. 日志表格实现(DataGridViewLog类)
    - 固定表格结构(2行4列),聚焦日志数据展示,第一行作为标题行(序号、时间、编辑者、内容),后续行动态加载日志内容。
    - 支持日志数据实时更新,自动处理线程安全问题(通过Invoke方法实现跨线程UI操作),避免界面卡顿。
    - 内置日志数量控制机制,当日志行数超过100行时自动清理早期数据,优化内存占用。
    - 根据日志状态(Normal、Alarm、Error)设置不同背景色(绿色、黄色、红色),直观区分日志级别,提升运维效率。

(三)视觉数据管理模块

视觉数据管理模块负责存储与处理相机采集的定位数据、检测结果,为后续设备控制与质量判断提供数据支撑。

  1. 视觉基础数据(DataVisionBase类)
    - 记录视觉检测全流程时间节点(开始拍照时间、结束拍照时间、数据发送时间),便于分析检测耗时,优化生产节拍。
    - 存储核心检测数据(角度值)与检测结果(OK/NG),支持角度补偿值的静态存储,适用于多工位统一补偿场景。
    - 提供角度设置接口,支持是否添加补偿值的灵活配置,满足不同精度要求的检测场景。
  2. 视觉核查数据(DataVisionCheck类)
    - 继承自DataVisionBase,拓展角度上下限判断功能,通过与预设的角度范围(DblAngleLimitUpDblAngleLimitDown)对比,自动判定检测结果(IsPass)。
    - 支持角度上下限的静态设置,可根据检测需求动态调整合格范围,提升系统适应性。
  3. 视觉检测数据(DataVisionDetection类)
    - 增加X/Y轴坐标存储,支持坐标与角度的联合补偿计算,满足高精度定位需求(如LED与RCAM组件贴合)。
    - 提供数据放大系数配置,将视觉坐标与角度数据转换为PLC可识别的整数格式(坐标×系数、角度×系数×10),实现视觉系统与PLC的数值匹配。
    - 支持补偿值的静态批量设置,可一次性配置X/Y轴与角度的补偿参数,简化参数维护流程。
  4. 产品数据整合(ProductAssemble类)
    - 整合LED产品(ProductLED)、RCAM产品(ProductRCAM)与复检数据(DataVisionCheck),形成完整的产品检测档案。
    - 提供贴合位置与旋转角度的计算逻辑,通过RCAM与LED的定位数据差值,自动计算贴合所需的坐标偏移与角度偏移,为PLC控制提供精准参数。
  5. 产品集合管理(ProductAssembleCollection类)
    - 采用单例模式,管理12个产品工位数据,区分贴合工位(4个)与检测工位(4个),实现工位数据的隔离与协同。
    - 提供产品计数功能(总数、OK数),支持计数启用/禁用配置,满足不同生产场景的统计需求。
    - 实现工位数据旋转逻辑,支持产品在不同工位间的流转,自动更新当前操作工位,确保生产流程连贯。

(四)数据提交模块

数据提交模块负责与第三方系统(苹果PDCA、捷普OEE)进行数据交互,实现检测数据的远程上传与设备状态的同步。

  1. 苹果PDCA数据上传(DataUpLoadPcdaApple类)
    - 基于TCP协议实现与苹果PDCA服务器的通信,支持连接状态检测(TestNetwork)、数据分阶段上传(开始、中间属性、结束)。
    - 封装标准化的数据上传格式,包括产品SN、治具ID、穴位ID、检测参数(名称、值、上下限、单位)等,确保数据符合苹果PDCA系统规范。
    - 支持数据上传结果校验,通过解析服务器返回指令(OK/BAD/ERR)判断上传是否成功,失败时记录错误日志。
  2. 苹果PDCA拓展实现(DataUpLoadPcdaFitLed类)
    - 继承自DataUpLoadPcdaApple,采用单例模式,确保系统全局使用统一的PDCA数据上传实例。
    - 提供测试参数上传接口(TestPcdaParameter),支持模拟数据上传,便于系统调试与参数验证。
  3. 捷普OEE数据交互(HttpWebJBIL类)
    - 基于HTTP协议实现与捷普OEE系统的通信,支持客户信息、站点信息、机器名称、线别信息的查询,以及检测数据、设备状态的上传。
    - 封装标准化的API请求参数,例如产品SN核查(VerificationSN)、检测数据上传(UploadData)、设备停机状态上传(UploadMachineDownTime),确保与捷普OEE系统的兼容性。
    - 支持模拟数据模式,在无实际OEE服务器环境下可模拟返回数据,便于系统离线调试。
  4. 捷普报警信息管理(JabilAlarmMsg与JabilAlarmMsgCollection类)
    - JabilAlarmMsg类记录报警详情(序号、代码、类型、内容、时间节点),支持报警状态(是否在报警、是否上传恢复时间)的跟踪。
    - JabilAlarmMsgCollection类管理手动与自动报警集合,提供报警信息的添加、查询接口,便于统一维护报警配置。

(五)交互界面模块

交互界面模块提供可视化操作入口,涵盖系统配置、设备调试、数据查看等功能,提升用户操作体验。

  1. 苹果数据服务界面(FormAppleData)
    - 展示苹果PDCA服务器配置(IP、端口、供应商、厂房位置等),支持网络连通性测试(btnTestNetwork)与数据上传测试(btnSendbtnSendParameter)。
    - 提供产品检测数据录入界面(SN、治具ID、穴位ID、测试参数),校验输入合法性(如SN必须为19位),确保上传数据准确。
  2. 捷普OEE界面(FormJbilOEE)
    - 分区域展示基础信息(客户、站点、机器、线别)、条码及检测数据、机台状态,支持信息查询(btnGetCustomerMsgbtnGetStationMsg)与数据上传(btnUploadDatabtnUploadMachineStatus)。
    - 提供模拟数据开关(chkSimulate),可在离线环境下测试界面功能,降低调试难度。
  3. 用户登录界面(FormLogin)
    - 支持用户名与密码验证,可对接预设的单一用户或用户数据表(DataTable),满足多用户管理需求。
    - 处理键盘事件(Enter键登录、Escape键关闭),提升操作便捷性,同时提供密码错误提示,增强系统安全性。
  4. OEE停机管理界面(FormOEEUpload)
    - 展示历史停机日志,支持停机信息(故障类型、代码、时长)的录入与上传,提供快捷时长选择(5/10/20/30/40/50分钟),简化操作流程。
    - 实时更新上传日志,直观展示上传结果,便于运维人员跟踪停机数据同步状态。
  5. 补偿值设置界面(FormOffset)
    - 支持4个工位的补偿值(X/Y轴、角度)设置,自动加载当前补偿值,修改后实时保存并生效,无需重启系统。
    - 提示补偿值放大规则(坐标×系数、角度×系数×10),避免用户因单位误解导致的参数配置错误。
  6. PLC调试界面(FormPLC)
    - 展示PLC连接状态,支持PLC地址读写操作(btnReadbtnWrite),提供常用地址快速选择(cmbAddress),便于调试。
    - 支持PLC所有状态的批量读取(btnReadPLCAll),一次性展示所有关键地址的当前值,提升调试效率。
  7. 工作数据操控界面(FormWorkData)
    - 支持产品计数启用/禁用、OK/总数设置,实时同步至系统计数模块,满足生产统计需求。
    - 提供OEE流程管控与自动报警的启用/禁用开关,动态调整系统与OEE系统的交互策略。

(六)日志管理模块

日志管理模块负责系统全流程日志的记录与存储,支持TXT与CSV两种格式,满足不同场景的日志查阅与分析需求。

  1. TXT日志管理(LogTxt类)
    - 按时间分层存储日志(月/日),自动创建目录结构,便于日志归档与追溯。
    - 支持日志路径自定义,满足不同存储需求,同时记录日志写入错误信息,便于排查存储问题。
  2. CSV日志管理(CsvBase与CsvFitLed类)
    - CsvBase类提供CSV文件基础操作,支持文件自动创建、标题写入、内容追加,处理Excel占用文件时的进程杀死逻辑,确保文件可正常写入。
    - CsvFitLed类继承自CsvBase,定义标准化的CSV表头(SN、时间、检测参数1-21、结果),支持检测数据的结构化存储,便于后续数据分析与报表生成。
  3. 日志核心管理(Log与LogMsg类)
    - LogMsg类定义日志结构(时间、编辑者、内容、状态),支持日志字符串格式化,便于日志展示与存储。
    - Log类采用单例模式,管理日志队列(最多100条),支持日志实时展示(通过回调函数更新UI)与持久化存储(TXT格式),确保日志不丢失。

(七)PLC控制模块

PLC控制模块负责与三菱PLC的通信,实现指令下发与状态读取,是系统与硬件设备联动的核心。

  1. 三菱PLC基础通信(PlcSanLing类)
    - 基于ActUtlTypeLib组件实现与三菱PLC的连接(Open/Close),支持PLC逻辑号与密码配置,确保通信安全。
    - 提供多种数据读写接口,包括随机寄存器读写(16位/32位)、块数据读写(16位/32位)、双D寄存器读写(32位),满足不同PLC地址类型的操作需求。
    - 处理多线程安全问题(通过lock关键字),避免并发操作导致的通信异常。
  2. PLC信号管理(PlcSignal与PlcSignalCollection类)
    - PlcSignal类记录PLC地址信息(地址、值、含义),支持值变化检测(SetValue),自动标记状态是否改变,便于识别设备状态切换。
    - PlcSignalCollection类预定义系统所需的PLC地址集合(如拍照触发、检测OK/NG、组装完成),统一管理地址含义,避免地址混淆。
  3. PLC控制拓展(PLCSanLingFitLed类)
    - 继承自PlcSanLing,采用单例模式,关联PLC信号集合(PlcSignalCollection),支持通过索引快速读写指定地址数据,简化代码调用。
    - 提供所有PLC状态的批量读取接口(ReadStatusAll),一次性获取所有关键地址值,便于系统整体监控设备状态。

三、系统工作流程

  1. 系统初始化:启动后加载Ini配置文件,初始化相机、PLC、日志等模块,校验配置参数合法性,若初始化失败则提示错误并退出。
  2. 用户登录:用户输入用户名与密码,系统校验通过后启用操作菜单,未登录时仅开放基础查看功能,确保系统安全性。
  3. 视觉检测:相机接收触发信号(PLC或手动),采集图像并计算定位数据(坐标、角度),结合补偿值处理后,判定检测结果(OK/NG)。
  4. 设备联动:将处理后的定位数据(放大后)发送至PLC,控制设备执行贴合等操作,同时记录操作时间与结果。
  5. 数据上传:检测结果与设备状态实时上传至苹果PDCA或捷普OEE系统,失败时记录错误日志,便于后续重试。
  6. 日志与统计:系统运行过程中实时记录操作日志、检测数据,更新产品计数(总数、OK数),支持日志查阅与数据导出(CSV)。

四、系统特点与优势

  1. 高可扩展性:采用模块化设计,各模块通过接口交互,便于功能拓展(如新增相机、对接新第三方系统)。
  2. 高可靠性:关键操作(如参数读写、PLC通信、数据上传)均有错误处理与日志记录,便于问题排查;重要参数支持补偿配置,提升检测精度。
  3. 易用性:提供丰富的可视化界面,支持参数配置、设备调试、数据查看,操作流程清晰,降低运维难度。
  4. 兼容性:支持与三菱PLC、苹果PDCA、捷普OEE等工业常用设备与系统对接,适应不同生产环境。
  5. 性能优化:日志数量控制、线程安全处理、文件占用处理等机制,确保系统稳定运行,避免内存泄漏与界面卡顿。

五、适用场景

FitLed复检拍两次系统适用于高精度LED与RCAM组件的贴合检测场景,尤其适合对定位精度要求高、需与第三方质量管控系统对接的工业生产线,如消费电子(手机、平板)的LED屏幕组装、摄像头模组贴合等生产环节。

一个非常优秀的项目源码范例,C#+Visionpro9.0,三相机定位,PLC, 逻辑及代码都非常好,使用过的项目,是学习及项目参考的极佳范例。 注:主界面未放出来。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐