Komunikacja Master - Slave - LV.
: 30 sty 2020 22:22
Witam.
Poświęciłem już trochę czasu na rozwiązanie mojego problemu i znalezienie odpowiedzi gdzie tkwi kruczek niestety bezskutecznie dlatego szukam pomocy tutaj.
Mianowicie prowadzę komunikację pomiędzy urządzeniami na magistrali RS485 w sposób 1x master i kilka slave.
Komunikacja wygląda w ten sposób że master adresuje kolejno slave i udziela mu szczeliny czasowej w czasie której ten może wysłać dane.
Tutaj nie ma problemu i komunikacja pomiędzy wszystkimi urządzeniami przebiega prawidłowo. Problem natomiast pojawia się po stronie labview, a dokładniej to dwa problemy:
1) Labview nasłuchuje magistralę i wyświetla parametry na pulpicie. W pierwszej ramce pakietu przesyłam wartość w którym zapisany jest czas trwania całego pakietu - czyli czas przez jaki trwa odpytanie wszystkich slave (23 ms). To jest po to aby LV wiedziało ile trwa cały pakiet.
I tu pojawia się pierwszy problem. pakiet trwa ok 23ms więc teoretycznie po tym czasie powinienem mieć w buforze wszystkie dane a tak nie jest. Muszę do tego czasu doliczyć min 8ms. Dlaczego tak jest? skąd to opóźnienie? Gdzie jest ta zwłoka? Czy związane jest to z PC?
2)Po odebraniu całego pakietu, ostatnią ramką jest przydzielona szczelina czasowa dla LV abym mógł w tym czasie wysłać komendę z LV na magistralę.
Tu pojawia się drugi problem. Mimo iż nadawanie odbywa się zaraz po odebraniu danych z bufora to fizycznie na magistrali pojawia się dopiero po ok 16 -24ms. Dlaczego?
Poświęciłem już trochę czasu na rozwiązanie mojego problemu i znalezienie odpowiedzi gdzie tkwi kruczek niestety bezskutecznie dlatego szukam pomocy tutaj.
Mianowicie prowadzę komunikację pomiędzy urządzeniami na magistrali RS485 w sposób 1x master i kilka slave.
Komunikacja wygląda w ten sposób że master adresuje kolejno slave i udziela mu szczeliny czasowej w czasie której ten może wysłać dane.
Tutaj nie ma problemu i komunikacja pomiędzy wszystkimi urządzeniami przebiega prawidłowo. Problem natomiast pojawia się po stronie labview, a dokładniej to dwa problemy:
1) Labview nasłuchuje magistralę i wyświetla parametry na pulpicie. W pierwszej ramce pakietu przesyłam wartość w którym zapisany jest czas trwania całego pakietu - czyli czas przez jaki trwa odpytanie wszystkich slave (23 ms). To jest po to aby LV wiedziało ile trwa cały pakiet.
I tu pojawia się pierwszy problem. pakiet trwa ok 23ms więc teoretycznie po tym czasie powinienem mieć w buforze wszystkie dane a tak nie jest. Muszę do tego czasu doliczyć min 8ms. Dlaczego tak jest? skąd to opóźnienie? Gdzie jest ta zwłoka? Czy związane jest to z PC?
2)Po odebraniu całego pakietu, ostatnią ramką jest przydzielona szczelina czasowa dla LV abym mógł w tym czasie wysłać komendę z LV na magistralę.
Tu pojawia się drugi problem. Mimo iż nadawanie odbywa się zaraz po odebraniu danych z bufora to fizycznie na magistrali pojawia się dopiero po ok 16 -24ms. Dlaczego?