CANopen TPDO 配置详解:对象 1800h、1A00h 与实践指南

目录


引言

在stm32上配置电机驱动器的CANOPEN,各种报文配置特别是配置TPDO真的是件很麻烦的事,对着文档进行配置都要配半天,现在越来越多的机器人开始用伺服驱动了,最近因为项目原因又复习了下CANOPEN的知识,整理成文章,以便日后忘了能直接看自己写的文章,大部分伺服驱动的对象字典都是通用的,可能也就各个索引子索引的默认值不一样而已,因此学会本文就能学会市面上所有主流的伺服驱动器的CANOPEN配置了,由于SDO太简单了本文不讲,就讲解PDO最关键的两个对象1800和1A00。

CANopen 是一种基于 CAN (Controller Area Network) 总线的高层通信协议和设备规范,广泛应用于自动化领域。在 CANopen 网络中,过程数据对象 (Process Data Objects, PDO) 用于实时传输过程数据。其中,传输 PDO (Transmit PDO, TPDO) 由设备主动发送给网络上的其他设备,例如传感器发送测量值,驱动器反馈状态等。

正确配置 TPDO 对于确保 CANopen 系统中数据交换的效率和可靠性至关重要。TPDO 的配置主要涉及两个核心对象:通讯参数对象(如 1800h 系列,用于定义 TPDO 如何发送)和映射参数对象(如 1A00h 系列,用于定义 TPDO 包含什么数据)。

本文将详细解释与 TPDO1 相关的通讯参数对象 1800h 和映射参数对象 1A00h 的各个子索引及其含义,并通过一个具体的配置实例,一步步指导读者如何通过服务数据对象 (Service Data Objects, SDO) 来配置 TPDO1。


TPDO 通讯参数详解 (对象 1800h)

对象索引 1800h (通常代表 TxPDO1 Communication Parameter) 用于配置第一个发送过程数据对象 (TXPDO1) 的通信设置。它定义了 TXPDO1 如何发送,例如使用哪个 CAN ID,什么时候发送(传输类型),以及发送的最小间隔等。该对象包含一系列子索引,下面分别介绍。

1800h/00h: 子索引数量

  • 含义: 子索引数量 (Number of sub-indices)。
  • 数据类型: UNSIGNED8 (1 字节)。
  • 作用: 表示此对象 (1800h) 有效的子索引数量。根据 CiA402 标准和常见的对象字典,TXPDO 通讯参数通常包含 6 个子索引 (01h06h),因此这个值通常是 6。

1800h/01h: COB-ID used by PDO

  • 含义: 该 TXPDO 的 CAN 标识符 (COB-ID)。
  • 数据类型: UNSIGNED32 (4 字节)。
  • 作用: 这是 TXPDO1 报文在 CAN 总线上使用的唯一标识符。通常,低 11 位(对于标准帧)或低 29 位(对于扩展帧)是实际的 CAN-ID。此 32 位值中的 Bit 31 是一个重要的标志位:
    • 如果 Bit 31 置 1 (逻辑值,对应十六进制值的最高位为 8,例如 80000000h),表示禁用该 TXPDO 的发送 (PDO is not valid)。
    • 如果 Bit 31 置 0 (逻辑值,对应十六进制值的最高位为 0,例如 00000000h),表示使能该 TXPDO 的发送 (PDO is valid and active)。
    • CiA301 标准规定了默认的 TPDO COB-ID 分配方案。例如,TPDO1 的默认 COB-ID 通常是 180h + Node ID。然而,许多驱动器(如 CiA402)使用 280h + Node ID 作为 TPDO1 的默认值。请务必查阅您设备的手册以确认准确的默认值
    • 示例:假设节点 ID 为 1,且设备使用 280h + Node ID 作为 TPDO1 默认值,则默认 COB-ID 为 281h。要使能发送,写入的值是 00000281h;要禁用发送,写入的值是 80000281h

