FX3U PLC摆杆角度测量:高速计数器配置与4倍频测角实战
2026/9/18 16:33:23 网站建设 项目流程

1. 摆杆编码器测角的本质:为什么非得用高速计数器不可?

你手上正摆着一台FX3U PLC,旁边连着个机械摆杆,杆端装了旋转编码器——不是那种带模拟量输出的“傻瓜型”,而是标准A/B相增量式编码器。你想知道摆杆当前转到了多少度,但一打开GX Works2,发现普通计数器C0~C255根本没法用:摆杆一动,计数器就乱跳,数值要么卡死不动,要么飞速溢出,甚至反向计数时出现负值跳变。这不是程序写错了,是底层硬件机制在跟你较劲。

核心问题就一句话:普通计数器响应速度跟不上编码器脉冲频率。FX3U的普通计数器(如C0)最高响应频率约1kHz,而一个中等精度的摆杆系统,哪怕只以10rpm匀速摆动,配合1000线编码器,A相每转就输出1000个脉冲,10rpm = 1/6转/秒 → 每秒约167个脉冲;但实际应用中,摆杆常有加减速过程,瞬时角速度可能达30rpm以上,对应脉冲频率轻松突破500Hz。这还没算上A/B相双路信号带来的四倍频需求——真正参与计数的是A/B相的上升沿/下降沿组合,即所谓“4倍频计数”。此时有效计数频率直接翻到2kHz以上,普通计数器早已力不从心。

高速计数器(HSC)才是专为此类场景设计的硬件级外设。FX3U内置6路高速计数器(C235~C240),其中C235~C239为32位双向计数器,最高响应频率达60kHz(使用差分输入时),远超摆杆编码器的典型输出能力。它不依赖PLC扫描周期,而是由专用硬件电路直接捕获编码器边沿信号,计数动作在微秒级完成,与主程序逻辑完全解耦。你可以把它理解成PLC内部嵌入的一块独立“脉冲采集芯片”,它的计数结果随时可被梯形图读取,但它的运行过程你根本不用操心——就像汽车的转速表,你只看指针位置,不用管里面霍尔传感器怎么工作。

提示:很多初学者误以为“只要把编码器接到X0~X5就能用高速计数器”,这是致命误区。FX3U的高速计数器输入端口是严格绑定的:C235固定使用X0和X1(A/B相),C236用X2/X3,依此类推。X0单独接编码器A相,却试图用C236计数?程序能编译通过,但永远计不到数——硬件通道根本不通。

摆杆角度测量的特殊性还在于“角度闭环”需求。普通旋转轴可用绝对值编码器一劳永逸,但摆杆是往复运动,0°~180°来回摆,没有天然的“零点”。你必须在某个物理位置(比如摆杆垂直到位)设置一个Z相(零位)信号,每次经过该点时强制清零或置入基准值。这个Z相通常由一个微型限位开关或光电传感器提供,其信号必须接入高速计数器的复位端(如C235的RST端子,对应X2)。若忽略Z相校准,累计脉冲数会随摆动次数无限增长,角度换算彻底失效。

我第一次做这类项目时,就栽在Z相信号抖动上。摆杆到位瞬间,机械振动导致限位开关触点反复弹跳,PLC在几毫秒内收到多个Z相脉冲,结果计数值被反复清零,角度显示疯狂跳变。后来改用施密特触发器电路对Z相信号做硬件消抖,再配合PLC内部的“输入滤波时间”(在PLC参数设置里调X0~X7的滤波时间为10ms),双保险才彻底解决。这说明:摆杆测角不是纯软件问题,而是机电软硬协同的系统工程——编码器选型、安装刚性、信号走线、滤波参数、梯形图逻辑,缺一不可。

2. FX3U高速计数器配置:从硬件接线到寄存器映射的完整链路

把编码器接到PLC上,只是万里长征第一步。FX3U的高速计数器能否正常工作,取决于三个层面的精确匹配:物理接线→硬件参数配置→梯形图指令调用。任何一层出错,都会导致计数器“静默”或“误动作”。

先说硬件接线。FX3U的高速计数器输入端子并非通用输入点,而是专用差分输入通道(如C235对应X0/X1,且必须成对使用)。编码器A/B相输出通常为集电极开路(OC)或差分(RS-422)类型。若用OC型编码器(常见于国产廉价型号),需外接上拉电阻(推荐4.7kΩ)至DC24V,并确保PLC输入公共端(COM)接DC0V。接线顺序必须严格:编码器A相→X0,B相→X1,Z相→X2(若启用复位功能),屏蔽层单端接地(接PLC侧接地端子)。曾有客户将A/B相接反,结果计数值始终为负——因为计数方向由A/B相的相位关系决定,接反即方向反转。

