EtherCAT开源主站 IGH 介绍及主站伺服控制过程

news2024/11/15 15:53:47

目录

前言

IGH EtherCAT主站介绍

主要特点和功能

使用场景

SOEM 主站介绍

SOEM 的特点和功能

SOEM 的使用场景

IGH 主站 和 SOEM对比

1. 功能和复杂性

2. 资源消耗和移植性

3. 使用场景

EtherCAT 通信原理

EtherCAT主站控制伺服过程 

位置规划模式

原点复归模式

PLC与从站伺服驱动器的控制

软件主站与从站伺服驱动器的控制

相关概念介绍

对象字典

服务数据对象(SDO)

过程数据对象(PDO)

CiA 402 规范

其他

前言

EtherCAT全称EtherNet Control Automation Technology,是由德国倍福(Beckhoff)公司提出的一种实时以太网技术,用于工业自动化的现场总线通信协议。EtherCAT是一种开放但不开源的技术,从站使用专属ASIC芯片或是FPGA的形式。

IGH EtherCAT是一种EtherCAT协议主站协议栈的开源实现,是一个完全符合EtherCAT标准的库,能够在实时操作系统上运行。与传统总线相比,EtherCAT的优点在于减少了总线通信的延迟时间,从而提高了实时性。IGH EtherCAT实现了这一协议,并对其进行了优化和改进。

EtherCAT的主站开发是基于EtherCAT工控制系统的开发中非常重要的环节。EtherLab的the IgH EtherCAT® Master是目前常见的一种开源的主站协议栈。IgH EtherCAT Master比SOEM复杂一些,但对EtherCAT的实现更为完整。

目前用的最多的开源ethercat主站是igh和soem。igh主站功能更多,结构较为复杂。soem功能相对没有那么完善,实现更为简单一些。主站实现在带有处理器的硬件平台上,带有完整或较为完整的操作系统时用igh;如果主站实现在单片机平台上,则推荐使用soem。igh主站依赖操作系统,而soem很容易可以移植到单片机上。

SOME支持Windows和Linux平台,功能相对简单。IGH的EtherCATMaster基于Linux平台,从发布至今已经将近10年并进行了多次更新,功能相对完善,还支持RTAI、RT-Preempt、Xenomai等多种实时扩展,并且支持DC分布时钟,支持COE、SOE、EOE等多种通信协议。

IGH的EtherCAT 主站由三部分组成,包括主站协议栈、控制应用程序、支持EtherCAT的网卡驱动模块。IGH提供了两种网卡驱动方式:generic驱动和native驱动,generic驱动适用于所有网卡,通过调用Linux网络协议栈实现数据包的收发,并不能直接对硬件进行操作,实时性较难保证。native驱动针对主站支持的一些特定网卡,可以对底层硬件进行操作,可以支持RATI、Xenomai等实时扩展,可以保证EtherCAT主站的实时性。

IGH EtherCAT主站介绍

IGH EtherCAT 主站(IgH EtherCAT Master for Linux)是一个专门针对 Linux 平台的 EtherCAT 主站实现。它是一个开源项目,旨在为 Linux 系统提供完整的 EtherCAT 主站功能。

IgH的官网:http://www.etherlab.org/en/ethercat/index.php

EtherLab / EtherCAT Master · GitLab

https://gitlab.com/etherlab.org/ethercat/-/archive/stable-1.6/ethercat-stable-1.6.tar.gz

以下是 IGH EtherCAT Master的一些特点和功能:

主要特点和功能

  1. 适用于 Linux 平台:IGH EtherCAT 主站专门设计用于在 Linux 操作系统上实现 EtherCAT 主站功能。它利用 Linux 内核的实时性能和特性来实现对实时控制系统的支持。

  2. 完整的 EtherCAT 主站功能:IGH EtherCAT 主站支持 EtherCAT 协议的完整功能和特性,包括实时数据通信、分布式时钟同步、监视和配置等。

  3. 高性能和实时性:基于 Linux 实时内核的特性,IGH EtherCAT 主站能够提供可靠的实时通信和控制能力,适用于实时控制系统的要求。

  4. 开源和免费:IGH EtherCAT 主站是开源项目,基于 GPL 协议发布,用户可以免费使用、修改和定制它。

  5. 支持各种 EtherCAT 从站设备:IGH EtherCAT 主站能够与各种符合 EtherCAT 标准的从站设备进行通信,为用户提供了在 Linux 平台上实现 EtherCAT 控制网络的解决方案。

