No ale w jaki sposób zagwarantujesz, że Twój kod wykona się zaraz po otrzymaniu zapytania? W Modbusie jest timeout, jeśli ty zaś odpowiadasz na sztywno co około 300ms, to jak ma to działać? Równie dobrze może być tak, że odpowiedź do panelu wysyłasz po 299ms od wysłania zapytania - wtedy panel już nie czeka na nic. Przy okazji po zakończeniu Twojego...
W skrócie to używasz RxD TxD RTS. Najprew ustawiasz linie RTS ( odbiór albo nadawanie) a potem puszczasz ramkę. Interesuje się modbus cz jakiś własny protokół?
Masz opóźnienie zanim się przełączysz na odbiór, może poprostu przegapiasz ramkę?
Witam, Twoja wypowiedź jest iście zaskakująca. Ciekawi mnie fakt że pytałeś się tak wielu osób i żadna nie widziała jak Ci pomóc. Zacznij od strony http://www.simplymodbus.ca/ oraz wyszukaj wszelkich informacji na temat tego jak jest zbudowana ramka w sieci ModBus. Jakie kody funkcji odpowiadają za odczyt poszczególnych danych z urządzeń. Jeśli będziesz...
Urządzenia slave ustaw na odbiór a mastera na nadaj po wysłaniu poprawnej ramki pytającej przełącz mastera na odbiór i odpowiedniego slavea na nadaj - oczywiste:). Dwa urządzenia nie będą nadawać na raz ponieważ ramka modbusa jest dość skomplikowana i wątpię w to aby wystąpiły takie błędy w niej że będzie ci się zgadzać crc.
Dokładnie prawdopodobnie problem dotyczy przerwań. Ramkę odbieram w założonym czasie zliczania przez timer w przerwaniu. Założony czas wystarczy na całkowity odbiór ramki a jednak tak nie jest. Może ktoś miał ten sam problem. Dodatkowo założyłem odpowiednio priorytety przerwań, ale nic to nie pomogło.
Nie wiem "jak to jest opisane w datasheet Atmegi". Modbus RTU odbiera się tak samo jak ASCII. Różni się sposobem wykrywania początku i końca ramki - w trybie RTU to czas ciszy na łączu. [url=http://www.modbus.org/specs.php]Spe...
To jest tylko ramka testowa, nic nie chce robić. Chciałem zobaczyć czy sterownik dostanie ramkę i dostaje bo na sterowniku są 2 diody. Jedna odpowiada za odbiór a druga za nadawanie. Niestety nic nie odpowiada ale już wiem dlaczego :) Co do testera modbus to posiadam takowy ale on ma już "wbudowane" obliczanie CRC więc zostaje tylko kwestia wyboru funkcji...
Konwerter w trybie przezroczystym przesyła bajt po bajcie dane odebrane z połączenia TCP na port RS485, a odebrane z RS485 wysyła połączeniem TCP. Nic więcej. Co konkretnie jest przesyłane możesz podejrzeć Wiresharkiem. Musisz sam zadbać, żeby przesyłane dane miały sens, a także żeby było dość czasu na ich transmisję po RS485 przy wybranej szybkości,...
czy możesz wyedytować i wkleić kawałek takiej biblioteki sterującej Modbasem. ewentualnie troszkę bardziej to opisać Niestety nie mam gotowego kawałka kodu dla S7-300, bo nigdy na tym sterowniku nie potrzebowałem Modbusa. W skrócie wygląda to tak, że musisz przygotować sobie ramkę Modbus z jakimiś danymi, np. odczyt albo zapis jakiegoś rejestru (struktura...
Dokumentacja opisuje, że adres abonenta, prędkość transmisji i bity parzystości/stopu się ustawia z menu urządzenia. Najlepiej przestaw na inne a później wróć na 9600 8N1. Składałem sam ramkę zapytania (identyfikator kod_funkcji rejestr ile_odczytać CRC) Wstaw jaką ramkę złożyłeś. Możesz użyć programu Modbus Tester z www.modbus.pl, dobrze się sprawdza...
Moim zdaniem odbiór przez DMA sensu nie ma. Istnieją opublikowane rozwiązania z buforem cyklicznym i DMA, których niektórzy Koledzy z forum używają z powodzeniem - i to działa, chociaż moim zdaniem jest to przerost formy nad treścią. uC bez problemu poradzi sobie z przerwaniami odbioru UART. Tu nie do końca się zgodzę, stosuję odbiór przez DMA przy...
Zapamiętujesz timestamp ostatnio odebranego znaku (w milisekundach albo w mikrosekundach w zależności od prędkości transmisji). Następnie testujesz ile czasu upłynęło od odebrania ostatniego bajtu (np w przerwaniu od timera). Jeżeli czas od odbioru ostatniego bajtu > 3.5T to uznajesz że odebrałeś poprawną ramkę.
(at)ElektrodaBot Nie chcę używać innych zewnętrznych urządzeń oprócz WiFi Solis Data Logging Stick DLS-WIFI. Chciałbym odczytać napięcie używając Serwer B ,który znajduje się w zakładce Advanced na stronie konfiguracyjnej loggera. Bezpośrednia odpowiedź na pytanie Aby odczytać napięcie z falownika Solis (np. 3P5K-4G) za pośrednictwem wbudowanego rejestratora...
Witam, piszę właśnie obsługę Modbusa (master) w Delphi. Do komunikacji przez RS używam komponentu TComPort. Problem w tym, że około 10% odebranych ramek ma ucięty początek. Procedura odbioru(bez dalszego przetwarzania) wygląda następująco: procedure TFkomunikacja.ComPort1RxChar(Sender&... TObject; Count: Integer); var odebrane:Ansistring;...
Jeżeli w takiej ramce zapytania jest jakiś błąd to z reguły urządzenia (przynajmniej sterowniki PLC) są tak skonstruowane, że nic nie wysyłają. Tyczy się to również sumy kontrolnej - jeżeli jest zła to sterownik też nic nie odpowie. Z tego co widzę zmieniłeś numer urządzenia na 5 tak więc suma kontrolna jest inna 8B a nie 8D. Widzę również, że masz...
Dodatkowy pin przełącza max485 między nadawaniem a odbiorem.Jeśli urządzenia ma być typu slave utrzymujesz maxa na odbiorze czekając na poprawną ramkę z poleceniem modbus i adresem twojego urządzenia od mastera. Po odebraniu polecenia przełączasz maxa na nadawanie i wysyłasz odpowiedź.
Tematu nie porzuciłem, spokojnie :) Poczytałem trochę o klasach, bo przyznam się szczerze, jakoś do tej pory traktowałem to po macoszemu. Poczytałem o modyfikatorach dostępu, klasach i zmiennych statycznych, getterach i setterach. Wobec poszerzonej wiedzy - stary program wrzuciłem radośnie do śmietnika i napisałem nowy wykorzystując kilka funkcji ze...
Protokół to jedno, złącze elektryczne to drugie. Sugeruję wykonanie interfejsu Rx dla RS485, czyli 75176 z wymuszonym kierunkiem odbiór. Z wyprowadzenia Rx 75176 dajesz sygnał na analizator. Oczywiście 75176 wymaga zasilania. Możesz także doprowadzić jeden z sygnałów linii różnicowej do wejścia analizatora. Jeśli progi wyzwalania pozwolą na dostosowanie...
Napisałem sobie obsługę protokołu modbus pod Atmege8 (taką prowizoryczną). W fazie projektowej symulowałem zapytanie od Mastera które było analizowane zaraz po wystartowaniu. uC reaguje prawidłowo tzn. Wysyła ramkę zgodną z oczekiwaniami. Problemy zaczęły się przy odbiorze danych po interfejsie UART. Otóż dane odbierane przez uC nie zgadzają się z tym...
Tak jak pisałem sprawć to modbus masterem z zwykłego komputera i porównaj te ramki wtedy bedziesz wiedział po której stronie jest błąd.
Dziękuję koledzy za odzew. Postatram się dzisiaj zebrać wszystko do kupy i zmodyfikować schemat i projekt. Na razie odpowiem jedynie na ostatnie pytanie. Wszystkie WA1 są ustawione jako odbiorniki. CJP1 używa przejściówki UART/USB która za pomocą MAX485 jest wpięta w sieć RS485. To właśnie ta przejściówka steruje kierunkiem owego MAX485 - gdy nadaje...
Cześć. Pracuję nad takim małym systemem komunikacji pomiędzy kilkoma urządzeniami pomiarowymi a PC. Pomiędzy urządzeniami a PC jest coś w rodzaju hub'a, co sam zaprojektowałem i wykonałem - ogólny schemat jest taki: http://obrazki.elektroda.pl/5939738300_1... Wspomniane przeze mnie urządzenia pomiarowe nie są pierwszej nowości, więc...
Nie własne rozwiązanie tylko wszystko zgodnie ze standardem. Źle podszedłeś do odbioru danych. Musisz stworzyć sobie bufor który zgodnie ze standardem MODBUS musi zmieścić jedną cała ramkę która może mieć 256B. Ramki oddzielone są miedzy sobą przerwą trwającą co najmniej - i tu nie pamiętam 1,5 lub 3,5 znaku. Więc po odebraniu każdego znaku czekasz...
Czy jest potrzebna jakaś kontrola (synchronizacja) czasu przełączania się Tx/Rx poszczególnych par urządzeń? Jeżeli protokół komunikacji jest dobrze "napisany" i zaimplementowany to nie trzeba nic synchronizować, jeżeli tak nie będzie, to będą problemy (np: odpowiedź od slave'a może nadejść za późno i wtedy jak master w tym czasie "zajmie" magistralę...
No cóż - każdy początkujący ma problem z transmisją RS485. Nie dlatego, że nie rozumie transmisji. Dlatego, że pojawiają się różne stany związane z konkretnym zachowaniem się układów. Problemy te można zdefiniować dopiero po szczegółowej analizie oscyloskopowej stanów linii transmisyjnych i linii TxD i RxD. Spróbuję pomóc, ale nie wiem, czy będziesz...
To ja może na początek dodam, że moja wiedza na temat propagacji sygnału radiowego jest znikoma. Co rozumiesz przez "anteny wew spólnej orientacji" ?? Tzn, że sa równolegle do siebie ... mówiąc po polsku :) Technicznie w aplikacji jest napisane BER=10-3 (jak się nie mylę), tylko nie pamiętam przy jakich parametach, czyli zakładając że nie zrobiłeś żadnego...
Przeczytaj specyfikację MODBUS, tam wszystko jest, uniwersalnie dla każdego urządzenia. http://www.modbus.org/docs/Modbus_over_s... Generalnie wygląda to tak, że po odebraniu każdego znaku czekasz 3,5 znaku na następny znak. Jeśli w tym czasie zostanie odebrany nowy znak, resetujesz timer i znowu czekasz ten okres, jeśli znak nie nadejdzie...
Witam Najlepiej użyć kosci TP-UART i problem rozwiązany ale cena 150zl netto powala!!! Wlasnie jestem na etapie testowania rs485 MultiMaster i tak: Kosc sn75176 docelowo sn75lbc184 obsługa do 128 nadajnikow. Kanal A poprzez rezystor podciągniety do VCC Kanal B poprzez rezystor do GND. Tylko w jednym sterowniku calej sieci i terminatory 120 na koncach,...
Witam. Czy ktoś używał kiedyś modułu siemensa 6ES7 138-4DF11-0AB0 do komunikacji po Modbus-sie z urządzeniami innych firm? Mój problem polega na tym, że moduł nawiązał komunikację z regulatorem firmy Lumel, wysyła do niego ramkę z odpowiednim zapytaniem lecz pojawia się błąd przy odbiorze danych.
Cześć Quine15 Sądząc po odpowiedziach niczego się nie dowiesz tu w kwesti programowania komunikacji w Delphi. Proponuje zajrzeć do książki "RS 232C - praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera" Daniluka. O ile dobrze pmiętam to były trzy wydania tych pozycji. Bardzo przystępnie napisane książki. Tłumaczenie kodu z C++ na Delphi...
witam. w związku z zapytaniami na meila odpowiem na ile mogę tu(być może komuś się to przyda. Jesli gdzies walnołem jakis bład prosze o wybaczenie:) już dawno projekt zakonczony a nie chce mi się na nowo teraz wszystkiego instalować i sprawdzac. na początku zanim zacząłem co kolwiek pisać podpatrzyłem terminalem (RTU) przes rs232 co tak naprawdę wysyła...
Witam wszystkich forumowiczów. Jest to mój pierwszy post dlatego też bardzo proszę o dużo wyrozumiałości. Mam do wykonania pracę inżynierską polegającą na zaprojektowaniu, wykonaniu i uruchomieniu węzła SLAVE sieci przemysłowej PROFIBUS DP. Węzeł ten zbudowany jest w oparciu o układ AB6000 firmy HMS oraz mikrokontroler ADuC842 (dokładnie to płytkę evaluacyjną...
Kod: [syntax=c] /************************* * stm32 uart main.c *************************/ #include "stm32f10x.h" #include "stm32f10x_flash.h" #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" #include "stm32f10x_usart.h" #include "stdint.h" #include "misc.h" #define CLK_FREQ 36000000 /* User defined function prototypes */ void GPIOA_Init(void);...
ramka modbus ramka danych modbus format modbus ramka
octavia deska rozdzielcza płyta grzejna amica powertrain control module
transit termos transit termost
Problemy z wgrywaniem firmware do projektora HY300 Błąd 0190-08 w MAN TGL: Czujnik ciśnienia paliwa