92、嵌入式系统累积认证内核:设计、实现与评估

嵌入式系统累积认证内核:设计、实现与评估

1. 引言

在嵌入式系统中,应用固件的完整性审计至关重要。通过在核内存中记录系统上安装的应用固件版本的连续序列,并在认证操作期间向验证者提供该审计日志的签名版本,可以实现审计。本文将介绍一种可完全在固件中实现的认证内核设计,并对其进行评估。

2. 系统设计与运行机制

2.1 认证流程

当处理器复位或应用固件需要时,内核会被调用。内核会计算当前应用固件的哈希值,并将其与最新的审计日志条目进行比较。如果不同,则在日志中添加新条目,最后将控制权转移给应用程序。当远程实体请求应用固件版本的审计日志时,主程序会向内核发送 Quote 命令,内核返回固件审计日志及其签名,将审计日志与生成它的嵌入式系统关联起来。

2.2 前向完整性问题

当前设计不提供前向完整性,因为攻击者如果破坏主密钥或认证密钥,就可以伪造日志以显示任意系统历史。提供删除检测前向完整性的设计可以防止攻击者在不被检测的情况下修改或删除过去的条目,但这需要额外的开销,如每个条目使用消息认证码(MAC)、额外的条目数据和相关基础设施,这会减少日志可存储的条目数量,在某些嵌入式系统应用中的实用性存疑。

3. 原型实现

3.1 硬件组件

  • Atmel ATSTK600 开发套件,包含 AVR32 AT32UC3A0512 微控制器,供电电压 3.3V。
  • Schweitzer Engineering Laboratories SEL - 734 变电站电表,具有 RS - 232 Modbus 数据接口,作为连接到 AVR32 微控制器的现实数据源。
  • 标准桌面 PC,通过 Java 应用程序通过 RS - 232 串口向 AVR32 微控制器发送 Modbus 命令。
  • 一对 ZigBee 无线电,用于在 PC 和 AVR32 微控制器之间中继 RS - 232 数据。

3.2 应用固件

准备了两个应用固件映像,都实现了 Modbus 主从接口。主接口通过 RS - 232 串口与电表通信,从接口通过 ZigBee 链路接受来自 PC 的命令,将其传递给内核或直接处理(如果是请求电表数据)。第一个映像准确中继电表数据,第二个映像将所有电表读数减半,模拟恶意固件。

3.3 内核固件

  • 调用与接口 :内核在处理器复位和应用固件需要时被调用,使用 AVR32 scall 指令实现应用与内核之间的简单系统调用风格接口。
  • 算法实现 :TinyECC 提供 SHA - 1 哈希和椭圆曲线密码学(ECC)的软件实现,未针对 AVR32 进行显著优化。伪随机数由 Mersenne Twister 生成,商业实现需要真正的随机数生成器(RNG)。
  • 内存占用 :除了加密和 Atmel 提供的驱动程序外,内核约由 1620 行 C++ 代码组成,包括 13 行内联汇编。内核消耗 81312 字节的程序内存,预留 88KiB 闪存存储内核代码,40KiB 存储持久数据。使用 10872 字节的 SRAM 存储静态数据,392B 用于堆,1KiB 用于栈,总共 12KiB 的 SRAM 用于内核。在该原型中,最大应用固件映像大小为 191.5KiB。商业内核实现将比未优化的原型在闪存和 SRAM 上更紧凑,并且可以通过巧妙的交换方案在不活动时有效消除内核的 SRAM 消耗。审计日志可记录多达 107 次升级和事件,之后会溢出。

3.4 性能比较

将仅固件原型(集成 CRAESI)与 Atmel AT97SC3203 TPM 执行类似操作所消耗的能量和时间进行比较。TPM 使用 2048 位 RSA 密钥对 PCR 进行签名,提供相当于 224 位 ECC 密钥的安全性,优于集成 CRAESI 中使用的 192 位 ECC 密钥的安全性。由于使用硬件,TPM RSA 签名生成机制的能耗与集成设计中的 ECC 软件实现大致相同。集成 CRAESI 支持的椭圆曲线 Diffie - Hellman 密钥交换在 TPM 辅助的 CRAESI 中不被支持,但可能可以用等效功能替代。TPM 的最大效率缺点是空闲时消耗 10.6mW,虽然可以将其置于深度睡眠状态以减少持续负担,但在测试系统中未实际操作,且可能存在未研究的安全后果。

