IEC 60870-5-104主站仿真软件:电力监控系统数字孪生沙盒
简介本资源是面向电力自动化领域开发工程师、系统调试人员及协议学习者的IEC 104主站仿真工具套件聚焦解决104协议子站设备兼容性验证、通信链路稳定性测试与现场故障复现等核心问题。压缩包共93个文件含32个.pco协议配置模板覆盖IEC104/101/61850/DL-476等多种规约、30个.dll动态库支撑通信、日志、数据库、报文解析等核心功能、14个.xml配置文件用于通道、监视项、数据映射等参数化管理以及3个.exe可执行程序含主程序ProIEC104Client.exe及sqlite3.exe等辅助工具整体体积仅4.18MB轻量易部署。已有1426人学习下载适用于协议入门实践、嵌入式子站联调、调度主站对接预测试等真实工程场景。用户可直接运行仿真客户端模拟主站行为结合预置的多时段.pco历史报文进行回放分析调用.dll扩展模块实现自定义协议解析并通过.pdf使用说明快速掌握参数配置与异常诊断流程是一套开箱即用、结构完整、工程导向明确的104协议调试解决方案。1. 什么是“104主站仿真软件”它不是协议调试器而是电力监控系统主站侧的“数字孪生沙盒”“104主站仿真软件”这个标题常被误读为一个简单的IEC 60870-5-104协议收发工具——但实际在一线工程交付中它承担的是更关键、更复杂的角色在不接入真实RTU/IED设备的前提下完整复现主站系统对远动数据的采集、解析、存储、告警、画面刷新与遥控响应全流程。某高校智能电网实验室曾用它提前3周发现SCADA平台在处理2000点位并发遥信变位时的内存泄漏问题某配电自动化项目组则靠它把主站与子站间104链路的“心跳超时阈值—重连策略—SOE时间戳校准”三者耦合逻辑验证清楚避免了现场投运后因时钟漂移导致的事件顺序错乱。它面向的是主站开发工程师、系统集成测试人员和调度自动化运维骨干——你不需要懂底层socket编程但必须理解主站如何按IEC 60870-5-104标准组织ASDU、处理I格式报文的确认机制、以及如何模拟真实厂站的多链接、多链路、不同ASDU类型混合上送场景。这不是“能连上就行”的玩具而是主站功能闭环验证的刚性基础设施。2. 从零构建可验证的104主站仿真环境选型依据与最小可行部署要让“104主站仿真软件”真正发挥价值第一步不是急着敲命令而是明确它在整个技术栈中的定位它必须能双向交互既接收子站模拟器上送的遥测/遥信/遥脉也能向子站模拟器下发遥控/遥调命令可配置性强支持自定义ASDU类型、可变结构限定词、原因码、地址映射规则且具备可观测性报文原始字节流、解析后的语义结构、连接状态机变迁、时序日志。市面上常见方案有三类基于Wireshark插件的被动解析仅观察无法交互、轻量级Python脚本如pymodbus改写但104协议栈不完整、以及专业级仿真平台如某些商用SCADA厂商提供的SDK套件。经实测对比开源项目libiec60870配套的iec104_master_sim工具链成为最平衡的选择它由C语言实现核心协议栈通过JSON配置驱动行为支持Linux/macOS/Windows且所有ASDU类型M_ME_NB_1、M_SP_NA_1、C_SC_NA_1等均可在配置文件中显式声明。更重要的是它不依赖特定GUI框架可嵌入CI流水线做自动化回归测试——这正是我们落地的关键前提。2.1 下载与编译避开GCC版本兼容性陷阱该工具链源码托管于GitHub公开仓库搜索关键词libiec60870 iec104_master_sim即可定位当前稳定版为v2.3.1。注意不要直接使用系统默认GCC 11编译其对C99标准中inline关键字的严格检查会导致asdu.c编译失败。我一般会降级到GCC 9.4# Ubuntu/Debian系统示例 sudo apt install gcc-9 g-9 cmake libssl-dev git clone https://github.com/mz-automation/libiec60870.git cd libiec60870 git checkout v2.3.1 mkdir build cd build CCgcc-9 CXXg-9 cmake -DCMAKE_BUILD_TYPERelease .. make -j$(nproc)提示编译成功后build/bin/目录下将生成iec104_master_sim可执行文件。它本身不带图形界面所有行为均由JSON配置文件驱动——这是它轻量且可脚本化的核心设计。2.2 配置文件详解用JSON定义你的“虚拟主站大脑”主站仿真行为完全由master_config.json控制。以下是一个典型10kV配电站监控场景的最小配置含3个遥信点、2个遥测点、1个遥控点{ connection: { ip: 127.0.0.1, port: 2404, timeout_ms: 5000, reconnect_delay_ms: 3000 }, asdu_definitions: [ { type: M_SP_NA_1, ca: 100, ioa: 1, value: 1, quality: {invalid: false, not_topical: false, substituted: false, blocked: false} }, { type: M_ME_NB_1, ca: 100, ioa: 2, value: 12.34, quality: {invalid: false, overflow: false, substituted: false, blocked: false} } ], control_points: [ { ioa: 101, ca: 100, type: C_SC_NA_1 } ], log_level: INFO }关键参数说明caCommon Address公共地址即主站分配给该厂站的唯一ID必须与子站模拟器配置一致ioaInformation Object Address信息体地址需符合IEC 60870-5-101/104规范如遥信从1开始遥测从1001开始是常见约定value初始值主站启动时即以此值响应子站的总召唤Interrogationquality品质描述符直接影响HMI画面中信号的显示颜色如灰色表示invalidcontrol_points声明哪些IOA支持遥控操作后续可通过命令行触发。此配置文件是主站仿真的“神经中枢”任何逻辑变更如新增遥信点、修改品质位只需编辑JSON无需重新编译。3. 启动、交互与实时观测让仿真主站“活”起来配置就绪后启动主站仿真器仅需一条命令但其背后的行为远比表面复杂。我们分三步走先看它如何建立连接并响应总召唤再手动触发遥控指令最后用原始报文验证每一步是否符合标准。3.1 启动主站并捕获首次握手与总召唤响应在终端中执行./iec104_master_sim --config master_config.json --log-level DEBUG此时主站会尝试连接127.0.0.1:2404即本地运行的子站模拟器。若连接成功你会看到类似日志[INFO] Connection established to 127.0.0.1:2404 [DEBUG] Sending STARTDT act (0x07 0x00 0x00 0x00 0x00) [DEBUG] Received STARTDT con (0x07 0x80 0x00 0x00 0x00) [DEBUG] Sending Interrogation (C_IC_NA_1) for group 0x20关键动作解析STARTDT act是主站发起的激活链路请求报文类型0x07子站回STARTDT con0x87表示接受C_IC_NA_1类型100是总召唤命令group 0x20表示召唤所有数据标准定义此时主站会立即按asdu_definitions中定义的点表组装多个ASDU如M_SP_NA_1、M_ME_NB_1并发送给子站。注意若未看到Received STARTDT con说明子站模拟器未运行或端口不匹配若看到Sending Interrogation但无后续ASDU输出则检查asdu_definitions中ca值是否与子站配置一致——这是新手最常踩的坑。3.2 手动触发遥控操作从命令行下发“开关分闸”遥控是主站核心功能iec104_master_sim提供--control参数实现。假设我们要对ioa101的断路器执行分闸S/E0./iec104_master_sim --config master_config.json --control 101 0执行后主站会构造C_SC_NA_1报文类型45其中S/E位设为0并附带QUQualifier of command值。你将在日志中看到[DEBUG] Sending Single Command (C_SC_NA_1): IOA101, value0, QU6 [DEBUG] Received Single Command Ack (C_SC_NA_1): IOA101, stateACK参数含义value0对应分闸1为合闸具体映射由子站逻辑决定QU6表示“选择后执行”模式Select-Before-Operate符合安全规范stateACK子站返回确认表明命令已接收并进入执行队列。此过程完全模拟真实主站的遥控流程先选点、再执行、最后等待子站反馈。若子站返回stateNOT_ACK则主站会在日志中标记失败便于定位子站逻辑缺陷。3.3 报文级验证用Wireshark抓包对照标准字节流光看日志不够必须落到字节层面。启动Wireshark过滤tcp.port 2404然后重复一次遥控操作。抓到的报文应类似0000 68 15 00 00 00 00 2d 00 00 00 00 00 00 00 00 00 h.....-......... 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................逐字节解读关键段68启动字符Start byte15APDU长度21字节00 00类型标识Type ID 45 →C_SC_NA_100可变结构限定词VSQ0x80表示单点信息0x00表示无扩展00 00公共地址CA 100 →0x64 0x00小端序00 00 00传输原因Cause of Transmission 6 →0x06 0x0000 00 00信息体地址IOA 101 →0x65 0x00 0x0000单命令值0 分闸06品质描述符QU 6。Wireshark的IEC 104解码器会自动高亮这些字段。若发现Type ID错误如显示为100而非45说明配置文件中control_points未正确定义类型若IOA字节与配置不符则检查JSON中ioa值是否超出16位范围IEC 104规定IOA为3字节最大值0xFFFFFF。4. 主站仿真避坑指南5条血泪经验总结在多个配电自动化项目中反复打磨这套流程后我整理出最易触发、最难排查的5个典型问题。它们不是文档里写的“注意事项”而是真正在凌晨三点调试现场时让人拍桌大喊“早知道这样就不用重装三次系统”的玄学翻车点。4.1 现象主站启动后立即断开日志显示“Connection reset by peer”原因子站模拟器与主站的k最大未确认报文数和w超时时间参数不匹配。主站默认k12、w10000ms而某些老旧子站固件只支持k4、w5000ms。当主站连续发送超过4帧未确认报文时子站直接RST连接。解决在master_config.json中显式添加link_parameters字段link_parameters: { k: 4, w: 5000, t1: 15000, t2: 10000, t3: 20000 }t1/t2/t3为链路层超时参数必须与子站手册一致。4.2 现象总召唤C_IC_NA_1后子站持续发送大量重复ASDU主站CPU飙升至100%原因主站配置的asdu_definitions中多个ASDU使用了相同ioa信息体地址。IEC 104标准要求同一CA下IOA全局唯一主站解析器遇到冲突IOA时陷入死循环重试。解决用脚本校验JSON配置jq -r .asdu_definitions[].ioa master_config.json | sort | uniq -d若输出非空说明存在重复IOA需人工修正。4.3 现象遥控命令下发后子站返回stateACK但HMI画面状态未更新原因主站仿真器默认不主动轮询遥信状态仅响应总召唤和子站自发上送spontaneous。若子站未配置“变位上送”主站永远不知道开关已分闸。解决在配置中启用周期性遥信扫描非标准但实用scan_settings: { enabled: true, interval_ms: 5000, types: [M_SP_NA_1] }此功能会定期发送C_RD_NA_1读命令查询指定ASDU类型。4.4 现象使用中文路径保存master_config.json程序启动报错“Invalid UTF-8 sequence”原因libiec60870底层C库使用fopen()打开文件而部分Linux发行版glibc对UTF-8路径支持不完善尤其当路径含中文时fopen()返回NULL。解决强制使用英文路径。将配置文件放在/home/user/iec104/config/而非/home/user/IEC104主站配置/。这是最简单粗暴也最有效的后悔药。4.5 现象在Docker容器中运行主站仿真器子站连接超时但宿主机直连正常原因Docker默认网络模式bridge下容器内127.0.0.1指向容器自身而非宿主机。若子站运行在宿主机主站容器必须通过宿主机IP如172.17.0.1连接。解决启动容器时添加--network host或在配置中将ip改为宿主机在docker0网桥上的IPip addr show docker0 | grep inet | awk {print $2} | cut -d/ -f1然后在master_config.json中设ip: 172.17.0.1。5. 进阶技巧用主站仿真器做协议合规性压力测试与故障注入当基础功能跑通后“104主站仿真软件”的价值才真正释放——它不再只是“能连上”而是成为主站系统健壮性的“压力探针”和“故障发生器”。我常用三个技巧把仿真器变成不可替代的工程利器。5.1 构建千点级遥信风暴验证主站SOE处理能力真实变电站事故时可能在100ms内涌出数百个遥信变位。用iec104_master_sim模拟这种极端场景只需修改配置文件中的asdu_definitions批量生成1000个遥信点# 生成1000个遥信点配置IOA从1到1000 for i in $(seq 1 1000); do echo {\type\: \M_SP_NA_1\, \ca\: 100, \ioa\: $i, \value\: 0, \quality\: {\invalid\: false}} done | sed s/$/,/ | sed $s/,$// asdu_list.json # 拼接进master_config.json的asdu_definitions数组然后启动主站并用另一台机器运行子站模拟器配置其以10ms间隔随机翻转这1000个点。此时观察主站进程的RSS内存占用和/var/log/syslog中SOE事件入库延迟。某次测试中我们发现主站数据库写入线程在延迟超过200ms后开始丢弃事件——这直接推动了客户升级其PostgreSQL的WAL配置。5.2 故障注入模拟链路抖动与报文篡改主站必须能应对网络不稳定。iec104_master_sim虽不内置网络损伤模块但可与tcTraffic Control工具协同# 在子站所在机器上对发往主站的流量注入10%丢包和50ms延迟 sudo tc qdisc add dev eth0 root netem loss 10% delay 50ms # 测试完成后清除 sudo tc qdisc del dev eth0 root此时主站日志会密集出现Timeout waiting for response并触发重连。重点观察主站是否在重连后正确恢复总召唤遥控命令是否在重连期间被缓存并重发这些细节决定了系统在真实光纤中断场景下的可用性等级。5.3 自动化回归测试用JSON Schema校验配置合规性随着项目点表膨胀人工维护master_config.json极易出错。我建立了三层校验机制语法层jq empty master_config.json确保JSON格式正确结构层用jsonschema验证字段完整性如connection.ip必填、asdu_definitions不能为空语义层编写Python脚本检查IOA范围、CA一致性、ASDU类型与值域匹配如M_ME_NB_1的value必须是浮点数。# validate_config.py import json, sys from jsonschema import validate, ValidationError schema { type: object, required: [connection, asdu_definitions], properties: { connection: {type: object, required: [ip, port]}, asdu_definitions: { type: array, minItems: 1, items: { type: object, required: [type, ca, ioa, value], properties: { type: {enum: [M_SP_NA_1, M_ME_NB_1, C_SC_NA_1]}, ioa: {type: integer, minimum: 1, maximum: 16777215} } } } } } with open(sys.argv[1]) as f: config json.load(f) validate(instanceconfig, schemaschema) print(✅ Config valid per IEC 104 schema)将此脚本加入Git Hook每次提交master_config.json前自动执行从源头堵住低级错误。我坚持用这套方法论跑了三年从10kV配电站到220kV枢纽变没再因为主站协议层问题返工过一次。它的核心不是炫技而是把“标准”翻译成可触摸、可测量、可证伪的动作——当你能亲手构造一个让主站崩溃的报文你就真正读懂了IEC 60870-5-104。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

