抖音粉丝群1
『7x24小时有问必答』

AI浪潮下的计算机行业——从业者现状与未来展望
1.webp

在《FANUC机器人标志F[i和标记M[i》一文中,我们详细介绍了发那科机器人IO中的两个特殊的开关量标志F和标记M。

一、标志F(Flag)
F 可以理解成机器人自己内部用的“虚拟开关  / 内部继电器”。它不接外部线/不接传感器/不接气缸,只在机器人内部用。想让它 ON 就 ON,想 OFF 就 OFF。专门用来做程序逻辑、互锁、状态记录

定义:内部虚拟线圈/状态位,是可直接读写的开关量,默认在IO页面显示;机架34、插槽1是F的固定地址;可关联DIO/UIO实现信号联动。

2.png

3.png

隐藏/显示:
更改系统变量 $MIX_LOGIC.$USE_FLG为FALSE时。
4.png
5.png
.......=F()指令将不在显示。

更改系统变量 $MIX_LOGIC.$USE_FLG为TRUE时。
6.png
7.png
.......=F()指令将显示。

用法:F[1] = ON/OFF;F[1] = DI[1];可直接绑定输出,实现F控DO、F模拟DI输入

特点:状态可手动/指令直接改,断电(靠SRAM电池)保持;相当于PLC的内部继电器M。

场景:无PLC时做程序互锁、UI自动启动程序、信号联动转换

将信号机架号设置为34,插槽设置为1,开始点即需关联的F编号,即可将信号与F关联。

F与输出信号关联时,输出信号状态与F状态关联,即将输出信号置ON/OFF,对应F为ON/OFF;同样,F置ON/OFF,对应输出信号为ON/OFF。

输入信号,由于输入信号无法自身更改ON/OFF状态,在关联F后,可通过F置ON/OFF,使对应输入信号状态变为ON/OFF。

8.png
将数字输出信号DO109和DO110设置为机架34,插槽1,开始点1后,即将DO109和F[1]关联,DO110和F[2]关联,当强制DO109置ON/OFF时,F[1]也对应置ON/OFF;反之,当强制F[1]置ON/OFF时,DO109也对应置ON/OFF。
9.png

运用案例:
1,计数完成标志(抓满 N 次)

  R[1] = R[1] + 1

IF R[1] >= 10 THEN            

  F[5] = ON ; !满10件

ENDIF

IF F[5] = ON THEN   
! 完成动作

ENDIF

作用:码垛、装箱、计数完成,用 F 标记状态。

工装夹紧确认(内部中转)

F[7] = OFF

WAIT DI[2] = ON    ; 夹紧到位

F[7] = ON             ; 标记已夹紧

IF F[7] = OFF THEN  
  WAIT DI[2] = ON

ENDIF

作用:把外部信号转成内部标志,程序更稳定。

循环运行开关

F[8] = ON             ; 允许循环

IF F[8] = ON THEN

   JMP LABEL[1]

ENDIF

作用:想停循环,只需要改F[8] = OFF,不用动程序。

二、标记M()

只能通过表达式赋值的逻辑结果位,标记M等于一个自动得出的判断结果。不能手动进行标记M的ON/OFF,必须在TP程序写M = (表达式)。标准8个(M[1]~M[8])。

格式示例: M[1] = (DI[2] AND DI[3]) OR DO[5] ;
  M[2] = !DI[10] ;

用来:多信号汇总、报警总判断、条件监控

标记M一般为隐藏状态,需要将变量$MIX_LOGIC.$USE_MKR设置为TRUE,方可显示。更改即生效。
10.png

11.png
12.png
13.png

如何设置M?
标记M为表达式方式,此表达式需要在程序中通过赋值语句编辑(运行后才会在对应的标记M详细栏进行显示)。

如M[1]=(DI[100] AND DI[101])。在逻辑条件满足时,标记M[1]变为ON。
14.png

注意:表达式一旦执行一遍后就在后台持续运算,满足条件就自动ON,不满足就自动OFF,程序停了也继续执行。

通过上面的语句来实现以单个开关量标记M表征多个开关量信号的组合逻辑结果状态。
15.png

什么时候用 M?

只要是让系统自动判断的,就用 M:

1. 多个信号同时满足

2. 报警总条件(任意一个报警就亮)

3. 条件一直变,你不想反复写 IF

4. 监控状态,不影响程序流程

案例1:用 M 做“总允许”

M[1] = (DI[1] AND DI[2] AND DI[3])

- 安全门关好 + 气源正常 + 夹具正常

- 三个都 OK → M1 自动亮

- 程序里只判断 M1 就行,不用写一堆 IF

案例2:用 M 做“总报警”

M[2] = (DI[10] OR DI[11] OR DI[12])

- 任意一个报警来 → M[2] 自动 ON

- 程序里只需要判断 M[2] 就行,简化逻辑

案例3:取反信号(不想改接线时用)

M[3] = (!DI[5])

- DI5 是 OFF → M3 变 ON

- DI5 是 ON → M3 变 OFF

- 不用改梯形图、不用改线

案例4:复杂条件一键搞定(不用写一堆 IF)

M[6] = ((DI[1] AND DI[2]) OR (DI[3] AND DI[4]))

- 条件1:DI1+DI2 同时满足

- 或者

- 条件2:DI3+DI4 同时满足

- 满足任意一组 → M6 亮

标志F和标记M的区别:

F = 内部开关,让它开就开,让它关就关

M= 自动判断结果,它自己算,不能手动改。

16.gif

本文仅为方便机器人工程师之间的技术交流学习,仅作为个人实践总结参考,不代表FANUC机器人官方。若涉版权及其他问题,请后台联系删除。感谢支持。欢迎关注支持原创,转载请注明出处。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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


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