技术论坛

 再试200的100毫秒分辨率定时器,实例还原部分真相

返回主题列表
作者 主题
winter938
至圣

经验值: 10679
发帖数: 1561
精华帖: 33
楼主    2018-02-02 23:14:29
主题:再试200的100毫秒分辨率定时器,实例还原部分真相 精华帖 

先上程序,有感兴趣的可以试试看


图片可以看到扫描周期达到35毫秒时,T37,T38计时出现了严重的不同步,这是为什么呢?

工控爱好者
芳季
至圣

经验值: 66564
发帖数: 14742
精华帖: 100
1楼    2018-02-03 12:40:50
主题:回复:再试200的100毫秒分辨率定时器,实例还原部分真相

这是由于非复位的计时器的时基从来没有改变。而自复位的计时器的时基是每次复位就从新建立。而每次建立又不可能准时,只能被扫描推迟,所以,成这样了。所以,T38跑得慢些。

如果没人提出反对,那么,就当这个是真相了?

winter938
至圣

经验值: 10679
发帖数: 1561
精华帖: 33
2楼    2018-02-03 15:43:00
主题:回复:再试200的100毫秒分辨率定时器,实例还原部分真相

如果用T37,T38作为0.5秒为周期的时钟脉冲,你会选择哪一个?PID指令假如计算周期为0.5秒你会用哪一个定时器的触头上沿来驱动指令执行?100毫秒定时器定时条件的上沿那一个扫描周期定时器是不会累计时间的,这是我的体会,对于连续循环计时我们是不希望漏计任何一段时间,显然T37比T38更接近我们的希望。

工控爱好者
芳季
至圣

经验值: 66564
发帖数: 14742
精华帖: 100
3楼    2018-02-03 15:58:35
主题:回复:再试200的100毫秒分辨率定时器,实例还原部分真相

选T37,但是能够说到这精度的份上的话,那么我将会不用计时器。因为,这个要求正徘徊在它的能力范围的边缘。何苦为难一个计时器?如果要选择了用上计时器的话那么将不会计较你试验中的这种“误差”。

winter938
至圣

经验值: 10679
发帖数: 1561
精华帖: 33
4楼    2018-02-03 16:10:24
主题:回复:再试200的100毫秒分辨率定时器,实例还原部分真相

TO芳季:连续计时1年,用T37和500毫秒循环定时中断计时哪个误差大?

工控爱好者
winter938
至圣

经验值: 10679
发帖数: 1561
精华帖: 33
5楼    2018-02-03 16:17:26
主题:回复:再试200的100毫秒分辨率定时器,实例还原部分真相

再加上一个对SM0.5上下沿分别加一计时。连续计时一年看看它和前述的两个时基又有啥区别?

工控爱好者
芳季
至圣

经验值: 66564
发帖数: 14742
精华帖: 100
6楼    2018-02-03 20:22:59
主题:回复:再试200的100毫秒分辨率定时器,实例还原部分真相

两者比较没有误差。

两者的区别是:一个的跳变自通电开始。另一个的跳变自程序执行到TON指令开始。

winter938
至圣

经验值: 10679
发帖数: 1561
精华帖: 33
7楼    2018-02-03 21:40:12
主题:回复:再试200的100毫秒分辨率定时器,实例还原部分真相

和T38比较呢?我就是比较在意这个。精度再高,程序扫描是要时间的,所以那些动不动就要高精度定时的一定要想想你的定时器除了中断是如何高精度启动定时器的,如果做不到及时准确启动定时器使用再高精度的定时器也是枉然。比如说毫秒级的定时器放在主程序中启动我认为就失去了意义,因为程序扫描周期可能都是好几个毫秒了。

工控爱好者
芳季
至圣

经验值: 66564
发帖数: 14742
精华帖: 100
8楼    2018-02-04 07:06:02
主题:回复:再试200的100毫秒分辨率定时器,实例还原部分真相

我同意,你提出的是事实。但是又有多少人知道……

yanxiao
至圣

经验值: 26132
发帖数: 11970
精华帖: 43
9楼    2018-02-04 10:23:27
主题:回复:再试200的100毫秒分辨率定时器,实例还原部分真相

有没有办法写个简单的程序来证实?


我以前的观念中,100ms共用一个时基。如此看来,各定时器的基准并不对齐。

winter938
至圣

经验值: 10679
发帖数: 1561
精华帖: 33
11楼    2018-02-04 17:06:14
主题:回复:再试200的100毫秒分辨率定时器,实例还原部分真相