使用场景

IGH EtherCAT 主站主要适用于对实时控制系统有高要求的应用场景。它能够提供高性能、实时性和完整的 EtherCAT 功能,在需要在 Linux 系统中实现 EtherCAT 控制网络的工业自动化、机器人控制、运动控制等领域发挥重要作用。

此外,由于其开源和免费的特性,IGH EtherCAT 主站还可以被广泛应用于研究和教育领域,为从业人员和学生提供了一个了解和探索 EtherCAT 技术的平台,同时市场上也有很多基于它的专利和市场商业应用。

SOEM 主站介绍

SOEM(Simple Open EtherCAT Master)是一种基于 EtherCAT 协议的开源主站实现,专为嵌入式系统和实时控制应用而设计。SOEM 的主要目标是提供一个轻量级、简单易用的 EtherCAT 主站解决方案,适用于资源受限的嵌入式平台和实时控制系统。

SOEM 的特点和功能

  1. 轻量级实现:SOEM 设计简单、轻量级,适用于资源受限的嵌入式系统和实时控制应用。它的设计旨在降低系统资源消耗,以便在嵌入式设备上运行。

  2. 容易移植:由于 SOEM 的设计简单,它相对容易移植到各种硬件平台,包括单片机等资源受限的设备上。这使得 SOEM 成为嵌入式系统和实时控制领域中的一种受欢迎的 EtherCAT 主站选择。

  3. 适用于实时控制:SOEM 专注于提供对实时控制系统的支持,其设计目标是确保稳定的实时通信和控制能力。

  4. 开源:SOEM 是开源项目,基于 LGPL 协议发布,这意味着它可以免费用于商业和非商业项目中,并且用户可以根据需要进行修改和定制。

SOEM 的使用场景

SOEM 主要适用于嵌入式系统和实时控制应用场景,通常由需要在资源受限的嵌入式平台或实时控制系统中实现 EtherCAT 主站功能的开发人员和工程师使用。由于其轻量级和易于移植的特点,SOEM 更适合于单片机等资源受限的处理器平台上使用。

由于 SOEM 对资源的精简使用和易于移植性,它在需要实现 EtherCAT 主站功能的嵌入式系统和实时控制应用中具有一定的优势。然而,需要同时注意的是,SOEM 的功能相对简化,可能不如其他更复杂的 EtherCAT 主站实现(如 IGH EtherCAT 主站)提供丰富的特性和功能。

IGH 主站 和 SOEM对比

IGH EtherCAT 主站(IgH EtherCAT Master for Linux)和 SOEM(Simple Open EtherCAT Master)都是开源的 EtherCAT 主站实现,用于在各种平台上实现 EtherCAT 主站功能。以下是它们之间的一些对比:

1. 功能和复杂性

  • IGH EtherCAT 主站

    • 功能较为丰富,支持 EtherCAT 主站的各种特性和功能。
    • 结构相对复杂,适用于复杂的系统和对 EtherCAT 功能有较高要求的应用场景。
    • 针对 Linux 平台设计,依赖于 Linux 操作系统的功能和特性。
  • SOEM

    • 设计简单、轻量级,专注于提供基本的 EtherCAT 主站功能。
    • 适用于嵌入式系统和实时控制应用,资源消耗较低,易于移植到不同的硬件平台。
    • 对实时控制系统提供基本但稳定的 EtherCAT 支持。

2. 资源消耗和移植性

  • IGH EtherCAT 主站

    • 由于功能较为丰富且结构复杂,可能会消耗更多系统资源,对硬件和操作系统可能有更高的要求。
    • 针对 Linux 平台设计,对于在 Linux 系统中实现 EtherCAT 主站功能提供了良好的支持。
  • SOEM

    • 设计目标是轻量级和易于移植,适用于资源受限的嵌入式系统和实时控制应用。
    • 容易移植到不同的硬件平台,包括单片机等资源受限的设备。
    • 对实时控制系统提供基本但稳定的 EtherCAT 支持。

