(at)ElektrodaBot, a możesz napisać kod dla ESP8266, oddzielnie dla ESP przy liczniku jak i przy falownkiu. Poniżej masz gotowe, działające szkice dla dwóch ESP8266 tworzących przezroczysty most Modbus RTU (RS‑485) po Wi‑Fi między falownikiem FoxESS T15‑G3 a licznikiem DTSU666. Rozwiązanie nie „rozumie” Modbusa — kapsułkuje całe ramki RTU (wykryte przerwą...
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ę.
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.
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...
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...
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,...
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ą...
Witam, Od jakiegoś czasu próbuję opanować komunikację protokołem Modbus. Udało się uruchomić komunikację na arduino (Uno, mega). Przeszedłem teraz do komunikacji z innymi urządzeniami. Tutaj również udało się nawiązać komunikację aż natrafiłem na urządzenie które posiada coś co według producenta to zwykły modbus który tylko obsługuje większą ilość rejestrów(5000)....
Witam. Chcę wysłać do urządzenia po modbusie RTU komendę załączającą jedno z wyjść przekaźnikowych. Moje pytanie to jak powinna wyglądać ramka na podstawie poniższych danych: Bity nadawane przez koncentrator: ADRES-adres urządzenia (1bajt) FUNKCJA-5(1bajt) ADRES HI-adres wyjścia (starszy bajt)-0 ADRES LO-adres wyjścia (młodszy bajt)-1,2 lub 10 WARTOŚĆ...
Wiem, że to pytanie będzie mega prostackie, ale dopiero startuję z ramkami Modbus. Czy jest gdzieś w Internecie, bo może nie umiem szukać, jakiś program, czy online, czy do ściągnięcia, który na podstawie adresu urządzenia, rodzaju zapytania (odczyt/zapis), adresie rejestru oraz typie danych skonstruuje pełną ramkę Modbus. Szukam po Modbus Tools, ale...
Programuje sterownik Schneider Twido w prog. Twidosoft, i ostatnio spotkalem sie z Ramka Modbusowa, co to jest ta ramka modbusowa? wiem tyle ze wykorzystuje sie do komunikacji i tylko tyle, ale jesli ktos moze mi wytlumaczyc w jaki sposob to sie wykorzystuje, jakie komendy. Przykladowo mamkomunikowac sie z 6 falownikami. Prosze o odpowiedz
Dzień dobry Pomógłby mi ktoś rozszyfrować ramki Modbus RTU? Poniżej zapytania które master wysyła do 2 slave'ów, potrzebuję rozpoznać jakie są adresy tych slave'ów, jakim numerem funkcji i o jakie rejestry pyta master. {FF}0000A00B8000800080008000000001460149...
Witam. Jak bedzie wygladala ramka modbusa RTU (bez sumy CRC- szkoda czasu na liczenie). Urzadzenie ma adres 1. Należy odczytać wartość wejścia analogowego AIW0 . To wejście ma adres 030001. Chodzi mi dokladnie o to, w którym miejscu w ramce zapytania (master->slave) bedzie umieszczony adres wejscia analogowego (030001) ??
Witam. Mam do zrealizowania funkcje komunikacji modbus na sterowniku plc s7-300.Sterownik jest slavem. Mam zrealizować funkcje która na wejściu będzie miała 3 bloki danych. DB_RECV, DB_Data, DB_SEND. W bloku danych DB_RECV ma znajdować się ramka modbus. Moja funkcja ma zdekodować ramkę i w zależności od żądania: odczyt, zapis (pojedynczych lub wielokrotnych...
Witam seredecznie. Poszukuję rozwiązani, które umożliwi mi połaczenie ze sobą do 15 urządzeń na magistrali RS485 i udostepnie wyniki jako urządzenie typu slave w sieci Modbus. Chodzi mi dokładniej o liczniki energii czynnej z portem RS485 z komunikacją Modbus RTU. Założenia są nastepujące: -mamy 15 liczników na magistrali RS485, każde ze swoim indywiduanym...
Witam! Mam pytanie do programistów sterowników PLC. Mając w sterowniku styk normalnie otwarty (-||-) na adresie "00059". Chcę wysłać z PC sygnał zamknięcia styku (-|/|-) po protokole Modbus (tryb ASCII). Jak powinna wyglądać ramka Modbus, która zamknie mi ten styk?
Potrzebuje opisu do protokołu DF1 i MODBUS! Czy nie ma ktoś opisu do ramki protokołu DF! lub modbas?? HELP!
Obecnie stanąłem nad tworzeniem programu (pisze najchętniej w delphi), do obsługi rejestratora srd-99 (pobieranie, wizualizacja i archwizacja danych). Pojawiły mi się problemy z komunikacją (modbus rtu, konwerter rs-232/rs-485). Jeśli ktoś tworzył coś podobnego, proszę pomoc. Chodzi mi szczególnie o obsługę komunikacji: wysyłanie i odbieranie ramek....
Staram się zrobić obsługę PT6958 za pomocą bascoma - niestety brak specyfikacji ramki skutecznie mnie blokuje. Może ktoś robił już obsługę tego układu i mógł by się podzielić przykładową procedurą - bo sam to już raczej nic nie wymyślę. w załącznikach pdf do PT6958
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...
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...
Zastanawiam się czy nie jest to wina błędnej w moim przypadku implementacji drivera modbus tzn. brak odpowiedniego delay`a między wysłaniem a odbiorem. Pojedyncze zapytania działają prawidłowo? Raz miałem problem z przełączaniem się konwertera 232/485 z odbierania na wysyłanie, więc czas o którym piszesz musiał być minimum 500ms. Pomijam fakt, że odstęp...
Masz opóźnienie zanim się przełączysz na odbiór, może poprostu przegapiasz ramkę?
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ół?
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.
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ź.
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.
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. 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.
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...
Doceniam za ten hash, choć nie spełnia to koncepcji ramki co do startu (konieczne) i kontroli poprawności (mile widziane/zalecane). Jak ramki są przez USB, ETH, mówimy o "sprzętowym," odbiorze a nie mostki w rodzaju FTDI, to, o ile ramka nie przekracza wielkości przyjętej przez standard, startu i stopu nie musi byc. Podobnie CRC, bo USB/ETH, daję "czyste"...
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ę...
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...
moze predkosci sa rozne lub inne formaty ramki. Bo jak dostajesz krzaki to znaczy ze komunikacja jest| O ile pamietam to modbus ma format 1 + 8 + 1 + 1 A jaki masz na PC-ie? Jakies bledy na PC-ie przy odbiorze?
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...
Witam wszystkich! Piszę właśnie program w C++ (Builder) do komunikacji modus RTU ze sterownikiem PLC. Chciałbym prosić was o rady jak rozwiązać problem odbioru ramki w odpowiednich ramach czasowych w trybie RTU. (Ramkę rozpoczyna i kończy przerwa czasowa 3.5x czas trwania pojedynczego znaku (u mnie 1 ms). Odstęp pomiędzy kolejnymi znakami tworzącymi...
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...
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...
A to nie powinno być tak, że ramka jest zakończona po upłynięciu czasu t1.5, następnie urządzenie przetwarza dane i po czasie t3.5 ma pozwolenie na nadawanie???? W tej sytuacji to nie będzie takiego problemu, bo właśnie slave adresowany "obrobi" i wyśle ramkę po t3.5 a slave nasłuchujący po t1.5 już będzie gotowy do kolejnego nasłuchu więc ma 2 znaki...
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...
(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. Nie wnikałem za bardzo w kod ale.. zacznij od uproszczenia funkcji odpytywania -tj wysyłania ramek przez UART. Zrezygnuj na początku z przerwań i po prostu wykorzystując pooling wysyłaj w pętli ramki. (Jak dojdziesz co jest nie tak, wtedy zaimplementuj przerwania:) Np by odczytać wartość rejestru spod adresu 100 wysyłasz: Bajt1 (Adres modbus)...
Też polecam metodę z przedstawieniem liczby w postaci znakowej i przesłania jej w takiej postaci. Wymieniłbym tu następujące uwagi: 1. Rzeczywiście, jak zauważył bobbyAIR , żadna z wartości zaraz po odbiorze przez uP lub PC nie ma jeszcze jakiejś szczególnej interpretacji, o ile takiej nie narzucisz. Jednak używając postaci binarnej, każdy przesyłany...
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...
Cześć, idę drogą ORNO (nie zgubiłem literki P na początku słowa) i napisałem prosty program (dla Arduino) do obsługi dwóch liczników OR-WE-504. Wynikiem programu jest sześć wartości odczytanych po RS485 z ORNO: napięcie AC, prąd, aktulany pobór mocy. Zależało mi na odczycie tylko tych wartości. Jest to wersja bez obsługi mechanizmu protokołu modbus....
Witam zaimplementowałem protokół Modbus i wykonałem 1 urządzenie master i Slave na mikroprocesorach ATMEGA32. Podczas komunikacji przez rs485 slave nie odbiera poprawnej odpowiedzi. W masterze gdy przechodzę na wysyłanie ramki to ustawiam "1" do bitu sterowania układam rs485 a gdy przechodzę do odbioru to ustawiam "0". Jezeli ustawię na stałe "1" do...
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...
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...
Jeśli chodzi o cmd_timeout to chodzi o to, że wejscie RX kiedy pin używany jest przez USART nie jest niczym podciągane. Kiedy jest podłączony do drugiego urządzenia np. procesora lub MAX485 to problemu nie ma bo pin jest podciągany wyjściem TX tego uC lub MAX485. Kiedy jednak odłączysz to na pinie stan jest nieustalony i wpadają na USART śmieci. Ten...
Witam Wszystkich :) Już od dawna miałem chęć zbudować sieć komunikacji pomiędzy mikrokontrolerami RS-485 ful-duplex już nawet kiedyś kupiłem sobie 4 szt. max491 z tym zamiarem ale potem do głowy wpadły mi inne pomysły i jakoś nie wyszło. Nie ukrywam że właśnie ten post zainspirował mnie do powrotu do tego projekciku. :) Komunikację podobnie jak kolega...
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...
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...
Z odbiorem już sobie poradziłem. Pojawiły się naszeptujące pytania ze specyfikacji modbusa dowiedziałem się że ramka w trybie ASCII składa się 16 bitowych danych. W RTU natomiast z 8 bitowych. Jednak w kazdym programie do testowania po ustawieniu liczby rejestru na 4 (tak mam w programie na procesor) zamiast rejestrów 4 rejestrów przypadających na każdy...
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...
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);...
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,...
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...
Rozumiem, że skander już działa, czyli jest zaimplementowana obsługa modbus i komendy po stronie mikrokontrolera. Ramka MODBUS w trybie ASCII składa się z następujących części: początek ramki - znak dwukropka adres odbiorcy - 1 bajt (0=broadcast, lub 1-127) kod rozkazu - 1 bajt LRC - 1 bajt koniec ramki - enter (znaki CR i LF czyli 13 i 10 dziesiętnie)...
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;...
A co robię niezgodnie z dokumentacją? Poniższe funkcje znalazłem na stronie internetowej, która wyglądała całkiem poważnie. Obojętne mi z której flagi będę korzystał byle działało :P A skoro w większości przykładów natknąłem się właśnie na wykorzystanie tych flag to tego się na razie trzymam. ----------------------------------------... W sumie to...
modbus ramka ramka modbus ramka danych modbus
gameport karta dźwiękowa sterownik megane odpalić błędy elektrolux
najlepszy odkurzacz bezprzewodowy trafic zamek centralny
Rola rezystorów w układach elektronicznych Klimatyzacja grzeje na max - uszkodzony termostat?