159 Commits

Author SHA1 Message Date
LI Wei.lw e1c4c78510 已合并 PR 103: QFN检测模块
1.新增 ROI 对齐能力(RoiAlignmentProcessor + Alignment 基础类),打通模板位姿到 ROI 变换链路。
2.新增 QFN 一体检测算子(QfnAutoDetectionProcessor),串联模板匹配、ROI 对齐、中心/引脚空洞检测。
3.增强 QFN 相关 UI(新增 QFN 检测面板、ViewModel、图标、主界面入口与联动)。
4.改造 导航相机标定模块(新增采集服务接口/实现,标定控件重构,移除旧画布控件)。
5.优化部分 图像处理算子(如 Contrast/Threshold/GaussianBlur)与显示细节(线宽/线灰度自适应)。
2026-06-03 08:45:15 +08:00
ZHANG Zhengxuan 011854c42a 已合并 PR 98: CNC界面的调整和仿真执行功能
1、调整CNC树形结构,将位置为一级节点;文件名使用label控件显示;
2、CNC执行功能调试,新增运动,探测器,射线源的仿真,点击执行,判断到位,取图,计算的逻辑
3、将CNC执行结果的值类型, 写入mainfest.json

![image.png](http://cntao-ap-v83/HMQ-Solution/7ff128fd-5cc6-4feb-9529-2a03b2895662/_apis/git/repositories/e2c5485f-4369-4ed9-9fb9-d087ca4e04b6/pullRequests/98/attachments/image.png)
2026-06-02 09:07:30 +08:00
李伟 19b63fd419 模板匹配助手在保存模型时写入同名参考位姿 JSON。
训练 ROI 后记录基准中心和角度,保存模型时同步生成同名元数据文件,并在加载模型时自动回读,减少后续对齐配置的人工录入。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-01 17:08:20 +08:00
李伟 5b4ff89ef0 新增 QFN 一体检测算子,串联模板匹配与双路空洞检测。
将模板定位、中心 ROI 对齐、中心焊盘空洞和引脚空洞检测整合到单算子中,并输出统一判定结果,便于快速验证完整流程。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-01 17:06:48 +08:00
李伟 1874c4a5bb 新增 ROI 对齐基础能力并打通到算子与 UI。
统一补齐对齐核心工具类、RoiAlignment 算子、模板匹配对齐扩展和多语言资源,便于在检测前稳定完成示教 ROI 到运行图的变换。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-01 17:04:32 +08:00
李伟 b0397365b2 屏蔽导航相机自动连接 2026-06-01 09:58:25 +08:00
SONG Tian a3a6bf7225 Merged PR 99: Updated ReconstructionNotifyService.cs 编译bug解决
Updated ReconstructionNotifyService.cs  编译bug解决
2026-06-01 09:28:56 +08:00
SONG Tian 580d61acae Updated ReconstructionNotifyService.cs 编译bug解决 2026-06-01 01:18:06 +00:00
李伟 703e548c31 启用导航相机自动连接 2026-05-27 09:23:10 +08:00
李伟 b3d39c3492 标定面板图像显示控件替换为PolygonRoiCanvas,删除旧ImageCanvasControl 2026-05-27 09:22:56 +08:00
李伟 bc626a0ca8 坐标标定工具改造:新增采集服务接口及实现,支持一键采集标定点 2026-05-27 09:22:44 +08:00
zhengxuan.zhang 84c1c5f16d CNC 检测模块输出的 数值类型如 bga检测和 孔隙检测的输出内容,要写入到 CNC 检测结果 manifest.json 合适的地址 2026-05-26 16:02:34 +08:00
李伟 030433cc92 优化:修复Logger类型错误,重写CLAHE算法,像素遍历改用unsafe指针加速 2026-05-26 13:28:52 +08:00
zhengxuan.zhang cdd0db95ff 调试CNC执行 2026-05-26 13:18:29 +08:00
李伟 82b7c32147 测量工具组线宽根据图像分辨率自适应 2026-05-26 11:35:25 +08:00
李伟 77f6a32eda 线灰度和辅助线粗细根据图像分辨率自适应,图像切换时自动重绘 2026-05-26 11:24:36 +08:00
李伟 7c06cd2def 新增QFN检测面板及按钮,统一三个模块ROI颜色为Cyan 2026-05-26 11:22:17 +08:00
李伟 0f24209e13 新增QFN引脚空洞率检测处理器及本地化资源 2026-05-26 11:22:04 +08:00
zhengxuan.zhang eb8d7a1491 优化当前加载的显示 2026-05-25 13:40:45 +08:00
zhengxuan.zhang d51d2b0013 修改CNC样式 √ 隐藏根节点,修改保存位置0 修改为位置1---N √ 运行对一级节点进行重命名 √ 2026-05-25 13:33:04 +08:00
ZHANG Zhengxuan 06c39c5ab4 已合并 PR 94: 界面调整及CNC完善
1、调整界面按钮:对流程图 连线样式的优化
2、修复CNC和普通模式的切换问题:当一种模式切换到另一种时,此时如果流程图或CNC编辑中有未保存的内容,要提醒保存,并根据用户的取消保存还是保存
3、修复CNC执行结果的缓存形式
4、探测器模拟一个接口能够返回图,验证XP集成层面能不能获取到图片;以及对相关链路加入日志
5、CNC位置节点新增数据源的手动输入和存图功能
6、高级CNC模块的插入逻辑,包括ROI的可视化再编辑
7、manifest.json文件 中文支持
2026-05-25 11:18:37 +08:00
zhengxuan.zhang 581ed2f3df 将流程图作为3级节点在左侧显示 ;优化布局宽度显示 ; 右侧详情面板的显示级别1级或2级 2026-05-25 10:59:39 +08:00
zhengxuan.zhang 03348a91ac Merge branch 'Develop/XP' into turbo-002-cnc
# Conflicts:
#	XP.Hardware.Detector/Implementations/SimulatedDetector.cs
2026-05-25 09:38:12 +08:00
SONG Tian 4afbadffd1 Merged PR 93: 控制软件socket功能开发
- XP.SCAN模块增加socket通讯,后期重构软件与控制软件在同一电脑进行socket通讯传递进行重构,后期可通过修改IP适配两台电脑的socket通讯重建。
2026-05-25 09:19:54 +08:00
TianSong cf15ed740f XP.SCAN模块增加socket通讯,后期重构软件与控制软件在同一电脑进行socket通讯传递进行重构,后期可通过修改IP适配两台电脑的socket通讯重建。 2026-05-25 08:26:49 +08:00
zhengxuan.zhang c443404bae 更新菜单按钮 2026-05-22 17:29:41 +08:00
zhengxuan.zhang 92213ffd0d Merge branch 'Develop/XP' into turbo-002-cnc
# Conflicts:
#	XplorePlane/Views/Main/MainWindow.xaml
2026-05-22 17:17:29 +08:00
zhengxuan.zhang 54d336a0b1 调整界面显示 2026-05-22 17:03:34 +08:00
QI Mingxuan 0b6554f139 解决添加虚拟探测器无法运行的问题:SimulatedDetector实现ApplyParametersInternalAsync。 2026-05-22 15:55:25 +08:00
QI Mingxuan 4943bc16b7 已合并 PR 90: 探测器直方图和优化合并至开发分支
1、重构探测器Hardware.Detector模块,统一设备调用接口,支持多探测器兼容,优化设备连接状态判断逻辑,新增校正帧数可配置功能。
2、优化Varex探测器校正流程,修复内存缓冲区对齐问题,增加指针、分辨率有效性校验,校正期间屏蔽帧回调、自动启停采集,规避SDK冲突与程序崩溃问题。
3、开发通用图像灰度直方图控件,优化资源释放逻辑。
2026-05-22 08:51:50 +08:00
LI Wei.lw 3777ad2d53 已合并 PR 86: 直线拟合、圆拟合、匹配等
新增功能:
1.边缘查找拟合直线工具
2.边缘查找拟合圆工具
3.海康相机接口集成
4.模板匹配助手窗口
5.ROI 对齐工具与 TM_Result 位姿扩展
6.白底/黑底缺陷检测
7.行灰度功能
优化与修复:
1.白底/黑底检测算法重构至 BackgroundDefectAnalyzer
2.黑底检测结果随清除测量一并清除
3.模板助手按钮布局与图标优化
4.导航相机日志改为英文
5.PixelConverter 支持 Bayer 格式解码
6.相机采集链断裂修复
2026-05-21 21:02:27 +08:00
zhengxuan.zhang de4a7121db 虚拟模式下 跳过联锁(Interlock)检查,因为虚拟模式没有真实安全门信 2026-05-21 17:15:27 +08:00
zhengxuan.zhang 43d0e7fa89 feat: 硬件虚拟化与CNC联动集成 - 运动控制/射线源模拟实现,CNC执行联动增强 2026-05-21 16:02:53 +08:00
zhengxuan.zhang 05c41a9a21 将CNC相关的事件合并,简化 2026-05-21 15:02:28 +08:00
zhengxuan.zhang 01b12bb246 修复JSON 序列化时的 Unicode 转义问题 2026-05-21 14:57:29 +08:00
zhengxuan.zhang 2ac84ecc85 修复高级算子的ROI编辑能力 2026-05-21 14:35:49 +08:00
QI Mingxuan 8905de6bab 更新ReleaseFiles。 2026-05-21 13:36:51 +08:00
QI Mingxuan 15e3e56856 已合并 PR 89: 探测器Hardware.Detector兼容多探测器的重构
探测器XP.Hardware.Detector类库为了更好集成新的探测器,统一接口方法,DetectorService重构为通过统一接口;
新增暗场校正和亮场校正帧数配置属性(默认 64,范围 1-128),config 加载校正帧数;
修正探测器IsConnected连接状态的判断逻辑。
2026-05-21 13:30:59 +08:00
QI Mingxuan 2d7cf17a3b 探测器XP.Hardware.Detector类库为了更好集成新的探测器,统一接口方法,DetectorService重构为通过统一接口;
新增暗场校正和亮场校正帧数配置属性(默认 64,范围 1-128),config 加载校正帧数;
修正探测器IsConnected连接状态的判断逻辑。
2026-05-21 13:19:30 +08:00
zhengxuan.zhang 2d14954bd3 高级模块插入后的再编辑问题,包括ROI的显示和调节,要支持实时调节 2026-05-21 11:17:10 +08:00
QI Mingxuan 119d03a02b VarexDetector:增益校正缓冲区改用 sizeof(uint) 分配(与 SDK DWORD 写入对齐),新增 _pOffsetBuffer 有效性校验和分辨率匹配检查;校正期间设置 _isCorrecting 标志跳过帧回调,防止缓冲区冲突;
VarexDetector:SetBinningMode/SetGainMode 变更后自动释放旧校正缓冲区;
DetectorService:暗场/亮场/坏像素校正及参数应用前自动停止采集,完成后恢复,避免 SDK 冲突;
DetectorConfigViewModel:校正流程中集成停止/恢复采集逻辑。
2026-05-21 10:41:55 +08:00
QI Mingxuan e6e776357d 优化直方图区域布局。 2026-05-21 10:40:38 +08:00
QI Mingxuan 5c56779f9f VarexDetectorConfig移除不支持的 3×3 Binning 选项,修正索引对齐。
新增多语言资源:暗场/亮场/坏像素校正确认对话框、进度提示、参数不一致提示。
2026-05-21 10:39:43 +08:00
QI Mingxuan d7c027b732 直方图将柱状图替换为面积图,优化密集数据显示效果,Y轴刻度自动取整支持 K/M 缩写,X 轴根据数据范围自动设置。 2026-05-21 10:37:28 +08:00
李伟 db0eac5d49 解决冲突 2026-05-20 15:41:04 +08:00
李伟 31825a43b9 合并 TURBO-615-RecognitionAndPositioning 到 ResolveConflicts,保留双方冲突内容 2026-05-20 15:32:43 +08:00
QI Mingxuan 2e4b2d714b 修改主程序解决方案生成到AnyCPU,增加外部库文件夹中dll和相关文件。 2026-05-20 15:22:09 +08:00
QI Mingxuan 375fb832f0 解决因Pull Request Merge Conflict Extension插件导致的中文乱码问题。 2026-05-20 15:00:21 +08:00
QI Mingxuan e3cfac5f09 Merged PR 82: 授权服务功能合并至开发分支
新增授权服务,XplorePlane 模块 ID 4、零件号 LS950-0071-5-1。
- 支持两种授权模式:CLMS 授权 (0) 和临时测试15分钟模式 (885);
- 支持通过接口查询授权信息。

配置项目如下:
```xml
<appSettings>
  <!-- 授权配置 | License configuration -->
  <add key="License:LicenseMode" value="0" />     <!-- 授权模式:0=CLMS 正式授权,885=临时测试模式 -->
  <add key="License:ModuleId" value="4" />        <!-- 模块 ID,XplorePlane 固定为 4 -->
  <add key="License:UseSma" value="false" />      <!-- 是否启用 SMA 检查 -->
  <add key="License:LicenseState" value="20" />   <!-- 上次授权状态:10=成功,20=失败(运行时由 LicenseService 自动写回)-->
</appSettings>
```

Readme文档详见 `XplorePlane\XP.Common\Documents\License.README.md`。
2026-05-20 10:11:10 +08:00
QI Mingxuan 14f41321c7 增加授权功能Readme文件。 2026-05-19 17:01:06 +08:00
QI Mingxuan 2d56f42d28 授权更新CLMS SDK(新版支持SMA),更新生成至anycpu。 2026-05-19 16:53:37 +08:00
zhengxuan.zhang 6abe391450 优化高级模块的CNC计算结果存储 2026-05-19 14:34:07 +08:00
zhengxuan.zhang 1546aec567 优化高级模块CNC执行的可视化
CNC执行 → PipelineExecutionService(返回 LastStepOutputData)
                  → CncExecutionService(调用 PushDetectionOverlay)
                  → MainViewportService(触发 DetectionOverlayUpdated 事件)
                  → ViewportPanelView(订阅事件,调用 DetectionOverlayRenderer)
                  → PolygonRoiCanvas.SetDetectionOverlayCanvas(插入叠加层 Canvas)
2026-05-19 14:10:16 +08:00
zhengxuan.zhang eb6ee48a5e CNC高级模块的运行后的可视化 2026-05-19 13:11:47 +08:00
zhengxuan.zhang 80c86e2ed7 孔隙检测模块引入到CNC 2026-05-19 11:38:31 +08:00
zhengxuan.zhang 3cfd115d72 高级模块的CNC插入功能 2026-05-19 11:21:28 +08:00
QI Mingxuan ef83a7637a 优化亮场校正和暗场校正的流程和功能,亮场校正后增加坏像素校正。 2026-05-18 17:30:22 +08:00
ZHANG Zhengxuan 3f14d14393 已合并 PR 78: UI调整、CNC执行与存储结果、新增设置页面
1、UI的更新,优化滤波器类型;流程图连线样式;算子编辑的属性;步长滑块的显示逻辑
2、新增设置页面,根据app.config 参数项设置页面;
3、优化CNC执行的可视化,新增位置节点的保存图像参数、手动输入图像;
![image.png](http://cntao-ap-v83/HMQ-Solution/7ff128fd-5cc6-4feb-9529-2a03b2895662/_apis/git/repositories/e2c5485f-4369-4ed9-9fb9-d087ca4e04b6/pullRequests/78/attachments/image.png)
4、参考viscom CNC存储逻辑,设计CNC存储结构
![image (2).png](http://cntao-ap-v83/HMQ-Solution/7ff128fd-5cc6-4feb-9529-2a03b2895662/_apis/git/repositories/e2c5485f-4369-4ed9-9fb9-d087ca4e04b6/pullRequests/78/attachments/image%20%282%29.png)
5、修复实时切换按钮
6、新增appstate的调试页面
2026-05-18 17:06:04 +08:00
zhengxuan.zhang 04da9cd798 对数据库DB文件进行忽略 2026-05-18 16:21:36 +08:00
zhengxuan.zhang d59550c492 删除螺旋扫描、语言设置合并到全局设置中; 2026-05-18 15:58:55 +08:00
zhengxuan.zhang c5ec105890 修复错误 2026-05-18 15:56:48 +08:00
zhengxuan.zhang dcc15f62d1 修复测试用例错误 2026-05-18 15:32:00 +08:00
李伟 e233f0fd96 feat: 新增边缘查找拟合圆工具 + 优化拟合交互
- 新增 EdgeCircleFitProcessor 算子(卡尺径向边缘检测 + Kasa/RANSAC圆拟合)
- 新增 EdgeCircleFitPanel 辅助面板(拖拽画圆交互)
- Ribbon快捷工具组新增「圆拟合」按钮
- 拟合后卡尺保持可编辑状态,支持调整后重新拟合
- 每次拟合自动清除上一次结果
- 拟合方法固定RANSAC,UI不暴露选择
- 结果标注简化:直线显示角度,圆显示半径和圆心坐标
- 不再显示内点/外点小圆点
- 添加中英文本地化资源
2026-05-18 15:03:34 +08:00
QI Mingxuan ed0fe92cbe 探测器设置界面增加图像灰度直方图,用于显示实时采集图像的灰度信息,优化图像灰度直方图的显示方式(无图像提示)和优化资源释放。 2026-05-18 14:41:05 +08:00
李伟 9c639f27cd 导航相机相关Log改为英文;添加一些图标 2026-05-18 13:55:24 +08:00
zhengxuan.zhang e5cfbf9dd5 修复合并后的错误 2026-05-18 13:51:33 +08:00
zhengxuan.zhang 76b3335263 Merge branch 'Develop/XP' into turbo-002-cnc
# Conflicts:
#	XplorePlane/App.xaml.cs
#	XplorePlane/Themes/Generic.xaml
#	XplorePlane/ViewModels/Main/MainViewModel.cs
#	XplorePlane/Views/Main/MainWindow.xaml
#	XplorePlane/Views/Main/ViewportPanelView.xaml
2026-05-18 13:35:43 +08:00
李伟 843c4d67a6 feat: 集成海康威视相机接口
- 新增 HikvisionCameraController 实现 ICameraController
- CameraFactory 支持 Basler/Hikvision 动态切换(config.json 配置)
- PixelConverter 支持 Bayer RG/GR/GB/BG 8-bit 解码
- 修复采集链断裂问题(finally 中触发下一帧)
- 相机设置面板:宽高和像素格式改为只读显示
- NavigationPropertyPanelViewModel 日志和状态文本改为英文
- 添加 MvCameraControl.Net.dll 到 ExternalLibraries
2026-05-18 13:11:26 +08:00
zhengxuan.zhang f3ae01e60d 修复测试用例错误 2026-05-18 13:10:37 +08:00
zhengxuan.zhang 6b87b51938 增加测试用例 2026-05-18 11:26:04 +08:00
zhengxuan.zhang 48f31934fb 修复界面布局 2026-05-18 10:45:45 +08:00
zhengxuan.zhang bd0ed6fd9a 增加appstate调试页面 2026-05-18 09:38:29 +08:00
QI Mingxuan a9d56ebfbd 通用基础设施XP.Common新增 ImageHistogramControl 图像灰度直方图通用控件(使用SixLabors.ImageSharp 3.1.12),支持 Image<Rgba32> 和 byte[] 输入,支持多线程调用,Telerik RadChartView 渲染。 2026-05-18 09:17:39 +08:00
zhengxuan.zhang 09ac6db6ab 删除MainViewModel 里的兼容占位属性 2026-05-16 14:00:06 +08:00
zhengxuan.zhang 0ccf9c529e 新增调试页面 2026-05-16 13:44:36 +08:00
zhengxuan.zhang 0648c601d7 虚拟探测器设备 2026-05-16 13:43:25 +08:00
zhengxuan.zhang 5c8dce25bf 设置页面App.config的配置 2026-05-15 20:36:29 +08:00
zhengxuan.zhang c5f8976918 修复实时按钮切换 2026-05-15 18:04:22 +08:00
zhengxuan.zhang e9d388beb2 虚拟探测器与实时切换按钮的绑定 2026-05-15 16:51:21 +08:00
QI Mingxuan 346f4d9a9b XP.Common类库的控件Controls功能,按照功能/用途分子文件夹,移动和修改虚拟摇杆相关的文件。 2026-05-15 16:06:26 +08:00
QI Mingxuan 98d91efc19 更新RelesaeFiles,补全射线源Host. 2026-05-15 15:53:03 +08:00
QI Mingxuan 94f0649af8 XP.Common 类库中新增授权管理(License Management)功能模块,支持两种授权模式:CLMS 正式授权和临时测试模式。开发统一的授权服务接口,并在主项目中完成集成。 2026-05-15 15:50:35 +08:00
QI Mingxuan ad719d157b 统一 Dump、Logging、Database 等功能的配置文件加载和定义类,优化ConfigLoader,职责分散各个模块。 2026-05-15 15:49:02 +08:00
zhengxuan.zhang 8e9ef312ad 界面新增指定数据源 2026-05-15 15:44:47 +08:00
李伟 12938764b1 feat: 新增边缘查找拟合直线工具
- 新增 EdgeLineFitProcessor 算子(卡尺边缘检测 + 最小二乘/RANSAC直线拟合)
- 新增 EdgeLineFitPanel 辅助面板(参数配置、交互绘制卡尺)
- 支持任意角度旋转的卡尺区域,4个手柄控制长度/宽度
- 支持多次拟合累积显示,关闭面板后结果保留
- 极性箭头标识搜索方向(B→D / D→B / 双向)
- 卡尺亮绿色1px,拟合直线蓝色2px
- Ribbon快捷工具组新增「直线拟合」按钮
- 添加中英文本地化资源
2026-05-15 15:44:18 +08:00
zhengxuan.zhang 49c6785682 手动数据源、存图、流程计算 2026-05-15 15:29:53 +08:00
李伟 7447463c1a feat: ROI 对齐工具与 TM_Result 位姿扩展
- Core: Pose2D、Point2D、RoiAlignment、AlignmentRecipe(示教多边形→运行图刚体变换)

- Processors: TemplateMatchAlignmentExtensions.ToPose2D / 四角与中心一致性校验

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-15 14:31:48 +08:00
zhengxuan.zhang f07d891346 位置节点增加保存图像到本地的功能;支持输入图像 2026-05-15 13:44:37 +08:00
李伟 9634e42396 ui: 模板助手按钮布局与 Segoe MDL2 图标
- 单张与参数:顶行 ROI/训练/加载/保存,底部仅运行匹配;批量测试按钮同步图标与 ToolTip

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-15 11:42:56 +08:00
zhengxuan.zhang bc8a0eadfb 修复报告页面图像自适应的问题 2026-05-15 11:00:18 +08:00
zhengxuan.zhang cf8248abfb 修复查看报告页面 2026-05-15 10:50:40 +08:00
李伟 e0eec42a2f feat: 模板匹配助手窗口与主视口 ROI 清除逻辑
- 新增模板助手/批量测试窗口、事件与 ViewModel,主窗口入口与 App 注册

- 运行匹配或批量测试前发布清除事件;视口通过 VisualTreeHelper 从父 Panel 移除持久虚线 ROI,避免 FindChild 失败时框残留

- TemplateMatchNative 等相关调整

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-15 10:42:20 +08:00
QI Mingxuan 07d76f5ab1 更新配置文件的用户手册到相对路径,增加报告相关的配置项目。 2026-05-15 09:37:00 +08:00
QI Mingxuan 936dfd3e33 已合并 PR 74: PDF报告生成(基础功能)模块合并到开发分支
XP.ReportEngine 报告模块开发(仅按照实现基础功能开发设计,后期根据报告要求调整)。

完成基础类和接口设计,封装对外服务接口;
搭建数据处理层,实现模拟测试的数据绑定;
PDF 模板设计,报表页眉页脚、适配模板调整分栏、页边距等排版逻辑渲染生成功能;
增加请求响应模型和引擎预热和后台线程处理;
更新 ReleaseFiles 文件。
2026-05-15 09:28:00 +08:00
QI Mingxuan 8cb3ba2bb8 更新于 App.config 2026-05-15 01:26:14 +00:00
QI Mingxuan f1fbab0f2b 解决App.config的冲突。 2026-05-15 09:22:38 +08:00
李伟 82465e6510 白底/黑底检测:轮廓与最远弦度量,UI 分色与标注优化
- 算子:输出轮廓顶点及顶点间最远弦(微米标定与原先一致)

- 视图:实线轮廓;白底红/黑底绿;尺寸文字置于 ROI 外右侧垂直居中

- 事件与 MainViewModel 载荷改为 BackgroundDefectDetectionItem

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-15 09:08:44 +08:00
zhengxuan.zhang 455e452ec2 修复测试用例 2026-05-14 20:28:31 +08:00
QI Mingxuan d6f554c413 更新ReleaseFiles。 2026-05-14 19:31:07 +08:00
QI Mingxuan 29bc8576af 报告XP.ReportEngine:新增 IReportService接口封装完整报告生成流程,支持外部类库直接调用;新增 ReportRequest、ReportServiceResult 请求/响应模型;新增引擎预热机制;PDF 生成改为 Task.Run 后台线程执行,解决进度窗口和主窗口卡死问题;完善文档。 2026-05-14 19:29:11 +08:00
zhengxuan.zhang d3e75f3fac 在现有的 位置节点属性中新增一个 checkbox 按钮,来确认是否保存图片 2026-05-14 17:04:29 +08:00
zhengxuan.zhang ca22f59447 修复combox垂直居中 2026-05-14 17:01:50 +08:00
李伟 baef619bd4 refactor: 白底/黑底检测算法迁至 BackgroundDefectAnalyzer
- 在 XP.ImageProcessing.Processors 新增静态分析类与 BackgroundDefectMode/BackgroundDefectBlob。

- MainViewModel 仅负责灰度 ROI 提取、坐标平移与 Prism 事件发布。
2026-05-14 16:27:16 +08:00
李伟 1ad33cc3e6 feat(viewport): 黑底检测与白/黑底结果随清除测量一并清除
- 新增黑底检测 Prism 事件与 MainViewModel 中 Otsu 二值化(Binary)流程,与白底(BinaryInv)对称。

- Viewport 统一 ROI 绘制与结果渲染;右键「清除所有测量」同时移除底色检测叠加层并复位 ROI 状态。
2026-05-14 16:11:14 +08:00
李伟 1fb789190c feat: 实现快捷工具栏白底检测功能 2026-05-14 15:54:15 +08:00
LI Wei.lw 5960f28bcf 已合并 PR 72: 行灰度功能添加
行灰度功能添加
2026-05-14 13:52:07 +08:00
李伟 7441526ed9 行灰度功能添加 2026-05-14 13:49:09 +08:00
LI Wei.lw 5c3673a9f6 已合并 PR 70: Turbo-606
1.旋转模板匹配 (简单实现,后续继续优化)— 新增 C++ DLL 算子,支持金字塔加速、多目标、旋转匹配、模型保存/加载
2.语言资源整合 — Processors 和 Camera 的本地化资源统一合并到 XP.Common
3.相机标定集成 — 导航相机畸变校准和坐标标定
4.比例尺 — PolygonRoiCanvas 添加比例尺显示,快捷工具栏加开关
5.主界面快捷工具 — 白底/黑底检测、锐化、增强按钮
6.实时模式优化 — 开启时禁用测量工具,修复开关绑定
2026-05-14 13:20:41 +08:00
QI Mingxuan 11c69d03fb 报告ReportEngineBase修改语言资源文件,修改模板和报告输出功能。 2026-05-13 17:36:54 +08:00
QI Mingxuan 1d3cacea75 报告ReportEngineBase增加页眉页脚,修改因模板变动和分栏、边距等需要修改的函数代码。 2026-05-13 17:36:25 +08:00
QI Mingxuan b1c5ab546b 报告ReportEngineBase增加必要的设置和配置项目。 2026-05-13 17:35:06 +08:00
zhengxuan.zhang 4d25045d59 修复测试用例错误 2026-05-13 16:20:47 +08:00
李伟 aedbef5ecc 删除简单的opencv模板匹配算子,改为使用更高级一点的可旋转匹配算子(C++) 2026-05-13 14:04:10 +08:00
李伟 b9106acdf0 快捷工具处添加比例尺开关 2026-05-13 09:05:05 +08:00
QI Mingxuan 6d4a662823 修复字体文件在Terelik中无法pdf正确加载的问题,优化报告模板,新增丰富的测试i数据和图片,优化报告输出流程,根据优化修改文档和移除文件。 2026-05-12 21:18:23 +08:00
zhengxuan.zhang 78ab5bb54a 测试环境中 H.264 编码器(avc1 fourcc)不可用 2026-05-12 20:48:40 +08:00
zhengxuan.zhang e7b66e3fbf 增加CNC查询页面 2026-05-12 20:09:13 +08:00
李伟 f5f449b6fc 基于灰度的模板匹配算子开发及集成 2026-05-12 14:47:58 +08:00
QI Mingxuan e20201c206 新增字体嵌入文件,新增Readme、修改部分资料md文件。 2026-05-12 08:54:34 +08:00
zhengxuan.zhang 8b29285d03 CNC结果预览 2026-05-12 00:29:21 +08:00
QI Mingxuan c5a390935e 报告XP.ReportEngine模块:根据项目设计搭建数据处理层,数据绑定器实现,PDF渲染和生成功能开发实现。 2026-05-11 19:18:46 +08:00
QI Mingxuan 1573a33a02 报告XP.ReportEngine基础类设计和接口开发。 2026-05-11 16:40:24 +08:00
zhengxuan.zhang cfdfe330a5 修复运行错误 2026-05-11 16:15:19 +08:00
QI Mingxuan a4bae49d05 Merged PR 69: 硬件与运动控制的界面效果、功能增强修复和文档更新
1. 进一步优化硬件相关界面的显示效果和布局调整(主要是运动控制和射线源部分);
2. 新增射线源与探测器 Z 轴联动移动,支持同步位移控制,配套新增 PLC 信号与配置项;
3. 新增实体摇杆信号:实现 PLC 摇杆状态监控和事件发布,并新增IMotionSystem接口中的Joystick属性;
4. 新增探测器自动连接,自动采集,退出自动停止采集和断开,解决退出阻塞问题,加入超时保护机制;
5. 补充探测器类库的使用说明和相关文档。
2026-05-11 14:18:31 +08:00
QI Mingxuan 8666c76f65 解决探测器退出阻塞的问题,中加入超时保护,避免死锁。 2026-05-11 13:27:44 +08:00
QI Mingxuan 18111b8468 新增XP.ReportEngine空项目 2026-05-11 13:09:23 +08:00
李伟 9f604d4e2f 集成导航相机畸变校准和坐标标定 2026-05-11 13:08:16 +08:00
zhengxuan.zhang 368481a950 feat(inspection): 新增运行事件流水表和运行状态字段
- inspection_runs 表新增 status 字段(pending/running/completed/stopped/error)
- 新增 inspection_run_events 表,记录运行过程事件时间线
- 新增 InspectionRunStatus/InspectionRunEventType 枚举和 InspectionRunEvent 模型
- IInspectionResultStore 接口新增 AppendRunEventAsync/QueryRunEventsAsync
- BeginRunAsync/CompleteRunAsync 自动记录运行事件
- 更新 CNC多检测结果归档 文档,同步新表和新字段说明
2026-05-11 11:28:44 +08:00
QI Mingxuan c1c2b93cf8 更新运动控制相关的Readme、Guidence文件等。 2026-05-11 11:20:02 +08:00
QI Mingxuan e9596b013a 修复运动控制问题:ExecuteToggleEnable 在 PLC 写入失败或异常时回滚 IsJoystickEnabled 状态;OnPlcConnectionChanged 中改为 new List<>(dict.Keys) 遍历副本,避免潜在的集合修改问题;SendSourceDetectorZMoveCommand 新增 sourcePropertyName 参数,根据用户编辑的是 SourceZ 还是 DetectorZ 来决定 delta 计算方向;SavePositionsCommand 增加 () => IsPlcConnected 条件,PLC 未连接时禁止保存。
补充射线源和PLC类库所需配置和信号地址定义文件。
2026-05-11 10:54:29 +08:00
李伟 d89c8c4f44 相机操作相关语言资源合并至Common 2026-05-11 10:11:50 +08:00
zhengxuan.zhang 66f49a6338 仿照ProcessorParameterControl.xaml.cs 修改滑块步长 2026-05-09 17:38:50 +08:00
李伟 9be110607b 将XP.ImageProcessing.Processors语言资源合并至Common 2026-05-09 16:53:26 +08:00
李伟 59fce4f8fa feat: 实时模式开启时禁用测量工具
- MainViewModel: 添加 IsMeasurementToolsEnabled 属性
- MainWindow: 为测量工具按钮绑定 IsEnabled
2026-05-09 13:27:43 +08:00
QI Mingxuan f4a2856b92 运动控制:新增射线源与探测器 Z 轴联动移动功能,支持同步位移控制,新增实体摇杆实现 PLC 摇杆状态监控和事件发布,IMotionSystem 接口新增 Joystick 属性,更新文档说明联动功能使用方法。 2026-05-09 11:30:05 +08:00
李伟 827050faf0 fix: 修复实时开关绑定及动画效果
- MainWindow.xaml: 绑定 IsChecked 到 IsMainViewportRealtimeEnabled
- Generic.xaml: 修复 AnimatedSwitch 模板,添加初始状态 Setter 和 ExitActions 动画
2026-05-09 10:17:39 +08:00
QI Mingxuan fa8ad29862 主应用新增PLC和探测器硬件资源正确释放。 2026-05-08 17:59:10 +08:00
QI Mingxuan 229c5c5a89 新增软件启动后立即连接探测器,连接后主动连续采集。 2026-05-08 17:50:43 +08:00
李伟 7cf16ecdbc 为主界面快捷工具栏添加图像处理命令接口:白底检测、黑底检测、灰度、锐化、增强,实现锐化和增强 2026-05-08 11:09:07 +08:00
李伟 d3f06aed8b 优化导航面板显示:调整背景色、添加无相机默认图片、保持图像宽高比 2026-05-08 08:57:29 +08:00
QI Mingxuan bb1b76ee7a 增加射线源探测器Z轴锁定联动功能,增加对应plc信号和配置。 2026-05-07 20:24:55 +08:00
LI Wei.lw c80d3e2037 已合并 PR 64: 修改手动测量相关工具等
1.气泡测量工具:修改鼠标光标 - 魔棒/画笔/橡皮工具选中时显示对应的系统光标(魔棒=Cross,画笔=Pen,橡皮=No)
2.气泡测量工具:增加圆形ROI - 圆形 ROI 支持创建、拖动移动、边缘拖动调整大小
3.点点距测量工具:端点由点改为线段 - 将测量点标记从圆形改为垂直于连线的线段
4.气泡测量工具:打开面板时先清除ROIItems里的残留 - 修复残留数据问题
5.圆形ROI图标 - 添加圆形 ROI 工具图标
6.状态栏右下角显示图像像素坐标和灰度 - 显示当前鼠标位置的 X/Y 坐标和灰度值
7.手动测量工具:控制点改为2*2、线宽改为1 - 统一调整测量工具的视觉样式
8.删除BGA手动测量工具 - 移除手动 BGA 测量功能
2026-05-07 14:27:28 +08:00
李伟 cee89e4db0 删除BGA测量相关代码 2026-05-07 14:10:04 +08:00
李伟 1d8db8fa2d 解决合并冲突:合并TURBO-596分支 2026-05-07 13:51:59 +08:00
QI Mingxuan 5e14fe3d9b Merged PR 62: 优化硬件相关的界面显示和布局调整 2026-05-07 10:07:43 +08:00
QI Mingxuan 6b309f11b0 修改主页面右侧硬件栏目宽度,运动控制修改增加图标按钮切换。 2026-05-07 10:01:55 +08:00
ZHANG Zhengxuan 436eaa54fa 已合并 PR 60: 修复算子工具箱及文件夹组织
1、修复编译问题,CNC运行完,实时图像为最后一个节点的输出
2、移除XP单元测试
3、算子工具箱改为Tab窗体
4、流程图 新增执行到此,和执行全部
5、调整Rabbion按钮为CNC页面内置
6、调整算子参数区为滑块控件
7、新增设置窗体,统一数据存储目录
8、增加下拉图像配方列表
2026-05-07 09:38:47 +08:00
QI Mingxuan cdd1f043e7 优化界面显示:射线源模块紧凑设计,探测器优化布局和大小,优化界面提示和提示。 2026-05-06 17:47:38 +08:00
李伟 8d7fb4e0e3 气泡测量工具:修改鼠标光标 2026-05-06 16:16:22 +08:00
李伟 6fc53c56c7 气泡测量工具:增加圆形ROI 2026-05-06 14:01:56 +08:00
李伟 8dbc274e63 点点距测量工具:端点由点改为线段 2026-05-06 13:28:25 +08:00
李伟 7846445b33 气泡测量工具:打开面板时先清除ROIItems里的残留 2026-05-06 09:10:35 +08:00
李伟 611b2ae147 圆形ROI图标 2026-04-30 16:51:26 +08:00
李伟 6b35da4cc0 状态栏右下角显示图像像素坐标和灰度 2026-04-30 15:52:01 +08:00
李伟 4d5fa04920 手动测量工具:控制点改为2*2、线宽改为1 2026-04-30 14:01:56 +08:00
李伟 2663bda0ae 删除BGA手动测量工具 2026-04-30 13:46:18 +08:00
LI Wei.lw d5cdab294b 已合并 PR 59: 更改气泡筛选逻辑
1.加载新图像时会自动清除旧的测量结果、叠加层和ROI
2.更改气泡筛选逻辑:按照面积筛选,去除小于设定面积的气泡重新计算空隙率更新结果图像
2026-04-30 13:24:08 +08:00
李伟 64c22fc088 加载新图像时会自动清除旧的测量结果、叠加层和ROI 2026-04-30 09:25:22 +08:00
李伟 0b56010536 更改气泡筛选逻辑:按照面积筛选,去除小于设定面积的气泡重新计算空隙率更新结果图像 2026-04-30 09:24:34 +08:00
504 changed files with 116645 additions and 3959 deletions
+5
View File
@@ -29,6 +29,7 @@ bld/
[Ll]ogs/
lib/
XP.ImageProcessing/
XP.ImageProcessing.SmokeTest/
ImageProcessing.sln
# 排除 Libs 目录中的 DLL 和 PDB 文件(但保留目录结构)
@@ -64,3 +65,7 @@ XplorePlane/Tests/
ExternalLibraries/Telerik/
build_out.txt
XplorePlane/data/
XplorePlane.Tests/bin_codex/
DataBase/XP.db
XplorePlane.Tests/TestResults/
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Binary file not shown.
File diff suppressed because it is too large Load Diff
Binary file not shown.
+74
View File
@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Config>
<Group ID="WriteCommon" DBNumber="31">
<Signal Name="SoftLive" Type="byte" StartAddr="0" IndexOrLength="" Remark="软件心跳,01周期变化表示PLC存活" />
<Signal Name="EmergencyStop" Type="byte" StartAddr="5" IndexOrLength="" Remark="急停,0:缺省,1:触发急停" />
<Signal Name="MC_SourceZ_Target" Type="single" StartAddr="10" IndexOrLength="" Remark="射线源Z目标位置" />
<Signal Name="MC_SourceZ_Speed" Type="single" StartAddr="14" IndexOrLength="" Remark="射线源Z运动速度" />
<Signal Name="MC_SourceZ_JogPos" Type="byte" StartAddr="18" IndexOrLength="" Remark="射线源Z正向Jog0:缺省,1:正向点动" />
<Signal Name="MC_SourceZ_JogNeg" Type="byte" StartAddr="19" IndexOrLength="" Remark="射线源Z反向Jog0:缺省,1:反向点动" />
<Signal Name="MC_SourceZ_Home" Type="byte" StartAddr="20" IndexOrLength="" Remark="射线源Z回零,0:缺省,1:触发回零" />
<Signal Name="MC_SourceZ_Stop" Type="byte" StartAddr="21" IndexOrLength="" Remark="射线源Z停止,0:缺省,1:触发停止" />
<Signal Name="MC_DetZ_Target" Type="single" StartAddr="22" IndexOrLength="" Remark="探测器Z目标位置" />
<Signal Name="MC_DetZ_Speed" Type="single" StartAddr="26" IndexOrLength="" Remark="探测器Z运动速度" />
<Signal Name="MC_DetZ_JogPos" Type="byte" StartAddr="30" IndexOrLength="" Remark="探测器Z正向Jog0:缺省,1:正向点动" />
<Signal Name="MC_DetZ_JogNeg" Type="byte" StartAddr="31" IndexOrLength="" Remark="探测器Z反向Jog0:缺省,1:反向点动" />
<Signal Name="MC_DetZ_Home" Type="byte" StartAddr="32" IndexOrLength="" Remark="探测器Z回零,0:缺省,1:触发回零" />
<Signal Name="MC_DetZ_Stop" Type="byte" StartAddr="33" IndexOrLength="" Remark="探测器Z停止,0:缺省,1:触发停止" />
<Signal Name="MC_StageX_Target" Type="single" StartAddr="34" IndexOrLength="" Remark="载物台X目标位置" />
<Signal Name="MC_StageX_Speed" Type="single" StartAddr="38" IndexOrLength="" Remark="载物台X运动速度" />
<Signal Name="MC_StageX_JogPos" Type="byte" StartAddr="42" IndexOrLength="" Remark="载物台X正向Jog0:缺省,1:正向点动" />
<Signal Name="MC_StageX_JogNeg" Type="byte" StartAddr="43" IndexOrLength="" Remark="载物台X反向Jog0:缺省,1:反向点动" />
<Signal Name="MC_StageX_Home" Type="byte" StartAddr="44" IndexOrLength="" Remark="载物台X回零,0:缺省,1:触发回零" />
<Signal Name="MC_StageX_Stop" Type="byte" StartAddr="45" IndexOrLength="" Remark="载物台X停止,0:缺省,1:触发停止" />
<Signal Name="MC_StageY_Target" Type="single" StartAddr="46" IndexOrLength="" Remark="载物台Y目标位置" />
<Signal Name="MC_StageY_Speed" Type="single" StartAddr="50" IndexOrLength="" Remark="载物台Y运动速度" />
<Signal Name="MC_StageY_JogPos" Type="byte" StartAddr="54" IndexOrLength="" Remark="载物台Y正向Jog0:缺省,1:正向点动" />
<Signal Name="MC_StageY_JogNeg" Type="byte" StartAddr="55" IndexOrLength="" Remark="载物台Y反向Jog0:缺省,1:反向点动" />
<Signal Name="MC_StageY_Home" Type="byte" StartAddr="56" IndexOrLength="" Remark="载物台Y回零,0:缺省,1:触发回零" />
<Signal Name="MC_StageY_Stop" Type="byte" StartAddr="57" IndexOrLength="" Remark="载物台Y停止,0:缺省,1:触发停止" />
<Signal Name="MC_DetSwing_Target" Type="single" StartAddr="58" IndexOrLength="" Remark="探测器摆动目标角度" />
<Signal Name="MC_DetSwing_Speed" Type="single" StartAddr="62" IndexOrLength="" Remark="探测器摆动运动速度" />
<Signal Name="MC_DetSwing_JogPos" Type="byte" StartAddr="66" IndexOrLength="" Remark="探测器摆动正向Jog,0:缺省,1:正向点动" />
<Signal Name="MC_DetSwing_JogNeg" Type="byte" StartAddr="67" IndexOrLength="" Remark="探测器摆动反向Jog,0:缺省,1:反向点动" />
<Signal Name="MC_DetSwing_Home" Type="byte" StartAddr="68" IndexOrLength="" Remark="探测器摆动回零,0:缺省,1:触发回零" />
<Signal Name="MC_DetSwing_Stop" Type="byte" StartAddr="69" IndexOrLength="" Remark="探测器摆动停止,0:缺省,1:触发停止" />
<Signal Name="MC_StageRot_Target" Type="single" StartAddr="70" IndexOrLength="" Remark="载物台旋转目标角度" />
<Signal Name="MC_StageRot_Speed" Type="single" StartAddr="74" IndexOrLength="" Remark="载物台旋转运动速度" />
<Signal Name="MC_StageRot_JogPos" Type="byte" StartAddr="78" IndexOrLength="" Remark="载物台旋转正向Jog,0:缺省,1:正向点动" />
<Signal Name="MC_StageRot_JogNeg" Type="byte" StartAddr="79" IndexOrLength="" Remark="载物台旋转反向Jog,0:缺省,1:反向点动" />
<Signal Name="MC_StageRot_Home" Type="byte" StartAddr="80" IndexOrLength="" Remark="载物台旋转回零,0:缺省,1:触发回零" />
<Signal Name="MC_StageRot_Stop" Type="byte" StartAddr="81" IndexOrLength="" Remark="载物台旋转停止,0:缺省,1:触发停止" />
<Signal Name="MC_FixRot_Target" Type="single" StartAddr="82" IndexOrLength="" Remark="夹具旋转目标角度" />
<Signal Name="MC_FixRot_Speed" Type="single" StartAddr="86" IndexOrLength="" Remark="夹具旋转运动速度" />
<Signal Name="MC_FixRot_JogPos" Type="byte" StartAddr="90" IndexOrLength="" Remark="夹具旋转正向Jog,0:缺省,1:正向点动" />
<Signal Name="MC_FixRot_JogNeg" Type="byte" StartAddr="91" IndexOrLength="" Remark="夹具旋转反向Jog,0:缺省,1:反向点动" />
<Signal Name="MC_FixRot_Home" Type="byte" StartAddr="92" IndexOrLength="" Remark="夹具旋转回零,0:缺省,1:触发回零" />
<Signal Name="MC_FixRot_Stop" Type="byte" StartAddr="93" IndexOrLength="" Remark="夹具旋转停止,0:缺省,1:触发停止" />
<Signal Name="MC_Door_Open" Type="byte" StartAddr="94" IndexOrLength="" Remark="安全门开门,0:缺省,1:触发开门" />
<Signal Name="MC_Door_Close" Type="byte" StartAddr="95" IndexOrLength="" Remark="安全门关门,0:缺省,1:触发关门" />
<Signal Name="MC_Door_Stop" Type="byte" StartAddr="96" IndexOrLength="" Remark="安全门停止,0:缺省,1:触发停止" />
<Signal Name="MC_VirtualJoystick_Enable" Type="bool" StartAddr="111" IndexOrLength="" Remark="虚拟摇杆使能"/>
<Signal Name="MC_SourceDetZ_Linkage_Enable" Type="bool" StartAddr="101" IndexOrLength="" Remark="联动使能"/>
</Group>
<Group ID="ReadCommon" DBNumber="31">
<Signal Name="ProbeA" Type="single" StartAddr="228" IndexOrLength="" Remark="测座角度A" />
<Signal Name="ProbeB" Type="string" StartAddr="225" IndexOrLength="20" Remark="测座角度B" />
<Signal Name="test" Type="byte" StartAddr="222" IndexOrLength="" Remark="" />
<Signal Name="PlcLive" Type="byte" StartAddr="200" IndexOrLength="" Remark="PLC心跳,01周期变化表示PLC存活" />
<Signal Name="PlcAlarm" Type="byte" StartAddr="201" IndexOrLength="" Remark="系统报警,0:缺省,10:有报警" />
<Signal Name="MC_SourceZ_Pos" Type="single" StartAddr="100" IndexOrLength="" Remark="射线源Z实际位置" />
<Signal Name="MC_DetZ_Pos" Type="single" StartAddr="104" IndexOrLength="" Remark="探测器Z实际位置" />
<Signal Name="MC_StageX_Pos" Type="single" StartAddr="108" IndexOrLength="" Remark="载物台X实际位置" />
<Signal Name="MC_StageY_Pos" Type="single" StartAddr="112" IndexOrLength="" Remark="载物台Y实际位置" />
<Signal Name="MC_DetSwing_Angle" Type="single" StartAddr="116" IndexOrLength="" Remark="探测器摆动实际角度" />
<Signal Name="MC_StageRot_Angle" Type="single" StartAddr="120" IndexOrLength="" Remark="载物台旋转实际角度" />
<Signal Name="MC_FixRot_Angle" Type="single" StartAddr="124" IndexOrLength="" Remark="夹具旋转实际角度" />
<Signal Name="MC_Door_Status" Type="byte" StartAddr="128" IndexOrLength="" Remark="安全门状态,0:未知,1:正在开门,2:已开,3:正在关门,4:已关,5:已锁定,6:故障" />
<Signal Name="MC_Door_Interlock" Type="byte" StartAddr="130" IndexOrLength="" Remark="安全门联锁信号,0:缺省(无联锁),10:联锁有效(禁止开门)" />
<Signal Name="MC_Joystick_Active" Type="bool" StartAddr="110" IndexOrLength="" Remark="实体摇杆输入"/>
</Group>
<Group ID="Status" DBNumber="4100">
<Signal Name="ScanMode" Type="byte" StartAddr="201" IndexOrLength="" Remark="扫描模式,0:缺省(空闲),具体值由PLC定义" />
</Group>
</Config>
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

@@ -0,0 +1,222 @@
{
"document": {
"pageSize": "A4",
"orientation": "Portrait",
"margins": { "top": 40, "bottom": 20, "left": 20, "right": 20 },
"header": {
"enabled": true,
"left": [
"${loc:Report_Title}",
"${loc:Report_Id}${metadata.reportId} | ${loc:Report_Date}${formatDate(metadata.inspectionDate)} | ${loc:Report_Sample}${metadata.sampleName}"
],
"rightImageKey": "companyLogo",
"fontSize": 7,
"color": "#666666",
"showLine": true
},
"footer": {
"enabled": true,
"left": ["${CompanyName}"],
"right": ["{currentPage} / {totalPages}"],
"fontSize": 8,
"color": "#666666",
"showLine": true
}
},
"pages": [
{
"type": "homepage",
"elements": [
{
"type": "row", "size": [170, 40], "positioning": "flow",
"children": [
{
"type": "column", "align": "left",
"children": [
{ "type": "image", "dataKey": "companyLogo", "size": [50, 30], "align": "left" },
{ "type": "text", "content": "${CompanyName}", "style": "companyName", "align": "left" }
]
},
{
"type": "column", "align": "right",
"children": [
{ "type": "image", "dataKey": "softwareLogo", "size": [15, 20], "align": "right" },
{ "type": "text", "content": "${SoftwareName}", "style": "companyName", "align": "right" }
]
}
]
},
{ "type": "spacer", "size": [170, 15], "positioning": "flow" },
{ "type": "text", "content": "${loc:Report_Title}", "style": "title", "positioning": "flow" },
{ "type": "spacer", "size": [170, 10], "positioning": "flow" },
{ "type": "text", "content": "${loc:Report_Id}${metadata.reportId}", "style": "homepageInfo", "positioning": "flow" },
{ "type": "text", "content": "${loc:Report_Sample}${metadata.sampleName}", "style": "homepageInfo", "positioning": "flow" },
{ "type": "text", "content": "${loc:Report_Description}${metadata.description}", "style": "homepageInfo", "positioning": "flow" },
{ "type": "image", "dataKey": "workpieceImage", "size": [160, 110], "border": true, "align": "center", "style": "imageDefault", "positioning": "flow" },
{ "type": "text", "content": "${loc:Report_Operator}${metadata.operatorName}", "style": "homepageFooter", "positioning": "flow" },
{ "type": "text", "content": "${loc:Report_Date}${formatDate(metadata.inspectionDate)}", "style": "homepageFooter", "positioning": "flow" }
]
},
{
"type": "summary",
"elements": [
{ "type": "text", "content": "${loc:Report_Summary}", "style": "homepageHeading", "positioning": "flow" },
{
"type": "table", "dataKey": "summaryTable", "positioning": "flow", "size": [170, 0], "style": "tableDefault",
"columns": [
{ "header": "${loc:Field_InspectionType}", "field": "inspectionType", "width": 50, "align": "left" },
{ "header": "${loc:Field_Result}", "field": "classification", "width": 30, "align": "center", "colorRules": { "Pass": "#008000", "Fail": "#FF0000" } },
{ "header": "${loc:Field_Status}", "field": "status", "width": 30, "align": "center", "colorRules": { "合格": "#008000", "PASS": "#008000", "不合格": "#FF0000", "FAIL": "#FF0000" } }
]
}
]
},
{
"type": "metricData",
"elements": [
{ "type": "text", "content": "${loc:Page_MetricData}", "style": "heading", "positioning": "flow" },
{
"type": "row", "size": [170, 100], "widths": [6, 4], "positioning": "flow",
"children": [
{
"type": "column", "align": "left",
"children": [
{ "type": "image", "dataKey": "lineMeasurementImage", "size": [110, 90], "border": true, "align": "left" }
]
},
{
"type": "column", "align": "left",
"children": [
{ "type": "text", "content": "${loc:Measurement_Type}${measurementType}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Field_Point1}${point1}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Field_Point2}${point2}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Measurement_Distance}${actualDistance} ${unit}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Measurement_Angle}${angle}°", "style": "body", "align": "left" }
]
}
]
}
]
},
{
"type": "bgaInspection",
"elements": [
{ "type": "text", "content": "${loc:Page_BgaInspection}", "style": "heading", "positioning": "flow" },
{
"type": "row", "size": [170, 100], "widths": [6, 4], "positioning": "flow",
"children": [
{
"type": "column", "align": "left",
"children": [
{ "type": "image", "dataKey": "bgaInspectionImage", "size": [110, 90], "border": true, "align": "left" }
]
},
{
"type": "column", "align": "left",
"children": [
{ "type": "text", "content": "${loc:Bga_Count}${bgaCount}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Measurement_VoidRate}${formatPercent(voidRate)}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Measurement_FillRate}${formatPercent(fillRate)}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Bga_TotalArea}${formatNumber(totalBgaArea, 2)}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Bga_TotalVoidArea}${formatNumber(totalVoidArea, 2)}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Bga_VoidLimit}${formatPercent(voidLimit)}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Table_Classification}${classification}", "style": "conclusion", "align": "left", "colorRules": { "Pass": "#008000", "Fail": "#FF0000" } }
]
}
]
},
{
"type": "table", "dataKey": "bgaBallsTable", "positioning": "flow", "size": [170, 0], "style": "tableDefault",
"columns": [
{ "header": "${loc:Bga_BallIndex}", "field": "index", "width": 25, "align": "center" },
{ "header": "${loc:Table_VoidRate}", "field": "voidRate", "width": 40, "align": "center" },
{ "header": "${loc:Table_Area}", "field": "area", "width": 40, "align": "center" },
{ "header": "${loc:Table_Classification}", "field": "classification", "width": 35, "align": "center", "colorRules": { "Pass": "#008000", "Fail": "#FF0000" } }
]
}
]
},
{
"type": "voidInspection",
"elements": [
{ "type": "text", "content": "${loc:Page_VoidInspection}", "style": "heading", "positioning": "flow" },
{
"type": "row", "size": [170, 100], "widths": [6, 4], "positioning": "flow",
"children": [
{
"type": "column", "align": "left",
"children": [
{ "type": "image", "dataKey": "voidInspectionImage", "size": [110, 90], "border": true, "align": "left" }
]
},
{
"type": "column", "align": "left",
"children": [
{ "type": "text", "content": "${loc:Void_RoiArea}${formatNumber(roiArea, 2)}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Void_TotalArea}${formatNumber(totalVoidArea, 2)}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Measurement_VoidRate}${formatPercent(voidRate)}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Void_Limit}${formatPercent(voidLimit)}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Void_Count}${voidCount}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Void_MaxArea}${formatNumber(maxVoidArea, 2)}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Table_Classification}${classification}", "style": "conclusion", "align": "left", "colorRules": { "Pass": "#008000", "Fail": "#FF0000" } }
]
}
]
},
{
"type": "table", "dataKey": "voidsTable", "positioning": "flow", "size": [170, 0], "style": "tableDefault",
"columns": [
{ "header": "${loc:Table_Index}", "field": "index", "width": 20, "align": "center" },
{ "header": "${loc:Table_Area}", "field": "area", "width": 35, "align": "center" },
{ "header": "${loc:Table_AreaPercent}", "field": "areaPercent", "width": 35, "align": "center" },
{ "header": "${loc:Table_CenterX}", "field": "centerX", "width": 30, "align": "center" },
{ "header": "${loc:Table_CenterY}", "field": "centerY", "width": 30, "align": "center" }
]
}
]
},
{
"type": "viaFillInspection",
"elements": [
{ "type": "text", "content": "${loc:Page_ViaFillInspection}", "style": "heading", "positioning": "flow" },
{
"type": "row", "size": [170, 100], "widths": [6, 4], "positioning": "flow",
"children": [
{
"type": "column", "align": "left",
"children": [
{ "type": "image", "dataKey": "viaFillImage", "size": [110, 90], "border": true, "align": "left" }
]
},
{
"type": "column", "align": "left",
"children": [
{ "type": "text", "content": "${loc:Fill_Rate}${formatPercent(fillRate)}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Measurement_VoidRate}${formatPercent(voidRate)}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Fill_FullDistance}${formatNumber(fullDistance, 2)}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Fill_FillDistance}${formatNumber(fillDistance, 2)}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Fill_THTLimit}${formatPercent(thtLimit)}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Table_Classification}${classification}", "style": "conclusion", "align": "left", "colorRules": { "Pass": "#008000", "Fail": "#FF0000" } }
]
}
]
}
]
}
],
"styles": {
"title": { "font": "auto", "size": 28, "bold": true, "italic": false, "color": "#1a1a1a", "align": "center" },
"companyName": { "font": "auto", "size": 10, "bold": false, "italic": false, "color": "#333333", "align": "center" },
"homepageInfo": { "font": "auto", "size": 12, "bold": false, "italic": false, "color": "#333333", "align": "left", "paddingLeft": 10 },
"homepageFooter": { "font": "auto", "size": 12, "bold": false, "italic": false, "color": "#333333", "align": "center" },
"homepageHeading": { "font": "auto", "size": 14, "bold": true, "italic": false, "color": "#333333", "align": "left" },
"heading": { "font": "auto", "size": 16, "bold": true, "italic": false, "color": "#333333", "align": "left", "marginBottom": 3 },
"body": { "font": "auto", "size": 11, "bold": false, "italic": false, "color": "#333333", "align": "left" },
"bodyBold": { "font": "auto", "size": 11, "bold": true, "italic": false, "color": "#1a1a1a", "align": "left" },
"conclusion": { "font": "auto", "size": 12, "bold": true, "italic": false, "color": "#333333", "align": "left", "marginTop": 3 },
"imageDefault": { "font": "auto", "size": 12, "bold": false, "italic": false, "color": "#333333", "align": "center", "marginTop": 5, "marginBottom": 5 },
"tableHeader": { "font": "auto", "size": 10, "bold": true, "italic": false, "color": "#ffffff", "align": "center", "backgroundColor": "#4472C4" },
"tableDefault": { "font": "auto", "size": 10, "bold": false, "italic": false, "color": "#333333", "align": "center", "marginTop": 5 },
"tableCell": { "font": "auto", "size": 10, "bold": false, "italic": false, "color": "#333333", "align": "center" }
}
}
Binary file not shown.
@@ -0,0 +1,4 @@
// Flag, ob die Trace-Meldungen asynchron zu protokolliern sind: 1 für asynchron, 0 für synchron.
1
// Kategorie Konfigurationen: <Kategorie-Name> <Enabled[0/1]>
FXDriver 0
+2 -1
View File
@@ -1,4 +1,5 @@
{
"Language": "zh-CN",
"LogLevel": "Debug"
"LogLevel": "Debug",
"CameraType": "Hikvision"
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
+2
View File
@@ -108,3 +108,5 @@ dotnet build XplorePlane.sln -c Release
- [x] 主界面硬件栏相机设置按钮
- [x] 打通与硬件层的调用流程
- [x] 打通与图像层的调用流程
- [ ] CNC的执行、存储逻辑的开发测试
- [ ] 涉及到图像校准,矩阵
+44 -7
View File
@@ -7,7 +7,15 @@
<appSettings>
<!-- 语言配置 可选值: ZhCN, ZhTW, EnUS| Language Configuration -->
<add key="Language" value="ZhCN" />
<add key="UserManual" value="D:\HMQProject\XplorePlane_CT\Code\XplorePlane\XP.App\bin\Debug\net8.0-windows7.0\UserManual.pdf" />
<add key="XpData:RootPath" value="D:\XPData" />
<add key="UserManual" value="UserManual.pdf" />
<add key="DeviceId" value="PlanerCT001" />
<!-- 授权配置 | License configuration -->
<add key="License:LicenseMode" value="0" />
<add key="License:ModuleId" value="4" />
<add key="License:UseSma" value="false" />
<add key="License:LicenseState" value="20" />
<!-- Serilog日志配置 -->
<add key="Serilog:LogPath" value="D:\XplorePlane\Logs" />
@@ -63,7 +71,6 @@
<add key="Detector:Port" value="5000" />
<add key="Detector:SavePath" value="D:\XplorePlane\DetectorImages" />
<add key="Detector:AutoSave" value="true" />
<!-- Varex 探测器专属配置 | Varex Detector Specific Configuration -->
<!-- Binning 模式: Bin1x1, Bin2x2, Bin4x4 | Binning mode: Bin1x1, Bin2x2, Bin4x4 -->
<add key="Detector:Varex:BinningMode" value="Bin1x1" />
<!-- 增益模式: Low, High | Gain mode: Low, High -->
@@ -75,14 +82,13 @@
<add key="Detector:Varex:ROI_Y" value="0" />
<add key="Detector:Varex:ROI_Width" value="2880" />
<add key="Detector:Varex:ROI_Height" value="2880" />
<!-- iRay 探测器专属配置 | iRay Detector Specific Configuration -->
<!-- 采集模式: Continuous, SingleFrame | Acquisition mode: Continuous, SingleFrame -->
<add key="Detector:IRay:AcquisitionMode" value="Continuous" />
<!-- 默认增益值 | Default gain value -->
<add key="Detector:IRay:DefaultGain" value="1.0" />
<!-- 校正配置 | Correction Configuration -->
<add key="Detector:Correction:DarkFrameCount" value="10" />
<add key="Detector:Correction:GainFrameCount" value="10" />
<add key="Detector:Correction:DarkFrameCount" value="64" />
<add key="Detector:Correction:GainFrameCount" value="64" />
<add key="Detector:Correction:SaveCorrectionData" value="true" />
<!-- 操作超时配置 | Operation Timeout Configuration -->
<add key="Detector:InitializationTimeout" value="30000" />
@@ -122,7 +128,6 @@
<!-- 自动重连 | Auto Reconnection -->
<add key="Plc:bReConnect" value="true" />
<!-- ==================== 运动控制配置 | Motion Control Configuration ==================== -->
<!-- 直线轴配置(单位:mm| Linear axis config (unit: mm) -->
<add key="MotionControl:SourceZ:Min" value="-500" />
<add key="MotionControl:SourceZ:Max" value="500" />
@@ -148,7 +153,7 @@
<add key="MotionControl:FixtureRotation:Min" value="-90" />
<add key="MotionControl:FixtureRotation:Max" value="90" />
<add key="MotionControl:FixtureRotation:Origin" value="0" />
<add key="MotionControl:FixtureRotation:Enabled" value="true" />
<add key="MotionControl:FixtureRotation:Enabled" value="false" />
<!-- 几何原点(mm| Geometry origins (mm) -->
<add key="MotionControl:Geometry:SourceZOrigin" value="0" />
<add key="MotionControl:Geometry:DetectorZOrigin" value="600" />
@@ -161,6 +166,38 @@
<!-- 运行参数 | Runtime parameters -->
<add key="MotionControl:PollingInterval" value="500" />
<add key="MotionControl:DefaultVelocity" value="500" />
<!-- 射线源与探测器Z轴联动配置 | Source-Detector Z-axis linkage configuration -->
<add key="MotionControl:SourceDetectorZLinkage:Enabled" value="true" />
<add key="MotionControl:SourceDetectorZLinkage:TriggerThreshold" value="1.0" />
<add key="MotionControl:SourceDetectorZLinkage:SpeedPercent" value="100" />
<!-- 报告输出文件夹路径(绝对路径)| Report output directory (absolute path) -->
<add key="Report:OutputDirectory" value="D:\XplorePlane\Report" />
<!-- 报告模板文件路径(相对于应用程序目录或绝对路径)| Template file path (relative to app dir or absolute) -->
<add key="Report:TemplatePath" value="Templates\StandardReportTemplate.json" />
<!-- 输出文件名模式 | File name pattern -->
<add key="Report:FileNamePattern" value="{Date}_{ProductName}_{WorkpieceSN}_{ReportId}" />
<!-- 文件名重复时是否自动累加序号 | Auto-increment suffix when file name duplicates-->
<add key="Report:AutoIncrementOnDuplicate" value="true" />
<!-- 生成后是否自动打开 PDF 阅读器 | Auto-open PDF viewer after generation (true/false) -->
<add key="Report:AutoOpenAfterGenerate" value="false" />
<!-- 默认页面尺寸 | Default page size (A4) -->
<add key="Report:DefaultPageSize" value="A4" />
<!-- 默认页面方向 | Default orientation (Portrait / Landscape) -->
<add key="Report:DefaultOrientation" value="Portrait" />
<!-- 页面边距(mm),有效范围 0-100 | Page margins (mm), valid range 0-100 -->
<add key="Report:MarginTop" value="20" />
<add key="Report:MarginBottom" value="20" />
<add key="Report:MarginLeft" value="20" />
<add key="Report:MarginRight" value="20" />
<!-- 报告中显示的公司名称 | Company name displayed in report -->
<add key="Report:CompanyName" value="海克斯康制造智能技术(青岛)有限公司" />
<!-- 公司 Logo 图片路径(可选,为空则不显示)| Company logo path (optional, empty = no logo) -->
<add key="Report:CompanyLogo" value="Templates\Logo.png" />
<!-- 软件信息配置 | Software Information Configuration -->
<add key="Report:SoftwareName" value="XplorePlane" />
<add key="Report:SoftwareLogo" value="Templates\Logo2.png" />
</appSettings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+74
View File
@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Config>
<Group ID="WriteCommon" DBNumber="31">
<Signal Name="SoftLive" Type="byte" StartAddr="0" IndexOrLength="" Remark="软件心跳,01周期变化表示PLC存活" />
<Signal Name="EmergencyStop" Type="byte" StartAddr="5" IndexOrLength="" Remark="急停,0:缺省,1:触发急停" />
<Signal Name="MC_SourceZ_Target" Type="single" StartAddr="10" IndexOrLength="" Remark="射线源Z目标位置" />
<Signal Name="MC_SourceZ_Speed" Type="single" StartAddr="14" IndexOrLength="" Remark="射线源Z运动速度" />
<Signal Name="MC_SourceZ_JogPos" Type="byte" StartAddr="18" IndexOrLength="" Remark="射线源Z正向Jog0:缺省,1:正向点动" />
<Signal Name="MC_SourceZ_JogNeg" Type="byte" StartAddr="19" IndexOrLength="" Remark="射线源Z反向Jog0:缺省,1:反向点动" />
<Signal Name="MC_SourceZ_Home" Type="byte" StartAddr="20" IndexOrLength="" Remark="射线源Z回零,0:缺省,1:触发回零" />
<Signal Name="MC_SourceZ_Stop" Type="byte" StartAddr="21" IndexOrLength="" Remark="射线源Z停止,0:缺省,1:触发停止" />
<Signal Name="MC_DetZ_Target" Type="single" StartAddr="22" IndexOrLength="" Remark="探测器Z目标位置" />
<Signal Name="MC_DetZ_Speed" Type="single" StartAddr="26" IndexOrLength="" Remark="探测器Z运动速度" />
<Signal Name="MC_DetZ_JogPos" Type="byte" StartAddr="30" IndexOrLength="" Remark="探测器Z正向Jog0:缺省,1:正向点动" />
<Signal Name="MC_DetZ_JogNeg" Type="byte" StartAddr="31" IndexOrLength="" Remark="探测器Z反向Jog0:缺省,1:反向点动" />
<Signal Name="MC_DetZ_Home" Type="byte" StartAddr="32" IndexOrLength="" Remark="探测器Z回零,0:缺省,1:触发回零" />
<Signal Name="MC_DetZ_Stop" Type="byte" StartAddr="33" IndexOrLength="" Remark="探测器Z停止,0:缺省,1:触发停止" />
<Signal Name="MC_StageX_Target" Type="single" StartAddr="34" IndexOrLength="" Remark="载物台X目标位置" />
<Signal Name="MC_StageX_Speed" Type="single" StartAddr="38" IndexOrLength="" Remark="载物台X运动速度" />
<Signal Name="MC_StageX_JogPos" Type="byte" StartAddr="42" IndexOrLength="" Remark="载物台X正向Jog0:缺省,1:正向点动" />
<Signal Name="MC_StageX_JogNeg" Type="byte" StartAddr="43" IndexOrLength="" Remark="载物台X反向Jog0:缺省,1:反向点动" />
<Signal Name="MC_StageX_Home" Type="byte" StartAddr="44" IndexOrLength="" Remark="载物台X回零,0:缺省,1:触发回零" />
<Signal Name="MC_StageX_Stop" Type="byte" StartAddr="45" IndexOrLength="" Remark="载物台X停止,0:缺省,1:触发停止" />
<Signal Name="MC_StageY_Target" Type="single" StartAddr="46" IndexOrLength="" Remark="载物台Y目标位置" />
<Signal Name="MC_StageY_Speed" Type="single" StartAddr="50" IndexOrLength="" Remark="载物台Y运动速度" />
<Signal Name="MC_StageY_JogPos" Type="byte" StartAddr="54" IndexOrLength="" Remark="载物台Y正向Jog0:缺省,1:正向点动" />
<Signal Name="MC_StageY_JogNeg" Type="byte" StartAddr="55" IndexOrLength="" Remark="载物台Y反向Jog0:缺省,1:反向点动" />
<Signal Name="MC_StageY_Home" Type="byte" StartAddr="56" IndexOrLength="" Remark="载物台Y回零,0:缺省,1:触发回零" />
<Signal Name="MC_StageY_Stop" Type="byte" StartAddr="57" IndexOrLength="" Remark="载物台Y停止,0:缺省,1:触发停止" />
<Signal Name="MC_DetSwing_Target" Type="single" StartAddr="58" IndexOrLength="" Remark="探测器摆动目标角度" />
<Signal Name="MC_DetSwing_Speed" Type="single" StartAddr="62" IndexOrLength="" Remark="探测器摆动运动速度" />
<Signal Name="MC_DetSwing_JogPos" Type="byte" StartAddr="66" IndexOrLength="" Remark="探测器摆动正向Jog,0:缺省,1:正向点动" />
<Signal Name="MC_DetSwing_JogNeg" Type="byte" StartAddr="67" IndexOrLength="" Remark="探测器摆动反向Jog,0:缺省,1:反向点动" />
<Signal Name="MC_DetSwing_Home" Type="byte" StartAddr="68" IndexOrLength="" Remark="探测器摆动回零,0:缺省,1:触发回零" />
<Signal Name="MC_DetSwing_Stop" Type="byte" StartAddr="69" IndexOrLength="" Remark="探测器摆动停止,0:缺省,1:触发停止" />
<Signal Name="MC_StageRot_Target" Type="single" StartAddr="70" IndexOrLength="" Remark="载物台旋转目标角度" />
<Signal Name="MC_StageRot_Speed" Type="single" StartAddr="74" IndexOrLength="" Remark="载物台旋转运动速度" />
<Signal Name="MC_StageRot_JogPos" Type="byte" StartAddr="78" IndexOrLength="" Remark="载物台旋转正向Jog,0:缺省,1:正向点动" />
<Signal Name="MC_StageRot_JogNeg" Type="byte" StartAddr="79" IndexOrLength="" Remark="载物台旋转反向Jog,0:缺省,1:反向点动" />
<Signal Name="MC_StageRot_Home" Type="byte" StartAddr="80" IndexOrLength="" Remark="载物台旋转回零,0:缺省,1:触发回零" />
<Signal Name="MC_StageRot_Stop" Type="byte" StartAddr="81" IndexOrLength="" Remark="载物台旋转停止,0:缺省,1:触发停止" />
<Signal Name="MC_FixRot_Target" Type="single" StartAddr="82" IndexOrLength="" Remark="夹具旋转目标角度" />
<Signal Name="MC_FixRot_Speed" Type="single" StartAddr="86" IndexOrLength="" Remark="夹具旋转运动速度" />
<Signal Name="MC_FixRot_JogPos" Type="byte" StartAddr="90" IndexOrLength="" Remark="夹具旋转正向Jog,0:缺省,1:正向点动" />
<Signal Name="MC_FixRot_JogNeg" Type="byte" StartAddr="91" IndexOrLength="" Remark="夹具旋转反向Jog,0:缺省,1:反向点动" />
<Signal Name="MC_FixRot_Home" Type="byte" StartAddr="92" IndexOrLength="" Remark="夹具旋转回零,0:缺省,1:触发回零" />
<Signal Name="MC_FixRot_Stop" Type="byte" StartAddr="93" IndexOrLength="" Remark="夹具旋转停止,0:缺省,1:触发停止" />
<Signal Name="MC_Door_Open" Type="byte" StartAddr="94" IndexOrLength="" Remark="安全门开门,0:缺省,1:触发开门" />
<Signal Name="MC_Door_Close" Type="byte" StartAddr="95" IndexOrLength="" Remark="安全门关门,0:缺省,1:触发关门" />
<Signal Name="MC_Door_Stop" Type="byte" StartAddr="96" IndexOrLength="" Remark="安全门停止,0:缺省,1:触发停止" />
<Signal Name="MC_VirtualJoystick_Enable" Type="bool" StartAddr="111" IndexOrLength="" Remark="虚拟摇杆使能"/>
<Signal Name="MC_SourceDetZ_Linkage_Enable" Type="bool" StartAddr="101" IndexOrLength="" Remark="联动使能"/>
</Group>
<Group ID="ReadCommon" DBNumber="31">
<Signal Name="ProbeA" Type="single" StartAddr="228" IndexOrLength="" Remark="测座角度A" />
<Signal Name="ProbeB" Type="string" StartAddr="225" IndexOrLength="20" Remark="测座角度B" />
<Signal Name="test" Type="byte" StartAddr="222" IndexOrLength="" Remark="" />
<Signal Name="PlcLive" Type="byte" StartAddr="200" IndexOrLength="" Remark="PLC心跳,01周期变化表示PLC存活" />
<Signal Name="PlcAlarm" Type="byte" StartAddr="201" IndexOrLength="" Remark="系统报警,0:缺省,10:有报警" />
<Signal Name="MC_SourceZ_Pos" Type="single" StartAddr="100" IndexOrLength="" Remark="射线源Z实际位置" />
<Signal Name="MC_DetZ_Pos" Type="single" StartAddr="104" IndexOrLength="" Remark="探测器Z实际位置" />
<Signal Name="MC_StageX_Pos" Type="single" StartAddr="108" IndexOrLength="" Remark="载物台X实际位置" />
<Signal Name="MC_StageY_Pos" Type="single" StartAddr="112" IndexOrLength="" Remark="载物台Y实际位置" />
<Signal Name="MC_DetSwing_Angle" Type="single" StartAddr="116" IndexOrLength="" Remark="探测器摆动实际角度" />
<Signal Name="MC_StageRot_Angle" Type="single" StartAddr="120" IndexOrLength="" Remark="载物台旋转实际角度" />
<Signal Name="MC_FixRot_Angle" Type="single" StartAddr="124" IndexOrLength="" Remark="夹具旋转实际角度" />
<Signal Name="MC_Door_Status" Type="byte" StartAddr="128" IndexOrLength="" Remark="安全门状态,0:未知,1:正在开门,2:已开,3:正在关门,4:已关,5:已锁定,6:故障" />
<Signal Name="MC_Door_Interlock" Type="byte" StartAddr="130" IndexOrLength="" Remark="安全门联锁信号,0:缺省(无联锁),10:联锁有效(禁止开门)" />
<Signal Name="MC_Joystick_Active" Type="bool" StartAddr="110" IndexOrLength="" Remark="实体摇杆输入"/>
</Group>
<Group ID="Status" DBNumber="4100">
<Signal Name="ScanMode" Type="byte" StartAddr="201" IndexOrLength="" Remark="扫描模式,0:缺省(空闲),具体值由PLC定义" />
</Group>
</Config>
Binary file not shown.
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

@@ -0,0 +1,222 @@
{
"document": {
"pageSize": "A4",
"orientation": "Portrait",
"margins": { "top": 40, "bottom": 20, "left": 20, "right": 20 },
"header": {
"enabled": true,
"left": [
"${loc:Report_Title}",
"${loc:Report_Id}${metadata.reportId} | ${loc:Report_Date}${formatDate(metadata.inspectionDate)} | ${loc:Report_Sample}${metadata.sampleName}"
],
"rightImageKey": "companyLogo",
"fontSize": 7,
"color": "#666666",
"showLine": true
},
"footer": {
"enabled": true,
"left": ["${CompanyName}"],
"right": ["{currentPage} / {totalPages}"],
"fontSize": 8,
"color": "#666666",
"showLine": true
}
},
"pages": [
{
"type": "homepage",
"elements": [
{
"type": "row", "size": [170, 40], "positioning": "flow",
"children": [
{
"type": "column", "align": "left",
"children": [
{ "type": "image", "dataKey": "companyLogo", "size": [50, 30], "align": "left" },
{ "type": "text", "content": "${CompanyName}", "style": "companyName", "align": "left" }
]
},
{
"type": "column", "align": "right",
"children": [
{ "type": "image", "dataKey": "softwareLogo", "size": [15, 20], "align": "right" },
{ "type": "text", "content": "${SoftwareName}", "style": "companyName", "align": "right" }
]
}
]
},
{ "type": "spacer", "size": [170, 15], "positioning": "flow" },
{ "type": "text", "content": "${loc:Report_Title}", "style": "title", "positioning": "flow" },
{ "type": "spacer", "size": [170, 10], "positioning": "flow" },
{ "type": "text", "content": "${loc:Report_Id}${metadata.reportId}", "style": "homepageInfo", "positioning": "flow" },
{ "type": "text", "content": "${loc:Report_Sample}${metadata.sampleName}", "style": "homepageInfo", "positioning": "flow" },
{ "type": "text", "content": "${loc:Report_Description}${metadata.description}", "style": "homepageInfo", "positioning": "flow" },
{ "type": "image", "dataKey": "workpieceImage", "size": [160, 110], "border": true, "align": "center", "style": "imageDefault", "positioning": "flow" },
{ "type": "text", "content": "${loc:Report_Operator}${metadata.operatorName}", "style": "homepageFooter", "positioning": "flow" },
{ "type": "text", "content": "${loc:Report_Date}${formatDate(metadata.inspectionDate)}", "style": "homepageFooter", "positioning": "flow" }
]
},
{
"type": "summary",
"elements": [
{ "type": "text", "content": "${loc:Report_Summary}", "style": "homepageHeading", "positioning": "flow" },
{
"type": "table", "dataKey": "summaryTable", "positioning": "flow", "size": [170, 0], "style": "tableDefault",
"columns": [
{ "header": "${loc:Field_InspectionType}", "field": "inspectionType", "width": 50, "align": "left" },
{ "header": "${loc:Field_Result}", "field": "classification", "width": 30, "align": "center", "colorRules": { "Pass": "#008000", "Fail": "#FF0000" } },
{ "header": "${loc:Field_Status}", "field": "status", "width": 30, "align": "center", "colorRules": { "合格": "#008000", "PASS": "#008000", "不合格": "#FF0000", "FAIL": "#FF0000" } }
]
}
]
},
{
"type": "metricData",
"elements": [
{ "type": "text", "content": "${loc:Page_MetricData}", "style": "heading", "positioning": "flow" },
{
"type": "row", "size": [170, 100], "widths": [6, 4], "positioning": "flow",
"children": [
{
"type": "column", "align": "left",
"children": [
{ "type": "image", "dataKey": "lineMeasurementImage", "size": [110, 90], "border": true, "align": "left" }
]
},
{
"type": "column", "align": "left",
"children": [
{ "type": "text", "content": "${loc:Measurement_Type}${measurementType}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Field_Point1}${point1}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Field_Point2}${point2}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Measurement_Distance}${actualDistance} ${unit}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Measurement_Angle}${angle}°", "style": "body", "align": "left" }
]
}
]
}
]
},
{
"type": "bgaInspection",
"elements": [
{ "type": "text", "content": "${loc:Page_BgaInspection}", "style": "heading", "positioning": "flow" },
{
"type": "row", "size": [170, 100], "widths": [6, 4], "positioning": "flow",
"children": [
{
"type": "column", "align": "left",
"children": [
{ "type": "image", "dataKey": "bgaInspectionImage", "size": [110, 90], "border": true, "align": "left" }
]
},
{
"type": "column", "align": "left",
"children": [
{ "type": "text", "content": "${loc:Bga_Count}${bgaCount}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Measurement_VoidRate}${formatPercent(voidRate)}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Measurement_FillRate}${formatPercent(fillRate)}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Bga_TotalArea}${formatNumber(totalBgaArea, 2)}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Bga_TotalVoidArea}${formatNumber(totalVoidArea, 2)}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Bga_VoidLimit}${formatPercent(voidLimit)}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Table_Classification}${classification}", "style": "conclusion", "align": "left", "colorRules": { "Pass": "#008000", "Fail": "#FF0000" } }
]
}
]
},
{
"type": "table", "dataKey": "bgaBallsTable", "positioning": "flow", "size": [170, 0], "style": "tableDefault",
"columns": [
{ "header": "${loc:Bga_BallIndex}", "field": "index", "width": 25, "align": "center" },
{ "header": "${loc:Table_VoidRate}", "field": "voidRate", "width": 40, "align": "center" },
{ "header": "${loc:Table_Area}", "field": "area", "width": 40, "align": "center" },
{ "header": "${loc:Table_Classification}", "field": "classification", "width": 35, "align": "center", "colorRules": { "Pass": "#008000", "Fail": "#FF0000" } }
]
}
]
},
{
"type": "voidInspection",
"elements": [
{ "type": "text", "content": "${loc:Page_VoidInspection}", "style": "heading", "positioning": "flow" },
{
"type": "row", "size": [170, 100], "widths": [6, 4], "positioning": "flow",
"children": [
{
"type": "column", "align": "left",
"children": [
{ "type": "image", "dataKey": "voidInspectionImage", "size": [110, 90], "border": true, "align": "left" }
]
},
{
"type": "column", "align": "left",
"children": [
{ "type": "text", "content": "${loc:Void_RoiArea}${formatNumber(roiArea, 2)}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Void_TotalArea}${formatNumber(totalVoidArea, 2)}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Measurement_VoidRate}${formatPercent(voidRate)}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Void_Limit}${formatPercent(voidLimit)}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Void_Count}${voidCount}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Void_MaxArea}${formatNumber(maxVoidArea, 2)}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Table_Classification}${classification}", "style": "conclusion", "align": "left", "colorRules": { "Pass": "#008000", "Fail": "#FF0000" } }
]
}
]
},
{
"type": "table", "dataKey": "voidsTable", "positioning": "flow", "size": [170, 0], "style": "tableDefault",
"columns": [
{ "header": "${loc:Table_Index}", "field": "index", "width": 20, "align": "center" },
{ "header": "${loc:Table_Area}", "field": "area", "width": 35, "align": "center" },
{ "header": "${loc:Table_AreaPercent}", "field": "areaPercent", "width": 35, "align": "center" },
{ "header": "${loc:Table_CenterX}", "field": "centerX", "width": 30, "align": "center" },
{ "header": "${loc:Table_CenterY}", "field": "centerY", "width": 30, "align": "center" }
]
}
]
},
{
"type": "viaFillInspection",
"elements": [
{ "type": "text", "content": "${loc:Page_ViaFillInspection}", "style": "heading", "positioning": "flow" },
{
"type": "row", "size": [170, 100], "widths": [6, 4], "positioning": "flow",
"children": [
{
"type": "column", "align": "left",
"children": [
{ "type": "image", "dataKey": "viaFillImage", "size": [110, 90], "border": true, "align": "left" }
]
},
{
"type": "column", "align": "left",
"children": [
{ "type": "text", "content": "${loc:Fill_Rate}${formatPercent(fillRate)}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Measurement_VoidRate}${formatPercent(voidRate)}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Fill_FullDistance}${formatNumber(fullDistance, 2)}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Fill_FillDistance}${formatNumber(fillDistance, 2)}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Fill_THTLimit}${formatPercent(thtLimit)}", "style": "body", "align": "left" },
{ "type": "text", "content": "${loc:Table_Classification}${classification}", "style": "conclusion", "align": "left", "colorRules": { "Pass": "#008000", "Fail": "#FF0000" } }
]
}
]
}
]
}
],
"styles": {
"title": { "font": "auto", "size": 28, "bold": true, "italic": false, "color": "#1a1a1a", "align": "center" },
"companyName": { "font": "auto", "size": 10, "bold": false, "italic": false, "color": "#333333", "align": "center" },
"homepageInfo": { "font": "auto", "size": 12, "bold": false, "italic": false, "color": "#333333", "align": "left", "paddingLeft": 10 },
"homepageFooter": { "font": "auto", "size": 12, "bold": false, "italic": false, "color": "#333333", "align": "center" },
"homepageHeading": { "font": "auto", "size": 14, "bold": true, "italic": false, "color": "#333333", "align": "left" },
"heading": { "font": "auto", "size": 16, "bold": true, "italic": false, "color": "#333333", "align": "left", "marginBottom": 3 },
"body": { "font": "auto", "size": 11, "bold": false, "italic": false, "color": "#333333", "align": "left" },
"bodyBold": { "font": "auto", "size": 11, "bold": true, "italic": false, "color": "#1a1a1a", "align": "left" },
"conclusion": { "font": "auto", "size": 12, "bold": true, "italic": false, "color": "#333333", "align": "left", "marginTop": 3 },
"imageDefault": { "font": "auto", "size": 12, "bold": false, "italic": false, "color": "#333333", "align": "center", "marginTop": 5, "marginBottom": 5 },
"tableHeader": { "font": "auto", "size": 10, "bold": true, "italic": false, "color": "#ffffff", "align": "center", "backgroundColor": "#4472C4" },
"tableDefault": { "font": "auto", "size": 10, "bold": false, "italic": false, "color": "#333333", "align": "center", "marginTop": 5 },
"tableCell": { "font": "auto", "size": 10, "bold": false, "italic": false, "color": "#333333", "align": "center" }
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff
Binary file not shown.
+28 -51
View File
@@ -5,125 +5,88 @@
</sectionGroup>
</configSections>
<appSettings>
<!-- 语言配置 可选值: ZhCN, ZhTW, EnUS| Language Configuration -->
<add key="Language" value="ZhCN" />
<add key="UserManual" value="D:\HMQProject\XplorePlane_CT\Code\XplorePlane\XP.App\bin\Debug\net8.0-windows7.0\UserManual.pdf" />
<!-- Serilog日志配置 -->
<add key="XpData:RootPath" value="D:\XPData" />
<add key="UserManual" value="UserManual.pdf" />
<add key="DeviceId" value="PlanerCT001" />
<add key="License:LicenseMode" value="0" />
<add key="License:ModuleId" value="4" />
<add key="License:UseSma" value="false" />
<add key="License:LicenseState" value="10" />
<add key="Serilog:LogPath" value="D:\XplorePlane\Logs" />
<add key="Serilog:MinimumLevel" value="Debug" />
<add key="Serilog:EnableConsole" value="true" />
<add key="Serilog:RollingInterval" value="Day" />
<add key="Serilog:FileSizeLimitMB" value="100" />
<add key="Serilog:RetainedFileCountLimit" value="365" />
<!-- 数据库SQLite配置 -->
<add key="Sqlite:DbFilePath" value="D:\XplorePlane\DataBase\XP.db" />
<add key="Sqlite:ConnectionTimeout" value="10" />
<add key="Sqlite:CreateIfNotExists" value="true" />
<!-- 是否启用SQLite WAL模式(提升并发读写性能,默认true) -->
<add key="Sqlite:EnableWalMode" value="true" />
<!-- 是否开启SQL操作日志(记录所有执行的SQL语句,默认false -->
<add key="Sqlite:EnableSqlLogging" value="false" />
<!-- 射线源配置 -->
<!-- 射线源类型 | Ray Source Type -->
<!-- 可选值: Comet225 | Available values: Comet225 -->
<add key="RaySource:SourceType" value="Comet225" />
<add key="RaySource:SerialNumber" value="SN08602861" />
<add key="RaySource:TotalLifeThreshold" value="10" />
<!-- PVI通讯参数 | PVI Communication Parameters -->
<add key="RaySource:PlcIpAddress" value="192.168.12.10" />
<add key="RaySource:PlcPort" value="11159" />
<add key="RaySource:PortNumber" value="11" />
<add key="RaySource:StationNumber" value="1" />
<add key="RaySource:CpuName" value="cpu" />
<add key="RaySource:ConnectionTimeout" value="30000" />
<!-- 硬件参数范围 | Hardware Parameter Ranges -->
<add key="RaySource:MinVoltage" value="20" />
<add key="RaySource:MaxVoltage" value="225" />
<add key="RaySource:MinCurrent" value="10" />
<add key="RaySource:MaxCurrent" value="1440" />
<!-- 外部程序配置 | External Program Configuration -->
<add key="RaySource:AdvanceExePath" value="C:\Program Files (x86)\Feinfocus\FXEControl_3.1.1.65\FXEControl.exe" />
<!-- 操作超时配置 | Operation Timeout Configuration -->
<add key="RaySource:RaySource:InitializationTimeout" value="30000" />
<add key="RaySource:WarmUpTimeout" value="600000" />
<add key="RaySource:StartUpTimeout" value="1800000" />
<add key="RaySource:AutoCenterTimeout" value="1200000" />
<add key="RaySource:FilamentAdjustTimeout" value="1200000" />
<add key="RaySource:GeneralOperationTimeout" value="100000" />
<!-- 探测器配置 -->
<!-- 探测器类型 | Detector Type -->
<!-- 可选值: Varex, IRay, Hamamatsu | Available values: Varex, IRay, Hamamatsu -->
<add key="Detector:Type" value="Varex" />
<!-- 通用配置 | Common Configuration -->
<add key="Detector:IP" value="192.168.1.200" />
<add key="Detector:Port" value="5000" />
<add key="Detector:SavePath" value="D:\XplorePlane\DetectorImages" />
<add key="Detector:AutoSave" value="true" />
<!-- Varex 探测器专属配置 | Varex Detector Specific Configuration -->
<!-- Binning 模式: Bin1x1, Bin2x2, Bin4x4 | Binning mode: Bin1x1, Bin2x2, Bin4x4 -->
<add key="Detector:Varex:BinningMode" value="Bin1x1" />
<!-- 增益模式: Low, High | Gain mode: Low, High -->
<add key="Detector:Varex:GainMode" value="High" />
<!-- 曝光时间(毫秒)| Exposure time (milliseconds) -->
<add key="Detector:Varex:ExposureTime" value="100" />
<!-- ROI 区域 | ROI Region -->
<add key="Detector:Varex:ROI_X" value="0" />
<add key="Detector:Varex:ROI_Y" value="0" />
<add key="Detector:Varex:ROI_Width" value="2880" />
<add key="Detector:Varex:ROI_Height" value="2880" />
<!-- iRay 探测器专属配置 | iRay Detector Specific Configuration -->
<!-- 采集模式: Continuous, SingleFrame | Acquisition mode: Continuous, SingleFrame -->
<add key="Detector:IRay:AcquisitionMode" value="Continuous" />
<!-- 默认增益值 | Default gain value -->
<add key="Detector:IRay:DefaultGain" value="1.0" />
<!-- 校正配置 | Correction Configuration -->
<add key="Detector:Correction:DarkFrameCount" value="10" />
<add key="Detector:Correction:GainFrameCount" value="10" />
<add key="Detector:Correction:SaveCorrectionData" value="true" />
<!-- 操作超时配置 | Operation Timeout Configuration -->
<add key="Detector:InitializationTimeout" value="30000" />
<add key="Detector:AcquisitionTimeout" value="10000" />
<add key="Detector:CorrectionTimeout" value="60000" />
<!-- 主界面实时图像与探测器帧流水线 -->
<add key="MainViewport:RealtimeEnabledDefault" value="true" />
<add key="DetectorPipeline:AcquireQueueCapacity" value="16" />
<add key="DetectorPipeline:ProcessQueueCapacity" value="8" />
<add key="DetectorPipeline:ProcessEveryNFrames" value="1" />
<!-- Dump 配置 | Dump Configuration -->
<add key="Dump:StoragePath" value="D:\XplorePlane\Dump" />
<add key="Dump:EnableScheduledDump" value="false" />
<add key="Dump:ScheduledIntervalMinutes" value="60" />
<add key="Dump:MiniDumpSizeLimitMB" value="100" />
<add key="Dump:RetentionDays" value="7" />
<!-- PLC 配置 | PLC Configuration -->
<add key="Plc:IpAddress" value="192.168.0.1" />
<add key="Plc:Port" value="102" />
<add key="Plc:Rack" value="0" />
<add key="Plc:Slot" value="1" />
<!-- PlcType可选值: S200Smart, S300, S400, S1200, S1500 | PlcType Available values: S200Smart, S300, S400, S1200, S1500 -->
<add key="Plc:PlcType" value="S1200" />
<!-- 数据块配置 | Data Block Configuration -->
<add key="Plc:ReadDbBlock" value="DB31" />
<add key="Plc:WriteDbBlock" value="DB31" />
<add key="Plc:ReadStartAddress" value="0" />
<add key="Plc:ReadLength" value="200" />
<!-- 批量读取周期(毫秒)| Bulk read interval (ms) -->
<add key="Plc:BulkReadIntervalMs" value="250" />
<!-- 超时配置 | Timeout Configuration -->
<add key="Plc:ConnectTimeoutMs" value="3000" />
<add key="Plc:ReadTimeoutMs" value="1000" />
<add key="Plc:WriteTimeoutMs" value="1000" />
<!-- 自动重连 | Auto Reconnection -->
<add key="Plc:bReConnect" value="true" />
<!-- ==================== 运动控制配置 | Motion Control Configuration ==================== -->
<!-- 直线轴配置(单位:mm| Linear axis config (unit: mm) -->
<add key="MotionControl:SourceZ:Min" value="-500" />
<add key="MotionControl:SourceZ:Max" value="500" />
<add key="MotionControl:SourceZ:Origin" value="0" />
@@ -136,7 +99,6 @@
<add key="MotionControl:StageY:Min" value="-150" />
<add key="MotionControl:StageY:Max" value="150" />
<add key="MotionControl:StageY:Origin" value="0" />
<!-- 旋转轴配置(单位:度)| Rotary axis config (unit: degrees) -->
<add key="MotionControl:DetectorSwing:Min" value="-45" />
<add key="MotionControl:DetectorSwing:Max" value="45" />
<add key="MotionControl:DetectorSwing:Origin" value="0" />
@@ -148,19 +110,34 @@
<add key="MotionControl:FixtureRotation:Min" value="-90" />
<add key="MotionControl:FixtureRotation:Max" value="90" />
<add key="MotionControl:FixtureRotation:Origin" value="0" />
<add key="MotionControl:FixtureRotation:Enabled" value="true" />
<!-- 几何原点(mm| Geometry origins (mm) -->
<add key="MotionControl:FixtureRotation:Enabled" value="false" />
<add key="MotionControl:Geometry:SourceZOrigin" value="0" />
<add key="MotionControl:Geometry:DetectorZOrigin" value="600" />
<add key="MotionControl:Geometry:StageRotationCenterZ" value="300" />
<!-- 探测器摆动几何参数(mm| Detector swing geometry parameters (mm) -->
<!-- SwingPivotOffset: Pivot 相对于 DetectorZ 绝对坐标的 Z 方向偏移,正值表示 Pivot 在 DetectorZ_abs 上方 -->
<add key="MotionControl:Geometry:SwingPivotOffset" value="80" />
<!-- SwingRadius: Pivot 到探测器感光面中心的距离,为 0 时退化为无摆动模型 -->
<add key="MotionControl:Geometry:SwingRadius" value="200" />
<!-- 运行参数 | Runtime parameters -->
<add key="MotionControl:PollingInterval" value="500" />
<add key="MotionControl:DefaultVelocity" value="500" />
<add key="MotionControl:SourceDetectorZLinkage:Enabled" value="true" />
<add key="MotionControl:SourceDetectorZLinkage:TriggerThreshold"
value="1.0" />
<add key="MotionControl:SourceDetectorZLinkage:SpeedPercent"
value="100" />
<add key="Report:OutputDirectory" value="D:\XplorePlane\Report" />
<add key="Report:TemplatePath" value="Templates\StandardReportTemplate.json" />
<add key="Report:FileNamePattern" value="{Date}_{ProductName}_{WorkpieceSN}_{ReportId}" />
<add key="Report:AutoIncrementOnDuplicate" value="true" />
<add key="Report:AutoOpenAfterGenerate" value="false" />
<add key="Report:DefaultPageSize" value="A4" />
<add key="Report:DefaultOrientation" value="Portrait" />
<add key="Report:MarginTop" value="20" />
<add key="Report:MarginBottom" value="20" />
<add key="Report:MarginLeft" value="20" />
<add key="Report:MarginRight" value="20" />
<add key="Report:CompanyName" value="海克斯康制造智能技术(青岛)有限公司" />
<add key="Report:CompanyLogo" value="Templates\Logo.png" />
<add key="Report:SoftwareName" value="XplorePlane" />
<add key="Report:SoftwareLogo" value="Templates\Logo2.png" />
</appSettings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
Binary file not shown.
Binary file not shown.
+2 -1
View File
@@ -12,7 +12,8 @@
}
],
"configProperties": {
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": true
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": true,
"CSWINRT_USE_WINDOWS_UI_XAML_PROJECTIONS": false
}
}
}
+4
View File
@@ -0,0 +1,4 @@
// Flag, ob die Trace-Meldungen asynchron zu protokolliern sind: 1 für asynchron, 0 für synchron.
1
// Kategorie Konfigurationen: <Kategorie-Name> <Enabled[0/1]>
FXDriver 0
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More