3. 使用场景

  • IGH EtherCAT 主站

    • 适用于需要实现 EtherCAT 主站功能并且对功能和特性有较高要求的复杂系统,通常是在带有处理器的硬件平台和完整的操作系统上使用。
  • SOEM

    • 适用于嵌入式系统和实时控制应用场景,在单片机等资源受限的平台上使用,例如实时控制系统和嵌入式设备。

EtherCAT 通信原理

传统的以太网设备组成的网络中,每个设备都能接收到网络中的所有数据包,指定设备的有用信息必须在应用层逐一提取,该方式严重影响了应用层执行效率。

EtherCAT 技术突破了传统以太网解决方案的系统限制,不必再像其它以太网那样每个连接点都接收以太网中所有的数据包。当数据帧通过每一个设备时,EtherCAT 从站设备在报文经过其节点时读取相应的编址数据。同样,输入数据可以在报文通过时插入至报文中。

在帧被传递(几纳秒的延迟)过去的时候,从站会识别出相关命令,并进行处理。此过程是在从站控制器中通过硬件实现的,因此与协议栈处理器性能无关。由于以太网帧到达许多设备的数据,在发送和接收方向,可用的数据速率增加至超过 90%,对 100BaseTX 全双工功能得到更充分的利用,使> 100 MBit/S 的有效数据率(> 2×100 MBit/S 90%)可以实现。 

EtherCAT主站控制伺服过程 

要实现使用EtherCAT协议,主站对从站的伺服驱动器进行控制,常见的有几种方式。如使用PLC,运动控制卡,或者工业PC,软件主站或者嵌入式系统等。

EtherCAT 主站要通过写参数和读设备状态/信息来控制伺服驱动器。为了达到这个目的,伺服驱动器定义了可以读写的参数和只读的状态值,这些参数和状态的集合就是对象字典。

伺服驱动器对象字典以标准化的方式包含 DSP402 及 CoE 相关的所有数据对象。它是伺服驱动器参数数据结构的集合。

COE 协议

CANopen Over EtherCAT 协议被称为COE,它的架构为:

伺服驱动器厂家提供EtherCAT 的 XML 文件,是一种用于描述设备对象字典(Object Dictionary)的文件,它提供了设备的参数配置、通信接口和数据交换方式的描述。对象字典是一种用于定义设备参数、状态和配置的数据结构的机制。XML 文件中包含了设备的数据对象、参数配置、映射方式以及其他相关信息。

XML 文件描述设备所支持的对象字典,以便于 EtherCAT 主站或者其他控制设备可以了解和访问设备的数据。在 EtherCAT 网络中,各个从站设备通过对象字典的描述,向主站和其他从站提供了自己的数据结构和通信能力。

伺服驱动器对象字典是主站与它通讯的接口,EtherCAT 主站实现对伺服驱动器的运动控制功能,都是通过对象字典这个接口完成的。 

伺服在 EtherCAT 模式下,各项由 CiA DS402 所规范的操作模式 。

以下以常见的定点运动和回零运动过程举例:

位置规划模式

伺服驱动器接收到由上位机传送的位置命令后,驱动器控制伺服电机到达目标位置。在位置规划模式下,上位机仅在一开始时告知驱动器目标位置、速度命令与加减速等相关设定。从命令触发到到达目标位置这中间的运动规划,都是由驱动器内部的运动命令产生器去执行。下图为驱动器的位置规划模式架构图:

原点复归模式

原点复归模式,即回零模式。在完成原点复归后,驱动器的坐标系随即建立,驱动器可开始执行上位机所下达的位置命令。

周期同步位置模式(csp)

周期同步位置模式下,上位控制器完成位置指令规划,然后将规划好的目标位置 607Ah 上以周期性同步的方式发送给伺服驱动器,位置、速度、转矩控制由伺服驱动器内部完成。这个模式也比较厉害,可以实现一些复杂的运动,如多轴的插补运动。
在这里插入图片描述

周期同步速度模式(csv)

周期同步速度模式下,上位控制器将计算好的目标速度 60FF 周期性同步的发送给伺服驱动器,速度、转矩调节由伺服内部执行。
在这里插入图片描述

周期同步转矩模式(cst)

此模式下,上位控制器将计算好的目标转矩 6071h 周期性同步的发送给伺服驱动器,转矩调节由伺服内部执行。当速度达到限幅值后将进入调速阶段
在这里插入图片描述