1800h/02h: Transmission Type

  • 含义: 该 TXPDO 的传输类型。
  • 数据类型: UNSIGNED8 (1 字节)。
  • 作用: 定义了设备何时发送该 TXPDO 报文:
    • 0: 同步循环传输 (Synchronous Cyclic) - 收到 SYNC 报文后发送。每收到一个 SYNC 或每 n 个 SYNC (n 由子索引 06h SYNC Start Value 定义,但通常用于控制 SYNC 计数器匹配) 发送一次。更准确地说,当 06h 为 0 时,PDO 在每个 SYNC 后发送;当 06h 为 n (1-240) 时,PDO 在第 n 个 SYNC 后发送,然后是第 2n, 3n... (此解释有待商榷,CiA301 中 06h 定义为 sync start value,而 "every n SYNCs" 更像是通过 1006h (Communication Cycle Period) 与 1005h (SYNC COB-ID) 的关系来实现,或者通过 RTR 方式)。对于循环同步,通常值 0 表示在每个 SYNC 后发送。
    • 1-240: 同步循环传输 (Synchronous Cyclic) / 周期性同步 - 收到 SYNC 报文后发送。数字 n 代表每收到 n 个 SYNC 报文后发送一次。例如,值为 1 表示每个 SYNC 后发送,值为 2 表示每隔一个 SYNC 发送一次。
    • 252: 同步,仅 RTR (Synchronous, RTR only) - 仅在收到远程传输请求 (RTR) 且该 RTR 的 CAN ID 与此 PDO 的 COB-ID 匹配时,并在下一个 SYNC 之后发送。(不常用)
    • 253: 异步,仅 RTR (Asynchronous, RTR only) - 仅在收到远程传输请求 (RTR) 且该 RTR 的 CAN ID 与此 PDO 的 COB-ID 匹配时发送。(不常用)
    • 254: 异步,事件驱动,制造商特定 (Asynchronous, event-driven, manufacturer specific) - 当映射到此 PDO 的一个或多个应用对象的数值发生变化时,PDO 被发送。具体行为可能由制造商定义,但通常受抑制时间 (1800h/03h) 限制。
    • 255 (FFh): 异步,事件驱动,设备行规特定 (Asynchronous, event-driven, device profile specific) - 当映射到此 PDO 的一个或多个应用对象的数值发生变化时,PDO 被发送。这是最常用的异步传输类型之一,用于实时反馈。发送行为受抑制时间 (1800h/03h) 和事件定时器 (1800h/05h) 的影响。

1800h/03h: Inhibit Time

  • 含义: 抑制时间。
  • 数据类型: UNSIGNED16 (2 字节)。
  • 作用: 设置该 TXPDO 连续两次发送之间的最小时间间隔。单位是 100 微秒 (µs)。例如,要设置 10 毫秒 (10000 微秒) 的抑制时间,需要写入的值是 100 (十六进制 0064h)。这用于防止 PDO 报文因数据频繁变化而发送过于频繁,从而占用过多总线带宽。如果设置为 0,则抑制时间无效。

1800h/04h: Compatibility Entry

  • 含义: 兼容性条目。
  • 数据类型: UNSIGNED8 (1 字节)。
  • 作用: 此子索引保留,通常用于兼容性目的,在 CiA402 等常见的设备行规中通常未使用或值为 0。

1800h/05h: Event Timer

  • 含义: 事件定时器。
  • 数据类型: UNSIGNED16 (2 字节)。
  • 作用: 对于事件驱动的传输类型 (例如 254255),事件定时器提供了一个额外的周期性发送机制。即使映射的数据没有发生变化,如果自上次发送以来超过了事件定时器设定的时间,PDO 也会被发送。单位是 1 毫秒 (ms)。例如,设置 100 毫秒的事件定时器,需要写入的值是 100 (十六进制 0064h)。如果设置为 0,则事件定时器无效。

