news 2026/10/3 7:59:21

PLC与触摸屏低成本三轴示教器方案:从脉冲当量到脚本通信

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PLC与触摸屏低成本三轴示教器方案:从脉冲当量到脚本通信

做机器人示教器这事儿,说难不难,说简单也不简单。最近我把一套“三菱FX3U + 昆仑通态触摸屏”的方案跑通了,实现了三轴联动的示教与自动运行。整个项目做完,我最大的感受是:用触摸屏脚本配合小型PLC做示教器,非常适合预算有限、结构简单、控制逻辑不复杂的场景。这篇文章把我从硬件选型到PLC程序、触摸屏脚本、调试踩坑的全过程记录下来,希望能给正在捣鼓类似项目的朋友省点时间。

1. 项目整体设计与方案选型

1.1 为什么用“PLC + 触摸屏”而不是专用示教器

发那科、安川这些专用机器人示教器,体验确实好,但价格摆在那。一套原装示教器加上控制柜,预算经常顶得上好几台小型设备。很多工厂的自动化改造项目里,设备只需要走几个固定轨迹,重复精度要求不高,用专用工业机器人属于杀鸡用牛刀。

我这次做的项目是给一台小型三轴搬运设备做示教功能。设备行程不大,X轴500mm、Y轴400mm、Z轴200mm,驱动用的是三菱MR-JE伺服,PLC是三菱FX3U-32MT,触摸屏是昆仑通态TPC7062Ti。这套组合的核心思路是:PLC负责实时运动控制和IO逻辑,触摸屏负责示教、点表管理和自动运行控制。

用PLC做运动控制,很多人第一反应是“能行吗”。FX3U本身不带运动控制总线,只能通过脉冲输出控制伺服。但FX3U有三个100kHz的高速脉冲输出口,Y0、Y1、Y2正好可以带三个轴。对于点位运动、直线插补这种精度要求不高的场景,脉冲方式完全够用。

1.2 系统架构与工作流程

整个系统分成三个层次:

  • 操作层:昆仑通态触摸屏,负责坐标显示、手动点动、示教记录、点表编辑、自动运行监控。
  • 控制层:三菱FX3U PLC,负责接收触摸屏指令,执行脉冲输出、回零、限位检测、报警处理。
  • 执行层:三个伺服驱动器与电机,按照PLC发出的脉冲数量和频率精确定位。

示教器的工作流程是这样的:先在触摸屏上切到“手动模式”,用点动按钮把设备移动到目标位置,点“记录”保存当前坐标;重复操作记录多个点后,把这些点保存到点表里;然后切到“自动模式”,PLC按点表顺序执行,设备自动走一遍轨迹。如果中途需要修改某个示教点,直接在触摸屏上编辑坐标数值就行,不用重新走一遍。

这里有个非常关键的认知要提前说清楚:昆仑通态的脚本运行在触摸屏的CPU上,不是运行在PLC里。触摸屏脚本读取的是PLC寄存器的数值,通过Modbus协议或者三菱专用协议通信。所以,触摸屏脚本适合做数据管理、界面逻辑、状态判断这类“慢速”工作,不适合做实时的脉冲控制。实时的运动控制必须放在PLC里,用梯形图或ST语言实现。这个边界如果搞混了,项目大概率会翻车。

1.3 方案优势和潜在问题

这套方案的优势很明显:

  • 成本低,不增加额外的硬件模块。
  • 操作直观,不需要工人学习专业示教器的复杂菜单。
  • 维护简单,触摸屏和PLC都是成熟产品,备件好找。

问题也有,主要集中在几个方面:

  • FX3U的脉冲输出频率限制在100kHz,伺服电子齿轮比不能设太高,否则速度跟不上。
  • 三轴联动不是真正的插补。FX3U的三路脉冲是独立输出的,虽然可以同时启动,但不会根据轨迹自动计算各轴速度。也就是说,直线斜线运动时,不是标准的线性插补轨迹,而是一段一段的“折线”。对于大多数点位搬运场景,这完全够用,但如果要做圆弧或精密轨迹追踪,就得考虑FX3U加配运动控制模块,或者换成FX5U。
  • 触摸屏脚本的扫描周期不稳定,不能用于高速逻辑判断,只能做低优先级的数据处理。

2. 关键参数计算与核心细节解析

2.1 伺服电子齿轮比与脉冲当量计算

