有关工控机的入门级问题(100分)

  • 主题发起人 主题发起人 ax518598
  • 开始时间 开始时间
A

ax518598

Unregistered / Unconfirmed
GUEST, unregistred user!
请问在工控机中,用Delphi编程,用TCP协议,其实时性一般为多少,毫秒?微秒?(50)
如果用Pascal编程其实时性会大体上好多少?(20)
在基于DOS的工控机编程中,Pascal和 C语言两者能给一个简单的比较吗?(30)
 
你做什么项目?对实时性要求很严吗?
 
实时性与操作系统有关,与编程语言应该关系不大
 
我用win98/PIII500/pcl818HG采集卡/做实时控制, 发现最小能达到10ms的控制, 而精度也只有10-20ms, Delphi的Timer更差, 只能达到40ms左右。 而我目前有个要求为12.5ms的控制根本无法达到, 多方查资料, 好像只有RT-Linux、VxWorks等操作系统能达到要求, 而这些操作系统下的安装、驱动、编程都是比较麻烦的(在字符界面下、纯C编程)。

另外, DOS下用中断方式采集的实时性可达ms级别, 但DOS不是多任务的, 不能让采集、反馈计算、输出控制同时精确地进行。如果纯粹作实时采集还是可以的。
 
在dos下做吧,windows 绝对没戏
 
我给用户使用工控机时,只是用来采集数据,其他的处理过程都是另有服务器来执行
 
为什么要自己做???有现成的工控软件啊,如ABB或是西门子公司的Step7 或是施耐得公司都有
 
楼上的。那些东西要很多money啊。
实时性很操作系统的关系比较大吧。
你要是用tcp通讯的话,恐怕通讯的时间也要算进去吧。
 
DELPHI没有说不能达到10mS以下的啊?!当然使用TTimer是不行的,精度不行,有一个好方法,提取CPU时钟,将其分频之后绝对能满足你的要求。你的采集卡最小是10mS也就是说只能达到100K以下的频率,根据采样定律你也只能采集到50K以下的频率。现在的CPU都是上G的,没条指令的时间绝对比你采集卡上的单片机一个NOT的时间短。
 
我正在回答一个关于OPC的问题,你可以参考一下:
http://www.delphibbs.com/delphibbs/DispQ.asp?LID=1981495

Windows系统支持实时性操作很差,即便使用线程,也是如此。
 
to lissdd
具体来说不是delphi的问题,delphi也能做精确控制,但是不能使用Timer,windows每个Timestick时间是54.925 ms ,所以timer也不可能精度高于55 ms 。
 
实际上,我后来在局域网中同一个网关内,两台PIII,用Delphi中自带的NetChat例子测试过了,使用TCP协议,最简单地向对方发出一行文本,对方收到后反方向发回,总共用时是这样的:第一次为21ms,以后大多只有10ms,而工控计算机处理会不会比这慢,所以前面各位大哥讲的单位是否应该改为微秒,因为Timer的每秒为1000,所以至少精度也应该为 1ms,所以即使在windows下也应该是毫秒级的精度。

谢谢各位。
 
该问题结题了,谢谢各位。
 
to ax518598
你收到报文是10ms, 你能控制到11ms、12ms、13ms...吗? 不可能,我做过测试。
这足以证明windows的精度不能达到1ms。
而Timer的interval 是1000, 根本不可能到1ms,正如 YANGWEI0308 所说。
 
Timer用于作实时控制肯定是行不通的,除非你的实时性要求不高。MSDN中有对TIMER的详细说明,Windows对于定时器的优先级在所有设备中是最低的。
 
我的工控程序都是用Delphi做的,至于数据采集的效率,用TTimer肯定是不行的,我使用第三控件的定时器则可以达到1ms的控制精度,如 LMD 的THiTimer,IOComp的TiTimers等就可以满足要求,如果要达到微秒级的控制精度则需要调用API使用高性能频率计数器,如果要达到纳秒级的精度就要使用CPU的频率了,在Delphi中可以嵌入汇编语言实现。
 
后退
顶部