C#+Visionpro9.0 三相机定位 PLC项目源码范例:优质逻辑与代码的极佳学习参考
一个非常优秀的项目源码范例C#Visionpro9.0三相机定位PLC, 逻辑及代码都非常好使用过的项目是学习及项目参考的极佳范例。 注:主界面未放出来。一、系统概述FitLed复检拍两次系统是基于C#与VisionPro 9.0开发的工业视觉检测与控制解决方案聚焦于LED与RCAM组件的精准定位、贴合检测及数据管理。系统整合三相机视觉定位、三菱PLC控制、多维度数据存储与远程数据交互功能适用于高精度工业生产场景可实现从视觉采集、数据处理到设备联动的全流程自动化控制同时支持苹果PDCA系统与捷普OEE系统的数据对接满足工业生产中的质量管控与生产效率分析需求。二、核心模块功能解析一配置管理模块配置管理模块以Ini文件为核心提供系统参数的统一读写与维护能力确保系统各组件参数的一致性与可扩展性。Ini文件基础操作IniBase类- 基于Windows APIWritePrivateProfileString与GetPrivateProfileString实现Ini文件的底层读写支持Section区域、Key键、Value值的结构化存储。- 内置路径校验机制在设置文件路径时自动检查文件是否存在若不存在则记录错误信息保障参数读取的可靠性。- 提供错误信息获取接口GetError便于问题排查例如参数读写失败时返回具体错误代码与描述。系统配置拓展IniFitLed类- 采用单例模式设计确保系统运行过程中配置实例的唯一性避免参数冲突。- 覆盖系统全场景参数管理包括用户登录信息用户名、密码、设备配置PLC逻辑号、密码、视觉参数三相机曝光值、角度上下限、数据放大系数、数据存储路径Log文件、CSV文件及第三方系统对接参数苹果PDCA服务器IP、端口、捷普OEE地址。- 针对视觉检测场景提供补偿值X/Y轴偏移、角度偏移的读写接口支持多工位4个工位的独立补偿配置提升定位精度。- 集成日志记录功能参数读写失败时自动记录错误日志便于追溯问题根源。二数据表格模块数据表格模块基于Windows Forms的DataGridView控件封装提供标准化的表格展示与数据交互能力主要用于日志展示与数据可视化。表格基础封装DataGridViewBase类- 定义表格核心属性表格实例、字体与通用方法支持表格行列初始化、样式配置背景色、行列高度、是否允许用户操作。- 提供单元格、行、列的文本与颜色设置接口支持批量赋值与样式统一减少重复代码。- 预留虚拟方法Configuration、SetTitle便于子类根据业务需求拓展个性化配置。日志表格实现DataGridViewLog类- 固定表格结构2行4列聚焦日志数据展示第一行作为标题行序号、时间、编辑者、内容后续行动态加载日志内容。- 支持日志数据实时更新自动处理线程安全问题通过Invoke方法实现跨线程UI操作避免界面卡顿。- 内置日志数量控制机制当日志行数超过100行时自动清理早期数据优化内存占用。- 根据日志状态Normal、Alarm、Error设置不同背景色绿色、黄色、红色直观区分日志级别提升运维效率。三视觉数据管理模块视觉数据管理模块负责存储与处理相机采集的定位数据、检测结果为后续设备控制与质量判断提供数据支撑。视觉基础数据DataVisionBase类- 记录视觉检测全流程时间节点开始拍照时间、结束拍照时间、数据发送时间便于分析检测耗时优化生产节拍。- 存储核心检测数据角度值与检测结果OK/NG支持角度补偿值的静态存储适用于多工位统一补偿场景。- 提供角度设置接口支持是否添加补偿值的灵活配置满足不同精度要求的检测场景。视觉核查数据DataVisionCheck类- 继承自DataVisionBase拓展角度上下限判断功能通过与预设的角度范围DblAngleLimitUp、DblAngleLimitDown对比自动判定检测结果IsPass。- 支持角度上下限的静态设置可根据检测需求动态调整合格范围提升系统适应性。视觉检测数据DataVisionDetection类- 增加X/Y轴坐标存储支持坐标与角度的联合补偿计算满足高精度定位需求如LED与RCAM组件贴合。- 提供数据放大系数配置将视觉坐标与角度数据转换为PLC可识别的整数格式坐标×系数、角度×系数×10实现视觉系统与PLC的数值匹配。- 支持补偿值的静态批量设置可一次性配置X/Y轴与角度的补偿参数简化参数维护流程。产品数据整合ProductAssemble类- 整合LED产品ProductLED、RCAM产品ProductRCAM与复检数据DataVisionCheck形成完整的产品检测档案。- 提供贴合位置与旋转角度的计算逻辑通过RCAM与LED的定位数据差值自动计算贴合所需的坐标偏移与角度偏移为PLC控制提供精准参数。产品集合管理ProductAssembleCollection类- 采用单例模式管理12个产品工位数据区分贴合工位4个与检测工位4个实现工位数据的隔离与协同。- 提供产品计数功能总数、OK数支持计数启用/禁用配置满足不同生产场景的统计需求。- 实现工位数据旋转逻辑支持产品在不同工位间的流转自动更新当前操作工位确保生产流程连贯。四数据提交模块数据提交模块负责与第三方系统苹果PDCA、捷普OEE进行数据交互实现检测数据的远程上传与设备状态的同步。苹果PDCA数据上传DataUpLoadPcdaApple类- 基于TCP协议实现与苹果PDCA服务器的通信支持连接状态检测TestNetwork、数据分阶段上传开始、中间属性、结束。- 封装标准化的数据上传格式包括产品SN、治具ID、穴位ID、检测参数名称、值、上下限、单位等确保数据符合苹果PDCA系统规范。- 支持数据上传结果校验通过解析服务器返回指令OK/BAD/ERR判断上传是否成功失败时记录错误日志。苹果PDCA拓展实现DataUpLoadPcdaFitLed类- 继承自DataUpLoadPcdaApple采用单例模式确保系统全局使用统一的PDCA数据上传实例。- 提供测试参数上传接口TestPcdaParameter支持模拟数据上传便于系统调试与参数验证。捷普OEE数据交互HttpWebJBIL类- 基于HTTP协议实现与捷普OEE系统的通信支持客户信息、站点信息、机器名称、线别信息的查询以及检测数据、设备状态的上传。- 封装标准化的API请求参数例如产品SN核查VerificationSN、检测数据上传UploadData、设备停机状态上传UploadMachineDownTime确保与捷普OEE系统的兼容性。- 支持模拟数据模式在无实际OEE服务器环境下可模拟返回数据便于系统离线调试。捷普报警信息管理JabilAlarmMsg与JabilAlarmMsgCollection类-JabilAlarmMsg类记录报警详情序号、代码、类型、内容、时间节点支持报警状态是否在报警、是否上传恢复时间的跟踪。-JabilAlarmMsgCollection类管理手动与自动报警集合提供报警信息的添加、查询接口便于统一维护报警配置。五交互界面模块交互界面模块提供可视化操作入口涵盖系统配置、设备调试、数据查看等功能提升用户操作体验。苹果数据服务界面FormAppleData- 展示苹果PDCA服务器配置IP、端口、供应商、厂房位置等支持网络连通性测试btnTestNetwork与数据上传测试btnSend、btnSendParameter。- 提供产品检测数据录入界面SN、治具ID、穴位ID、测试参数校验输入合法性如SN必须为19位确保上传数据准确。捷普OEE界面FormJbilOEE- 分区域展示基础信息客户、站点、机器、线别、条码及检测数据、机台状态支持信息查询btnGetCustomerMsg、btnGetStationMsg与数据上传btnUploadData、btnUploadMachineStatus。- 提供模拟数据开关chkSimulate可在离线环境下测试界面功能降低调试难度。用户登录界面FormLogin- 支持用户名与密码验证可对接预设的单一用户或用户数据表DataTable满足多用户管理需求。- 处理键盘事件Enter键登录、Escape键关闭提升操作便捷性同时提供密码错误提示增强系统安全性。OEE停机管理界面FormOEEUpload- 展示历史停机日志支持停机信息故障类型、代码、时长的录入与上传提供快捷时长选择5/10/20/30/40/50分钟简化操作流程。- 实时更新上传日志直观展示上传结果便于运维人员跟踪停机数据同步状态。补偿值设置界面FormOffset- 支持4个工位的补偿值X/Y轴、角度设置自动加载当前补偿值修改后实时保存并生效无需重启系统。- 提示补偿值放大规则坐标×系数、角度×系数×10避免用户因单位误解导致的参数配置错误。PLC调试界面FormPLC- 展示PLC连接状态支持PLC地址读写操作btnRead、btnWrite提供常用地址快速选择cmbAddress便于调试。- 支持PLC所有状态的批量读取btnReadPLCAll一次性展示所有关键地址的当前值提升调试效率。工作数据操控界面FormWorkData- 支持产品计数启用/禁用、OK/总数设置实时同步至系统计数模块满足生产统计需求。- 提供OEE流程管控与自动报警的启用/禁用开关动态调整系统与OEE系统的交互策略。六日志管理模块日志管理模块负责系统全流程日志的记录与存储支持TXT与CSV两种格式满足不同场景的日志查阅与分析需求。TXT日志管理LogTxt类- 按时间分层存储日志月/日自动创建目录结构便于日志归档与追溯。- 支持日志路径自定义满足不同存储需求同时记录日志写入错误信息便于排查存储问题。CSV日志管理CsvBase与CsvFitLed类-CsvBase类提供CSV文件基础操作支持文件自动创建、标题写入、内容追加处理Excel占用文件时的进程杀死逻辑确保文件可正常写入。-CsvFitLed类继承自CsvBase定义标准化的CSV表头SN、时间、检测参数1-21、结果支持检测数据的结构化存储便于后续数据分析与报表生成。日志核心管理Log与LogMsg类-LogMsg类定义日志结构时间、编辑者、内容、状态支持日志字符串格式化便于日志展示与存储。-Log类采用单例模式管理日志队列最多100条支持日志实时展示通过回调函数更新UI与持久化存储TXT格式确保日志不丢失。七PLC控制模块PLC控制模块负责与三菱PLC的通信实现指令下发与状态读取是系统与硬件设备联动的核心。三菱PLC基础通信PlcSanLing类- 基于ActUtlTypeLib组件实现与三菱PLC的连接Open/Close支持PLC逻辑号与密码配置确保通信安全。- 提供多种数据读写接口包括随机寄存器读写16位/32位、块数据读写16位/32位、双D寄存器读写32位满足不同PLC地址类型的操作需求。- 处理多线程安全问题通过lock关键字避免并发操作导致的通信异常。PLC信号管理PlcSignal与PlcSignalCollection类-PlcSignal类记录PLC地址信息地址、值、含义支持值变化检测SetValue自动标记状态是否改变便于识别设备状态切换。-PlcSignalCollection类预定义系统所需的PLC地址集合如拍照触发、检测OK/NG、组装完成统一管理地址含义避免地址混淆。PLC控制拓展PLCSanLingFitLed类- 继承自PlcSanLing采用单例模式关联PLC信号集合PlcSignalCollection支持通过索引快速读写指定地址数据简化代码调用。- 提供所有PLC状态的批量读取接口ReadStatusAll一次性获取所有关键地址值便于系统整体监控设备状态。三、系统工作流程系统初始化启动后加载Ini配置文件初始化相机、PLC、日志等模块校验配置参数合法性若初始化失败则提示错误并退出。用户登录用户输入用户名与密码系统校验通过后启用操作菜单未登录时仅开放基础查看功能确保系统安全性。视觉检测相机接收触发信号PLC或手动采集图像并计算定位数据坐标、角度结合补偿值处理后判定检测结果OK/NG。设备联动将处理后的定位数据放大后发送至PLC控制设备执行贴合等操作同时记录操作时间与结果。数据上传检测结果与设备状态实时上传至苹果PDCA或捷普OEE系统失败时记录错误日志便于后续重试。日志与统计系统运行过程中实时记录操作日志、检测数据更新产品计数总数、OK数支持日志查阅与数据导出CSV。四、系统特点与优势高可扩展性采用模块化设计各模块通过接口交互便于功能拓展如新增相机、对接新第三方系统。高可靠性关键操作如参数读写、PLC通信、数据上传均有错误处理与日志记录便于问题排查重要参数支持补偿配置提升检测精度。易用性提供丰富的可视化界面支持参数配置、设备调试、数据查看操作流程清晰降低运维难度。兼容性支持与三菱PLC、苹果PDCA、捷普OEE等工业常用设备与系统对接适应不同生产环境。性能优化日志数量控制、线程安全处理、文件占用处理等机制确保系统稳定运行避免内存泄漏与界面卡顿。五、适用场景FitLed复检拍两次系统适用于高精度LED与RCAM组件的贴合检测场景尤其适合对定位精度要求高、需与第三方质量管控系统对接的工业生产线如消费电子手机、平板的LED屏幕组装、摄像头模组贴合等生产环节。一个非常优秀的项目源码范例C#Visionpro9.0三相机定位PLC, 逻辑及代码都非常好使用过的项目是学习及项目参考的极佳范例。 注:主界面未放出来。