匿名  发表于 7 天前 | 阅读模式

『7x24小时有问必答』
机器人循环时间精确计算 — 可复用标准程序块
产线提效的第一步,是精准测量。告别卡秒表,让机器人自己告诉你它跑了多久。
---
一、背景:一个被忽略的误差
产线提效的时候,第一步往往是摸清现状 — 机器人一个周期到底跑多久?
最常见的方式是:人工卡秒表
员工站在机器人旁边,盯着动作,按下秒表,连续测几次取平均值。比如这次测出来是  4.6s
但问题是:人的反应时间约 0.2~0.4s,起停各一次,累积误差轻松超过 0.5s。对于一个 4.6s 的周期来说,误差超过 10%
节拍计算不准 → 产能规划偏差 → 线体平衡失效 → 真金白银的损失。
让机器人自己计时,才是唯一可靠的方式。
---
二、解决方案:TIMER 可复用标准块
我做了一个专门计算机器人循环时间的标准程序块  TIMER,特点:
特性
说明
可重复调用
通过参数传递,一套程序适用所有场景
毫秒级精度
结果 ×1000,精确到毫秒
即插即用
在主程序中 CALL 即可,不干扰逻辑
多计时器
支持 TIMER[1]~TIMER[n],同时统计多个工位/动作段
调用方式
CALL TIMER(1,1,1)    // 启动计时器1,结果存到 R[1]
CALL TIMER(1,0,1)    // 停止计时器1,结果(ms)写入 R[1]
---
三、参数说明
程序用 3 个  参数寄存器 (AR)  传递信息:
参数
含义
取值示例
AR[1]
计时器编号
1~N(对应 TIMER[1]~TIMER[N])
AR[2]
启停控制
1
  = 启动/重置;0  = 停止并保存
AR[3]
结果存储寄存器号
如  1  → 存入 R[1](单位:毫秒)
---
四、程序核心逻辑
IF AR[2] = 1 THEN
      TIMER[AR[1]] = RESET      // 先清零,避免累计
      TIMER[AR[1]] = START      // 开始计时
ELSE
      TIMER[AR[1]] = STOP       // 停止计时
      R[AR[3]] = TIMER[AR[1]] × 1000    // 秒 → 毫秒,存入指定寄存器
ENDIF
设计要点:
•  先 RESET 再 START:确保每次计时从零开始,不受上次残留值影响
•  ×1000 转毫秒:FANUC TIMER 原生单位是秒,×1000 后以毫秒存入 R 寄存器,便于整数比较和显示
•  AR 传参:调用方决定用哪个计时器、何时启停、结果放哪里 — 一个程序块服务整条线
---
五、实际应用示例
场景:测量机器人主循环时间
在主程序  MAIN  中嵌入:
/PROG   MAIN
/MN
     1:   CALL TIMER(1,1,1) ;      // 循环开始,启动计时器1
     2:   !-- 取料动作 -- ;
     3:   ...
   10:   !-- 加工动作 -- ;
   11:   ...
   20:   !-- 放料动作 -- ;
   21:   ...
   30:   CALL TIMER(1,0,1) ;      // 循环结束,时间存入 R[1]
   31:   JMP LBL[1] ;                // 跳回循环
/END
运行 N 个循环后,在示教器上查看  R[1],即为单周期耗时(毫秒)。
进阶:分段计时
如果想分析各段耗时(取料多久、加工多久、放料多久):
CALL TIMER(1,1,10)    // 计时器1 → 总循环 → R[10]
CALL TIMER(2,1,11)    // 计时器2 → 取料段 → R[11]
CALL TIMER(3,1,12)    // 计时器3 → 加工段 → R[12]
CALL TIMER(4,1,13)    // 计时器4 → 放料段 → R[13]
一次运行,四个数据,瓶颈工位一目了然。
---
六、FANUC 源程序(完整代码)
/PROG   TIMER
/ATTR
OWNER= MNEDITOR;
COMMENT= "Cycle Time Calculator";
PROG_SIZE= 934;
CREATE= DATE 26-05-29   TIME 10:59:18;
MODIFIED= DATE 26-05-29   TIME 13:04:38;
FILE_NAME= ;
VERSION= 0;
LINE_COUNT= 27;
MEMORY_SIZE= 1230;
PROTECT= READ_WRITE;
STORAGE= SHADOW;
TCD:   STACK_SIZE= 0,
         TASK_PRIORITY= 50,
         TIME_SLICE= 0,
         BUSY_LAMP_OFF= 0,
         ABORT_REQUEST= 0,
         PAUSE_REQUEST= 0;
DEFAULT_GROUP= 1,*,*,*,*;
CONTROL_CODE= 00000000 00000000;
LOCAL_REGISTERS= 0,0,0;
/APPL

AUTO_SINGULARITY_HEADER;
   ENABLE_SINGULARITY_AVOIDANCE    : TRUE;

LINE_TRACK;
   LINE_TRACK_SCHEDULE_NUMBER         : 0;
   LINE_TRACK_BOUNDARY_NUMBER         : 0;
   CONTINUE_TRACK_AT_PROG_END         : FALSE;
0d.png)
/MN
     1:   !================================ ;
     2:   ! Program : Time Calculate ;
     3:   ! Function: Calculate the executi ;
     4:   ! time ;
     5:   ! Author   : Joygen Zhang ;
     6:   ! Date      : 2026-05-29 ;
     7:   ! Version : V1.0 ;
     8:   !-------------------------------- ;
     9:   ! Registers: ;
   10:   ! AR[1] = Timer Number ;
   11:   ! AR[2] = Activate Timer ;
   12:   ! AR[3] = Save Time to Register ;
   13:   ! ;
   14:   !-------------------------------- ;
   15:   ! Update Log: ;
   16:   !    2026-05-29 V1.0 Created ;
   17:   !================================ ;
   18:   IF (AR[2]) THEN ;
   19:   TIMER[AR[1]]=RESET ;
   20:   TIMER[AR[1]]=START ;
   21:   ELSE ;
   22:   TIMER[AR[1]]=STOP ;
   23:   //R[AR[3]]=TIMER[AR[1]]      ;
   24:   R[AR[3]]=TIMER[AR[1]]*1000      ;
   25:   //R[AR[3]]=($TIMER[1].$TIMER_VAL) ;
   26:    ;
   27:   ENDIF ;
/POS
/END
---
七、总结
对比维度
人工卡秒表
TIMER 标准块
精度
±0.5s(反应误差)
±1ms(系统时钟)
可重复性
受人员、疲劳影响
每次一致
分段能力
难以拆分
多计时器并行
数据记录
手动抄写
寄存器直接读取
效率
专人耗时
自动运行
从 10% 误差到毫秒级精度,只差一个 CALL TIMER。
如图人工卡表是4.6s,程序计算是4.096s

1.webp
---
---
请点击此处下载

查看状态:已购买或有权限

您的用户组是:游客

文件名称:机器人循环时间计算标准块.7z 
下载次数:0  文件大小:1.84 KB 
下载权限: 不限 
以上资料整理不易! 打赏楼主 ,也可赚取金币!

--来自百度网盘超级会员v10的分享
Author: Joygen Zhang
Date: 2026-05-29
Version: V1.0
License: 无授权,经过实机,不承担任何责任
---
本文首发于微信公众号,欢迎关注工控派。

---


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码