尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
三菱PLC ST编程中CRC-16校验替代累加和的实战指南
1. 项目概述为什么一个累加和校验会让三菱ST程序“哑火”四成在三菱PLC的STStructured Text编程现场我见过太多次这样的场景设备运行半年没出问题某天突然通讯中断、数据错乱、伺服轴抖动HMI上跳着莫名其妙的AL10.1报警重启PLC后暂时恢复但两小时后又复现。工程师查电源、换电缆、重刷固件包、甚至怀疑是FX3U或FX5U本体硬件老化——直到把抓到的原始报文拖进Excel手动比对CRC-16校验值才发现真正元凶藏在最不起眼的地方校验算法选错了。标题里这句“累加和vs CRC误码率高40倍”不是夸张修辞而是我在三个不同产线实测得出的硬数据。用累加和Sum Check替代标准CRC-16如CRC-16-Modbus或CRC-16-CCITT做通讯帧校验在相同电磁干扰环境、相同波特率9600/19200、相同线缆长度15米屏蔽双绞线下连续72小时压力测试累加和方案平均每小时触发2.8次校验失败而CRC-16方案仅为0.07次——误码率相差39.7倍四舍五入就是40倍。这个差距不是理论推演是真实产线上用FX3UQD77MS2模块控制MR-J4伺服时因一次校验失效导致定位偏差超±0.1mm最终整批产品报废后我们蹲在车间角落用示波器和逻辑分析仪一帧一帧扒出来的结论。核心关键词“三菱”“ST”“CRC”“误码率”背后实际指向的是工业自动化领域一个被长期低估的底层风险在ST语言中手写校验逻辑时开发者常因“累加和写起来快”“以前项目都这么用”“手册里没强制要求”等惯性思维主动放弃CRC却不知这一步选择直接把通讯链路的抗干扰能力从高速公路降级为乡间土路。它不一定会立刻让你的PLC报错但会在温湿度变化、变频器启停、焊机打火这些日常工况下悄悄积累错误直到某个临界点集中爆发。这篇文章不讲抽象原理只说我在FX3U/FX5U平台用ST语言实现CRC-16校验时踩过的坑、调过的参数、验证过的方法以及为什么累加和在工业现场根本不够用——如果你正在写ST通讯程序或者正被AL10.1、AL11.2这类“通讯异常”报警折磨这篇就是为你写的。2. 核心设计思路拆解为什么累加和在工业现场注定失败2.1 累加和的“温柔陷阱”三行代码背后的致命缺陷先看一段典型的、让很多工程师觉得“够用”的ST累加和校验代码// ST语言伪代码 - 累加和校验 VAR DataArray : ARRAY[0..15] OF BYTE; // 假设16字节数据 CheckSum : BYTE : 0; i : INT; END_VAR FOR i : 0 TO 15 DO CheckSum : CheckSum DataArray[i]; END_FOR这段代码执行起来确实快16次加法一次取反如果需要编译后指令周期极短在FX3U这种资源有限的PLC上跑得飞快。但它掩盖了三个工业现场无法容忍的硬伤第一无法检测偶数个比特翻转。累加和本质是模256加法当数据中两个比特同时出错比如0x01变成0x03即bit0和bit1都翻转累加和结果可能完全不变。在工厂环境中变频器IGBT开关产生的高频共模干扰恰恰最容易诱发成对的比特翻转——示波器抓到的典型干扰脉冲宽度在10ns~50ns足够让RS485收发器的采样点同时误判相邻两位。我们曾在一个注塑机产线复现过干扰脉冲恰好让数据帧中第3字节和第7字节各翻转1位累加和校验值完全正确但实际数据已错伺服接收后执行了错误的脉冲数导致模具合模力偏差12%压坏两套精密镶件。第二对字节顺序完全不敏感。累加和只关心字节值之和不关心字节位置。如果通讯线缆接反A/B线颠倒RS485电平会全盘反转导致整个数据帧按位取反。此时累加和校验值也会按位取反但若校验端也做了同样取反处理常见于非标协议校验就“意外通过”。更危险的是当数据帧因干扰出现字节移位比如帧头0x02被干扰成0x00后续所有字节左移一位累加和依然可能凑巧匹配——因为丢失一个字节的同时末尾多了一个随机字节总和未必改变。我们在调试FX5U与第三方HMI通讯时就遇到过因终端电阻接触不良导致的周期性字节滑动累加和校验连续37帧“通过”但实际控制指令完全错乱。第三零值敏感度为零。累加和对全零数据帧和全FFh数据帧的校验值都是0模256下这意味着如果通讯链路突发强干扰将整帧数据“抹白”成全零校验依然通过。而工业现场的雷击感应、大功率设备启停完全可能产生持续数十微秒的“数据静默”窗口让接收端收到一帧全零的假数据。我们实测过FX3U的RS485口在模拟雷击浪涌1kV/500A后有17%的概率输出全零帧累加和校验无一例外放行。提示别信“我们厂用了十年累加和都没事”。那只是运气好——干扰没击中你的脆弱点。就像没系安全带开车十年没事不代表安全带没用。2.2 CRC-16为何是工业通讯的“防弹衣”CRCCyclic Redundancy Check不是简单求和而是基于多项式除法的校验机制。以最常用的CRC-16-Modbus为例其生成多项式是x¹⁶ x¹⁵ x² 1十六进制0x8005。它的抗错能力来自三个数学特性首先检错距离Hamming Distance高达3。这意味着任何1位、2位比特错误CRC-16都能100%检出。更重要的是它能检出所有奇数位错误概率100%以及绝大多数偶数位错误理论检出率99.998%。在我们72小时测试中所有被CRC捕获的错误92%是单比特翻转6%是双比特剩下2%是更复杂的突发错误——而累加和漏掉了其中83%的双比特错误。其次对字节位置极度敏感。CRC计算过程中每个字节不仅参与当前轮运算还会通过移位影响后续所有字节的计算路径。哪怕只交换数据帧中任意两个字节的位置CRC值必然改变。这直接杜绝了字节移位、线序颠倒导致的“假通过”。我们在调试QD77MS2模块与MR-J4伺服通讯时曾因编码器线缆插头针脚错位A/B信号互换导致位置反馈数据整体右移1位CRC校验立即报错而累加和沉默了整整11分钟。最后对“全零”有天然免疫力。CRC-16的初始值Initial Value通常设为0xFFFF且计算后会进行异或XOR操作。全零数据帧的CRC值绝不会是0而是固定值如CRC-16-Modbus全零帧校验值为0x0000但这是经过XOR后的结果原始余数非零。这确保了数据静默被可靠识别。我们在EMC实验室用脉冲群发生器EFT模拟电网瞬态干扰当干扰强度达到2.5kV时累加和放行了41%的全零帧而CRC-16放行率为0。注意CRC不是万能的。它不能纠错只能检错它对长突发错误如连续10位以上错误检出率下降。但在PLC通讯的典型错误模式单/双比特、短突发下它是目前性价比最高的方案。2.3 为什么三菱PLC用户特别容易掉进累加和陷阱三菱的生态里累加和泛滥有其历史原因早期FX系列手册的“默认示范”2005年前的FX1S/FX1N手册在串口通讯例程中大量使用累加和因其代码简短适合当时内存仅8K的PLC。后来者照搬形成路径依赖。GX Works2的“隐藏成本”GX Works2中调用内置CRC指令如CRC16需额外授权而累加和纯ST编写无需授权。很多中小集成商为省几百元授权费主动选择累加和。ST语言的“自由幻觉”ST语言允许开发者完全自主实现校验逻辑不像梯形图有标准化功能块约束。这种自由反而让经验不足者低估了校验算法的复杂性。固件包下载的误导网络上流传的“FX3U固件包下载”教程常附带非标通讯协议示例其中校验部分多为累加和——因为作者只求“能通”不求“可靠”。但现实是FX3U/FX5U的ST编译器早已优化CRC-16计算在现代PLC上耗时仅比累加和多3~5个扫描周期FX3U约0.8msFX5U约0.12ms这点时间成本远低于一次AL10.1报警导致的产线停机损失。3. ST语言CRC-16实现详解从原理到可运行代码3.1 CRC-16核心原理用“除法”理解校验的本质别被“多项式除法”吓住。把它想象成一种特殊的“带进位除法”被除数你的数据帧比如0x02, 0x01, 0x03, 0x04后面补16个0因为是CRC-16。除数生成多项式如0x8005写成二进制是100000000000010117位最高位隐含。运算过程从被除数最高位开始每次取17位与除数同长如果该17位最高位是1就与除数异或否则跳过。然后左移1位取下一位重复直到处理完所有位。余数最后剩下的16位就是CRC值。关键点在于异或XOR是可逆的且对单比特错误极其敏感。一个比特翻转相当于被除数加了一个只在该位为1的数整个除法路径彻底改变余数必然不同。我们用一个极简例子演示CRC-4简化版便于手算数据0x03二进制0011补4个0 →00110000生成多项式x⁴ x 1→100115位计算00110XOR1001110101→ 左移 →10101010101XOR1001100110→ 左移 →00110000110XOR10011不匹配跳过→ 左移 →01100001100XOR10011不匹配→ 左移 →11000011000XOR1001101011→ 余数10114位这个1011就是校验码。如果接收端用同样方法计算余数不为0说明出错。3.2 三菱ST中CRC-16的两种实现方式对比在FX3U/FX5U的ST环境下实现CRC-16有两条路方式优点缺点适用场景查表法Lookup Table速度最快单字节处理仅需1次查表1次异或FX3U实测0.3ms占用256×2512字节RAM对老型号FX1S可能吃紧FX3U/FX5U主流推荐内存充裕位运算法Bit-by-Bit内存占用极小仅几个变量代码透明易调试速度慢每字节需16次循环FX3U实测1.2ms超低资源PLC或教学演示我们主推查表法因其在工业现场的实时性要求下更具优势。3.3 查表法ST代码实现CRC-16-Modbus以下是经过GX Works2 V2.0实测、可在FX3U/FX5U上直接编译运行的ST代码。重点已加注释说明// CRC-16-Modbus 查表法实现 - 适用于FX3U/FX5U // 生成多项式: x^16 x^15 x^2 1 (0x8005) // 初始值: 0xFFFF, 最终异或: 0x0000, 输入/输出不反转 // 定义CRC查表数组256项每项16位 VAR_GLOBAL CONSTANT CRC16_TABLE : ARRAY[0..255] OF WORD : [ 16#0000, 16#C0C1, 16#C181, 16#0140, 16#C301, 16#03C0, 16#0280, 16#C241, 16#C401, 16#04C0, 16#0580, 16#C541, 16#0700, 16#C7C1, 16#C681, 16#0640, // ... 此处省略中间240项实际需填满256项 ... 16#8800, 16#48C1, 16#4981, 16#8940, 16#4B01, 16#8BC0, 16#8A80, 16#4A41, 16#4E01, 16#8EC0, 16#8F80, 16#4F41, 16#8D00, 16#4DC1, 16#4C81, 16#8C40 ]; END_VAR // CRC计算函数 FUNCTION CRC16_Modbus : WORD VAR_INPUT pData : POINTER TO BYTE; // 指向数据首地址 nLength : DINT; // 数据长度字节 END_VAR VAR wCRC : WORD : 16#FFFF; // 初始值 i : DINT; bData : BYTE; wIndex : WORD; END_VAR // 主循环逐字节处理 FOR i : 0 TO nLength - 1 DO // 取当前字节 bData : pData^[i]; // 计算查表索引CRC高8位 XOR 当前字节 wIndex : WORD( (wCRC / 256) XOR bData ); // 更新CRCCRC低8位左移8位再与查表值异或 wCRC : WORD( (wCRC * 256) XOR CRC16_TABLE[wIndex] ); END_FOR CRC16_Modbus : wCRC; // 返回16位CRC值 END_FUNCTION关键细节解析查表数组必须声明为VAR_GLOBAL CONSTANT三菱ST要求常量数组在全局区定义且编译时固化否则运行时报错。数组值需严格按CRC-16-Modbus标准生成可用Python脚本批量生成文末提供。指针pData的使用pData^[i]是ST标准指针解引用语法^表示取址。确保传入的指针有效否则PLC可能宕机。wCRC / 256与wCRC * 256的妙用ST中WORD是16位/256等效于右移8位取高8位*256等效于左移8位清空低8位。这是规避ST不支持位操作的常用技巧。初始值16#FFFF这是Modbus标准不可改为0x0000否则校验值不匹配。3.4 实际调用示例构建完整通讯帧假设你要向MR-J4伺服发送一个“绝对定位指令”数据帧格式为帧头0x02地址0x01功能码0x06写单寄存器寄存器地址0x0000假设数据0x1234CRC2字节低位在前Modbus标准ST调用代码如下// 定义发送缓冲区10字节1帧头1地址1功能码2地址2数据2CRC VAR SendBuffer : ARRAY[0..9] OF BYTE; CRC_Result : WORD; i : INT; END_VAR // 填充数据部分不含CRC SendBuffer[0] : 16#02; // 帧头 SendBuffer[1] : 16#01; // 地址 SendBuffer[2] : 16#06; // 功能码 SendBuffer[3] : 16#00; // 寄存器地址高字节 SendBuffer[4] : 16#00; // 寄存器地址低字节 SendBuffer[5] : 16#12; // 数据高字节 SendBuffer[6] : 16#34; // 数据低字节 // 计算CRC对前7字节索引0~6计算 CRC_Result : CRC16_Modbus(ADR(SendBuffer), 7); // 将CRC低位字节写入SendBuffer[7]高位写入SendBuffer[8] SendBuffer[7] : BYTE(CRC_Result AND 16#FF); // 低位 SendBuffer[8] : BYTE((CRC_Result / 256) AND 16#FF); // 高位 // 此时SendBuffer[0..8]即为完整帧可送入串口发送缓冲区 // 注意Modbus规定CRC低位在前所以SendBuffer[7]是低位为什么CRC低位在前这是Modbus物理层约定与CRC算法本身无关。计算出的16位值0x1234要先发0x34再发0x12。代码中BYTE(CRC_Result AND 16#FF)提取的就是低8位。3.5 性能实测与资源占用我们在FX3U-48MR上用GX Works2 V2.0编译上述代码实测结果内存占用查表数组512字节 函数变量约20字节 532字节RAM。FX3U标配8K RAM占比6.5%完全可接受。执行时间对10字节数据帧平均扫描周期增加0.28ms使用PLC内置时钟测量。最大吞吐量单次计算支持最大255字节DINT上限满足所有三菱通讯协议需求FX系列最大帧长通常200字节。对比累加和同样10字节累加和耗时0.05ms但如前所述这0.23ms的代价换来的是40倍的误码率下降——在产线每分钟生产60件产品的场景下这0.23ms换来的是每年减少237次非计划停机。4. 实操避坑指南那些手册里不会写的血泪教训4.1 查表数组生成千万别手敲一个错位全盘皆输CRC查表数组的256个值必须严格按算法生成。我见过最惨的案例某工程师手抄网上找的表格抄到第127项时少写了一个16#前缀导致0x1234被当成十进制1234整个表错乱。PLC编译通过但运行时CRC永远不匹配排查了三天最后用逻辑分析仪抓包发现发送端CRC值恒为0。正确做法用Python脚本自动生成附可运行代码def generate_crc16_table(): poly 0x8005 table [] for i in range(256): crc i 8 for _ in range(8): if crc 0x10000: crc (crc 1) ^ poly else: crc crc 1 crc 0xFFFF table.append(crc) return table table generate_crc16_table() # 输出为ST格式 print(VAR_GLOBAL CONSTANT) print( CRC16_TABLE : ARRAY[0..255] OF WORD : [) for i, val in enumerate(table): if i % 8 0: print( , end) print(f16#{val:04X}, end) if i 255: print(, , end) if i % 8 7 or i 255: print() print( ];) print(END_VAR)运行此脚本复制输出结果粘贴到ST程序中即可。务必检查输出的项数是否为256且每项为4位十六进制如16#0000。4.2 字节序陷阱FX系列PLC的“小端”魔咒三菱FX系列PLC内部存储采用小端序Little-Endian。当你用WORD变量存储一个值比如wValue : 16#1234其内存布局是地址00x34低字节地址10x12高字节这在CRC计算中极易出错。例如若你错误地认为wCRC的高字节在低地址查表索引计算就会错// ❌ 错误假设高字节在低地址 wIndex : WORD( (wCRC AND 16#FF) XOR bData ); // 取了低字节而非高字节 // ✅ 正确FX系列中高字节在高地址所以wCRC/256得到高字节 wIndex : WORD( (wCRC / 256) XOR bData );验证方法在GX Works2中将wCRC设为16#1234用在线监视查看其字节组成确认BYTE00x34,BYTE10x12。4.3 通讯协议匹配别让CRC成了“单相思”CRC只是校验工具必须与通讯协议严格匹配。三菱常用协议有Modbus RTUCRC-16-Modbus初始值0xFFFF低位在前无反转。MC协议QnA兼容CRC-16-CCITT初始值0xFFFF但高位在前且最终异或0xFFFF。自定义协议需确认对方设备文档常见变异有初始值0x0000、最终异或0x0000、输入字节反转等。血泪教训我们曾为FX5U对接一台国产温控器对方文档写“CRC-16”但未注明类型。我们按Modbus实现始终失败。最后用Python模拟各种CRC变种发现对方用的是CRC-16-CCITT0x1021且高位在前。修改ST代码中查表索引计算和最终异或值后一发即中。快速排查法用PC端串口助手如XCOM发送已知数据抓取设备返回的正确CRC值反向验证你的算法。4.4 AL10.1报警的终极诊断CRC只是“症状”不是“病因”标题中的“三菱je报警代码al10.1”本质是“通讯异常”但根源可能多样CRC校验失败本文主题响应超时波特率不匹配、线缆过长地址错误从站地址设错功能码不支持主站发0x10从站只支持0x03系统化排查流程先用示波器看RS485 A/B线波形确认无严重畸变、过冲用逻辑分析仪抓取原始报文比对发送帧与接收帧确认是数据错还是丢帧若数据错用本文CRC代码重新计算看是否匹配若CRC匹配但报警仍存检查超时时间FX3U默认100ms可调至500ms最后检查物理层终端电阻120Ω、线缆屏蔽层单端接地、共模电压应7V。我们总结的“AL10.1速查表”现象最可能原因验证方法解决方案每次发同一指令都报AL10.1CRC不匹配抓包比对CRC值检查CRC类型、字节序、初始值随机偶发AL10.11次/小时电磁干扰示波器看波形毛刺加粗屏蔽线、缩短线缆、加磁环一开机就AL10.1地址/波特率错用PC串口助手测试核对PLC与从站设置多台设备中仅一台AL10.1从站硬件故障更换从站设备返厂维修注意不要迷信“重刷固件包”。FX3U固件升级主要修复已知BUG不会改变CRC算法逻辑。网络上“fx3u固件包下载”教程里的校验错误刷固件也解决不了。5. 常见问题速查与扩展实践5.1 常见问题速查表问题现象可能原因排查步骤解决方案ST编译报错“ARRAY size too large”查表数组超出PLC内存限制检查PLC型号RAM容量确认数组声明为CONSTANTFX1S/FX1N改用位运算法FX3U/FX5U确认GX Works2版本支持大数组CRC计算结果与PC端工具不一致CRC参数不匹配初始值、异或值、字节序用同一组数据分别在PLC和PC工具如Online CRC Calculator计算逐项核对初始值、多项式、输入是否反转、输出是否反转、高低字节顺序发送帧CRC正确但从站不响应从站地址错、功能码不支持、寄存器地址越界用串口助手发送相同帧观察从站反应检查从站手册确认地址范围、支持功能码用PLC监视变量确认发送数据FX5U中CRC函数调用后PLC死机指针pData指向非法地址如NULL在调用前添加IF pData 0 THEN ... END_IF保护确保指针初始化有效避免对未分配内存的指针解引用累加和能通CRC死活不通误将CRC值当作数据发送未按协议要求放置抓包看帧结构确认CRC是否在帧尾、是否占2字节严格按协议定义帧格式CRC必须是最后2字节5.2 进阶实践为你的ST项目加一道“保险”仅仅实现CRC还不够。真正的工业级鲁棒性需要组合策略第一双校验冗余对关键指令如伺服使能、急停复位在CRC之外再加一层累加和。虽然累加和弱但双重校验可拦截CRC算法实现错误如查表索引算错。代码只需增加几行// 在CRC计算后追加累加和 CheckSum : 0; FOR i : 0 TO nLength - 1 DO CheckSum : CheckSum pData^[i]; END_FOR // 发送时帧结构变为[Data][CRC_L][CRC_H][Sum]第二超时重试指数退避AL10.1报警后不要立即重发而是等待2^retry_count * 10ms首次20ms第二次40ms第三次80ms...避免总线拥塞。FX3U中可用TON定时器实现。第三错误日志记录用PLC内部文件寄存器如R0-R999记录最近10次CRC失败的帧头、地址、错误时间戳。当AL10.1频发时这些日志是定位干扰源的黄金线索。5.3 扩展思考CRC之外工业通讯的“纵深防御”CRC-16是基础但不是终点。在更高要求场景可叠加应用层心跳包主站定期发0x00指令从站必须回0x00超时即断开连接。防止“假在线”。序列号机制每帧带递增序列号从站只响应比上次大的序列号杜绝重放攻击虽工业网少见但防误操作有效。数据签名未来在FX5U等高性能PLC上可尝试轻量级哈希如CRC-32为关键参数生成签名防篡改。但请记住所有高级方案都建立在CRC这个基石之上。没有可靠的CRC上层再花哨的机制都是空中楼阁。我见过太多项目花大力气做数据加密却在CRC上栽跟头——因为开发者觉得“校验嘛随便写写就行”。6. 我的实战体会从“能用”到“可靠”的认知跃迁写这篇的时候我刚从东莞一家汽车零部件厂回来。他们产线用FX5U控制12台MR-J4伺服过去半年每月平均停机1.7次每次损失18万元。我们介入后第一件事不是换硬件而是把所有ST通讯程序里的累加和替换成本文的CRC-16查表法。改动只花了3小时但效果立竿见影上线后连续47天零AL10.1报警OEE设备综合效率从82.3%提升到94.6%。这个过程让我深刻体会到工业自动化里的“可靠性”从来不是靠堆砌高端硬件而是藏在每一行ST代码的细节里。一个/256和*256的用法一个查表数组的生成方式一个CRC参数的微小差异都可能成为产线稳定的分水岭。很多工程师抱怨PLC“不稳定”却很少去想自己写的那几行校验代码是不是真的经得起车间里焊机、变频器、液压机的联合考验。所以下次当你打开GX Works2准备写ST通讯程序时别再想“累加和够快”而是问自己一句“这行代码能不能扛住下一次雷击”——答案就藏在那个被很多人忽略的CRC-16查表里。
RELATED

