PLC编程实用指南(第2版)
上QQ阅读APP看书,第一时间看更新

1.6 PLC典型程序

关键词:控制输出程序、起停程序、状态转换程序、定时控制程序、动作控制程序、步进程序、转换程序、数据存储程序、联锁互锁程序、求公因数程序

本节将介绍一些典型程序实例。为以后学习PLC编程积累一些实例知识。

1.6.1 控制输出程序

可以利用基本逻辑处理指令,用于控制输出。这样的输出主要有:

1.等效控制输出

输出仅取决于控制输入现状态。这是用开关控制电器工作的特点,也是组合逻辑的特征。图1-137所示的就是这类输出。它把开关接输入点X000,负载用灯接输出点Y000,然后运行图示程序。

978-7-111-39745-8-Chapter02-191.jpg

图1-137 等效控制输出实例

从图记载的各周期I/O状态知,在周期0时,由于开关已合上,输入点X000的值为1。经运行程序,输出点Y000也变为1。进而输出点合上,输出电路通,灯亮。在周期n时,开关断开,则输入点X000的值为0,输出点Y000也变为0,输出点断开,输出电路断,灯灭。可知,这里灯的工作唯一取决于开关的现状态。

2.长效控制输出

控制输出不完全取决于输入的现状态,还与输入的历史有关。输入对输出有长效作用。这是继电器控制电器工作的特点,也是时序逻辑的特征。如图1-138所示,这里用2个按钮控制接触器,再用接触器控制一盏灯。

从图知,SB1合,X000变为1,运行程序后Y000也变为1,进而使继电器KM得电,其常开触点合,使灯亮。之后,即使SB1断开,X000变为0,但由于Y000的触点与X00是并联的,故仍可保持为1,仍可使继电器KM得电。所以,灯保持亮。可知,这里的开始时SB1合是可产生长效输出。

类似SB2合,X001变为1,运行程序后使Y000也变为0,进而使继电器KM失电,其常开触点断,使灯灭。之后,这个作用也是长效的。

在继电器电路中,称这种电路为起、保、停电路。

3.短效控制输出

它的控制输出也不完全取决于输入的现状态。其输入对输出仅有短暂的作用,故称短效输出。如图1-139梯形图程序,用开关控制一盏灯。但中间插入辅助继电器M0。

978-7-111-39745-8-Chapter02-192.jpg

图1-138 长效控制输出实例

978-7-111-39745-8-Chapter02-193.jpg

图1-139 短效控制输出实例

在稳定状态,Y000永远为0。但在过渡状态下,它可为1个周期。像这样仅为1个周期的信号也称脉冲信号,或微分输出。用其去控制灯的工作当然没有意义。但这在内部逻辑处理时,它是很有用的。

1.6.2 起停程序

任何设备,总有使其工作(起动),或使其停止工作(停止)的问题。常见的除了上述双按钮起、保、停电路外,还有以下一些程序:

1.单按钮即时起、停程序

图1-140为“单按钮起、停”梯形图程序,操作数为符号地址。

978-7-111-39745-8-Chapter02-194.jpg

图1-140 单按钮起、停电路

从图1-140a知,当“按钮按”OFF时,“按钮按脉冲”及“控制脉冲生成”均OFF。而“按钮按”ON时,则“按钮按脉冲”、“控制脉冲生成”ON。但在下一个扫描周期时,因“控制脉冲生成”的常闭触点,将使“按钮按脉冲”OFF。即当“按钮按”ON时,“按钮按脉冲”仅ON一个扫描周期。脉冲信号也因此得名。

当无脉冲信号,其“工作”的状态不会改变。因为这里的“工作”状态是“双稳”的,其为ON或OFF均成立。不妨看一下它的逻辑关系就清楚了。但一旦有脉冲信号作用,则其状态将改变。若开始为OFF将改变为ON。反之,将改变为OFF。也正因此,即可用这里的“起停”对这里的“工作”作“单按钮起停”控制。

如所用的PLC有生成脉冲的指令,则可直接用它生成脉冲。图1-140b中的上升箭头及图1-140c、d中的P,就是相关的直接产生脉冲的操作。当然也可如图1-140a,先由“按钮按”生成“按钮按脉冲”,然后如图1-140a那样处理有关指令。

图1-140b的短斜线及图1-140c的NOT指令为“取反”逻辑运算。因为这里脉冲是直接生成的,故必须这么处理。而图1-140d用了SR指令。三菱PLC也可用ALTP指令实现单按钮起停。

