龙空技术网

西门子STL代码解读:一段关于定时器的STL代码

山东王建设 237

前言:

此刻各位老铁们对“c语言的计时器”大约比较关怀,同学们都想要了解一些“c语言的计时器”的相关文章。那么小编也在网上收集了一些关于“c语言的计时器””的相关文章,希望朋友们能喜欢,大家快快来学习一下吧!

看到一段关于定时器的STL源码,加深了对边沿指令的理解,解读学习一下。

原程序

程序接口

STL源码

代码解读

1CLR

2L S5T#0MS

3SE #IN1

给定时器RLO为FALSE的信号,方便后续启动定时器。

4L #IN0

5L 9

6<=I

7JC M003

当#IN0小于9的时候跳转到M003。

8L #IN0

9L 99

10<=I

11JC M005

当#IN0小于等于99时,跳转到M005。

12L #IN0

13L 999

14<=I

15JC M004

当#IN0小于等于999时,跳转到M004。

16TAK

17L 9990

18>I

19JC M002

当#IN0大于9990时,跳转到M002。

20L #IN0

21L 10

22/I

23ITB

24L W#16#3000

25+I

26JU M001

当#IN0范围在1000-9990的时候,时间值#IN0/10,时基为10s,相当于输入数据单位为秒。

27M003: L #IN0

28L 100

29*I

30ITB

31L W#16#0

32+I

33JU M001

当#IN0小于9的时候,#IN0*100,时基为10ms,相当于输入数据单位为秒。

34M005: L #IN0

35L 10

36*I

37ITB

38L W#16#1000

39+I

40JU M001

当#IN0范围在9-99的时候,#IN0*10,时基为100ms,相当于输入数据单位为1秒。

41M004: L #IN0

42ITB

43L W#16#2000

44+I

45JU M001

当#IN0范围在100-999的时候,时间值#IN0,时基为1s,相当于输入数据单位为1秒。

46M002: L W#16#3999

当#IN0范大于9990的时候,定时器的最长定时时间数值:999*10秒。

47M001: SET

48SE #IN1

给定时器RLO为TRUE的信号,启动定时器。SE为扩展脉冲定时器,上升沿启动后开始计时,上升沿会将计时值重置。

程序的功能就是:#IN0的输入为定时时间,小于9990时定时时间为#IN0秒,大于9990时定时时间为9990秒。#IN1为定时器的名,如T1,T2等。

另外程序在每个周期都相当于上升沿会重新启动定时器,监控会发现状态不变,需要在调用的时候控制程序如何扫描。

CLRSE #IN1SETSE #IN1

这段代码相当于给了定时器一个上升沿。

标签: #c语言的计时器