以下是性能比较的表格:
| 系统 | 空闲能耗 | 安全性 | 支持功能 |
| — | — | — | — |
| 集成 CRAESI | 可忽略不计 | 192 位 ECC 密钥 | 椭圆曲线 Diffie - Hellman 密钥交换 |
| TPM 辅助 CRAESI | 10.6mW | 224 位 ECC 等效(2048 位 RSA 密钥) | 不支持椭圆曲线 Diffie - Hellman 密钥交换 |

2.5 实验的实际影响

假设短期内要部署 530 万个高级电表。如果安装 AT97SC3203 TPM,即使它们一直闲置,每年也将消耗 492136 kWh,按每 kWh 0.07 美元计算,每年供电成本约为 34450 美元。而如果使用集成 CRAESI,在复位或实际使用之前不会消耗能量。假设每个电表每天进行一次认证,TPM 每年在执行报价操作时除了空闲能耗外至少消耗 31651 kWh,集成 CRAESI 每年执行类似操作消耗不到 32489 kWh,且空闲能耗可忽略不计。

4. 正确性和容错性分析

4.1 模型检查方法

使用 Maude 模型检查器确保设计满足关键安全要求。首先将设计转换为重写逻辑模型,用重写规则表示状态之间的转换,然后将设计要求的各个方面表示为定理,转换为 LTL 公式并使用模型检查器进行检查。

4.2 定理验证

4.2.1 应用固件升级的正确性和可审计性

定理 1 :在任何修改活动应用固件映像的操作结束时,审计日志会更新以准确反映新状态。如果进行了选择性升级(非回滚),则会缓存先前的活动应用固件映像。
证明过程中,检查了所有可能的升级和回滚操作的正确性,以及每次操作后固件审计日志是否正确更新。通过以下五个引理检查了六个不同的升级和回滚操作情况,这些情况代表了所有可能的升级和回滚操作。
- 引理 1 :如果未执行升级操作,则应用程序活动时,映像 #0 处于活动状态。
- 引理 2 :如果已安装映像 #1,且尚未执行其他升级或回滚操作,则应用程序活动时,映像 #1 处于活动状态,映像 #0 被缓存。
- 引理 3 :如果已安装映像 #2 替换映像 #N,且尚未执行其他升级或回滚操作,则应用程序活动时,映像 #2 处于活动状态,映像 #N 被缓存。
- 引理 4 :如果在回滚时映像 #0 被缓存,则回滚后到下一次升级操作之前,应用程序活动时,映像 #0 处于活动状态。
- 引理 5 :如果在回滚时映像 #1 被缓存,则回滚后应用程序活动时,映像 #1 处于活动状态。
- 引理 6 :应用程序活动时,当前审计日志条目与活动应用固件相对应。

4.2.2 容错应用固件升级机制

定理 2 :执行任何应用固件升级操作,只要处理器不会永远持续复位,最终都会在应用程序随后激活时使预期的应用固件映像被缓存并处于活动状态,无论在升级过程中处理器复位多少次。通过对非确定性电源故障进行建模,允许它们在升级过程的任意点发生,模型检查器对所有电源故障组合进行了详尽搜索,验证了只要电源故障不会永远持续发生,应用固件升级过程最终总会成功。在实际硬件上通过在升级过程中反复按下复位按钮进行测试,验证了它最终仍然成功,但无法像模型检查器那样对所有可能的中断点进行详尽测试。

4.2.3 容错持久配置数据存储机制

定理 3 :文件系统能正确处理任何事务,只要处理器不会永远持续复位,无论在事务处理过程中处理器复位多少次。
证明时需表明无论事务在关键点之前是否被中断,都能提供事务语义。关键点是处理器执行使文件系统冗余副本中的第一个金丝雀无效的指令时。
- 引理 7 :如果事务在关键点之前被中断,执行任何文件系统事务最终都会恢复到原始文件系统状态。
- 引理 8 :如果事务在关键点之后首次被中断或根本未被中断,执行任何文件系统事务会导致事务成功完成后预期的文件系统状态。

以下是应用固件升级流程的 mermaid 流程图:

graph TD;
    A[开始升级] --> B{是否有电源故障};
    B -- 否 --> C[继续升级];
    B -- 是 --> D{电源故障是否持续};
    D -- 否 --> C;
    D -- 是 --> E[升级失败];
    C --> F{升级是否完成};
    F -- 是 --> G[缓存并激活新固件];
    F -- 否 --> B;

通过上述验证,模型检查器未发现所建模的实现部分存在错误,增加了对这些实现部分正确性的信心。

5. 相关工作

5.1 Linux 完整性测量架构(Linux - IMA)

它支持 Linux 平台的远程认证,利用现代桌面和笔记本电脑中部署的 TPM 来记录系统配置,并向授权的远程挑战者提供该配置信息的签名副本。不过,它仅维护系统自上次复位以来的配置信息。

5.2 移动电话工作组参考模型

该模型由可信计算组内的移动电话工作组提出,涉及移动设备的配置控制和完整性测量。它建议使用移动本地所有者可信模块(MLTM)来实现 TPM 的功能,同时考虑到移动设备的资源限制,使 TPM 的许多操作变为可选。此外,还建议使用基于 MLTM 设计的移动远程所有者可信模块(MRTM),该模块根据证书控制系统某些区域可以运行的代码,并且可以通过 ARM TrustZone 硬件安全扩展以软件形式实现。

5.3 Terra 架构

Terra 将虚拟化和认证相结合,提供应用程序隔离和对“封闭盒”虚拟机的支持,可通过远程认证进行观察。这种架构可以扩展为支持累积认证,适用于嵌入式系统。

5.4 SWATT 方法

用于验证嵌入式系统的内存内容,其基本操作模型假设存在一个外部验证器,该验证器需要知道待验证嵌入式系统中安装的精确硬件类型,并通过低延迟通信链路连接到该系统。但在许多嵌入式系统安装中,这种低延迟通信链路并不存在。此外,它无法保证嵌入式系统的持续正常运行,并且要求被验证的系统不能将计算任务卸载到外部设备(防止代理攻击),而嵌入式系统通常运行在不满足此假设的网络中。

5.5 ReVirt 和 DejaView 项目

ReVirt 项目表明,在虚拟机中运行的全功能桌面或服务器系统的执行信息可以被维护,足以重放系统在发生故障之前执行的精确指令序列,以便进行调试。DejaView 使用内核级方法进行进程记录,允许在任意点搜索和重启桌面会话。虽然这些技术可能支持桌面和服务器的累积认证内核,但可能无法在系统的足够长生命周期内存储累积信息以发挥作用。

5.6 已认证追加只读内存(A2M)和可信增量器项目

A2M 在隔离组件中维护内核事件的累积记录,为拜占庭容错复制状态机提供支持。其架构建议主要面向服务器应用,但展示了除应用固件身份之外的已认证信息的有用性。可信增量器项目表明,A2M 和许多其他有趣系统的可信计算基(TCB)可以简化为一组简单的计数器、密码学和在称为“小饰品”的可信硬件组件中实现的基于认证的 API。当前设计可以进行调整,以在固件中提供类似功能,并可能具有不同的威胁模型。

5.7 其他相关设计特点

硬件安全协处理器的安全问题主要源于其 API 的复杂性。为了便于分析并减少漏洞的发生,本文提出的设计导出了非常简单的 API,并使用模型检查器分析了该设计的安全性。此外,之前使用模型检查器显式建模系统可能发生的故障并验证系统容错能力的方法仅给出了逻辑故障(如消息丢失)的示例,而本文分析了系统对物理故障(如电源故障)的容错能力。

以下是相关工作对比表格:
| 相关工作 | 主要功能 | 适用场景 | 局限性 |
| — | — | — | — |
| Linux - IMA | 支持 Linux 平台远程认证,记录系统配置 | Linux 桌面和笔记本电脑 | 仅记录自上次复位后的配置信息 |
| 移动电话工作组参考模型 | 移动设备配置控制和完整性测量 | 移动设备 | 受移动设备资源限制 |
| Terra | 结合虚拟化和认证,支持“封闭盒”虚拟机 | 嵌入式系统 | - |
| SWATT | 验证嵌入式系统内存内容 | 嵌入式系统 | 需要特定通信链路,无法保证持续运行 |
| ReVirt 和 DejaView | 记录系统执行信息,支持进程记录和会话重启 | 桌面和服务器系统 | 可能无法长期存储累积信息 |
| A2M 和可信增量器项目 | 维护内核事件累积记录,简化可信计算基 | 服务器应用 | 主要面向服务器 |