图1-140e、f分别为和利时与ABPLC程序。它不好用中文命名。其符号含义可对照其他图理解。

除了图1-140所示程序,图1-141所示程序也具有同样功能。只是这里用的是触点先并后串。脉冲信号用微分指令生成。这里图1-141a示的是“工作”未启动的情况。这时,如加入一次作用信号,将使“工作”从OFF变为ON、进入图1-141b状态。在图1-141b状态下,再加入一次作用信号,将使“工作”从ON变为OFF、又回到图1-141a状态。

978-7-111-39745-8-Chapter02-195.jpg

图1-141 单按钮起、停工作过程

图1-142所示也是用一次作用信号去起、停“工作”的梯形图程序。它用的是KEEP指令。图1-142a是未工作的情况。这时,如加入一次作用信号,将使原OFF的工作位变为ON、进入图1-142b状态。在图1-142b,再加入一次作用信号,将使已ON的工作位变为OFF、又回到图1-142a状态。而一次作用信号则是也是由“起、保、停”位通过微分(DI-FU)指令产生的。

978-7-111-39745-8-Chapter02-196.jpg

图1-142 单按钮起、保、停逻辑又一例

图1-143所示也是用一次作用信号去起、停“工作”的梯形图。它的起、停分别用SET与RSET指令。图1-143a是SET指令在前执行的逻辑。图1-143b是RESET指令在前执行的逻辑。效果是相同的。

978-7-111-39745-8-Chapter02-197.jpg

图1-143 单按钮起、保、停逻辑再例

读者也许注意到,在图1-143所示中。分别加有操作数为“10.09”位的上微分(DIFU,对图1-143a)、下微分(DIFD),对图1-143b指令,且还用10.09位的常闭触点串入RSET(对图1-143a)、SET(对图1-143b)的输入端。这么做是必不可少的。如无此,或指令的顺序做不适当的调整,都将无法实现这个功能。

图1-144所示是图1-143所示程序的续编。它的起、停也是分别用SET与RSET指令。但添加中间变量“工作1”。它在最后一个梯级时由“工作”赋值。未到执行这梯级指令时,即时“工作”状态变化,但“工作1”不变化。这样,尽管图1-144a、b指令顺序不同,但效果是相同的。

类似还有很多实现方法,如也可用计数器指令处理等。同一问题多有很多解决方案。这不仅将有助于拓宽编程思路,还可进一步熟悉与利用好PLC资源。

978-7-111-39745-8-Chapter02-198.jpg

图1-144 单按钮起、保、停逻辑再例续

2.单按钮短按起、长按(超过1s)停程序

上述单按钮起、保、停梯形图程序,是起、是停,容易“糊涂”。其实,完全可使用按钮按下不同的时间,去区分是起、还是停。很多小仪器甚至手机也多是这么处理的。图1-145所示为单按钮短按起、长按(超过1s)停程序。

978-7-111-39745-8-Chapter02-199.jpg

图1-145 单按钮短按起、长按(超过1s)停程序

这里用了定时器TIM 5,只有按钮按下超过1s,它将起动工作。

图1-145c、d为和利时PLC类似程序。读者可对照图1-145a、b理解。

其他PLC也很容易编写类似程序。它与两按钮起停程序所差的只是这里使用了定时指令或功能块。

3.单按钮长按(超过1s)起、短按停程序

图1-146所示为单按钮长按(超过1s)起、短按停程序。

978-7-111-39745-8-Chapter02-200.jpg

图1-146 单按钮长按(超过1s)起、短按停程序

该图为长按(超过1s)起动、短按停车程序。这里用了定时器TIM 6,只有按钮按下超过1s,它的常开触点才接通,才能把未工作的输出10.08起动工作。如果按下时间少于1s,10.08将停止工作。

用单按钮起、停设备,可节省PLC的输入点与按钮,还可简化操作面板的布置,而实现它的PLC程序也不复杂(如单纯用继电器实现这个控制,则较复杂),故这是目前较常用。

提示:别小看这个长短信号。历史上有线电报用的莫尔斯码就是这样长短信号的组合。习惯上把短信号称为“嘀”,把长信号称为“嗒”。由若干个“嘀-嗒”组成“电码”,若干电码组成“电文”。用此,即可完成电报的发送及接收,进而实现通信双方的信息传递。

