简介本资源是一份面向自动化控制工程师、水厂自控系统设计人员及高校相关专业师生的PLC工程实践文档聚焦自来水厂V型滤池恒水位过滤与多阶段反冲洗的完整自控方案。文档详细阐述了基于施耐德TSX系列PLC的三层架构上位PC主控PLC6台单元PLC硬件设计、FIPWAY总线通信组网、PID恒水位控制算法误差≤±1.5cm、反冲洗逻辑气洗/气水混洗/水洗三阶段时序及排队机制、XBT现场操作盘集成及人机界面显示功能。资源为单文件Word文档.doc大小32KB结构清晰含引言、工艺要求、控制原理图、PLC配置清单、程序逻辑说明及网络拓扑图等核心内容。目前已有188人学习下载读者可直接获取茂名市第二自来水厂真实扩建项目的滤池自控系统设计依据、参数设定规范、设备选型参考及软硬件协同实现路径具备强工程落地性与教学参考价值。1. 这不是普通PLC课设一份真实水厂滤池自控系统设计文档含完整FIPWAY通信配置、PID恒水位控制逻辑与反冲洗排队调度实现你手头这份《基于可编程控制器的自来水厂滤池自控系统的设计与实现说明.doc》不是高校课程设计模板也不是仿真软件里的Demo工程——它是某市第二自来水厂扩建项目中实际落地的滤池控制系统技术文档覆盖从液位偏差±1.5cm的PID闭环调节、气/水/气水混合三阶段反冲洗时序控制到六格滤池按“先进先出”原则排队调度的完整逻辑。文档里写的TSX47/415和TSX67/455 PLC型号、FIPWAY总线拓扑、XBT-B现场操作盘、InTouch7.0组态界面全都是2000年代初国内水厂自动化改造的真实选型。它解决的核心问题是如何让六个物理独立的滤格在进水流量波动、滤料堵塞程度不一、设备启停存在机械延时的现实工况下既各自维持1.2米恒定过滤水位又不抢资源、不冲突地完成反冲洗——这背后是硬件IO分配、PLC间数据共享、状态机切换、时间戳队列管理的硬核组合。如果你正要接手一个带多单元协同控制的水处理项目或需要复现一个具备真实工艺约束的PLC控制系统案例这份文档就是少有的、带参数、带网络结构、带程序框架、甚至含新旧系统TCP/IP桥接方案的“可拆解蓝本”。它不讲概念只讲怎么让阀门在正确时刻开到正确开度怎么让风机在排水阀到位后才启动怎么让中控室看到六个滤格当前处于“过滤中”“排队等反冲”还是“正在气洗第2分钟”。2. 恒水位控制从液位偏差到伺服电机开度PID参数与附加处理程序的协同设计2.1 水位闭环控制的物理链路与信号流恒水位控制不是简单把液位计读数送进PID模块就完事。文档明确指出每个滤格配备独立液位计测量滤料上方水深和阻塞仪测滤床水头损失二者信号均接入对应单元PLCPLC1–PLC6。液位计输出为模拟量4–20mA经TSXAEM411模拟量输入模块转换为PLC内部整型数值该数值与设定值对应1.2米水位做减法得到水位偏差ΔeΔe进入PID运算模块输出为控制量但此输出不能直接驱动伺服电机——它必须经过“输出附加处理程序”再转化为0–10V或4–20mA信号最终控制清水阀伺服电机的开度。这个“附加处理”是关键。文档提到“开度增大的数值是由一定累积时间内水位上升的速度及水位偏差共同决定的”。这意味着单纯比例控制会滞后纯积分会超调而附加程序实质上引入了微分项响应变化率和限幅逻辑防止阀门突开突关。在施耐德TSX系列PLC中这通常通过LD梯形图或ST结构化文本实现先用定时器采样水位变化斜率再将PID输出与斜率加权叠加最后经上下限比较如0%–100%开度限制后输出。// 施耐德PLC ST语言示意恒水位控制主逻辑片段 VAR Level_AI : INT; // 液位计原始AD值0-32767 Level_SP : INT : 24576; // 设定值1.2m对应AD值按4-20mA线性换算 Level_ERR : INT; // 偏差 SP - PV PID_OUT : REAL; // PID模块输出-100.0 to 100.0 Slope_VAL : REAL; // 水位变化率mm/min Final_OUT : REAL; // 最终输出0.0 to 100.0 for valve % Valve_DO : WORD; // 输出字映射至AO模块 END_VAR Level_ERR : Level_SP - Level_AI; // 调用内置PID指令需预置Kp, Ti, Td, Sampling_T PID_CTRL(IN:Level_ERR, RESET:FALSE, MANUAL:FALSE, MAN:0.0, GAIN:2.5, TI:180.0, // 积分时间180秒防慢漂 TD:15.0, // 微分时间15秒抑制快速波动 TS:1.0, // 采样周期1秒 OUTPID_OUT); // 计算水位变化率过去30秒内AD值变化量 / 30 Slope_VAL : (Level_AI - Level_AI_Prev) / 30.0 * 100.0; // 转为相对变化率 // 附加处理PID输出 斜率补偿 限幅 Final_OUT : PID_OUT (Slope_VAL * 0.3); // 斜率权重0.3 IF Final_OUT 100.0 THEN Final_OUT : 100.0; END_IF; IF Final_OUT 0.0 THEN Final_OUT : 0.0; END_IF; // AO模块输出映射假设0-10V对应0-100%开度 Valve_DO : UINT(ROUND(Final_OUT * 3276.7)); // 0-32767范围提示代码中GAIN2.5、TI180.0、TD15.0是文档隐含的典型初值。实际调试时TI过小会导致水位在设定值附近高频振荡因滤池惯性大TD过大则对进水瞬时冲击响应过激易造成阀门机械磨损。我一般会先关闭微分项TD0用GAIN1.0、TI300.0跑通基础闭环再逐步加入微分补偿。2.2 水头损失触发反冲的阈值逻辑与防抖设计恒水位只是过滤阶段目标反冲洗启动条件之一是“水头损失值到达设定值150且延时时间15分钟已到”。这里“150”不是压力单位而是阻塞仪输出的AD值归一化结果如0–32767对应0–300kPa。文档强调“延时时间已到”意味着必须做防抖处理——不能因传感器瞬时干扰就误启反冲。在PLC程序中这需用“延时导通定时器TON 比较指令”组合实现// 阻塞仪信号处理以PLC1为例 VAR HeadLoss_AI : INT; // 阻塞仪AD值 HeadLoss_SP : INT : 150; // 水头损失设定值 HeadLoss_Timer : TON; // 15分钟延时定时器 HeadLoss_Alert : BOOL; // 水头损失超限报警标志 END_VAR // 当前水头损失 ≥ 设定值启动定时器 HeadLoss_Timer(IN:(HeadLoss_AI HeadLoss_SP), PT:T#15M); // PT为预设时间 // 定时器完成且无手动复位则置位报警 HeadLoss_Alert : HeadLoss_Timer.Q AND NOT Manual_Reset_BTN; // 此HeadLoss_Alert信号将作为反冲请求条件之一送入公共冲洗PLC注意HeadLoss_Alert不是立即触发反冲而是作为“请求信号”写入FIPWAY网络的共享数据区由PLC7公共冲洗PLC统一仲裁。这种分离设计避免了单个滤格因传感器故障导致全系统误动作。2.3 手动/自动/现场三态切换的硬件互锁机制文档4.3节明确要求“在滤池由自动状态转到现场时已发出的命令必须全部复位”“自动状态中的时间变量、计数器变量等必须复位”。这指向一个关键安全逻辑三态切换不是软件按钮切换而是硬件端子硬互锁。在TSX47/415 PLC接线中每个滤格的“自动/手动/现场”模式由三个物理开关或继电器触点输入DI模块且电路设计为互斥同一时刻仅允许一个端子为ON。PLC程序读取这三个DI点用“异或”逻辑判断有效状态// 模式识别逻辑确保三态互斥 Auto_Mode : DI_001 AND NOT DI_002 AND NOT DI_003; Manual_Mode : NOT DI_001 AND DI_002 AND NOT DI_003; Local_Mode : NOT DI_001 AND NOT DI_002 AND DI_003; // 若检测到非互斥状态如两个DI同时ON强制进入安全态如全关阀 IF NOT (Auto_Mode OR Manual_Mode OR Local_Mode) THEN Safety_Shutdown : TRUE; // 执行紧急关阀、停泵等动作 END_IF;注意XBT-B操作盘上的“现场”模式本质是将PLC的DO输出直连至阀门执行器绕过PLC程序控制。因此切换瞬间必须清零所有输出寄存器Q0.0–Q7.7否则残留的“开阀”信号可能与现场操作冲突。这是血泪经验——某次调试未清零导致操作员在现场扳动手轮时PLC仍在输出50%开度指令伺服电机堵转烧毁。3. 反冲洗调度六格滤池排队、三阶段时序与设备协同控制的PLC实现3.1 先进先出FIFO队列的数据结构与内存分配反冲洗不是单格独立行为而是六格竞争公共资源3台风机、3台水泵、1台空压机的过程。文档指出“当某滤格正在反冲洗时若又有一个或多个滤池发出反冲洗请求信号时则此信号被存入公共冲洗PLC存储器中然后按存储先后顺序进行冲洗”。这意味着PLC7公共冲洗PLC必须维护一个循环队列Circular Queue。在TSX67/455 PLC中可用内部字存储区如%MW100–%MW105模拟6格队列每个字存储滤格编号1–6地址含义初始值%MW100队首指针Head0%MW101队尾指针Tail0%MW102队列长度0%MW103–%MW108队列数据区6格0入队操作当PLC1发来请求检查队列是否满%MW102 6满则丢弃或报警将滤格号如1写入%MW103 %MW101地址Tail : (Tail 1) MOD 6Length : Length 1。出队操作当前冲洗完成读取%MW103 %MW100获取待冲洗滤格号Head : (Head 1) MOD 6Length : Length - 1。// 入队子程序简化版 PROCEDURE Enqueue(Grp_No : BYTE); VAR Full_Flag : BOOL; BEGIN Full_Flag : (%MW102 6); IF NOT Full_Flag THEN %MW[103 %MW101] : Grp_No; // 写入数据区 %MW101 : (%MW101 1) MOD 6; // Tail %MW102 : %MW102 1; // Length END_IF; END_PROCEDURE;提示队列操作必须用临界区保护。TSX系列PLC无原生互斥锁需用“测试并置位”TSET指令或全局标志位模拟。否则在高速请求下如多格同时超时Head和Tail指针可能错乱导致队列崩溃。3.2 三阶段反冲洗的精确时序与设备联动逻辑反冲洗分气洗→气水混合洗→水洗三阶段每阶段有严格阀门动作序列和设备启停时序。文档3.2节给出关键约束“当水位降至设定的反冲水位时关闭清水出水阀并打开废水排水阀排水阀的信号到位后才关闭排气阀再打开反冲进气阀……”。这里的“信号到位”指阀门行程开关反馈的DI信号而非PLC发出指令的瞬间。以气洗阶段为例PLC7的控制流程为收到出队滤格号如Grp_No3向PLC3发送“准备反冲”指令PLC3关闭进水阀DO点等待其反馈DI信号IN3_01TRUEPLC3关闭清水阀DO点等待反馈IN3_02TRUEPLC3打开排水阀DO点等待反馈IN3_03TRUE确认IN3_03TRUE后PLC7启动风机1向PLC7的DO点写1并启动180秒定时器定时器到PLC7发“气洗结束”指令给PLC3进入下一阶段。// 气洗阶段主控逻辑PLC7侧 VAR Drain_Valve_OK : BOOL; // 排水阀到位信号来自PLC3的DI映射 Blower1_Start : BOOL; // 风机1启动指令 Air_Wash_Timer : TON; Air_Wash_Done : BOOL; END_VAR // 等待排水阀到位此信号由PLC3通过FIPWAY写入PLC7的%MW200 Drain_Valve_OK : (%MW200 1); // 仅当到位且无故障时启动风机 Blower1_Start : Drain_Valve_OK AND NOT System_Fault; // 启动气洗定时器180秒 Air_Wash_Timer(IN:Blower1_Start, PT:T#180S); Air_Wash_Done : Air_Wash_Timer.Q;关键点在于所有设备启停必须以物理反馈为前提而非时间盲等。曾有项目因忽略此点按固定延时启动风机结果排水未净就送气导致滤池喷溅水漫机房。3.3 公共设备风机/水泵的冗余控制与状态同步3台风机两用一备、3台水泵两用一备由PLC7统一调度。文档要求“设备既可以全自动控制也可以手动控制”这意味着PLC7不仅要发启停指令还要实时同步设备状态。实现方式PLC7通过FIPWAY读取每台设备的运行反馈如风机1的RUN_FBDI点、故障信号FAULT_DI、本地/远程切换开关LOCAL_REMOTE_SW。当LOCAL_REMOTE_SWLOCAL时PLC7禁止输出仅监视当REMOTE时PLC7根据反冲阶段输出控制。状态同步表PLC7内存映射设备反馈地址PLC7读控制地址PLC7写本地/远程开关地址风机1%MW301%MW401%MW501风机2%MW302%MW402%MW502水泵1%MW311%MW411%MW511水泵2%MW312%MW412%MW512PLC7程序需周期扫描%MW5xx若发现某设备切至LOCAL则立即将对应%MW4xx清零并置位“手动接管”报警。4. FIPWAY通信网络八台PLC总线拓扑、数据交换协议与跨系统联网实战4.1 FIPWAY物理层与TSX系列PLC的硬件连接规范文档4.1节明确“各PLC采用双绞线电缆连成的总线形接出式拓朴结构通信网其又称FIPWAY通信网传输速率为1Mbps”。这不是普通RS485而是施耐德专有协议需使用TSXASY414FIPWAY适配器或集成FIPWAY口的CPU如TSX67/455。接线要点总线两端必须加120Ω终端电阻接在最后一个PLC的FIPWAY口DIP开关上电缆必须用屏蔽双绞线如Belden 9841屏蔽层单端接地仅在PLC8端最大节点数8个文档中PLC1–PLC8共8台最大距离1000米但实际建议≤600米每台PLC的FIPWAY地址需在硬件拨码开关上设置PLC11, PLC22…PLC88不可重复。避坑 / 常见问题 / 排查现象PLC7无法读取PLC3的水位数据但能ping通其他PLC。原因PLC3的FIPWAY拨码地址设为“0”默认地址而FIPWAY协议规定地址0为广播地址不响应单播读取。解决将PLC3拨码开关拨至“3”断电重启。现象网络偶发中断日志显示“FIPWAY CRC错误”。原因屏蔽层两端接地形成地环路干扰或双绞线扭距不一致非标准线缆。解决拆除PLC3–PLC8端屏蔽层连接仅保留PLC8端接地更换为Belden认证线缆。现象PLC1能收PLC7数据但PLC7收不到PLC1数据。原因PLC1的FIPWAY口DIP开关中“TERMINATION”未启用总线末端需开启终端电阻。解决检查PLC1是否为物理末端若是则拨动DIP开关开启终端电阻。现象上位机PC通过FIPWAY网卡读取数据延迟高达5秒。原因FIPWAY网卡驱动未安装最新版或Windows NT的串口缓冲区溢出。解决升级TE公司FIPWAY驱动至v3.2在Windows NT注册表中增大HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Serial\Parameters\ReceiveBufferSize至65536。现象PLC间数据偶尔错乱如水位值跳变到32767。原因FIPWAY帧校验失败后PLC未丢弃错误帧而是将残帧数据写入寄存器。解决在PLC程序中增加数据有效性校验——对关键模拟量如水位连续3次读取值相差10才采纳否则保持上次有效值。4.2 FIPWAY数据交换共享内存区规划与读写指令配置FIPWAY不是TCP/IP没有IP地址靠“节点地址内存地址”寻址。文档中PLC1–PLC6向PLC7发送反冲请求需约定共享数据区。典型规划以PLC1为例功能PLC1写入地址PLC7读取地址数据类型说明反冲请求标志%MW1000%MW1000 (from PLC1)WORD1请求0清除当前水位AD值%MW1001%MW1001 (from PLC1)WORD用于PLC7监控水头损失AD值%MW1002%MW1002 (from PLC1)WORD用于PLC7判断阀门状态字%MW1003%MW1003 (from PLC1)WORDBit0进水阀Bit1清水阀...在PLC7程序中用READ_VAR指令读取// 读取PLC1的水位值节点地址1起始地址%MW1001 READ_VAR( NODE:1, // PLC1的FIPWAY地址 ADDRESS:%MW1001, // PLC1的内存地址 SIZE:1, // 读1个WORD DATAPLC1_Level // 存入PLC7的变量 );注意READ_VAR是阻塞指令若节点1无响应PLC7会卡死。必须加超时保护——在施耐德PLC中需用READ_VAR配合TIMEOUT参数或改用非阻塞的READ_VAR_ASYNC指令需额外处理完成中断。4.3 新旧系统TCP/IP桥接InTouch NetDDE跨机数据共享实操文档第5节解决了一个经典痛点新建滤池系统PLCInTouch7.0与老系统不同品牌PLC旧版InTouch协议不兼容。方案是利用InTouch的NetDDE功能通过以太网透传数据。实施步骤非理论是真实配置在PC1老系统和PC2新系统上安装相同版本的NetDDE驱动v2.1在PC1的InTouch WindowMaker中创建DDE Server名称设为PC1_SERVER在PC2的WindowMaker中创建DDE ClientApplication填\\PC1\viewerTopic填PC1_SERVERItem填Level_Value老系统水位变量名关键一步在PC1的Windows服务中启动NetDDE Server服务并在防火墙中放行TCP端口1025NetDDE默认端口测试在PC2的WindowViewer中新建一个文本框绑定\\PC1\viewer|PC1_SERVER!Level_Value若显示实时水位则成功。避坑 / 常见问题 / 排查现象PC2能连接PC1但DDE Item始终显示#N/A。原因PC1的InTouch未运行WindowViewer或NetDDE Server服务未启动。解决在PC1任务管理器中确认nddesvr.exe进程存在运行services.msc启动NetDDE Server。现象数据更新延迟达30秒以上。原因InTouch DDE刷新周期默认为1000ms且NetDDE有额外开销。解决在PC2的DDE Client属性中将Refresh Rate改为100ms在PC1的Server属性中勾选Fast Update。现象PC1重启后PC2的DDE连接自动断开无法恢复。原因NetDDE未配置自动重连。解决在PC2的DDE Client脚本中添加OnConnectFailed事件触发Reconnect()函数。现象跨机DDE传输大数组如趋势历史数据时崩溃。原因NetDDE单次传输上限为64KB超限即截断。解决将大数据拆分为多个小于64KB的变量组分批读取。现象PC1和PC2在同一局域网但\\PC1\viewer无法解析。原因Windows NetBIOS名称解析失败或PC1未启用文件和打印机共享。解决在PC1的“网络和共享中心”中启用“网络发现”和“文件和打印机共享”或直接用IP地址\\192.168.1.10\viewer替代主机名。5. 上位机监控InTouch7.0组态画面、报警管理与历史数据回溯的工程化配置5.1 滤池工艺画面的动态元素绑定与状态机映射InTouch7.0的WindowViewer不是静态图片而是实时反映PLC状态的“数字孪生”。文档4.4节提到“动态显示滤池的过滤、等待、反冲等运行过程”这需将PLC中的状态变量与画面元素深度绑定。以滤格1的状态指示灯为例PLC1中定义状态字%MW200Bit0过滤中Bit1排队中Bit2反冲中Bit3故障InTouch中创建一个“状态灯”图形对象其Fill Color属性绑定表达式IF [%S1.MW200].0 1 THEN RGB(0,255,0) 绿色-过滤中 ELSEIF [%S1.MW200].1 1 THEN RGB(255,255,0) 黄色-排队中 ELSEIF [%S1.MW200].2 1 THEN RGB(255,165,0) 橙色-反冲中 ELSEIF [%S1.MW200].3 1 THEN RGB(255,0,0) 红色-故障 ELSE RGB(128,128,128) 灰色-停机 END IF同时该灯的Tooltip绑定滤格1IF([%S1.MW200].0,过滤中,IF([%S1.MW200].1,排队中,IF([%S1.MW200].2,反冲中,停机)))鼠标悬停即显示文字状态。提示文档中“模拟屏PLC8”驱动的物理模拟屏其状态也来自同一套PLC变量。因此InTouch画面与模拟屏必须读取完全相同的内存地址如%MW200否则会出现“中控室显示反冲中模拟屏却显示过滤中”的严重误导。5.2 实时/历史报警的分级策略与声光联动配置文档4.4节要求“实时/历史报警信号”但未说明分级。工程实践中必须区分一级报警Critical如“风机1故障”“排水阀未到位超时”触发声光报警蜂鸣器红灯闪烁需操作员立即确认二级报警Warning如“水位偏差1.0cm”“水头损失140”仅弹窗提示不打断操作三级报警Info如“反冲开始”“过滤结束”记录日志不提示。在InTouch中配置创建三个报警组CRITICAL_GROUP、WARNING_GROUP、INFO_GROUP为每个PLC变量指定报警组和阈值如[%S1.MW200].3加入CRITICAL_GROUP在WindowViewer中放置Alarm Summary控件设置“仅显示未确认报警”关联声光设备用SoundPlay(alarm.wav)函数触发蜂鸣用SetTagValue([PLC8]DO_001,1)点亮PLC8的报警灯。注意报警确认必须写入PLC内存如%MW999否则重启InTouch后报警状态丢失。文档虽未提但这是工业现场铁律——某次因未写入操作员误以为报警已消除导致风机故障未处理滤池停运8小时。5.3 历史趋势曲线的数据源选择与采样周期优化文档要求“在线仪表的实时/历史趋势曲线”但趋势数据不是无限存储。InTouch7.0的历史数据库Historian需合理配置数据源只记录关键变量如[%S1.MW1001]滤格1水位、[%S1.MW1002]水头损失、[%S7.MW401]风机1启停采样周期水位等慢变量设为10秒风机状态等快变量设为1秒存储周期按水厂要求至少保存30天数据约26GB空间查询优化在Historian中为Time字段建立索引避免查询缓慢。在趋势控件中绑定表达式需指定时间范围 显示最近2小时水位趋势 Trend1.DataSource Historian Trend1.TagName [%S1.MW1001] Trend1.StartTime Now() - 2/24 Trend1.EndTime Now()6. 系统验证与边界测试用真实工况数据跑通PID参数、反冲队列与跨系统通信的终极检验6.1 恒水位控制的闭环验证从阶跃响应到抗扰动测试文档要求“水位波动控制在±1.5cm”这必须通过实测验证而非仅看PLC程序。我的验证流程分三步第一步阶跃响应测试在PLC1中临时修改水位设定值从245761.2m突增至25000约1.22m用InTouch趋势记录水位实际值计算超调量σ% (峰值-新设定值)/新设定值 × 100%调节时间ts 水位进入±1.5cm带并不再越出的时间合格标准σ% 5%ts 300秒。若超调大减小GAIN若ts长增大GAIN或减小TI。第二步抗进水扰动测试在滤池进水管处人为制造流量阶跃如快速开大上游阀门记录水位波动曲线重点观察波动幅度是否在±1.5cm内恢复时间是否180秒若波动超限需增强微分作用增大TD或加入前馈补偿将进水流量信号乘以系数叠加到PID输出。第三步长期稳定性测试连续运行72小时每小时截图水位趋势统计所有时刻的水位绝对误差绘制直方图要求95%的数据点误差≤1.5cm。曾有个项目直方图右偏查出是液位计安装位置偏高重新标定后解决。6.2 反冲洗队列的压力测试模拟高并发请求下的调度鲁棒性六格滤池不可能永远错峰反冲。必须模拟最坏场景场景1六格滤池同时满足“过滤48小时”条件场景2四格滤池水头损失同时超150且延时15分钟到场景3队列满6格时第七格发出请求。测试方法在PLC7中编写测试脚本用SET指令在毫秒级精度内向%MW100–%MW105写入请求用逻辑分析仪抓取FIPWAY总线确认PLC7的READ_VAR指令在100ms内完成所有PLC1–PLC6的状态读取监控PLC7的CPU负载要求70%TSX67/455的警戒线记录从第一格入队到第六格完成反冲的总耗时应≤6×气洗混合洗水洗切换 6×12min 72分钟。避坑 / 常见问题 / 排查现象高并发下PLC7的CPU负载飙升至95%反冲延迟。原因READ_VAR指令未加延时密集轮询导致总线拥塞。解决在读取循环中插入WAIT指令每读一台PLC后延时10ms。现象第七格请求被丢弃但操作员未收到报警。原因队列满报警逻辑未关联到InTouch画面。解决在PLC7中增加Queue_Full_Alert变量绑定到InTouch的报警组。本文还有配套的精品资源点击获取
企业数字化 ERP 产品动态
相关推荐
AI时代前端开发的流式交互与Prompt工程实践 1. 前端开发在AI时代的范式转变过去十年间,前端开发经历了从静态页面到复杂单页应用的演进。如今,AI技术的爆发式发展正在重新定义前端工程师的工作边界和技能栈。传统的前端开发主要关注UI呈现和基础交互逻辑,而在AI时代,前端工程… · 2026/11/2 20:46:55
Univer开源表格实践:Canvas渲染与单元格编辑保护 Univer是我这几年看过的开源表格项目里,最值得关注的一个。它不只是一个能嵌进网页里的Excel,而是一整套以Canvas渲染为核心的在线办公套件方案。你可能在GitHub上刷到过它,star涨得很快,但真正把它跑起来、用进去的人其实还不算多… · 2026/11/2 20:46:55
Qt QSS边框深度解析:从渲染原理到跨平台工业级实践 1. 项目概述:为什么一个“边框”值得花一整篇深度拆解?在 Qt 开发中,border这个词看起来简单得近乎透明——不就是给控件画一圈线吗?但如果你真这么想,大概率已经在某个深夜对着 QPushButton 的圆角失效抓耳挠腮&#… · 2026/11/2 20:45:54
AD同步上云实战:域名验证、IdFix预检与Azure AD Connect排错 简介:面向企业IT运维与系统管理员的Office 365与本地AD域同步操作文档,聚焦混合身份管理中的账号一致性、访问控制与云端服务衔接问题,适合正在部署或维护AD同步的中级技术人员参考。内容从域名验证与功能激活前提讲起,依次涉及AD… · 2026/11/3 5:41:08
物理Agent Harness:模型之外决定机器人成败的系统层 最近半年,只要是和做机器人、做物理Agent的朋友碰面,十有八九会被问到同一个问题:“新模型那么强,是不是直接把模型换上就能让机器干复杂活了?”尤其是在吴恩达那套Agent课程把agent这个词彻底带火之后,技术… · 2026/11/3 5:41:08
重复图片查找工具全链路:感知哈希、汉明距离阈值与安全去重 硬盘容量告急的红条弹出来的那一刻,大多数人第一反应是删视频,第二反应是删照片,但真动手翻两遍就会发现一个更扎心的事实:真正占地方的往往不是"照片多",而是"同一张照片存了七八份"。手机自动备… · 2026/11/3 5:41:08
数字孪生技术在智慧园区中的架构设计与实践 1. 智慧园区数字化转型的必然趋势园区作为产业聚集的重要载体,正在经历从传统管理向智能化运营的深刻变革。过去那种依靠人工巡检、纸质登记的园区管理方式,已经无法满足现代企业对高效、智能办公环境的需求。我们团队在参与多个园区数字化改造项目时发现… · 2026/11/3 5:41:08
Strands Harness SDK:一行代码告别手写Agent循环,打造生产级Agent 一天一个开源项目(第 227 篇):Strands Agents Harness SDK —— 从「手写 Agent 循环」到「一行代码拿到生产级 Agent」我先说个真实感受:过去半年,我一直在自己维护一套 Agent 循环代码。从模型调用、工具注册、上下文… · 2026/11/3 5:41:08
Model-Optimizer:大模型推理效能工程化方法论 1. “Model-Optimizer”不是工具名,而是工程目标的精准表达很多人第一次看到“Model-Optimizer”这个标题,下意识会以为它是一个开源项目、某个GitHub仓库名,或者某家公司的商业化产品。我刚接触这个概念时也这么想——直到在NVIDIA GTC现场听… · 2026/11/3 5:40:08
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 4:42:45
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 5:17:18
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 4:42:45
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 5:17:18