开这个贴是针对很多学习PLC的朋友经常发这样的问,目的是让大家灵活掌握各种指令,加深对各种功能指令的深刻理解,在实际生产中,对于某一种功能呢,不同的人可以有不同的编写方案,并不一定要求所有人都用同一种指令来实现,很多都是没有标准答案的,正所谓殊途同归。
二分频就是通过有分频作用的电路结构,在输入每次接收到一个上升沿信号时,输出信号逻辑取反。这个电路的用途非常广泛,常用在一个按钮控制一个灯,电机,电磁阀等用电器的启动与停止,即单按钮启停电路中。
时序图如下:(CP是输入信号,Q是输出信号。)

那么问题来了,我们如何使用PLC来这个功能呢,下面小编通过自己这些年来的工作经验,给大家做一个汇总,使用各种不同功能的指令来实现这个二分频电路。
1.首先来看第一个电路,选择了普通的常开常闭触点,这个电路可以通过完整的模仿接线,可以用继电器来实现。(适当修改元件地址编号,可用于三菱,西门子等别的PLC中)


2.第二个电路,也是完全利用了普通的逻辑关系,适当的修改之后也是可以用普通的继电器来实现的。(适当修改元件地址编号,可用于三菱,西门子等别的PLC中)


3.利用了欧姆龙的KEEP指令(松下也有,三菱西门子没有此指令,三菱暂用ALT取反更的指令)


4. 利用置位和复位指令来实现。(适当修改元件地址编号,可用于三菱,西门子等别的PLC中)


5.对于没有KEEP指令的PLC(比如三菱,西门子等),我们可以参考第2种和第3种方法,将两种方法合二为一,这样的梯形图对于目前的各种主流PLC也是适应的。


6.利用BIN递增指令,字元件W0的数字会在-32768~+32767之间变化,每加一次,会由奇数变成偶数,或者由偶数变成奇数,而奇数转换成二进制后其最低位肯定是1,偶数转换成二进制后其最低位肯定是0,这样我们可以很巧妙的利用最低位的变化来驱动输出线圈。(适当修改元件地址编号,可用于三菱,西门子等别的PLC中)


7.利用计数器来完成二分频的程序(感觉和KEEP有些类似,可以应用于没有KEEP指令的PLC中,比如三菱,西门子等)


8.对于早期的PLC,大多都没有上升沿检测的指令, 我们可以利用PLC的周期扫描以及周期运算处理特点,来形成输入信号的上升沿,例中W0.00可以看做是输入信号0.00的上升沿,只是慢一个扫描周期,其常开触点动作每次也仅接通一个扫描周期,常闭触点则每次断开一个扫描周期,相当于用DIFU(类似于三菱的PLS)指令驱动的线圈触点。具体生成的二分频电路如下:(本功能适合于目前的几乎所有品牌PLC)


9.对于上面的例子,无疑过于复杂,而中间继电器又使用的稍多,我们经过一定处理之后,并且利用异或电路的规则,以及PLC所产生的上升沿,常开常闭触点仅动作一个扫描周期的特点,因而可以得出下面的电路。如果我们所使用的PLC没有上升沿信号检测的指令,可参看上例子中形成上升沿的电路,或者用DIFU指令生成上升沿。此电路也同样适合于目前几乎所有主流PLC。


10. 利用位取反指令

11. 利用补码指令所编写的程序。我们知道,所谓的补码,就是一个求相反数的运算,利用符号位在一个非零的数字补码运算时的取反输出来驱动我们所需要的输出线圈。程序中的第一次循环标志(A200.11)是一个特殊辅助继电器,相当于三菱FX系列的M8002,西门子S7-200系列的SM0.1,主要功能是在上电之后给予补码的数字赋值,这个数字不等于0之后再进行补码运算,符号位才会取反。同样,这个功能也适应于大部分主流PLC。


12. 字异或指令编写的二分频电路,同样适应于各种主流PLC。


13. 利用位左移指令编写的二分频电路,稍作修改后同样适应于各种主流PLC。


14. 利用否定传送MVN指令编写的二分频电路


15. 利用数据交换XCHG指令编写的二分频电路


16. 利用传送MOV指令编写的二分频电路


17. 利用左移1位ASL指令编写的二分频电路

18. 利用加减法指令组合编写的二分频电路,和MOV以及加1等指令类似,有嫌重复。


19. 利用步进指令编写的二分频电路,相当于三菱的状态转移图,有点长哦。