相关推荐

MCU EFT抗扰设计:电源/IO/时钟三重防护与全栈协同实战

MCU EFT抗扰设计:电源/IO/时钟三重防护与全栈协同实战

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

📅 2026/10/31 1:12:00
机器人主控选型:瑞芯微RK3588/3576/3568如何优化BOM成本?

机器人主控选型:瑞芯微RK3588/3576/3568如何优化BOM成本?

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

📅 2026/10/31 1:12:00
Instagram网格信息流终极指南:用RyukGram把动态变成带数据的缩略图墙

Instagram网格信息流终极指南:用RyukGram把动态变成带数据的缩略图墙

【免费下载链接】RyukGram RyukGram, The Instagram tweak for iOS power users. 项目地址: https://gitcode.com/gh_mirrors/ry/RyukGram 点击查看 免费下载 RyukGram 是一款面向 iOS 重度用户的 Instagram tweak,它的「网格动态」(Grid fe…

📅 2026/10/31 1:07:00
MORE NEWS

更多资讯

📰

Windows Server 2008 R2 从零安装 IIS7.5(一):角色安装与全局设置

在 Windows Server 2008 R2 上跑 PHP 站点,第一步是把 IIS 装起来。默认站点不删、全局设置不调,后面配 PHP 会一路踩坑。本篇只干一件事:把 IIS7.5 装好、站点建好、全局设置一次调好。一、添加 IIS 角色1、右击计算机管理:2、添…

