看到一些文档对于840DSL大于M100的功能与DB21.DBX58.0、DB21.DBX58.1、DB21.DBX58.2、DB21.DBX58.3、DB21.DBX58.4有关,还跟DB21.DBW68到DB21.DBD94有关。假设我是M323,是不是DB21.DBX58.2会为1,DB21.DBW80或DB21.DBD82中的哪一个DBX会为1。
问题补充:
如果是按gelu172的解释岂不是危险,例如开始的一段代码是M323M324M325,对应的DB21.DBD70是323
、DB21.DBD76为324, DB21.DBD82为325,我下一行代码是M325M323M324,那么对应的DB21.DBD70是325、DB21.DBD76为323, DB21.DBD82为324,因为假设我M325是代表一个阀,那NC给PLC的信号就不确定,有可能是DB21.DBD70为324,也有可能是DB21.DBD76为324,还有可能是DB21.DBD82为324,还有一点是DB21.DBW68在手册上写的是M功能1的扩展地址,不知这个是什么意思,具体如何用。
最佳答案
DB21.DBX58.0-DB21.DBX58.1,是M功能改变的信号确认,比如上一语句执行了M10,而当前在执行M11,M代码改变了,此时,在M代表改变以后的一个OB1循环开始时,会输出1信号到DB21.DBB58相应的位。而在下一个OB1循环开始,这个相应位的信号就会复位为0,也就是说这个信号是一个脉冲,只持续一个PLC的扫描周期,在译码时,这个信号一般也不用,因为她只是代表有新的M代码执行了,但具体执行的是M多少,还是要看DBW68以后的信号。这信号和M0-M99代码的接口信号是一样的只维持一个扫描周期的输出。
至于输出到哪一位,就要看这个M功能所处的位置是什么,840D规定的M功能,在同一行程序段中最多可以有5个M代码,这5个M代码就相对于DB21.DBX58.0-DB21.DBX58.1,第一个M代码和58.0相对应,也就是一行中第一个M代表改变时,58.0会输出一个扫描周期,第二个M代码和58.1相对应,是代表一行中第二个M代码改变时....以此类推。这和后面要说的M100以上的译码,DBW68-DBD94是一样的道理,你看接口能看到,DBW68写着M功能1,这个1就代表了在一行中他是处于第一个位置,而下面的DBW74是M功能2,这说明他是处于一行中的第二个位置,以此类推。
所以同一个M代码,在一行中所处的位置不同,他的处理地址是不同的。至于如何译码,简单的可以是比较,这里就不说了,上面这些接口信号弄明白,如何译码应该相对简单。
看了下你的问题补充,感觉你的理解不对。
比如第一行M323M324M325,对应的DB21.DBD70是323、DB21.DBD76为324, DB21.DBD82为325,这没错,这一行的执行是要有完成信号的,一般处理这种M代码时,都是M代码一执行,PLC就要给出读入禁止,这一行没执行完,不会读取下一行执行,而当这行执行完,才会读下一行。而在这一样执行时,DBD70里是323,比如PLC里DBD70与数字323进行比较然后输出到电磁阀1,而当第二行执行时,上面M功能改变信号会相应输出的同时,会把M功能的代码送到DBD70等地址中,此时DBD70里是325,这时,电磁阀1上的比较还是DBD70与323比较呢,所以电磁阀1不会有动作,而DBD70与325的比较会输出到相应的电磁2等,这个比较就是译码的过程。
提问者对于答案的评价:
谢谢回答
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc307731.html