当前位置: 首页 > news >正文

【动手学电机驱动】 STM32-FOC(7)基于 MCSDK6.0 控制与调试速度环

STM32-FOC(1)STM32 电机控制的软件开发环境
STM32-FOC(2)STM32 导入和创建项目
STM32-FOC(3)STM32 三路互补 PWM 输出
STM32-FOC(4)IHM03 电机控制套件介绍
STM32-FOC(5)基于 IHM03 的无感FOC 控制
STM32-FOC(6)基于 IHM03 的无感方波控制
STM32-FOC(7)基于 MCSDK6.0 控制与调试速度环

【动手学电机驱动】 STM32-FOC(7)基于 MCSDK6.0 控制与调试速度环

    • 1. 准备工作
      • 1.1 开发环境
      • 1.2 硬件连接
    • 2. 基于 IHM03 的无感FOC 控制
      • 2.1 配置电机控制包
      • 2.2 图形化配置
      • 2.3 代码编辑、编译与调试
    • 3. 使用 MCSDK Pilot 控制与调试
      • 3.1 加载上位机 GUI
      • 3.2 从上位机控制电机运行
      • 3.3 从上位机监控电机运行
    • 4. 速度环控制器
      • 4.1 电流环 PI 控制器
      • 4.2 速度电流双闭环 PI 控制器


P-NUCLEO-IHM03 STM32电机控制套件,为三相、低压和低电流的 BLDC 或 PMSM 电机提供电机控制解决方案。此前我们已经学习了使用 IHM03 电机控制套件开发无感 FOC 电机控制程序的基础操作。
本节在使用 IHM03 电机控制套件开发无感速度环电机控制程序的基础上,详细介绍基于 MCSDK6.0 的速度环控制与调试方法。


1. 准备工作

1.1 开发环境

  1. 硬件要求
  • Windows PC
  • X-NUCLEO-IHM16M1 电机驱动扩展板
  • STM32 Nucleo 开发板
  • 直流电源,输出电压 12 VDC
  • 三相无刷电机
  • USB Type-A 或 Type-c 至 Micro-B 连接线缆
  1. 系统要求:
  • Windows 操作系统(Windows 7、Windows 8 和 Windows 10)、Linux 64-bit 或 macOS
  • USB Type-A 或 Type-c 至 Micro-B 连接线缆,用于将STM32 Nucleo板连接到 PC
  1. 开发工具
  • STM32 电机控制 SDK:X-CUBE-MCSDK
  • STM32 图形化配置工具:STM32CubeMX
  • 集成开发环境 IDE,可以选择一下三者之一:
    • STM32 集成开发环境(STM32CubeIDE)
    • Keil 开发套件(MDK-ARM-STR)
    • IAR 嵌入式开发环境(IAR-EWARM)

1.2 硬件连接

硬件连接的操作步骤简述如下。详细操作过程可以参见 STM32-FOC(5)基于 IHM03 的无感FOC 控制 第2部分。

  1. 根据使用的 STM32 Nucleo 开发板和操作模式,检查跳线位置和安装选项。
  2. 通过 ST-morpho连接器连接(CN7、CN10)X-NUCLEO-IHM16M1 驱动板与 STM32 NUCLEO 开发板。
  3. 将 3-pin 插接端子插入连接器 CN1 的 3/4/5 输出端,以连接无刷电机。
  4. 使用 USB 连接线将 STM32 Nucleo 开发板连接到 PC,并下载相应的预编译代码。
  5. 使用 12V 直流电源为电路板供电,可以选择以下二者之一:
    – 使用连接器 CN1 的 2(VIN)和 1(接地)接入 12VDC电源;
    – 使用 J4 插孔(2.1/2.5 mm,尖端正极)接入12VDC电源。
  6. 使用 STM32 电机控制 SDK(X-CUBE-MCSDK)开发和运行应用程序。

2. 基于 IHM03 的无感FOC 控制

基于 IHM03 的无感FOC 控制的操作步骤简述如下。详细操作过程可以参见 STM32-FOC(5)基于 IHM03 的无感FOC 控制 第3部分。