这是做整套系统最先要敲定的事。脉冲当量决定了PLC发多少个脉冲对应伺服走多远,直接关系到示教精度的标定。

以我用的三菱MR-JE伺服为例,编码器分辨率是131072脉冲/转(17位)。如果我设定丝杠导程为10mm,那么电机每转一圈,工作台移动10mm。这时候,PLC每发一个脉冲,伺服走多少距离,取决于电子齿轮比CMX/CDV。

脉冲当量计算公式:

  • 伺服电机每转一圈需要的指令脉冲数 = 131072 × CDV / CMX
  • 工作台每移动1mm需要的脉冲数 = 伺服电机每转一圈需要的指令脉冲数 / 丝杠导程

我实际设电子齿轮比CMX=131072,CDV=10000,这样每转一圈需要的指令脉冲数就是131072 × 10000 / 131072 = 10000个脉冲。丝杠导程10mm,那么每个脉冲对应0.001mm。也就是说,脉冲当量是1μm,PLC发10000个脉冲,工作台走10mm。

在触摸屏上做示教时,所有坐标值我都以毫米为单位显示,PLC内部寄存器存的是实际脉冲数,昆仑通态的脚本里做一次数值换算。这个换算逻辑不要放在PLC里,因为触摸屏修改坐标后要立即显示对应关系,放PLC还得来回读,容易出逻辑混乱。

2.2 PLC寄存器规划

三菱FX3U的D寄存器是16位的,但脉冲计数可能要超过32767,所以坐标值我用32位存储,每个轴占用两个D寄存器,低字和高字。我规划的寄存器地址如下:

项目寄存器说明
X轴当前位置D100(低)、D101(高)32位脉冲数
Y轴当前位置D102(低)、D103(高)32位脉冲数
Z轴当前位置D104(低)、D105(高)32位脉冲数
当前示教点序号D1101~100
点表总数D111实际示教点数
运行状态字D1200=停止,1=运行,2=暂停
指令字D130触摸屏写入控制命令
示教缓冲XD140、D141当前要存入的X坐标
示教缓冲YD142、D143当前要存入的Y坐标
示教缓冲ZD144、D145当前要存入的Z坐标

点表存储在PLC的D200开始的区域,每个点的X、Y、Z坐标占6个寄存器,连续存100个点就是600个寄存器。FX3U的D寄存器有8000多个,完全够用。这里不建议把点表放在触摸屏的组态里,虽然昆仑通态的配方功能可以做,但配方数据是存在触摸屏里的,一旦触摸屏故障或者换屏,所有数据都没了。把点表放PLC里,断电用电池保持,更换触摸屏不影响工艺数据。

2.3 昆仑通态脚本的分类与使用边界

昆仑通态的脚本分几类:启动脚本、循环脚本、窗口打开脚本、按钮脚本、事件脚本。我这次项目中,核心用到了循环脚本和按钮脚本。

循环脚本在触摸屏运行时周期执行,有点类似PLC的扫描程序。我把它用来做状态监控和点表显示刷新,每500ms执行一次。这地方有个经验:循环脚本的执行间隔不要设置太短,否则触摸屏的CPU占用率会飙升,界面操作卡顿。尤其是TPC7062Ti这种老型号,CPU性能有限,500ms是安全值。

按钮脚本是点击按钮时触发,我用来处理“记录示教点”“删除示教点”“插入点”“启动运行”这类一次性操作。按钮脚本的执行时机是用户点下按钮的瞬间,不占用循环资源,逻辑写起来也更清晰。

事件脚本是在某个条件满足时触发一次。我在项目里用它来处理PLC返回的报警信息,比如“伺服报警”“限位触发”“回零未完成”,一旦条件成立就弹窗提示并停止运行。注意,事件脚本的触发电平是“边沿”还是“状态”,在组态的时候要区分清楚。我用的是状态触发,条件成立就弹窗,但设置了弹窗去重标记,防止每次循环都弹。

3. PLC梯形图实现与三轴联动控制逻辑

3.1 回零与限位逻辑

设备每次上电后必须回零,否则位置坐标无法确定。三个轴的正负限位开关分别接在PLC的X0~X5上,回零传感器接X6、X7、X10。

回零逻辑我采用“快找+慢找”两段式:先以50kHz频率朝负方向快速移动,碰到回零传感器后停止,再以5kHz频率反向慢速离开传感器,等传感器信号消失后锁存零点。这样回零精度比单纯碰传感器再停止要高得多,重复精度大概能到±3个脉冲左右,换算下来就是±3μm。