更关键的是PLC参数配置。在GX Works2中,右键点击PLC图标→“参数”→“PLC参数”→“高速计数器设置”。这里要完成三件事:

  1. 启用对应计数器:勾选C235(假设用此通道),并选择模式。摆杆测角必须选“相位差输入模式(4倍频)”,而非“单相输入”或“双向脉冲输入”。该模式下,PLC自动识别A/B相的四组边沿组合(A↑B↓、A↓B↑、A↓B↓、A↑B↑),实现4倍频计数,大幅提升分辨率。
  2. 设置计数方向:默认为“顺时针为正”,但需根据你的机械安装确认。若摆杆顺时针摆动时角度应增大,而当前计数值减小,则需勾选“反向计数”。
  3. 设定复位方式:Z相复位选“外部输入复位”,并指定复位端子(X2)。同时开启“复位时计数器清零”选项。

完成参数配置后,必须执行“PLC写入”操作,否则设置不生效。很多用户编译梯形图无误,却始终无法计数,根源就在于参数未写入PLC内存。

接下来是寄存器映射。FX3U的高速计数器值存储在专用32位数据寄存器中:C235的当前值存于D235(注意:不是C235本身!C235是计数器软元件编号,D235才是其值存放地址)。同理,C236值存于D236。这些D寄存器可被任意梯形图指令读取,但不能直接用MOV指令写入D235来修改计数值——这是硬件只读寄存器,强行写入无效。若需软件复位,必须使用专用指令HSCS(高速计数器比较置位)或HSCR(高速计数器复位)。

计数器编号输入端子模式选择值存储地址复位端子典型应用场景
C235X0/X1相位差4倍频D235X2摆杆角度测量(主通道)
C236X2/X3相位差4倍频D236X4辅助轴位置监控
C237X4/X5单相输入D237X6简单脉冲计数

注意:X2既是C235的复位端子,又是C236的A相输入端子。若同时启用C235和C236,必须避免端子冲突。实践中,摆杆测角通常只用一路高速计数器(C235),X2专用于Z相复位,其他通道留作备用。

最后是梯形图中的基础指令。最常用的是HSCS指令,格式为:HSCS K0 C235 D100 M100。含义是:当C235的当前值(D235)等于D100中设定的目标值时,驱动M100置位。这个指令常用于角度到位控制——比如D100设为10000(对应90°),当摆杆转到90°时M100动作,触发气缸锁紧。但要注意:HSCS是“比较置位”,一旦满足条件M100即保持ON,需用RST指令手动复位;若需“脉冲输出”,应使用HSZ(高速计数器区间比较)指令。

3. 梯形图核心逻辑:从脉冲累计到角度换算的全链条实现

光有高速计数器硬件和寄存器,还不算完成角度测量。真正的难点在于:如何把D235里那个不断变化的32位整数,实时、准确地转换成人类可读的“XX.XX°”。这个过程包含四个不可跳过的环节:Z相校准、脉冲-角度换算、数值范围约束、显示/通信输出。

3.1 Z相校准:让每一次摆动都从“零”开始

Z相信号是摆杆测角的“锚点”。理想情况下,摆杆每次经过垂直位置(0°)时,Z相发出一个窄脉冲,PLC立即执行清零。但现实中,Z相脉冲宽度可能不足1个PLC扫描周期(典型扫描周期20ms),导致漏检。解决方案是使用PLSY(脉冲输出)指令的反向思维——用Z相触发一个单次脉冲,再用这个脉冲去驱动HSCR指令。

梯形图实现如下:

--| X2 |----( PLSY K100 K10 Y0 )---- // X2(Z相)上升沿触发Y0输出100ms脉冲 --| Y0 |----( HSCR C235 )----------- // Y0脉冲驱动C235硬件复位

这里PLSY指令生成一个100ms宽的Y0脉冲,确保HSCR指令有足够时间执行。注意HSCR是边沿触发指令,Y0的上升沿即启动复位,无需自锁。

但更稳健的做法是结合软件判断。在Z相有效期间(X2=ON),检测D235是否已达到预设的“零点偏移值”(如摆杆安装误差导致实际0°对应D235=500),若未达到则等待;达到后执行HSCR。这样可避免机械振动导致的误复位。

3.2 脉冲-角度换算:数学公式必须嵌入梯形图