2.1 配置电机控制包

  1. 打开 电机控制软件开发套件(Motor Control WorkBench),创建新项目。
    单击"New Project"按钮,弹出"New Project"对话框。
    在 “General Info” 菜单中,设置项目名称为 IHM03_03,选择单电机(1 Motor)、FOC驱动控制算法、Modular 模式。

  2. 硬件配置。
    在 “Motors” 菜单选择电机为 GimBal GBM2804H-100T,在 “Power board” 菜单选择驱动板为 X-NUCLEO-IHM16M1 电机驱动板,在 “Control board” 菜单选择控制板为 NUCLEO-G431RB 控制板。

  3. 修改配置的电路板和电机的信息。
    如果配置的硬件信息与实际产品参数有差异,可以点击相应的模块(蓝色模块),进入该模块的参数配置页面进行修改。
    在本例中,电机 GimBal GBM2804H-100T 的默认设置(具体参数与SDK版本有关)为最大电压 10Vdc、最大电流 0.8Apk。这与本套件的配置不一致,因此要点击图中 Motor 蓝色模块,进入电机参数设置页面,将最大电压设为 14.8Vdc、最大电流设为 2.1Apk。

  4. 完成项目配置后,自动生成一个电机控制项目,并显示项目视图。


在这里插入图片描述


  1. 配置速度位置控制方案。

点击项目视图中的 “Speed Sensing” 蓝色模块,进入速度位置管理界面。在 Main Sensor – Sensor Selection 选项中,选择 Sensor-less(Observer+PLL),即采用无传感器(使用位置观测器+PLL获取实时的转子位置)进行控制。


  1. 项目生成。

选择菜单 “Generate the project” 按键,根据配置参数生成项目。
跳出 “Project generation” 窗口,选择 STM32CubeMX 版本、固件版本(Firmware Package Version),Target Toolchain 为 STM32CubeIDE。
默认使用 HAL 驱动。
点击 “GENERATE” 按键,生成代码。


2.2 图形化配置

项目生成完成后,点击 “RUN STM32CubeMX” 按键,打开 STM32CubeMX 进行图形化配置。

  1. 将PA5 管脚设置为 GPIO_Output,可以控制 LD2 灯的开关闪烁。
    LD2 闪灯与电机控制无关,但可以用来确认程序烧录和运行是否正常,帮助初学者分析和排除故障。

  2. 点击 “Project Manager” 菜单按钮,进入工程配置界面。

  • 输入项目名称为 “IHM03_03”,选择项目的保存路径。
  • 将Toolchain / IDE 设为 STM32CubeIDE(根据用户安装和使用的 IDE 选择,也可以选择 EWARM、MDK-ARM、MakeFile、CMake 等IDE工具)。
  • 点击右上角 “GENERATE CODE” 生成代码。

加载完毕后,弹出代码生成提示窗口。点击“ OPEN PROJECT”,进入 STM32CubeIDE。


2.3 代码编辑、编译与调试

  1. 打开 STM32CubeIDE,导入 IHM03_03 项目。
    如果是从 CubeMX 代码生成提示窗口点击“ OPEN PROJECT”,则进入 STM32CubeIDE后自动打开 IHM03_03 项目。

  2. 在左侧 Project Explorer 中,选择 IHM03_03 – Application – User,打开主程序 main.c ,中断服务程序 tm32g4xx_it.c,stm32g4xx_mc_it.c ,如下图所示。

加入 LED2 闪烁功能,只要在 while(1) 循环中添加以下程序(这与电机控制无关,只供参考):

    /* USER CODE BEGIN 3 */HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);/* Insert delay 500 ms */HAL_Delay(500);

在这里插入图片描述

  1. 程序编译与下载
  • 用 USB连接线,连接 PC 与 NUCLEO-G431RB 开发板。
  • 点击工具栏中 “Build Debug” 按键对程序代码进行编译。
  • 点击工具栏中 “Debug” 按键,将程序下载烧录到目标板 NUCLEO-G431RB 。

程序烧录完成后,显示内容如下。

STMicroelectronics ST-LINK GDB server. Version 7.8.0
...Erasing memory corresponding to segment 0:
Erasing internal memory sectors [0 19]
Download in Progress:File download complete
Time elapsed during download operation: 00:00:01.011Verifying ...
Download verified successfully 
Shutting down...
Exit.
  1. 程序的运行与调试
  • 对照 2.1 检查 IHM03 套件硬件连接和电源连接。
  • 接通 12Vdc电源。
  • 点击工具栏中 “Resume” 按键 或 F8 快捷键,运行程序。
    • LED2 灯闪烁(如果加入闪灯程序)。
    • 按下蓝色按键 B1,电机开始运行。
    • 按下黑色按键 B2,电机停止运行。

