musisz mieć program-server , który złoży odpowiednio z zasadami protokołu Modbus ASCII ramkę, nie da się bez końcowego wyliczenia LRC (dla ASCII LRC a dla RTU CRC)wysłać poprawnego zapytania. Sprawdz coś takiego 0211CO2C Sprawdz czy firma, która wyprodukowała ten przepływomierz, poleca program driver etc.
Kontrola parzystości i liczba bitów stopu to parametry transmisji przez łącze szeregowe RS232/485, podobnie jak szybkość transmisji w bitach/sekundę. Są niezależne od protokołu.
Skoro Modbus ASCII, to pamiętaj, że wysyłamy i odbieramy bajty szesnastkowo w ASCII. Ramka składa się jeszcze ze znacznika początku (: - 0x3A). Znacznik końca to CR LR. Jedynie znaczniki nie są przesyłane we wspomniany sposób. Po szczegóły odsyłam tu: http://www.simplymodbus.ca/ASCII.htm
Nie podałeś jak wygląda funkcja uart_puts() Zapewne ciąg rozkładany jest w niej na znaki i wysyłane są pojedynczo. Mam podobne funkcje i u mnie to wygląda tak: [syntax=cpp] void USART_Transmit( unsigned char data ) { while ( !( UCSRA & (1<<UDRE)) );//Poczekaj na pustym buforze/* Wait for empty transmit buffer */ UDR = data;//Umieszczanie danych...
zależy jak tą ramkę sobie zorganizujesz ale jeden z prostszych sposobów, gdy przesyłamy znaki ASCII to koniec ramki łatwo np odróżnić po tym, że nadleciał znak ENTER (0x0d). Gdy wykryjesz go w przerwaniu to już możesz powiadomić pętlę główną czy jakieś zdarzenie w tej pętli, że już jakaś cała i gotowa ramka czeka na odczytanie. Jeśli pętla główna będzie...
wikipedia...faktycznie, mój błąd, dziękuję za odpowiedź. Ale mam jeszcze jedno pytanie, mianowicie jaki jest znak ASCII końca ramki?
Witam, Dziękuję za przyłączenie się do tematu i problemu. Niestety nie sprawdza się reguła mod16 na pozostałych ramkach. Jedna z ważnych rzeczy, to fakt, że nie można ominąć liczb od 12-26, gdyż są to dane z numerem. Jeżeli chodzi o debugowanie programu nie zawsze jest to możliwe, a druga sprawa przy megabajtach kodu, raczej pracochłonne. Być może będzie...
Dobrze kombinujesz. Ja rozwiązałbym to tak, że zapamiętywałbym timestamp (w milisekundach) ostatniego przychodzącego znaku. i jeżeli jest większy niż 4 ms (dla baudrate 9600) to uznajemy że jest koniec ramki. Oczywiście można użyć timera o większej rozdzielczości dla szybszych transmisji. Dla trybu ASCII sprawa jest chyba jasna.
jesli dobrze zrozumialem to chyba ASCII Nie bardzo to wynika z tej ramki. Masz jakiś dokładniejszy opis protokołu lub jego nazwę?
Nie napisałeś jaki ma to być Modbus ascii czy rtu, kodu w bascomie nie posiadam ale może Ci coś podpowiem, więc tak jeśli chodzi o rtu jest to postać bitowa i ważne są odstępy czasu miedzy znakami oraz początkiem i końcem ramki, jak to zrealizować a no bardzo prosto ramkę składasz z ascii i posyłasz to na rs232/485 i będzie działało może nie jest to...
Tutaj jest zrzut dłuzszej sesji z yampem. kod 03 w terminalu jest interpretowany jako ETX czyli end of text, tylko ze to nijak niema sie do funkcji jaka pełni tutaj. W transmisji jest wiecej kodów terminala... ich znaczenie mozna podejzec tutaj: http://pl.wikipedia.org/wiki/ASCII
Witam. Mamm pytanko o wyliczanie sumy LRC. Ogólnie wiem jak to się liczy poza jednym szczegółem. Mianowicie mam dodawać do siebie znaki ascii, czy parami przetwarzać je na 8-biotwe liczby i dopiero wtedy dodawać ?? Czyli jeśli ramka wygląda przykładowo tak : :0A030011XXCRLF, gdzie xx to znaki wyliczonego LRC. To mam dodawać : (gdzie 0x30 - oznacza wartość...
No a jaki masz status komunikacji? Czy masz błędy czy nie? Może masz zamienione przewody A-B (rs485). Jeśli masz jakiś PLC z modbusem i RS485 to możesz na nim spróbować czy odpowiada i czy wartości na panelu są <> od 0. Ewentualnie jakiś modbus slave (programowy na komputerze - znajdziesz na modbus.org) i sprawdzenie co pojawia się na panelu....
tryb ASCII ramka wygląda tak: char query[liczba_znakow] = { ':', '0', '1', .... nie wiem ..., 0x0D, 0x0A}; takie query trzeba wysłać na COM'a do urządzenia z tym zapoznaj się http://www.eti.pg.gda.pl/katedry/kose/dy... Dodano po 2 Jak wysyłasz w ASCII to musisz wysłać...
A czemu akurat modbus? Czy rzecz w tym, że mogę go implementować korzystając z UARTa (z tego, co widze to transmisja jest w postaci ASCII) i posiada w ramce miejsce na adres?
Ustal sobie po stronie uC jakiś format ramki, np. 0xFF - początek ramki [asci] [asci] [asci]-3 cyfrowa liczba w formacie ascii - PWM1 [asci] [asci] [asci]-3 cyfrowa liczba w formacie ascii - PWM2 0xFE - koniec ramki i potem w programie rozkodowuj wg. tych znaczników
Cześć, na początku chciałbym podziękować za ogrom włożonej pracy dzięki której w ciągu jednego wieczora udało się mi podpiąć do ST-571zPID przez ES8266 i podczytać co nieco z GSM'a, choć piec co jakiś czas sygnalizuje "brak połączenia z GSM". Ze swojej strony obiecuje że w wolnej chwili temat będę drążył dalej :) Wielki szacun dla kolegi (at)rohdamn...
Czy to byłyby pierwsze 3 bajty ? Serial1.print(54) wyśle dwa bajty: "5" i "4" :) Jeżeli chcesz wysłać "T" jako kod ASCII to robisz Serial.write(84) lub Serial.write(0x54). 84 to kod litery "T".
aster , jeżeli się używa konkretnego protokołu to naprawdę nie jest potrzebne wysyłanie reprezentacji liczby w ASCII. Można na przykład wysyłać takie ramki: [komenda:8][długość danych:8][dane:x][suma kontrolna:8] Ale jeżeli zawsze mają to być dwa bajty wysyłane, to wystarczy wysyłać je w takiej postaci w jakiej są. Oczywiście wtedy może pojawić się...
Czesc, stanalem przed zadaniem stworzenia grafiki na terminalu tekstowym VT100. Wiem jak to sie robi (przeciez sa kody w ASCII pozwalajace rysowac ramki) ale to zajmie mie troche czasu. A moze ktos z Was robil jakas klase to takiej grafiki lub spotkal gdzies w internecie. Z gory dzieki za odpowiedz
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?
Ja co prawda mam sterownik R350.t2 protokół c3 Rozsyłanie temperatury zewnętrznej i czasu wygląda całkiem inaczej niż jest to opisane w tej broszurce. To ustaliłem do tej pory. Nr bajtuSymbolRodzaj polaZnaczenie 0AobinarneAdres odbiorcy = 100 (do wszystkich, znak #228) 1h??? 0x40 2AnbinarneAdres nadawcy = adres własny regulatora 3 CtrlbinarneSuma kontrolna:...
Zastosowałem odczyt portu COM metodą ReadByte() i rzeczywiście odczytuję całą ramkę. A że ramka ma wagę przekazywaną w kodach ASCII to dlatego widać ją na podglądzie. Dziękuję za pomoc. Problem rozwiązany.
INPUTBIN można odebrać tylko ściśle określoną ilość bajtów. A jak odebrać zmienną ilość bajtów binarnych, jeśli jest nadawany bajt końca ramki ?
Spróbowałbym od ramek typu: 20DDA 0 3 63 0000000000000000000000000000000000000000... 01xx 20DDA 0 3 63 0000000000000000000000000000000000000000... 01xx 20DDA 0 3 63 0000000000000000000000000000000000000000... 01xx .. 20DDA 0 3 63 0000000000000000000000000000000000000000...
Możesz użyc PLC firmy LG (juz niedługo LS Industrial Systems) np. serii Master-K120 albo Glofa GM7U. Mają wbudowane dwa porty: RS232 i RS485. Mozesz na nich używać protokołu dedykowanego (pełna dokumentacja na stronie dystrybutora), modbusa ASCII lub RTU, albo spróbowac zrobić swój protokół na kodach ASCII - tylko 16 ramek ale odpowiednio programując...
nie wiem czy wszystkie są takie same, ale: różna długość ramki, protokół podobny do profibus ASCII, potrzebne jest zapytanie aby otrzymać dane (nie pamiętam jakie zapytanie), trzeba wyzwalać programowo.
Błędnie złożona ramka PDU. To nie jest czysty hex. To 7-bitowe kodowanie ASCII. https://www.diafaan.com/sms-tutorials/gs...
Miałem zapisanych kilkanaście dokumentów w Wordzie. Teraz przeszedłem na Open Office to nie otwiera się kilka dokumentów. Ukazuje się ramka "opcje filtra ASCII", po naciśnięciu OK z ustawieniami domyślnymi otwierają się jakieś śmiecie. Może ktoś ma pomysł co zrobić, żeby otwierały się te pliki normalnie ? Nadmieniam, że jak miałem Worda to wszystkie...
Powyższa ramka ma, zdaje się, za dużo zer. Ramka 01040000000131CA jest poprawna.
Polecam 232Analyzer lub Docklight. Dane można pakować w ramki i ogladać jako BIN, HEX, DEC, ASCII.
Właśnie się za to zabrałem. Ramki na końcu nie posiadają znaku stopu tylko sumę kontrolną, która jak wiadomo się zmienia. Czy bez tego to ruszy - nic nie wpisałem w 'stopstring'. Jak do tej pory nie bardzo chce mi to działać. Nie jestem pewien co wpisać w StrartString. Ramka rozpoczyna się 0x24 - $ w ASCII.
Wygląda na to że to 35 w ascii czyli po prostu "#" jest początkiem pewnej ramki. Widać że w pętli potem odbiera kolejny znak i dla tego, który otrzymał wykonuje jakąś akcje.
Doszedłem w czym tkwił problem. Program jest w porządku, natomiast jest różnica w ilości bitów danych w ramce: Modbus RTU ma 8 a ASCII 7. Nie przestawiłem tego po stronie PC, stąd framing error.
Przede wszystkim ma to być czcionka o stałej szerokości znaków dlatego w konsoli to lepiej wygląda. Wiele grafik ASCII ART wykorzystuje symbole ASCII >127 (tam są elementy graficzne ramki prostokąty itp) ale twojego przykłądu to nie dotyczy. Prawdopodobnie twój przykład został zniekształcony przez usuwanie spacji i zawijanie wierszy (elektroda usuwa...
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...
Dopytam jeszcze korzystając z wątku nt. CRC - dlaczego w modbus'ie ASCII liczymy LRC a nie CRC? Przecież zasadniczo ASCII to są liczby, więc CRC można dla takiej ramki bez problemu policzyć. Skąd ta różnica w podejściu?
1. standardowa prędkość to 4800 8.n.1 2. Ramki lecą binarnie dlatego masz krzaki 3. szukaj drugiego TX, bo tylko to potrzebujesz odbiorniki maja dwa wyjścia jedno Binarne i jedno ASCII najwyraźniej odnalazłeś to pierwsze 4. zrób konwerter na ASCII i tez będzie dobrze Powodzenia
(at)JacekCz czemu służy Twój post. Chcesz ze mnie się pośmiać czy pomóc koledze rozwiązać problem. Mam wrażenie ze bardziej interesuje Cie to pierwsze i nie rozumie tylko dlaczego. To co umieściłem w poście to tylko fragment tego co od lat używam z powodzeniem w moich projektach. Drażni cię to że to działa? Pełny format jest podobny do modbusa (także...
Zwykłe symbole ASCII, tu akurat widząc taki zapis łatwo to pokojarzyć.
Twój program nie miał prawa działać. 1) Napisałeś sobie funkcje FC1 ale jej nie wywołałeś z bloku OB1 2) Wielokrotnie przypisałeś jakąś wartość do wyjścia Q0.1 co jest zabronione (w całym programie może być tylko jedno przypisanie =( ) do danego symbolu 3) Wg tabelki wiadomość powinna mieć 5 bajtów a w funkcji Length miałeś ustawione na 3 4) Wg tabelki...
Podmień procedurę RAMKA na taką : procedure ramka(x1,y1,x2,y2:byte); var poz,pio:char;i:byte; begin poz:=Char(205); pio:=Char(186); for i:=x1+1 to x2-1 do begin GoToXY(i,y1); write(poz); GoToXY(i,y2); write(poz); end; for i:=y1+1 to y2-1 do begin GoToXY(x1,i);...
To oczywiste, tylko u mnie wyskakują jakieś krzaczki nieczytelne a nie ramka w postaci szesnastkowej. Sprawdź jak masz ustawiony terminal. Jeśli w tryb ASCII to tak właśnie będzie... Na szybko patrząc w Putty nie widzę możliwości zmiany na HEX. Ściągnij sobie np. Br(at)y Terminal.
Popieram taki pomysł bo też myślałem w tych kategoriach, ale ja nie mogę tego wykonać z pomocą terminala, mam to zrobić na podstawie danych które zamieściłem powyżej (zczytanych koniecznie z oscyloskopu). Trochę myślałem nad znaczeniem tych "słów" i starałem się "odkodować" je w ASCII. Poniżej zamieszczam wyniki swojej pracy http://obrazki.elektroda.net/9_127281649...
Możesz rozwinąć skrót Uk ? ;) uk = µk = mikrokontroler (PL) uc = µc = microcontroller (EN) Dodano po 19 Czy mówisz, żebym sobie dał spokój z jakimkolwiek "hardware'wym STOPEM" Myślałem o takim rozwiązaniu jak mówisz ale strasznie dużo roboty z pisaniem warunków, budowaniem tablic i instrukcji case/if'ów i itp.. Myślałem, że da się to trochę...
Witam! Zlecę wykonanie układu pomiaru temperatury poprzez 2 czujniki DS18B20. Układ ma umożliwiać komunikację z nim za pomocą protokołu MODBUS RTU, bądź za pomocą stałej ramki ASCII. Komunikacja odbywać musi się za poprzez linię RS485 (najlepiej) lub RS232 - rozpatrzę i porównam oferty. Założenia: -Rozdzielczość pożądanego pomiaru to 4 bajty -Komunikacja...
Celem było stworzenie uniwersalnego narzędzia umożliwiającego wymianę danych pomiędzy mikro kontrolerem a komputerem. Ramka wzorowana na Modbus ASCII przesył danych zabezpieczony jest sumą kontrolną CRC. Program odczytuje tablicę dostępnych parametrów ( tablica odkreślana jest odgórnie programowo ). Dla każdego z parametrów przypisany jest programowo...
Nie są to kody na Linux'a, są to komendy jakie wysyła się do skanera lub odbiera się ze skanera. W PC Control Parameter For your information: Transfer speed : 9600/19200/38400/57600 bps (adjustable) Start/Stop bit : 1 bit, 1 bit Data Length : 8 bit Parity Check : None Code : ASCII code Flow Control : None Return Code : Carriage Return only Do/ze skanera...
Witam, 1) Producenci PLC dostarczaj czasem biblioteki do obsługi RS232 ale poza tym można samem wykonać obsługę. Może w tym przypadku trzeba tak podejść do problemu? 2) Patrząc na tablicę ASCII 7E to znal "~". Może trzeba zapisać (na próbę) ramkę jako typowego stringa w pamięci PLC?. 3) Wykonałbym przepisane dodatkowo tablicy zmiennych byte do string...
Jeżeli przerwa między ramkami (która jest stanem wysokim na linii) wynosi minimum 3.5T to jak ja odróżnić od 4 (i więcej) jedynek?? 3.5T to czas gdzie T to czas przesłania jednego bajtu więc nie trzeba nic odróżniać :wink:. Dobrym rozwiązaniem jest sprawdzanie za każdym odebranym bajtem CRC wstecz tzn. czy odebrane dwa bajty są sumą kontrolną wcześniejszych....
Witam, próbuję ugryźć temat na początek odczytu danych z automatyki Plum dla pompy ciepła Krommler. Sterownik zrobiony podobnie jak opisywane wcześniej. Mam póki co odbiór ramek na porcie szeregowym, parametry transmisji 115200 8N1, widać w ASCII jakieś sensowne ciągi znaków np. typ sterownika ecoMAX 360i. Próbowałem zdekodować za pomocą skryptu opisanego...
http://en.wikipedia.org/wiki/Carrier_sen... Rozumiem, że o ten arbitraż chodzi... Tylko mam takie pytanie - jak ja to mam zrealizować - jednoczesne odbieranie i wysyłanie? Jak rozpoznać, że to jednak nie mój sygnał jest na linii? Dodam tylko, że prawdopodobnie zastosuję konwertery rs232>rs485/can Tzn - będę miał...
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 serdecznie, Posiadam multimeter METEX M-3640D. Chciałbym napisać dla niego program na PC, który zczytuje to co on teraz mierzy. Aby miernik zaczął wysyłać należy mu wysłać znak D (ASCII). Przesyła on 14-bajtową ramkę gdzie ostatni bajt to CR i metex sam kończy transmisję. Parametry transmisji to: prędkośc 1200, bez bitu parzystości, 2 bity stopu,...
Ja też zdecydowanie preferuję metodę rozpoznawania końca ramki, dzięki czemu już gdzieś np w pętli głównej można na spokojnie obsługiwać dane , które nadleciały, a w międzyczasie ładnie do bufora może wpaść jeszcze dziesięć innych ramek jeśli jest duży ruch w sieci. Dokładnie jak pisze markosik20 - na końcu CRLF wywołuje mi ładnie zdarzenie czy też...
Nie, nie jest. W drugim przykładzie mikroice90 wpisuje 65 jako pierwszy bajt i wyświetla mu się litera A której kod ASCII to 65. Rozwiązanie: usuwać pierwszy bajt - startRamki (i ostatni - stopRamki) z ramki przed wyświetleniem na LCD.
Schemat to zupełnie coś innego niż protokół transmisji. To co kolega pyta to jest jak wygląda ramka, ilość bitów, adres, zapis znaków itp. Powiem tylko, że bawiłem się swego czasu w wyświetlanie na wyświetlaczu Opla i nie jest to trudne. Nawet sobie rozpisałem ramki, gdzie co i jak, fajnie bo tekst idzie już w ASCII.
wysyłana jest w postaci byte 01 03 00 00 00 02 C4 0B Sprecyzuj co to znaczy... Czy bajty wysyłane są kolejno (jako bajty), czy jako 2 cyfry HEX (kody ASCII oddzielone od siebie spacjami)?
Próbuję do systemu Nexo podłączyć sterowniki wentylacji oraz klimatyzacji poprzez kartę komend. Ze strony Nexwella, sterowanie ma odbywać się poprzez użycie logik, które wysyłać będą polecenia na kartę komend. Póki co, urządzenia zewnętrzne staram się symulować programem na komputerze z podłączonym konwerterem usb -> rs485, ale niestety komputer nie...
Witam, Mam taki problem, chcę się komunikować z pewnym urządzeniem ale nie wiem z jakiego protokołu korzysta. Na płycie znajduje się układ MAX14780E i to jego wyjścia są wyprowadzone i to do niego trzeba się podpiąć. Pierwszy do głowy przyszedł mi modbus. Urządzenie działa jako master i zbiera informacje od slaveów, więc zainstalowałem slave'a na komputerze...
Kolego szanowny informacje które wykorzystuje oryginalny wyświetlacz masz w magistrali którą posiada wyświetlacz który chcesz zastąpić . Bez analizatora nic nie zrobisz większość ramek analizuje się tak że podłącza się np. wyświetlacz do analizatora i posyła się mu ramkę szukając zmiany , reakcji na to co wysłałeś . Siedzenia przy tym jest dużo bo ramki...
Cześć Jaki jest tryb protokołu? ASCII czy RTU. Czy użyłeś do odbioru overlapped? Od podania trybu powinieneś rozpocząć temat
Jeśli nie ma standardu, to niestety trzeba samemu wszystko układać. Dane są typu ASCII albo bin? Jeżeli znasz strukturę zapisu danych, czyli ile i jakiego typu wartości zawiera jedna 'ramka' danych, to bedzie dość łatwo.
Ja polecam do przesyłu danych liczbowych kod ASCII - niby masz więcej znaków na jedną daną, ale za to wtedy np. Początek ramki kodujesz znakiem nie używanym w transmisji (np. 27=ESC).
Slave'y będą miały różne unikalne numery od 0 do 12? Jeśli tak, to kłopot jest niewielki. :-) Przecież to master inicjuje każdy przesył danych. To master powinien "wywołać" slave'a, z którym chce gadać. Na przykład: Przyjmijmy, że dane są zawsze kodowane w kodzie ASCII, wtedy bajty o kodach od 0 do 31 można wykorzystać na kody sterujące transmisją,...
Widzę że wszyscy wymiękli na tym temacie... A może w takim razie ktoś zna dobry Terminal na porcie LPT który potrafi obsłużyć ASCII z prędkością rzędu 250kB? N.
Witam, A czy na pewno Modbus RTU idzie po Ethernecie -Modbus TCP/IP. RTU masz po RS485 i do tego jest mnóstwo programów RTU oraz ASCII może iść po RS485 jak i po TCP/IP. To tylko format danych. Pozdrawiam,
Ale ten sposób wysyłania ramek to trochę nie teges. A jak poprawnie się wysyła takie ramki i czym? Nie możesz po prostu sprawdzić w opisie programu jak należy formatować dane? Bo domyślam się że to jakiś terminal jest. Na Wikipedi jest opisane tak: "Minicom to program do kontroli modemu oraz emulator terminala dla systemów uniksowych" Ciężko Ci pomóc...
Żeby tam było co do ustawiania, ale nie ma. Spróbuj wysłać do swojego urządzenia ramkę przez terminal i zobaczyć czy dostaniesz wynik na wyświetlaczu. Pamiętaj że to kody ASCII anie hex. https://obrazki.elektroda.pl/5859824900_...
Co wy na to? Mogą mieć rację? Kilka postów wyżej pytałem Może wysyłasz ramkę Modbus RTU a miernik spodziewa się ASCII lub odwrotnie? Użyj jakiegoś programu obsługującego protokół Modbus RTU. Np. Modbus Tester z www.modbus.pl. (at)SunnyLion Windows nie jest systemem czasu rzeczywistego i do zastosowań przemysłowych nadaje się w niewielu wypadkach. Przemysł...
Cześć. Należy pamiętać, że w MODBUS'ie słowa zabezpieczające informacje zależą od trybu transmisji. Na początek może LRC, czyli Longitudinal Redundancy Check - jest on dołączany przez nadajnik jako ostatnie pole ramki, bezpośrednio przed znacznikami końca linii (Carriage Return i Line Feed) w trybie ASCII. Najkrótsza droga do osiągnięcia tego słowa...
Prawie gotowiec: http://tiktakx.wordpress.com/2010/11/21/... Witam Zgadza się... prawie gotowiec, udało mi się uruchomić odbiór danych, ale mam pytanie... Jak odebrać ramkę w postaci bajtów a nie w postaci kodów ascii w visual basicu? W bascomavr odbierałem poprzez INPUTBIN, a w visual basicu odbiera w kodach ASCII...
Polecam stronę www.modbus.pl i całkowicę darmowy i polski ;P program Mtester obsługujący Modbus RTU i ASCII. Testowałem na nim parę swoich sterowników i sprawdził się w 100%, bardzo przydała mi się możliwość podglądu ramki transmisji... nie wiem czy inne programy mają taką funkcje.
Kolega adamusx wypisuje jakieś herezje... Po pierwsze deklaracja zmiennej w obsłudze przerwania... Druga sprawa, Bufor jest deklarowany jako zmienna unsigned char po czym przemienia się w tablicę... No chyba, że Bufor i Bufor to nie to samo... ;) W takim razie powinny mieć inne nazwy albo przynajmniej Bufor i bufor... to wystarczy... Proponowana metoda...
Witam. Mam taką sprawę. Wg specyfikacji pewnego protokołu suma kontrolna jest liczona następująco: " suma kontrolna - zanegowana suma wszystkich składników bloku z wyzerowanym najstarszym bitem ". Obliczyłem ją sobie dla ramki zapytania: suma składników: C0h + 01h + 54h + BCh = 1D1h = 1 1101 0001b suma z wyzerowanym najstarszym bitem: 1101 0001b negacja:...
Do tej komunikacji to najlepiej jakbyś zaimplementował protokół Modbus ASCII lub RTU. Alternatywą jest jakiś własny protokół, np. master wysyła ramkę (at)XYZ<CRC>, gdzie X to adres urządzenia slave, a pod YZ możesz sobie zaimplementować jakieś rozkazy, <CRC> to dodatkowo suma kontrolna. Master wysyła taką ramkę, slavy to odbierają ale tylko...
Witam serdecznie. Jaki może być powód tego, że sterownik nie odsyła odpowiedzi na zapytanie Modbus? Zapis działa bez zarzutu, ale gdy wysyłam ramkę dla odczytu wyjść bitowych ($01) to sterownik nie daje żadnej odpowiedzi. Pozdrawiam
a nie jakieś ramki bitowe z przykładami z GPS No to prześlij ramki IntelHex i raczej nie bitowe a bajtowe. Najczęściej wzoruje się właśnie na IntelHex, jakiś start (w IntelHex ':' często daję '#" lub '(at)'), liczby koduje jako tzw HexAscii, i stop, najczęściej CR+LF. Dlaczego ASCII? Niby strata, dwa znaki ASCII na bajt, ale jak nie przysyłam często...
z miernika mam takie dane: - szybkosc transmisji 1200 bodow - kod znakowy: 7 bitowy ASCII - kontrola parzystosci - brak - bity stopu 2 format danych oparty na 14 bitowej ramce z miernika wychodza kabelki: - RD -OTR -RTS -TD -GND mozna z tego wywnioskowac ile to lini potrzebuje ? P.S. a tych lini nie fizycznych nie mozna wlasnie za pomoca tego procka...
Witam, Dopiero zaczynam zgłębiać tajniki komunikacji szeregowej więc z góry wybaczcie, jeżeli odpowiedź na zadane pytanie wyda się dla Was oczywista. Czy w komunikacji szeregowej przez RS-232 ramka danych zawsze wygląda tak samo? Oczywiście wiem, że można zmieniać ilość bitów danych, włączać kontrolę parzystości i wybierać ilość bitów stopu. Ale czy...
Napracowałeś się przy tym dokumencie! Przepraszam, że nie pomagam, musiałbym sam rozłożyć zabawki na biurku, a nie mam MM. Niestety MM podłączałem dotychczas do 300tek. Nie wiem na ile USS w 200tce jest dopracowany, ale do dziś wspominam ile krwi mi napsuł Sinaut, częściej niedziałający niż działający. Jeśli tak samo jest z USS to bez debuggingu nie...
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...
Kupiłem sobie miernik UNI-T UT60E w celu zabawy i nauki pod LabView. Niestety producent nie podał ramki transmisji danych. Udało mi się skomunikować i wygląda na to, że nie jest to ASCII a jakieś dane binarne jakby do drivera LCD. Może ktoś przerabiał ten temat i wie coś więcej, bo ja trochę się podłamałem - robienie z łańcucha danych konkretnych danych...
myslalem o tym, ale to robi mnie zaleznym od wytworow micro$oftu (zreszta w vb i tak mam juz tego dosyc....) poza tym baza danych bedzie zbudowana z wlasnych komponentow i nie usmiecha mi sie wrombywanie do tego jeszcze worda czy exele :( obawiam sie ze moze mi pozostac tylko drukowanie w trybie ascii, co prawda do prostych raportow to wystarczy, ale...
Oczywiście z roztargnienia zapomniałem. Więc obliczenie zrobiłem po prostu dla ramki bez żadnych znaków czyli: suma kontrolna = 87h+liczba znaków+suma kodów znaków w ASCII dla przykładu dla jednej litery "0" 87h+1h+30h = B8h i tak też jest. dla trzech liter "0" 87h+3h+30h+30h+30h = 11A - i tutaj sterownik wystawia tylko 1A. Dla czterech znaków nie wiem...
Ja nie trafiłem na taki spis czy porównanie sygnałów. Dla każdej z wymienionych szyn w specyfikacji jest nazwa sygnału i jakie warunki są dla poprawnej transmisji ale oczywiście co specyfikacja to inna nazwa sygnału o takiej samej lub podobnej funkcji wiec trzeba by pozbierać te informacje i porównać. Jeszcze przychodzą mi do głowy jakieś szyny/interfejsy...
Witam kolegów/koleżanki :-) Mam problem - będę miał na pewno w przyszłym tygodniu z uruchomieniem komunikacji miedzy sterownikiem siemens s 7 1200 a drukarką "plujką" Videojet 1710. Informację jakie udało mi się zdobyć na temat komunikacji drukarki są jedynie takie że komunikacja odbywa się po protokole WSI a ramka jaką należy wysłać do drukarki ma...
Generalnie polecam przejrzeć dokładnie DTR urządzenia z którym chcesz się komunikować i zwrócić uwagę która wersja protokołu jest zaimplementowana TCP/IP, RTU/ASCII. Producent zapewne dostarcza potrzebne informacje. Jeżeli chodzi o sam protokuł Modbus to [url=http://www.modbus.org/specs.php]tut... znajdziesz więcej info.
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...
Po prostu odpowiedzi nie będzie i tyle. Większość zabezpieczeń transmisji polega na obliczeniu sumy kontrolnej z wysyłanej wiadomości i posłaniu jej dołączonej w sposób jawny. Odbiornik otrzymując wiadomość liczy z niej sumę kontrolną i porównuje ją z tą otrzymaną jawnie -jeżeli wszystko się zgadza można z dużym prawdopodobieństwem domniemywać, iż transmisja...
Cześć W moim systemie wiadomość przesyłana jest drogą radiową wygląda jak RTU z protokołu MODBUS zakładam, że procedura przerwania powinna jednorazowo odebrać całą wiadomość chyba, że macie inną propozycje) W tym celu zapętlam w przerwaniu żelazną fukcję odczytu (z użyciem nIRQ) (cisza na linii)> 3,5T (gdzie T oznacza czas transmisji jednego znaku)...
To jest dosyć niewygodny sposób na przesyłanie zmiennych w postaci znaków ASCII i sam się nieco ograniczasz, bo pierwsza zmienna musi mieć zawsze dwa znaki, druga trzy itp... Jeśli chcesz troszkę bardziej uniwersalnie podejść do tematu to przesyłaj wartości zmiennych w ten sposób: PRINT XX,YYY,Z,KKKK czyli każda wartość oddzielona np przecinkiem. Później...
soft z posta nie będzie działać prawidłowo trzeba napisać nowy niemalże od podstaw odczyt danych jest sformułowany pod ramkę z danymi wychodzących z procka program powinien wyglądać mniej więcej tak: $regfile = "m8def.dat" $crystal = 8000000 $baud = 4800 Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol...
Terminal: program wyswietlajacy odebrane dane w postaci bajtowej lub ASCII lub HEX. Dane: zapakowane bajty w pole danych ramki którym to pakowaniem i obsługą stosu BT zajmuje sie wewnętrzny procek modułu BLE112. System operacyjny i strona komputera nie istotna, sciagnie się aplikację lub napisze. Istotne jest przesłanie np tak jak za pomocą USB z wykorzystaniem...
Dokładnie, jeśli twoje sterowniki nie będą miały nic wspólnego z jakimiś oryginalnymi że tak powiem to niepotrzebnie zawracasz sobie głowę profibusem. A jeśli już chcesz koniecznie jakiś gotowy protokół tego typu to możesz sobie skorzystać np z MODBUS. I do wyboru masz albo MODBUS RTU albo MODBUS ASCII. Tu standardy już są w pełni opisane a nawet znajdziesz...
To co proponujesz to nieziemska kombinacja. No nie przesadzaj. Modbus i inne 8 bitowe protokoły jednakowoż są najpowszechniejsze. Takie zabawy są dobre jeśli transmitujemy np. ASCII, ale przy transmisjach binarnych (efektywniejszych) nie za bardzo to zdaje egzamin. generalnie w każdym rozsądnym protokole nagłówek, a czasem nawet całą ramkę traktuje...
Panowie, nie wiem czy to tylko mi się zdaje, ale co będzie jak zostanie wysłane na port dokładnie 19 znaków lub mniej? Może się mylę, ale ta procedura chyba nic nie odbierze... Zgadza sie... ale w moim przypadku mam ustaloną ramkę ponieważ przesyłam dane przez sieć CAN. Czyli mam 2bajty ID i 8 bajtów danych (x2 bo mikro wysyła mi w każde 4bity w postaci...
Mam kolejny problem. Wg tej dokumentacji trzeba ustawić bit parzystości na EVEN i jeden bit stopu lub ustawić 2 bity stopu. Wysyłam dane i przychodzą głupoty chociaż po obu stronach mam dobrze ustawione parametry transmisji. Dla przykładu wysyłając dwa bajty 0x30 i 0x32 (w ASCII są to odpowiednio cyfry 0 i 2 otrzymałem w odpowiedzi 0x30 (dobrze) 0xB2...
Witam! Mam pewnien problem. Musze stworzyc w jezyku C++ kompletny serwer OPC do pracy ze sterownikim PLC. Z pisania programów w jestem kompletnym amatorem , wiec znalazlem freewar'owy serwer OPC ale trzeba dopisać/dołączyć do niego driver łączący go ze sterownikiem. I teraz pytanie brzmi: czy jest ktoś w stanie dać mi namiary na taki driver?? poważnie,...
Myśle, że warto się tutaj zastanowić, czy powtarzanie komunikatu jest potrzebne. Autor musi zdecydowac, czy nie wystarczy mu w tym układzie, że wykryje, że pakiet doszedł z błędem. Taki pakiet trzeba pominąć. Wtedy wystarczy jeden bufor. Ramke proponuje w takim formacie : 1 bajt rozpoczynający np. 0xAA 3 bajty z wynikiem z pierwszego A/C 3 bajty z wynikiem...
ramka danych modbus ascii rs232 ascii filtr ascii
schematy projektorów sprzedam uszkodzone telefony oscyloskop karty dźwiękowej
programowanie pilota napędu bramy technics instrukcja obsługi
Wyświetlacz Frigo - problemy i rozwiązania Brak obrazu, dźwięk i znak Polsatu - przyczyny