导读
本章节主要介绍西门子公司S7-1200系列可编程序控制器(PLC)的基本结构与应用特点,对它的编程环境及应用进行详细的讲解,结合实例介绍典型指令编程方法,并介绍PLC应用设计中应注意的主要问题。
3. 计数器指令
(1)计数器的数据类型S7-1200的计数器属于函数块,调用时需要生成背景数据块。单击指令助记符下面的问号,用下拉式列表选择某种整数数据类型。
计数器指令用于对RLO正跳沿计数。S7-1200PLC的计数器指令有加计数器CTU、减计数器CTD、可逆(加减)计数器CTUD和高速计数器CIRL_HSC。在程序段中插入定时器操作时,将创建一个保存操作数据的背景数据块,如图2-42所示,可创建自己的“计数器名称”来命名计数器数据块,还可以描述该计数器在过程中的用途。
每个计数器都使用数据块中存储的结构来保存计数器数据。用户在编辑器中放CU和CD分别是加计数输入和减计数输入,在CU或CD信号的上升沿,当前计数器值CV被加一或减一。PV为预设计数值,CV为当前计数器值,R为复位输入,Q为布尔输出。
将指令列表里“Counter”文件夹中的CTU指令拖放到工作区后,点击方框中CTU下面的3个问号(见图2-43),再点击问号右边出现的按钮,用下拉式列表选择PV和CV的数据类型。
PV为预置的计数值,CV为实际的计数值,它们可以使用的数据类型见图2-43右 图。各变量均可以使用Ⅰ(仅用于输入变量)、Q、M、D和L存储区。
(2)加计数器
当接在R输入端的I1.1为“0”状态,在CU信号的上升沿,CV 加1,直到达到指定的数据类型的上限值时,CV的值不再增加。
CV大于等于PV时,输出Q为“1”状态,反之为“0”状态。第一次执行指令时,CV被清零。各类计数器的复位输入R为“1”状态时,计数器被复位,输出Q变为“0”状态,CV被清零。加计数器指令及时序图如图2-44所示。
(3)减计数器
如果减计数输入CD(Count Down)的信号状态从“0”变为“1”(上升沿),并且计数器的值大于零,则输出CV(当前计数值)的当前计数值减“1”。首次执行该操作时,输出CV的当前计数值设置为“0”。每检测到一个上升沿,计数值就会递减,且到达到指定数据类型的下限值。达到下限值时,输入CD的信号状态就不再影响该操作。其还可通过输出Q查询计数器状态。如果当前计数值小于或等于“0”,则输出Q的信号状态设置为“1”;在任何其他情况下,输出Q的信号状态为“0”。
如果输入LOAD 的信号状态为“1”时,则参数PV(预设值)的值将作为新的CV(当前计数值)装载到计数器。而当输入LOAD的信号状态为“1”,则输入CD的信号状态不会影响该操作。图2-45是当CTD的计数值是无符号整数时的时序图示例(其中,PV =3)。
(4)加减计数器
在加计数脉冲CU的上升沿,计数器的当前值CV加1,直到CV达到指定数据类型的上限值。达到上限值时,CV的值不再增加。
在减计数脉冲CD的上升沿,计数器的当前值CV减1,直到CV达到指定数据类型的下限值。达到下限值时,CV的值不再减小。
如果同时出现计数脉冲CU和CD的上升沿,当前值CV保持不变。
当前值CV大于等于设定值PV时,输出QU为1,反之为0。CV小于等于0时,输出QD为1,反之为0。
当装载输入LOAD为1状态时,PV设置的值被装入当前值CV,输出QU变为“1”状态,QD被复位为“0”状态。
当复位输入R为“1”状态时,计数器被复位。当前值CV被清零,输出QU变为“0”状态,QD变为“1”状态。
当R为“1”状态时,CU、CD和 LOAD不再起作用。图2-46是加减计数器指令及时序图。
4.比较指令
(1)触点比较指令
触点比较指令是对两个操作数进行比较,如果满足比较条件,该触点接通;如果不满足,该触点断开。触点比较指令按比较方式不同分为CMP==(相等)、CMP<>(不等)、CMP>=(大于等于)、CMP<=(小于等于)、CMP>(大于)和CMP<(小于)。生成比较指令后,双击触点中间比较符号下面的问号,再单击问号右边出现的按钮,从下拉列表中选择要比较的数的数据类型。比较指令的比较符号也可以修改,双击比较符号,再单击右边出现的刚按钮,可以从下拉列表中修改比较符号。
S7-1200比较指令的数据类型可以是Byte、Word、DWord、SInt、Int、DInt、USInt、UInt、UDInt、Real、LReal、String、WString、C har、WChar、Time、Date、TOD、DTL等。
比较指令的应用如图2-47所示,Word类型的数据MW10与MW12的值相等,满足相等比较条件,故该触点接通;DInt类型的数据MD20的值(20)与20000不等,满足不等比较条件,故该触点接通:Real类型的数据MD30的值(3.8)大于2.5,满足比较条件,故该触点接通;Time类型的数据MD34的值(500ms)小于1000ms,满足比较条件,故该触点接通。
(2)值在范围内和值超出范围指令
“值在范围内”指令IN_RANGE和“值超出范围”指令OUT_RANGE可以等效为一个触点。如果有能流输入指令框,执行比较,否则不执行比较。MIN为最小值,MAX为最大值,VAL为被比较的值。对于IN RANGE指令,如果满足MIN≤VAL≤MAX,等效触点接通,指令框为绿色,否则指令框为蓝色的虚线。对于OUT_RANGE指令,如果VAL< MIN或VAL>MAX,等效触点接通,指令框为绿色,否则指令框为蓝色的虚线。
IN_RANGE和OUT_RANGE指令的应用如图2-47所示,IN_RANGE的VAL(MB40)的值为0,不在20~100 范围之内,故该等效触点断开;OUT_RANGE的VAL(MW41)的值为0,在30~200范围之外,故该等效触点接通。
(3)检查有效性和检查无效性指令
“检查有效性”指令-|OK|-、“检查无效性”指令-|NOT_OK|-是用来检查该指令顶部的数据是否为有效的实数(即浮点数)。如果是有效的实数,OK触点接通;否则NOT_OK触点接通。
OK指令和NOT_OK指令的应用如图2-48所示,在程序段1中,如果MD20和MD24中的数据均为实数,则两个OK触点接通,执行乘法指令,将这两个实数相乘,保存到MD30中,否则不执行乘法运算。
在程序段2中,如果MD20或MD24中的值有一个不是实数,其中一个NOT_OK触点接通,则Q0.0线圈通电指示。
内容来源:《电气工程基础与应用》
END
领取专属 10元无门槛券
私享最新 技术干货