轮廓位置模式(pp)

此模式主要用于点对点定位应用。此模式下,上位机给目标位置 ( 绝对或者相对 )、位置曲线的速度、加减速及减速度,伺服内部的轨迹发生器将根据设置生成目标位置曲线指令,驱动器内部完成位置控制,速度控制,转矩控制
在这里插入图片描述

轮廓速度模式(pv)

此模式下,上位控制器将目标速度、加速度、减速度发送给伺服驱动器,速度、转矩调节由伺服内部执行
在这里插入图片描述

轮廓转矩模式(pt)

此模式下,上位控制器将目标转矩 6071h、转矩斜坡常数 6087h 发送给伺服驱动器,转矩调节由伺服内部执行。当速度达到限幅值将进入调速阶段。
在这里插入图片描述

PLC与从站伺服驱动器的控制

选择支持EtherCAT协议的PLC作为主控单元,PLC 通过 EtherCAT 协议与伺服驱动器进行通信。 PLC 作为 EtherCAT 的主站,负责协调 EtherCAT 网络中的所有从站设备,包括伺服驱动器。

PLC 中集成了 EtherCAT 的主站实现,通常使用特定的编程语言或者软件来实现对伺服驱动器的控制。 PLC 程序可以通过 EtherCAT 协议,向伺服驱动器发送命令并接收其状态和反馈信息。

PLC 通过对伺服驱动器的对象字典进行解析,可以实现对伺服驱动器的配置和控制,以及获取状态信息。

PLC 通过周期性的发送 EtherCAT 帧来控制伺服驱动器的动作。 PLC 会定期地向伺服驱动器发送控制指令(例如位置、速度、加速度等指令),同时将接收和处理伺服驱动器的状态和反馈信息。

对于一些 PLC(特别是工业级 PLC)来说,可能会提供专门的运动控制模块或者函数库,以便实现更高级的运动控制功能,比如插补运动。这些模块或者函数库可以辅助用户实现更复杂的运动控制功能,比如多轴插补运动、圆弧插补、轨迹规划等。

软件主站与从站伺服驱动器的控制

这个就需要开发了,开发EtherCAT主站应用程序,有一定的门槛和含金量。需要理解基于EtherCAT的从站伺服驱动器应遵循的标准规范,尤其是CiA402规范,CiA402是针对伺服驱动器控制的CANopen应用规范,涵盖了运动控制、状态管理、参数设置等方面的要求。还需要熟悉伺服驱动器的参数和控制指令,包括速度控制、位置控制、电流控制等。这些参数和指令将会在使用API接口控制伺服驱动器时用到。

使用IGH主站通过api接口,控制从站伺服驱动器,实现对从站的访问和设置,如设置从站地址、显示总线配置、显示PDO数据、读写SDO参数等。

IGH的应用程序接口为应用程序提供访问EtherCAT主站的功能和数据结构。 接口包含在头文件include / ecrt.h中。

开发EtherCAT主站应用程序大致包括配置软件交互模块、配置参数解析模块、总线扫描模块、主站业务管理模块、过程数据交互模块等。

配置软件交互模块提供上位机配置软件网络配置、主/从站操作功能。在主站进入正常工作流程前,用户通过配置软件把现场总线的网络拓朴结构、主站配置参数、从站配置参数、PDO对象映射等下发给主站,本模块将配置参数保存到文件中,并给主平配置解析模块下发信号量。同时本模块也响应配置软件对主/从站操作命令、状态信息获取命令、信息监控等。

配置参数解析模块功能单一,主要解析主站、从站配置参数。接收到配置软件交互模块信号量后,本模块从配置文件中读取网络配置参数,并进行动态解析,将解析到的主/从站配置信息、SDO/PDO映射等信息保存到全局变量中,然后给主站业务管理模块发送信量。若解析参数出现异常,则将错误信息传递给主站业务管理模块。

总线扫描模块主要功能是对现场EtherCAT总线网络进行扫描。本模块接收到配置软件交互模块信号量后,启动网络总路线扫描,获取总线网络拓扑结构及从站信息,将上述信息传递给配置软件交互模块及主站业务管理模块。