6. 结论

本文提出了用于带闪存微控制器单元(MCU)的嵌入式系统累积认证内核的要求,通过在内核内存中记录系统上安装的应用固件版本的连续序列,并在认证操作期间向验证者提供该审计日志的签名版本来实现应用固件完整性审计。这种认证模型适用于传感器和控制系统的应用,并提出了一种可完全在固件中实现的认证内核设计。

原型累积认证内核在中低端 32 位闪存 MCU 上具有成本效益和能源效率,无需微控制器制造商的特殊支持即可实现。使用模型检查器验证了该原型满足重要的正确性和容错性属性。

以下是整个系统的优势列表:
1. 适用性 :适用于传感器和控制系统等嵌入式系统应用。
2. 成本效益 :可在中低端 32 位闪存 MCU 上实现,无需特殊支持。
3. 能源效率 :相比 TPM 辅助的系统,空闲能耗低,整体能耗也更具优势。
4. 正确性和容错性 :通过模型检查器验证,满足重要的正确性和容错性属性。

综上所述,该嵌入式系统累积认证内核设计具有良好的应用前景和实际价值。

graph LR;
    A[嵌入式系统] --> B[累积认证内核设计];
    B --> C[应用固件完整性审计];
    C --> D[满足应用需求];
    B --> E[原型实现];
    E --> F[成本效益和能源效率];
    E --> G[正确性和容错性验证];
    G --> H[具有实际价值];
人形机器人2026量产元年:从供应链确定性看制造落地 人形机器人作为新一代智能终端,其产业化进程已超越概念验证阶段,进入以制造确定性为核心的量产攻坚期。其技术本质是多物理场耦合(热-力-电-磁)下的精密机电系统集成,依赖高CPK过程能力、微米级加工节拍、VMI级供应链协同与硬实时控制等底层工程能力。行业高频搜索关键词如‘人形机器人量产’‘2026时间点’‘供应链落地’正反映出市场关注重心从算法模型向产线实绩迁移。本文聚焦真实产线中的毫米级公差、毫秒级响应与毫克级材料控制,解析谐波减速器齿隙CPK、五轴铣削0.005mm稳定性、IMU陶瓷基板温漂抑制等关键约束, 阅读详情

相关推荐

极简工程信条:用Nothing Impossible重构技术决策

在嵌入式与边缘AI开发中,'精简设计'和'确定性边界'是保障系统可靠性的基础概念。其核心原理在于以可量化指标约束开发行为,通过内存零冗余、代码零装饰、依赖零假设实现工程减法,并借助时间/资源/物理三重验证确立不可逾越的确定性边界。这种范式不仅提升性能与稳定性,更显著降低维护成本和故障定位难度,广泛适用于工业视觉检测、OTA固件升级、实时推理部署等对确定性要求严苛的场景。本文即基于'Nothing Impossible'这一可执行信条,展开从理念到工具链的完整落地实践。

世范水晶 550

GLM-5:面向智能体工程的国产AI操作系统解析

大语言模型正从‘文本生成工具’演进为具备目标驱动、环境交互与自主验证能力的智能体(Agentic AI)。其核心突破在于工程化落地能力——不再依赖人工提示编排,而是通过动态稀疏注意力(DSA)、异步强化学习(Asynchronous RL)和可执行环境SFT等技术,实现长程任务闭环。这类模型需在真实软硬件环境中持续决策、调试与验证,典型如手搓GBA模拟器。技术价值体现在降低KV Cache带宽瓶颈、提升RL训练稳定性、构建语义坐标系等底层优化;应用场景覆盖嵌入式开发、终端自动化、多模态内容生成等高确定性工程

dflkg8956的专栏 429

宇树科技IPO背后的国产运动控制系统突围之路

运动控制系统是具身智能机器人的核心中枢,其性能直接决定动态平衡、实时响应与复杂环境适应能力。其技术原理涵盖经典PID、模型预测控制(NMPC)及虚实协同架构,依赖高实时性RTOS、异构计算平台与多源传感器融合。在国产替代加速与硬科技产业化深化的双重驱动下,该系统正从实验室算法走向工业级可靠部署,技术价值体现在成本压缩、可靠性跃升与场景闭环验证能力上。典型应用场景覆盖电力巡检、应急搜救、风电运维等强需求领域。本文以宇树科技G1四足机器人为范本,深度解析其运动控制三级架构演进、NMPC工程化七道关卡及关键零部件

