恭喜,你发布的帖子
发布于 2024-06-28 12:19:21
7楼
谢谢,确实如您所说。
看了下西门子的标准测量循环,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
系统变量手册里有解释。
$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倍率又恢复为可以调节。
以前一直不明白同步动作是个什么玩意,这次用上了就明白了,哈哈哈哈。
请填写推广理由:
分享
只看
楼主