20. 除了以上指令外,还有别的指令类似指令或者相反功能的指令也可以编写出二分频功能来,比如既然BIN递增可以,那么递减也可以,加减法可以;乘除法也可以,甚至乘方开方,以及三角函数的运算也可以;既然位左移可以,那么位右移当然也可以,等等等等,在这里就不多复述。先暂时总计这么多吧。
二分频就是通过有分频作用的电路结构,在输入每次接收到一个上升沿信号时,输出信号逻辑取反。这个电路的用途非常广泛,常用在一个按钮控制一个灯,电机,电磁阀等用电器的启动与停止,即单按钮启停电路中。
时序图如下:(CP是输入信号,Q是输出信号。)

那么问题来了,我们如何使用PLC来这个功能呢,下面小编通过自己这些年来的工作经验,给大家做一个汇总,使用各种不同功能的指令来实现这个二分频电路。
1.首先来看第一个电路,选择了普通的常开常闭触点,这个电路可以通过完整的模仿接线,可以用继电器来实现。(适当修改元件地址编号,可用于三菱,西门子等别的PLC中)


2.第二个电路,也是完全利用了普通的逻辑关系,适当的修改之后也是可以用普通的继电器来实现的。(适当修改元件地址编号,可用于三菱,西门子等别的PLC中)


3.利用了欧姆龙的KEEP指令(松下也有,三菱西门子没有此指令,三菱暂用ALT取反更的指令)


4. 利用置位和复位指令来实现。(适当修改元件地址编号,可用于三菱,西门子等别的PLC中)


5.对于没有KEEP指令的PLC(比如三菱,西门子等),我们可以参考第2种和第3种方法,将两种方法合二为一,这样的梯形图对于目前的各种主流PLC也是适应的。


6.利用BIN递增指令,字元件W0的数字会在-32768~+32767之间变化,每加一次,会由奇数变成偶数,或者由偶数变成奇数,而奇数转换成二进制后其最低位肯定是1,偶数转换成二进制后其最低位肯定是0,这样我们可以很巧妙的利用最低位的变化来驱动输出线圈。(适当修改元件地址编号,可用于三菱,西门子等别的PLC中)


7.利用计数器来完成二分频的程序(感觉和KEEP有些类似,可以应用于没有KEEP指令的PLC中,比如三菱,西门子等)


8.对于早期的PLC,大多都没有上升沿检测的指令, 我们可以利用PLC的周期扫描以及周期运算处理特点,来形成输入信号的上升沿,例中W0.00可以看做是输入信号0.00的上升沿,只是慢一个扫描周期,其常开触点动作每次也仅接通一个扫描周期,常闭触点则每次断开一个扫描周期,相当于用DIFU(类似于三菱的PLS)指令驱动的线圈触点。具体生成的二分频电路如下:(本功能适合于目前的几乎所有品牌PLC)


9.对于上面的例子,无疑过于复杂,而中间继电器又使用的稍多,我们经过一定处理之后,并且利用异或电路的规则,以及PLC所产生的上升沿,常开常闭触点仅动作一个扫描周期的特点,因而可以得出下面的电路。如果我们所使用的PLC没有上升沿信号检测的指令,可参看上例子中形成上升沿的电路,或者用DIFU指令生成上升沿。此电路也同样适合于目前几乎所有主流PLC。


10. 利用位取反指令

11. 利用补码指令所编写的程序。我们知道,所谓的补码,就是一个求相反数的运算,利用符号位在一个非零的数字补码运算时的取反输出来驱动我们所需要的输出线圈。程序中的第一次循环标志(A200.11)是一个特殊辅助继电器,相当于三菱FX系列的M8002,西门子S7-200系列的SM0.1,主要功能是在上电之后给予补码的数字赋值,这个数字不等于0之后再进行补码运算,符号位才会取反。同样,这个功能也适应于大部分主流PLC。


12. 字异或指令编写的二分频电路,同样适应于各种主流PLC。


13. 利用位左移指令编写的二分频电路,稍作修改后同样适应于各种主流PLC。


14. 利用否定传送MVN指令编写的二分频电路


15. 利用数据交换XCHG指令编写的二分频电路


16. 利用传送MOV指令编写的二分频电路


17. 利用左移1位ASL指令编写的二分频电路

18. 利用加减法指令组合编写的二分频电路,和MOV以及加1等指令类似,有嫌重复。


19. 利用步进指令编写的二分频电路,相当于三菱的状态转移图,有点长哦。


20. 除了以上指令外,还有别的指令类似指令或者相反功能的指令也可以编写出二分频功能来,比如既然BIN递增可以,那么递减也可以,加减法可以;乘除法也可以,甚至乘方开方,以及三角函数的运算也可以;既然位左移可以,那么位右移当然也可以,等等等等,在这里就不多复述。先暂时总计这么多吧。