共有七条时钟运算类指令,指令的编号分布在FNC160~FNC169之间。
时钟运算类指令是对时钟数据进行运算和比较,对PLC内置实时时钟进行时间校准和时钟数据格式化操作。
(1)时钟数据比较指令TCMP(FNC160) TCMP(P)它的功能是用来比较时刻与时钟数据的大小。
如图3- 86所示,将源操作数[S1.]、[S2.]、[S3.]中的时间与[S.]起始的3点时间数据比较,根据它们的比较结果决定目标操作数[D.]中起始的3点单元中取ON或OFF的状态。
该指令只有16位运算,占11个程序步。
它的源操作数可取T、C和D,目标操作数可以是Y、M和S。
图3-86 时钟数据比较指令的使用
(2)时钟数据加法运算指令TADD(FNC162) TADD(P)指令的功能是将两个源操作数的内容相加结果送入目标操作数。
源操作数和目标操作数均可取T,C和D。
TADD为16位运算,占7个程序步。
如图3-87所示,将[S1.]的D10~D12和D20~D22中所放的时、分、秒相加,把结果送入[D.]的D30~D32中。
当运算结果超过24小时时,进位标志位变为ON,将进行加法运算的结果减去24小时后作为结果进行保存。
图3-87 时钟数据加法运算指令的使用
(3)时钟数据读取指令TRD(FNC166) TRD(P)指令为16位运算,占7个程序步。
[D.]可取T,C和D。
它的功能是读出内置的实时时钟的数据放入由[D.]开始的7个字内。
如图3-87所示,当X1为ON时,将实时时钟(它们以年、月、日、时、分、秒、星期的顺序存特殊辅助寄存器D8013~8019之中)传送到D10~D16之中。
图3-88 时钟数据读取指令的使用
浮点数运算指令包括浮点数的比较、四则运算、开方运算和三角函数等功能。
它们分布在指令编号为FNC110~FNC119、FNC120~FNC129、FNC130~FNC139之中。
(1)二进制浮点数比较指令ECMP(FNC110) DECMP(P)指令的使用如图3-83所示,将两个源操作数进行比较,比较结果反映在目标操作数中。
如果操作数为常数则自动转换成二进制浮点值处理。
该指令源操作数可取K、H和D,目标操作数可用Y、M和S。
为32位运算指令,占17个程序步。
图3-83 二进制浮点数比较指令的使用
(2)二进制浮点数区间比较指令EZCP(FNC111) EZCP(P)指令的功能是将源操作数的内容与用二进制浮点值的上下二点的范围比较,对应的结果用ON/OFF反映在目标操作数上,如图3-84所示。
该指令为32位运算指令,占17个程序步。
源操作数可以是K,H和D;目标操作数为Y、M和S。
[S1.]应小于[S2.],操作数为常数时将被自动转换成二进制浮点值处理。
图3-84 二进制浮点数区间比较指令的使用
(3)二进制浮点数的四则运算指令 浮点数的四则运算指令有加法指令EADD (FNC120)、减法指令ESUB(FNC121)、乘法指令EMVL(FNC122)和除法指令EDIV(FNC123)四条指令。
四则运算指令的使用说明如图3-85所示,它们都是将两个源操作数中的浮点数进行运算后送入目标操作数。
当除数为0时出现运算错误,不执行指令。
此类指令只有32位运算,占13个程序步。
运算结果影响标志位M8020(零标志)、M8021(借位标志)、M8022(进位标志)。
源操作数可取K、H和D,目标操作数为D。
如有常数参与运算则自动转化为浮点数。
图3-85 二进制浮点数四则运算指令的使用
二进制的浮点运算还有开平方、三角函数运算等指令,在此不一一说明