4.多点起、停程序

图1-147所示为“多点起停”梯形图程序,操作数也是用符号地址。

从图知,初始状态(所有输入、输出均未工作,下同)时,从梯形图逻辑知,“工作”为OFF。这时,当“起动1“或“起动2“ON,而“停止1”与“停止2”又同为OFF时,则“工作“将ON。一旦“工作“ON后,即使“起动1“或“起动2“OFF,由于“工作“触点的“自保持“(它与“起动1“、“起动2“并联)作用,“工作”仍将保持ON。

而“工作”ON后,如“起动1”与“起动2”同为OFF,而“停止1”或“停止2”ON,则“工作”将OFF。

由于“起动1”、“停止1”及“起动2”、“停止2”可布置在不同的位置,因而可用它在不同的地点对“工作“作起停控制。

其实,上述单按钮起停程序也可改编成多点起、停的程序。这时,只要给各个点都提供“按钮按”信号,并能使各个“按钮按”信号ON成能生成脉冲信号即可。

5.星-三角法起动电动机的程序

图1-148所示为用于用“星三角法”起动电动机的程序,操作数也是用符号地址。

978-7-111-39745-8-Chapter02-201.jpg

图1-147 多点起、停程序

978-7-111-39745-8-Chapter02-202.jpg

图1-148 星-三角法起动电动机的程序

从图知,用它实现,在电动机起动时,先使电动机按星形联结工作,后(经延时)改为按三角形联结工作。停止电动机,则正常进行。

如图所示,“起动”ON,“工作X”将ON,按星形接线起动。同时,定时器TIM 001(图1-148a,而图1-148b为T101、图1-148c为T1”)开始计时(也可用速度继电器检测电动机转速,转速大到一定值,其触点ON,代替这里的延时继电器触点ON)。计时到,它的常闭触点使“工作X”OFF,切断星形联结;它的常开触点使“工作Y”ON,接通三角形联结。这样,即实现了“星-三角法”起动电动机。这样起动,可减少电动机起动电流,是很简便的电动机起动方法。

1.6.3 状态转换程序

工业控制对象往往处于多种状态下工作。为了适应各个工况的要求,在各状态间,常要进行转换。常见的有两种转换方法:

1.直接转换

图1-149所示为“直接转换”梯形图程序,操作数也是用符号地址。

978-7-111-39745-8-Chapter02-203.jpg

图1-149 直接转换梯形图程序

从图知,任一控制信号(“控制1、2、3、4”)ON,都将使原状态(“状态1、2、3、4”)OFF,而进入新状态(ON)。可实现直接转换。

要退出所有状态,可使“控制0”ON。

2.先退出原状态,后转换

图1-150所示为“先退出原状态,后转换”梯形图程序,操作数也是用符号地址。

978-7-111-39745-8-Chapter02-204.jpg

图1-150 先退出后转换程序

从图1-150可知,如原来处于某一状态,任一控制信号(“控制1、2、3、4”)都无法退出所处状态。只有先使“控制0”ON,用它的常闭触点把原状态OFF。才可能用新的控制信号,去使新的状态ON。

为了确保状态转换安全,有的系统必须这么做。

1.6.4 定时控制程序

1.定时器控制

图1-151所示为“定时器控制的定时控制”梯形图程序,操作数也是用符号地址。

978-7-111-39745-8-Chapter02-205.jpg

图1-151 定时控制程序1

从图知,电路起动后,“控制开始”ON。先是定时器TIM 000(图1-151a,而图1-151b为T101、图1-151c为T0)开始计时。计时到,其常开触点ON,进而定时器TIM 001(图1-151a,而图1-151b为T102、图1-151c为T1)开始计时。此计时到,其常开触点ON,进而定时器TIM 002(图1-151a,而图1-151b为T103、图1-151c为T2)开始计时。此计时也到,其常开触点ON,进而定时器TIM 003(图1-151a,而图1-151b为T104、图1-151c为T4)开始计时等。

随着这一系列定时器相继工作,将分出很多时间段。即可按需要产生相应的动作。如本例:“动作0”出现时间段1(从“控制开始”ON,直至TIM000、T101或T0定时到)。“动作1”出现时间段1(从TIM 001、T101或T1定时开始,直至TIM 001定时到)等。