weixin_33693070的博客 379

【信息科学与工程学】【数据科学】数据科学领域 第六篇 算法设计 01

算法设计

weixin_49199313的博客 1503

【企业管理】【管理科学】企业全岗位综合运营与组织知识矩阵体系01

岗位类别核心职责工作内容(详细)协作模式协商焦点博弈策略信任建立机制序列化工作流程关键绩效指标研发类​技术创新与产品开发1.需求分析:R=f(U,M,T) 2.概念设计:C=D(S,B) 3.原型开发 4.测试验证 5.文档编写敏捷团队、跨功能协作技术方案、资源分配、优先级纳什均衡:ui​(si​,s−i​)≥ui​(si′​,s−i​)代码审查、技术分享、结果透明瀑布模型/敏捷迭代1.专利数量P 2.技术就绪度TRL 3.缺陷密度D<0.1/KLOC其中:U=用户需求,

weixin_49199313的博客 745

【信息科学与工程学】计算机科学与自动化——第十篇 芯片设计30 芯片中的数学1

所有涉及货币流动的岗位都受到严格的法律法规和行业准则约束,包括中国人民银行的各项货币政策工具管理规定、银行间市场交易规则、支付清算系统管理办法以及企业司库管理的相关指导意见。:在货币流动链条中,距离资金源头(央行投放)或关键流转节点越近的岗位,对资金的控制力、经手规模和影响力越大。处于资金流转的“管道”中,虽不直接决定资金量,但负责海量资金交易的安全、准确、高效清算,是货币流通的“基础设施”维护者。《关于规范金融机构资产管理业务的指导意见》(资管新规),要求信托业务打破刚性兑付,向净值化、标准化转型。

weixin_49199313的博客 415

【信息科学与工程学】计算机科学与自动化——第三十五篇 调度理论和调度算法01——资源调度算法

算法逻辑

weixin_49199313的博客 688

【信息科学与工程学】【数据科学】数据科学领域 第六篇 算法设计 07 堆、栈、表、矩阵、集合、队列、数组、字符串、树、图、动态规划、结构体、元组的算法01

当前段必须包含所有字符的最后出现位置。1. 字符串分割成最多片段2. 基因序列功能域划分3. 文本段落划分4. 音频声道分离5. 图像色彩分区6. 社交网络社群划分7. 蛋白质结构域8. 音乐乐章分段9. 代码模块划分10. 章节划分特征:一次扫描,贪心确定边界。

weixin_49199313的博客 1278

【信息科学与工程学】【制造工程】第三十六篇 机械工程与自动化101

本系统通过多模型集成、知识增强、主动学习和持续优化等关键技术,实现了高效、高质量的自动化文本语料标注。系统采用模块化设计,支持灵活扩展,能够处理不同类型的文本数据,适应多样的标注需求。

weixin_49199313的博客 973

【信息科学与工程学】计算机科学与自动化—第十五篇 云计算 11 算法篇02

但若第一个应用需求40GB/s,第二个10GB/s,总需求50GB/s>40GB/s,第一个得32GB/s,第二个得8GB/s,不公平。但若分区负载不均(分区1-2各有100任务/s,分区3-4各有50任务/s),A负责1-2(200/s),B负责3-4(100/s),仍均衡。任务 τi​ 的计算需求 Wi​(CPU周期),在频率 f 下执行时间 Ti​=Wi​/f,能耗 Ei​=Pdyn​⋅Ti​=Ceff​⋅V2⋅f⋅(Wi​/f)=Ceff​⋅V2⋅Wi​。若 Mneed​>Mi​,需使用远程显存。

weixin_49199313的博客 110

【信息科学与工程学】【控制科学】第十二篇 微型计算机控制技术01

