发布时间:2026/8/31 21:30:32
aiDgeController 软PLC虚拟机stvm集成测试报告 aiDgeController 软PLC虚拟机stvm集成测试报告测试环境:WSL Debian 13 GCC 14, X64_DBG ASAN (-fsanitizeaddress)netGate 1.1.1.3618, bin/debug 运行目录测试程序: test/plc/test_plc.c, plc_test_main.iec, plc_test_names.iecPLC 程序: ./plc/plc.iec, 10ms 周期, 4 个映射变量aidgeplc-debug-server (OpenPLC v4 协议兼容, ws://0.0.0.0:8443/api/debug)单元测试(43 通过 / 0 失败):变量映射与数据同步: SyncIn/RunOnce/SyncOut 全流程, REAL/INT 往返, 控制逻辑 (YL SD*2 40), 下限保护 (WD 30), 未写变量保持名称切分: c_d_e → 站点c.变量d_e, a_b 往返CPU 亲和力: 负数核心号拒绝, 绑定成功, 幂等性网关变量缺失: 空容器不崩溃PLC 实例: 创建防护 (程序不存在), ID/周期/状态, 销毁集成冒烟测试(25 秒运行 完整退出):配置加载 → 插件管理器 → 项目 (数据缓冲/触发器/站点/北向/转发器) → PLC 管理器 → 事件循环插件加载: serial S0, modbusRTU modbus0, localNorth localCacheN1STVM PLC 引擎就绪 (映射 4 变量), 10ms 周期运行约 2400 周期无数据竞争调试服务器独立进程 posix_spawn 拉起 PID 正常转发器 T1: site0 → localCacheN1 周期转发正常退出流程完整, ASAN 零报错WebSocket 验证(PASS):握手 10145 DE AD 00 00 → 7E MD541 DE AD 00 00 → 7E 06 00 C6 (入口 IP0, 代码 198B)测试中发现并修复的缺陷(7 项):dataSetValueEx 所有权语义矛盾 (悬空指针) — 统一为所有权接管project.c init_prj_data_cache__ 成功后误释放 value (heap-use-after-free)plcMission SIGEV_THREAD 重入风险 — busy 原子标志plcStop 未等待 in-flight 周期 — 轮询等待 busy 清零serial 释放时 join 未创建线程 — ASAN CHECK 崩溃tinySeqFile_push fwrite(new_idx) 栈越界release_project__ / clearAll 对 p_cache 双重释放 (gGlobal.p_data)cacheW.c SetOption 缺 PLUG_OPT_SET_ITFC 分支 / 转发器目标配置错误 / plugMgr desc 空指针遗留/注意事项:WSL 环境无 /dev/ttyS5, 串口未运行 (预期)drv/ 插件 .so 需手动部署build-asan 与 build-wsl 共写 bin/debug 的污染问题detect_leaks0 (长驻进程清理顺序未全面审计, 泄漏检测未启用)结论: 通过Also unit test fixes during test development: test_plc 链接符号强制拉取, 名称切分测试用例错误等 — those were part of test development, can mention briefly.Format: concise markdown report. Use file links where relevant. Keep it reasonably compact but complete — this is a report, so some length is justified. Use tables where helpful.软 PLCSTVM集成测试报告摘要项目 cNetgate-stable |版本 NETGATE 1.1.1.3618 |日期 2026-08-29测试环境 WSL Debian 13 GCC 14X64_DBG 构建全程启用 AddressSanitizer被测范围 STVM 软 PLC 引擎[stvmPlc.cpp](file:///e:/work/development/netgate/cNetgate-stable/iec61131_3c/stvmPlc.cpp)、PLC 实例管理[plc.c](file:///e:/work/development/netgate/cNetgate-stable/iec61131_3c/plc.c)、netGate 全链路集成、WebSocket 调试服务器一、单元测试43/43 通过测试程序 [test_plc.c](file:///e:/work/development/netgate/cNetgate-stable/test/plc/test_plc.c)用例程序plc_test_main.iec/plc_test_names.iec模块覆盖点结果数据同步SyncIn → RunOnce → SyncOut 全流程控制逻辑YLSD*240、下限保护WD30、未写变量保持原值通过类型支持REAL / INT 往返一致a_b 51 6通过变量映射站点号_变量名首下划线切分、变量名含下划线c_d_e → 站点c.变量d_e 14.5通过CPU 亲和力负数核心号拒绝、绑定成功、重复绑定幂等通过容错网关变量缺失/空容器不崩溃、程序文件不存在创建失败通过实例管理ID/周期/状态查询、修改周期、销毁不崩溃通过二、集成冒烟测试通过./netGate -c etc/config.json运行 25 秒 SIGTERM 完整退出启动链路全部 OK配置 → 插件管理器 → 项目数据缓冲/触发器/站点/北向/转发器→ PLC 管理器 → 事件循环PLC引擎就绪映射 4 变量10ms 周期连续运行约 2400 周期无数据竞争、无内存错误插件serial(S0)、modbusRTU(modbus0)、localNorth(localCacheN1) 全部加载登记成功转发器 T1site0 → localCacheN1 周期转发正常本地缓存写入正常调试服务器独立进程 posix_spawn 拉起/退出正常退出流程PLC 停止等待在飞行周期→ 插件 → 数据缓存 → 全部清理完成ASAN 零报错三、WebSocket 调试服务器验证PASS连接ws://127.0.0.1:8443/api/debugOpenPLC v4 兼容协议命令响应结果握手HTTP 101 Switching Protocols通过45 DE AD 00 00取 MD57E 32 字节哈希通过41 DE AD 00 00调试信息7E 06 00 C6...入口 IP0代码 198B与服务器日志一致通过四、测试过程中发现并修复的缺陷8 项#缺陷修复严重度1dataSetValueEx新旧变量所有权语义矛盾SyncOut 后悬空指针统一为所有权接管删除多余releaseValue高2[project.c](file:///e:/work/development/netgate/cNetgate-stable/src/project/project.c) 初始化成功后误释放 value → PLC SyncIn 堆 UAF删除错误释放高3SIGEV_THREAD 定时器周期回调可重入周期 执行耗时[plcMission](file:///e:/work/development/netgate/cNetgate-stable/iec61131_3c/plc.c#L371-L374) 原子忙标志跳过重入中4停止时销毁引擎与在飞行周期竞态[plcStop](file:///e:/work/development/netgate/cNetgate-stable/iec61131_3c/plc.c#L284-L289) 轮询等待 busy 清零≤1s中5串口未启动时pthread_join无效线程 ID → 退出崩溃增加“已创建”标志防护中6[tinySeqFile.c](file:///e:/work/development/netgate/cNetgate-stable/src/localCache/tinySeqFile.c#L253-L255)fwrite(ptr,...)写指针而非结构体 → 栈越界改为fwrite(new_idx,...)高7p_cache与gGlobal.p_data双重释放 → 退出 UAF/mutex 断言释放时同步清空全局指针高8localNorth 缺PLUG_OPT_SET_ITFC分支、转发器目标指向已删接口、插件描述 NULL 解引用分别补齐处理/修正 prj.json/空指针检查中五、结论软 PLC 集成测试通过。单元测试全覆盖核心逻辑25 秒高频率100Hz集成运行与完整退出流程在 ASAN 严密检测下零内存错误测试中暴露的 8 项缺陷含 4 项高危内存问题均已修复并回归验证。具备交付条件。

相关新闻

2026/8/31 21:30:32

R 基础语法:从入门到实战的完整指南

1. R 语言简介R 是一种用于统计计算和数据分析的编程语言,广泛应用于数据科学、统计分析、机器学习等领域。R 语言以其强大的数据处理能力、丰富的可视化功能和活跃的开源社区而著称。本文将从基础语法入手,通过大量代码实例帮助读者快速掌握 R 的核心用…

2026/8/31 21:30:32

Android校招笔试高频考点与解题策略:从HashMap到Handler机制深度解析

1. 这套笔试到底在考什么1.1 从招聘视角看360的出题逻辑先说个题外话。看到“2019校招笔试”这个年份,可能有人会觉得“都过去这么久了,还看它干嘛”。如果你真这么想,那就亏大了。校招题库这玩意儿跟流行时尚不一样,它的核心考点…

2026/8/31 21:30:32

日系与德系数控机床对决:从数控系统到选型全解析

在制造业圈子里,只要聊到高端数控机床,“日系”和“德系”这两个阵营就会被反复拿到台面上比较。很多人问我的第一句话就是:日本和德国数控机床,到底谁更强?这个问题如果简单回答“日本强”或“德国强”,其…

2026/8/31 21:45:33

稻百年胖东来研学 以爱深耕餐饮经营

受访人:廖翠 经营者 山西大宅第餐饮有限公司这些年我最深切的感悟是:坚持学习的企业,和固步自封的企业,终将走出截然不同的发展路径。近几年,我始终保持持续学习的心态,不断精进经营认知。这次我走进稻百年…

2026/8/31 21:45:33

基于SSH框架的百货中心供应链管理系统设计与实现详解

简介:本资源是一套面向高校计算机专业本科生毕业设计与课程实训的完整供应链管理系统实现方案,基于JavaEE平台,采用SSH(Struts2SpringHibernate)经典三层架构,结合MySQL数据库构建百货中心级供应链业务模型…

2026/8/31 21:45:33

STWIN.box外部速度传感器触发数据采集实践——基于DATALOG2固件

手里有一块STWIN.box,又恰好遇到需要“用外部速度传感器的脉冲信号触发数据采集”这种需求,那你大概率已经体会过那种尴尬:设备一直在录,SD卡里堆满了“什么都没发生”的数据,真正想要的故障特征反而被淹没在冗余数据里…

2026/8/31 21:45:33

STM32设备端微调:608字节优化器与健康监控实战

1. 为什么是608字节:设备端微调的第一性问题先说个容易被忽略的事实:STM32上跑推理和跑微调,是两个完全不同的世界。推理只需要前向传播,权重固定不变,Flash里烧一份模型,RAM里开几个buffer就能转起来。但微…

2026/8/31 1:05:20

vSound小提琴数字处理器实操指南:从接线到演出的完整配置

电小提琴或者原声小提琴插电演出,第一个绕不开的坎就是声音难听。原声琴的共鸣和空气感一旦进了拾音器,出来的往往是一坨干瘪、发尖、带着奇怪塑料味的信号。我当初第一次把琴接上乐队调音台,直接被主唱吐槽"你这声音像在锯钢丝"。…

2026/8/31 2:14:20

传感器接口IC如何攻克生物化学传感的微弱信号难题?

1. 从电极到比特流:为什么生物化学传感必须依赖专用接口IC 做生物化学传感的人都有过类似的经历:明明传感器本身性能很好,信号输出却一塌糊涂——噪声大、漂移明显、重复性差,怎么调都达不到预期。很多时候问题并不在传感器&#…

2026/8/31 1:41:28

STM32F411CEU6多通道ADC采集:扫描模式+DMA实现详解

1. 多通道 ADC 的用武之地把“Multichannel ADC”和“STM32F411CEU6”这两个关键字放在一起,其实就是嵌入式开发里最常遇到的一类需求:用一块不算贵的 MCU,同时采集多路模拟信号。STM32F411CEU6 是 48 引脚的 Cortex-M4F 主控,主频…

2026/8/31 0:07:32

STM32C5设备支持包(IAR DFP)安装指南与常见坑

上一阵子在IAR里折腾一块基于STM32C5系列的新板子,工程从STM32CubeMX导出来之后怎么都编译不过。报错信息很干脆:找不到设备描述文件。跟着错误路径去查,发现指向的是一个让我愣了一下的名字:STMicroelectronics.stm32c5xx.2.1.0.…

2026/8/31 0:07:32

STM32N657 SWO引脚矛盾:CubeMX显示PB3,数据手册为PB5

拿到STM32N657这颗料的第一天,我就撞上了一个让人原地懵圈的引脚矛盾:CubeMX里清清楚楚显示SWO在PB3,翻开数据手册的引脚说明表,却赫然写着PB5。对于一个靠SWO输出调试日志吃饭的人而言,这种"工具和手册打架"…

2026/8/31 12:44:45

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/31 9:19:59

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/31 6:53:02

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…