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

一、功能及注意事项

(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左右。用这个更精确的时间来对我们采样的数据进行修正可以获得更好的效果。

相关推荐
阿钱真强道5 天前
课时04 嵌入式技术应用设计实训 | 定时器:定时中断
tim·定时器·volatile·定时中断·nvic·stm32f103·计秒表
阿钱真强道14 天前
18 嵌入式操作系统 | uloop 定时器:周期任务与网络上报
c语言·定时器·周期任务·uloop
晊晌_h15 天前
IMX6ULL裸机开发:定时器(GPT/EPIT)与UART串口
arm·定时器·arm裸机开发
AAA代码批发商21 天前
Days 50 51 单片机与 i.MX6ULL 定时器对比:Timer、EPIT、GPT 原理与实验
51单片机·定时器·imx6ull·裸机开发
捷瑞电子工坊21 天前
蓝桥杯嵌入式STM32G431定时器入门:从原理到CubeMX配置(LL库)
cubemx·定时器·定时中断·led闪烁·蓝桥杯嵌入式·stm32g431·ll库
阿钱真强道1 个月前
24 极物科技 | DALI协议栈 - 定时器与中断系统
定时器·曼彻斯特编码·极物·极物智能·极物科技·dali协议栈·智慧照明
jufeng13071 个月前
STM32F103 定时器输入捕获实战:测频测周、编码器测速、红外解码全流程拆解
stm32·输入捕获·定时器·编码器
啦啦啦啦啦zzzz2 个月前
时间轮定时器
linux·服务器·网络·c++·定时器
保安大队王队长2 个月前
定时器知识
定时器
Dlrb12113 个月前
ARM---IMX6ULL定时器详解与应用:EPIT与GPT定时器,高精度延时函数
arm开发·gpt·arm·定时器·epit·高精度延时