S7200 子程序中无法使用定时器 (s7200子程序建库)

S7200

在 S7200 PLC 中,子程序无法直接使用定时器。这是因为定时器是作为系统功能块实现的,并且仅在主程序中可用。

为了在子程序中使用定时器,需要使用以下方法之一:

方法 1:使用全局定时器

可以使用全局定时器,该定时器在主程序和子程序中都可以访问。为此,需要在主程序中创建一个定时器,然后在子程序中使用该定时器的副本。

具体步骤如下:

1. 在主程序中创建定时器。 2. 在子程序中,使用以下语法声明定时器副本: TIMER myTimer := <定时器名称>; 3. 在子程序中,使用 TIMER_START、TIMER_STOP 和 TIMER_CHECK 等功能块控制定时器。

方法 2:使用数据块传递定时器值

另一种方法是使用数据块传递定时器值。为此,需要在主程序中创建一个数据块,该数据块包含定时器值。可以在子程序中访问此数据块并使用该值。

具体步骤如下:

1. 在主程序中创建数据块。 2. 在数据块中创建以下标签: 定时器值:INT 定时器状态:BOOL 3. 在主程序中,将定时器值写入数据块。 4. 在子程序中,使用以下语法声明数据块: DATA_BLOCK myDataBlock := <数据块名称>; 5. 在子程序中,使用以下语法访问定时器值: 定时器值 := myDataBlock.定时器值; 6. 在子程序中,根据需要使用定时器值。

方法 3:使用函数块

最后,可以使用函数块来实现定时器功能。为此,需要在主程序中创建一个函数块,该函数块执行定时器功能。可以在子程序中调用此函数块。

具体步骤如下:

1. 在主程序中创建函数块。 2. 在函数块中,编写以下代码: VAR_INPUTstartTime: TIME;stopTime: TIME; END_VARVAR_OUTPUTtimerDone: BOOL; END_VARVARtimeLeft: TIME; END_VARIF (startTime < stopTime) THENtimeLeft := stopTime - startTime; ELSEtimeLeft := startTime - stopTime; ENDIF;IF (ELAPSED(timeLeft)) THENtimerDone := TRUE; ELSEtimerDone := FALSE; ENDIF; 3. 在子程序中,使用以下语法调用函数块: myTimer := <函数块名称>(startTime, stopTime); 4. 在子程序中,使用以下语法检查定时器是否完成: IF (myTimer.timerDone) THEN... ENDIF;

结论

在 S7200 PLC 子程序中无法直接使用定时器。但是,可以使用上述方法之一来实现定时器功能。

本文原创来源:电气TV网,欢迎收藏本网址,收藏不迷路哦!

相关阅读

添加新评论