Piszę program VB.net z wykorzystaniem A-DAQ PRO do w/w modułu.
Moduł posiada dwa liczniki, a mój problem wygląda tak:
Ponieważ po dodaniu kontrolki licznika w jej ustawieniach można obsłużyć tylko jedno wejście licznika musiałem dodać 2-gą taką kontrolkę ustawiając ja na 2-gie wejście.
Podaje sygnał 200Hz z jednego generatora na oba wejścia na raz.
I teraz kod czytania licznika w timerze co 10 s, żeby na pewno starczyło mu czasu na procedurkę:
- Kod: Zaznacz cały
AxAdvCounter2.Started = True
AxAdvCounter1.Started = True
While wyjscie
AxAdvCounter1.ReadMeasurementValue(varData1, False)
AxAdvCounter2.ReadMeasurementValue(varData2, False) ' Co ciekawe gdy pominę to w tej pętli to varData2 jest "0"
If (ilosc_impulsow_testu < varData1) Then
AxAdvCounter2.Started = False
AxAdvCounter1.Started = False
wyjscie = False
End If
End While
AxAdvCounter1.ReadMeasurementValue(varData1, False)
AxAdvCounter2.ReadMeasurementValue(varData2, False)
I tu nieprzyjemne zdziwienie - występuje poważna różnica impulsów, w dodatku pływająca, ale zawsze varData2 jest mniejszy od varData1 i dla ilosc_impulsow_testu = 100 mam varData1 w granicach 102 do 105 (to OK nie przeszkadza), ale varData2 w granicach 79 do 86.
Co dziwniejsze gdy zwiększe ilosc_impulsow_testu np do 500 różnica między licznikami rośnie i pływa między 30 a 50 impulsów.
Celowo poprzestawiałem komendy start i stop poszczególnych liczników, lecz nie zmieniło to znacząco sytuacji.
Impulsy na pewno dochodzą prawidło do wejść liczników - sprawdzone na oscyloskopie.
Wcześniej miałem kartę PCI z 4 licznikami i tam jedna komenda mogła na raz wystartować i zatrzymać 4-ry liczniki, więc działało to prawidłowo.
Proszę o podpowiedź, może coś robię nie tak. Co można z tym zrobić?