“s7 cpus” 有一个时间单元 (timetick) ,它以毫秒为单位循环地从 0x0 数到 0x7fffffff。“s7-400 cpus”和 “cpu 318”“以毫秒分辨率”执行此计数,非常精确。其它的 “s7-300 cpus” (除 cpu 318 之外) 以 10 毫秒分辨率计数。
“timetick” 也存在于“winac” basic (softplc)并以10ms 为计数单位。
以下概念基于 “sfc64”(timetick),它读取 “cpu” 当前的“timetick”。这样就可以在不用完“cpu”“timer 资源”的情况下创建任意数量的定时器。n
产生定时的原理非常简单。如果启动定时,从“cpu”读取当前的“timetick”并存储。如果要在随后的某个时刻查询定时器,需要一个功能,该功能计算定时器启动后所需要的时间。
基于此简单的功能,可以根据需要创建复杂的脉冲和时间功能。n
在很多应用中,能够满足基于循环的定时;事实上,出于一致性考虑常常要求使用此种定时。此概念考虑到了这种要求,同时它也适合于毫秒范围内基于调用的定时。n
此概念的优势:
适用于运行时间。n不使用 “timer” 系统资源。n精确的缩放功能(如示例中基于循环的,或基于程序调用的,如在启动计时及查询计时的情况下调用“sfc64)”。n应用使得 fc 可以使用存储器资源(dw),这样便可以根据需要创建任意多的定时器。基于循环的 timer 结构
产生定时的基础是 “cpu”的“timetick”。对于基于循环的定时,每个周期读取一个“timetick”便足够,将读取的结果保存,使其可以被所有的(fb,fc)应用访问。重要的是,循环的读取可以节省循环时间。在每个周期中,不必对每个定时器都调用“sfc64”。n
关于 “timetick”的应用样例可参见条目号id 8736822。n
注意事项:
所有的 s7-300 cpu 模块从 v2.4 版本开始有1ms 的间隔。n
关键字:
定时器,资源