抖音粉丝群1
『7x24小时有问必答』

前言

工业自动化产线的落地过程中,视觉检测系统的部署往往面临着"硬件未到,软件先行"的尴尬局面。传统的开发模式必须等到真实的相机、PLC(可编程逻辑控制器)和机械臂全部就位,才能开始联调,这不仅严重拖慢了项目进度,还让算法的验证充满了不确定性。如果能在办公室的电脑上就完整模拟出真实产线的运行逻辑,提前发现并解决通信、时序和算法缺陷,将极大提升交付效率。本文推荐一套完整的"工业视觉检测线模拟系统",在通过纯软件的方式,1:1 还原真实的工业检测场景。

项目介绍

项目是一套用于模拟工业视觉检测线核心软件流程的综合性仿真平台。它打破了物理硬件的束缚,通过虚拟设备通信、多线程检测引擎以及真实的算法调用,完美复刻了从"PLC触发 -> 相机拍照 -> 算法处理 -> 运动控制 -> 数据入库"的完整闭环。
系统基于 WPF MVVM 架构设计,深度集成了 C++ 算法 DLL,并内置了虚拟的 PLC、相机和运动控制卡模拟器。无论是验证视觉算法的准确性,还是测试上位机软件的逻辑健壮性,这套系统都能在不依赖任何真实硬件的情况下,提供高度逼真的调试环境。

项目功能

功能模块
核心能力
详细描述
主监控看板
实时状态监控
实时展示产品检测结果、处理耗时曲线、当前报警列表以及虚拟传送带的运行状态,让产线情况一目了然。
虚拟设备通信
全链路信号模拟
内置 Modbus TCP 从站模拟器,支持虚拟 PLC 触发信号;模拟运动控制卡的位置反馈与到位信号,还原真实的产线节拍。
文件夹相机推流
图像源模拟
将本地文件夹作为虚拟相机的图像源,按顺序或循环推流图片,模拟真实相机的连续抓拍,支持空文件夹告警。
多线程检测引擎
高效并发处理
采用生产者-消费者模型(BlockingCollection),确保图像采集与算法处理互不阻塞,真实还原高并发下的检测性能。
数据持久化
历史记录追溯
自动创建 SQLite 数据库,记录每一次检测的时间、产品码、结果、缺陷类型及耗时,并支持 CSV 导出。
配置热更新
动态参数调整
支持在运行过程中修改检测参数、通信地址映射等配置,保存后立即生效,无需重启软件。

项目特点

1、零硬件依赖的完整闭环:无需连接真实的 PLC、相机或运动控制卡,通过内置的虚拟设备模拟器,即可在单机上完成整条产线的逻辑验证和通信测试。
2、真实的算法调用体验:系统并非简单地模拟检测结果,而是通过调用真实的 C++ 算法 DLL 进行推理。这意味着算法的性能瓶颈、内存占用以及异常处理都能得到真实的验证。
3、高并发的多线程架构:针对工业现场对速度的严苛要求,核心检测引擎采用了多线程生产者-消费者模型。即使前端相机推流速度极快,检测引擎也能通过队列平稳处理,避免丢帧。
4、灵活的配置与扩展性:基于 WPF MVVM 架构,实现了界面与业务逻辑的彻底解耦。同时,系统支持配置热更新,极大提升了调试效率,避免了"改一个参数重启一次"的繁琐流程。

项目技术

前端框架:基于 WPF (.NET 8) ,采用 MVVM 设计模式,确保代码的高可维护性。图表展示使用了 LiveCharts 库(注:当前存在 NU1701 兼容性警告,后续计划替换为 .NET 8 原生兼容图表库)。
核心引擎:C# 编写的业务核心,利用  BlockingCollection<imagetask>  实现线程安全的任务队列,协调虚拟相机与检测算法之间的数据流转。
算法层:使用 C++ 编写高性能视觉算法,并编译为动态链接库(DLL),由 C# 核心层通过 P/Invoke 进行调用,确保检测环节的计算效率。
通信协议:实现了标准的 Modbus TCP 协议模拟器,能够像真实的 PLC 从站一样响应读写请求,处理到位信号与触发指令。
数据存储:采用轻量级嵌入式数据库 SQLite,自动在运行目录下创建  vision-simulator.db,存储结构化的检测记录。

项目效果

前置联调周期:在真实产线硬件进场前,软件团队已经完成了 90% 以上的逻辑测试和通信联调,现场部署时间缩短了一半以上。
算法性能摸底:通过文件夹相机的高速推流,提前暴露了 C++ 算法在极限节拍下的内存泄漏和耗时波动问题,并在仿真阶段完成了优化。
异常场景复现:能够轻松模拟真实产线难以复现的极端情况(如 PLC 信号抖动、相机断连、空拍等),验证了系统的容错能力和报警机制。

1.png

2.png

3.png

项目源码

目录结构
IndustrialVisionSimulator.sln

├── VisionSimulator.UI (WPF 界面层)

├── VisionSimulator.Core (业务逻辑与检测引擎)

├── VisionSimulator.Algorithm (C++ 算法 DLL)

├── DeviceSimulators (虚拟 PLC/相机/运动卡模拟器)

├── DeviceSimulators.Tests (设备模拟器单元测试)

└── VisionSimulator.Core.Tests (核心引擎单元测试)

编译与运行指南:
1、环境准备:需安装 Visual Studio 2022、.NET 8 SDK 以及"使用 C++ 的桌面开发"工作负载。
2、编译 C++ 算法:由于涉及原生 C++ 工具链,建议在 VS 中右键  VisionSimulator.Algorithm  项目,选择 x64 平台进行生成(直接使用 dotnet build 可能会报 MSB4278 错误)。
3、编译与启动 UI
在终端执行:
dotnet restoredotnet build VisionSimulator.UI/VisionSimulator.UI.csproj -c Debug
编译完成后,运行  VisionSimulator.UI/bin/Debug/net8.0-windows/VisionSi"mulator.UI.exe  即可启动模拟系统。
4、运行测试
可通过  dotnet test DeviceSimulators.Tests/DeviceSimulators.Tests.csproj -c Debug  等命令运行相关的单元测试,确保各模块逻辑正确。
为了防止丢失,后台回复关键字视觉模拟系统,即可获取完整源码地址。
4.png

总结

工业视觉检测线模拟系统通过"虚拟化"与"仿真化"的技术手段,成功解决了工业软件开发中硬件依赖重、联调周期长的痛点。它不仅是一个功能完备的模拟平台,更是一套标准化的工业视觉软件开发范式。通过 WPF、C++、虚拟 Modbus 与多线程技术的深度融合,该系统为工业 4.0 背景下的智能制造提供了强有力的软件支撑,让视觉检测系统的交付变得更加从容、高效与可靠。

关键词

最后
如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。也可以加入微信公众号[DotNet技术匠]  社区,与其他热爱技术的同行一起交流心得,共同成长!
作者:小码编匠
出处:gitee.com/smallcore/DotNetCore
声明:网络内容,仅供学习,尊重版权,侵权速删,歉意致谢!

END

方便大家交流、资源共享和共同成长
纯技术交流群,需要加入的小伙伴请扫码,并备注加群

推荐阅读

觉得有收获?不妨分享让更多人受益
关注「DotNet技术匠」,共同提升技术实力

收藏
点赞
分享
在看
</imagetask>

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码