梯形图的核心逻辑是:

步1:启动回零,先检测Z轴限位是否触发,未触发则以脉冲输出指令DRVI正向移动(Z轴向上为安全方向) 步2:Z轴到上限位后停止,回零完成标志位M10置ON 步3:依次对X轴、Y轴执行相同的“快找+慢找”操作 步4:三个轴全部回零后,M20置ON,通知触摸屏可以做示教了

这里有一个很关键的细节:回零顺序必须先Z后X/Y。因为Z轴在最低位时,X/Y运动可能撞到下方的工件或者夹具,先把Z抬起来才安全。这个顺序在项目文档里一定要写清楚,我在调试时就因为顺序搞反,差点把夹具顶坏。

3.2 手动点动与示教记录

手动模式时,触摸屏上显示X/Y/Z三个轴的“正/负”点动按钮,按下移动、松开停止。PLC这边用PLSY指令或者DRVI指令做定长运动。

我的实现方式是:触摸屏按下点动按钮时,把对应轴的点动速度设定值写到D寄存器,并把点动使能位M30置ON;松开按钮时M30置OFF。PLC扫描到M30为ON后,用DRVI按设定频率连续发脉冲,直到收到停止信号或者限位信号。

示教记录的逻辑相对独立。操作流程是:

  • 操作员用点动按钮把设备移动到目标位置。
  • 在触摸屏上点击“记录当前点”按钮。
  • 触摸屏脚本读取当前X/Y/Z坐标(D100~D105),写入示教缓冲D140~D145。
  • 触摸屏脚本根据当前点序号(D110)把缓冲数据写入点表对应位置。
  • 点序号自动加1,点表总数同步更新。

这里有个容易忽略的问题:坐标值是32位的,触摸屏读写时要注意高低字节的排列。昆仑通态和FX3U通信时,默认是低字在前、高字在后。我在脚本里读32位数据时,用的是“读D100,再读D101,然后按低字+高字合并”,写回去的时候同样要拆开。很多新手在这里会栽跟头,显示出来的坐标值忽大忽小,其实就是高低字顺序搞错了。

3.3 自动运行与三轴联动

自动运行是整套系统最核心的部分。PLC收到触摸屏的“启动”命令后,按点表顺序逐个执行。每个点的执行流程是:

  • 读取当前点坐标。
  • 计算当前坐标与目标坐标在各轴上的差值。
  • 根据设备的运行速度要求,计算出各轴脉冲输出频率和输出时间。
  • 三轴同时启动脉冲输出,等待所有轴到位后,再执行下一点。

我采用的梯形图方式是:先用ZRN指令回零确认原点,然后循环从点表中取出坐标数据,用DRVI指令对三个轴分别发脉冲。

DRVI是相对定位指令,指令格式是DRVI(S1)(S2)(D1)(D2),其中S1是输出脉冲数,S2是脉冲频率,D1是输出口地址。我用X轴做示例:

LD M50 // 自动运行启动标志 ANI M8029 // 上一次定位完成标志 DRVI D200 D300 Y0 Y004 // X轴移动到示教点,脉冲数在D200,频率在D300

但三轴联动时有个问题:DRVI指令是单轴指令,三个轴同时发指令只能靠“同一扫描周期内,连续执行三条DRVI”。FX3U的高速脉冲输出是硬件实现的,三条DRVI同时激活后,三路脉冲在硬件层面被同步发出。实际上,由于PLC扫描周期的影响,三路脉冲的启动时间会有零点几毫秒到几毫秒的差异。对于点位搬运,这个时间差无关紧要,但如果你要做轨迹要求很高的应用,一定要认识到这个局限。

为了控制三轴运动的协调性,我设计了一个“主从联动”逻辑:

  • 主轴(X轴)运动到目标位置需要的时间T = X轴脉冲数 / X轴频率。
  • Y轴和Z轴按照相同的T时间来计算各自频率,公式是:从轴频率 = 从轴脉冲数 / T。
  • 每条DRVI指令的脉冲频率都动态计算好,写入D寄存器。

这样处理的好处是:虽然三条轴不是真正的直线插补,但最终三个轴几乎同时到达目标点,设备在视觉上看起来是“联动”的,不像逐轴运动那样一顿一顿。实际运行效果,对于简单的搬运码垛,视觉上完全没有问题。

