3.2 基本指令及编程
3.2.1 基本指令
编写应用程序时,使用频率最高的是基本指令。CP1H系列PLC有10条基本指令,初学者要从学习这些简单的指令入手,逐步了解其他各种指令的功能和使用方法。
1.读LD、读非LD NOT、与AND、与非AND NOT、或OR、或非OR NOT、输出OUT、输出非OUT NOT指令
上述基本指令,几乎所有的程序都必须使用。表3.2列出了这些常用的基本指令的格式/名称、梯形图符号、操作数的范围及含义、指令功能及执行指令对标志位的影响。
表3.2 常用的基本指令
图3.2使用了部分基本指令,图3.2(a)是梯形图,图3.2(b)是语句表。
图3.2 使用基本指令的例子
在分析梯形图程序时,常开和常闭触点的状态(ON/OFF)是由其对应的继电器的状态来确定的。例如,在图3.2中,若0.00号输入继电器为ON,则常开触点0.00为ON(触点闭合),否则为OFF;如果0.01号输入继电器为ON,则常闭触点0.01为OFF(触点断开),否则为ON。在以后分析程序时,上述原则不再重申。
在图3.2中,常开触点100.00与0.00并联,是逻辑“或”的关系。两者只要有一个为ON,则并联结果为ON。常闭触点0.01与左面的并联部分相串联,两者是逻辑“与”的关系。常闭触点0.01与并联部分的结果都为ON时串联结果才为ON,此结果输出到继电器100.00使之为ON,否则100.00为OFF。常闭触点0.02与常闭触点0.03中,只要有一个为ON、且常开触点100.00也为ON时,输出继电器100.01为OFF,否则100.01为ON。显然,OUT NOT指令是把前面结算的结果取反再送到继电器100.01中。
2.块与AND LD、块或OR LD指令
表3.3是AND LD和OR LD指令的格式/名称、梯形图符号、操作数的范围及含义、指令功能及执行指令对标志位的影响。
表3.3 AND LD和OR LD指令
(1)块与指令AND LD
图3.3中有3个并联的触点组相串联。使用AND LD指令时,语句表有如图两种不同的编写方法。方法2是把AND LD指令集中在一起编写,但方法2中AND LD指令之前的触点组个数应小于等于8,而方法1对此没有限制。
图3.3 使用AND LD的例子
图3.4 使用OR LD指令的示例
(2)块或指令OR LD
图3.4是3个串联的触点组相并联。使用OR LD指令时,语句表有如图两种不同的编写方法。同样,在方法2中OR LD指令之前的触点组个数应小于等于8,而方法1对此没有限制。
3.2.2 基本编程规则和编程方法
图3.5 双线圈输出的例子
掌握了PLC 的基本编程指令之后,就可以根据控制要求编写简单的应用程序了。为了提高编程质量和编程效率,必须首先了解编写梯形图程序的基本编程规则和基本编程方法。
1.基本编程规则
①梯形图中的每一行都是从左侧母线开始画起,线圈或指令画在最右边,线圈或指令右边只能画右母线(OMRON PLC梯形图的右母线可以省略)。
②线圈或指令不能直接与左侧母线连接(除极少数没有执行条件的指令,如END等)。如果必要,可以通过特殊辅助继电器P_On(常ON)的触点与左侧母线连接。
③用OUT指令输出时,同一编号的继电器线圈在同一程序中使用两次以上,称为双线圈输出。双线圈输出容易引起误动作或逻辑混乱,一般要避免出现这种情况。
例如,图3.5(a)中,设0.00为ON、0.05为OFF,由于PLC是按扫描方式执行程序的,执行第一行时100.00为ON,而执行第二行时100.00为OFF。在I/O刷新阶段100.00的输出状态只能是OFF。显然前面的输出无效,最后一次输出才是有效的。
又如图3.5(b)中,设0.00为ON、0.01为OFF。在执行第一行程序后100.00为ON,执行第二行后100.01为ON,执行第三行后100.00为OFF。因此在I/O刷新阶段,100.01为ON,100.00为OFF。但从第二行看,100.00和100.01的状态应该一致。这就是双线圈输出造成的逻辑混乱。
④梯形图必须遵循从左到右、从上到下的顺序编写,不允许在两行之间垂直连接触点。如果不符合上述顺序,就要进行转换。如图3.6(a)若转换成图3.6(b)就符合顺序要求了。
图3.6 梯形图的顺序转换
⑤程序结束时一定要安排END指令,否则程序不被执行。本书通常省略END指令,以节省空间。
2.基本编程方法
①两个或两个以上的线圈或指令可以并联输出,如图3.7所示。
②触点组与单个触点相并联时,应将单个触点放在下面。如图3.8(a)变成图3.8(b)后,从语句表看出节省了一个OR LD语句。
图3.7 两个线圈并联输出例子
图3.8 编程方法示例
③并联触点组与几个触点相串联时,应将并联触点组放在左边。例如,图3.9(a)变成图3.9(b)后,从语句表看出节省了一个AND LD语句。
图3.9 编程方法示例
④如果一条指令只需在PLC加电之初执行一次,可以用AR区的P_First_Cycle(A200.11)作为其执行条件。由于P_First_Cycle只在PLC加电后的第一个扫描周期处于ON状态,因此,P_First_Cycle为执行条件的指令只在加电后的第一个扫描周期被执行。这种用法常出现在PLC的初始化程序段上。
图3.10中的KEEP(保持)指令在后续的3.3.1节中将要讲到。在PLC加电后的第一个扫描周期,W10.00被置为ON,W10.00又作为KEEP指令的置位输入条件,从而使100.00被置为ON。此后,如果复位条件0.01 ON使100.00复位,则在PLC本次加电期间,100.00不会再被置位。
图3.10 使用A200.11的例子
⑤有些梯形图难以用AND LD、OR LD等基本逻辑指令编写语句表,这时可重新安排梯形图的结构,如图3.11(a)若改画成图3.11(b)就可以使用OR LD指令编程了。
⑥当某梯级有两个分支时,若其中一条分支从分支点到输出线圈之间无触点,该分支应放在上方,这样可以使语句表的语句更少(详见3.4.2节)。
⑦尽量使用那些操作数少、执行时间短的指令编程,以缩短扫描周期,从而提高I/O响应速度。
图3.11 编程方法示例