作者 | 主题 |
---|---|
winter938 至圣 经验值: 10679 发帖数: 1561 精华帖: 33 |
楼主 2018-02-02 23:14:29
主题:再试200的100毫秒分辨率定时器,实例还原部分真相
工控爱好者
|
芳季 至圣 经验值: 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毫秒分辨率定时器,实例还原部分真相
工控爱好者
|