1800h/06h: Sync Start Value

  • 含义: SYNC 起始值。
  • 数据类型: UNSIGNED8 (1 字节)。
  • 作用: 主要与同步传输类型 (如 0240) 相关。它定义了一个计数器值,当 SYNC 对象的计数器达到此值时,PDO 才被发送。如果此值为 0,则 PDO 在每个相应的 SYNC 事件后发送(取决于传输类型 0 还是 1-240)。CiA301 对此的描述是 "This parameter defines the value of the SYNC counter, when this PDO is transmitted synchronously."。对于传输类型 0 (acyclic/event-driven synchronous),此参数通常不使用或为0。对于传输类型 1-240 (cyclic synchronous),此参数与 SYNC 计数器一起决定 PDO 的发送时机。

TPDO 映射参数详解 (对象 1A00h)

对象索引 1A00h (通常代表 TxPDO1 Mapping Parameter) 用于定义第一个发送过程数据对象 (TXPDO1) 报文数据段的具体内容。它包含一个子索引 00h 用于记录映射对象的数量,以及多个用于存放实际映射条目的子索引 (例如 01h08h,最多可以映射 8 个对象,组成最多 64 位的数据)。

1A00h/00h: 映射的对象个数

  • 含义: 映射的对象个数 (Number of mapped application objects in PDO)。
  • 数据类型: UNSIGNED8 (1 字节)。
  • 作用: 指示 TXPDO1 报文的数据段中实际包含了多少个来自对象字典的应用对象的数值。这个值也间接决定了该 PDO 数据段的总长度(所有映射对象的数据长度之和)。例如,如果映射了两个 INT32 (每个 4 字节) 对象,那么映射对象个数就是 2,PDO 数据段长度就是 8 字节。
    • 配置注意: 在配置或修改 PDO 映射时,CiA301 标准建议的标准流程是:

      1. 首先将此子索引 (1A00h/00h) 的值设为 0。这会使 PDO 失效并允许修改映射条目。
      2. 然后配置或修改子索引 01h08h 中的具体映射条目。
      3. 最后,将此子索引 (1A00h/00h) 的值设为实际映射的对象数量,以使新的映射生效。PDO 的总长度不能超过 8 字节。

1A00h/01h1A00h/08h: PDO 映射条目

  • 含义: 具体的 PDO 映射条目。

  • 数据类型: UNSIGNED32 (4 字节)。

  • 作用: 每个子索引 (1A00h/01h, 1A00h/02h, ..., 最多到 1A00h/08h,取决于设备能力和子索引 00h 的值) 存储一个 32 位的数值。这个数值定义了 PDO 数据段中对应位置的数据是来自驱动器对象字典中的哪个对象、哪个子索引,以及该数据的位长度。这个 32 位值的结构是标准的 CiA 格式:

    • Bit 31 - Bit 16 (高 16 位): 对象索引 (Object Index)。要映射的对象的索引号(例如 6064h 表示当前位置反馈值,6069h 表示当前速度反馈值)。
    • Bit 15 - Bit 08 (中间 8 位): 子索引 (Sub-index)。要映射的对象的子索引号(例如 00h)。如果对象本身没有子索引(是一个简单变量),则此值为 00h
    • Bit 07 - Bit 00 (低 8 位): 数据大小 (Length of object in bits)。该对象数据在 PDO 报文中所占的数(例如 INT32 是 32 位,对应十六进制 20hINT16 是 16 位,对应 10hBOOLEANUNSIGNED8 是 8 位,对应 08h)。
  • 例子: 如果要将"实际位置值" (Position actual value, 对象索引 6064h, 子索引 00h, 数据类型 INTEGER32, 长度 32 位) 映射到 TXPDO1 的第一个位置,需要向 1A00h/01h 写入的 32 位映射条目值为:

    • 对象索引: 6064h
    • 子索引: 00h
    • 数据大小 (位): 32 (十进制) = 20h (十六进制)
    • 组合起来的 32 位十六进制值就是 60640020h
    • SDO 传输注意: 当通过 SDO 报文写入这个 60640020h 值时,由于 CANopen 通常使用小端序 (Little-endian) 传输多字节数据,所以在 SDO 数据段中,这个值会按字节倒序排列为:20 00 64 60