主站业务管理模块为应用程序的核心。处理的业务包括主站创建、主/从站参数协议栈配置、从站启动参数配置、从站同步管理器配置、系统异常错误处理等。本模块接收到主站配置解析模块信号量后,首先调用ecrt_requet_master()函数申请主站,然后调用ecrt_master_create_domain()函数创建domain数据域,调用ecrt_master_slave_config()、ecrt_slave_config_pdos()等函数配置从站PDO映射;调用ecrt_slave_config_dc()配置从站DC同步时钟。EtherCAT总线配置完成后,调用ecrt_master_activate()激活主站,并启动过程数据交互模块,进入主站业务循环处理,状态信息更新及系统异常处理。

过程数据交互模块在主站进入正常业务处理后启动,处理的业务包括过程数据接收、过程数据处理、主/从站状态检测、主/从站DC时钟同步、过程数据发送。本模块调用高精度定时函数clock_nanosleep()实现任务的精确定时,调用ecrt_master_receive()函数接收网络数据,调用ecrt_domain_process()函数处理过程数据,调用ecrt_master_sync_slave_clocks()函数设置DC同步时钟,调用ecrt_master_send()发送网络数据,从而实现EtherCAT网络数据的周期处理。

一些三方公司也提供的有开发板或开发包,通过向linux内核打实时补丁和使用IGH软件主站,简化伺服运动控制的开发。

相关概念介绍

在 EtherCAT 中,对象字典(Object Dictionary)、PDO(Process Data Objects)和 SDO(Service Data Objects)这些概念都是源自 CANopen 协议,并在 EtherCAT 中得到了应用。

CANopen 是一种用于控制系统中各种设备之间通信和数据交换的高层协议,而 CiA 402 是作为 CANopen 的一个特定设备配置规范存在的,主要用于定义运动控制设备的对象字典和通信机制。

在 EtherCAT 中,可以使用 CiA 402 的规范来定义设备的对象字典、PDO 和 SDO,以便于使用 EtherCAT 实现运动控制设备和系统的开发和集成。

对象字典和通讯功能可以合称为 COE 部分。

核心部分:对象字典——通讯功能和应用部分沟通的桥梁。

关键部分:通讯功能——通信规则(SDO、PDO 等)的实现。

重点部分:应用部分——决定了设备的具体功用,例如驱动器、IO 模块。

对象字典

对象字典是一种用于定义设备数据对象的格式和布局的机制。在 EtherCAT 中,对象字典描述了设备的数据结构、寄存器映射、参数配置等信息,以便其他设备或主站了解和访问这些数据。对象字典通常以标准格式进行定义,以确保设备之间能够进行正确的通信和交换数据。

服务数据对象(SDO)

PDO 和 SDO 是用于数据交换的机制,通常在实时通信中使用。PDO 用于在实时数据交换过程中传输周期性的过程数据,而 SDO 用于在非周期性数据交换过程中提供配置、参数设置和状态查询等服务。通过这些机制, EtherCAT 设备能够在实时通信中进行数据交换和设备控制。

伺服系统支持 SDO 服务,EtherCAT 主站可以通过使用 SDO 读写 驱动器伺服系统的对象字典,从而配置、监控、控制伺服系统。

SDO 采用的是客户端/服务器模型;SDO 操作中主站对应为客户端,伺服驱动器从站为服务器,所有传输都必须是客户端发起,服务器响应。

在传统 CANopen DS301 模式下,SDO 协议为了匹配 CAN 报文数据长度,一次只能传输 8 个字节。在 COE 增强模式下仅扩大有效载荷数据而不改变协议首部;在这种方式下,SDO 协议使用更大数据长度的邮箱,从而提高了大数据的传输效率。

过程数据对象(PDO)

PDO 一般用于实时的数据更新;其分为接收 PDO(RXPDO)和发送 PDO(TXPDO),前者的数据流方向是主站到从站,后者则是从站到主站。

伺服驱动器 的 PDO 功能支持同步周期的刷新方式,也支持非周期的更新方式。当主站选择为分布时钟同步模式时,PDO 将按同步周期更新;如果选择自由运行模式,那么 PDO 数据的更新将是非周期性的。

CiA 402 规范

CiA 402 是由CAN in Automation(CiA)组织发布的针对运动控制设备的 CANopen 设备配置和应用规范。CiA 402 定义了一系列对象字典、PDO 映射和 SDO 服务,以便于控制运动设备、配置参数和获取状态信息。该规范是专门面向运动控制设备的,包括驱动器、伺服控制器等。

