回复:MEAS 测量进给率问题

已锁定

手机用户20230423523746

  • 帖子

    9
  • 精华

    0
  • 被关注

    0

论坛等级:游民

注册时间:2023-04-23

普通 普通 如何晋级?

发布于 2024-06-28 12:19:21

7楼

展开查看
以下是引用西范斯在2024-06-27 22:05:42的发言 >5楼:西门子研发终于知道测量速度和校正测头时用的速度不一样,将导致很大误差,西门子没有像fanuc那样,一个变量#4xxx就能固定倍率(根植于NC底层)。所以西门子要么从底层去开发,要么用上层用测量循环去改变倍率。显然用测量循环来固定倍率是最优,解决思路是利用现有总倍率变量运算后始终为1,例如:通道进给倍率=测量速度÷plc倍率(系统变量能读出plc倍率开关数值),这样实际总倍率=plc倍率×通道进给倍率=1,此消彼长,总量不变。 还可以得到的结论:1.md51740并不能改变NC内部任何东西,因为你不用西门子测量循环时,MEAS程序段倍率仍然有效。 2.西门子测量循环会去读MD51740bit6,判断是否要使用上面的算法来固定倍率。
以下是引用手机用户20230423523746在2024-06-27 15:19:38的发言 >0楼:测量说明书里,说了...

引用0楼详细内容:

测量说明书里,说了只要参数 MD51740 $MNS_MEA_FUNCTION_MASK, bit 6 is set =1

那么测量语句MEAS执行时,只要倍率大于0,一律按100%执行,这是为了避免进给变化造成测量误差,

但是为什么我在加工中心上实际运行MEAS语句时,倍率仍然可调的。


我看机床里N51740 $MNS_MEA_FUNCTION_MASK='H6b', 6b换成二进制是01101011,bit6是1,为什么还是不行呢,但是我用机床自带的测量工件功能的时候,测量时进给是不可调的。




谢谢,确实如您所说。

看了下西门子的标准测量循环,CYCLE111里,有这么一段:

_MD51740_6=0

IF ($MNS_MEA_FUNCTION_MASK B_AND 'B1000000')

_MD51740_6=1

ENDIF

IF _M_N[18]

IF _VB[2] AND(_OVI[2]==961)

N167 G111 AX[_XX]=$P_EP[_XX]*_M_SPE[29] AX[_YY]=$P_EP[_YY]*_M_SPE[29]

IF _MD51740_6

WHENEVER($AC_PLC_OVR<>0) DO $AC_OVR=10000/$AC_PLC_OVR

WHENEVER($AC_PLC_OVR==0) DO $AC_OVR=0

ENDIF


关键就是这一句:

WHENEVER($AC_PLC_OVR<>0) DO $AC_OVR=10000/$AC_PLC_OVR

变量.pdf

系统变量手册里有解释。

$AC_PLC_OVR是操作面板的倍率旋钮实际值。

$AC_OVR是可以人为指定的一个进给倍率。这里就是更改这个变量。

$AC_TOTAL_OVR是总的进给倍率,公式:

$AC_TOTAL_OVR = $AC_PLC_OVR * $AC_OVR * OVR /10000.


当我们令$AC_OVR=10000/$AC_PLC_OVR时,与公式中的$AC_PLC_OVR抵消了,这样倍率旋钮就无效了。


WHENEVER ...DO ...是同步动作。是系统在实时检测条件是否满足,若满足就执行DO后面的内容。

WHENEVER 前面没有加ID,表示这个同步动作是非模态的,只在随后的一个主运行程序块生效。

所以这样就可以了:

N10 WHENEVER($AC_PLC_OVR<>0) DO $AC_OVR=10000/$AC_PLC_OVR

N20 MEAS ....

N30 G1 X Y Z


这样N20 MEAS 倍率就无法调节,N30倍率又恢复为可以调节。


以前一直不明白同步动作是个什么玩意,这次用上了就明白了,哈哈哈哈。




评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SINUMERIK

共有25500条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。