Files
FATrace/FATrace.OEMApp/HelpManual/SOPManual.md
2026-01-19 12:40:45 +08:00

14 KiB
Raw Blame History

FATrace.OEMApp 软件使用手册SOP

1. 文档说明

1.1 适用范围

  • 本手册适用于 FATrace.OEMAppWinForms 客户端)。
  • 该客户端用于:接收“内袋二维码/条码”触发事件,调用海康 NVR 按时间段下载录像文件,保存到本地/NAS并将视频文件与条码信息写入数据库提供历史查询与播放。

1.2 目标读者

  • 产线操作人员:负责扫码触发、查看任务状态、核对视频保存结果。
  • 追溯/质量人员:负责历史查询与视频回放。
  • IT 运维:负责安装部署、网络与设备连通性、配置项维护、日志排查与数据清理策略。

1.3 术语与口径

  • NVR海康网络录像机通过海康 SDK 登录并下载录像)。
  • 内袋二维码/条码:来自产线/外部系统的条码字符串;系统会解析出原料编号、批号、重量、保质期、产地、日产量等字段(解析规则见第 8 章)。
  • 下载任务:系统将一次“回溯录像下载请求”持久化为 DownloadTask,并由后台队列顺序执行。
  • 历史记录:数据库表 OEMRawUse,用于追溯条码对应的视频文件路径、名称与创建时间等。
  • NAS本系统将视频保存路径配置为网络盘/共享盘(例如 Y:),用于长期留存。

2. 系统概述

FATrace.OEMApp 的核心流程为:

  1. 接收条码PLC 扫码或 TCP 客户端发送);
  2. 解析条码得到业务字段;
  3. 生成下载任务 DownloadTask 并入队;
  4. 后台 DownloadTaskWorker 按顺序执行:
    • 根据配置的 NVR 账号登录状态,从 NVR 按时间范围下载录像
    • 将视频保存到 NVRVideoSavePath 指定目录(支持盘符/网络盘)
    • 下载成功后写入 OEMRawUse(视频文件路径、视频名、条码信息等)
    • 可选:生成 CSVRawUseCsvPath
  5. 历史页可查询 OEMRawUse 并双击播放视频。

3. 运行环境与依赖

3.1 操作系统

  • Windows 10/11。

3.2 网络与外设

  • SQL Server 数据库(用于存储任务与追溯索引)。
  • 海康 NVRIP/端口/账号/密码在配置中)。
  • 视频保存目录(本地磁盘或 NAS 网络盘,如 Y:)。 -可选PLC/基恩士:用于从寄存器读取扫码结果。 -可选TCP 客户端(如 PDA/中间件):向 OEMApp 内置 TCP Server 发送扫码文本。

3.3 关键组件(实现层面)

  • 数据库FreeSql + SQL Server Provider自动同步表结构已启用
  • 海康 SDKCHCNetSDK程序启动后输出 SDK 日志到 C:\SdkLog\)。
  • 视频播放LibVLCSharpVideoView
  • TCP ServerTouchSocket多客户端
  • PLC 通信HslCommunicationKeyenceMcNet
  • 日志NLog错误日志 + 操作日志)。
  • CSVCsvHelper导出单条 CSV。 -可选JellyfinRestSharp 客户端与监控服务(当前主流程标记为停用)。

4. 安装与部署IT 运维)

4.1 部署方式

  • 使用发布后的程序目录(含 exe、dll、App.configNLog.config、VideoLAN.LibVLC 等依赖)。
  • 建议将程序目录放置在非系统盘且具备写权限的位置(日志目录在程序目录下生成)。

4.2 单实例限制

  • 程序启动会检测单实例:若已运行会提示“程序已运行,不能再次打开!”。

4.3 授权提示

  • 程序启动会进行授权校验失败时提示“授权失败当前程序只能使用8小时”。

