0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何利用16us精度系统时间实现毫秒级控制

电子设计 作者:电子设计 2018-09-28 09:59 次阅读

PLC主要是指数字运算操作电子系统的可编程逻辑控制器,用于控制机械的生产过程。也是公共有限公司电源线车等的名称缩写。PLC可编程逻辑控制器,一种数字运算操作的电子系统,专为在工业环境应用而设计的。它采用一类可编程的存储器,用于其内部存储程序,执行逻辑运算,顺序控制,定时,计数与算术操作等面向用户的指令,并通过数字或模拟式输入/输出控制各种类型的机械或生产过程。是工业控制的核心部分。

一、海为PLC——与时间相关的系统资源

1、定时器:时基分为10ms、100ms、1s,对每个定时器时基可以任意指定其中一种

2、系统实时时钟:实时时钟存储在SV12-SV18共7个寄存器

SV12:表示年(0-99)

SV13:表示月(1-12)

SV14:表示日(1-31)

SV15:表示时(0-23)

SV16:表示分(0-59)

SV17:表示秒(0-59)

SV18:表示星期(1-7)

3、系统脉冲:

SM3:10ms方波脉冲,5ms ON / 5ms OFF

SM4:100ms方波脉冲,50ms ON / 50ms OFF

SM5:1s方波脉冲,500ms ON / 500ms OFF

4、海为PLC独有的16us精度系统时间:

SV49-SV50:32位寄存器,SV49-SV50为系统时间(单位16us), 系统自动循环计数, 当计数到最大值2147483647时归0不断循环计数。寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。

二、没有1ms定时器能够实现毫秒级控制吗

利用16us精度系统时间完全能够实现毫秒级控制,本文例子实现一个12ms ON / 88ms OFF的脉冲。精度误差同普通定时器一样最大误差一个扫描周期,如下图:

12ms = 12000us = 750(16us),存放放在V2000-V2001中

88ms = 88000us = 5500(16us),存放放在V2002-V2003中

建立一个名称为“时间间隔初始值”的初始寄存器值表,将ON时间设定为750和OFF时间设定为5500(当然也可以不建立该表而选择在程序中初始化V2000-V2001及 V2002-V2003的值),如下图:

三、实现程序如下:

本程序扫描周期0.3ms,既误差0.3ms,如下图:

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    5027

    浏览量

    117710
  • 定时器
    +关注

    关注

    23

    文章

    3146

    浏览量

    112032
  • 可编程逻辑
    +关注

    关注

    7

    文章

    511

    浏览量

    43903
收藏 人收藏

    评论

    相关推荐

    labview如何获取当前时间毫秒

    `labview对于使用系统时间的场合,只有在个别情况下要求精确到毫秒。因为labview适用的场合较少,所以解决起来比较困难。LABVIEW中有两种表示时间的方式:1、
    发表于 11-15 10:36

    用PIC16F72实现精度温度测量控制系统

    用PIC16F72实现精度温度测量控制系统PIC16F72芯片包含8位AD转换器,用三极管的PN结作为测温元件,将25.5度的温度范围放大
    发表于 01-28 09:28

    单片机能否实现1us的脉冲,输出准确吗?

    单片机能否实现1us的脉冲,输出准确吗?我要实现一系列20KHz脉冲要求 周期为50us,占空比为40us的脉冲,周期为50
    发表于 03-14 10:13

    【STM32L476 Nucleo试用体验】SysTick微秒延时函数的实现

    延时函数不采用和微秒函数相同的实现方法,是因为毫秒延时有的时候延时时间可能会很大,超过SysTick的最大范围,会造成死循环。因此这里采
    发表于 10-03 11:51

    请问ucos系统下怎么实现us延时?

    再次任务切换会当前任务。我就有些疑惑了,这种定时应该是不准确的,毕竟高优先级任务可以再当前任务定时时间到来时恰好也要执行,那么当前任务就会被延迟执行。另外用ticks也不能实现us
    发表于 03-24 03:37

    使用MCU内核寄存器实现毫秒精确延时的方法

    使用MCU内核寄存器实现毫秒精确延时的方法在进行STM32进行开发时,使用到延时函数的频率非常高,但HAL库只提供了毫秒的延时函数,最小
    发表于 08-12 06:53

    如何利用stm32基本定时器实现毫秒精确延时?

    如何利用stm32基本定时器实现毫秒精确延时?
    发表于 11-16 08:18

    如何利用51单片机实现ms毫秒

    51单片机毫秒延时如下程序能实现ms毫秒的比较精确的延时void Delayms(unsigned int n){ unsigned i
    发表于 11-23 08:04

    基于HAL库实现微妙毫秒延迟

    基于HAL库实现微妙毫秒延迟使用时仅在main函数里添加delay_init(168),进行初始化即可即可。使用此方法,不可使用HAL_Delay()函数使用此方法,不可使用HAL_Delay
    发表于 12-07 10:02

    请问下rt-thread是否有更高定时器对象的实现

    周期性被调用,周期比如为,10us,13us, 16us,21us,101us,等补充一下:确实,如果周期特别小,达到
    发表于 05-09 11:40

    海为16us系统时钟用于高精度检测继电器从得电到闭合的时间

    里记录下此时的SV49SV50的时间,两次记录的SV49SV50时间进行相减,就可以得到继电器从上电到吸合的这段时间,最后把这个以16us为单位的
    发表于 10-06 14:51 13次下载
    海为<b class='flag-5'>16us</b><b class='flag-5'>系统</b>时钟用于高<b class='flag-5'>精度</b>检测继电器从得电到闭合的<b class='flag-5'>时间</b>

    海为PLC正弦波输出

    在PLC程序中做正弦波的输出就是:PLC寄存器的值随时间的推移,按正弦波的变化规律而变化的一种求法(周期和幅值可设定)。然而时间增量的大小决定着寄存器值变化的快慢,利用系统
    发表于 10-09 09:55 4次下载
    海为PLC正弦波输出

    海为PLC在继电器检测设备上的研究

    海为PLC提供一个独有的16us精度系统时间,SV49-SV50为系统时间(单位
    发表于 10-09 10:38 9次下载
    海为PLC在继电器检测设备上的研究

    海为PLC利用16us精度系统时间功能实现毫秒控制

    海为PLC独有的16us精度系统时间:SV49-SV50:32位寄存器,SV49-SV50为系统时间
    发表于 10-09 10:50 3次下载
    海为PLC<b class='flag-5'>利用</b><b class='flag-5'>16us</b><b class='flag-5'>精度</b><b class='flag-5'>系统</b><b class='flag-5'>时间</b>功能<b class='flag-5'>实现</b><b class='flag-5'>毫秒</b>级<b class='flag-5'>控制</b>

    海为PLC用于检测继电器从得电到闭合的时间的解决方案

    继电器吸合的时间快速,如果用一般的定时器来计算吸合时间,误差较大。海为PLC里提供了一个16us系统时钟,为系统寄存器SV49SV50,每
    发表于 08-17 17:14 1949次阅读