3. 使用 MCSDK Pilot 控制与调试

3.1 加载上位机 GUI

MC SDK 提供 UI 库,用于界面调试通讯使用,与 Workbench 之间的交互。

  1. 打开电机控制软件开发套件(Motor Control WorkBench),单击工具栏的 “Motor Pilot” 按钮,启动电机导向应用程序 ST Motor Pilot。

  2. 在 ST Motor Pilot 中,点击菜单 “GUI – Load GUI”,根据项目内容选择相应的 QML 图形界面文件,加载上位机程序。

QML(Qt Meta-Language)是一种基于JavaScript的声明性语言,用于描述用户界面和应用程序的行为。它是Qt框架的一部分,广泛应用于跨平台应用程序开发。QML由于其高度的模块化和可重用性,特别适合于嵌入式系统的开发。在QML能够帮助开发者以声明性的方式构建用户界面,这样就可以在不需要深入了解底层图形渲染机制的情况下,创建出性能良好的界面。

如下图所示,加载上位机 GUI 文件 MC_FOC_SDK.qml。

在这里插入图片描述

  1. 连接上位机。

P-NUCLEO-IHM03 STM32电机控制套件 通过串口与上位机(PC)通讯。
3.1 打开上位机(PC)的设备管理器,查看 ST Link 对应的串口的端口号(例如下图中串口为 COM3)。
在这里插入图片描述

3.2 在 ST Motor Pilot 中,在 “Port” 设置 ST Link 对应的串口位置,再点击按键 “Connect” 连接。
3.3 连接成功后,ST Motor Pilot 显示电机的运行状态和参数,包括:电机转速,直流母线电压,温度,功率,运行状态,故障代码等。如下图所示,电机处于 “IDLE” 状态。

在这里插入图片描述


3.2 从上位机控制电机运行

在 ST Motor Pilot 的左下角的 “Control” 布局框内,设有电机运行的控制按钮。

  • 控制环路包含 “SPEED”、“TORQUE” 两个选项。默认选项为 “SPEED”,采用速度环控制;可选选为 “TORQUE”,采用力矩环(电流环)控制。
  • 点击 “Start” 按钮,启动电机运行;
  • 点击 “Stop” 按钮,停止电机运行;
  • 点击 “Stop ramp” 按钮,停止爬坡。
  1. 点击 “Start” 按钮启动,电机旋转。点击 “Stop” 按钮,停止电机运行。

左侧运行状态栏 显示运行状态为 “RUN”,故障灯全灭 指示无故障;
电机转速表(Speed Control)显示当前的转速测量值;
指示计(Measures)显示电压、温度、功率值;
状态栏(Global Configuration)显示运行状态。

在这里插入图片描述

  1. 寄存器
    点击菜单栏中的 “Registers” 按钮,切换到寄存器显示界面,显示设定的寄存器参数的实时值。

在这里插入图片描述


3.3 从上位机监控电机运行

  1. 实时监控

在 寄存器显示界面,选择需要实时监控的参数,点击该参数所在行的 “Configure” 按钮,可以绘制实时变化图。

  • 选择速度参考值 SPEED_REF(ID=153),点击对应的 “Configure” 按钮,选择 “Send to new plot” 后按 “Apply”,自动建立绘图框 plot1,将 SPEED_REF 绘制到 plot1 绘图框。
  • 选择速度测量值 SPEED_MEAS(ID=89),点击对应的 “Configure” 按钮,选择 “plot1” 后按 “Apply”,将 SPEED_MEAS 也绘制到 plot1 绘图框。

点击 “Start” 按钮启动,点击 “Stopt” 按钮停止,plot1 绘图框实时显示 速度参考值 SPEED_REF、速度测量值 SPEED_MEAS 的运行曲线如下图所示。

在这里插入图片描述

  1. 调节电机运行速度

在上位机调节电机运行的速度参考值,通过电流环可以控制电机转速。

在 ST Motor Pilot 的转速表下方的 “Speed Ramp” 布局框内,用户可以设置电机速度参考值(Target Speed RPM)和斜坡时间(Speed ramp duration),控制电机运行。