4.4 首次启动检查清单

  • 数据库连通性:确认 App.configconnecting 正确,且 SQL Server 可访问。
  • NVR 可达:确认 NVRIP / NVRPort 可 ping 通,端口可达。
  • 视频保存盘符:确认 NVRVideoSavePath 盘符存在且可写(如为网络盘需先映射)。
  • SDK 日志目录:C:\SdkLog\ 可创建且可写(建议提前创建目录并赋权)。

5. 配置说明App.config

文件位置:FATrace.OEMApp/App.config

5.1 数据库连接

  • connectingSQL Server 主库连接字符串OEMApp 实际使用该键)。
  • connecting1 / RemoteConnecting:保留项,是否使用取决于现场版本。

5.2 PLC 配置

  • PLCIPPLC IP
  • PLCPortPLC 端口
  • PLCScan:扫描周期(毫秒),默认 600
  • PDAScanCodePLC 内保存扫码字符串的寄存器地址(例如 D1000

5.3 TCP Server外部扫码接入

  • TcpServerIpOEMApp 内置 TCP Server 监听 IP
  • TcpServerPortOEMApp 内置 TCP Server 监听端口

5.4 下载任务与回溯时长

  • VideoTime:下载时长(秒),默认 30。系统会下载 [NvrStartTime, NvrEndTime] 时间窗。
  • DownloadTaskMaxRetry:失败重试次数上限(程序重启后会将未超过次数的 Failed 重置为 Pending
  • DownloadTaskTimeoutSeconds:单任务下载超时时间(秒)。若未配置,系统会按“时间窗*3”并限制到 [120,1800] 计算。

5.5 NVR 配置

  • NVRIPNVR IP
  • NVRPortNVR 端口(通常 8000
  • NVRUserNameNVR 登录用户名
  • NVRPwNVR 登录密码
  • NVRVideoSavePath:视频保存根路径(支持本地盘符或网络盘符,如 Y:

5.6 数据清理策略

  • VideoFileSaveDay:视频文件保留天数(用于清理 DownloadTask 关联的视频文件)
  • DbSaveDay:数据库记录保留天数(用于清理 DownloadTask/OEMRawUse/VideoAction 等旧记录)
  • DataCleanupEnabled:是否启用定时清理(默认 true
  • DataCleanupTimeOfDay:每日执行时间(默认 02:00:00

5.7 CSV 导出

  • RawUseCsvPathCSV 保存目录(如 D:\TestData

5.8 Jellyfin可选/当前停用)

  • JellyfinBaseUrl / JellyfinApiKey / JellyfinParentId / JellyfinPollIntervalMs / JellyfinPollMaxWaitMs

6. 日志与目录说明

6.1 NLog 日志

文件:FATrace.OEMApp/NLog.config

  • 错误日志:程序目录\Log\yyyy-MM-dd\ErrorMessage.txt
  • 操作日志:程序目录\OperationLogs\yyyy-MM-dd\OperationLog.txt
  • 默认保留 60 天(maxArchiveDays=60

6.2 海康 SDK 日志

  • 程序启动时启用 SDK 日志输出到:C:\SdkLog\
  • 建议 IT 运维定期清理该目录,避免长期占用磁盘。

7. 界面结构与功能入口

7.1 左侧导航栏

  • 主界面显示扫码信息、任务队列状态、日志列表、CSV 保存状态等。
  • 历史记录:查询 OEMRawUse 并播放对应视频。
  • 设置:预留页(当前可用于放置 NVR 登录、下载进度等相关操作)。

7.2 顶部/底部状态栏

  • Plc连接状态来自 PLCDataService(若未启用 PLC此状态可能不准确或保持默认
  • 服务连接状态:数据库连通性检测(SELECT 1)。
  • NAS连接状态检测 NVRVideoSavePath 目录是否存在。
  • NVR连接状态检测 NVR 登录态与在线状态。

8. 条码格式与解析规则(重要)

系统条码解析由 FATrace.Com.NVRCom.ParseCodeFull(code) 实现。

8.1 支持的分隔符

  • 支持英文逗号 ,
  • 支持中文逗号
  • 支持分号 ; /
  • 支持空格分隔

8.2 推荐条码字段结构(按顺序)

  1. RawCode原料编号
  2. Batch批号通常为 8 位日期 yyyyMMdd;系统会提取前 8 位数字)
  3. Weight重量3/4 位数字,最后 1 位为小数位,例如 802 => 80.2
  4. ShelfLifeMonths保质期
  5. RegionCode产地编码01=国内02=日本,其他=未知)
  6. Count日产量序号

8.3 视频文件命名规则

  • 视频文件路径:NVRVideoSavePath\{Code}.mp4(会清洗非法文件名字符)
  • 视频名称:{Code}.mp4

9. 日常操作 SOP产线/追溯人员)

9.1 开机前检查(每日/每班)

  1. 启动 OEMApp。
  2. 查看底部状态栏:
    • 服务连接状态:应为“正常”
    • NAS连接状态应为“正常”表示视频保存目录存在
    • NVR连接状态应为“正常”表示 NVR 已登录且在线)
  3. 若异常,按第 12 章排查。

9.2 NVR 登录

  • 主界面启动时会自动调用登录NVRLogin也可使用“设置页/登录按钮”手动登录btnNVRLogin
  • 登录成功会弹窗“登录成功”。
  • 登录失败会弹窗“登录失败:{错误信息}”。

9.3 扫码触发(两种方式)

方式 ATCP Server 接入(推荐用于外部设备/中间件)

  1. OEMApp 启动后会读取配置 TcpServerIp / TcpServerPort 并启动 TouchSocketServer
  2. 外部客户端连接后发送条码字符串UTF-8 文本)。
  3. OEMApp 接收后会:
    • 解析条码并填充界面(内袋二维码、原料编号等)
    • 调用 DownloadTaskWorker.Enqueue 创建下载任务并入队
    • 向客户端回复“OK”

方式 BPLC 扫码(若现场启用 PLCDataService

  1. PLCDataService 会按 PLCScan 周期从 PDAScanCode 地址读取字符串。
  2. 读取到新值后触发 ScanCodeEventHandler
  3. OEMApp 会解析条码并入队下载任务。

9.4 下载任务执行与监控

  • 下载队列服务:DownloadTaskWorker.Instance.Start(HkCameraClient)
  • 执行模型:单线程顺序下载(同一时刻只有一个任务 Running
  • 主界面显示:
    • DownloadFileName:显示当前下载文件名
    • DownloadProgressBarMain:显示下载进度(来自海康 SDK 回调)
    • gridRULog展示任务列表时间、类型、条码、任务Id、状态、进度、备注

9.5 暂停下载

  • 点击“停止下载/暂停”btnStopLoadVideo 或 btnRawStopLoadVideo会调用 Sdk_NET_DVR_StopGetFile
  • 注意:暂停会导致当前任务失败或中断,后续可依赖重试策略重新下载。

9.6 任务完成后的结果

下载成功后系统会:

  • 在视频保存目录生成视频文件(例如 Y:\{Code}.mp4)。
  • 在数据库表 OEMRawUse 写入一条记录:
    • InBagCode、RawName、RawCode、User
    • VideoStartTime、VideoEndTime
    • VideoFilePath、VideoName
  • 在主界面/日志中提示下载完成。

9.7 CSV 文件生成(可选)

  • 系统在 SaveCsvForTaskAsync 中会为任务生成 RawUseCsvDto,并调用 CsvService.ExportSingle 导出 CSV。
  • CSV 输出目录:RawUseCsvPath
  • 文件名:{InBagCode}.csv(若条码含非法字符会被替换)
  • 主界面“CSV文件生成状态”会提示成功/失败路径。

9.8 历史查询与视频播放

  1. 点击左侧“历史记录”。
  2. 输入查询条件:
    • 关键字:支持 InBagCode/RawCode/RawName 模糊匹配
    • 日期范围:按 CreateTime 过滤(起始日 00:00:00 到结束日次日 00:00:00
  3. 点击查询btnHistoryVideoSearch
  4. 双击表格行播放对应视频(从 OEMRawUse.VideoFilePath 读取)。
  5. 点击“停止播放”btnStopHistoryPlay停止当前播放。

10. 数据表口径(追溯/IT

  • DownloadTask:下载任务表(队列持久化)
    • StatusPending/Running/Completed/Failed
    • TryCount尝试次数
    • VideoFilePath目标保存路径
    • Error失败原因
  • OEMRawUse:追溯索引表(历史记录页数据源)
  • VideoAction / JellyfinMonitorTask:历史遗留/扩展表(定时清理会涉及)

11. 定时清理策略IT 运维)

TimeClearDataService 每日按配置时间执行:

  • 先按 VideoFileSaveDay 删除 DownloadTask 关联的视频文件;
  • 再按 DbSaveDay 删除 DownloadTask / JellyfinMonitorTask / OEMRawUse / VideoAction 等旧记录;
  • 删除数据库记录前会再次尽力删除关联文件,避免“库删了文件还在”。

运维建议:

  • 若视频文件非常大,建议将 VideoFileSaveDayDbSaveDay 分开设置。
  • 若需要永久留存视频,请将 VideoFileSaveDay 设置为较大值,并确保 NAS 容量与备份策略。

12. 常见问题与排查FAQ/故障处理)

12.1 底部“服务连接状态:异常”

  • 原因SQL Server 不可达、连接字符串错误、账号权限不足。
  • 处理:
    1. 检查 App.configconnecting
    2. 检查数据库服务是否启动、网络是否可达。
    3. 查看错误日志 ErrorMessage.txt

12.2 “NVR连接状态异常”或登录失败

  • 原因NVRIP/NVRPort 不通、账号密码错误、NVR 离线、海康 SDK 环境/依赖缺失。
  • 处理:
    1. Ping NVRIP 并确认端口可达8000
    2. 核对 NVRUserName / NVRPw
    3. 查看 C:\SdkLog\ 与 NLog 错误日志。

12.3 “NAS连接状态异常”

  • 原因:NVRVideoSavePath 不存在、网络盘未映射、权限不足。
  • 处理:
    1. 在资源管理器确认该盘符/目录存在并可创建文件。
    2. 若为网络共享,确认映射在“运行 OEMApp 的同一账号”下可用。
    3. 建议使用固定盘符映射并设置开机自动重连。

12.4 扫码后无任务入队/无反应

  • TCP 方式:
    1. 确认 TcpServerIp / TcpServerPort 配置正确。
    2. 确认防火墙放行端口。
    3. 查看操作日志是否有“客户端连接/接收数据”。
  • PLC 方式:
    1. 检查 PLCIP / PLCPort / PDAScanCode
    2. 检查 PLC 是否正确写入字符串。

12.5 下载任务一直 Pending

  • 可能原因:任务的 NvrEndTime 还未到(系统会等待 NvrEndTime < Now+5 秒 才取出执行)。
  • 处理:等待数秒后观察;或检查系统时间是否正确。

12.6 下载失败/超时

  • 原因网络抖动、NVR 负载高、录像文件不可用、保存路径不可写。
  • 处理:
    1. 检查视频保存路径是否可写。
    2. 检查 NVR 登录与在线。
    3. 适当增大 DownloadTaskTimeoutSeconds
    4. 查看 DownloadTask.ErrorErrorMessage.txt

12.7 历史记录能查到但播放失败

  • 原因:视频文件被清理、路径变更、盘符未映射。
  • 处理:
    1. VideoFilePath 检查文件是否存在。
    2. 检查 NAS 映射与权限。
    3. 如文件已被清理,需调整 VideoFileSaveDay 或备份策略。

13. 安全与合规建议

  • 不建议在现场明文传播数据库 sa 密码;建议使用最小权限账号。
  • 建议对 NAS 目录做访问控制,防止误删/篡改。
  • 建议定期备份数据库与关键视频目录。

14. 版本记录

  • V1.0OEMApp 初版 SOP安装/配置/扫码触发下载/历史播放/CSV/定时清理/故障排查)