IF命令

用途

测试条件,然后指定要转到的语句编号。

语法

IF 表达式 GOTO 步骤编号

参数

表达式 –比较IF命令中的值。这些命令的表达式的语法是:

操作数1 关系运算符 操作数2

要获取关于这些参数的更多信息,请参阅使用命令参数主题。

GOTO 步骤编号 –指定当表达式为真时要转到的步骤编号。如果指定的步骤编号小于当前的步骤编号(向后跳转),iFIX则暂停处理程序块,在下一次扫描期间进行跳转。如果指定的步骤编号大于当前的步骤编号(向前跳转),则继续执行下个步骤而不会中断。

提示:在少数情况下,可能有等待块的具体值以测试条件的程序块,但因为数字系统中不可避免的舍入误差,块会一直发送一个永远不满足条件的、稍有差别的值。避免此问题的最简单方法是添加SETLIM命令 以对从块收到的值创建精确度限制。此命令让您为比较指派包含限制,如+/-0.1。

示例

您可以使用IF命令来测试条件,然后跳转到特定命令。例如,如果模拟量输入块LEVEL的值大于3000,则继续到步骤12,使用的语句如下:

08 IF LEVEL > 3000 GOTO 12

操作数

IF命令也可以使用操作数:

  • DATE
  • DAY
  • TIME

IF DATE

要在执行步骤12之前测试日期是否为1997年6月29日,请输入:

04 IF DATE > 06-29-97 GOTO 12

如果日期为任何其它日期,则执行步骤05。

IF DAY

要测试星期几是否正确,请使用以下语句:

步骤#

命令

操作

3

IF DAY=SUN GOTO 06

如果是星期日,则转到步骤6。

4

WAITFOR TIME =23:59:59

如果不是星期日,则等待23:59:59,直到下一天。

5

GOTO 3

再次检查是否为星期日。

6

CALL PM

调用程序块以进行预防性维护循环。

注意:您只能使用 = 和 ! = 用于具有 DAY 操作数的运算符。星期几的有效标识符是SUN、MON、TUE、WED、THU、FRI和SAT。

IF TIME

TIME操作数根据一天当中的时间执行指定的步骤编号。此命令与IFTIME GOTO命令不同,因为您无需将它与WAITSTAT命令一起使用。要区分这两个命令,请在IF命令和TIME操作数之间使用空格。

如果您使用等于(=)运算符,IF TIME命令把块的扫描时间用作+/-死区。您可以用24小时制输入时间HH:MM:SS。

考虑以下命令:

07 IF TIME = 12:00:00 GOTO 4

如果块有2分钟的扫描时间,命令值在11:58:00和12:02:00之间的任何时候都为真,如下所示。

因此,即使块不是确切地在12:00:00被扫描,IF TIME仍然尽可能接近扫描时间允许的12:00执行。

但是,由于死区,IF TIME命令也可能多次执行。例如,如果iFIX在-扫描时间到+扫描时间范围扫描块,则它被扫描两次,如下所示:

如果块精确地在死区边缘被扫描,则iFIX扫描块三次,如下所示:

要防止多次执行,IF命令可以和TIME和GOTO命令一起使用,如下所示:

步骤#

命令

Comments

14

IF TIME=12:00:00 GOTO 16

12:00 在工厂关闭前半小时;开始关闭程序。

项目数

WAITFOR TIME =23:59:59

如果时间超出死区范围,返回到步骤0并启动另一个运行。

12

GOTO 3

提醒操作员启动关闭程序。

18

CALL PM

延迟扫描时间三次(在此情况下为2分钟)以防止多次执行IF TIME命令。

 

您最近了解过 iFIX 吗 ?

查看最新版 iFIX 的所有新功能。

让 iFIX 帮助您提高效率,降低成本。