核心梯形图的顺序是:

  1. 从点表中读取第N点的X/Y/Z坐标到D200/D202/D204。
  2. 用减法指令SUB计算出与当前坐标的差值,结果存到D210/D212/D214。
  3. 用除法指令DIV计算各轴频率,分别写入D300/D302/D304。
  4. 连续执行三条DRVI指令启动三轴。
  5. 用M8029(定位完成标志)或者三轴各自的完成位做“全部到位”判断。
  6. 全部到位后,N加1,继续下一个点。
  7. 所有点执行完毕后,自动运行完成标志置ON,通知触摸屏。

3.4 速度倍率与加减速控制

示教器上必须要有速度倍率功能。我做了两种:手动点动倍率和自动运行倍率。触摸屏上放一个滑动滑块,范围10%~100%,滑块值写入D160。PLC在计算脉冲频率时,统一乘以倍率系数。

加减速控制方面,我使用的是三菱DRVI指令自带的加减速时间设定。通过D8340(X轴)、D8341(Y轴)、D8342(Z轴)设定加减速时间。我实际设定加减速时间都是100ms。这个值不能太大,否则设备会显得很“肉”;也不能太小,否则机械冲击大、特别是Z轴容易抖动。三轴负载不太重的话,100~150ms是比较舒服的范围。

4. 昆仑通态组态与脚本实现细节

4.1 画面布局设计

我做了4个画面:主画面、手动示教画面、点表管理画面、参数设置画面。

主画面显示设备当前工作模式、运行状态、三轴坐标、报警信息,以及模式切换按钮。手动示教画面是核心操作界面,包含三轴的点动按钮矩阵、当前位置显示、示教点序号选择、记录按钮、坐标微调输入框。点表管理画面用表格形式显示所有示教点的坐标,支持点击选择、修改、删除、插入。参数设置画面配置运行速度、回零速度、加减速时间等参数。

这里要注意:昆仑通态的表格控件操作起来不算顺手,数据量大时刷新会有延迟。如果点表超过50个点,不建议用表格控件做全量刷新,而是按“当前选中行”局部刷新,或者只显示当前编辑点的坐标。

4.2 脚本通信机制与寄存器读写

昆仑通态与FX3U通信使用的是内置的“三菱FX系列编程口协议”。通信参数默认是9600波特率、8位数据、偶校验、1位停止位。触摸屏组态时选择好PLC型号和通信协议即可。

脚本里读PLC数据用的是函数:

!ReadFromPLC(站号, 寄存器类型, 起始地址, 数据个数, 数据缓冲区名称)

写PLC数据用的是:

!WriteToPLC(站号, 寄存器类型, 起始地址, 数据个数, 数据缓冲区名称)

注意寄存器类型要对应,D寄存器用“D”,M寄存器用“M”,X输入用“X”。地址从0开始编号,所以在脚本里读写D100时,地址写“99”。

我写了一个读取三轴坐标并刷新显示的循环脚本,每500ms执行一次。脚本里先定义局部变量,然后读PLC数据到变量中,再把变量值赋给界面上的标签控件。

这里分享一个经验:昆仑通态的脚本变量分全局变量和局部变量。在循环脚本里尽量用局部变量,用完就释放,避免全局变量堆积导致内存碎片。TPC7062Ti的内存不大,脚本写多了、变量攒多了,长时间运行会越跑越慢,甚至黑屏重启。

4.3 手动点动与示教记录脚本

手动点动按钮的逻辑我拆成了按下和弹起两个状态。昆仑通态的按钮支持“按下脚本”和“弹起脚本”,正好对应点动的启动和停止。

按下脚本的逻辑是:

!WriteToPLC(0, "M", 30, 1, 1) // 写M30为ON,启动X轴正向点动 !WriteToPLC(0, "D", 159, 1, 0) // 点动速度设定为当前手动速度值

弹起脚本就是把M30写成OFF。

这里有个操作小技巧:点动速度不要和自动运行速度混用同一个寄存器。手动点动速度一般设低一些,20mm/s左右,方便精确对位;自动运行速度设高一些,根据工艺需求可到200mm/s以上。如果只用一个速度值,做手动示教时经常会出现“点动太快,冲过头”的问题,最后示教出来的点全偏了。

