在OPENPLC中进行布尔逻辑编程,可以利用三步扫描周期的效果而实现一些小的技巧,这些技巧可以典型地说明,OpenPLC是一个软件和硬件结合的产品,编程不仅是程序自身的事情。下面描述其中的三个:
ONE-SHOTS(单触发)
图3.6给出了一个两个横档的程序,每次当输入位(IN.1.0)从OFF变到ON时,可以将横档1控制的位继续保留一个扫描周期的时间,而另一个横档则控制一个数据位,该位必须在第一个横档之后,(当然不是立即变化)。下面叙述其变化:
图3.6 单触发布尔逻辑结构
1、假定输入为关,(即IN.1.0为0),作为结果,OUT.3.0与D.2.0都将被关闭(0);
2、在IN.1.0变为1以后的第一个扫描周期,横档1的逻辑表达式将全部变为真,因此,输出位(OUT.3.0)将变成1,在第一个横档执行完后,OpenPLC将评估第2个横档,将D.2.0变为1, 在扫描周期的第三步,OpenPLC将会把与输出映射表OUT.3.0对应的执行器打开。
3、在IN.1.0变为1以后的第二个扫描周期,PLC将再评价第一个横档,由于D.2.0不再是0,逻辑表达式将为假,因此,输出映射位(OUT.3.0)将会被关掉。在扫描周期的最后,与OUT.3.0相连的执行器将被关掉,该执行器的打开时间刚好为一个扫描周期。
4、 单触发器只有在输入位关掉后再打开的时候,才会再工作。
大部分的PLC制造商承认上述单触发器的原理比较难以理解,因此设立了单触发器指令,OpenPLC也有。该指令的使用可参见OpenPLC相关手册。
闭锁和密封
用布尔逻辑编程可以将一个输出“封锁”,就象本章中早先提到的闭锁和解锁指令一样。图3.7示出了梯形逻辑图。它有下面两部分组成:
1. 一个两部分的AND逻辑表达式,如果表达式为真,可以将一个输出打开。
a) 逻辑表达式的第一部分是常假的,但如果IN.1.0为真,输出则打开;
b) AND表达式的第二部分则常真的,但如果IN.1.1关断,输出则关断;
2. 一个将输出与AND表达式的第一部分(常断)相或的分支。
图3.7闭锁梯形图结构
在图3.7中,如果输出的初始状态是ON的,那么,或表达式的上部将转到常假的状态,底部所检测到的输出将一直保持,只要常真的与元素(IN.1.1)保持为真。该电路与前面的闭锁与解锁一样,但有些程序员喜欢用这种电路,因为这种程序结构把逻辑和更改输出位可以在一个横档内,更容易进行故障诊断。
顺序器
闭锁可以用来控制一个在一定的时间内必须按照事先定好的顺序操作一个步骤的过程,数据位可以跟踪目前哪个步骤是激活的。图3.11给出了一个三步顺序的程序。请记住,OpenPLC每秒钟执行许多次,但由OpenPLC控制的制造过程的一个步骤可以持续数分钟或数小时。
第一个横档的输出只有在前三个数据位全部不是在“开”的状态,也就是说顺序过程没有启动的时候,才有可能执行。当其它的条件也满足时(IN.1.1为“ON”),顺序过程开始启动,这个横档将启动一个过程,(即OUT.3.1闭锁)同时,一个数据位(D.3.1)也同时作为该顺序的第一步已经启动的标志。
下一个横档只有当第一个步骤已经执行之后才可以执行输出状态。当第一步执行完毕,而且第二步的指令开始(IN.1.2为“ON”)的条件同时具备时,第二个横档通过对OUT.2.1的一个解锁指令终止了第一个横档的行动,同时启动了一个新的行动(OUT.2.2闭锁),同时启动了相关的状态标志位。
第三个横档与第二个类似,将动作状态从第二步延续到第三步。
第四个横档,也是最后一步,终止了第三步,并将最后一个标志位也解锁,这样,当条件具备时,第一步可以重复执行。
如果顺序的次序要求是一个变量,或者开始或结束的条件比较复杂,梯形图逻辑会变得非常麻烦和笨重,OpenPLC具有一些先进和高级的编程能力,可以用来对复杂的顺序控制进行编程。史博士后面有文章将讨论其中的两个这样的方法,一个是特殊顺序指令,一个是流程图组态方法。
图3.8 梯形图逻辑的三步顺序程序
1楼
0
0
回复
ONE-SHOTS(单触发)
图3.6给出了一个两个横档的程序,每次当输入位(IN.1.0)从OFF变到ON时,可以将横档1控制的位继续保留一个扫描周期的时间,而另一个横档则控制一个数据位,该位必须在第一个横档之后,(当然不是立即变化)。下面叙述其变化:
图3.6 单触发布尔逻辑结构
1、假定输入为关,(即IN.1.0为0),作为结果,OUT.3.0与D.2.0都将被关闭(0);
2、在IN.1.0变为1以后的第一个扫描周期,横档1的逻辑表达式将全部变为真,因此,输出位(OUT.3.0)将变成1,在第一个横档执行完后,OpenPLC将评估第2个横档,将D.2.0变为1, 在扫描周期的第三步,OpenPLC将会把与输出映射表OUT.3.0对应的执行器打开。
3、在IN.1.0变为1以后的第二个扫描周期,PLC将再评价第一个横档,由于D.2.0不再是0,逻辑表达式将为假,因此,输出映射位(OUT.3.0)将会被关掉。在扫描周期的最后,与OUT.3.0相连的执行器将被关掉,该执行器的打开时间刚好为一个扫描周期。
4、 单触发器只有在输入位关掉后再打开的时候,才会再工作。
大部分的PLC制造商承认上述单触发器的原理比较难以理解,因此设立了单触发器指令,OpenPLC也有。该指令的使用可参见OpenPLC相关手册。
闭锁和密封
用布尔逻辑编程可以将一个输出“封锁”,就象本章中早先提到的闭锁和解锁指令一样。图3.7示出了梯形逻辑图。它有下面两部分组成:
1. 一个两部分的AND逻辑表达式,如果表达式为真,可以将一个输出打开。
a) 逻辑表达式的第一部分是常假的,但如果IN.1.0为真,输出则打开;
b) AND表达式的第二部分则常真的,但如果IN.1.1关断,输出则关断;
2. 一个将输出与AND表达式的第一部分(常断)相或的分支。
图3.7闭锁梯形图结构
在图3.7中,如果输出的初始状态是ON的,那么,或表达式的上部将转到常假的状态,底部所检测到的输出将一直保持,只要常真的与元素(IN.1.1)保持为真。该电路与前面的闭锁与解锁一样,但有些程序员喜欢用这种电路,因为这种程序结构把逻辑和更改输出位可以在一个横档内,更容易进行故障诊断。
顺序器
闭锁可以用来控制一个在一定的时间内必须按照事先定好的顺序操作一个步骤的过程,数据位可以跟踪目前哪个步骤是激活的。图3.11给出了一个三步顺序的程序。请记住,OpenPLC每秒钟执行许多次,但由OpenPLC控制的制造过程的一个步骤可以持续数分钟或数小时。
第一个横档的输出只有在前三个数据位全部不是在“开”的状态,也就是说顺序过程没有启动的时候,才有可能执行。当其它的条件也满足时(IN.1.1为“ON”),顺序过程开始启动,这个横档将启动一个过程,(即OUT.3.1闭锁)同时,一个数据位(D.3.1)也同时作为该顺序的第一步已经启动的标志。
下一个横档只有当第一个步骤已经执行之后才可以执行输出状态。当第一步执行完毕,而且第二步的指令开始(IN.1.2为“ON”)的条件同时具备时,第二个横档通过对OUT.2.1的一个解锁指令终止了第一个横档的行动,同时启动了一个新的行动(OUT.2.2闭锁),同时启动了相关的状态标志位。
第三个横档与第二个类似,将动作状态从第二步延续到第三步。
第四个横档,也是最后一步,终止了第三步,并将最后一个标志位也解锁,这样,当条件具备时,第一步可以重复执行。
如果顺序的次序要求是一个变量,或者开始或结束的条件比较复杂,梯形图逻辑会变得非常麻烦和笨重,OpenPLC具有一些先进和高级的编程能力,可以用来对复杂的顺序控制进行编程。史博士后面有文章将讨论其中的两个这样的方法,一个是特殊顺序指令,一个是流程图组态方法。
图3.8 梯形图逻辑的三步顺序程序