其他资源

基于IMX8、ZYNQ、T3平台的IgH EtherCAT主站开发案例分享

Igh1.5.2 etherCAT接口分析教程 - 知乎

一种基于IGH开源框架改进的EtherCAT通信主站方法及系统与流程

IgH EtherCAT主站开发案例分享——基于NXP i.MX 8M Mini - 知乎

https://www.cnblogs.com/wsg1100/p/14433632.html

基于i.MX6处理器的EtherCAT主站的设计-伺服与运动控制-中国传动网

[工业互联-23]:EtherCat从站 - EtherCAT协议栈与工作原理, 软硬件解决方案-CSDN博客

【EtherCAT】4.实现一个成熟的从站 - 知乎

免费开源!IgH EtherCAT控制伺服电机方法分享!|linux|ethercat|驱动器_网易订阅

IGH_Master主站配置驱动伺服电机和变频器总结

EtherCAT 伺服控制功能块实现_ethercat伺服控制-CSDN博客

https://blog.csdn.net/gufuguang/category_11310794.html

https://patents.google.com/patent/CN110311846A/zh

GitHub - ahoarau/ethercat-drivers: r8169 EtherCAT driver for IgH EtherCAT Master for Linux

https://docs.etherlab.org/ethercat/1.5/pdf/ethercat_doc.pdf

https://patents.google.com/patent/CN115378761B/zh

https://www.cnblogs.com/pwl999/p/15534998.html

MyEthercat-IGH 1.5.2: Ethercat IGH 1.5.2 使用及二次开发

IgH(Igh EtherCAT Master for Linux)移植到搭载Linux系统的开发板_igh移植-CSDN博客

驱动器控制模式功能简介(CSP,CSV,CST等)_csp和pp区别 规划器-CSDN博客

工控自动化技术文摘:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(三):EtherCAT总线CSP,CSV,CST模式切换

经济型EtherCAT运动控制器(十):EtherCAT总线快速入门 - 知乎 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1528305.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

金融知识分享系列之:ATR指标

金融知识分享系列之:ATR指标 一、ATR指标二、指标原理三、海龟交易法应用1.计算开仓数量2.制定止损/加仓规则 四、ATR指标总结 一、ATR指标 利用ATR指标计算仓位,设置止损的规则名称:平均真实波动幅度参数:(默认14)组成&#xff…

CMeet系列技术生态沙龙---《探索未来:生成式AI赋能千行百业·杭州》

当前数字化浪潮下,生成式AI技术正成为推动产业升级、提升竞争力的关键力量。为深入探索未来AI技术的赋能作用,促进技术生态的繁荣与发展,CSDN-CMeet系列沙龙活动旨在搭建一个交流与探索的平台,通过分享前沿研究成果和应用案例&…

OpenCV实现OCR图片文本检测

一、操作步骤 把左边这样的图片,通过仿射变换转换成右边那样的图片。 然后再通过pytesseract读取图片内容得到图片中的文本就好了。 需要使用到: 仿射变换ocr识别 注:本文使用现成图片,轮廓检测较为明显,若是自己拍…

Css 样式记录

实现两栏布局如图所示样式&#xff1a; 方法1&#xff1a; <div style"display: flex; justify-content: space-between; width:100%;"> <div>1</div> <div>2</div> </div> 方法2&#xff1a; <div style"display: fle…

pytest ui自动化

chromedriver.exe 要对应已安装的chrome版本号

大数据面试题 —— Zookeeper

目录 ZooKeeper 的定义ZooKeeper 的特点ZooKeeper 的应用场景你觉得Zookeeper比较重要的功能ZooKeeper 的选举机制 ***zookeeper主节点故障&#xff0c;如何重新选举&#xff1f;ZooKeeper 的监听原理 ***zookeeper集群的节点数为什么建议奇数台 ***ZooKeeper 的部署方式有哪几…

C语言种sizeof()和strlen的区别

sizeof 是 C 语言内置的操作符关键字&#xff0c;而 strlen 是 C 语言库函数&#xff1b; sizeof 仅用于计算数据类型的大小或者变量的大小&#xff0c;而 strlen 只能以结尾为 \0 的字符串作为参数&#xff1b; 编译器在编译时就计算出了 sizeof 的结果&#xff0c;而 strlen …

