数据比较指令是一类比较常用的指令,包括16位或32位数据比较指令、一个16位或32位数据与数据区间进行比较、数据块比较等5条指令。比较的结果用特殊内部继电器R9009、R900A、R900B和R900C的状态来表示,见表7-38和表7-39。
表7-38 数据传送指令及操作数
1.16位或32位数据比较指令:F60(CMP)、F61(DCMP)
这两种指令的功能基本相同:即当控制触点闭合时,将S1指定数据与S2指定数据进行比较,比较的结果反映到标志位中。
例7-23 F60(CMP)指令应用示例,如图7-29所示。
F60(CMP)为16位数据的比较指令,其功能是将S1指定的16位数据与S2指定的16位数据进行比较,比较的结果存储在特殊内部继电器R900A~R900C中。F60(CMP)指令对标志位影响见表7-39。
图7-29 F60(CMP)指令示例
表7-39 16位数据比较指令F60(CMP)对标志位影响
例题说明:当触发信号X0接通时,将数据寄存器DT0中的数据与十进制常数(K100)进行比较,当DT0>K100时,R900A为“ON”,输出继电器Y0接通。当DT0=K100时,R900B为“ON”,Y1接通。DT0<K100时,R900C为“ON”,Y2接通。本例的程序也可以用堆栈操作指令PSHS、RDS和POPS来编写。
注意事项:
1)指令中S1、S2既可以是常数,也可以存放数据的寄存器
2)如果程序中多次使用F60(CMP)指令,则标志继电器的状态总是取决于前面最临近的比较指令。为了保证使用中不出现混乱,一个办法是在比较指令和标志继电器前使用相同的控制触点来进行控制;另一个办法是在比较指令后立即使用相关的标志继电器。
2.16位和32位数据区间比较指令:F62(WIN)、F63(DWIN)(www.xing528.com)
这两种指令的功能类似:当控制触点闭合时,将S1指定数据与S2指定下限、S3指定上限的数据区间中的数据比较,比较的结果反映到标志位中。
例7-24 F62(WIN)指令应用示例,如图7-30所示。
图7-30 F62(WIN)指令示例
F62(WIN)为16位数据块的比较指令,其功能是将S1指定的16位常数或16位存储单元中的数据与S2和S3指定的数据块相比较,以检查S1是否在数据块的下限S2和上限S3之间,或大于S3,或小于S2,比较的结果存储在R900A、R900B和R900C中。F62(WIN)对标志位影响如表7-40。
表7-4016位数据区间比较指令F62(WIN)对标志位影响
例题说明:当触发信号X0接通时,将数据寄存器DT0中的内容与数据寄存器DT2中的内容(数据区段的下限)和DT4中的内容(数据区段的上限)进行比较,比较结果存储在特殊内部继电器R900A~R900C中
当DT0数据>DT4数据时,R900A为“ON”,输出继电器Y0接通。当DT2数据≤DT0数据≤DT4数据时,R900B为“ON”,Y1接通。当DT0数据<DT2数据时,R900C为“ON”,Y2接通。
3.数据块比较指令:F64(BCMP)
F64(BCMP)为数据块比较指令。
该指令功能为:当控制触点闭合时,根据S1指定的比较参数,包括数据块的起点和长度,比较由S2指定首地址的数据块和由S3指定首地址的数据块中的内容,当两个数据块完全相同时,特殊内部继电器R900B接通。
S1指定的比较参数的定义如图7-31所示。
图7-31 数据块比较指令中S1的设定
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。