2.3.2 比较指令
1.触点比较指令
触点比较指令相当于一个触点,执行时将两个源数据(S1·和S2·)进行比较,如果比较结果为真(即条件满足),则该触点接通;若比较结果为假(即条件不满足),则该触点断开。
触点比较指令有LD触点比较指令、OR触点比较指令和AND触点比较指令等,LD触点比较指令接在左侧母线上,OR触点比较指令与其他触点或电路并联,AND触点比较指令与其他触点或电路串联。触点比较指令功能号、助记符、导通条件如表2-1所示。
表2-1 触点比较指令
(续)
图2-10中当定时器T0的当前值在100~200之间时,输出继电器Y000线圈通电。当X000常开触点接通,或计数器C0当前值不等于20,或32位计数器C200的当前值小于100000时输出继电器Y001线圈通电。
图2-10 触点比较指令
【例2-2】触点比较指令的应用(图2-11)。
图2-11为生成1s周期的方波脉冲信号程序,用类似方法可以产生任意占空比(为整数)的方波脉冲信号。
图2-11 触点比较指令生成方波示例程序
2.比较指令
CMP指令(FNC 10)用于比较两个源操作数(S1·)和(S2·)并将比较的结果送给目标操作数(D·),比较结果用目标软元件的状态来表示(图2-12)。待比较的源操作数(S1·)和(S2·)可以是任意的字软元件或常数,目标操作数(D·)可以取Y、M和S等,其占用连续的3个位软元件。
图2-12 比较指令
图2-12中,当X000的常开触点接通时,比较指令将常数K100与定时器T0的当前值进行比较,比较结果送给M0~M2。比较结果对目标操作数M0~M2的影响如图2-12所示。X000为OFF时不进行比较,M0~M2的状态保持不变。
也可以使用比较指令生成方波脉冲信号,如图2-13所示。
图2-13 比较指令生成方波示例程序
视频“CMP指令”可通过扫描二维码2-4播放。
二维码2-4
3.区间比较(ZCP)指令
区间比较指令是ZCP指令(FNC 11),操作数的类型与比较指令一样,目标操作数占用连续的3位软元件,(S1·)应小于(S2·)。图2-14中的X000的常开触点闭合时,执行ZCP指令,将计数器C0的当前值与K100和K200比较,比较结果对目标操作数M10~M12的影响如图2-14所示。
图2-14 区间比较指令
【例2-3】区间比较指令的应用(图2-15)。
小区空余车位显示控制,进入一辆空余车位数减1,驶出一辆空余车位数加1。设当前空余车位数存储在计数器C200中,当空余车位数大于10个绿灯亮;当空余车位数小于等于10个大于等于5个时绿灯秒级闪烁;当空余车位数小于5个时红灯闪烁。
图2-15 空余车位显示控制程序
视频“ZCP指令”可通过扫描二维码2-5播放。
二维码2-5
4.浮点数比较(ECMP)和区间比较(EZCP)指令
ECMP指令(FNC 110)和EZCP指令(FNC 111)的使用方法与比较指令(CMP和ZCP)基本相同。因为浮点数是32位的,所以在其指令前面加D,如图2-16所示。浮点数常数用字母E表示。
图2-16 浮点数比较和区间比较指令