Opóźnienie odczytu z VISA przy odczycie wejść analogowych

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
Awatar użytkownika
Zer0
Posty: 29
Rejestracja: 25 sty 2010 23:23
Wersja środowiska: LabVIEW 2014
Lokalizacja: Olsztyn

Opóźnienie odczytu z VISA przy odczycie wejść analogowych

Post autor: Zer0 » 26 sie 2016 10:24

Szanowni,

Taki oto program działa sobie na 2 stanowiskach:
1) testowym, gdzie do pracy zaprzęgnięta została karta NI USB-6008
2) produkcyjnym, wyposażonym w kartę NI USB-6343 X Series
main.png
główny vi
Do urządzenia podłączona jest klawiatura przemysłowa do zadawania wartości sterujących, obsługiwana za pomocą przejściówki RS-USB (CH340). Wszystko niby działa, aplikacja reaguje na klawiaturkę bardzo płynnie, natomiast jak tylko startuje odczyt wejść analogowych aplikacja potrzebuje ok 2-3 sekund na zareagowanie na przyciski klawiaturki. Aplikacja sama w sobie raczej nie zwalnia, bo reaguje całkiem szybko na zmianę stanu czujników krańcowych lub na sterowanie przyciskami za pomocą myszy. Czy ktoś może mieć jakieś podejrzenia, jaki chochlik powoduje takie opóźnienia? Oczywiście na stanowisku testowym nie występują żadne opóźnienia, natomiast na produkcyjnym odczyt klawiaturki się okrutnie wiesza.

DAQ Assistant skonfigurowany jest do odczytu / zapisu na '1 sample on demand'. Zmiana parametru na 'continous' powoduje w krótkim czasie błąd mówiący o tym, że hardware nie nadąża, zaś 'n samples' nie wprowadza praktycznie żadnej zmiany w stosunku do '1 sample on demand'.

2 bloczki zaznaczone czerwonymi kółkami zawierają następującą strukturę:
open.png
otwarcie sesji visa
read.png
odczyt

Awatar użytkownika
aaddaas
Posty: 182
Rejestracja: 26 cze 2013 20:42
Wersja środowiska: LabVIEW 2015

Opóźnienie odczytu z VISA przy odczycie wejść analogowych

Post autor: aaddaas » 26 sie 2016 13:09

Możesz podrzucić vi? Bo wybitnie źle się czyta z takich obrazków...
Inna sprawa, to jest konfiguracja DAQ ADC, bo być może to na niego czekasz, aż zareaguje.
Ogólnie, to nadużywasz Local Variable, oraz frame structure, przez to możesz sam wprowadzać sobie opóźnienia, lub odczywtywanie błędnych wartości.
Obrazek

Awatar użytkownika
micard
Posty: 124
Rejestracja: 30 wrz 2011 11:28
Wersja środowiska: LabVIEW 2016
Has thanked: 4 times
Been thanked: 2 times
Kontakt:

Re: Opóźnienie odczytu z VISA przy odczycie wejść analogowych

Post autor: micard » 26 sie 2016 15:58

Wyrzuć CH340!!
To chińskie ustrojstwo mi również przyprawiło sporo problemów. Niespójne sterowniki, opóźnienia, brak kontroli parzystości to tylko kilka z problemów.

Do racjonalnych zastosowań proponuję ukłdy na bazie FTDI - są droższe, ale pewne.

Do zastosowań na produkcji świetnie sprawdzają mi się urzadzenia firmy MOXA - górna póła, nie sa najtańsze, ale od lat żaden nie sprawił mi problemu

Awatar użytkownika
Zer0
Posty: 29
Rejestracja: 25 sty 2010 23:23
Wersja środowiska: LabVIEW 2014
Lokalizacja: Olsztyn

Re: Opóźnienie odczytu z VISA przy odczycie wejść analogowych

Post autor: Zer0 » 28 sie 2016 17:46

Czołem! Dzięki za zainteresowanie :)
aaddaas pisze:Możesz podrzucić vi? Bo wybitnie źle się czyta z takich obrazków...
Inna sprawa, to jest konfiguracja DAQ ADC, bo być może to na niego czekasz, aż zareaguje.
Ogólnie, to nadużywasz Local Variable, oraz frame structure, przez to możesz sam wprowadzać sobie opóźnienia, lub odczywtywanie błędnych wartości.
Tak, mogę wrzucić kilka vi. Na razie tych najbardziej niezbędnych.
MAIN.vi
(291.95 KiB) Pobrany 39 razy
Tasti_Open.vi
(25.68 KiB) Pobrany 38 razy
Tasti_232.vi
(41.21 KiB) Pobrany 48 razy
Local variable da się wyrzucić, jeśli to one mogą wprowadzać opóźnienia. Rzeczywiście usunięcie wewnętrznej ramki trochę przyspiesza działanie aplikacji. Może zatem lepiej komunikację ze światem zewnętrznym zamiast na DAQ Assistant oprzeć o takie oto rozwiązanie:
png.png
png.png (9.08 KiB) Przejrzano 1101 razy
Wydaje się, że mam większą kontrolę nad tym, co robi LV
micard pisze:Wyrzuć CH340!!
To chińskie ustrojstwo mi również przyprawiło sporo problemów. Niespójne sterowniki, opóźnienia, brak kontroli parzystości to tylko kilka z problemów.
Do racjonalnych zastosowań proponuję ukłdy na bazie FTDI - są droższe, ale pewne.
Do zastosowań na produkcji świetnie sprawdzają mi się urzadzenia firmy MOXA - górna póła, nie sa najtańsze, ale od lat żaden nie sprawił mi problemu
CH340 nigdy nie sprawiał mi większych problemów. Szczególnie kiedy szczegóły transmisji 232 były mi dokładnie znane. Poza tym komunikacja przez CH340 chodzi na sprzęcie testowym, a na sprzęcie produkcyjnym działa do momentu, kiedy zaczynam odczytywać dane analogowe.

Awatar użytkownika
aaddaas
Posty: 182
Rejestracja: 26 cze 2013 20:42
Wersja środowiska: LabVIEW 2015

Opóźnienie odczytu z VISA przy odczycie wejść analogowych

Post autor: aaddaas » 29 sie 2016 11:04

Nie analizując całego programu już masz race condition w TASTI_232.vi Wpisujesz wartość do indykatora Odczyt, a jednocześnie z niego czytasz przy pomocy Local Variable. NIE jesteś w stanie na 100% mieść pewność, że uda Ci się do niej coś wcześniej wpisać, zanim z niej zaczniesz czytać. Popraw to i sprawdź czy coś się zmieniło

***EDYTA

Druga sprawa jest ze zbieraniem danych.
Przechwytywanie.PNG
W zależności od wartości kontrolki "stan" Case structure będzie się wykonywał wykorzystując lub nie dane z ADC. Lepiej już wrzcić ADC do środka Case Structure, bo będzie czekał na dane wtedy, gdy spodziewasz się je wykorzystać.
Obrazek

ODPOWIEDZ