BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / matlab / #12257同步于 2017/1/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖

关于labview的定时循环与while循环

yo1995
2017/1/17镜像同步5 回复
可能这个问题看过操作系统或是微机原理就能解答吧?但不太明白想问,求大佬解答 在labview中有while循环和定时循环。在信号采集时,通过while循环执行DAQ助手进行信号采集。不太理解,这时候程序到底是怎么运行的呢? 我的理解: 定时循环顾名思义,就是通过一个固定时钟频率来控制,每隔固定时间执行一次循环体内的程序。这个时钟大概是处理器提供的? while循环则是始终执行。假如处理器比较空闲,那么while循环就会更快地执行;要是处理器线程很多,那while循环就执行的比较慢? 那比如定时循环中循环体每次执行需要很长时间,超过了固定的时间间隔;或者while循环的循环体需要耗费很长时间才能执行一次,这时候程序是怎么执行的呢? @dhown @caicai617 @fuxuemingzhu
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
caicai617机器人#1 · 2017/1/17
您居然在主楼、、
dhown机器人#2 · 2017/1/17
对labview接触并不多_(:зゝ∠)_。不是很清楚两者的区别。我觉得你可以问问杨胡江老师,他对labview了解的比较深刻。 【 在 yo1995 的大作中提到: 】 : 可能这个问题看过操作系统或是微机原理就能解答吧?但不太明白想问,求大佬解答 : 在labview中有while循环和定时循环。在信号采集时,通过while循环执行DAQ助手进行信号采集。不太理解,这时候程序到底是怎么运行的呢? : 我的理解: : ...................
fuxuemingzhu机器人#3 · 2017/1/17
不是很懂。顺着你的思路,定时循环是一个中断事件,事件触发是由时钟提供的,时钟是计算机的一个元部件,和处理器无关。 while循环确实按照代码循环一直执行的。 写过汇编,但是汇编里边的处理器不支持多线程,貌似不能执行多级中断。。 所以按照汇编来说,除非有终端打破了while,那么每个while循环的时间是一样的。 在汇编里边,定时循环的终端处理程序的最后一条语句是IRET,即中断返回,也就是说如果没有把中断处理程序执行完是不能再次执行中断的(中断屏蔽)。 while时间再久也得等,要不然PC的值一直自增,不会返回到while语句那里。 多处理器多线程多级中断的情况就不知道了。。
Huan0机器人#4 · 2017/1/18
while循环和定时循环的区别? LabVIEW在windows平台下while循环和定时while循环区别不大,跟时钟没什么关系,因为系统本身是非实时操作系统,如果代码执行时间不超过你设定的循环时间,都会有ms级抖动,只不过定时循环可以设置循环代码的执行优先级,如果有并行的其他低优先级的代码竞争处理器资源时会优先保证高优先级的代码执行。定时循环还可以指定时钟源(在windows平台下没什么卵用),另外也可以配合定时循环的其他几个子vi使用,用起来更灵活一点。 如果循环内代码执行时间超过了设定循环时间,这时候循环的实际执行时间以代码执行时间为准。 比较多的时候while循环之所以加定时,是因为如果不加定时,CPU满负荷去跑,加了定时之后就释放了cpu的计算资源。 在RT系统和FPGA上,RT系统是操作系统层面上就保证了执行的实时性,所以在RT上可以保证执行时间在1us以内的抖动。 FPGA上是由硬件电路来保证执行时间的,单周期定时循环就是以一个时钟周期执行一次,也就是循环内的代码执行周期是1tick(只要代码编译能通过)。
yo1995机器人#5 · 2017/1/18
多谢解答!!解答了我的疑惑。[ema11]准备去好好了解一下操作系统了… 【 在 Huan0 的大作中提到: 】 : while循环和定时循环的区别? : LabVIEW在windows平台下while循环和定时while循环区别不大,跟时钟没什么关系,因为系统本身是非实时操作系统,如果代码执行时间不超过你设定的循环时间,都会有ms级抖动,只不过定时循环可以设置循环代码的执行优先级,如果有并行的其他低优先级的代码竞争处理器资源时会优先保证高优先级的代码执行。定时循环还可以指定时钟源(在windows平台下没什么卵用),另外也可以配合定时循环的其他几个子vi使用,用起来更灵活一点。 : 如果循环内代码执行时间超过了设定循环时间,这时候循环的实际执行时间以代码执行时间为准。 : ...................