| 作者 | 主题 |
|---|---|
|
chen11201 侠圣 经验值:3740 发帖数:627 精华帖:3 |
楼主
主题:求助:怎样自定义M功能
各位大侠:
本人想自定义一个新的M功能,先在s7中建一个数据块DB336(举个例子,且此数据块不是西门子标准数据块),并在此数据块中定义DB336.DBX0.0为M336.然后在NC中怎么定义或编程,数据块DB336才能被NC调用,然后在NC程序中输入M336就能实现相应的功能呢? |
|
RICHARDS 游侠 经验值:527 发帖数:245 精华帖:3 |
楼
主题:回复:求助:怎样自定义M功能
M0-M99中的M功能是通过动态的M功能译码来实现的。在NC加工程序中M功能执行的时候,会发出一个信号,传送到PLC的接口,也就是DB21.DBB194-DB21.DBB206,而这些信号,在PLC中只存在一个PLC的扫描周期,所以,一般会使用S指令去置位到某一个地址,比如一个用户定义的数据块中的一位,然后在去进行相应功能的处理。
但是动态M的译码,在接口信号中只给出了0-99,那么100以上的M功能是如何在PLC中实现的呢?这就用到了扩展M功能,DB21.DBD72,所有执行的M功能的数值,就会发送到这个双字节中,在下一个M功能执行以前,他会保持不变。在PLC中我们就可以用这样的方法来实现。比如你要实现M200,Q1.0是M200所要执行的动作: L 200 L DB21.DBD70 ==I S Q1.0 M功能的数值范围为:0 – 2147483647(max. INT value) 用上面的方法,我在840D上试验过M200000(几个0忘记了反正很多,呵呵)的功能, |