更精确的经典模型:I1在第5周期WB结束,I2最早可在第6周期进入EX,但I2在ID阶段就需要R1,因此I2的ID需在第6周期,而I1的WB在第5周期,所以I2的ID可以紧接在第6周期,但中间仍有一个stall(因为I1的EX结果要等到MEM之后才能转发给ID?有优先级继承后,Task_L被提升优先级,不会被Task_M抢占,阻塞时间缩短为Task_L剩余执行时间(9ms),仍可能超过10ms,但可通过调整任务周期或使用中断处理缓解。电感L=10μH,输出电容C=100μF,ESR=5mΩ。

weixin_49199313的博客 8644

国央企创新负责人如何通过平台提升技术需求挖掘与资源配置的精准性?.docx

国央企创新负责人如何通过平台提升技术需求挖掘与资源配置的精准性?

两路半桥LLC谐振变换器软开关Simulink仿真(模拟谐振参数不同、分裂电容)

内容概要:本文介绍了“两路半桥LLC谐振变换器软开关Simulink仿真”资源包,重点在于基于Simulink平台对两路半桥LLC谐振变换器进行高精度建模与动态仿真,特别考虑了谐振参数不一致及分裂电容等非理想工况对系统性能的影响。该仿真模型不仅涵盖了主电路拓扑、软开关实现机制与谐振网络设计,还深入分析了不同参数配置下系统的启动特性、稳态效率、动态响应及软开关条件的满足情况。通过参数扫描与对比仿真,帮助用户掌握LLC变换器的关键设计要素与优化方法,具备较强的工程指导价值和科研教学意义。; 适合人群:电力电子、电气工程及其自动化等相关专业的高校师生,以及从事高频开关电源、新能源变换器、车载充电机等领域的研发工程师和技术人员。; 使用场景及目标:① 掌握两路并联半桥LLC谐振变换器的建模与仿真方法;② 理解软开关技术在提升变换器效率与降低EMI方面的关键作用;③ 分析谐振参数偏差与分裂电容结构对系统均流特性、增益曲线及软开关范围的影响;④ 支持科研项目中的拓扑验证、控制策略开发与故障工况分析; 阅读建议:建议结合Simulink仿真模型与配套说明文档进行学习,重点关注谐振腔参数设置、驱动时序设计及软开关波形观测;可通过调整谐振电感、电容值或引入参数失配,观察系统行为变化,深入理解LLC变换器的稳定边界与优化设计原则。

双向全桥CLLC谐振变换器仿真模型(Simulink仿真实现)

内容概要:本文系统介绍了双向全桥CLLC谐振变换器的Simulink仿真模型,重点阐述了变频控制、闭环仿真及其与多种电力电子拓扑(如维也纳整流器、DAB变换器、图腾柱PFC等)的联合仿真设计。资源包涵盖2.5kW双向全桥LLC、V2G电动汽车充放电系统、三相PFC、多相交错LLC等多种变换器的仿真案例,并深入展示了三电平VIENNA整流器在双闭环PI控制与SVPWM调制策略下,结合上下电容电压差值补偿实现中点电位平衡的先进控制方法。通过仿真验证,该策略不仅有效维持了800V直流母线电压的稳定,还在动态工况下显著提升了电容电压的均衡度,同时保持了较低的输入电流THD,充分体现了SVPWM与中点平衡控制协同优化的技术优势。; 适合人群:具备电力电子与自动控制理论基础,从事新能源发电、电动汽车、工业电源、微电网等领域的研究生、工程师及科研人员。; 使用场景及目标:① 学习并构建高频谐振变换器(如LLC、CLLC)的Simulink仿真模型,掌握其变频与混合控制策略;② 深入理解并应用中点电位平衡、双闭环PI控制、SVPWM调制等核心技术于VIENNA等三电平变换器中;③ 复现高水平期刊论文中的控制算法,服务于科研项目申报、学术论文撰写或工程产品开发。; 阅读建议:该资源为综合性仿真资料库,建议使用者结合自身研究方向(如电动汽车充电、新能源并网)选择对应案例进行精学,重点关注控制策略的设计逻辑、仿真参数的整定方法以及SVPWM与中点平衡的协同机制,并充分利用附带的计算书和参考文献深化理解,以实现从仿真模型到实际工程应用的顺利转化。

全桥LLC谐振(变频+移相混合控制)变换器闭环仿真模型(Simulink仿真实现)

全桥LLC谐振(变频+移相混合控制)变换器闭环仿真模型(Simulink仿真实现)

虚拟同步发电机(VSG)惯量阻尼自适应控制仿真模型(simulink仿真实现)

内容概要:本文提供了“虚拟同步发电机(VSG)惯量阻尼自适应控制仿真模型”的Simulink仿真实现方法,系统阐述了如何通过仿真手段研究VSG在电力系统中的动态响应特性,重点聚焦于其惯量与阻尼的自适应控制策略。文中详细说明了模型构建流程,涵盖控制算法设计、参数调节、根轨迹分析等内容,并通过对比不同调节系数下的系统响应,深入探讨了控制参数对系统稳定性与动态性能的影响。该仿真模型有效复现了VSG模拟传统同步发电机惯性与阻尼特性的能力,对于提升新能源并网系统的频率稳定性和抗扰动能力具有重要研究价值。; 适合人群:具备电力系统、自动化或相关领域基础知识,从事新能源并网、微电网控制、电力电子与电力系统仿真研究的研究生、科研人员及工程师。; 使用场景及目标:①用于教学与科研中深入理解虚拟同步发电机的工作原理及其在现代电力系统中的应用;②为新能源发电系统接入电网时的稳定性分析与控制策略设计提供仿真验证平台;③支持对VSG控制参数进行优化,提升系统应对负荷波动和扰动的能力。; 阅读建议:建议读者结合Matlab/Simulink软件动手实践,按照文档结构逐步搭建仿真模型,重点关注控制环路设计与参数整定部分,同时参考提供的代码与仿真结果进行对比分析,以加深对VSG自适应控制机制的理解。

两相交错并联Boost电路仿真模型(Simulink仿真实现)

内容概要:本文介绍了“两相交错并联Boost电路仿真模型(Simulink仿真实现)”的技术资源,属于电力电子变换器领域的仿真研究内容。该模型基于Simulink平台构建,旨在深入分析两相交错并联Boost电路的工作原理、动态响应特性及控制策略。交错并联结构通过错开各相开关管的导通时刻,有效降低输入电流纹波、提升系统效率与功率密度,适用于中高功率DC-DC变换应用场景。资源包含完整的主电路建模、PWM驱动信号生成、闭环控制器设计(如电压/电流双闭环控制)等关键模块,并可能涵盖软启动、均流控制等关键技术问题。整个仿真模型强调理论分析与工程实践的紧密结合,不仅有助于理解电路基本行为,也为优化控制算法提供验证平台,服务于科研与教学需求。; 适合人群:电气工程、自动化、电力电子及相关专业的高校本科生、研究生,以及从事电源系统研发的工程技术人员,具备一定的电路理论、自动控制原理和Simulink仿真基础者更佳。; 使用场景及目标:① 学习和掌握两相交错并联Boost电路的拓扑结构、工作机理及性能优势;② 利用Simulink进行电力电子电路的建模与仿真,深入理解PWM控制、闭环调节、均流控制等核心技术的应用;③ 为科研项目、课程设计或毕业设计提供可复用的仿真案例和技术支持,辅助开展中高功率电源系统的创新设计与优化研究。; 阅读建议:建议结合Simulink软件动手搭建并调试模型,通过调整占空比、开关频率、电感参数等变量,观察其对输入电流纹波、输出电压稳定性及动态响应的影响,以深化对电路特性的理解;同时可参考文中列出的其他相关资源(如LLC、PFC等仿真模型)进行横向对比学习,拓宽电力电子系统设计视野。

穿透鼠标实现后台点击,适用于任何窗口!【后台鼠标】【风雪】

也许你就是被这标题吸引来的,呵呵!好久没发帖了,勾引一下大家的胃口,当然有的人已经猜出原理了!既然来了,都要把原理学回家,不然就没意思了!很多游戏现在都不支持后台消息鼠标,要实现真的不是简单的,什么注入dll啊,什么hook俺也学不懂,那就简简单单另辟蹊径了下面来讲讲原理吧(下面的玩玩可以,用于实际不现实,俺也不藏了,看到这么多人回复,良心过意不去,呵呵)首先,将要点击的窗口上面覆盖的所有窗...

weixin_34129145的博客 1万+

产品经理-面试题目--持续更新

答:面试官,你好,我叫XXX,来自于XXXX,我系统的学习过软件开发,也主动的积累了不少产品方面的实战经验,在学习期间,我自己独立的完成了2个深度项目,一个是仿抖音的短视频APP全流程设计,另外一个是电商后台系统的模块,通过这些项目,我不仅熟练使用Axure等工具做出高保真原型图和清晰的产品框架,也形成了数据驱动和用户优先的思维习惯,另外,我也注重拓展自己的能力边界,拿到了CAIE人工智能证书,我希望能把AI能力融入到产品场景,提升体验和效率,我非常喜欢产品工作带来的创造性和逻辑性,希望有机会加入贵公司。

m0_63966958的博客 958

PSCAD学习笔记(1)Project Settings(重点snapshot设置)

若不勾选,则横坐标为实际时间2-7s,故障显示在第3s发生。图片中时间坐标轴显示为0-5s,故障时刻显示为第1s,即0-1s展示系统稳态,1-5s展示系统发生故障后的暂态响应,如何通过快照文件实现?勾选该项后,使用快照文件启动仿真会将仿真起始时间强制设置为0s,反之不勾选则依据快照文件保存的时间轴继续(即坐标为实际时间)。如果已有的快照文件保存的是0s至5s的仿真内容,则仿真运行时间从5s开始,到10s结束。如果已有的快照文件保存的是0s至2s的仿真内容,则仿真运行时间从2s开始,到7s结束;

gwenh的博客 7347

[HQChart教程] 去掉“仅学习使用”文字提示的小技巧

最近用 HQChart 做图表时,发现左下角有“仅学习使用”的字样。这种水印虽然是默认的,但如果要展示给客户,可能会显得不够专业。还好,这个问题很好解决,只需要简单修改一下配置。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 599

Qt5.15.2配置安卓环境

否则,将会跳转到github,你可以自行下载解压到你设置的目录中,然后Qt会自动检测到。以上所需的工具确实有些繁多,而且如果单独下载又涉及科学上网问题,版本问题十分麻烦,好在Qt Creator 4.12之后已经可以自动下载SDK工具,NDK,基础包,openssl,以及gradle等,十分省心。回到正题,无论通过在线安装的方式,安装时勾选了Android,还是编译的方式,编译时编译了Qt Android库,想要使用Qt开发安卓应用仍然需要一些其他工作,包括安装编译安卓项目需要的SDK,NDK等。

weixin_41392061的博客 979

在STM32F103RBT6微控制器上利用USB虚拟Com端口技术,高效实现ADC数据传输:详细操作步骤与示例代码解析

以上就是在STM32F103RBT6上使用USB虚拟Com端口实现ADC数据传输的全部内容。虽然过程中有很多步骤和细节需要注意,但只要按照步骤来,理解每一段代码的作用,就完全可以掌握这个过程。在实际应用中,我们可能需要根据实际需要修改一些代码,如调整ADC的参数,改变数据的处理方式等。但是,只要理解了这个过程,我们就可以很灵活地进行修改。希望这篇文章对你有所帮助。如果你有任何疑问,欢迎在评论区留言,我会尽我所能进行解答。

qq_38334677的博客 1168

2026年MathorCup数学应用挑战赛大数据竞赛赛道A论文分享

本文基于250款啤酒的化学与感官数据,构建以化合物-感官关系为核心的风味解析框架。通过多输出偏最小二乘与稀疏多任务建模,实现化合物组成到感官强度的稳健映射,并分离连续预测与等级校准;结合Spearman相关网络与重复抽样稳定性分析,筛选各感官属性的关键候选化合物;在低维潜在空间中保留真实风格统计结构,生成Tripel、Kriek等风格的合理化合物谱,并实现Pils/Lager向Tripel的受约束迁移,确保缺陷指标不恶化。三问共享统一数据尺度与模型逻辑,形成可检验的“预测—解释—生成”闭环,强调化学合理性与

182

在 ABAP SEGW OData 服务里,把 Function Import 参数长度校验真正跑起来

SAP Gateway服务中Function Import参数长度校验的实现机制解析:在SEGW中定义Max Length参数后,需通过模型特性USE_STRICT_FUNCTION_PARAM_CHK(7.52+版本支持)启用严格检查。该特性需在MPC_EXT的DEFINE方法中设置,框架会在URI解析阶段拦截超长参数,避免错误进入业务逻辑。对于低版本系统,建议在应用层手动添加校验。这种模型驱动的方式符合Clean Core原则,能有效提升接口健壮性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 494

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: 12、Insights into the Minds Behind the Words
下一篇: 12、机器学习中的不确定性采样与多样性采样
code8
博客等级 码龄17年 65粉丝 1720原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值