EtherCAT总线学习笔记
| EtherCAT是由德国BECKHOFF自动化公司于2003年提出的 实时工业以太网技术。它具有高速和高数据有效率的特点,支持多种设备连接拓扑结构。其 从站节点使用专用控制芯片,主站使用标准的以太网控制器。 EtherCAT的主要特点如下: ① 广泛的适用性,任何带商用以太网控制器的控制单元都可作为EtherCAT主站;从小型的16位处理器到使用3GHz处理器的PC系统,任何计算机都可以成为EtherCAT控制系统。 ② 完全符合以太网标准,EtherCAT可以与其他以太网设备以及协议并存同一总线,以太网交换机等标准结构组件也可以用于EtherCAT。 ③ 无需从属子网,复杂的节点或只有2位的I/O节点都可以用作EtherCAT从站; ④ 高效率,最大化利用以太网带宽进行用户数据传输; ⑤ 刷新周期短,可以达到小于100us的数据刷新周期,可以用于伺服技术中底层的闭环控制; ⑥ 同步性能好,各从站节点设备可以达到小于1us的时钟同步精度; 目前,EtherCAT已经接入多种相关国际标准: IEC61158中的Type12; IEC61784中的CPF12; IEC61800中,EtherCAT支持CANOPEN DS402和SERCOS; ISO15745中,EtherCAT支持DS301; EtherCAT支持多种设备连接拓扑结构:线形、树形和星形结构,可以选用的物理介质有 100Base-TX标准以太网电缆和光揽,使用100Bbase-TX电缆时站间距离可达100m,整个网络最多可连接65535个设备;使用 快速以太网“全双工”通信技术构成 主从式的环形结构如下: |
| 1、概述: EtherCAT是一种实时工业以太网技术,它充分利用了以太网的“全双工”特性。使用主从模式介质访问控制(MAC),主站发送以太网帧给各从站。从站从数据帧中抽取数据或将数据插入数据帧。主站使用标准的以太网接口卡,从站使用专门的EtherCAT从站控制器ESC(EtherCAT Slave Controller);EtherCAT物理层使用 标准的以太网物理层器件。 从以太网的角度来看, 一个EtherCAT网段就是一个以太网设备,它接收和发送标准的ISO/IEC8802-3以太网数据帧; 但是,这种以太网设备并不局限于一个以太网控制器及相应的微处理器,它可由多个EtherCAT从站组成( 如下图2.1所示),这些从站可以直接处理接收的报文,并从报文中提取或插入相关的用户数据,然后将该报文传输到下一个EtherCAT从站; 最后一个EtherCAT从站发回经过完全处理的报文,并由第一个从站作为响应报文将其发送给控制单元。 // 2、EtherCAT主站的组成: EtherCAT主站使用 标准的以太网控制器,传输介质通常使用100Base-TX规范的5类UTP线缆( 如下图2.2所示);通信控制器完成以太网数据链路的介质访问控制(MAC,Media Access Control)功能,物理层芯片PHY实现数据编码、译码和收发,它们之间通过一个MII(Media Independent Interface)接口交互数据; MII是标准的以太网物理层接口,定义了与传输介质无关的标准电气与机械接口,使用这个接口将 以太网数据链路层与物理层完全隔离开,使以太网可以方便的选用任何传输介质;隔离变压器实现信号的隔离,提高通信的可靠性。 在基于PC的主站中,通常使用网络接口NIC(Network Interface Card),其中的网卡芯片集成了 以太网通信控制器和物理数据收发器; 而在嵌入式主站中,通信控制器通常嵌入到微控制器中。 // 3、EtherCAT从站的组成: EtherCAT从站设备同时实现 通信和控制应用 两部分功能, 其结构如图2.3所示;由以下4部分组成: 1、EtherCAT从站控制器ESC: EtherCAT从站通信控制器芯片ESC负责处理EtherCAT数据帧,并使用双端口存储区实现EtherCAT主站与从站本地应用数据的交换,各个从站ESC按照各自在环路上的物理位置顺序移位读写数据帧;在报文经过从站时,ESC从报文中提取发送给自己的输出命令数据并将其存储到内部存储区,输入数据从内部存储区又被写到相应的子报文中;数据的提取和插入都是由数据链路层硬件完成的。 ESC具有 四个数据收发端口,每个端口都可以收发以太网数据帧。数据帧在ESC内部的传输顺序是固定的( 如下图2.4所示),通常,数据从端口0进入到ESC,然后按照 端口0-->端口3-->端口1-->端口2-->端口0的顺序依次传输;如果ESC检测到某个端口没有外部连接,则自动闭合此端口,数据将自动回环并转发到下一个端口,使用多个数据端口可以构成多种物理拓扑结构。 ESC使用两种物理层接口模式:MII和EBUS。MII是标准的以太网物理层接口,使用外部物理层芯片,一个端口的传输延时大约500ns; EBUS是德国BECKHOFF公司使用LVDS(Low Voltage Differential Signaling)标准定义的数据传输标准, 可以直接连接ESC芯片,不需要额外的物理层芯片,从而避免了物理层的附加传输延时,一个端口的传输延时约为100ns,EBUS最大传输距离为10m;适用于 放置距离较近的设备之间的连接。 2、从站控制微处理器: 微处理器负责处理EtherCAT通信和完成控制任务。微控制器从ESC读取控制数据,实现设备控制功能,并采样设备的反馈数据,写入ESC,由主站读取;通信过程完全由ESC处理,与设备控制微处理器响应时间无关;从站控制微处理器的性能选择取决于设备控制任务,可以使用8位、16位的单片机及32位的处理器。 3、物理层器件:从站使用MII接口时,需要使用物理层芯片PHY和隔离变压器等标准以太网物理层器件;使用EBUS时不需要任何其他芯片。 // 4、EtherCAT物理拓扑结构: 在 逻辑上,EtherCAT网段内从站设备的布置构成一个 开口的环形总线。在开口的一端,主站设备直接或者 通过标准以太网交换机插入以太网数据帧,并在另一端接收经过处理的数据帧;所有的数据帧都被从第一个从站设备转发到后续的节点;最后一个从站设备将数据折返到主站。 EtherCAT从站的数据帧处理机制允许 在EtherCAT网段内任一位置使用分支结构,同时 不打破逻辑环路;分支结构可以构成各种物理拓扑(如线形、树形、星形, 菊花链形)以及各种拓扑结构的组合, 从而使设备连接布线非常灵活方便; 如下图2.5所示,主站发出数据帧后的传输顺序如图1~14,其中 从站8使用了ESC全部4个端口,构成了星形拓扑。 // |
| 1、EtherCAT报文的整体格式: 每 个EtherCAT 子报文 包括 子报文头、数据域和 相 应的工作计数器( WKC , Working Counter) • WKC 记录了 子报文被从站操作 的次数 , 主站 为 每 个通 信服务子 报文设置预期 的 W K C; 发送子 报文中的工作计数器初 值 为0,子报文被从站正确处理后,工作计数器的 值 将增加 一 个增量( 具体多大,后面会讲 ) , 主站 比 较返回子报文中的 WKC 和 预期W KC 来判断子报文是否被正 确处理 。 WKC 由 ESC 在处理数据帧 的同时进 行 处理, 不同的通 信 服务对 WKC 的增加方 式不同 。 // 2、EtherCAT的子报文: // |
| 1、总体介绍: 一个EtherCAT网段 相当于 一个以太网设备, 主站首先使用 以太网数据帧头 的 MAC地址寻址到网段;然后 使用 EtherCAT的 子报文头中的 32位地址 寻址到段内设备。 段内寻址有两种方式:设备寻址 和 逻辑寻址 。 设备寻址 针对 某一个从站 进行读写操作; 逻辑寻址 面向过程数据, 可以实现多播, 同一个子报文 可以 读写 多个从站设备。 // 2、EtherCAT网段寻址( MAC地址阶段 ): 根据 EtherCAT主站 及其 网段的 连接方式不同,可以使用 两种方式 寻址到网段: (1) 直连模式(现在自动化采用的模式): 一个 EtherCAT 网段 直接连 到 主站设备 标准以太网端口。此时,主站 使用 广播MAC地址, 如下图: ( 2)开放模式( 通过交换机组网 ): EtherCAT网段连接到一个 标准以太网 交换机上;此时,一个网段 需要 一个MAC 地址, 主站发送的EtherCAT数据帧中 目的地址 就是 它所控制的 网段的MAC地址。 那么, 每个EtherCAT网段 内的 第一个从站设备 有一个 ISO/IEC 8802.3的MAC地址,这个地址表示 整个网段,这个从站称为 段地址从站,它能够交换 以太网帧内的 目的地址区和源地址区。 如下图: // 3、设备寻址( 经历MAC网段寻址后的,专属EtherCAT子报文的寻址 ): 在设备寻址时, EtherCAT子报文 内的 32位地址 分为 16位从站设备地址 和 16位从站设备内部物理存储空间地址( ESC协议芯片里面的寄存器地址 )。 16位从站设备地址可以寻址65535个从站设备,每个设备最多可以有64K字节的本地空间。 设备寻址有 两种不同 的寻址机制: (1)顺序寻址(自动增量寻址): 顺序寻址时,从站的地址 由其在网段内的 连接位置确定,用一个 负数来表示 每个从站 在网段内 由接线顺序决定的位置。顺序寻址子报文 在经过 每个从站设备时,其 位置地址加1,从站在接收报文时,地址 为0的报文就是寻址到自己的报文。 在实际的应用中,顺序寻址 主要用于 启动阶段。主站配置 地址 给各个从站,此后,可以使用 与物理地址无关的 站点地址 来寻址从站( 也就是 设置寻址 )。 (2)设置寻址: 设置寻址 时, 从站的地址 与其 在网段内的 连接顺序 无关。地址可以由 主站 在数据链路 启动阶段配置给从站;也可以 由从站 在上电初始化的时候 从自身的 配置数据存储区 加载,然后 主站 在链路启动阶段 使用 顺序寻址 方式读取 各个从站的设置地址,并在后续运行中使用。 // 4、逻辑寻址与FMMU: 当EtherCAT进入周期性数据交换时,报文将以逻辑寻址的方式传输;使用的报文有LRD、LWR、LRW。在逻辑寻址时,EtherCAT总线上的所有从站的ESC内存将被看作一个整体,不再需要目标设备地址,而是使用逻辑地址; 简单的说,每个从站需要交换的数据内容被映射到逻辑寻址报文数据区的指定位置上,当报文通过总线传输时,每个从站会从它可访问的位置获取数据,并将需要返回给主站的数据写入进去。 每个FMMU映射单元需要以下配置信息:数据逻辑位起始地址、从站物理内存起始地址、位长度、表示映射方向的类型位(读或写相对于从站而言)。 // |
| 1、基本介绍: EtherCAT子报文所有的服务都是以主站操作描述的。数据链路层 规定了 从站内部物理存储、读写与交换( 读取并马上写入)数据的服务;读写操作和寻址方式 共同决定了子报文的通信服务类型,由 子报文中的命令字节表示。 2、通信服务列表: WKC值的规则: 主站接收到返回数据 帧 后 ,检 查子报文中的 WKC,如 果不等于预期值,则表示此子 报文没 有 被 正确 处 理。子 报文的 WKC预期 值 与 通信服务类 型 和 寻 址地址 相关 。子 报文经 过 某一 个 从站时,如果是 单独 地 读或写 操作 , WKC 加l ; 如果 是 读写操作 , 读 成功 时WKC 加1, 写 成功 时WKC 加2 , 读 写 全部完 成 时WKC 加3 ; 子 报文 由 多 个 从站处理时, WKC 是各 个 从站处理结果的累加 。 3、实际例子解析: |
| 1、分布时钟的描述: 分布时钟机制 使 所有从站 都同步于 同一个 参考时钟。主站连接的 第一个具有 分布时钟功能的 从站作为 参考时钟,以参考时钟 来同步 其他设备和主站 的从时钟。为了实现 精确的时钟同步 控制,必须测量和计算 数据传输延时 和 本地时钟偏移 ,并补偿 本地时钟偏移。 同步时钟涉及到如下 6个时间 概念: ① 系统时间: 系统时间 是 分布时钟 所使用的 系统计时。系统时间从 2000年1月1日零点开始,使用 64位二进制 变量表示,单位为纳秒(ns),最大可计时500年;也可以使用 32位的二进制变量表示,32位时间值最大可以表示4.2秒,通常可以 用于通信和时间标记。 ② 参考时钟和从时钟: EtherCAT协议规定 主站连接的 第一个 具有分布时钟功能的 从站 作为 参考时钟, 其他从站 的时钟 称为 从时钟。参考时钟 被用于 同步其他从站设备的从时钟和主站时钟;参考时钟 提供EtherCAT系统时间。 ③ 主站时钟: EtherCAT主站也具有计时功能,称为 主站时钟。 主站时钟 可以在 分布时钟系统 中作为 从时钟 被同步。 在 初始化阶段,主站 可以按照 系统时间 的格式发送 主站时间 给 参考时钟从站,使 分布时钟使用系统时间计时。 ④ 本地时钟、时钟初始偏移量和时钟漂移: 每个DC从站都有 本地时钟,本地时钟 独立运行,使用本地时钟信号计时。 系统启动时,各从站的 本地时钟和参考时钟 之间 有一定差值,这个差值称为 时钟初始偏移量。 在运行过程中,由于 参考时钟和DC从站时钟 使用各自的时钟源 等原因,它们的计时周期存在一定的偏移,这将导致时钟运行不同步, 本地时钟产生偏移。 ⑤ 本地系统时间: 每个DC从站的 本地时钟 经过 补偿和同步之后 都产生一个 本地系统时间,分布时钟同步机制 就是使 各个从站的本地系统时间保持一致。 ⑥ 传输延时: 数据帧 在 从站之间 传输时会产生一定的延迟,其中包括 设备内部和物理连接延迟 。 /// |
| 1、周期性过程数据通信: 周期性过程 数据通信 通常 使用FMMU进行逻辑寻址,主站可以使用 逻辑读、写或读写 命令同时操作多个从站。 在 周期性数据通信模式 下,主站和从站有 多种 同步运行模式。 从站设备 同步运行模式: (1)自由运行(Freerun) 在自由模式下,本地控制周期 由一个 本地定时器 中断产生; 周期时间 可以由 主站设定,这是 从站的可选功能。 自由运行的周期如下图:其中, T1为 本地微处理器从ESC复制数据并计算输出数据 的时间; T2为 输出硬件延时; T3为 输入锁存偏移时间。 (2)同步于 数据输入或输出 事件(SM) 本地周期在发生 数据输入或输出事件 的时候触发, 主站 可以将过程数据帧的 发送周期 写给从站, 从站 可以 检查是否支持这个周期时间或对周期时间进行本地优化。从站可以选择支持这个功能。通常同步于数据输出事件,如果从站只有输入数据,则同步与数据输入事件。 如下图所示: (3)同步于 分布式时钟 同步事件(DC) 本地周期 由 SYNC事件触发,主站 必须在SYNC事件之前 完成数据帧的发送。 此时要求 主站时钟 也要同步于参考时钟。 如下图所示: 为了进一步优化从站同步性能,从站 应该在数据收发事件发生时 从接收到的过程数据帧复制输出数据,然后 等待SYNC信号到达后 继续本地操作。 数据帧 必须 比SYNC信号提前T1时间 到达, 从站 在SYNC事件之前已经完成数据交换和控制计算,接收到SYNC信号后 可以马上执行输出操作,从而进一步提高同步性能。 如下图所示: 主站设备 同步运行模式: 主站有以下 两种同步模式: (1)周期性模式( SM模式): 在周期性模式下, 主站周期性地发送过程数据帧。 主站周期通常 由一个本地定时器控制; 从站 可以运行在 自由运行模式或同步于接收数据事件模式。 对于运行在同步模式的从站,主站应该检查相应的过程数据帧的周期时间,保证大于从站支持的最小周期时间。 (2)DC模式: 在DC模式下, 主站运行与周期性模式类似,只是 主站 本地周期应该和参考时钟同步。主站本地定时器 应该根据 发布参考时钟的APMW报文 进行调整;在运行过程中,用于 动态补偿时钟漂移 的 APMW报文 返回主站后,主站时钟 可以根据读回的参考时钟时间进行调整,使之大致同步于参考时钟时间。 在DC模式下, 所有支持DC的从站 都应该同步于DC系统时间; 主站也应该使其通信周期同步于DC参考时钟时间。 如下图所示: 主站的本地运行 由 本地定时器 启动,本地定时器 应该 比DC参考时钟定时存在一个提前量( 让数据提前到达从站), 提前量为以下时间之和: /// 2、非周期性邮箱数据通信: EtherCAT协议中 非周期性数据通信 称为 邮箱数据通信, 它可以双向进行--主站到从站 和 从站到主站。 它 支持全双工、两个方向独立通信 和 多用户协议。从站到从站 的通信 由主站作为路由器来管理。 通常邮箱通信只 针对一个从站,所以报文中 使用设备寻址模式 。 报文的格式如下图: (1)主站到从站通信--写邮箱命令: 主站 发送 写数据区命令 将发送邮箱数据给 从站。主站 需要检查 从站邮箱命令应答报文中 工作计数器WKC; 如果工作计数器 为1,表示 写命令成功; 否则,如果 工作计数器 没有增加,通常因为 从站没有读完上一个命令 或 在限定时间内没有响应;主站 必须重新发送 邮箱数据命令。 (2)从站到主站通信--读邮箱命令: 从站有数据要发送给主站,必须先将数据写入输入邮箱缓存区,然后 由主站来读取。 主站 发现从站ESC输入邮箱数据区 有数据等待发送时,会尽快的 发送适当的读指令 来读取从站数据; 主站 有两种方法 来测定 从站是否已经将邮箱数据填入输入数据区: 看书!! 邮箱通信出错时, 应答数据 定义如下表: /// |
| 1、基本概述: EtherCAT状态机 负责协调 主站和从站 应用程序 在初始化和运行时 的状态关系 。EtherCAT设备必须支持 四种状态 ,另外还有 一个可选 的状态: ① Init:初始化,简写为I; ② Pre-Operational:预运行,简写为P; ③ Safe-Operational:安全运行,简写为S; ④ Operational:运行,简写为O; ⑤ Boot-Strap:引导状态(可选),简写为B; 2、状态转换规则: 从 初始化状态 向 运行状态 转换时,必须按照 “初始化-->预运行-->安全运行-->运行”的顺序转换, 不可以越级转换。 从 运行状态 返回时, 可以 越级转换。 引导状态 为可选状态,只允许与 初始化状态 之间相互转换。所有的状态改变,都 由主站发起,主站向从站发送 状态控制命令 请求新的状态,从站响应此命令,执行所请求的状态转换,并将结果写入从站 状态指示变量;如果请求的状态转换失败,从站将给出错误标志。 状态图如下所示: 3、状态的详解: (1)Init:初始化 初始化状态 定义了 主站与从站 在应用层的初始通信关系。此时,主站与从站 应用层不可以直接通信,主站 使用初始化状态来 初始化ESC的一些配置寄存器;如果从站支持邮箱通信,则配置邮箱通道参数。 (2)Pre-Operational:预运行 在预运行状态下, 邮箱通信被激活。主站与从站 可以使用邮箱通信来交换与应用程序相关的初始化操作和参数。 在这个状态下 不允许过程数据通信。 (3)Safe-Operational:安全运行 在 安全运行 状态下,从站应用程序 读入输入数据,但是 不产生输出数据。设备无输出,处于“安全状态”。此时,仍然可以使用 邮箱通信。 (4)Operational:运行 在 运行状态 下,从站应用程序读入输入数据,主站应用程序发出输出数据,从站设备产生输出信号。此时,仍然可以使用邮箱通信。 (5)Boot-Strap:引导状态( 可选 ) 引导状态的功能 是 下载设备固件程序。主站可以 使用FoE协议 的 邮箱通信 下载一个新的固件程序给从站。 4、EtherCAT状态转换过程总结: |
| 1、抄写头文件: 更加深刻认识到 EtherCAT报文 的数据帧格式和特点。 / 2、从站设备设备对象的定义与实现: SM通道数量与配置关系: 从站芯片配置SM通道的寄存器地址: / 3、主站设备对象的定义与实现: 主站启动流程??接下来,找合适的平台搭建主站 开发环境:目前决定使用 NPU+linux系统编程;好处:后期调试方便,有各种工具可以抓包。 / |
相关文章:
EtherCAT总线学习笔记
一、EtherCAT的概述: EtherCAT是由德国BECKHOFF自动化公司于2003年提出的 实时工业以太网技术。它具有高速和高数据有效率的特点,支持多种设备连接拓扑结构。其 从站节点使用专用控制芯片,主站使用标准的以太网控制器。 EtherCAT的主要特点如…...
自学微信小程序的第八天
DAY8 1、使用动画API即可完成动画效果的制作,先通过wx.createAnimation()方法获取Animation实例,然后调用Animation实例的方法实现动画效果。 表40:wx.createAnimation()方法的常用选项 选项 类型 说明 duration number 动画持续时间,单位为毫秒,默认值为400毫秒 timing…...
WebRTC与PJSIP:呼叫中心系统技术选型指南
助力企业构建高效、灵活的通信解决方案 在数字化时代,呼叫中心系统的技术选型直接影响客户服务效率和业务扩展能力。WebRTC与PJSIP作为两大主流通信技术,各有其核心优势与适用场景。本文从功能、成本、开发门槛等维度为您深度解析,助您精准匹…...
Vue-Flow绘制流程图(Vue3+ElementPlus+TS)简单案例
本文是vue3Elementplusts框架编写的简单可拖拽绘制案例。 1.效果图: 2.Index.vue主代码: <script lang"ts" setup> import { ref, markRaw } from "vue"; import {VueFlow,useVueFlow,MarkerType,type Node,type Edge } fro…...
PDF文件转换为PNG图像
要实现将PDF文件转换为PNG图像,可以使用Python的pdf2image库。pdf2image是一个基于poppler和Pillow(PIL)的库,可以将PDF页面转换为图像。 首先,需要安装必要的库: pip install pdf2image在安装pdf2image时…...
c++中的静态多态和动态多态简介
在 C 中,多态性(Polymorphism) 分为 静态多态(Static Polymorphism) 和 动态多态(Dynamic Polymorphism),二者通过不同的机制实现代码的灵活性。以下是详细对比和核心要点࿱…...
如何通过 LlamaIndex 将数据导入 Elasticsearch
作者:来自 Elastic Andre Luiz 逐步介绍如何使用 RAG 和 LlamaIndex 提取数据并进行搜索。 在本文中,我们将使用 LlamaIndex 来索引数据,从而实现一个常见问题搜索引擎。 Elasticsearch 将作为我们的向量数据库,实现向量搜索&am…...
Boosting
Boosting 学习目标 知道boosting集成原理和实现过程知道bagging和boosting集成的区别知道AdaBoost集成原理 Boosting思想 Boosting思想图 每一个训练器重点关注前一个训练器不足的地方进行训练通过加权投票的方式,得出预测结果串行的训练方式 1 什么是boosting 随着…...
【通俗讲解电子电路】——从零开始理解生活中的电路(一)
导言:电子电路为什么重要? ——看不见的“魔法”,如何驱动你的生活? 清晨,当你的手机闹钟响起时,你可能不会想到,是电子电路在精准控制着时间的跳动;当你用微波炉加热早餐时&#…...
LeetCode72编辑距离(动态规划)
给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 示例 1: 输入:word1 “horse”, word2 “ros” 输出…...
rabbitmq单向ssl认证配置与最佳实践(适用于各大云厂商)
背景 这里后补直接上代码 最佳实践 主要从两个方面保证消息不丢失 RabbitMQ方面 创建队列时开启持久化创建交换器时开启持久化创建镜像队列(可选)开启延迟队列(可选) 代码层面 开启生产者到交换器回调参数开启交换器到队列…...
【K8S】Kubernetes 基本架构、节点类型及运行流程详解(附架构图及流程图)
Kubernetes 架构 k8s 集群 多个 master node 多个 work nodeMaster 节点(主节点):负责集群的管理任务,包括调度容器、维护集群状态、监控集群、管理服务发现等。Worker 节点(工作节点):实际运…...
Windows版FFmpeg使用及B站视频下载示例python源码
Windows版FFmpeg使用及B站视频下载示例python源码 FFmpeg介绍和下载 FFmpeg 是一个功能强大、灵活且广泛使用的多媒体处理工具,无论是在专业领域还是日常使用中,都能满足各种多媒体处理需求。FFmpeg 是一个开源项目,遵循 LGPL 或 GPL 许可。…...
飞书考勤Excel导入到自己系统
此篇主要用于记录Excel一行中,单条数据的日期拿取,并判断上下班打卡情况。代码可能满足不了大部分需求,目前只够本公司用,如果需要,可以参考。 需要把飞书月度汇总的考勤表导入系统中可以参考下。 下图为需要获取的年…...
【leetcode hot 100 560】和为K的子数组
解法一:用左右指针寻找字串,如果和>k,则减少一个数(left);如果和<k,则加上一个数(right)。 class Solution {public int subarraySum(int[] nums, int k) {int nu…...
EGO-Planner的无人机视觉选择(yolov5和yolov8)
EGO-Planner的无人机视觉选择(yolov5和yolov8) 效果 yolov5检测效果 yolov8检测效果 一、YOLOv8 vs YOLOv5:关键差异解析 1. 训练效率:为何YOLOv8更快? 架构轻量化 YOLOv8采用C2f模块(Cross Stage Partia…...
C++ | 面向对象 | 类
👻类 👾语法格式 class className{Access specifiers: // 访问权限DataType variable; // 变量returnType functions() { } // 方法 };👾访问权限 class className {public:// 公有成员protected:// 受保护成员private:// 私有成员 }…...
性能测试分析和调优
步骤 性能调优的步骤 性能调优的步骤: 1.确定问题:根据性能测试的结果来分析确定bug。–测试人员职责 2.分析原因:分析问题产生的原因。----开发人员职责 3.给出解决方案:可以是修改软件配置、增加硬件资源配置、修改代码等----…...
阿里云oss文件上传springboot若依java
一、第一步 引入依赖 <!-- 阿里云OSS --> <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId> </dependency> 二、第二步 application.yml #阿里云oss服务配置 aliyun:oss:endpoint: …...
【自学笔记】Oracle基础知识点总览-持续更新
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Oracle 数据库基础知识点总览1. 数据库安装与配置2. SQL基础3. PL/SQL基础4. 数据库管理5. 高级主题 总结 Oracle 数据库基础知识点总览 1. 数据库安装与配置 安装…...
使用create_sql_query_chain工具根据自然语言问题生成SQL查询,踩坑版
1. 开启调试模式 from langchain import debugdebug True # 启用调试模式说明: 这里从 langchain 库中导入了一个名为 debug 的变量(或模块),然后将它设置为 True。这通常用来启用调试模式,方便开发者在程序运行时看…...
PyInstaller 打包python 程序 成 可执行文件
pyinstaller --onefile --name my_project --add-data "config/config.json:config" main.py 要将整个 Python 项目打包成一个可执行文件,可以使用 PyInstaller 来完成这个任务。以下是如何将整个项目打包成可执行文件的步骤: 1. 安装 PyIns…...
生鲜行业智能化供应链解决方案技术白皮书
行业痛点与技术挑战 损耗控制难题 行业平均损耗率达18%-25%,需构建动态定价模型与智能分拣系统 冷链管理复杂度 全程温控数据采集点超过23个/车次,异常响应延迟需压缩至90秒内 供需预测偏差 传统模式预测准确率不足65%,亟需AI驱动需求预测体…...
preg_replace 与 str_replace 的比较与选择
preg_replace 与 str_replace 的比较与选择 ——PHP字符串处理的核心工具深度解析 一、核心功能定位 在PHP的字符串处理中,str_replace和preg_replace是两种最常用的替换函数,但其设计目标和应用场景存在本质差异: str_replace 简单字符串替…...
无人机自主导航与避障技术!
自主导航的实现 环境感知:通过传感器(如摄像头、激光雷达、超声波传感器等)获取周围环境信息。 地图构建:利用SLAM(同步定位与地图构建)技术,实时生成环境地图并确定无人机的位置。 路径规划…...
密码学(哈希函数)
4.1 Hash函数与数据完整性 数据完整性: 检测传输消息(加密或未加密)的修改。 密码学Hash函数: 构建某些数据的简短“指纹”;如果数据被篡改,则该指纹(以高概率)不再有效。Hash函数…...
深入探索 STM32 微控制器:从基础到实践
一、引言 在当今的嵌入式系统领域,STM32 系列微控制器凭借其高性能、低功耗、丰富的外设以及广泛的应用场景,成为了众多开发者的首选。无论是在工业控制、智能家居、医疗设备,还是在消费电子等领域,STM32 都展现出了强大的生命力…...
React 常见面试题及答案
记录面试过程 常见问题,如有错误,欢迎批评指正 1. 什么是虚拟DOM?为什么它提高了性能? 虚拟DOM是React创建的一个轻量级JavaScript对象,表示真实DOM的结构。当状态变化时,React会生成新的虚拟DOM…...
SpringSecurity 实现token 认证
配置类 Configuration EnableWebSecurity EnableGlobalMethodSecurity(prePostEnabledtrue) public class SpringSecurityConfig extends WebSecurityConfigurerAdapter { Bean Override public AuthenticationManager authenticationManagerBean() throws Exception {return s…...
【详解 | 辨析】“单跳多跳,单天线多天线,单信道多信道” 之间的对比
文章目录 1. 单跳 & 多跳2. 单天线 & 多天线3. 单信道 & 多信道4. 小区内通信 & 小区间通信5. 更多辨析5.1 无线Mesh网络,Ad Hoc网络,无线传感器网络(MSN)5.2 “单天线/多天线”与“单信道/多信道”的区别 6. 工业…...
