使用Codesys系统的控制器时,定时器的时间精度不够怎么办

LMS_LiRui2026/01/08

一、功能及注意事项

(1)功能说明:此文档给出了一个可以在定时器的时间精度不够的情况下可以使用的小技巧。

(2)注意事项:我司的NIMC2000N-B系列的任务周期至少需要给2ms,所以定时器一般也需要设置2ms以上,本文中为了展现极端情况下的效果,才给了1毫秒。

二、操作步骤

(1)打开codesys工程,选择工具,库存储。

图2.1

(2)在出现的弹框中点击查找。

图2.2

(3)在查找库弹窗中的顶部输入“systimecore”,鼠标选中SysTimeCore,3.5.17.0,点击下面的打开。

图2.3

(4)当在已安装的库中,出现下图红框所示,表明已安装完成。

图2.4

(5)双击左边的库管理器,打开库管理器界面。

图2.5

(6)点击添加库。

图2.6

(7)选择高级。

图2.7

(8)在添加库弹窗的最上面文本框中输入systimecore,选中下面出现的第一个库,点击确定,将刚刚安装好的库添加到工程中。

图2.8

 

(9)添加成功后,下图中会出现刚刚安装好的库。

图2.9

(10)然后回到PLC_PRG中,声明一个定时器TON1,两个TIME型变量TimeStart和TimeEnd,以及一个DINT型变量TimeDelta。

图2.10

(11)在下方程序编写框中实例化定时器。

图2.11

(12)如下图所示,在定时器开始阶段用SysTimeGetMs()函数获取一下系统开始时间,在定时器结束阶段再用SysTimeGetMs()函数获取一下系统结束时的时间,将这两个时间做一下差值计算,就可以用TimeDelta变量获取到更精确的定时器工作时间了。

图2.12

(13)如下图所示,虽然我们定时器设定的是1ms定时,但受系统硬件限制,实际定时器的工作时间在0-5ms左右。用这个更精确的时间来对我们采样的数据进行修正可以获得更好的效果。