WINDOWS的时钟不准,导致发送指令给PMAC时曲线存在不平滑段,怎么解决? 点击:1192 | 回复:17



动感

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:18帖 | 28回
  • 年度积分:0
  • 历史总积分:23
  • 注册:2007年7月11日
发表于:2008-11-18 15:44:26
楼主

大虾们

        我利用WINDOWS编程向PMAC发送位置指令,发现程序在 10ms的时候位置曲线很平滑,但是会不规则的出现锯齿,所以我改用8ms、12ms试验,发现这两个还不如10ms连平滑的曲线都没有了,而且出现的锯齿很有规律,最后PMAC 的工程师告诉我说这是因为WINDOWS的时钟不能准确定位到毫秒级别,这个有影响吗?我该怎么处理?麻烦各位高手帮我想想办法。




pfzhu

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 9回
  • 年度积分:0
  • 历史总积分:33
  • 注册:2008年9月16日
发表于:2008-11-18 16:25:23
1楼

不知道 你是一个怎么样的过程?

你是不是想在运动中的改变运动的 终点位置? 这样的话建议你看看pmac的例子

你是用什么方式改变终点位置的?jog?不停分小段的linear?

就论windows定时器的话可以精确到53ms左右。

高精度的定时一般采用下面两个

BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);
BOOL QueryPerformanceCounter(LARGE_INTEGER *lpCount);

如果你有dpram可能对你解决问题跟方便一点。

刘岩利

  • [版主]
  • 精华:2帖
  • 求助:0帖
  • 帖子:16帖 | 8239回
  • 年度积分:397
  • 历史总积分:28760
  • 注册:2005年3月09日
发表于:2008-11-18 17:33:00
2楼
不建议用WINDOWS的时钟做这么精密的事情,用PMAC自己的时钟都会好得多。还是在PMC上用个数据缓冲区做FIFO,用PMAC自己的时钟吧。虽然对PMAC所知极为有限,但这么简单的功能一定可以支持的。

周公

  • 精华:10帖
  • 求助:0帖
  • 帖子:119帖 | 5549回
  • 年度积分:0
  • 历史总积分:6446
  • 注册:2002年11月26日
发表于:2008-11-18 18:21:18
3楼

实时控制的指令不适合用 WINDOWS 发送,因为他的多线程、多任务特点会将时间关系搞乱。

动感

  • 精华:0帖
  • 求助:0帖
  • 帖子:18帖 | 28回
  • 年度积分:0
  • 历史总积分:23
  • 注册:2007年7月11日
发表于:2008-12-23 18:11:35
4楼
3楼这位兄弟说到位置上了,现在有人给我推荐了一个在WINDOWS上的插件,叫做TWINCAT我想问问谁有试用版本或者下载地址,告诉我,或者发送到我的邮箱里面,谢谢了。邮箱endlesslove830622@yahoo.com.cn

周公

  • 精华:10帖
  • 求助:0帖
  • 帖子:119帖 | 5549回
  • 年度积分:0
  • 历史总积分:6446
  • 注册:2002年11月26日
发表于:2008-12-23 20:52:03
5楼
                                     

行者无争

  • 精华:3帖
  • 求助:0帖
  • 帖子:10帖 | 2797回
  • 年度积分:0
  • 历史总积分:3
  • 注册:2008年12月10日
发表于:2008-12-24 08:02:03
6楼

TwinCAT是Beckhoff基于windows平台的工业自动化实时应用软件,其核心技术是基于winde实时内核和基于IEC61131-3的CoDeSys软PLC开发应用平台。

TwinCAT能否支持PMAC卡,建议先咨询Beckhoff

真想在windows下做实时应用,建议试用RTX或InTime等面向Windows的实时内核,国内的大连光洋近来也搞出一个Windows实时内核。

小虫~~

  • 精华:0帖
  • 求助:2帖
  • 帖子:19帖 | 307回
  • 年度积分:0
  • 历史总积分:659
  • 注册:2007年2月02日
发表于:2008-12-25 09:00:07
7楼

呵呵,你说的这个我也遇到过

你所遇到的问题主要有两种原因造成的:

1. Windows定时不精确。

        这个就不用说了,网上一搜就知道了,不过也是可以解决的,比如用Rtx等,定时精度最高可达0.1ms,我已经实现了的。

2. 普通PCI指令通讯速度慢。

       这个可能好多人没有意识到,Pmac所带的指令有普通PCI和DPRAM的两种。普通PCI的指令(如SendCommandToPmac等),需要经过Windows的机制,我测过,通讯时间一般在400~500us,如果你在同一个定时周期内使用了多个这种指令,就会有较大的延迟。而使用另外一种——DPRAM,即共享内存方式的,则可以解决这个问题。前提是你买PMAC卡的时候选了OPT-2模块。

当然在使用上还有很多技巧。我做的系统,实时绘图,一秒钟可以绘500个点以上,并且一点都不卡。

若有问题可发邮件与我联系: yjukh # 163.com

动感

  • 精华:0帖
  • 求助:0帖
  • 帖子:18帖 | 28回
  • 年度积分:0
  • 历史总积分:23
  • 注册:2007年7月11日