重装系统后,我重新整理了这些工具

重装系统后,我重新整理了这些工具

提示:以后想起什么或用到什么再分享吧 文章目录前言Snipaste-截图贴图ScreenToGif-免费屏幕录制与GIF制作工具前言 提示:这里可以添加本文要记录的大概内容: 之前在平台上发过一些工具使用的 blink,结果平台直接下线了。下线就下…

2026/10/17 0:14:56 阅读更多 →
DHCP部署全链路:从协议原理到高可用与故障排查

DHCP部署全链路:从协议原理到高可用与故障排查

先说个我自己的经历。早年间给某公司做网络改造,几十台终端的IP地址全是手工填的,运维小哥手里捏着一张Excel表格,谁入职了就翻表找空闲IP,离职了再手动回收。光一次季度新增十几台设备就能让人折腾到半夜。后来我实在看不下去&am…

2026/10/17 4:36:16 阅读更多 →
【2027最新毕设精品】基于spring boot的商品商城管理系统(附源码资料)增删改查,运行部署,选题推荐_网站项目_Java项目

【2027最新毕设精品】基于spring boot的商品商城管理系统(附源码资料)增删改查,运行部署,选题推荐_网站项目_Java项目

💖💖作者:计算机毕业设计江挽 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括…

2026/10/16 19:52:00 阅读更多 →

