04-13-2022 09:53 AM
Hi All, I'm using an NI-6509 / PCI card to generate encoder pulses. All we do is write to the outputs every 2ms. It seems the write is a blocking call, and when we check the min/max time for a write is varies from 0.1ms to 1ms, sometimes we even get write times up to 2ms, which causes some issues.
So I have 2 questions:
1. Is there a way to make this call "non-blocking"
2. Why does the call take so much time
Here is the Python code to create the task:
Here is the write method, called every 2msec
04-13-2022 09:57 AM
In my opinion, you have got the wrong device for your job. 6509 is software timed digital I/O - this means the software defines the duration between any digital state change. With this said, there are software overheads (like the driver) and in the end, you're at the mercy of your OS to let you execute at the time you want it to execute (which is typical of Windows).
You need a device with Hardware timed digital output (this means a dedicated circuit on the device ensures that the digital states are updated at specified time intervals without any interruption).
04-14-2022 01:03 PM
Thank you very much Santhosh, can you suggest some PCI cards with hw timed digital outputs ? We need about 8 IOs, 5volts.
Best regards,
Jeff
04-14-2022 03:04 PM
Going the PCI or PCIe route will fetch far fewer options for the cards and most of them are obsolete. Before I get to suggest a new HW, please elaborate on your requirements to make the right choice.