6.1 在电机运行过程中,在 “Target Speed RPM” 选框输入转速参考值,斜坡时间不修改(默认值为0),在 plot1 绘图框观察实时显示的 速度参考值 SPEED_REF、速度测量值 SPEED_MEAS 的运行曲线,如下图所示。

在这里插入图片描述

6.2 在电机运行过程中,在 “Target Speed RPM” 选框输入转速参考值,同时在 “Duration” 选框输入斜坡时间,在 plot1 绘图框观察实时显示的 速度参考值 SPEED_REF、速度测量值 SPEED_MEAS 的运行曲线。

如下图所示,斜坡时间(Duration)主要影响转速参考值的变化时间,相应地也会影响速度参考值变化时的速度测量值的超调量。

在这里插入图片描述

  1. 调节速度环控制器参数

在 ST Motor Pilot 中,用户可以调整速度环、力矩环、磁链环的 PI 控制器参数。

  • 在 ST Motor Pilot 左下方点击 “Advanced Configuration”,打开右侧的状态栏。
  • 状态栏选择 Currents_Speed 状态,显示速度环 PI 控制器(Speed PI regulator)的参数 Kp、Ki。
  • 本项目中 Kp 默认值为 2730,将其修改为 300,Ki 默认值为 562 不变。

点击 “Start” 启动电机。在 plot1 绘图框观察实时显示的 速度参考值 SPEED_REF、速度测量值 SPEED_MEAS 的运行曲线,如下图所示。

减小 Kp 后,速度环的超调量较大。相应地,电流过冲大,容易触发过流保护。由此,速度环 控制器参数,对于电机的运行非常重要。下节将简单介绍速度环参数整定的基本原则和方法。

在这里插入图片描述
减小 Kp,超调量较大。电流过冲大,容易过流保护。

  1. 故障显示与处理

当电机运行发生故障保护时,自动停止运行,并在状态栏显示故障状态,如下图所示。

在这里插入图片描述

如果故障可以自动恢复,点击状态栏 “Ack Faults” 按钮可以使故障复位,进入空闲状态 “IDLE”。如果故障不能自动恢复,则需要断电重启。


4. 速度环控制器

本节是对电机控制速度环和参数整定的介绍。

4.1 电流环 PI 控制器

电流闭环控制,可以精确的控制电机的 Id、Iq 电流值。

电流环的主要作用是在电机启动过程中能够以最大的电流启动,同时对电网电压的波动起及时抗扰的作用,加快动态系统的响应速度,提高系统的稳定性。

在这里插入图片描述


4.2 速度电流双闭环 PI 控制器

实际应用通常期望控制电机以设定的转速变化,仅靠电流闭环不能实现。需要加入转速闭环,实现对转速的控制。转速控制器的输出为电流控制器的给定,转速控制器的输出要进行限幅,因为转速控制器的输出限幅值决定了所用电机的最大允许电流。

速度控制系统的拓扑结构,是速度外环、电流内环的双闭环控制系统,如下图所示。

在这里插入图片描述

增加𝐾𝑖对电机控制系统的影响与增加弹簧常数相似。系统的阻尼由⻓𝑝增益控制。增加阻尼将减少振荡。


### 4.3 电流环路带宽

电流回路带宽过高会导致电机承受过度的压力,因为高频电流瞬变和噪声会转化为高频扭矩瞬变和噪音。电流环路带宽还有另一个限制:采样频率。

在模拟系统中,电机反馈信号的任何变化都会立即开始对输出控制电压产生影响。但是,使用如图所示的数字控制系统,在PWM周期开始时通过ADC对电机信号进行采样,执行控制计算,并将得到的控制电压存入双缓冲PWM寄存器。这些值在PWM寄存器中处于未使用状态,直到它们在下一个PWM周期开始时被时钟记录到PWM输出。

在这里插入图片描述

由于电流控制器处理的带宽比速度回路高,因此通常是电流回路受 PWM 模块的 SH 效应影响最大。由于PWM 模块 SH与电流回路的信号路径串联,其幅度和相位贡献直接增加了电流控制器的开环响应。

在大多数设计中,可以保留 K p s 2 π L \frac{K_p^s}{2\pi L} 2πLKps至少比采样频率低一个数量级。利用这一假设以及速度环调谐过程的约束,可以编写一个通用的“经验法则”表达式:

10 L δ τ < K p s < 2 π L 10 T s \frac{10 L}{\delta \tau} < K_p^s < \frac{2 \pi L}{10 T_s} δτ10L<Kps<10Ts2πL


参考资料:

  1. P-NUCLEO-IHM03 STM32电机控制套件
  2. UM2505 - STM32G4 Nucleo-64 boards (MB1367), STMicroelectronics/意法半导体, 2021
  3. UM2538 - STM32 motor-control pack using the FOC algorithm for three-phase, low-voltage, and low‑current motor evaluationl, STMicroelectronics/意法半导体, 2023
  4. UM3027 - How to use STM32 motor-control SDK v6.0 workbenc, STMicroelectronics/意法半导体, 2022
  5. 许少伦等,STM32G4入门与电机控制实战,电子工业出版社,2023

版权声明:
欢迎订阅youcans@qq 原创作品 【动手学电机驱动专栏】
转载必须标注原文链接:(https://blog.csdn.net/youcans/category_12645064.html)
Copyright@youcans 2024
Crated:2024-11

相关文章:

【动手学电机驱动】 STM32-FOC(7)基于 MCSDK6.0 控制与调试速度环

STM32-FOC&#xff08;1&#xff09;STM32 电机控制的软件开发环境 STM32-FOC&#xff08;2&#xff09;STM32 导入和创建项目 STM32-FOC&#xff08;3&#xff09;STM32 三路互补 PWM 输出 STM32-FOC&#xff08;4&#xff09;IHM03 电机控制套件介绍 STM32-FOC&#xff08;5&…...

无人机飞手考证,地面站培训技术详解

无人机飞手考证及地面站培训技术涉及多个关键方面&#xff0c;以下是对这些方面的详细解析&#xff1a; 一、无人机飞手考证流程与要求 1. 证书类型 民用无人机驾驶员证书&#xff1a;这是国家民航局颁发的无人机操作人员资质证书&#xff0c;分为视距内驾驶员、超视距驾驶员…...

音视频入门基础:MPEG2-TS专题(3)——TS Header简介

注&#xff1a;本文有部分内容引用了维基百科&#xff1a;https://zh.wikipedia.org/wiki/MPEG2-TS 一、引言 本文对MPEG2-TS格式的TS Header进行简介。 进行简介之前&#xff0c;请各位先下载MPEG2-TS的官方文档。ITU-T和ISO/IEC都分别提供MPEG2-TS的官方文档。但是ITU提供的…...

Sam Altman:年底将有重磅更新,但不是GPT-5!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;专注于分享AI全维度知识&#xff0c;包括但不限于AI科普&#xff0c;AI工…...

基于物联网的智能超市快速结算系统

摘 要 当今社会的商品层出不穷&#xff0c;人们因为越来越多大型仓储超市的出现使得生活更加便利&#xff0c;但许多随之而来的新问题也给人们带来了许多的不便&#xff0c;例如商家一直被更换标签不及时、货物丢失、超市内物品更换处理不及时、超市内人流高峰期人流控制不得…...

241111.学习日志——[CSDIY] Cpp零基础速成 [00]

CSDIY&#xff1a;这是一个非科班学生的努力之路&#xff0c;从今天开始这个系列会长期更新&#xff0c;&#xff08;最好做到日更&#xff09;&#xff0c;我会慢慢把自己目前对CS的努力逐一上传&#xff0c;帮助那些和我一样有着梦想的玩家取得胜利&#xff01;&#xff01;&…...

湘潭大学软件工程算法设计与分析实验-模拟退火算法

文章目录 写在前面代码分析 写在前面 总共是要四份代码&#xff0c;好像都是实现背包问题&#xff0c;前面三个都比较简单直观&#xff0c;朋友上周在机房给我讲解了一下之后&#xff0c;我大概弄清楚了&#xff0c;这周好像是最后一次算法课了&#xff0c;所以明天我得把剩下…...

Three.js 零基础+概念理解

文章目录 一、Three.js基础概念&#xff08;一&#xff09;什么是Three.js&#xff08;二&#xff09;核心对象&#xff08;三&#xff09;几何体&#xff08;Geometries&#xff09;和材质&#xff08;Materials&#xff09; 二、基础实例应用&#xff08;一&#xff09;创建一…...

c#使用COM接口设置excel单元格宽高匹配图片,如何计算?

c#使用COM接口设置excel单元格宽高如何换算 在实际工作中&#xff0c;经常需要在excel中插入图片。并设置单元格与图片对齐。但是excel单元格的宽度和高度使用不同的单位。单元格的宽度以字符宽度为单位&#xff0c;而高度以点为单位。如果按照实际值来设置&#xff0c;例如设…...

Excel模板下载\数据导出

pom <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version> </dependency><build><resources><resource><!--将xlsx打包到jar--><director…...

Vite初始化Vue3+Typescrpt项目

初始化项目 安装 Vite 首先&#xff0c;确保你的 Node.js 版本 > 12.0.0。然后在命令行中运行以下命令来创建一个 Vite Vue 3 TypeScript 的项目模板&#xff1a; npm init vitelatest进入项目目录 创建完成后&#xff0c;进入项目目录&#xff1a; cd vue3-demo启动…...

深入剖析【C++继承】:单一继承与多重继承的策略与实践,解锁代码复用和多态的编程精髓,迈向高级C++编程之旅

​​​​​​​ &#x1f31f;个人主页&#xff1a;落叶 &#x1f31f;当前专栏: C专栏 目录 继承的概念及定义 继承的概念 继承定义 定义格式 继承基类成员访问⽅式的变化 继承类模板 基类和派⽣类间的转换 继承中的作⽤域 隐藏规则 成员函数的隐藏 考察继承【作⽤…...

地级市能源消耗数据(2006至2021)含原始数据、计算过程、计算结果-最新出炉

能源消耗数据分析-2006-2021年地级市能源消耗数据&#xff08;原始数据计算过程结果&#xff09; 下载链接-点它&#x1f449;&#x1f449;&#x1f449;&#xff1a;https://download.csdn.net/download/qq_67479387/89911272 全国能源消耗概况 2021年&#xff0c;我国单位…...

MySQL技巧之跨服务器数据查询:基础篇-A数据库与B数据库查询合并

MySQL技巧之跨服务器数据查询&#xff1a;基础篇-A数据库与B数据库查询合并 上一篇已经描述&#xff1a;借用微软的SQL Server ODBC 即可实现MySQL跨服务器间的数据查询。 而且还介绍了如何获得一个在MS SQL Server 可以连接指定实例的MySQL数据库的链接名: MY_ODBC_MYSQL 以…...

AutoSAR CP DoIP规范导读

主要功能和用途 诊断通信协议实现 遵循标准&#xff1a;遵循ISO 13400 - 2标准&#xff0c;实现了诊断通信在IP网络上的传输协议和网络层服务&#xff0c;包括数据封装、传输、路由等功能。 多种消息支持 车辆识别与公告&#xff1a;能够进行车辆识别请求和响应&#xff0c;…...

Window下PHP安装最新sg11(php5.3-php8.3)

链接: https://pan.baidu.com/s/10yyqTJdwH_oQJnQtWcwIeA 提取码: qz8y 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 (链接失效联系L88467872) 1.下载后解压文件&#xff0c;将对应版本的ixed.xx.win文件放进php对应的ext目录下&#xff0c;如图所示 2.修改ph…...

2024华为OD机试真题---中文分词模拟器

华为OD机试中的中文分词模拟器题目&#xff0c;通常要求考生对给定的不包含空格的字符串进行精确分词。这个字符串仅包含英文小写字母及英文标点符号&#xff08;如逗号、分号、句号等&#xff09;&#xff0c;同时会提供一个词库作为分词依据。以下是对这类题目的详细解析 一…...

Kubernetes网络揭秘:从DNS到核心概念,一站式综述

文章目录 一.overlay vs underlayL2 underlayL3 underlay 二、calico vs flannel2.1 calico架构2.2 flannel架构 三、iptables四、Vxlan五、kubernetes网络架构综述六、DNS七、Kubernetes域名解析策略 一.overlay vs underlay overlay网络是在传统网络上虚拟出一个虚拟网络&am…...

C#封装EPPlus库为Excel导出工具

1&#xff0c;添加NUGet包 2&#xff0c;封装工具类 using OfficeOpenXml; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection;namespace GMWPF.utils {public class ExcelUtil<T>{/// <summary>///…...

【LeetCode】【算法】461. 汉明距离

LeetCode 461. 汉明距离 题目描述 两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。 给你两个整数 x 和 y&#xff0c;计算并返回它们之间的汉明距离。 思路 思路&#xff1a;将两个数转成二进制后求异或结果&#xff0c;就是它们之间的汉明距离。…...

Docker Compose部署Rabbitmq(延迟插件已下载)

整个工具的代码都在Gitee或者Github地址内 gitee&#xff1a;solomon-parent: 这个项目主要是总结了工作上遇到的问题以及学习一些框架用于整合例如:rabbitMq、reids、Mqtt、S3协议的文件服务器、mongodb github&#xff1a;GitHub - ZeroNing/solomon-parent: 这个项目主要是…...

生信技能62 - 常用机器学习算法的R语言实现

1. 加载R包和数据 # 安装R包, 是否update统一选择不更新n BiocManager::install("caret") BiocManager::install("randomForest") BiocManager::install("gbm") BiocManager::install("kernlab") BiocManager::install("glmnet…...

【3D Slicer】的小白入门使用指南二

3D Slicer中DICOM数据加载和三维可视化 任务 数据集下载和解压缩 加载和查看DICOM数据 1)将第一个数据集文件夹,整个往3Dslicer左侧拖动即可 得到 2)选中右侧patient 1就可显示出该患者的基本信息 (第二行蓝色是研究信息;第三行蓝色是序列信息)...