最新新闻

云原生功能测试实践:容器与微服务特性适配关键点

云原生功能测试实践:容器与微服务特性适配关键点

1. 项目背景与测试定位:容器化之后,功能测试到底测什么做云原生应用测试,最怕的就是一上来就扎进细节里。我接手这份“云原生应用软件功能测试报告:容器与微服务特性适配”的时候,第一反应不是急着列用例,而…

2026/10/17 4:41:13 阅读更多 →
Skill与Tool的本质区别:从执行单元到可演进认知单元

Skill与Tool的本质区别:从执行单元到可演进认知单元

1. 这不是概念辨析,而是工程现场的生存法则“Skill 为什么不同于 Tool?”——这个问题在Agent开发群里被问了37次,每次都有人贴出一段抽象定义:Tool是函数,Skill是能力封装。但真正跑通一个生产级Agent项目的工程师&am…

2026/10/17 4:41:13 阅读更多 →
开源项目周刊W38:代码评审、ADHD输出、智能体底座与文本去AI味

开源项目周刊W38:代码评审、ADHD输出、智能体底座与文本去AI味

1. 本周刊定位与内容拆解思路Github周刊这个系列我做了快两年,每周固定花三四个小时刷Trending、翻Star增速榜、蹲几个高质量作者的动态。2026年W38这一期信息密度格外高,四个项目分别踩中了代码协作、无障碍交互、智能体基础设施和内容真实性四个完全不…