示教记录按钮的脚本逻辑是:

  1. 从PLC读取当前X/Y/Z坐标到缓冲变量。
  2. 读取当前点序号D110。
  3. 根据点序号计算点表起始地址:起始地址 = 199 + (点序号-1) * 6。
  4. 把三个坐标值分别写入点表对应的6个连续寄存器。
  5. 点序号加1写回PLC。
  6. 刷新点表总数。

脚本里坐标写PLC时要拆成低16位和高16位。三菱FX3U的32位寄存器中,低字在前。脚本里要手工做位运算拆分:

// 假设coord是32位整数变量,value_low是低16位,value_high是高16位 value_low = coord % 65536 value_high = (coord - value_low) / 65536

写入时先写低字再写高字,读的时候先读低字再读高字再组合。这个看似啰嗦的步骤,是保证坐标数据不出错的关键。我见过有的工程师图省事,用16位读写,结果坐标值一到±32767就跳变,现象就是设备走到一半自己开始乱跑。

4.4 自动运行控制脚本

自动运行按钮的脚本不负责运动执行,只做两件事:写指令字、监控状态。

点击“启动”按钮时:

!WriteToPLC(0, "D", 130, 1, 1) // 指令字=1,请求启动

点击“暂停”按钮:

!WriteToPLC(0, "D", 130, 1, 2) // 指令字=2,请求暂停

点击“停止”按钮:

!WriteToPLC(0, "D", 130, 1, 3) // 指令字=3,请求停止

PLC梯形图对D130做解码,分别触发M50(启动)、M51(暂停)、M52(停止)三个标志。这样脚本和PLC的逻辑彻底解耦,脚本只管发命令、PLC只管执行命令,不会出现两边逻辑绞在一起的情况。

循环脚本里,我监控D120运行状态字。等于1时,界面显示“运行中”状态灯变绿;等于2时显示“已暂停”;等于0时显示“停止”。同时把当前正在执行的示教点序号和总点数显示出来,方便操作员了解进度。

4.5 速度倍率滑块与数据校验

速度倍率滑块用的是昆仑通态“滑动输入器”控件,绑定D160寄存器。范围设定为10~100。PLC侧读取D160的值作为倍率百分比,在计算脉冲频率时参与运算。

关于滑块的绑定方式,我建议不要直接绑定PLC寄存器,而是先绑定到触摸屏的全局变量,然后在循环脚本里把全局变量值写入PLC。原因很实在:滑动输入器拖动过程中的中间值变化非常频繁,直接绑PLC会导致通信总线拥堵,影响PLC实时响应。经过触摸屏变量中转后,可以加上“防抖”逻辑,比如数值变化超过2%才写一次PLC,这样通信负载低很多。

4.6 配方与点表保存方案

点表数据存在PLC的D200~D799,这些是电池保持区域。三菱FX3U的D寄存器默认大部分是锁存的,断电后数据不会丢失。但要注意一点:如果你在PLC程序里用了“初始化脉冲”(M8002),千万不要把它用来清零D200~D799。M8002只在PLC首次上电时ON一个扫描周期,如果程序里写了MOV 0 TO D200,那以后每次断电重启点表就全丢了。

我的做法是:点表清零操作只在触摸屏上通过“清除所有示教点”按钮触发,PLC程序里根本不做任何点表数据的初始化。这样即使PLC程序被重新下载,只要不清除保持区,点表数据还在。

5. 调试过程与常见问题

5.1 触摸屏与PLC通信异常

我调试时第一次碰到的问题是触摸屏上显示“通信超时”,所有数据都读不到。

排查思路先看接线。FX3U的编程口是圆头8针,昆仑通态TPC7062Ti的COM口是9针串口。接线要按“2对2、3对3、5对5”的标准直连方式。但很多二手线缆是按照“2对3、3对2”的交叉方式做的,这就导致通信不上。

另外要注意波特率设置。FX3U编程口默认波特率是9600,但有些PLC的程序被改过通信参数。我在调试时就用三菱GX Works2连接PLC,把PLC通信格式改成“9600,8,E,1”,触摸屏端也保持一致,问题解决。

5.2 坐标显示跳动

坐标显示出来之后,数字一直在跳,轻轻晃动都有几次脉冲的波动。这个现象是正常的。伺服电机在静止状态下,由于机械振动、负载扰动,编码器会检测到微小的位置波动,反馈到PLC的当前位置计数器里。

处理办法有两种:

  • 在PLC侧做滤波,位置值在小范围内波动时不更新显示。
  • 在触摸屏侧做显示滤波,监视值的变化量小于设定阈值就保持原显示。