通过正确配置 1800h (通讯参数) 和 1A00h (映射参数) 对象及其子索引,用户可以完全控制驱动器(或其他 CANopen 设备)通过 TXPDO1 发送什么数据以及何时、如何发送这些数据。


TPDO1 配置实例:一步步指南

本章节将通过一个具体的 SDO 指令序列,演示如何配置一个典型的 TXPDO1,使其能够发送两个对象的数据:例如伺服驱动器的当前位置 (6064h) 和当前速度 (6069h)。

准备工作

配置 TPDO 参数通常需要在 CANopen 节点(例如伺服驱动器)处于 NMT (Network Management) Pre-operational 状态下进行。在此状态下,节点可以进行对象字典的读写操作,但不能进行 PDO 通信。

完成所有 SDO 配置后,需要将节点切换到 NMT Operational 状态,节点才会根据新的配置开始发送 TPDO 报文。

以下配置示例假设:

  • 目标节点 ID 为 1
  • SDO 客户端(例如主站或配置工具)的 COB-ID 为 600h + Node ID,因此用于向节点 1 发送 SDO 请求的 COB-ID 为 601h
  • 节点 1 的 SDO 服务器响应 COB-ID 为 580h + Node ID,即 581h
  • TPDO1 的默认 COB-ID 将被配置为 180h + Node ID280h + Node ID (这里我们以 280h + Node ID 为例,即 281h)。

配置步骤

以下是配置 TXPDO1 映射和通讯参数的典型 SDO 报文序列。所有多字节数值在 SDO 报文数据段中均以低字节在前 (Little-endian) 的方式排列。

1. 禁用 TXPDO1 的发送

在修改 TPDO 参数之前,通常先禁用它。这是通过设置其 COB-ID (1800h/01h) 的 Bit 31 为 1 来实现的。

  • 操作描述: 向对象 1800h 的子索引 01h (COB-ID) 写入 TXPDO1 的目标 COB-ID (例如 281h,即 00000281h) 并将 Bit 31 置 1。因此写入的值为 80000281h
  • SDO 命令: 写 4 字节数据 (例如 SDO command specifier 22h,尽管 23h 更标准表示4字节,但文档中常用 22h,具体以CANopen规范或设备手册为准,这里沿用所提供文档的示例)。
  • 报文 Bytes (COB-ID + SDO 数据段):
    COB-ID: 601h (Request to Node 1)
    Data: 22 00 18 01 81 02 00 80
    • 601: COB-ID (SDO 请求发往节点 1)
    • 22: SDO 命令 (写 4 字节,根据示例)
    • 00 18: 索引 1800h (低字节 00 在前, 高字节 18 在后)
    • 01: 子索引 01h
    • 81 02 00 80: 数据 80000281h (低字节 81 在前, ..., 高字节 80 在后)

2. 清除 TXPDO1 当前的映射条目

根据 CiA301规范,修改映射前应先将映射对象个数 (1A00h/00h) 设置为 0。

  • 操作描述: 将对象 1A00h 的子索引 00h (Number of mapped objects) 设为 0。
  • SDO 命令: 写 1 字节数据 (SDO command specifier 2Fh)。
  • 报文 Bytes:
    COB-ID: 601h
    Data: 2F 00 1A 00 00 00 00 00
    • 601: COB-ID
    • 2F: SDO 命令 (写 1 字节)
    • 00 1A: 索引 1A00h (低字节 00 在前)
    • 00: 子索引 00h
    • 00: 数据 00h (其余字节为填充,根据SDO协议,对于 expedited transfer,可能不需要额外填充)

3. 配置 TXPDO1 的第一个映射条目 (当前位置 6064h)

  • 操作描述: 向对象 1A00h 的子索引 01h 写入第一个映射条目。假设我们要映射当前位置对象 6064h/00h,数据类型 INT32 (32 位)。映射条目值为 60640020h
  • SDO 命令: 写 4 字节数据 (SDO command specifier 22h,示例用法)。
  • 报文 Bytes:
    COB-ID: 601h
    Data: 22 00 1A 01 20 00 64 60
    • 601: COB-ID
    • 22: SDO 命令 (写 4 字节)
    • 00 1A: 索引 1A00h
    • 01: 子索引 01h
    • 20 00 64 60: 数据 60640020h (低字节 20 在前)