2026/10/17 4:41:13 阅读更多 →
大模型参数量的本质:任务复杂度与架构约束的硬性映射

大模型参数量的本质:任务复杂度与架构约束的硬性映射

1. 这不是“堆料”,而是模型能力的物理边界“大模型的参数量为什么那么大?”——这个问题最近在技术社区、产品会议甚至高校课堂里反复出现,背后其实藏着一个被严重低估的事实:参数量不是工程师拍脑袋定的数字,而是当前…

2026/10/17 4:41:13 阅读更多 →
PySpark合成数据生成指南:从随机数到业务级假数据

PySpark合成数据生成指南:从随机数到业务级假数据

做数据开发这几年,我发现自己最常干的工作,一半是写业务逻辑,一半是“造数”。给下游团队演示报表要一批数据,给算法模型跑通流程要一批数据,给新集群做性能压测还要一批数据。真实数据牵扯内部权限和隐私管控&#xf…

2026/10/17 4:41:13 阅读更多 →
PyG自定义Data类:__inc__与__cat_dim__详解

PyG自定义Data类:__inc__与__cat_dim__详解

1. 从一次数据加载报错说起第一次在 PyTorch Geometric 里自定义Data类做小批量训练时,我遇到过一个很典型的报错:RuntimeError: The size of tensor a (5) must match the size of tensor b (4) at non-singleton dimension 0。当时排查了半天&#xff…

2026/10/17 4:40:13 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →