当我在VxWorks Real Time Targets环境下使用多个Wait on IRQ节点时,为何会得到假的返回值?



主要软件:
主要软件版本: N/A
主要软件修正版本: N/A
次要软件: N/A
硬件: CompactRIO>>Controllers>>cRIO-9012, CompactRIO>>Controllers>>cRIO-9014

问题: NI-RIO 2.3搭配LabVIEW 8.5的使用可以支持在单一VI中使用多个Wait on IRQ节点。然而,当我使用CRIO-901x控制器时,会从"Wait on IRQ" 节点得到假的返回值。这个现象并不会发生在cRIO-9000x或其他Pharlap的Real-Time控制器。这个问题为何发生呢?

解答:

在LabVIEW 8.2及更早之前的版本,一个host interface VI中只能有一个Wait on IRQ节点。NI-RIO 2.3搭配LabVIEW 8.5的使用可以支持在单一VI中使用多个Wait on IRQ节点。然而,如果应用程序使用多个"Wait on IRQ"节点,同时又发生time-outs的状况,那么有时候你会看到"Wait on IRQ"节点会因为其他的节点收到信息而跟著被启动。这个问题的的另一个特征是如果你使用多个"Wait on IRQ"节点,而且这些节点在等待不同的IRQs,如果其中有一个发生times out的状况,你可能会看到当已经timed out的节点最终启动时,其他的节点有假的返回值。下面的执行会导致一个假的返回值:

任务A在等待IRQ X时发生一次以上的time out情况
任务A在等待IRQ Y
IRQ X有回应,接着启动在等待其他IRQ的任务A

这个问题只会发生在VxWorks Real-Time targets,同时问题已经在NI-RIO 2.3.1被修正。



相关链接: KnowledgeBase 4E2GSKLX: List of Bug Fixes for NI-RIO 2.3.1

附件:






报告日期: 08/15/2007
最近更新: 10/30/2008
文档编号: 4CEFMFLX