部署搭建AI相关项目时,不用魔法也能轻松自动下载所需大模型

背景 最近搭建了许多AI相关的自动化服务&#xff0c;有些时候因为国内服务器墙了 huggingface.co 访问&#xff0c;导致一些依赖文件和模型下载不下来&#xff0c;手动去下载又特别麻烦&#xff0c;今天教你一个小招&#xff0c;轻松解决这个问题 开搞 1&#xff1a;首先确定…...

zookeeper之节点基本操作

ZooKeeper是一个分布式协调服务,它的节点操作包括创建、查询、更新、删除等,以下是ZooKeeper节点的基本操作介绍: 1. 创建节点 持久节点(Persistent Node) 含义:持久节点是ZooKeeper中最基本的节点类型。创建后,除非显式删除,否则它将一直存在于ZooKeeper树中,即使创…...

技术最好 ≠ 最适合:数字化转型切忌盲目追求最先进的技术

企业引入新兴技术时面临的挑战 企业在引入新兴技术时会面临一定挑战&#xff0c;根据调查结果显示&#xff0c;企业在引入新兴技术时做出决策的三个最重要考量因素分别是&#xff1a; 价格与投资回报 新兴技术成熟度 新兴技术与业务的适配性 不要盲目追求最先进的技术 企业…...