这里“动作”也可不这样对应,有的动作还可在多个时间段出现,这些完全可依实际需要决定。这里的实质是各个动作都是按时间的推进,逐步出现的。是由时间信号控制的。

2.计数器控制

时间控制还可用计数器加时间脉冲信号实现。图1-152所示为

978-7-111-39745-8-Chapter02-206.jpg

图1-152 定时控制程序2

“计数器控制的定时控制”梯形图程序,操作数也是用符号地址。

从图知,“开始”ON后,“工作”被置位(执行SET指令)。可逆计数器CNTR 020每隔0.1s加1。“工作”ON,将执行计数器CTR的内容与设定值(此处为即时数599,BCD码)比较。当CTR的内容小于设定值,则比较标志位“P_LT”常开触点ON,进而使“时间段1”ON。这将产生与“时间段1”ON对应的动作。当CTR的内容不小于设定值,则比较标志位“P_LT”常开触点OFF,进而使“时间段1”OFF。而“P_LT”常闭触点ON,则使“时间段2”ON。这将产生与“时间段2”ON对应的动作。

这里只有两个“时间段”。其实,可增加使用比较指令次数,作多个比较,以得到多个时间段。这样,就完全可依实际的时间段的不同,产生不同的动作。这里的实质也是,各个动作都是按时间的推进,逐步出现的。也是由时间信号控制的。

1.6.5 动作控制程序

动作控制是很常见的控制逻辑。只要用这里的“动作”去控制对应输出点,再用对应的输入点去控制这里的“动作完成”,就可实现如机床刀架运动那样部件的自动控制。

还要指出的是,动作控制也可插入定时控制。如用某“动作”去控制某输出点的同时,还去起动一个定时器,令其计时,再用该定时器计时到信号作为该动作完成信号,则这一动作就是定时控制。这种逻辑也是用得很多的。

1.半自动工作

图1-153所示为半自动工作的“动作完成控制”梯形图程序,操作数也是用符号地址。

978-7-111-39745-8-Chapter02-207.jpg

图1-153 动作半自动控制程序

从图知,“起动”ON后,“动作0”ON,并自保持。这里把“动作1”、“动作2”、“动作3”的常闭触点串入,目的是一旦进入工作,而又未完成所有动作,则不允许“动作0”再被起动。

“动作0”ON后,则执行与“动作0”信号对应的动作,直到这个动作完成。当PLC检测到“动作0完成”信号,即“动作0完成”ON,则“动作1”ON,并自保持。这将起动与其相应的动作。另外,“动作1”ON,还使“动作0”OFF,则与“动作0”有关的动作将停止。

动作1完成,也将起动动作2……直到动作3完成,则程序回到原状态。

由以上分析可知,此程序实现的动作转换,是半自动控制。

2.自动工作

图1-154所示为自动工作的“动作完成控制”梯形图程序,操作数也是用符号地址。

978-7-111-39745-8-Chapter02-208.jpg

图1-154 动作完成控制程序

从图知,这里多了“自动起动”、“自动停止”及有关信号。“自动起动”ON,将使“自动工作”ON,并自保持。如“自动工作”ON,且“自动停止”ON,将使“自动停止”ON,并自保持。

当未起动“自动工作“时,此程序与”半自动“程序是完成相同的。只是这里用了“AB-CD”,而图1-153程序用的是“0123”。

当起动了“自动工作”时,“动作D完成”ON,将起动“动作A”,再由“动作A”的常闭触点去使“动作D”OFF。起动“动作A”,意味着新的循环开始。

这时,若要停止继续工作,可使“自动停止”ON。“自动停止”ON,将使“自动停止”ON,并自保持。若如此,则在“动作D完成”ON时,将使“自动工作”OFF。这意味着,这时“动作A”不能再起动。而“自动工作”OFF也使“自动停止”失去自保持,程序将回到原状态。

可知,此程序进入“自动工作”后,动作是周而复始地自动执行着。而要退出“自动工作”,则应使“自动停止”ON。而且,要到所有动作完成后,即动作D完成后,才能完全退出“自动工作”,并停止所有动作。

这种动作控制程序使用步进指令实现也是很方便的。这将在本书第2章分散控制时再作进一步介绍。

1.6.6 步进程序

定时控制简单,而又能完成较复杂的控制。但它没有反馈,是开环控制。前一时间段动作完成与否,次一时间段的控制命令照样发出。工作可靠要求很高的场合不好用它。

