关于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

相关推荐

  • 828D 用户界面$$850xx所显示的变量文本在哪里?

    828D 用户界面$$850xx所显示的变量文本在哪里?还有在PC上编辑好APPL内容复制到NC“SYSTEM CF CARD\OEM\SINUMER…

    2020年11月1日
  • 840D 出现120202报警

    各位大侠,求助!840D系统出现120202报警,更换过PC-NC连接电缆,与另外一台机床对调过NC  PLC,另一台机床还是正常,故障机依旧。面板灯闪亮,PL…

    SINUMERIK 2020年10月31日
  • 840Dsl

    840Dsl安装operate软件无法开机自动启动,版本是不是不对。有安装包链接分享一下。谢谢。 问题补充:版本是pcu的,但是开机要输密码 最佳答案 参考一下对应选型:https…

    SINUMERIK 2020年10月31日
  • 828D数控系统开机调试

    西门子828D数控系统,出现以下报警,怎么消除?请各位师傅们帮忙,在此感谢。 图片说明:    最佳答案 如果是更换过硬件出现的报警,可以重新进行拓扑识别,然后…

    2017年7月25日
  • 840d机床监控参数求教

    请教各位学兄,840d的36400监控轮廓公差带和36010精确精准停这两个参数如何确定,例如36400缺省值为1,将其设为3,对加工精度有无影响?36010呢?请赐教。 最佳答案…

    SINUMERIK 2019年6月11日
  • 828系统模拟主轴,四级换挡

    从828系统的参数中可以看到,支持6个档位的参数设置,但是在PLC变量处理中,只有DB380X.DBX2000.0~DB380X.DBX2000.2三个实际齿轮级信号,我现在是主轴…

    SINUMERIK 2017年10月31日
  • 有没有模拟程序调试的软件?

    您好,有没有把自己编写的程序进行模拟的软件呀?因为现场的加工中心正在工作,所以想找一个软件把自己编写的程序在自己的电脑上进行模拟一下,特别是关于宏或者变量等方面的。 我们…

    SINUMERIK 2017年12月7日
  • 关于圆柱体的转动惯量的计算?

    哪为能给说说,如何计算? 公式怎么推导,谢谢 问题补充:这个我都知道,我意思谁能有推导公式的过程,公式书上都可以找到的。 最佳答案 JL=π・ρ&#1253…

    SINUMERIK 2019年6月11日
  • 怎么看I/O点的状态

    我有台840D加611的 机床在换刀时老卡死 我想看看I/O 点的状态  怎么看  刚毕业接触 请高…

    SINUMERIK 2018年12月9日
  • 两轴直线插补是两轴同时运行,还是有先后之分?

    两轴直线插补运行是两轴同时运行吗?我用金钢石修整笔修整砂轮表面形状,用两轴插补指令运行修整砂轮,但砂轮磨削出的产品用轮廓仪测量放大后,呈现阶梯状,阶梯高度为1微米,显示出两轴是先运…

    2020年10月31日