发表于:2008-12-28 16:49:02
8楼
我使用了DPRAM,双端口模式,问题不是你分析的第二种,就是第一种,不过RTX是否能够支持PMAC 的确是问题,如果你试过的话可以告诉我结果吗?发到我的邮箱里,谢谢!

波恩

  • 精华:10帖
  • 求助:0帖
  • 帖子:203帖 | 11028回
  • 年度积分:0
  • 历史总积分:36300
  • 注册:2003年6月12日
发表于:2008-12-28 17:14:28
9楼

没听说过PMAC会这样受到Windows时钟中断精度的限制,估计是楼主的操作存在不足之处,建议咨询PMAC的相关技术支持。

小虫~~

  • 精华:0帖
  • 求助:2帖
  • 帖子:19帖 | 307回
  • 年度积分:0
  • 历史总积分:659
  • 注册:2007年2月02日
发表于:2008-12-29 12:32:54
10楼

楼上的明显没看懂楼主的意思

人家问的是Windows时钟不准,发指令要用的,又没说Pmac受限制

 

小虫~~

  • 精华:0帖
  • 求助:2帖
  • 帖子:19帖 | 307回
  • 年度积分:0
  • 历史总积分:659
  • 注册:2007年2月02日
发表于:2008-12-29 12:36:07
11楼
Rtx是扩展Windows,使用Pmac绝对没有问题,我们的系统已经用了的,并且是给军工单位提供的设备。

行者无争

  • 精华:3帖
  • 求助:0帖
  • 帖子:10帖 | 2797回
  • 年度积分:0
  • 历史总积分:3
  • 注册:2008年12月10日
发表于:2008-12-29 20:46:32
12楼
既然用了RTX,就可以管理x86的实时体系,windows的时钟体系的准确度还那么重要吗?

李劲松

  • 精华:0帖
  • 求助:0帖
  • 帖子:12帖 | 448回
  • 年度积分:0
  • 历史总积分:585
  • 注册:2005年12月11日
发表于:2009-01-09 17:43:00
13楼

1.估计你不能称"周公"为兄弟,因为我估计你不超过30岁。

2.你可能是用的位置+WINDOWS系统时钟的方法在绘制速度曲线,出现锯齿是因为你用TIMER或者线程来作为时间增量绘图,你把线程或者TIMER之间的时间间隔想像成了你用SetTimer的那个时间了,其实他不是的,因为window不实时。如果你用long lTimer = timeGetTime();函数来读取时间(自操作系统启动之后所流逝的时间单位为毫秒),并且以两次读取时间差作为时间增量而不是设置定时器的那个时间来绘图则问题将迎刃而解。

刘岩利

  • [版主]
  • 精华:2帖
  • 求助:0帖
  • 帖子:16帖 | 8239回
  • 年度积分:397
  • 历史总积分:28760
  • 注册:2005年3月09日
发表于:2009-01-09 17:51:13
14楼

"如果你用long lTimer = timeGetTime();函数来读取时间"

“timeGetTime();”这个函数有时不好用。我没有发现具体与什么硬件或软件相关,但是曾经在一台机器上,“timeGetTime();”的值总是16的倍数。

168888

  • 精华:1帖
  • 求助:0帖
  • 帖子:13帖 | 2103回
  • 年度积分:0
  • 历史总积分:4601
  • 注册:2005年3月23日
发表于:2009-01-09 18:25:24
15楼
       

李劲松

  • 精华:0帖
  • 求助:0帖
  • 帖子:12帖 | 448回
  • 年度积分:0
  • 历史总积分:585
  • 注册:2005年12月11日
发表于:2009-01-09 18:30:34
16楼

这个,我倒没曾遇到过,楼主的问题貌似我以前用某国内牛卡(模拟量闭环卡)做TUNNING时为观察实际速度曲线做的一个小软件遇到的,(因为这个牛卡当时没有配套的TUNNING软件!),刚开始使用5毫秒作为横轴--时间轴--增量,光栅尺读到以后作为纵坐标,这样将一次次采集到的点连起来就是我要的曲线了,可绘出来的曲线是夸张的锯齿波,后来软件研发部的同事告诉我,定时器是不准的,PC想给你干活就给你干活,不想给你干活了几秒钟不动。于是我从他那里学到了这个函数,绘制的曲线平滑多了,基本能反映机台的位置,但还是没有PMAC卡的曲线贴近实际,因为它的位置是卡来采集的,量化周期比较确定。

刘岩利

  • [版主]
  • 精华:2帖
  • 求助:0帖
  • 帖子:16帖 | 8239回
  • 年度积分:397
  • 历史总积分:28760
  • 注册:2005年3月09日
发表于:2009-01-10 10:14:16
17楼

楼主的问题貌似我以前用某国内牛卡(模拟量闭环卡)做TUNNING时为观察实际速度曲线做的一个小软件遇到的,(因为这个牛卡当时没有配套的TUNNING软件!),

借问一下,现在他们提供类似软件了吗?


热门招聘
相关主题

官方公众号

智造工程师