动作控制是反馈控制,前一个动作未完成,次一个动作不会开始。较安全、可靠。但用它去实现较复杂的控制比较难。

这里引入的步进程序,靠步的推进实现控制,而步的推进则用“步动作完成”信号激发。这种控制可用步控制输出,能实现复杂动作。同时,它又有“步动作完成”信号反馈,是闭环控制,较为可靠。

实现步进控制的方法很多,这里仅介绍两种较简单的方法。

1.脉冲步进

图1-155所示为“脉冲步进”梯形图程序,操作数也是用符号地址。它是靠基本逻辑指令实现步进控制。

978-7-111-39745-8-Chapter02-209.jpg

图1-155 脉冲步进程序

从图1-155可知,此程序主要由脉冲生成及步进两个部分组成。由于使用的都是基本逻辑处理指令,并使用符号地址。所以三种PLC的程序基本相同。

在脉冲生成部分可知,当“步进开始”或“步”及相应“步动作完成”信号出现,都将产生“步进脉冲”信号。只是图1-155b用了脉冲处理指令(P)。

在步进部分可知,这里暂设了四个步:“步11”、“步22”、“步33”、“步44”。如需要可增加。“步11”为初始步。当所有步都未激活(均为OFF),则“退出步控制”为ON。

此时,如“步进开始”ON,则将有“步进脉冲”ON一个扫描周期。这将使“步11”激活,处于ON状态,进入工作。而其他步仍为OFF。

当步11动作完成后,“步11动作完成”(图1-155c为“动1完成”,三菱FX PLC的变量名只能是4个字符,下类似)ON,将再有“步进脉冲”ON一个扫描周期。这将使“步22”激活,处于ON状态,进入工作。而使“步11”OFF,退出工作。其他步仍为OFF。

这里每一步的控制逻辑与“单按钮起停”逻辑形式不同,但本质是相同的。“各个步”也是“双稳”,无“步进脉冲”信号,它ON成立,OFF也成立。一旦有脉冲信号,则转换成相反的状态。

随着步动作完成而产生的脉冲信号,步将逐一推进,直到最后一步。最后一步完成时,如“自动控制”ON,则又起动第一步;如“自动控制”OFF,则推出步进控制,程序回到原状态。

提示:这里的步进程序是按倒序排列的,控制“步44”,反而排在“步11”之前。可检查,如不是这么安排,按步推进的目的是达不到的。这也说明PLC指令的安排顺序是有讲究的。

2.移位步进

图1-156所示为“移位步进”梯形图程序,操作数也是用符号地址。三种PLC都是用左移位指令实现。图1-156a用SFT,图1-156b用SHL-W,图1-156c用SFTL。

978-7-111-39745-8-Chapter02-210.jpg

图1-156 移位步进程序

从图1-156可知,此程序由四个梯级组成。

对图1-156a,有4个梯级。

第一梯级,用以产生“移位脉冲”信号。

第二梯级,在程序初始化及步进完成时(这里设了4步,如需要,可增多),把0传给“移位通道”。P-First-Cycle为特殊继电器,在PLC运行时ON一个扫描周期。

第三梯级,用以产生“移位通道等零”信号。在“移位通道”字的内容为零时,“移位通道等零”为1。

第四梯级,用以实现移位步进。这里的复位信号为“p_off”(常OFF),故只要“移位脉冲”从0转到1,则把“移位通道等零”的状态(0或1)移入“移位通道”的第0位,而原“移位通道”的第0位状态,移给“移位通道”的第1位……依次移位,直到“移位通道”的第15位溢出。

它与第三梯级配合将是,当“移位通道”为0时,“移位脉冲”从0转到1,向“移位通道”移入1;而当“移位通道”移入1后,移入0;直到复位。

这里,只要把“移位通道”0位对应于“步1”,1位对应于“步2”……则这个移位过程,也就是步进过程。

对图1-156b,也有4个梯级。

第一梯级,也用以产生“移位脉冲”信号。但它由指令P产生。

第二梯级,在程序初始化及步进完成时(这里设了4步,如需要,可增多),把0传给VW0,即“移位通道”。这里,SM0.1为特殊继电器,在PLC运行时ON一个扫描周期。

第三梯级,用以实现移位步进。每有一个“移位脉冲”,则把0移入“移位通道”,即VW0中的VB1的第0位,而原VB1的第0位状态,移给VB1的第1位……,而原VB1的第7位状态,移给VW0中的VB0的第0位,原VB0的第0位状态,移给VB0的第1位……依次移位,直到VB0的第7位溢出。

