豆类厂家
免费服务热线

Free service

hotline

010-00000000
豆类厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

M指令在西门子系统中的编制和使用《资讯》

发布时间:2020-08-17 12:09:47 阅读: 来源:豆类厂家

2019-02-20 17:05:09来源:《金属加工(冷加工)》

我们在数控系统(西门子)中大量使用M指令,比如M3是主轴正转、M5主轴停转等常规通用指令,也有制造商自己开发的某些特定功能或动作的M指令。特别是加工中心换刀程序中写有多个M指令,每一步的动作都有特定的M代码完成,并且有先后顺序,出故障时还能停止,往往还伴有报警。那么这些M指令是怎么编写的,在使用时又是如何做到条件检测的,本文将就这一问题进行讨论。

一、M0-M99动态M功能

在NC程序中M功能执行时(以840D系统为例),会触发一个信号,该信号会传送到PLC接口,通过840D的调试手册可以查出该信号(DB2x.DBX294.0-DB2x.DBX206.3),而这些信号,在PLC中只存在一个扫描周期,所以一般会使用S指令,置位某个地址然后去驱动某个动作。

程序段如下(以通道1为例):

N010 G0 X0 M10 ? ? ? ? ? ? ? ?//启动冷却指令M10

...

N080 M11 ? ? ? ? ? ? ? ? ? ? ?//当NC程序运行到此步时,M11关闭冷却

在PLC程序中我们编写如下程序:

A DB21.DBX195.2 ? ? ? ? ? ? ? //M10执行时在nck程序的通道1中编辑,激活一个PLC扫描周期;

S Q0.0 ? ? ? ? ? ? ? ? ? ? ? ? //冷却泵启动(Q0.0为控制泵接触器的输出信号)

A DB21.DBX195.3 ? ? ? ? ? //M11执行时在nck程序的通道1中编辑,激活一个PLC扫描周期

R Q0.0 ? ? ? ? ? ? ? ? ? ? //冷却泵停止

实际上我们很多M指令是“闭环”的,就是指令执行后还要检测执行有没到位信号或者压力信号等,若不到位就无法执行下一步,一直停在该M指令处。这就需要PLC或者NC对指令进行处理了。

PLC的处理方法是在执行动作的同时将“读入使能禁止”(DB21.DBX6.1)激活,同时检测反馈信号,当反馈信号正常时再复位该“读入使能禁止”,此时该M指令就完成“闭环”反馈,执行下一步了。如在某程序中有个松刀动作M20,要求松刀不到位时不能执行下一步,程序如下:

A DB21.DBX196.4 ? ? ? ? ? //M20执行时在nck程序的通道1中编辑,激活一个PLC扫描周期

S Q0.1 ? ? ? ? ? ? ? ? ? ?//驱动松刀电磁阀

S DB21.DBX6.1 ? ? ? ? ? ?//同时激活“读入使能禁止”

A Q0.1 ? ? ? ? ? ? ?

A I0.1 ? ? ? ? ? ? ? ? ? ? //检测松刀到位信号

R DB21.DBX6.1 ? ? ? ? ? ?//到位后,复位该信号,NC程序继续执行

除了用这种PLC程序做检测外还可以结合NC的IF语句做判断,这在加工中心的换刀程序中大量使用。如某龙门加工中心换刀程序中有段程序:

M93 ? ? ? ? ? ? ? ? ? ? ?//刀库门开

_TT:_MM[0]=$A_DBB[80] ? //Y、Z轴运动条件:开门到位

? ? 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

程序中IF语句就是用来检测开门信号的,如果不到位,Y、Z轴是不能运动的,否则有撞门风险,$A_DBB[80]主要是通过如图1所示的PLC实现的。我们能够清晰的看到以下的逻辑,执行M93后激活DB21.DBX205.5,从而通过M110.7激活开门的气阀Q41.0(Network66),同时Network67在检测信号,当开门信号到位,关门信号脱开时,把1传送给DB91.DBB80。

再通过如图2所示的PLC,用OB1调用FC21把DB91.DBB0开始的200个字节,都写入$A_DBB[0]开始的200个字节里。这样就实现了$A_DBB[80]能够检测开门信号有没到位的功能了。

二、静态M功能

该M指令的接口信号地址类型和块编号功能由OEM厂家自行定义,它和PLC地址没有标准对应关系,如M99=125实现开门动作,PLC编写如下:

A(

L 99 ? ? ? ? ? ? ? ? ? ? ? ?

L DB21.DBW68 ? ? ? ? ?

==D) ? ? ? ? ? ? ? ? ? ? ?//比较读入的M静态指令是不是M99

A(

L 125

L DB21.DBD70

==D) ? ? ? ? ? ? ? ? ? ? ?//比较读入的是不是125

A DB21.DBX58.0 ? ? ? ? ?

S DBxx.DBXxx.x ? ? ? ? ? ? //确定了执行的M99=125后驱动某个地址

在NC通道执行时99被存入DB21.DBW68的地址中,该变量定义为整形变量。在执行时将125存入DB21.DBD70的地址中,该变量定义为实数变量。还有关键信号DB21.DBX58.0,该变量在M功能代码改变时跳变,信号保持一个PLC周期,可以用它锁存M功能代码读取瞬间的代码数值,以保证存入数据不出错。当NC读入的程序段执行M99=125时激活最后的DBxx.DBXxx.x地址,然后通过这个地址可以做后续的逻辑编写,比如驱动开门,再做开门信号的检测等等。

以上为方便理解,只是简单写出了主要的原理和思路,真正运用时还需要考虑转换数据类型等,部分比较值肯定用索引地址和间接指针寻址代入减少代码使用,逻辑保护也要加强很多。

芬琳芬华内墙漆价格

芬琳漆

装修用什么儿童环保漆?

相关阅读