新闻详情

新闻详情

首页 / 资讯中心 / 详情

软件多圈绝对值编码器:单圈值如何扩展成无限旋转位置反馈

发布时间:2026/9/29 18:43:36来源:尧图网络
软件多圈绝对值编码器:单圈值如何扩展成无限旋转位置反馈
去年做一台转台设备的时候客户提了个很朴素的需求转台要能朝一个方向一直转断电重启后必须立刻知道转台停在哪不允许回零。我第一反应就是上绝对式编码器。买回来一测发现问题比想象中麻烦。单圈绝对值编码器上电确实能读到“当前角度”但转台一转起来几秒钟就过一圈单圈值再次回到0。控制器根本分不清这是第2圈还是第102圈。换多圈绝对值编码器一圈询价和选型下来要么贵要么真正的圈数限制比宣传小得多。折腾了两周最后在控制器里用软件做了圈数扩展把单圈绝对值编码器变成了在工程寿命内几乎不会到头的“无限旋转”位置反馈也就是俗称的“软件多圈”。这套方案很适合云台、转台、AGV转向轮、机器人关节这类需要连续多圈旋转、又希望在断电后尽量保留位置的电机系统。本文将围绕这个项目完整梳理为什么绝对式编码器天生不能直接无限旋转、三种多圈方案的取舍、如何把单圈值扩展成连续位置坐标以及调试过程中那些让人印象深刻的坑。1. 从“绝对”到“无限”先看清绝对式编码器的能力边界1.1 增量式与绝对式的本质差别很多人一提到编码器第一反应是“增量式便宜、绝对式贵”但这只是表象。真正决定选型的是两种编码器对“位置”的记法完全不同。增量式编码器本质上是一个脉冲计数器。它只输出A相、B相脉冲控制器对这些脉冲做加减计数工件转了多少个脉冲位置就累计了多少。断电后计数器清零重新上电只能知道“从零开始数了多少”却不知道机械轴现在到底在哪。所以用增量式的系统每次上电都必须回一次原点否则位置就是错的。绝对式编码器则完全不同。它内部给每个机械位置分配了唯一的二进制编号上电只需要读一次当前位置就明确了不需要回零。这个特性在很多现场非常诱人因为有些设备断电后复位到原点要花几分钟甚至存在机械碰撞风险。但绝对式也有自己的天花板。单圈绝对值编码器只给圆周内的角度编号一圈之内每个位置一个码转过一圈后编号重新循环。换句话说它上电能告诉你“当前在圆周的多少度”却无法告诉你“已经转了多少圈”。对于多圈旋转的系统来说这就像手上有一张只标了0到360度的地图却没有告诉你已经翻过了几页。增量式编码器虽然断电丢位置但在连续运行过程中只要控制器不断电圈数可以一直累加理论上没有上限。绝对式编码器位置不会丢却被单圈范围锁死。这就形成了一个很尴尬的局面连续多圈旋转用得最多的明明是绝对式方案可普通单圈绝对值编码器偏偏做不到。1.2 单圈绝对值的“死角”与真多圈的成本边界如果只看单圈绝对值的输出它的“死角”很清楚输出范围是0到2^N-1N是单圈位数。常见的单圈17位编码器一圈有131072个计数每个计数对应的机械角度约为0.0027度。这个分辨率用来做位置环已经相当不错但一旦机械转速上来圈数问题立刻变成主要矛盾。现在市场上所谓的“真多圈绝对式编码器”内部一般有两种实现方式。一种是机械齿轮组把多圈的圈数通过齿轮减速变成某个轴上有限的角度行程用第二组码盘来记录。这种方式圈数上限取决于齿轮行程常见的有4096圈、16384圈。另一种是电子多圈靠编码器内部的电池或超级电容在断电后继续给计数电路供电保持圈数记忆。真多圈编码器能不能解决“无限旋转”的问题在一定范围内可以但有几个现实约束。机械齿轮式转一圈多圈编码器圈数是有终点的到了上限依然要循环。转速稍高一点情况更尴尬。以16384圈为例如果电机以3000 rpm连续转16384圈约5.5分钟就跑完了转台完全可能一天转十几次上限。电池供电的多圈编码器则需要用户定期换电池一旦电池耗尽圈数照样丢而且往往发生在最不该发生的时候。所以所谓“无限旋转”在工程上并不是真的无限而是指在设备正常使用寿命内不需要回零、位置不丢。要达到这个标准单靠硬件多圈成本很高靠软件扩展则显得现实得多。2. 整体方案与系统配置三种多圈路线的选型和接线2.1 三条路线横向对比硬件多圈、电池保持、软件扩展当时我在方案阶段列了一个简单的对比表项目组讨论之后很快就做了决定。三条路线分别是购买真多圈绝对值编码器、购买带电池保持的绝对值编码器、在控制器里用软件扩展单圈绝对值的圈数。方案断电后位置保持圈数上限成本维护复杂度适用场景硬件多圈绝对值齿轮式保持有限常见4096/16384圈高低伺服电机、机器人关节转速和圈数可控编码器内部电池保持保持电池有效期内取决于计数位宽中高需定期换电池高端伺服、某些特殊机床控制器软件扩展需要外部掉电保存电路仅受变量位宽限制低低转台、AGV、云台等连续多圈旋转系统软件扩展方案的核心思想是编码器只用单圈17位绝对位置控制器在内部维护一个圈数变量每当单圈值发生一次“从最大值跳回0”或者“从0跳到最大值”的过程就判断电机正转了一圈或者反转了一圈圈数变量随之加一或减一。最终位置由“圈数 × 单圈分辨率 当前单圈值”合成。从成本角度看软件扩展几乎是零额外硬件成本因为单圈绝对值编码器的价格比真多圈便宜一截而且不需要电池。从维护角度看不需要换电池没有电池耗尽导致的灾难性故障。圈数上限方面如果用32位有符号变量可以记录±21亿圈按电机5000 rpm连续转跑几十年也到不了头工程上基本可以视为无限。当时的结论很明确优先做软件扩展但必须解决两个前提。一个是硬件上要有掉电保存能力至少断电瞬间能把当前圈数和位置写进非易失存储。另一个是系统在断电状态下不允许外力随意转动电机轴否则上电时无法恢复断电期间的圈数变化。如果客户现场做不到这两个前提那才考虑换真多圈编码器。2.2 编码器接口配置以SSI为例完整走一遍软件扩展的算法再漂亮前提是把编码器的单圈值准确、实时地读进控制器。绝对值编码器的常见硬件接口有SSI、BiSS-C、EnDat以及一些厂家私有协议。我这次用的是SSI接口逻辑简单兼容性好非常适合同步串行读取。SSI本质上是一个同步串行接口常见配置是CLK和数据两根线数据线通常为差分RS422方式抗干扰能力比单端好。读取时序大概是这样的主机在空闲时保持CLK为高电平数据线为高电平。主机发出第一个下降沿后从机内部把当前角度值锁存到移位寄存器之后主机持续给出时钟脉冲从机在上升沿依次把数据的最高位到最低位推上数据线。全部位发送完后主机停止时钟完成一帧读取。两次读取之间需要留出足够的时间间隔大多数编码器要求帧间隔在20微秒以上具体要查对应型号的手册。举个例子17位单圈编码器的SSI帧通常是17个数据位。有的编码器还会附加6位CRC、1位错误位、1位奇偶校验位总共25位或者更多。如果接的是含多圈输出的编码器帧内还会包含圈数数据段比如17位单圈加16位圈数加错误位加CRC一共约40位。读取时要严格按照帧格式解析否则位置信息错位很常见。接线层面有几个细节容易踩坑。一是差分数据线的终端电阻SSI接口在长距离传输时建议在接收端加120欧终端电阻否则信号反射容易造成误码。二是屏蔽层要单端接地不能两端都接否则形成地环路反而引入干扰。三是编码器供电要单独走线避免和电机动力线走同一个线槽否则电机启停时的干扰会直接影响数据读取。控制器端的读取可以用SPI从模式模拟SSI主站也可以直接用GPIO口手动翻转时钟。我这次用DSP28379的SPI模块配合定时器来做1 MHz时钟频率下读取17位数据大约需要17微秒完全满足位置环1 kHz到10 kHz的更新需求。切记不要让SSI读取过程被其他中断长时间打断否则两次采样的间隔抖动会直接影响速度环的计算质量。配置阶段还有两个关键参数要确认。一个是计数方向也就是编码器输出值随电机正转时是增加还是减少必须在联调前通过实际旋转确认。另一个是数据格式很多绝对值编码器默认输出格雷码而控制器内部计算用的是二进制必须在读取后做一次格雷码转二进制否则位置会呈现奇怪的锯齿状跳变。3. 核心算法单圈值怎么变成连续坐标3.1 半圈阈值法让“回绕”变成“进位”拿到单圈值之后接下来的核心问题就变成了怎么判断电机转过了多少圈最朴素的想法是检测跳变沿如果前一次单圈值是131071当前单圈值是0说明正转了一圈如果前一次是0当前是131071说明反转了一圈。这个逻辑听起来简单实际用起来却非常不稳。因为采样时刻不同读到的新旧值可能错位加上噪声干扰直接在跳变沿判断很容易误计数。我在项目里采用的是“半圈阈值法”。原理是两次采样之间的时间极短电机在这短短几十微秒到几毫秒内不可能转过超过半圈。因此如果直接做差值后得到的增量绝对值大于半圈对应的计数值说明单圈值发生了回绕需要把差值修正到正常范围内。假设单圈分辨率为ENC_RES当前读取的原始值为raw上一次读取值为last_raw。先计算带符号差值#define ENC_RES 131072 // 17位单圈编码器一圈的计数个数 int32_t delta (int32_t)(raw - last_raw); // 如果差值超过半圈说明发生了正向回绕或反向回绕 if (delta -(int32_t)(ENC_RES / 2)) { delta ENC_RES; } else if (delta (int32_t)(ENC_RES / 2)) { delta - ENC_RES; }这段代码非常关键。举两个实际例子。raw从131071跳到0时直接相减得到-131071小于-65536于是加上131072修正为1表示电机正转了一个最小计数单位。raw从0跳到131071时直接相减得到131071大于65536于是减去131072修正为-1表示电机反转了一个最小计数单位。修正之后delta就是真实的两采样周期之间的位置增量。接下来把它累加到一个64位变量上就获得了连续、不跳变的总位置static int64_t g_total_pos 0; static uint32_t g_last_raw 0; void Encoder_Update(uint32_t raw) { int32_t delta (int32_t)(raw - g_last_raw); if (delta -(int32_t)(ENC_RES / 2)) { delta ENC_RES; } else if (delta (int32_t)(ENC_RES / 2)) { delta - ENC_RES; } g_total_pos delta; g_last_raw raw; }需要圈数和圈内位置时可以用除法和取余获得int64_t t g_total_pos; int32_t turns (int32_t)(t / ENC_RES); int32_t raw_now (int32_t)(t % ENC_RES);这里有一个C语言的细节问题C标准里负数的除法和取余是向零截断不是向下取整。所以当t为负时t % ENC_RES可能得到负的余数直接用于位置环会出问题。我的做法是先修正int32_t raw_pos (int32_t)(t % ENC_RES); if (raw_pos 0) { raw_pos ENC_RES; turns--; }很多人第一次写这段代码时会漏掉负数取余这一步导致反转之后位置显示出现莫名其妙的偏移。这个小坑我后面还专门写进过团队的代码规范。使用半圈阈值法有一个前提采样周期必须足够短确保两次采样之间电机的转角不可能超过半圈。实际怎么估假设3000 rpm也就是每秒50转每转20毫秒半圈就是10毫秒。如果读取周期是1毫秒那么单次采样间隔内最多转过一圈的5%距离半圈阈值非常远绝对安全。就算转速提到10000 rpm6毫秒一转半圈3毫秒1毫秒采样周期也绰绰有余。反过来如果系统采样周期超过半圈时间回绕判断就会失效计数必然出错。这也是为什么我坚持把SSI读取放在定时器中断里而不是放在主循环或者低优先级任务里。3.2 上电恢复与断电保存把“记忆”留住软件圈数扩展做到这一步连续运行时的位置是稳了。但客户要求断电重启后也知道当前位置这就必须把圈数或者总位置在断电前保存下来。掉电保存的关键是选对存储介质。项目最开始用单片机内部Flash掉电中断触发后往里写圈数。结果发现一个很现实的问题Flash的擦写寿命通常在1万到10万次左右如果每次断电都写一次设备开关机频率稍微高一点几年内就可能把Flash写坏。而且Flash写入时需要时间如果掉电检测触发太晚数据写到一半电压就跌没了。后来换了FRAM也就是铁电存储器。FRAM的写入寿命号称100亿次写入速度也快而且不需要先擦除再写非常适合这类频繁保存小数据量的场景。有些MCU内部会集成一部分FRAM选型时可以优先考虑外部独立FRAM走SPI接口也很常见。掉电检测的设计我踩过几次坑。正确的做法是在电源入口放一个掉电检测比较器检测到主电源跌落到阈值以下时立刻触发MCU的外部中断同时主板用电容存储的能量维持几十毫秒的供电。MCU在中断里停止一切不相关任务把当前的g_total_pos和g_last_raw快速写入FRAM然后等待电源归零。上电后的恢复逻辑看似简单其实也有讲究。第一步读回FRAM里保存的total_pos和last_raw。第二步读取当前编码器的raw值。第三步用同样的半圈修正逻辑计算当前raw相对保存raw的差值叠加到保存的total_pos上。这个过程相当于把断电期间的微小角度变化也补上不至于上电瞬间位置跳一下。int32_t restore_delta(uint32_t saved_raw, uint32_t current_raw) { int32_t d (int32_t)(current_raw - saved_raw); if (d -(int32_t)(ENC_RES / 2)) { d ENC_RES; } else if (d (int32_t)(ENC_RES / 2)) { d - ENC_RES; } return d; } g_total_pos saved_total_pos restore_delta(saved_raw, current_raw);这里必须解释清楚一个边界如果断电期间电机轴被外力盘动而且盘动的总角度超过了半圈仅靠断电前和上电后的两个raw值无法推算出到底转过了几圈恢复的位置就会出错。这是软件方案的物理上限。如果现场确实存在“断电后要能手动盘轴且位置不乱”的硬性需求老老实实上带齿轮的真多圈编码器或者加装机械抱闸。我在做方案沟通时会特意把这一点写在技术协议里避免后期扯皮。3.3 一套可复用的初始化流程综合上面的算法和存储方案我的初始化流程最终固定成四步每次写新项目时都是这套套路基本没出过大问题。第一步读取FRAM中的历史数据。如果校验失败比如CRC错误或者首次上电把总位置清零同时标记“需要回零”。第二步读取编码器当前单圈值并和保存的last_raw做差值修正。第三步把修正值叠加到历史总位置上得到真正恢复的当前位置。第四步将当前位置写入FRAM作为新的断点基准同时把g_last_raw更新为当前raw。回零的问题也顺带说一下。如果项目允许上电回零那初始化流程可以简化很多直接读一次绝对位置还不够因为绝对位置告诉你的是一圈内的角度圈数还是靠软件扩展记录的。正常做法是上电后走一个专门的回零流程比如转到一个机械原点传感器或者转到硬限位然后把当前位置清零。对有绝对式编码器的系统来说回零的意义主要是建立“圈数”的参考点而不是单纯找一圈内的角度。4. 优化手法与三环联动4.1 位置更新的实时性安排编码器数据读进来了软件圈数也扩好了但位置更新的实时性直接决定系统能不能用。伺服控制器的三环结构通常是这样电流环最内层频率10 kHz到20 kHz速度环中间层频率1 kHz到5 kHz位置环最外层频率500 Hz到2 kHz。位置反馈的更新速率至少要跟上位置环和速度环的需求否则相当于用一双反应慢的眼睛去指挥一个反应极快的身体。把SSI读取放在哪里很关键。我建议放在一个高优先级的定时器中断里比如1 kHz同时完成三件事读取编码器raw值、调用Encoder_Update更新总位置、把结果写入一个volatile变量供控制环使用。主循环和低速任务不要直接修改和读取这些变量必须用原子访问或者临界区保护否则高速读写时可能读到半个更新后的数据导致位置跳变。对于DSP28379这类C2000系列芯片来说1 kHz的编码器读取压力很小SPI外设直接完成位读取CPU几乎不占额外开销。如果是纯软件模拟SSI时序17位数据按位翻转GPIO会占用不少CPU周期这时更要注意不能在中断里做浮点运算或者复杂滤波。4.2 滤波、死区与速度估算的处理位置环对噪声不太敏感因为位置环本身带宽不高。真正敏感的是速度环。速度环的输入往往来自位置差分即相邻两次位置读数之差除以采样周期这个操作会把编码器最低位的量化噪声和毛刺放大导致电机低速时出现可见的抖动。很多新手一上来就给位置加低通滤波结果位置被滤得又平滑又迟钝速度估算反而出现更大的相位延迟系统更容易振荡。我现在的做法是位置原始值不滤波直接进位置环速度估算时先做差再做滑动平均。滑动平均窗口取4到8毫秒比较合适窗口太短滤不掉噪声窗口太长会让速度环延迟变大。还有一种常见情况是电机静止时单圈值最低位会由于振动在某个临界值附近来回跳导致速度不为零电机出现微小的爬行。解决办法是在速度估算时加“死区”也就是当相邻差值小于某几个计数时速度强制视为零。但死区不能加太大否则低速跟踪时会产生阶梯感。一般17位编码器死区取2到4个计数足够。高速运行时的优化也很重要。位置差分在高速时会产生很大的速度值如果速度样本本身带一点毛刺速度环就会跟着抖动。我用过的最省事的方法是把速度环计算周期内的位置增量做多重采样累加再做平均相比单次差分有效值更平滑。4.3 机械和电气上的“无限旋转”边界最后还要说一个容易被忽略的问题软件扩展确实让电气计数几乎无限了但机械上不一定能无限转。电缆是个大问题。普通电机线、编码器线如果不经过滑环连续朝一个方向转几百圈就会绞断。做这类无限旋转方案时通常要在结构上加滑环把动力线、编码器信号线、甚至通信线都引到滑环上。滑环需要定期维护碳刷磨损、接触电阻波动都可能影响SSI信号的稳定性调试时要留意。如果机械上没法加滑环那就要在控制逻辑里加软限位和软件正向/反向计数转满一定圈数后禁止继续同方向转强制反向运行。这样虽然做不到真正的无限旋转但至少能保护线缆不损坏。我做过一个巡检转台硬件限制只能单向转大约200圈就在软件里加了圈数软限位接近限位时提前减速停车。还有一个细节是编码器安装的机械跳动。绝对式编码器安装偏心或者联轴器间隙过大会导致单圈值在校准点和非校准点之间存在偏差每转一圈位置会呈现一次正弦波动。这种波动在位置环里不一定看得出来但在速度环高频段会表现为周期性波动。解决方法是提高安装精度或者用一次最小二乘拟合做偏心补偿把误差项建模成正弦函数进行修正。5. 踩坑实录常见问题与排查技巧5.1 上电重启位置莫名跳变第一代样机出来上电测试就翻车了。断电重启后位置经常凭空多出几百个计数有时甚至跳了几十圈。排查到最后发现是掉电保存时序的问题。掉电检测触发得太晚进入掉电中断时电源电压已经不足以完成FRAM写入保存到FRAM里的数据本身就是错的。后来我把掉电检测阈值调高并加大了主控板滤波电容容量确保从检测到掉电到完全断电之间有至少20毫秒的余量。同时给FRAM写入加CRC校验上电恢复时先校验数据校验不过就进入待回零状态而不是使用坏数据。排查这类问题时我的建议是先分两步一是用示波器看掉电瞬间检测信号和VCC电压的时序关系二是把FRAM写入和恢复做成单独的测试函数反复断电重启几百次看数据是否正确。不要一上来就怀疑算法算法在这种场景下通常是无辜的。5.2 正转时圈数反而减少位置越转越小第二种常见问题是方向反了。现象是电机正转单圈值正常增加但软件合成后的总位置却越来越小。出现这种情况先检查编码器的计数方向参数再看连到控制器的信号方向最后看软件里的方向系数。还有一个坑是格雷码转二进制时位序弄反。有些编码器的SSI帧是MSB在前有些是LSB在前如果解析时高低位颠倒读出的raw值会呈现完全乱序的状态位置自然不可能正确。解决方法是先让电机低速匀速转观察控制器收到的raw值是不是连续递增或递减。如果不是优先检查帧格式和位序而不是急着调算法。调试方向问题有一个特别有效的土办法把电机用手慢慢转一圈同时通过调试口打印当前raw值。如果raw值从0平稳增加到131071再回到0方向是对的如果中途出现乱跳、非单调变化那一定是读取或者解析的问题。5.3 高速旋转偶发乱跳位置突然增加几千个计数这个问题花了我最长时间。低速运行完全正常转速提高后位置偶发性地跳几千甚至上万个计数过一会儿又能自己恢复。排查过程从软件逐层往硬件查。先排除算法问题用固定raw值模拟输入证明半圈修正逻辑本身没有缺陷。再查信号完整性用示波器看SSI数据线的波形发现在电机高速运行时数据线上出现了明显的振铃和毛刺个别脉冲被多采或少采raw值自然就错了。解决方法是几招叠加。编码器线改用双绞屏蔽线屏蔽层单端接地SSI通信速率从1 MHz降到500 kHz接收端加终端电阻软件里对raw值做连续有效性判断如果变化量超过正常范围就丢弃本次数据下一周期重读。改完以后高速运行下的误码率明显下降连续跑了几万圈没有再出现跳变。从这件事得出的经验是编码器通信稳定是软件算法有效的前提如果物理层时不时出一次错再好的算法也会被带偏。宁可通信速率降低一点也要保证每帧数据绝对可靠。5.4 电机静止但位置在抖速度环低速抖动最后一个问题发生在整机联调阶段。电机静止时位置环输出看起来稳定但电机声音异常能听到高频嗡嗡声用手摸电机外壳有轻微振动。通过调试口观察发现静止时编码器raw值确实会跳最低位在几个计数之间反复变化。这些细微变化进入速度差分后被放大成每秒几十个计数的速度波动速度环再放大成扭矩波动电机自然就抖起来了。解决方法是按前文的思路做了三层优化。一是速度估算加滑动平均二是速度环前馈通道加死区处理三是把编码器原始位置读取的噪声从源头降低检查了联轴器松紧和编码器安装座重新紧固之后噪声降低了不少。三层优化叠加电机静止时基本听不到异常声音了。这块的窍门在于不要把所有问题都推给软件。编码器的机械安装质量、联轴器刚性、线缆走线方式都会直接反映在位置数据里。软件滤波只是补救能优先后面的机械问题才是根本。做这个项目最大的体会是“无限旋转”这件事真正难的不是编码器本身而是如何让系统记住“上一次停在哪里”。软件圈数扩展提供了一条成本极低、实现灵活的路径但它的前提是采样周期、接口稳定性、掉电保存逻辑都要配合好。如果这几个环节都做扎实了一片普通的单圈绝对值编码器配上几十块钱的FRAM就能顶上一个价格贵好几倍的真多圈方案。最后再分享一个很实用的调试技巧。在验证圈数扩展逻辑是否正确时不要只在监控界面看总位置可以把圈数和单圈值分开同时打印。手动低速正转几圈再反转几圈观察圈数是否按预期加减。如果圈数和单圈值都对得上整个方案基本就稳了。这个习惯帮我节省了大量联调时间也避免了把多个问题混在一起排查的麻烦。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