第四梯级,用以产生第一步工作信号。在“移位通道”字的内容为零时,使VW0,即“移位通道”为1,产生第一步输出。

这里,只要把VB1的0位对应于“步1”,1位对应于“步2”……,VB0的0位对应于“步8”,1位对应于“步9”……则这个移位过程,也就是步进过程。

对图1-156c,有5个梯级。

第一梯级,也用以产生“移位脉冲”信号。方法同图a。

第二梯级,在程序初始化及步进完成时(这里设了4步,如需要,可增多),把0传给K1M11,即移位用的M11、M12、M13及M14组成的各个位。这里,M8002为PLC运行时ON一个扫描周期。

第三、四梯级,用以产生第一步工作信号。当M11~M14间的内容为0时,将使“移位值”置1。为使“开始”产生的“移位脉冲”时,把为1的“移位值”,移入M11,以产生第一步输出。

第五梯级,用以实现移位步进。每有一个“移位脉冲”,则把“移位值”移入M11,而M11位状态,移给M12……而原M14状态溢出。

这里,只要把M11对应于“步1”,M12位对应于“步2”……则这个移位过程,也就是步进过程。

图中还有“自动工作”控制。它ON时,将实现自动工作,即完成最后一步时,会产生“移位脉冲”,起动第一步。

提示:西门子PLC数据存储器V,可按位使用。故图1-156b用VW0作“移位通道”。只是,它的最低位是V1.0,而不是V0.0,最高位是V0.7,而不是V1.7。

1.6.7 转换程序

1.输出转换程序

用以上介绍的“状态”、“时间段”、“动作”或“步”去控制输出点,以产生控制的实际物理输出。有一对一转换(见图1-157),一对多、多对一(见图1-158)等转换。

978-7-111-39745-8-Chapter02-211.jpg

图1-157 一对一转换程序

978-7-111-39745-8-Chapter02-212.jpg

图1-158 一对多、多对一转换程序

这里,为了安全,图1-158a用“IL”及“ILC”互锁指令,图1-158b用MCRA、MCRD等主控指令,图1-158c用MC、MCR主控指令,增加急停控制。一旦紧急须停止输出,可使“急停”ON,则它的常闭触点OFF,这将使由这些配对指令之间的输出全部OFF。

2.输入转换程序

用输入点去控制以上介绍的“控制”、“动作完成”,以发挥输入点对系统的实际控制作用。也有一对一转换,一对多、多对一等转换。与输出转换不同的只是把图1-157及图1-158的“状态”改为“输入”,“动作”改为“控制”或“动作完成”。

一经以上转换,即可按要求,用实际输入进行控制。

3.转换参数选择程序

如以上介绍的“状态”、“时间段”、“动作”或“步”,若要选用工作参数,如温度、压力、时间等物理量的对应值,即可用此电路把它们与对应的量关联。这种选择电路也叫“配方”选择,以使控制系统能适合不同工艺参数的要求。

4.转换选择程序的程序

用此程序,把上述选择程序根据相应的条件再作选择,以实现多品种、多工艺、多参数的控制。

实现这种选择的选择有两个办法:

用子程序(见图1-159),不同的子程序调用作不同的选择。

用程序跳转,靠不同的程序跳转作不同的选择。

978-7-111-39745-8-Chapter02-213.jpg

图1-159 不同子程序调用

1.6.8 数据存储程序

数据存储程序类型也较多,以下介绍为定时定地址存储程序。图1-160所示为它的梯形图程序,操作数也是用符号地址。

图1-160a,总是将“分”特殊继电器(如CPM2A为AR18的高字节的内容)与0比较。如相等,即整点,则相等标志(L-EQ)ON。经微分处理,产生“时间到脉冲”信号。这时,把当时的“小时值”(如CPM2A为AR19的低字节的内容),如13,则把13赋值给“指针”,进而再把“采集数据”赋值给“指针”指向的DM013中。

图1-160b,也总是将“分”特殊继电器(如FX2N为D8014的内容)与0比较。如相等,即整点,则相等标志(这里为M1)ON。经微分处理,产生脉冲信号,把当时的“小时值”(如FX2N为D8015的内容),如13,则把13赋值给变址器V0,进而再把“采集数据”赋值给D(0+变址器的内容),即D13中。

