
在实际机器人项目中把 DYNAMIXEL AX 或 MX 系统升级到 DYNAMIXEL X 系列不只是“把电机拧下来再装一颗新的”那么简单。AX/MX 和老型项目往往依赖一套已经跑通的电源方案、串口总线、控制程序和控制表地址。只要其中任何一环没有跟着升级新电机装上去后常见的表现就是扫描不到、通讯超时、上电抖动、写入不生效甚至把线束或主控板烧坏。这篇内容不会只给一句“建议升级 X 系列”而是按一个可复现的迁移流程展开先理解 AX/MX 和 X 系列在通信协议与反馈机制上的差别再做硬件、电气、机械和控制层面的升级评估再完成拆装、初始化、代码迁移、验证与排错。读完以后你可以拿它当一份升级前检查和落地操作手册而不是一篇看完仍不知道该从哪里下手的介绍。1. 先理解 AX/MX 和 X 系列之间真正变了什么1.1 DYNAMIXEL 伺服的基本模型为什么升级不能只看电机外壳DYNAMIXEL 这类的总线化舵机本质上是一个由电机、减速器、编码器、驱动电路和通信接口组成的完整关节模块。所有舵机通过同一条串行总线串联每个舵机拥有独立 ID主控用协议包读写舵机内部的寄存器。寄存器的集合叫 Control Table其中既有 EEPROM 区也有 RAM 区。EEPROM 区保存的是 ID、波特率、协议版本这类偏“静态”的参数通常不随断电丢失。RAM 区保存的是 Torque Enable、Goal Position、Present Position、Present Load 等运行参数状态回读主要靠这里的寄存器。AX 和 MX 系统过去能跑得通正是因为这套模型足够稳定一根线串联所有电机设置好 ID 和波特率之后主控不断写入目标角度舵机自己完成内部 PID 调节。升级到 X 系列时这套总线模型没有消失但寄存器地址、数据长度、协议包结构、控制模式都变了。1.2 AX/MX 系统的常见限制AX/MX 是 ROBOTIS 在多个机器人项目里被大量使用的老系列。AX-12A、AX-18A、MX-28、MX-64 等型号都有比较成熟的应用案例。老系列的优点是资料多、例程多、很多开源机械臂和小型四足项目都用它们做过原型。但放在现在的新项目里AX/MX 的限制也很明显。反馈精度相对有限。位置反馈来自电机输出轴编码器AX 和 MX 虽然都能返回位置、速度、负载、电压、温度但返回数据的字长和协议 1.0 的包结构相对老。老代码里位置指令往往是 2 字节位置范围受 CW/CCW Limit 限制初始化时要先设置方向限位和 Compliance Margin/Slope 这类参数。对于需要精确控制力矩、电流、加速度曲线或者需要大量在线反馈的机器人AX/MX 做起来比较吃力。通信协议也比较老。AX/MX 时代普遍使用 DYNAMIXEL Packet Protocol 1.0。协议 1.0 的指令包、状态包和校验方式与 X 系列的协议 2.0 不同。总线波特率、返回延迟时间、错误处理方式也不同。直接把 1.0 时代的发送函数拿到 X 系列上通常无法工作。1.3 X 系列带来的协议、反馈和控制模式变化X 系列在主线上延续了“总线伺服”的思路但把控制表做得更细。相比老系列X 系列常见的升级点包括使用协议 2.0 的数据包格式校验、状态包错误码和同步读写方式更清晰。控制模式从单纯的位置/速度模式扩展出电流控制、位置控制、速度控制、电流型位置控制等更细的模式。提供更丰富的状态回读项包括输入电压、温度、PWM、速度、位置轨迹、外部负载等。很多 X 系列型号的 EEPROM 参数可以在不改变机械结构的前提下把模型信息、固件版本、ID、波特率、协议版本、Home 偏移都独立配置出来。支持更精确的 Profile 规划参数例如加速度、速度profile适合对运动平滑度有要求的机械臂。由于 X 系列默认使用协议 2.0所以升级代码时不能只把老地址换成新地址。同一个逻辑数据传输长度和读写方式可能完全不同。例如 AX 的 Goal Position 用 2 字节写入而常见的 X 系列位置控制模式下Goal Position 是 4 字节。读写函数从 write2ByteTxRx 变成 write4ByteTxRx 或 write4ByteTxOnly不是简单的常量替换。1.4 真正决定升级成败的是兼容性而不是扭矩数字很多开发者选择 X 系列时第一反应是看堵转扭矩比 AX/MX 大了多少。扭矩当然重要但真正决定升级成败的是兼容性。决定兼容性的因素包括输出轴齿形和安装孔位新电机能不能装进原来的舵机支架。供电电压主控板原来的电源是否是 X 系列支持的范围。通信硬件原来的总线是 TTL 还是 RS485线序是否一致。协议处理库原来用的是老版私有库还是已经改为统一的 DYNAMIXEL SDK。负载特性同样扭矩下新电机的电流限制和 PID 参数默认值不同直接在原位置使用可能导致震荡。零位方向AX/MX 时代用 Compliance 或方向限位实现“单向运动”X 系列通常需要设置 Homing Offset 或驱动方向。因此升级应当从“评估兼容性”开始不要买一个看起来扭矩更大的型号就直接装到机器人上。2. 升级前先做三张核对表电气、机械、控制2.1 先把现有系统信息完整收集起来升级前最重要的一步不是选型而是盘点。建议先从旧设备里整理出以下信息当前每个舵机的型号、ID、波特率、固件版本。当前系统供电电压是多少能否同时满足所有电机的峰值电流。当前使用的主控板、USB 转接器和上位机软件是什么。当前控制程序使用的是协议 1.0 还是 2.0写入周期是多长。当前机械结构中哪些固定螺丝和输出轴配件需要保留或更换。如果原来项目已经很难从源代码里找到这些信息最直接的办法是用 DYNAMIXEL Wizard 软件扫描总线。它可以看到电机列表、固件版本、ID、波特率等基本信息。扫描时一次只接入一个电源回路并设置正确的波特率避免因为总线波特率不一致导致扫描不到全部电机。注意盘点最好在升级前完成。不要先把总线上所有 AX/MX 拆掉再换上 X 系列以后才开始查“原来波特率是多少”这样会失去一个可对照的原始环境。2.2 机械安装核对表机械安装不是看“螺丝孔是不是四个”。AX/MX 的老支架和 X 系列之间经常需要转接板或者重新打印支架。需要核对的内容包括输出轴齿数、齿轮模数和花键规格是否一致。输出轴是否空心是否需要走线。电机外壳固定孔的位置、孔径和深度是否能套进支架。电机总长和总宽是否会与周边结构干涉尤其是轴承座、穿线孔和减速箱前端。Horn 和舵机盘是否与输出轴匹配。对比时不要只看宣传图。建议下载目标型号的 2D 或 3D 图纸放到自己项目的 CAD 里做一次干涉检查。没有图纸时先把旧电机和新电机的实物装在一个基准板上比一次位置。可以按下面的表格记录核对项AX/MX 旧电机X 系列候选型号是否兼容长度/宽度/高度需实测查图纸安装孔距需实测查图纸输出轴齿形需实测查图纸中空孔径需要考虑走线查图纸外部散热可能需要预留X 系列不同型号散热点不同2.3 电气链路核对表DYNAMIXEL 总线的电气链路通常在旧项目里可以分为三类问题线序、电压、通信电平。AX/MX 系列常见的是 3Pin 或 4Pin 总线接口。3Pin 通常是“电源正、电源地、数据”4Pin 通常是在 TTL 基础上扩展为 RS485 差分数据。X 系列产品线里也存在不同的接口规格常见的有 JST 类连接器但具体型号、针脚间距和线序不能一概而论。电气核对表至少要覆盖电源电压是否在目标 X 系列支持范围内。峰值电流是否足够。数据线极性、方向、共地是否正确。TTL 还是 RS485老主控的收发芯片是否匹配。波特率是否能被主控和转接器同时支持。线径是否足够升级到更大扭矩型号后是否要换粗线。其中最容易出问题的是“线序”。即使连接器的物理形状能插上数据线顺序也可能不同。不同系列的官方转接说明经常需要交换两根数据线或者使用专用转接线。不要凭老经验去接。2.4 控制软件核对表控制软件不是只有“动起来”这一个目标。升级后还要支持位置回读、速度回读、错误监控等。软件层需要确认当前代码是否依赖旧系列专用的 1.0 协议函数。当前控制周期和总线写入频率是多少协议 2.0 的状态包行为会不会影响原逻辑。当前使用的上位机是旧版 DYNAMIXEL Wizard 还是支持协议 2.0 的 DYNAMIXEL Wizard 2.0。如果使用 ROS原来的驱动包、URDF 模型里的舵机型号和 joint effort 限制是否匹配。如果使用 Arduino串口引脚、方向控制引脚和电压电平是否匹配。控制软件核对完成后再决定是“保留全部代码只改参数”还是“抽出电机控制模块重写”。大部分老旧项目其实更适合重写一版因为地址、读写方式、状态返回含义都变了。3. 硬件替换和初始化配置步骤3.1 拆机顺序断电、标记、绝缘在开始替换之前先关掉所有电机的供电不要只关主控程序或主控板开关。电机总线是半双工串行通信只要有模块上电总线就可能被拉高替换过程容易造成瞬时短路。正确步骤是先断开电源输出再拔线拆电机。拆线前建议拍一张现场接线图。尤其是有多根串联线的关节模块要记录从主控出来的第一根线、每根线经过的电机位置、末端是否有终端电阻或空接。拆下来的螺丝尽量按位置分装不要混在一个盒子里。老电机的 Horn 和 X 系列的输出轴不一定通用也要标注清楚。3.2 线束转接和供电必须单独测试升级到 X 系列时如果连接器不同不要直接剪线焊接到新电机上也不要依赖“大概只有两根电源两根数据”的判断。建议优先使用官方线束或成熟转接线先单独接一只新电机来验证。单独测试的步骤可以这样安排只给一只 X 系列电机的电源线供电不接总线。测量新电机输入电压是否在官方手册允许范围内。断开电源接上 USB 转接器再上电。用 DYNAMIXEL Wizard 2.0 搜索到该电机。先读取电压、温度、Model Number再尝试点动。不要一上来就把所有新电机串联统一上电后开始扫描。如果总线里存在接线错误或者电流过大问题会被放大而且排查成本更高。注意串行总线虽然叫“菊花链”但每条数据在中间节点的处理方式由硬件电路决定。不要在电机运行过程中热插拔也不要为了省线把总线的地线悬空。3.3 用 DYNAMIXEL Wizard 2.0 完成基础初始化基础初始化通常按以下顺序完成。第一确认 ID。新电机的 ID 可能都是出厂默认值。接入总线前不要让多个电机同时保持同一个 ID。如果系统中有多个 X 系列电机建议一次只接一个把 ID 改成规划值后再接下一个。第二确认波特率。DYNAMIXEL Wizard 扫描时需要先选择正确波特率。如果扫描不到可能是波特率不匹配。不要反复提高扫描速度。注意 X 系列的波特率寄存器表达方式和 AX/MX 不同直接套用老波特率计算方式可能错误。第三设置控制模式。X 系列支持多种控制模式常见的有位置控制、速度控制、电流控制和电流型位置控制。在位置模式下还需要确认 Position P/I/D 增益、Profile Velocity 和 Profile Acceleration。生产项目里不要把这些参数全部保留默认值要根据机械结构调。第四设置 Torque Enable 之前先确认当前位置和限位。X 系列在使能扭矩后会按控制模式开始抵抗外力或维持位置。如果机械臂处于奇异位置或者当前目标位置与当前位置相差很大一使能就会猛冲。初始化配置可以用下面的记录表参数老系统中的值X 系列初始值需要修改为ID例如 1~5默认 1按规划波特率老值默认值按总线规划控制模式位置模式默认位置或速度模式按关节用途返回延迟时间老系统可能为 0X 系列默认值不要随意增大大值Homing Offset无默认 0根据零位调整位置限位依赖 AX 的 CW/CCW Limit默认 0~4095 或扩展按机械限位设置3.4 EEPROM 写入前的两个关键原则EEPROM 区参数修改通常要求“先断开扭矩”。也就是说读取或写入 EEPROM 时确保 Torque Enable 为 0。如果电机还处于使能状态写入会被拒绝或产生异常。另外X 系列协议 2.0 对错误返回有更清晰的状态包。写入命令后不仅要检查返回结果还要读取 Hardware Error Status 等错误位。尤其是电压错误、温度错误、过流错误都要在初始化阶段抓出来。修改 ID 或波特率后电机的连接会立即中断。此时应当关闭旧波特率下的扫描窗口再用新 ID 或新波特率重新搜索。如果改完忘记了新 ID最简单的办法是恢复出厂设置或者通过官方工具把波特率改回默认后重新搜索。实际项目里要避免“每个电机都改成一模一样的 ID”后接上总线否则扫描会显示一长串错误。4. 控制代码迁移从协议 1.0 到协议 2.04.1 地址映射不再是简单加减AX/MX 时代的控制程序里常见的地址和目标位置表大致是这样功能AX/MX 常用说明协议 1.0 地址IDEEPROM 区0x03波特率EEPROM 区0x04CW/CCW 角度限位EEPROM 区0x06 / 0x08最大扭矩EEPROM 区0x0ETorque EnableRAM 区0x18Goal PositionRAM 区0x1EMoving SpeedRAM 区0x20Present PositionRAM 区0x24Present LoadRAM 区0x28Present VoltageRAM 区0x2APresent TemperatureRAM 区0x2B这段表不是要让你背下来而是要说明一个问题很多 AX/MX 程序中的“神奇数字”是从这个老表里来的。升级 X 系列之后如果直接沿用这些地址会写到错误的位置甚至写入一个不存在的寄存器。比如在 X 系列协议 2.0 的常见控制表中Torque Enable 的地址是 64Goal Position 在位置控制模式下是 116一些型号的 Present Position 是 132。这个映射关系需要以目标型号的 e-Manual 为准不能靠猜。所以在写代码前建议先建立一个新的头文件或常量模块把控制表地址集中管理。不要在每个关节文件里散落几十个魔法数。4.2 Python SDK 示例位置控制迁移实际开发中如果使用官方 DYNAMIXEL SDK控制代码可以写成类似下面的结构。示例用于说明思路实际项目要结合自己的包名、串口路径和地址表调整。先看老 AX/MX 风格的发送片段它基于协议 1.0# 旧的 AX/MX 风格使用协议 1.0 from dynamixel_sdk import * PORT /dev/ttyUSB0 BAUD 1000000 DXL_ID 1 # AX/MX 协议 1.0 地址 AX_TORQUE_ENABLE 0x18 AX_GOAL_POSITION 0x1E AX_PRESENT_POSITION 0x24 AX_TORQUE_DISABLE 0 port PortHandler(PORT) packet PacketHandler(1.0) port.openPort() port.setBaudRate(BAUD) packet.write1ByteTxRx(port, DXL_ID, AX_TORQUE_ENABLE, 0) packet.write2ByteTxRx(port, DXL_ID, AX_GOAL_POSITION, 512) packet.write1ByteTxRx(port, DXL_ID, AX_TORQUE_ENABLE, 1)这一段如果直接用在 X 系列上大概率会写入错误。因为在协议 2.0 的常见地址下位置控制寄存器是 4 字节位置值范围更大。迁移后的协议 2.0 风格示例# X 系列迁移示使用协议 2.0 from dynamixel_sdk import * PORT /dev/ttyUSB0 BAUD 57600 DXL_ID 1 # 常见 X 系列地址具体以控制表为准 X_TORQUE_ENABLE 64 X_OPERATING_MODE 11 X_GOAL_POSITION 116 X_PRESENT_POSITION 132 port PortHandler(PORT) packet PacketHandler(2.0) if not port.openPort(): print(Failed to open port) exit(1) if not port.setBaudRate(BAUD): print(Failed to set baudrate) exit(1) # 写 EEPROM 前先关扭矩 packet.write1ByteTxRx(port, DXL_ID, X_TORQUE_ENABLE, 0) # 设为位置控制模式 packet.write1ByteTxRx(port, DXL_ID, X_OPERATING_MODE, 3) # 再次使能扭矩 packet.write1ByteTxRx(port, DXL_ID, X_TORQUE_ENABLE, 1) # X 系列位置控制多数使用 4 字节写入 goal 2048 packet.write4ByteTxRx(port, DXL_ID, X_GOAL_POSITION, goal) # 读取当前位置 pos, result, error packet.read4ByteTxRx(port, DXL_ID, X_PRESENT_POSITION) print(present position:, pos)需要注意X_OPERATING_MODE 的取值随型号不同略有差异但常见的位置控制模式值为 3速度模式为 0电流模式为 1电流型位置模式为 5。写入 Operating Mode 之前必须先关闭 Torque否则写入可能不成功。4.3 数据宽度和符号位的变化AX/MX 老协议中位置数据向常用 2 字节写入。X 系列的位置数据常用 4 字节。如果沿用 write2ByteTxRx即使地址改对了高 16 位也可能没写进去位置永远无法超过某个值。速度、电流、PWM 等数据也存在符号位问题。DYNAMIXEL X 系列中速度、电流、PWM 等数据往往是 2 字节有符号数或 4 字节数值。直接把读取结果当成无符号数转换会出现方向反转或大跳变。实际项目建议在代码里统一封装这些转换def to_signed(value, bits): sign_bit 1 (bits - 1) if value sign_bit: return value - (1 bits) return value例如读取 Present Current 或 Present Velocity 时先将读到的原始数值按有符号数解释再做后续计算。这个细节在整机联调时尤其重要因为只看日志里的原始数字往往看不出异常只有转换成角度、转速或电流单位才发现方向不对。4.4 从单机控制迁移到多机同步AX/MX 系统中如果主控已经采用“逐台写入”的方式还能维持运动效果在 X 系列上可以继续这样做但更好的做法是使用 GroupSyncWrite。多关节机械臂或者四足机器人在每个控制周期要同时更新多个关节目标位置。如果逐台写每台电机之间的总线延迟会累积。X 系列基于协议 2.0 的读写更适合把多个电机的同一类寄存器一次性同步。SDK 中对应的组件是 GroupSyncWrite使用时要先定义每台电机的 ID、地址和数据长度再把每个电机的数据打包最后调用 txPacket。同步写示例结构from dynamixel_sdk import * group GroupSyncWrite(port, packet, X_GOAL_POSITION, 4) for dxl_id, goal in zip(ids, goals): param_goal [0, 0, 0, 0] param_goal[0] goal 0xFF param_goal[1] (goal 8) 0xFF param_goal[2] (goal 16) 0xFF param_goal[3] (goal 24) 0xFF group.addParam(dxl_id, param_goal) group.txPacket() group.clearParam()使用同步写时要使能所有电机的扭矩并且所有电机使用相同的控制模式。如果存在关节反转不要试图通过把目标位置取反来“骗过”电机而是应该在控制表里设置 Drive Mode或者通过 Homing Offset 来统一方向。5. 运行验证和问题排查链路5.1 在固定平台上先验证回读值而不是直接装进整机升级以后最危险的操作是把新电机直接装进整机然后上电测试动作。因为新电机的默认 PID 和电流限制可能与旧机械结构不匹配上电瞬间可能出现抖动或冲击。建议先把电机固定在桌面试架上让输出轴不承受额外负载按下面顺序验证读取 Model Number、Firmware Version确认固件支持协议 2.0。读取 Input Voltage确认供电正常。读取 Present Temperature看电机是否过热。关闭扭矩手动转动输出轴观察 Present Position 是否连续变化。使能扭矩让电机进入位置模式写入一个靠近当前位置的目标值观察是否平滑到达。逐步增加位置跨度观察是否有振动、超调或异响。增加负载测试读取 Present Load 或 Present Current评估电流余量。如果位置回读跳变、目标到达后仍然震荡应优先处理参数而不是修改控制器代码。X 系列很多的“抖动”问题可以通过调节 Profile Velocity、Profile Acceleration 和位置 PID 解决。默认增益不一定适合你的机械臂重量和刚性。5.2 用日志而不是感觉判断“动没动”很多升级问题在测试台上看着“动了”但实际并没有进入正确控制模式。例如可能在速度模式下写位置导致电机持续旋转也可能在位置模式下写了很小的值视觉上只是轻微抖动但实际已经报错。验证代码应加入以下日志写入前目标位置原始值和转换成角度后的值。写入后返回的错误码。读取到的当前位置。读取到的输入电压、温度。是否报过硬件错误。日志格式可以采用[TIME] ID:1 Torque:1 Mode:3 Goal:2048 Pres:2048 Voltage:11.9 Temp:38 Error:0这样能在一行里看到整个控制链路是否一致。如果 Pres 一直停留在 0 或 4095 不动通常是编码器读取、ID、接线或协议数据宽度有问题而不是“电机没劲”。5.3 常见问题排查表下面表格整理了升级过程中最常遇到的问题可作为快速定位清单。问题现象常见原因检查和解决扫描不到电机波特率不一致、ID 冲突、数据线接反、供电未开启换 USB 转接器、降低波特率、单独接一只电机验证扫描到但无法点动控制模式不对、Torque Enable 为 0、位置限位挡住读取 Operating Mode、写入目标前先设置正确模式位置写入后不动作协议地址错、写入函数宽度错、电机还在 EEPROM 写入流程核对控制表地址和 SDK 读写长度电机上电抖动默认 PID 不适合当前机械结构、供电不足先降低 Profile Velocity再调 PID用示波器看电压跌落电机动作方向反安装方向改变或 Homing Offset 设置不一致调整 Drive Mode 或 Homing Offset不要直接改控制逻辑总线上一个坏点影响后面所有电机线束断路、连接器松动、电机内部作终端电路干扰逐段接线检查单独接最后一个电机验证返回错误码频繁电压超限、温度保护、指令错误、校验错误读 Hardware Error Status按错误位处理5.4 准备一套快速回滚方案升级未必一次成功。如果新电机安装后机械结构需要钻孔、打印转接件或者旧控制程序很难调通应当在升级前保留一套能跑通的旧系统。回滚方案包含保留旧 AX/MX 电机和原线束不立即报废。保存旧电机的 ID、波特率、限位和固件版本备份。保留旧程序的一个可执行版本或 Git 分支。保留旧转接器或主控上的备份接口。如果没有保存旧参数回滚后可能出现“旧电机也找不到”的问题。建议在拆下旧电机前用 DYNAMIXEL Wizard 把每一台电机的 EEPROM 参数读取出来存成表格或文本文件。这个步骤成本低但对后续维护非常重要。6. 生产级项目升级的最佳实践6.1 先替换一个最小样机不要一次性替换整机生产项目升级最合理的路径不是“今天把 6 个 AX 全部换成 X”而是先搭一个最小样机单台 X 系列电机、一套独立电源、一个独立控制程序。最小样机的目标是回答几个问题新电机能否用现有主控和通信转接器控制新电机能否装进机械结构现有电源能否支撑峰值电流新电机的控制代码能否满足控制周期原系统中哪些复杂策略依赖旧协议哪些可以迁移只有这些问题都验证完才能继续批量替换。如果跳过最小样机很可能会在整机联调时同时面对机械、电气、软件三类问题最后无法定位根因。6.2 建立可复用的“关节参数配置表”X 系列的参数很多如果所有参数都写在程序里后期维护时很难看出哪个关节用了什么 PID、什么限位。建议建立一个关节配置表字段可以包括关节名电机型号电机 ID串口波特率控制模式Homing Offset位置范围Profile VelocityProfile AccelerationPosition P Gain / I Gain / D GainCurrent Limit温度报警阈值配置文件用 YAML 或 JSON 承载方便程序启动时统一写入。joints: - name: shoulder_yaw model: xm430-w350 id: 1 baudrate: 57600 operating_mode: 3 homing_offset: 0 min_position: 0 max_position: 4095 profile_velocity: 100 profile_acceleration: 50 position_p_gain: 800 current_limit: 500这样在调试某个关节时只需要改配置文件不需要改关节控制逻辑。同时配置文件也应纳入版本管理和程序代码一起提交方便机器人和代码版本一一对应。6.3 把所有电机的 EEPROM 参数都导出保存X 系列电机的参数不是每次必须通过程序重新写入。很多电机支持通过 DYNAMIXEL Wizard 2.0 将当前 Control Table 保存为文件。备份这组参数可以在电机损坏后快速恢复也可以在新批次电机上批量复制配置。备份时建议记录备份文件名称包含项目名、日期和固件版本。备份每台电机的 ID 后按关节编号命名。备份后把文件提交到项目仓库避免只存在个人电脑上。恢复配置时不要把某台电机的备份文件原样写到另一台型号完全相同但安装位置不同的电机上。至少需要重新检查 Homing Offset、ID 和方向设置。6.4 升级后的性能验证要覆盖真实负载测试台上跑得好不代表机械臂在真实负载下能稳定运行。真实负载测试至少要覆盖空载高速运动时的温度。峰值负载下的电流和电压跌落。长时间往复运动后的位置漂移。外部碰撞后是否出现扭矩异常和温度升高。多关节同时动作时总线周期是否仍然满足要求。这些测试如果通过升级才算完成。否则即使单个关节能点动整机运行时仍可能出现功率不足、通信超时或过载报警。DYNAMIXEL AX/MX 老系统升级到 X 系列的工程价值不是换几个电机就能体现出来的而是要从机械、电气、软件、参数和验证规范五个方面一起迁移。对新项目的建议是从最小样机开始每一台都要验证完再往下推进。对还在犹豫老项目的人建议先按文章里的核对表盘点一套旧数据再决定该保留 AX/MX 还是切换 X 系列。对已经开始升级的人优先看通信协议、寄存器地址、控制模式、数据宽度和供电这五个最容易出错的地方做到每一步都可回读、可回滚升级就能少走很多弯路。