840D sl 的M指令大于99时如何去写,比如M200。
看到有两种方式:一种是比较DB21.DBW68和DB21.DBD70中的值;另一种是通过DB75和DB76基于列表的M解码实现。
两者有什么区别?
图片说明:
最佳答案
使用解码列表的解码方法,1、此种解码方法不分通道;2、此种解码方法可以解码256个M功能,分成16个组,每组16个(扩展地址16个,每个扩展地址内的值最多16个);3其接口信号需要用户自己生成。使用方法:1、生成DB75,作用是告诉PLC哪些M功能用这种方法解码,①在STEP7中打开library(已经安装过toolbox)→②选择相应的基本程序文件夹(根据toolbox会生成不同的)→③打开"Quellen"(德语,源文件)→④复制文件"medclist"至用户PLC程序的源文件文件夹中→⑤"medclist"文件内"MSigGrp[1].MExtAdr"是M功能的扩展地址(共16组,以第一组为例,下同),"MSigGrp[1].MFirstAdr"为该组的起始值,"MSigGrp[1].MLastAdr"为该组的最终值(每组可以不是16位,即有部分可以不使用,如"MSigGrp[1].MExtAdr"=0,"MSigGrp[1].MFirstAdr"=10,"MSigGrp[1].MLastAdr"=15,即使用M10-M15;如"MSigGrp[1].MExtAdr"=10,"MSigGrp[1].MFirstAdr"=10,"MSigGrp[1].MLastAdr"=15,即使用M10=10-M10=15)→⑥改好后进行编译("Compile")→在程序内自动生成DB75;4、打开OB100,在FB1中有一个"ListMDecGip"的形参,DB75一共16个组,使用了几个组就在里面输几;5、下载DB75和OB100,执行PLC暖启动(PO);6、生成接口信号DB76,以上面的例子为例:
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 DB76
- - M15 M14 M13 M12 M11 M10 DBB0
- - - - - - - - DBB1
- - M10=15 M10=14 M10=13 M10=12 M10=11 M10=10 DBB2
- - - - - - - - DBB3
完成后调用例如:在NC程序内输入"M10=15",即将DB76.DBX2.5置位,这种M功能有 一个特点:一旦执行这个M功能,NC程序是否继续往下执行由PLC来决定,也就是PLC可以决定M功能未执行完成前NC程序要不要继续运行,直至PLC将M功能对应的DB76复位,NC才能继续运行,所以在PLC程序内必须编制一个复位程序,DB76(NC→PLC),但要求PLC要将其复位为零后才能继续执行NC
以前笔记,供你参考
使用DBB58解码的方法:
例如编一段NC程序:N10 M8 M10=8 M9999 M10000 M15
M fct.1 M fct.2 M fct.3 M fct.4 M fct.5
DBB58 M fct.1-5指的是该行程序内的第几个M功能,例当执行上程序"M8"时,NC告诉PLC这一行有一个M功能要执行,PLC会将DB21.DBX58.0置一个OB1周期的"ON"
DB21.DBW68储存的是M功能的扩展地址,如Mx=yy,x就是扩展地址,DB21.DBD70储存的是M功能的值(内容),yy就是值(以上都以通道1,M功能1为例)
为了方便编程,不去固定M功能在程序段内的位置,需要在PLC内进行“或”
这种M功能的解码范围为M[0~99](扩展地址0~99)=0~99999999(值的范围),其解码范围特别大
提问者对于答案的评价:
很详细,谢谢
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc295794.html