用语句编写的代码也可以实现梯级逻辑或功能块的等同功能,最常见的语句是IF THEN结构语句。作为判断执行,IF所判断的对象常常是一个逻辑量,所以可能是一个布尔量标签,也可能是一个比较表达式,判断其逻辑结果是否成立,然后决定成立时执行什么样的动作,不成立时执行什么样的动作。请看如图19-2所示的这个例子。
图19-2 IF THEN例子
这里,传输带方向标签conveyor_direction和灯标签Light都是布尔量标签值,IF判断当conveyor_direction等于1,这也许是拟定的某个方向,即条件成立,赋值Light为0;当con-veyor_direction等于0,相反方向,即条件不成立,则赋值Light为1,灯被点亮,报告了此时的方向。单从逻辑结果来看,相当于梯形图的梯级逻辑如图19-3所示。
图19-3 等同的梯级逻辑
注意到,:=和[:=]都是赋值语句,但有所不同,:=所赋的值是保持型的数据;[:=]所赋的值是非保持型的数据,这使得例程中预扫描和后扫描的处理不同,非保持型的赋值在预扫描和后扫描时将被复位。SFC常常使用语句编程,它的步的后扫描就可能(如果设定)对非保持型的数据复位。上面这个语句编程,在步的后扫描执行复位操作时,会将[:=]所赋的值1复位。这正如同图19-3中的梯级逻辑非保持型位输出指令OTE也会被复位一样。图19-2所示的这段语句中,赋值为1的Light标签在本段语句扫描结束时会复位为0;赋值为0的Light标签仍然为0。所以,该段语句想要得到的结果是:一旦执行代码离开扫描,Light的灯总是熄灭的。
语句编程的赋值语句既可以对布尔量标签赋值布尔量,也可以对数据量标签赋值数据量,这相当于梯形图逻辑代码执行的位指令OTE和字指令MOV的综合运用,并可以利用非保持型数据的复位特性,让布尔量或数据量都被清零,在梯形图中数据量后扫描清零是不能做到的。
下面让我们来看一段关于速度参数处理的语句编程实例。首先令例程首次扫描时清除速度参数Speed_Reference0,可以编写如图19-4所示的语句。
图19-4 清零的语句
这等同于如图19-5所示的梯级逻辑。一个简单的例程首次扫描的梯级逻辑执行,将标签Speed_Reference0清除为0。
下面的语句将根据条件对速度参数SpeedReference0进行增数操作、减数操作或不改变数据的操作,如图19-6所示。当增数条件逻辑标签INCSPD0为1,标签Speed_Reference0加0.001;当减数条件逻辑标签DEC_SPD0为1,标签Speed_Reference0减0.001;当增数和减数条件均不成立时,标签Speed_Refer-ence0直接传送,不改变数据。
图19-5 等同的梯级逻辑
(www.xing528.com)
图19-6 语句将根据条件对速度参数Speed_Reference进行不同的操作
同样的,如果用梯级逻辑实现,如图19-7所示。当增数梯级条件成立,加法指令实现增数0.001的操作;当减数梯级条件成立,减法指令实现减数0.001的操作;当梯级条件是以上两者都不成立,则直接传送。梯形图的增数操作通常不会这样简单地提供梯级条件,因为一旦梯级条件成立,每当梯级被扫描一次,就会完成一次累加的动作。
图19-7 等同的梯级逻辑
我们再来看一段IF THEN语句编程实现的限幅,如图19-8所示。语句代码的执行将限定速度参数标签Speed_Reference0的数值范围在0~10之内,如果Speed_Reference0小于0,则赋值为0;如果Speed_Reference0大于10,则赋值为10。
图19-8 IF THEN语句编程实现的限幅
若将以上语句执行代码转为梯形图逻辑,则如图19-9所示。这正是我们在梯形图中最常见的限幅编程。
图19-9 等同的梯形图逻辑
综合以上语句编程,实例编写如图19-10所示。夹杂在语句中的成对的/*和*/,以及//是注释符号,被界定的字母是文字说明,在语句中呈绿色,这些跟ASCII码相似的文字是不会被扫描执行的,有时编程人员为了测试,需要屏蔽一些代码的执行,可以借助于注释符号来实现。我们知道,当一个项目文件下载到控制器中时,所有的注释文字是不会被下载到控制器中的,惟独语句编程中的注释文字是个例外,它会随着语句执行代码一起下载到控制器中,但这些注释也只能是字母文字,汉字显然不行。
语句编程最常用的是赋值语句和IF THEN条件判断语句,作为语句编程的一般性了解,其他的结构语句我们就不详细介绍了。
图19-10 语句编写的实例
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。