4. 配置 TXPDO1 的第二个映射条目 (当前速度 6069h)

  • 操作描述: 向对象 1A00h 的子索引 02h 写入第二个映射条目。假设我们要映射当前速度对象 6069h/00h,数据类型 INT32 (32 位)。映射条目值为 60690020h
  • SDO 命令: 写 4 字节数据 (SDO command specifier 22h,示例用法)。
  • 报文 Bytes:
    COB-ID: 601h
    Data: 22 00 1A 02 20 00 69 60
    • 601: COB-ID
    • 22: SDO 命令 (写 4 字节)
    • 00 1A: 索引 1A00h
    • 02: 子索引 02h
    • 20 00 69 60: 数据 60690020h (低字节 20 在前)

5. 设置 TXPDO1 的映射对象个数为 2

在配置完所有映射条目后,更新映射对象个数 (1A00h/00h) 为实际映射的数量。

  • 操作描述: 将对象 1A00h 的子索引 00h 设为 2 (因为我们映射了两个对象)。
  • SDO 命令: 写 1 字节数据 (SDO command specifier 2Fh)。
  • 报文 Bytes:
    COB-ID: 601h
    Data: 2F 00 1A 00 02 00 00 00
    • 601: COB-ID
    • 2F: SDO 命令 (写 1 字节)
    • 00 1A: 索引 1A00h
    • 00: 子索引 00h
    • 02: 数据 02h

6. 配置 TXPDO1 的传输类型

  • 操作描述: 配置传输类型 (1800h/02h)。通常设置为异步事件驱动,例如传输类型 255 (FFh),表示数据变化时发送,并受抑制时间限制。
  • SDO 命令: 写 1 字节数据 (SDO command specifier 2Fh)。
  • 报文 Bytes:
    COB-ID: 601h
    Data: 2F 00 18 02 FF 00 00 00
    • 601: COB-ID
    • 2F: SDO 命令 (写 1 字节)
    • 00 18: 索引 1800h
    • 02: 子索引 02h
    • FF: 数据 FFh (即 255)

7. 配置 TXPDO1 的抑制时间 (Inhibit Time)

  • 操作描述: 设置 PDO 发送的最小间隔 (1800h/03h)。单位 100 微秒。例如设置 10ms (10000 微秒),对应写入值为 100 (十进制) = 0064h (十六进制)。
  • SDO 命令: 写 2 字节数据 (SDO command specifier 2Bh)。
  • 报文 Bytes:
    COB-ID: 601h
    Data: 2B 00 18 03 64 00 00 00
    • 601: COB-ID
    • 2B: SDO 命令 (写 2 字节)
    • 00 18: 索引 1800h
    • 03: 子索引 03h
    • 64 00: 数据 0064h (低字节 64 在前)

8. 配置 TXPDO1 的事件定时器 (Event Timer)

  • 操作描述: (可选) 当传输类型为 255 时,事件定时器 (1800h/05h) 可用于确保至少周期性地发送 PDO,即使数据没有变化。单位 1 毫秒。例如设置 10ms,对应写入值为 10 (十进制) = 000Ah (十六进制)。
  • SDO 命令: 写 2 字节数据 (SDO command specifier 2Bh)。
  • 报文 Bytes:
    COB-ID: 601h
    Data: 2B 00 18 05 0A 00 00 00
    • 601: COB-ID
    • 2B: SDO 命令 (写 2 字节)
    • 00 18: 索引 1800h
    • 05: 子索引 05h
    • 0A 00: 数据 000Ah (低字节 0A 在前)

9. 使能 TXPDO1 的发送