21届智能车竞赛开源实录:电源、电机驱动与PID控制的完整工程化指南 2026/9/29 21:22:09

21届智能车竞赛开源实录:电源、电机驱动与PID控制的完整工程化指南

21届智能车竞赛的圈子有个老传统:比完赛,车可以烂在仓库里,但工程资料必须开源,让下一届的学弟学妹少踩几个坑。我们疯狂电路组soberup战队也把这套传统玩明白了——把整整一年的积累整理成了一份开源目录,从原理图、P…

阅读更多 →
基准测试(Benchmark)实战:用 MMLU、HumanEval、C-Eval 榜单读懂模型能力边界 2026/9/29 21:22:08

基准测试(Benchmark)实战:用 MMLU、HumanEval、C-Eval 榜单读懂模型能力边界

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
AI Agent无人值守攻击实战溯源:用DeepSeek+Hermes搭建检测防御与规避方案 2026/9/29 21:22:08

AI Agent无人值守攻击实战溯源:用DeepSeek+Hermes搭建检测防御与规避方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Muse、hindsight 与 AgentID:Agent 生态一周长出的三层地基 2026/9/29 21:22:08

Muse、hindsight 与 AgentID:Agent 生态一周长出的三层地基

Muse、hindsight 与 AgentID:Agent 生态一周长出的三层地基 过去一周,如果你只盯着模型榜单,会觉得风平浪静。 但把视线挪到「Agent 跑起来需要什么」这一层,会发现一周之内长出了三样东西,而且它们恰好对应三个不同的…

阅读更多 →
会编网络:Python生态强大,聊聊少有人知的优质第三方库 2026/9/29 21:22:08

会编网络:Python生态强大,聊聊少有人知的优质第三方库

熟悉Python的人都知道,Python最大优势之一就是庞大开源第三方库生态。海量开发者持续贡献各类工具库,几乎大部分常见需求,都有现成代码方案。提到Python库,大家最熟悉无非pandas、requests,分别用于数据分析和爬虫。除…

阅读更多 →
PCIe Gen5 EDSFF NVMe SSD:OCP参考设计与工程落地要点 2026/9/29 21:21:48

PCIe Gen5 EDSFF NVMe SSD:OCP参考设计与工程落地要点

最近把OCP官网那份PCIe Gen5 EDSFF NVMe SSD参考设计文档完整过了一遍,顺手把里面牵扯到的电气、热设计、机械和固件管理几个层面都做了笔记。做服务器、存储阵列,或者还在纠结下一代NVMe SSD怎么选型的话,这份文档很值得当作第一份“设计输入…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