关于PLC和NC 交换的$A_DB的数据怎么学习?

比如有一台沈阳GMB龙门加工中心(840D没有激活刀具管理)换刀程序有一段程序如下:(相关联的PLC怎么看?是FC21什么的吗?)

;--------------------------------------------------

DEF INT NEW_TOOL, SPD_TOOL

DEF REAL HIGHSPEED,LOWSPEED

NEW_TOOL=$C_T        ; new programmed tool number

SPD_TOOL=$P_TOOLNO   ; current tool number on the spindle

HIGHSPEED=$MN_USER_DATA_FLOAT[1]  

LOWSPEED=$MN_USER_DATA_FLOAT[2]     

    IF $MN_USER_DATA_INT[3]==0 GOTOF _END           

    IF $A_DBB[83]==1 GOTOF _END ;程序段搜索  $A_DBB[83]什么意思?哪来的?怎么了解?

  G290                 ;西门子方式

  IF $P_ISTEST==1 GOTOF _END

  _MM[0]=$MN_USER_DATA_INT[3]    _MM[0]前面一直没有定义,是制造商随便用的数组吗?

    IF NEW_TOOL>_MM[0]     GOTOF _END0   ; GOTO ALARM MSG

    IF SPD_TOOL==NEW_TOOL  GOTOF NO_CHG

  

    IF (_MM[2]==_MM[4]) GOTOF _RIGHT

   GOTOF _ALARM1

_RIGHT: 

  _MM[0]=0

_PP: _MM[0]=$A_DBB[72]  ;开门条件:ATC原点,对应db91.dbw72 刀库开门的条件检测可以做到M93对应的PLC里吗?然后$A_DBB[72]是不是就是db91.dbw72?里面通过PLC传递的吗?

     IF _MM[0]<>1  GOTOB _PP 

  M93    ;刀库门开

 STOPRE                   

  G500                           ;取消零点偏置

  D0                             ;取消刀补

  m24     ;取消Y轴第二软限位

  STOPRE                           

  G153 G0 G90 Z0                      ;Z轴回零点

  SPOS=$MN_USER_DATA_FLOAT[0]                           ; 主轴准停

  G153 G01 G90 Y=$MN_USER_DATA_INT[4]  F=HIGHSPEED 

  _MM[0]=0        

_TT: _MM[0]=$A_DBB[80]  ;YZ轴运动条件:开门到位 同样$A_DBB[80]怎么查找他的根源,哪来的?

     IF _MM[0]==0  GOTOB _TT

   

  G153 G01 G90  Y=$MA_FIX_POINT_POS[1,AX2]  F=HIGHSPEED 

  G153 G01 G90  Z=$MA_FIX_POINT_POS[1,AX3]  F=HIGHSPEED 

  M91             ;断进给轴伺服使能

  STOPRE

  M81

  STOPRE

  _MM[0]=0 

_AA: _MM[0]=$A_DBB[66]  ;机械手启动条件:倒刀到位且ATC在原点,db91.dbb66 

     IF _MM[0]<>1  GOTOB _AA

  M84             ;到刀,机械手扣刀,主轴松刀,机械手换刀,主轴夹刀

  STOPRE 

  _MM[0]=0 

_BB: _MM[0]=$A_DBB[70]   ;主轴夹紧的条件,db91.dbb70

     IF _MM[0]<>1  GOTOB _BB   ;主轴夹紧以后才激活刀具参数

  M85                    ;ATC二次回原点

  STOPRE                                             

  M66                    ;激活刀具参数   通道参数22560设定的值,用于激活刀具参数,这些刀具参数是什么在哪里?(840D但没有开通刀具管理)

  STOPRE

  _MM[0]=0 

_CC: _MM[0]=$A_DBB[72]   ;恢复进给使能的条件:ATC在原点,db91.dbw72

     IF _MM[0]<>1  GOTOB _CC 

  M92                    ;恢复进给轴伺服使能

  STOPRE

  D0

  G153 G0 G90 Z0              ;Z轴返

  G153 G0 G90 Y=$MN_USER_DATA_INT[4]    

  ;刷新NC刀表                             下面用到大量的_MM[]数组,是固定的意思吗

  M66激活刀具就是激活这些吗?如果是,那么_MM[]数组肯定是有专门指定的意思吧?

  _MM[0]=0   ;最大刀数

  _MM[1]=0

  _MM[2]=0   ;实际刀数和

  _MM[3]=0

  _MM[4]=0   ;理论刀数和

  _MM[0]=$MN_USER_DATA_INT[3]

AA:_TH[_MM[1]]=$A_DBB[_MM[1]]  ;赋值给刀表

  _MM[2]=_TH[_MM[1]]+_MM[2]    ;_MM[2]不能在其他地方清零赋值    _TH[]什么意思

  _MM[1]=_MM[1]+1

    IF  _MM[1]<=_MM[0] GOTOB AA

    IF _MM[0]MOD(2)==0

  _MM[4]=(1+_MM[0])*_MM[0]/2  

    ELSE

  GOTOF MS

    ENDIF

MS:_MM[4]=(POT(_MM[0])+ _MM[0])/2