最后,通过设置 COB-ID (1800h/01h) 的 Bit 31 为 0 来使能 TPDO。

  • 操作描述: 向对象 1800h 的子索引 01h (COB-ID) 写入 TXPDO1 的目标 COB-ID (例如 281h,即 00000281h) 并确保 Bit 31 为 0 (使能发送)。写入值为 00000281h
  • SDO 命令: 写 4 字节数据 (SDO command specifier 22h,示例用法)。
  • 报文 Bytes:
    COB-ID: 601h
    Data: 22 00 18 01 81 02 00 00
    • 601: COB-ID
    • 22: SDO 命令 (写 4 字节)
    • 00 18: 索引 1800h
    • 01: 子索引 01h
    • 81 02 00 00: 数据 00000281h (低字节 81 在前)

预期结果与验证

完成以上 SDO 配置序列后,将驱动器从 NMT Pre-operational 状态切换到 NMT Operational 状态。如果配置成功,您应该能通过 CAN 分析工具捕获到 COB-ID 为 281h (假设 Node ID 为 1 且默认基址为 280h) 的 TPDO1 报文。

其数据段应包含 8 个字节:

  • 前 4 个字节:当前位置反馈值 (来自对象 6064h),INT32 类型,低字节在前。
  • 后 4 个字节:当前速度反馈值 (来自对象 6069h),INT32 类型,低字节在前。

当这两个映射的对象 (6064h6069h) 的值发生变化时,或者当事件定时器超时(如果配置了且数据未变),TPDO1 就会被发送(同时受抑制时间约束)。

故障排除提示

如果在配置过程中遇到问题,并且上述标准 SDO 格式报文未能成功,可能需要查阅特定设备的手册。某些设备可能对特定对象(如 PDO 参数)使用非标准的 SDO 访问方式或自定义的 SDO 字节格式。例如,原始文档中提及的 22 [custom_bytes] 格式,这种格式与 CiA301 标准不完全相符,需要仔细对照设备文档来确定正确的 custom_bytes。始终优先参考设备制造商提供的官方文档。


总结

CANopen TPDO 的配置是实现设备间高效数据交换的关键环节。其核心在于正确设定通讯参数(主要通过对象 1800h 系列)和映射参数(主要通过对象 1A00h 系列)。通讯参数决定了 TPDO 何时以及如何发送,而映射参数则定义了 TPDO 包含哪些具体的过程数据。

通过 SDO 服务,可以灵活地配置这些参数以满足特定的应用需求。理解每个参数的含义,并遵循正确的配置步骤(如先禁用PDO、清空映射、配置新映射、设置映射数量、配置传输特性,最后再使能PDO),是确保 CANopen 系统稳定可靠运行的基础。

最后,希望有人能对这种需要CANOPEN的项目提供一个SDK,反正在伺服驱动领域对象字典基本都已经有通用标准了,市面上有一些canopen的库我看了不咋地,如果下次我又接手了这种项目,我将自己写一个好用的。

