С NI это "RTFMs"
При программировании устройств NI обычно требуются два руководства.
- Справка NI-DAQmx (для программирования )
- спецификация устройства (для устройства part)
Вам нужны оба, потому что API NI-DAQmx поддерживает каждое DAQ устройство, которое NI производит, но не каждое устройство имеет одинаковые возможности. «Возможности» включают в себя не только количество каналов каждого вида, но также подсистемы хронирования и , запускающие , а также внутреннюю маршрутизацию сигналов. Приложение DAQmx, работающее с одним устройством, не гарантированно будет работать с другим, поскольку приложение может использовать API таким способом, которым второе устройство не может поддерживать.
Наконец, в области документации, любое данное устройство NI DAQ обычно принадлежит к семейству связанных устройств, и эти семейства также имеют руководство под названием Руководство пользователя . Эти руководства пользователя служат мостом между API и спецификацией устройства, помогая понять, как устройство реагирует на команды. Для 6002 это семейство «недорогих DAQ USB-устройств» .
Аналоговый триггер для аналогового выхода на NI 6002
Ваше определение верно, что
writeLED.triggers.start_trigger.cfg_anlg_edge_start_trig(V_PIN,trigger_level = 0)
возможно возможно, просто , а не для USB 6002. Эта строка запрашивает подсистему аналогового вывода использовать аналоговый граничный триггер, но подсистема аналогового вывода для 6002 имеет только эти триггерные возможности:
- программное обеспечение
- PFI 0
- PFI 1
Для этого устройства единственным вариантом является software
триггер, поскольку линии PFI являются цифровыми триггерами, а их уровень запуска указан в диапазоне от 0,8 В до 2,3 В.
Измените вашу программу на Python так, чтобы она обнаруживала пересечение нуля из потока аналогового ввода, и, когда это произойдет, заставьте ее вызвать stop()
, а затем start()
в AO задача.
Причиной последовательности остановки-запуска является повторное срабатывание : вы хотите зажечь светодиод для каждый пересечения нуля, но задание не может быть перезапущено, если только он был либо остановлен (API или выполнением его задачи), либо настроен для повторного запуска. Поскольку 6002 принадлежит к недорогому семейству, эта аппаратная функция недоступна, поэтому вы должны использовать API, чтобы остановить задачу AO или дождаться завершения генерации AO, прежде чем перезапустить импульс для светодиода
![clip from 6002 specifications showing the analog output subsystem capabilities](https://i.stack.imgur.com/q3cMc.png)