| 作者 | 主题 |
|---|---|
|
完颜大骨头 侠士 经验值:1567 发帖数:206 精华帖:0 |
楼主
主题:M扩展指令Mx=yy怎么编写 1.什么叫动态解码,什么叫静态解码?可否举例 2.Mx=yy 是怎么编写的?PLC怎么写的,比如M99=125是个开门的指令,怎么完成? 谢谢!
好好搬砖,养家糊口
|
|
风过留y 奇侠 经验值:6073 发帖数:434 精华帖:16 |
1楼
主题:回复:M扩展指令Mx=yy怎么编写
虽然之前也回答过很多该问题,但还是有很多人不是很明白,那再回答一遍。
以840D SL为例NC的M功能由两种实现方式,即NC和PLC,从楼主的指令来看应该是PLC实现的,那么我们只讲通过PLC实现的M功能。 首先楼主问的静态和动态M功能,我个人的理解就是。 动态M功能是指西门子已经定义好标准接口信号至bit位的M功能,即已经通过内部分配将M10连接至PLC信号DB2x.DBX195.2,用户无需定义M功能对应的PLC中信号地址就可直接使用,下面借用W工的程序说明一下动态M功能使用。 实例plc程序: A DB21.DBX195.2 //在nck程序的通道1中编辑,激活一个plc扫描周期; S Q0.0 //冷却泵启动 A DB21.DBX195.3 //在nck程序的通道1中编辑,激活一个plc扫描周期; R Q0.0 nck通道1程序: N010 G0 M10 //启动冷却 、、、、、、 N090 M11 //当nc程序运行到此步时,关闭冷却 如果我们要控制门开关或对开关冷却液有监控需要的,可以加入NC的读入使能信号。 比如实例触发NC暂停; A DB2x.DBX195.2 M10触发信号,激活一个plc扫描周期; S DB2x.DBX6.1 NC通道读入使能信号,暂停NC程序; 当条件满足结束NC暂停; A Q0.0 开关门或者冷却液打开输出; A I0.0 开关门或冷却液到达信号; R DB2x.DBX6.1 动作或冷却液压力到位后,复位该信号,NC程序继续执行; 以上实例为方便理解所以简单说明,如果一次执行多个M代码,以上方法程序还需要增加多个M功能的判断,比如将多个M功能的状态保存到一个数据块,然后通过程序轮询是否所有功能被执行完成,只要有一个功能未执行完成,NC程序读入使能一直被置位,程序暂停执行。 静态M功能即非西门子标准接口信号的M功能,接口信号地址类型和块编号功能OEM厂家自行定义,和楼主提到的M99=125一样,它和plc地址没有标准对应关系,无法通过M编号反推出plc信号地址,但我们可以通过它的基本原理结合plc程序反推。 比如M99=125在NC通道执行时99被存入DB2x.DBW68的地址中,该变量定义为整形变量。 125在执行时将125存入DB2x.DBD70的地址中,该变量定义为实数变量。 还有应该关键信号DB2x.DBX58.0,该变量在M功能代码改变时跳变,信号保持一个plc周期,可以用它锁存M功能代码读取瞬间的代码数值,以保证存入数据不出错。 到这静态M功能几个关键信号都讲到了,接下来就是运用问题。静态M功能关键在于它的应用灵活,它的变化组合16位整数最大值乘以32位实数小数点前最大值,动态M功能0到99的变化根本没法与之比较,其实我们不可能用到这么多M代码。 下面简单运用实例; A( L 99 L DB2x.DBW68 ==D) A( L 125 L DB2x.DBD70 ==D) A DB2x.DBX58.0 S DBxx.DBXxx.x 以上是方便大家理解,简单写了几句,真真运用时还需要转换数据类型等,部分比较值肯定用索引地址和间接指针寻址代入减少代码使用,逻辑保护也要加强很多。 如果还需要加上动作到位监控的就把对应变量取出来和上面提到的动态M功能一样处理,结束后对这个数据区域进行轮询比较,如果有一个M功能没有完成,那么NC暂停运行比如门未开到位机械手不能动作,讲到这里楼主应该有头绪了吧?像门关闭到位肯定有通道读入使能之类信号参与,它可以来自通道读入使能也可以来自报警锁定,还有对于轮询的处理和报警管理类似,只有要一个报警存在就会影响机床状态。
分享技术,共同进步。
|