978-7-111-39745-8-Chapter02-214.jpg

图1-160 定时定地址存储程序

图1-160c,S7-200的程序。它没有用于反映实时时钟的特殊继电器。它的实时时间得用相应指令读取。该程序用READ-RTC指令读(写是用SET-RTC)实时时钟。执行该指令,把实时的年、月、日、时、分、秒及星期几存于从数表T开始到T+7的相应字节(星期几存于T+7,T+6恒0)中。对该程序,则存于VB100~VB107中。接着,还要提取存储区开始的字节(VB1000)地址指针。它也总是将“分”(VB104的内容)与0比较。如相等,即整点,经微分处理(执行指令P),把当时的“小时值”,即VB103内容转换为字,再转换为十六进制(它的实时时钟是BCD码),再乘2(存储以字为单位、占2个字节),再转换为双字。,如VB 103的值为13,则VD4为26。然后把VD4与VB1000的地址的指针相加,并赋值给VD8。最后把“采集数据”赋值给“指针”指向的VD8指针指向的VW,即VW1026中。显然,图1-160c的程序稍麻烦些。

可知,这个程序的功能是,每天整点时,把采集数据存入DM0000~DM0023中,或VW1000~VW1023,或D0~D23中,即定时、定地址存储。

1.6.9 联锁、互锁程序

联锁、互锁也是一种输出控制,是生产现场常见逻辑关系,用得很多。

1.联锁

以甲“工作”作为乙“工作”的前提条件,称甲对乙的联锁。实现的办法是用甲处工作状态作为乙“工作”的起动或工作条件。如图1-161所示,其逻辑关系可保证,只有甲工作(该图为动作3)后,才可能产生动作4(乙工作)。即乙被甲所联锁。

978-7-111-39745-8-Chapter02-215.jpg

图1-161 联锁程序

2.互锁

互以对方的不工作作为自身工作的前提条件。实现的办法是,以对方的不工作作为自身的起动条件。如图1-162所示,动作3与动作4不能同时出现,只有一个动作停止后,另一个动作才能产生。

978-7-111-39745-8-Chapter02-216.jpg

图1-162 互锁程序

1.6.10 求公因数程序

图1-163所示为本书绪论中提到求实现欧几里德算法的子程序。

它是实现欧几里德算法中,在花括弧内的算法。对图1-163a到了余数ZZ(DM7、VW8、D7或remainder)为0时,即EQ或pEQ ON时,则输出公因数。否则,一直进行相应运算。这里XX,YY为形式参数。调子程序前用X,Y对其赋值。

提示:DIV指令为整除运算指令。如图1-163a,其商存于DM6中,而余数存于DM7中。图1-163b,其商存于VW6中,而余数存于VW8中。图1-163c,其商存于D6中,而余数存于D7中。故判断DM7或VW8或D7是否为0,即可知道YY能否XX整除。图1-163d节1为求“模”运算。目的是得到余数。节2是判断得到的余数是否为0。节3、4是如果余数为0,输出结果(Common Factor),并返回主程序。节5如果余数(remainder)不为0,变换求“模”运算数据,为下一次被调用的新计算作准备。

图1-164为实现欧几里德算法的主程序。

它是实现欧几里德算法中,花括弧外的算法。AA为求解起动信号,一旦它ON,将使pAAON一个扫描周期,并用它去起动bAA或call_calculate,进而调上述子程序。直到EQ或图1-164d的pEQ ON(即zz=0),并通过pEQ使bAA或call_calculate OFF,则退出子程序调用。图1-164d的pEQ不是微分输出,所以,图1-164d第1节增加了它的复位操作,即call_calculate

978-7-111-39745-8-Chapter02-217.jpg

图1-163 求两个整数的公因数子程序

978-7-111-39745-8-Chapter02-218.jpg

图1-164 求两个整数的公因数主程序

OFF后,如pEQ ON,自身将复位。这也为新的计算作准备。

提示:图1-164程序用了微分指令及bAA或call_calculate的自保持功能,目的是确保在pEQ OFF,即yy未能被xx整除时,子程序一直在调用。而到了EQ ON,即yy能被xx整除时,又可使bAA OFF,子程序停止调用。在多周期完成运算的情况下,这么处理是很方便的。

显然,在实现上述算法时,就有指令的选用及资源的利用两个问题。