02_设计模式

文章目录 设计模式设计模式分类UML类图设计模式的原则 常用设计模式创建型设计模式单例设计模式饿汉模式懒汉模式&#xff08;线程不安全&#xff09;懒汉模式&#xff08;线程安全&#xff09;- Synchronized懒汉模式&#xff08;线程安全&#xff09;- Double Check懒汉模式&…

Android 系统源码快速入门

Android源码快速入门 今天分享的内容是Android源码快速入门&#xff0c;主要分为以下几个步骤&#xff1a; * 硬件要求 * 虚拟机安装 * 开发环境搭建 * 下载编译源码 * 从一个简单的实际开发需求体验 Framework 开发硬件要求 用于 Android Framework 开发的电脑需要较强的 C…

算法沉淀——贪心算法二(leetcode真题剖析)

算法沉淀——贪心算法二 01.最长递增子序列02.递增的三元子序列03.最长连续递增序列04.买卖股票的最佳时机 01.最长递增子序列 题目链接&#xff1a;https://leetcode.cn/problems/longest-increasing-subsequence/ 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子…

【第十一章】改进神经网络学习方式-Softmax

我们将主要使用交叉熵成本来解决学习减速的问题。然而&#xff0c;我想简要描述另一种解决方法&#xff0c;基于所谓的 softmax 层神经元。在本章的剩余部分&#xff0c;我们实际上不会使用 softmax 层&#xff0c;因此如果你时间紧迫&#xff0c;可以跳到下一节。然而&#xf…

Vue3 依赖注入provide与inject

简介 关于provide与inject下面是vue官网上的一些介绍 通常情况下&#xff0c;当我们需要从父组件向子组件传递数据时&#xff0c;会使用props。想象一下这样的结构&#xff1a;有一些多层级嵌套的组件&#xff0c;形成了一颗巨大的组件树&#xff0c;而某个深层的子组件需要一个…

【Flask开发实战】防火墙配置文件解析(二)之shell读取内容

一、前言 上一篇文章中&#xff0c;介绍了防火墙配置文件包含的基本元素和格式样式&#xff0c;并模拟了几组有代表性的规则内容&#xff0c;作为基础测试数据。在拿到基础测试数据后&#xff0c;关于我们最终想解析成的数据是什么样式的&#xff0c;其实不难看出&#xff0c;…

GateWay路由规则

Spring Cloud GateWay 帮我们内置了很多 Predicates功能&#xff0c;实现了各种路由匹配规 则&#xff08;通过 Header、请求参数等作为条件&#xff09;匹配到对应的路由 1 时间点后匹配 server:port: 8888 spring:application:name: gateway-servicecloud:nacos:discovery:…

四.排序(冒泡/选择)

目录 11-排序介绍 常见排序算法: 12-冒泡排序介绍 代码要求: 思路: 13-冒泡排序 代码: 14-选择排序 简单写法: 好的写法: 11-排序介绍 排序&#xff1a;将一组“无序”的记录序列调整为“有序”的记录序列。 列表排序&#xff1a;将无序列表变为有序列表 输入&#…

C++第七弹---类与对象(四)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 目录 1、拷贝构造函数 1.1、概念 1.2、特征 2、运算符重载 2.1、等号运算符重载 总结 1、拷贝构造函数 1.1、概念 在现实生活中&#xff0c;可能…

【C++】手撕AVL树

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大二&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;能直接手撕AVL树。 > 毒鸡汤&#xff1a;放弃自…

Java安全基础 必备概念理解

Java安全基础 关键概念汇总 文章目录 Java安全基础 关键概念汇总前置知识1.构造器this以及包的使用2.继承3.重写/ 重载 / super4.多态5.区分和equals方法6.toString的使用7.Object的概念8.static,final,代码块static代码块final 9.动态代理10.类的动态加载1)类加载器含义&#…

leetCode刷题 17. 电话号码的字母组合

题目&#xff1a; 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 示例 1&#xff1a; 输入&#xff1a;digits "23&q…

操作系统练习-操作系统的基本概念

操作系统的基本概念 ----------------------------------------------------------------------------------------------------------------------------- 1.操作系统是扩充&#xff08; )功能的第一层系统软件 A.软件 B.裸机 C.机器语言 …