西门子200的PLC编程软件Micro/win中是配置有实现顺序控制功能的指令的,因为我个人也也很少用,最近有个项目想使用这个方法,就研究了一下,顺便给小伙伴们分享一下。其实,我最终还是使用的很多set/reset指令去做的程序,不过喜欢用哪种方式,还是看个人的爱好,不过还是发出来让想用的朋友们了解一下!

先看一下西门子200中顺序控制的指令吧:




codesys 梯形图 怎么添加上升沿_lda指令是什么意思

顺序控制的3个指令



如图,红框中是梯形图编程时候指令树下的程序控制指令中的3个指令。来看一下这3个指令的大概意思:

SCR是装载顺序继电器,作为顺序控制段的段首,也就是开始顺序控制。

SCRT是转换,就是条件转换的意思,从一个顺序继电器转换到另外一个顺序继电器。

SCRE是结束顺序控制。

指令大概了解了,就来看一段程序吧:




codesys 梯形图 怎么添加上升沿_编译错误_02

程序的第一段监控截图



该图片上网络1我用M0.0去置位S0.0,目前大家看到S0.0不为1,是因为被网络5的SCRT指令转换了,S0.0就自动被复位为0了。从下边的图片可以看到, S0.0为0,而S0.1为1了,就是已经转换了。




codesys 梯形图 怎么添加上升沿_codesys 梯形图 怎么添加上升沿_03

程序执行第一段时的监控状态图



从这个图片上还可以看到更多的信息,就是M10.0为1,而Q0.0不为1; Q0.0不为1,所以T1就没有再计时了。原因是什么呢?就是前一个图片上我写的,S0.0=1的时候,SCR和SCRE那段之间的程序才能被执行;现在S0.0=0了,中间的这段程序就不能被执行了。--这就是和300PLC或者其他PLC中顺序控制的作用一样的地方了。

接着往下边看程序:

如下图,上边说SCRT转换指令使得S0.0被复位,而S0.1被置位,就使得网络7和网络9之间的程序处于可以执行状态。我把M0.2设置为1,Q0.1和Q0.2就输出了。

当S0.1为0的时候,即使M0.2的值为1,Q0.1和Q0.2依然是无法输出的。




codesys 梯形图 怎么添加上升沿_codesys 梯形图 怎么添加上升沿_04

程序的后一段监控截图



程序讲完了,再来说一些使用中的约束

约束1:在西门子200microwin中编程的时候,一般是要求母线和后边的指令之间是必须要有一个接点指令的,所以我们常常要使用SM0.0。但是,SCR和SCRE指令是个例外,以及LBL和NEXT指令,它们可以直接接母线,而中间不能有其他指令,否则将出现编译错误!如下图:




codesys 梯形图 怎么添加上升沿_顺序控制_05

SCR和SCRE指令必须直接接母线



约束2:这3个顺序控制继电器指令的操作数只能是S区,注意不是SM,如果你指定的操作数是V区或者M区,总之不是S0.0这样的顺序控制继电器,直接会显示红色波浪线提示错误。

约束3:SCRT转换指令应该写在前一个顺控的SCRE结束指令之前,否则会出现非致命错误,导致无法下载。这个是可以理解的,因为如果前一个顺控结束了,还何谈转换呢?

如下图,我把结束指令SCRE本应该写在网络7的,提取到网络5,就是在SCRT指令之前。




codesys 梯形图 怎么添加上升沿_lda指令是什么意思_06

SCRT指令如果在SCRE指令之后程序无法下载



在下载的时候,就出现了如下的错误,这错误是和未下载之前在输出窗口输出的编译错误是不同的。这种情况是编译时候输出窗口没有报错,而下载的时候报错的!




codesys 梯形图 怎么添加上升沿_codesys 梯形图 怎么添加上升沿_07

下载是提示非致命错误



至此,文章就结束了,实现顺序控制的编程方法多种多样,但是主流的PLC都配置有顺序控制的专门指令,西门子200也不例外。