数字IC后端教程之Innovus hold violation几大典型问题

今天小编给大家分享下数字IC后端实现Physical Implementation过程中经常遇到的几个hold violation问题。每个问题都是小编自己在公司实际项目中遇到的。 数字后端实现静态时序分析STA Timing Signoff之min period violation Q1: 在Innouvs postCTS时序优化的log中我们经常会看…...

rust并发

文章目录 Rust对多线程的支持std::thread::spawn创建线程线程与 move 闭包 使用消息传递在线程间传送数据std::sync::mpsc::channel()for received in rx接收两个producer 共享状态并发std::sync::Mutex在多个线程间共享Mutex&#xff0c;使用std::sync::Arc 参考 Rust对多线程…...

力扣 最小路径和

又是一道动态规划基础例题。 题目 这道题可以类似不同路径。先把左上角格子进行填充&#xff0c;然后用一个数组去更新每走到一个格的数字总和&#xff0c;首先处理边界问题&#xff0c;把最左边的列只能由上方的行与原来的格子数值的和&#xff0c;同理&#xff0c;最上方的行…...

Scala中的可变Map操作:简单易懂指南 #Scala Map #Scala

引言 在编程中&#xff0c;Map是一种常见的数据结构&#xff0c;用于存储键值对。Scala提供了不可变Map和可变Map两种类型&#xff0c;它们在处理数据时有不同的特性和用途。本文将通过一个简单的示例&#xff0c;带你了解Scala中可变Map的基本操作&#xff0c;包括添加元素、…...