假设你选用1000线编码器,4倍频后每转4000个脉冲。摆杆理论行程0°~180°,对应半圈,即2000个脉冲。那么每个脉冲代表的角度为:180° ÷ 2000 = 0.09°/脉冲。这个系数必须转化为PLC可处理的整数运算,因为FX3U的浮点运算(FMOVFADD等)效率低且需额外指令。

最佳实践是放大100倍,用整数运算模拟浮点

  • 设定系数K = 9(即0.09° × 100)
  • 当前脉冲数N = D235(32位整数)
  • 角度值(放大100倍) = N × K
  • 最终角度 = (N × K) ÷ 100

梯形图指令:

--| MOV D235 D100 |------------------- // 将当前计数值复制到D100 --| DMUL D100 K9 D102 |---------------- // D100 × 9 → D102/D103(32位乘积) --| DDIV D102 K100 D104 |-------------- // D102 ÷ 100 → D104(商,即角度×100)

D104中存储的就是角度值×100,例如D104=9000表示90.00°。显示时,HMI可直接读取D104,按“整数部分.小数部分”格式解析。

实测心得:系数K的选择直接影响精度。若用K=90(对应0.9°/脉冲),虽计算快但精度损失大;K=9是平衡点。曾有项目因系数设错(误用K=90),导致180°行程只显示到18°,调试两小时才发现是换算公式笔误。

3.3 数值范围约束:防止角度溢出和负值

摆杆是有限角度运动,D235的32位计数器理论上可计到±21亿,但实际角度只需0~180°。若D235因干扰或Z相失效而持续累加,D104会溢出,显示乱码。必须加入范围钳位逻辑:

--| D104 > K18000 |----( MOV K18000 D104 )-- // 超过180.00°,强制设为18000 --| D104 < K0 |----( MOV K0 D104 )-- // 小于0°,强制设为0

更进一步,可利用HSZ指令实现硬件级区间保护。例如设定D100=0(下限)、D101=2000(上限),当D235超出[0,2000]时,HSZ驱动报警输出M200,通知HMI弹窗提示“角度超程”。

3.4 输出与通信:让角度值真正可用

最终角度值(D104)需输出到三个地方:

  • HMI显示:通过GT Designer3组态,在数值显示控件中绑定D104,设置小数点位数为2。
  • 上位机通信:若需上传到SCADA系统,FX3U支持MODBUS RTU(RS-485)或MODBUS TCP(以太网)。将D104映射到MODBUS保持寄存器地址(如40001),上位机按标准协议读取。
  • PLC内部逻辑:作为控制依据,如“当D104 ≥ 9000(90°)时,启动冷却风扇”。此处务必用>=比较指令,而非=,因为D104是连续变化的整数,精确等于9000的概率极低。

4. 实战排错:从“计数器不动”到“角度跳变”的完整排查链路

即使严格按照上述步骤配置,现场调试时仍可能遇到五花八门的问题。我整理了近五年处理过的23个典型故障案例,按排查优先级排序,形成一条可复现的诊断路径。记住:所有PLC故障,80%源于输入信号,15%源于参数配置,5%才是梯形图逻辑错误

4.1 第一步:验证编码器信号是否真实到达PLC

这是最基础也最容易被忽视的环节。不要急于看梯形图,先用PLC自带的“在线监视”功能:

  • 进入GX Works2 → 在线 → 在线监视 → 输入软元件
  • 手动摆动摆杆,观察X0、X1、X2的状态变化。理想情况是:X0/X1交替闪烁(A/B相脉冲),X2在垂直位置短暂ON一次。

若X0/X1无反应:

  • 用万用表直流电压档测量X0对COM电压:摆杆静止时应为0V,摆动时应在0V与24V间跳变。若始终0V,检查编码器供电(+24V/GND是否接通);若始终24V,检查编码器输出是否损坏。
  • 若电压跳变但PLC不识别,可能是输入滤波时间过长。在PLC参数中将X0的滤波时间从默认10ms改为1ms,重新写入。

曾有个案例:编码器A相线虚焊,万用表测电压正常,但示波器显示脉冲幅度仅8V(低于PLC输入阈值12V),导致PLC拒收。更换线缆后故障消失。

4.2 第二步:确认高速计数器参数已正确写入

常见陷阱:在GX Works2中设置了C235为相位差模式,但忘记点击“PLC写入”按钮。此时PLC仍按出厂默认(单相模式)运行,自然无法计数。

验证方法:

  • 断电重启PLC,进入“PLC参数”界面,重新读取当前参数。若显示为“未启用”或“单相输入”,说明写入失败。
  • 更可靠的方法是查看PLC状态字:D8000~D8003为高速计数器状态寄存器。D8000的bit0=1表示C235已启用,bit1=1表示正在计数。若bit0=0,必然是参数未写入。