📰

中科晟达注塑机数据采集网关 ZK-D1/D3 对接 MES 系统稳定性评估

摘要:本文围绕中科晟达注塑机数据采集网关 ZK-D1/D3 与 MES 系统对接的稳定性展开,从通信链路、数据采集可靠性、断线重连与缓存补传、协议兼容性、部署与运维等维度分析影响稳定性的关键因素,并给出可落地的验证方法与优化建议,帮…

📰

大模型Agent学习指南:收藏这份从用户侧到旁路的循环解析,小白也能轻松入门!

本文深入解析LLM Agent的核心循环结构,从用户侧输入到Agent Runtime主循环,再到工具层和旁路操作,用青、绿、红、橙、紫、黄、灰七色图解四层交互逻辑。强调Agent的自主性源于循环而非模型本身,通过"推理→行动→观察→再推理…

📰

Vue3 + Cesium 加载 GeoTIFF 的 4 种方案对比

方案 1:前端直接解析 GeoTIFF(COG 优先,tiff-imagery-provider /georaster) ✅ 特点:不需要后端服务、不用切片、前端直接拉取 tif 文件解析渲染;适合小文件、COG 云优化 GeoTIFF、临时调试;不适…

📰

C盘无损扩容 win10(亲测,良心,有用)

Win10 用上两三年,C 盘经常说红就红。系统更新缓存和休眠文件常年占着几个 G。微信的聊天记录默认存在文档里,浏览器下载也不问一声就往系统盘落。软件能装到 D 盘,系统盘本身却没处挪,重装系统折腾半天,找人远程扩容又…

📰

地方政府“三套牌“——北京搞科研、上海搞数据、深圳搞量产

《2026具身智能技术与产业发展报告》给出了一张地图:北京——重科研底座、千亿级基金,推动大脑-小脑-本体协同。上海——聚焦算力、数据联盟,模型和场景耦合。深圳——发挥硬件产业链优势,以企业和城市开放场景牵引产业化。这三座…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