在做两台224,一个TD200,加电脑的多主多从网络实验未能及时看到上面两位大侠的回复。我的估计定时器都是对准1毫秒的公共时基,只不过不同分辨率的定时器去读的方式不一样,从而给人错觉好像精度就不一样。比如说100毫秒分辨率定时器它有可能读到103毫秒时当前值会增1,那3个毫秒并不会丢弃而是继续累积。其实CPU中只有一个晶振,都以它为基准计时的话,如果方法都是正确的,计的时就应当一样。

工控爱好者
yanxiao
至圣

经验值: 26132
发帖数: 11970
精华帖: 43
14楼    2018-02-05 22:42:46
主题:回复:再试200的100毫秒分辨率定时器,实例还原部分真相

实验结果:

顶楼的程序,调节扫描周期至35ms不到,运行1天多吧,VD0和VD保持同步。



此时,VW10=35,扫描周期在33左右,最大34ms。

当把VW10置为40,让扫描周期大于35,立即出现VD0大于VD4的情况。


我在程序中加了点料。在SM0.1期间,记录32位的1ms定时器时刻。在VD0<>VD4时,计算距SM0.1==1的时间差,记录在VD208中。

VD0=208637 (500ms)

VD4=208636 (500ms)

VD208=104318514 ms

计算:VD0*500ms=208637*500ms=104318500,与VD208的记录只差14ms。这个14ms,误差是14/104318500=0.15ppm,相当于一年的误差不到5秒,远高于普通时钟的精度。所以这个14ms应是指令执行的延时造成。

可以推论:100ms的时钟基准,与1ms定时器的时钟基准是同一个。

yanxiao
至圣

经验值: 26132
发帖数: 11970
精华帖: 43
15楼    2018-02-05 22:53:53
主题:回复:再试200的100毫秒分辨率定时器,实例还原部分真相

100ms定时器是否每个定时器自己计算时间增量,这个还需要进一步用实例来证实。


我一直以为,100ms的定时器,虽然是定时器指令执行(指TON/TOF/TONR)时更新,但更新所用的定时器增量值,则统一使用在扫描周期开始时的公共计算值。

这一现象的程序证实方法:

1、如果在每个扫描周期中对100ms执行两次TON指令,定时时间值就会快1倍(200%),说明它使用的增量不是私有的。

2、如果是间隔一个扫描周期执行一次TON指令,定时时间会慢1倍(50%),扫描周期只有几个ms也是这个现象,间隔一个扫描周期应不会错过一个100ms的事件,间接说明它的增量是公共的。

yanxiao
至圣

经验值: 26132
发帖数: 11970
精华帖: 43
20楼    2018-02-06 11:49:37
主题:回复:再试200的100毫秒分辨率定时器,实例还原部分真相

具体程序是这样,纯STL

LD     SM0.1                       // 第一扫描周期

MOVD   0, VD0                      // 计数器清零

MOVD   0, VD4

MOVD   0, VD12

R      T37, 1                      // 定时器复位

R      T38, 1

//

LD     SM0.0

TON    T37, 5                      // T37立即启动

//

LDN    SM0.1                       // 非第一扫描周期

JMP    10                          // 跳过处时环节

//

LD     SM0.0                       // 以下为延时50ms

BITIM  AC1

//

LBL    1

//

LD     SM0.0

CITIM  AC1, AC0

LDD>   50, AC0                     // 不到50ms,循环

JMP    1

//

LBL    10

//

LD     SM0.0                       // 在第一扫描周期,50ms之后才到此

TON    T38, 5                      // 启动T38

//

LD     T37

EU

BITIM  VD8                         // 记录T37到达时刻

INCD   VD0

//

LD     T38

EU

CITIM  VD8, VD12                   // 比较T37到达间的时间差

INCD   VD4


如果100ms定时器各自对齐到ms边界,T58比T37延时50ms启动,则T37和T38达到5时是有前后的。实际在VD12中捕捉到的是0值,说明T37和T38同时到达5。

winter938
至圣

经验值: 10679
发帖数: 1561
精华帖: 33
26楼    2018-02-06 15:18:06
主题:回复:再试200的100毫秒分辨率定时器,实例还原部分真相

还是贴个图片辅助说明一下我的观点吧:



工控爱好者
winter938
至圣

经验值: 10679
发帖数: 1561
精华帖: 33
27楼    2018-02-06 16:45:10
主题:回复:再试200的100毫秒分辨率定时器,实例还原部分真相

再贴个图片说明扫描周期为34,33毫秒时的两种情形,感兴趣的可以把我楼顶的程序扫描周期调节一下验证是不是有33和34毫秒的扫描周期这样一道坎。



工控爱好者
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。