4.3 第三步:检查Z相复位是否被意外触发

角度跳变的元凶往往是Z相。某客户反馈:“摆杆每摆一次,角度就归零一次”。检查发现,Z相传感器安装位置不当,摆杆在170°~180°区间内多次触发Z相(因机械晃动),导致HSCR频繁执行。

诊断技巧:

  • 在梯形图中临时添加一行:--| X2 |----( SET M100 )--,用M100驱动一个指示灯。
  • 观察指示灯:若摆杆全程闪烁多次,说明Z相存在误触发;若仅在0°位置亮一次,属正常。

解决方案:

  • 机械调整:将Z相传感器移至摆杆运动平稳区(如0°±5°内)。
  • 电气优化:在X2输入端并联0.1μF电容,吸收高频干扰。
  • 软件过滤:在梯形图中加入延时,--| X2 |----( TMR T0 K10 )--( AND M100 )--,T0=100ms后才允许复位,避开抖动期。

4.4 第四步:分析梯形图逻辑中的隐性冲突

最隐蔽的故障来自指令冲突。例如:

  • 同一时刻,HSCR C235DMOV K5000 D235同时执行。前者是硬件复位,后者试图软件写入D235,结果D235值随机,角度显示飘忽。
  • 或者,HSCS指令的目标值D100被其他程序段频繁修改,导致比较条件瞬间满足又消失,M100输出抖动。

排查方法:

  • 使用GX Works2的“软元件测试”功能,强制置位/复位相关软元件(M100、D100等),观察D235变化是否符合预期。
  • 关闭所有非必要程序段,仅保留Z相校准和角度换算部分,逐步添加其他逻辑,定位冲突源。

个人经验:遇到“角度缓慢漂移”(如静止时每分钟增加0.1°),90%是电磁干扰导致X0/X1误触发。解决方案是:编码器线缆远离动力线(间距>30cm),使用双绞屏蔽线,屏蔽层单端接地。曾有一个项目,加装金属穿线管后,漂移从0.5°/min降至0.01°/min。

5. 进阶应用:从单点测角到多轴协同的扩展思路

当单摆杆测角稳定运行后,实际产线往往需要更复杂的控制逻辑。基于FX3U的硬件特性,可无缝扩展以下三种高价值场景,无需更换PLC主体。

5.1 双摆杆同步控制:用C236监控第二轴

若产线有两个独立摆杆(如分拣臂+装箱臂),可启用C236通道,接第二套编码器(X2/X3)。关键在于同步触发与偏差计算

  • 用同一个Z相信号(X2)同时复位C235和C236,确保两轴零点一致。
  • 在梯形图中,每周期计算|D235 - D236|,若差值超过阈值(如对应5°),驱动M300报警。这实现了两臂角度偏差的实时监控。

指令示例:

--| DSUB D235 D236 D200 |---------------- // D235 - D236 → D200 --| ABS D200 D200 |---------------------- // 取绝对值 --| D200 > K500 |----( SET M300 )--------- // 偏差>5°(500×0.01°)报警

5.2 角度PID闭环:用FX3U内置PID指令

FX3U支持PID指令(D8340~D8349为PID参数区),可将角度值作为反馈量,构建位置闭环。例如,要求摆杆精确定位到120.50°:

  • 设定值SV = 12050(120.50°×100)
  • 反馈值MV = D104(当前角度×100)
  • PID K100 D8340 D104 D106:K100为采样周期(100ms),D8340起始地址存P/I/D参数,D104为反馈,D106为输出(0~10000对应0~100%)

输出D106可经DA模块转为模拟量,控制伺服驱动器。注意:PID参数需现场整定,建议先用Ziegler-Nichols法粗调,再微调。

5.3 数据记录与追溯:用SD卡存储历史角度

FX3U可选配FX3U-ENET-L以太网模块+FX3U-SD-ADP SD卡适配器。将D104值按时间戳存入CSV文件:

  • 每100ms触发一次FILE指令,将D104 + D8013(时钟寄存器)写入SD卡。
  • 文件名按日期生成(如20231001.CSV),每行格式:HH:MM:SS,角度值
  • 后续可用Excel直接打开分析摆杆运动轨迹。

最后分享一个小技巧:若需在HMI上显示“角度趋势图”,不必用高端HMI。用GT Designer3的“历史数据记录”功能,绑定D104,设置采样间隔100ms、记录长度1000点,即可生成实时曲线。我曾用此方案替代万元级SCADA软件,客户成本降低90%。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询