《视觉pro 9.0环境下高性能项目源码实战——C#驱动三相机定位PLC逻辑》
·
一个非常优秀的项目源码范例,C#+Visionpro9.0,三相机定位,PLC, 逻辑及代码都非常好,使用过的项目,是学习及项目参考的极佳范例。 注:主界面未放出来。
FitLed复检系统:一套面向LED贴合产线的三相机视觉复检框架

一、定位
FitLed是一套基于C# + Cognex VisionPro 9.0的“LED-RCAM”二次复检软件,服务于SMT后段FATP产线。它在一次贴合之后、出货之前,用3套相机(RCAM / LED / CHECK)对LED-透镜组件进行两次拍照、一次复检,把偏移量、角度、OK/NG结果实时送给PLC,同时向上游MES(苹果PDCA、捷普OEE)上报数据。整套代码采用“单例+配置驱动+事件日志+状态机”的架构,把运动控制、视觉算法、网络协议、用户交互四层完全解耦,方便二次开发或移植到任意三相机+PLC场景。

二、业务主流程(无代码级细节)
- 上料:12穴治具进入转盘,PLC给出“有料”信号。
- 一次拍照(RCAM):
– 拍透镜基准Mark,计算初始角度。 - 二次拍照(LED):
– 拍LED基准Mark,计算相对偏移与二次角度。 - 视觉运算:
– 把像素坐标转成PLC脉冲(带用户可配的放大系数)。
– 叠加4组补偿值(X/Y/θ)后,得到最终“贴合位”。 - 贴合:
– PLC按视觉结果完成透镜-LED贴合。 - 复检拍照(CHECK):
– 再次拍LED-透镜对位边缘,计算最终角度。
– 与上下限比较,给出PASS/FAIL。 - 下料&数据上报:
– OK品流入下一工站;NG品报警停机。
– 把SN、角度、结果、时间戳按苹果PDCA或捷普OEE格式发到远端服务器。
三、核心模块与职责
- 配置中心(IniFitLed)
– 以.ini文件为单一真相源,管理相机曝光、PLC站号、补偿值、PDCA/OEE开关、报警代码等200+参数。
– 所有视觉、运动、网络模块仅通过IniFitLed获取参数,实现“零硬编码”。
- 产品数据总线(ProductAssembleCollection)
– 12穴环形缓冲区,线程安全地保存每穴的RCAM数据、LED数据、复检结果。
– 提供“计算可贴合数”“旋转缓冲区”“统计OK/NG”等原子接口,供状态机调用。
- 视觉引擎(CameraToolsRun + VisionTools)
– 对VisionPro的ToolGroup进行二次封装,把“取像→标定→匹配→计算偏移”封装成黑盒,对外只暴露“拍照入口”与“结果事件”。
– 支持运行时切换VPP文件,满足“不停机换机种”需求。
- PLC通信层(PLCSanLingFitLed)
– 基于三菱ActUtlTypeLib,封装“读写D区、读写X/Y/M、批量读取”等原子指令。
– 把20+个信号(允许拍照、拍照完成、贴合完成、真空检测等)抽象成PlcSignalCollection,上层用索引器访问,避免“魔术地址”散落。
- 网络上行通道
– 苹果PDCA:TCP文本协议,支持start/dut_pos/pdata/submit四步提交;自带重连、超时、异常日志。
– 捷普OEE:HTTP POST + JSON,支持条码核查、过站记录、停机事件、自动报警;内置“模拟模式”,可在无网络环境下调试。
- 日志与审计(Log + CsvFitLed)
– 内存循环队列缓存最近100条日志,UI实时刷新;同时落盘到txt,文件名按天滚动。
– 每颗产品的SN、20+个测量值、结果,以CSV形式追加到当日文件,方便SPC后期分析。
四、状态机设计(Work.cs)
采用“PLC信号驱动+异步视觉任务”双队列机制:
- 主线程:轮询PLC信号,把“允许拍照”“贴合完成”等事件压入命令队列。
- 视觉线程:从命令队列取任务,调用CameraToolsRun拍照,结果压入结果队列。
- 回调线程:把结果队列里的偏移、角度、OK/NG写入PLC并上报MES。
通过“命令-结果”双队列,把PLC的ms级实时要求与VisionPro的百ms级运算解耦,保证节拍稳定。

五、补偿值与标定策略
- 像素→脉冲的放大系数、角度放大系数可ini配置,换机种无需重新编译。
- 4组独立补偿值(X/Y/θ)对应4穴模具,支持“单穴微调”且即时生效。
- 提供“解锁标定”窗口,维护人员可用标准块一次性标定9点,自动写入ini。
六、安全与权限
- 启动后默认“游客模式”,操作菜单全灰;登录后才开放“相机调试、PLC调试、补偿值、数据服务”等入口。
- 登录凭证(用户/密码)存放于ini,支持后期扩展为AD域或员工卡。
七、可移植性要点
- 相机品牌:VisionPro已封装成接口,只要替换CameraToolsRun内部实现,即可迁移到Halcon、OpenCV。
- PLC品牌:PlcSanLing仅实现IPlc接口,换成欧姆龙、西门子时,只需重写读写方法,信号表与状态机保持不变。
- MES协议:PDCA/OEE模块均继承自“DataUploadBase”,新增协议时派生新类、覆写四步法即可。
八、典型性能指标(实测)
- 节拍:1.8 s/穴(含两次拍照+一次贴合+一次复检)。
- 重复精度:±0.02 mm,±0.05°(3σ,使用500万像素相机+25 mm定焦镜头)。
- 换机种停机时间:<3 min(仅换治具、载入新VPP、调整曝光)。
九、结语
FitLed把“三相机+PLC+MES”这一常见但易碎片化的场景,抽象成“配置驱动、状态机调度、模块解耦”的通用框架。它不仅解决LED-透镜复检的当下需求,更为后续“双摄手机模组”、“VCM马达贴合”等同类项目提供了可复制、可扩展、可维护的代码骨架。

更多推荐



所有评论(0)