_ST:

    IF _MM[2]==_MM[4] 

  GOTOF _RIGHT1

    ELSE 

  GOTOF _ALARM1

    ENDIF 

_RIGHT1: 

  _MM[0]=0          

_QQ: _MM[0]=$A_DBB[72]  ;关门条件:ATC原点

     IF _MM[0]<>1  GOTOB _QQ

  M94                   ;刀库门关

  STOPRE

    

  m25                    ;恢复Y轴第二软限位

  STOPRE

  M83                     ;回刀

  STOPRE

  _MM[0]=0

_TT1: _MM[0]=$A_DBB[80]  

      IF _MM[0]<>0  GOTOB _TT1

  GOTOF _END        ;换刀结束条件

NO_CHG:

  MSG("***编程刀具号等于主轴刀具号***")

  ;MSG("***PROGRAMMED TOOL is on the spindle. No TOOL change ***")

  G4F3

  GOTOF _END 

_ALARM1:

  MSG("***刀具表中出现相同刀号_MM[2]<>MM[4]***")

  GOTOB _ALARM1 

_END0:

  MSG("***换刀结束. 新刀具超出换刀数量***")

  GOTOB _END0 

_END:

版主推荐答案

    FC21功能块(Transfer PLC NCK data exchange),当此功能块被调用的时候,根据此功能块的FUNCTION CODE,实现PLC与NCK的数据通讯.

    $A_DBB // Data byte (8 bits)
    $A_DBW // Data word (16 bits)
    $A_DBD // Data double word (32 bits)
    $A_DBR // Real data (32 bits)

    CALL  "FB_SIEM_ PLC_NCK"   ;FC21

           Enable :=TRUE   

           Funct  :=B#16#4   ;写入

           S7Var  :="DB_MW_an_NC".MW_FenaL_re   ;DB293.DBD0

           IVAR1  :=36   ;$A_DBD[36]

           IVAR2  :=-1

           Error  :=#temp1

           ErrCode:=#temp2

          NOP   0

    举例说明,调用FC21,执行写操作,将DB293.DBD0赋值给$A_DBD[36],然后再NC中执行相关操作。Funct  :=B#16#3 ;读入数据,所以具体要看你的PLC怎么写的。

     _MM[0]前面一直没有定义,是制造商定义的全局变量或通道变量,在变量定义中可以找到。

查看完整帖子:
http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1419209&bid=20

提问者对于答案的评价:

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc307447.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月1日 下午1:54
下一篇 2020年11月1日 下午1:54

相关推荐

  • 6RA70默认的DB块

    在我们的PLC程序中有这样的一段程序,将32000赋给了DB1.DBD0,这个DB1.DBD0无法查到,不知道这个程序段代表的什么意思。DB1这个数据块是不是厂家默认分配给直流调速…

    2017年11月23日
  • 802dsl 201331报警

    201331 DP03:从动装置03:CU-I-003(001):布局:至少有一个组件没有分配给驱动对象,组件编号:12。 问题补充:谢谢各位支持;我这台是802DSL车…

    2017年11月16日
  • 828D系统机床总是显示急停报警

    1报警页面内显示急停报警,画面显示页面显示–液压未启动,但是液压已经启动了2查看PLC信号发现DB2700.DBX0.1总是有信号导致急停报警3轴模块DC lingk指…

    SINUMERIK 2020年11月1日
  • 西门子828D电机

    按快移速度移动时报警,已经把快移速度上限调大了为什么还报警? 钻石用户推荐最佳答案 根据系统报警内容查看报警手册,放大相关参数,自动优化伺服系统,在降低伺服增益,如果还不行,可能就…

    SINUMERIK 2020年10月31日
  • 840D双主轴

    840D双主轴,在两主轴轴参数设定完后,MDA下启动主轴,两主轴转速均不能超过30RPM,若超过均有25030报警,轴参数和设定数据里也没有30rpm,不知何故,是否哪个参数还没设…

    SINUMERIK 2017年12月7日
  • 制动控制回路故障

    802D SL ,使能有时能上有时不能上,上了电机也能转,上不了时:3000 急停报警 25201 轴Y伺服故障报警 2…

    SINUMERIK 2018年12月3日
  • 880数据备份

    谁有西门子880系统数据备份的软件及方法求分享一下,不胜感激。也可以电话联系我17609506869 最佳答案 一楼说的对,用PCIN备份,下载地址:http://www.ad.s…

    2020年10月31日
  • 电机测速的方式一般有哪些

    我先说说我自己的认识吧,有不对的请指正,还有的请补充下,谢谢 电机上的编码器是自带的吗?还是要单独买的? 1. 变频器装个编码器技术模块,电机上的编码…

    SINUMERIK 2018年12月5日
  • 230021报警

    我们的机床 802d sl 系统 出现230021报警 x轴功率部件:接地 0 诊断说明上查不到 ,…

    SINUMERIK 2018年12月9日
  • 请问这是卡顿的现象吗

    有时按面板菜单中机床厂家自己做的界面时会出现照片中的现象,尤其是第一张照片中的现象尤为频繁。要按好几次才行。请问这是什么原因造成的,怎么来避免他?谢谢各位了 图片说明: &nbsp…

    2017年8月3日