CANopen TPDO 配置详解:对象 1800h、1A00h 与实践指南的更多相关文章

  1. logback配置详解3<filter>

    logback 常用配置详解(三) <filter> <filter>: 过滤器,执行一个过滤器会有返回个枚举值,即DENY,NEUTRAL,ACCEPT其中之一.返回DENY ...

  2. 【转】logback logback.xml常用配置详解(三) <filter>

    原创文章,转载请指明出处:http://aub.iteye.com/blog/1110008, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...

  3. 深入浅出Mybatis系列(四)---配置详解之typeAliases别名(mybatis源码篇)

    上篇文章<深入浅出Mybatis系列(三)---配置详解之properties与environments(mybatis源码篇)> 介绍了properties与environments, ...

  4. JSHint配置详解

    Also available on Github JSHint配置详解 增强参数(Enforcing Options) 本类参数设为true,JSHint会产生更多告警. bitwise 禁用位运算符 ...

  5. logback logback.xml常用配置详解(三)

    logback logback.xml常用配置详解 <filter> <filter>: 过滤器,执行一个过滤器会有返回个枚举值,即DENY,NEUTRAL,ACCEPT其中之 ...

  6. Maven使用笔记(四)pom.xml配置详解

    pom.xml文件配置详解 --声明规范 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=" ...

  7. JAVAEE——spring01:介绍、搭建、概念、配置详解、属性注入和应用到项目

    一.spring介绍 1.三层架构中spring位置 2.spring一站式框架 正是因为spring框架性质是属于容器性质的. 容器中装什么对象就有什么功能.所以可以一站式. 不仅不排斥其他框架,还 ...

  8. 【转】Maven pom.xml 配置详解

    原文链接:https://yq.aliyun.com/articles/38271 pom.xml文件配置详解 --声明规范 <project xmlns="http://maven. ...

  9. logback使用配置详解

    title: logback使用配置详解 date: 2017-04-25 16:42:49 tags: 日志 --- 1.介绍 Logback是由log4j创始人设计的另一个开源日志组件,它当前分为 ...

  10. SpringMVC 框架系列之组件概述与配置详解

    在上一篇文章 SpringMVC 框架系列之初识与入门实例 的实例中,我们已经知道,SpringMVC 框架是一个 web 层的框架,本篇文章就详细解释一下 SpringMVC 框架具体文件的配置以及 ...

随机推荐

  1. [BZOJ2194] 快速傅立叶之二 题解

    看名字,然后准备转化为多项式乘法. \[c_k=\sum_{i=0}^{n-k-1}a_{i+k}b_i \] 将 \(a\) 反转,得: \[c_k=\sum_{i=0}^{n-k-1}a_{n-i ...

  2. ABB机器人IO板DSQC651维修检查方法

    ABB机器人作为工业自动化的重要设备,其稳定性和可靠性对于生产线的持续运行至关重要.然而,在实际使用中,由于各种原因,可能会出现ABB机器人IO板DSQC651故障,影响机器人的正常运行. 一.ABB ...

  3. MybatisPlus - [01] 概述

    MybatisPlus可以节省我们大量工作时间,所有的CURD代码它都可以自动化完成! 一.是什么   MyBatis-Plus(简称MP)是一个基于MyBatis的增强工具,其设计目的是在不改变My ...

  4. docker - [06] 安装部署Tomcat

    题记部分 一.官方测试镜像 官方文档给出以下命令,一般用来测试,用完即删,下载并运行镜像,退出镜像就会自动删除镜像?亲测不会自动删除 docker run -it --rm tomcat:9.0 使用 ...

  5. 再谈Mysql undo log, redo log与binlog

    一.undo log 1.undo log有两个作用 提供回滚和多个行版本控制(MVCC). 在数据修改的时候,不仅记录了redo log,还记录了对应的undo,如果因为某些原因事务失败而回滚,可以 ...

  6. cudatooklit安装记录_windows

    Windows本地部署deepseek,使用速度不是很理想,在此尝试使用GPU加速 在cmd中使用命令查看支持的版本 nvidia-smi 注意对应的 Driver Version,根据Nvidia给 ...

  7. php用token做登录认证

    https://blog.csdn.net/qq_20869933/article/details/133201967 作用: PHP 使用token验证可有效的防止非法来源数据提交访问,增加数据操作 ...

  8. SQL 常见优化指南

    这一章介绍SQL常见的优化,一共30条 第一条 对查询优化,要尽量的避免全表扫描,首先应该考虑在where以及order by 涉及的列上建立索引. 第二条 应尽量避免在where子句中对字段的nul ...

  9. bs4库爬取天气预报

    Python不仅用于网站开发,数据分析,图像处理,也常用于爬虫技术方向,最近学习了解下,爬虫技术入门一般先使用bs4库,爬取天气预报简单尝试下. 第一步:首先选定目标网站地址 网上查询,天气预报准确率 ...

  10. 自制一个超级简单的 php 发邮件的轮子 simpleMailTool.php

    simpleMailTool 程序链接 https://github.com/kohunglee/simpleMailTool/ 一个简单的 php 发邮件的轮子,跟其他著名大轮子相比(如 PHPMa ...