我选了第二种,在昆仑通态的循环脚本里加了个比较逻辑,非常有效:

if abs(当前位置 - 上次显示值) < 5 then 显示值 = 上次显示值 else 显示值 = 当前位置 上次显示值 = 当前位置 endif

这个阈值5就是0.005mm,肉眼完全感受不到,但画面稳定多了。

5.3 三轴联动时某轴“偷跑”

自动运行过程中发现,Y轴偶尔会提前启动,或者X轴还没到位,Z轴就开始动作了。这个问题的根因在PLC程序的扫描周期和DRVI指令的启动时刻不完全同步。

排查之后发现,问题出在我用了“同一扫描周期内执行三条DRVI指令”,但在某些情况下,某条DRVI的启动条件没有被同时满足,导致它推迟到下个扫描周期才执行。例如,某个轴的当前位置计数器有轻微的“回差”,导致差值计算不为零但绝对值小于脉冲输出许可值。

解决办法是,在三轴启动前增加一个“就绪判断”:分别计算三个轴的目标脉冲数与当前位置差值的绝对值,如果三个差值都大于设定的最小脉冲数(比如10个脉冲,即0.01mm),才允许启动。这样从逻辑上保证了三条DRVI指令在同一周期内可以被同时触发。

5.4 点表数据丢失

用户反馈有时候点表数据保存后,断电重启就没了。我查了一下,不是PLC电池的问题,而是操作员在使用触摸屏时,误触了“系统设置”里的“恢复出厂设置”,触摸屏恢复默认后,虽然配方数据不在了,但PLC里的点表还在。后来我在触摸屏脚本里加了一个“数据备份”功能,点表修改后自动上传一份到触摸屏的存储目录里。

触碰屏内部存储的数据在掉电后不会丢失,这块可以做一个备份机制。PLC里的点表是“主存储”,触摸屏目录里的CSV文件是“备份存储”。一旦检测到PLC点表数据异常(比如总数不对),就提示操作员从备份恢复。这个功能做起来很简单,但对用户来说却是救命级别的保护。

5.5 Z轴抖动

Z轴垂直安装,断电或者运动停止后有下垂现象,运动过程中有明显抖动。这其实是机械问题,伺服增益没调好的典型表现。MR-JE伺服可以通过面板或者软件调整位置环增益和速度环增益。

我调整后试下来的经验是:Z轴因为有重力的影响,增益要比水平轴低一些,否则容易振荡。位置环增益降到原来的70%左右,速度环积分时间常数拉大一点,抖动基本消除。另外机械上,Z轴有配重或者氮气平衡的话,伺服能轻松很多。这个项目里没有平衡装置,调试时就得靠伺服参数来补偿。

6. 一些值得说的体会

这个项目从设计到调试完成,大概花了两周时间。和专门的机器人示教器相比,这套方案在功能上有各种局限,但在“点位示教、顺序搬运、简单轨迹”这类场景中,性价比确实很高。

最后分享一个心得:做这种项目,别急着写程序,先把“数据流”理清楚。触摸屏上按一个按钮,数据经过什么路径、最终落在哪个寄存器、PLC怎么响应,这一条链路在动工前画出来,后面能省一大半时间。我就是因为前期没画清楚,中途改了两次寄存器地址,差点把点表数据搞乱。

还有一点,示教功能做完后,一定要让操作工实际用几天再交付。他们用起来觉得顺手的,才是真正好用的示教器。我就根据他们反馈,增加了“点动短行程”模式,按下按钮移动0.1mm,松开就停,这样精确微调特别方便。这个需求如果不上现场,靠坐在办公室里是想不出来的。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/3 7:59:21

ACD/Labs核磁数据分析全流程:从原始FID到结构验证

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

作者头像 李华
网站建设 2026/10/3 7:59:21

DRV8818+MK60工业步进电机控制硬实时方案

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

作者头像 李华
网站建设 2026/10/3 7:58:58

基于DRV8818与TM4C1294的双极步进电机驱动与控制实践

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

作者头像 李华
网站建设 2026/10/3 7:58:58

服务器GPU稳定性测试四层验证方法

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

作者头像 李华
网站建设 2026/10/3 7:58:24

STM32+DRV8818步进电机驱动实战:选型、硬件与调试

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

作者头像 李华
网站建设 2026/10/3 7:57:59

Oracle EBS总账外币业务:汇率、重估与折算全解析

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

作者头像 李华