Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 7 kwi 2025, o 08:40


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
    Autor Wiadomość
    PostNapisane: 22 kwi 2012, o 09:37 
    Offline
    Użytkownik

    Dołączył(a): 23 sty 2012
    Posty: 27
    Pomógł: 0

    postanowiłem dokończyć rozgrzebany projekt, ale ostatnio utknąłem na komunikacji rs485 między dwoma modułami, które wymieniają się danymi dwu-kierunkowo,

    generalnie w BSC można wybrać dwa sposoby wymianę danych:
    1. printbin <-> inputbin
    2. print <-> Inkey()

    ja wybrałem ten 1, no i pytanie czy to słuszny kierunek, bo w większości rozwiązań na sieci dominuje ten 2(zmienna zamieniana jest na stringa i wysyłana w postaci znakowej)

    w moim przypadku komunikacja działa bez zakłóceń w trybie jedno-kierunkowym, natomiast problemy zaczynają się w momencie trybu dwu-kierunkowego - od czasu do czasu moduły zawieszają się, poniżej załączam listingi("identyczne w obu modułach"),

    proszę o opinię osób, które wcześniej uporały się z komunikacją rs485 :roll:

    >konfiguracja rs485
    Składnia: [ Pobierz ] [ Ukryj ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    >podprogram wysłania(przesyłam komendę i zmienną )
    Składnia: [ Pobierz ] [ Ukryj ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    >podprogram odbioru danych
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 kwi 2012, o 10:14 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27366
    Lokalizacja: Szczecin
    Pomógł: 1043

    Ja powiem tak - z doświadczenia już wiem bo widzę - że ogromna ilość ludzi tak się boi i obawia komunikacji za pomocą znaków ASCII - Ten twój sposób nr.2) ..... że od razu przechodzą na tryb transmisji binarnej - bo ten wydaje się TAK oczywisty i prosty że szok.

    Tyle że ta ogromna większość ludzi nie zdaje sobie sprawy że tylko im się tak WYDAJE i czycha na nich pułapka .... proszę bardzo - właśnie w nią wpadasz ale dodam że jeszcze nie doleciałeś do dna tego wilczego dołu - pułapki - bo na dole czekają na ciebie jeszcze ostre kolce ;)

    Tylko proszę mnie źle nie zrozumieć - nie chcę przez to powiedzieć, że transmisja binarna jest jakaś mega koszmarnie trudna i do zrealizowania tylko dla jakichś orłów. Raczej chodzi mi tu o przedstawienie takie obrazowe - różnicy pomiędzy transmisją ASCII a binarną ....

    Bo transmisja ASCII to w porównaniu do tych wilczych szańców jak - spacer na boso o poranku po pięknej zielonej łące wilgotnej od porannej rosy ;) ;)

    ale cóż - na początku - zwykle każdy widzi niestety to inaczej na swój pohybel :(

    Tak pokrótce o co chodzi:

    1. jeśli transmisja binarna to musisz pan opanować:
    a. budowanie prawidłowych ramek zawierających znaczniki startu, końca i ew sumy kontrolen
    b. posługiwanie się timeoutami !!!!!! - tak o tym długo nikt nie wie i stąd ten ból i kolce

    jeśli nie wierzysz to sprawdź sobie jak wygląda pięknie zrobiona transmisja MODBUS RTU - tylko uwaga żeby ci się nie zrobiło niedobrze od analizy kodu - bo mi się zrobiło niedobrze - jak kiedyś to zobaczyłem ;)

    reasumując trzeba ściśle pilnować czasu pomiędzy ramkami, dbać o odstępy prawidłowe - i reagować na opóźnione albo uszkodzone ramki - bez tego masz i będziesz miał kaszankę najwyższej jakości


    Gdybyś zaś zdecydował się na transmisję ASCII - którą nawet w Bascomie łatwo do pewnego stopnia zrobić na na pewno łatwiej niż binarną (tak mi się wydaje) ..... to wiesz jak może wyglądać ramka ????

    coś pięknego - jedna ramka to po prostu najzwyklejszy łańcuch danych tekstowych zakończony znakiem ENTER !!!! może także zawierać CRC ale również jako tekst np liczby HEC (ASCII)

    obsługa nadlatujących końców linii w postaci znaków ENTER gigantycznie ułatwia pracę - jak myślisz dlaczego praktycznie większość modemów posługuje się właśnie ASCII - znane ci pewnie ze słyszenia chociaż "komendy AT" ;) ????

    dlatego że to super proste do implementacji

    no tak a czego tak się boją początkujący w tej transmisji ASCII i to jak wielkiego włochatego jeża ???


    a no tego że jak tu przesłać kilka zmiennych różnego typu gdy jedna to liczba, druga to tekst a trzecia to np liczba z przecinkiem

    nic prostszego - zamieniasz te liczby na tekst (w Bascomie to pryszcz) i formujesz łańcuch gdzie każda dana oddzielona jest np przecinkiem, np:

    zmienna WORD A = 183
    zmienna SINGLE B = 27.83
    zmienna tekstowa STRING = "ala i as

    proszę bardzo po złączeniu może być przesłany taki łańcuch:

    "183,27.83,ala i as" i od razu po tym znak ENTER

    no tak o ile to jeszcze wydaje się proste to już jak to po drugiej stronie rozłożyć na kawałki? :( każdy myśli ... a co ? Od czego macie panowie w Bascomie polecenia typu mid(), left(), right(), val(), str() itp ?????

    toż to proste jak drut - no ale ..... niestety coś za coś - jeśli to ma być w Bascomie to niestety zajmie to sporo miejsca we Flash i nie ma co liczyć na realizację zawrotnych prędkości - ale bez przesady - da się !!!! nawet z prędkościami 115200 bps !!!!!!!!! Jak mówię o zawrotnych to np 3MBit/s ;)

    Wtedy warto przesiąść się na C a szczególnie że w drugiej części mojej książki mam nadzieję że pięknie odczaruję tą transmisję ASCII, której wszyscy się tak boją ;)

    spójrz na ostatni element z listy tego co będzie w tej książce - szczerze ci to polecam i nie tylko tobie, ma to w linku poniżej:

    post4396.html#p4396

    wracając do Bascoma - zanim poznałem C to z powodzeniem w ten opisany przeze mnie sposób i z użyciem buforowania dobrze przygotowanego przez Bascom - realizowałem transmisje w sterownikach swoich pracujących na RS232 ale i na RS485

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 kwi 2012, o 10:28 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    I w ten sposób Mirku ująłeś całą praktycznie spuściznę tragizmu jakim niewątpliwie jest komunikacja realizowana na poziomie binarnym. I to jak zwykle w poetycki sposób :)

    Reasumując komunikacja ASCII jest w naprawdę jak najbardziej idealna do 99.9% zastosowań
    zwłaszcza w Bascomie gdzie jest ona bardzo dobrze udokumentowana choć w istocie zasobożerna,
    ale to tylko BSC tu w zasadzie do końca nie wiadomo co właściwie kompilator robi z kodem :)

    Jeśli kolego jeszcze nie ugrzęzłeś na dobre w bascomowym Bagnie szybko z niego uciekaj,
    nie bynajmniej nie mam na myśli że jest zły , bo mi się też zdarza z niego korzystać jeszcze,
    głównie do mniej ambitnych projektów , choć wypiera go powoli Arduino gdzie jest jeszcze prościej
    i ma się większą kontrolę nad kodem. Bo z czasem nabierzesz dziwnych nawyków , a później przyjdzie rozgoryczenie i frustracja.

    Wysyłanie łańcuchów ASCII to prosta i sprawdzona metoda, ta droga powinieneś iść .

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 kwi 2012, o 11:34 
    Offline
    Użytkownik

    Dołączył(a): 23 sty 2012
    Posty: 27
    Pomógł: 0

    Panowie dzięki za obrazujące przedstawienie problematyki tematu,
    jednym słowem muszę obrać inny kierunek(w komunikacji rs485),

    co do C, uczę się go równolegle i oczywiście czekam na 2 książkę,

    ale obecnie muszę zakończyć ten projekcić, który rozpocząłem w BSC, potem przyjdzie kolej na przenoszenie wszystkiego do C



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 kwi 2012, o 11:55 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27366
    Lokalizacja: Szczecin
    Pomógł: 1043

    No to właśnie potrenuj tą transmisję ASCII - bo w Bascomie też ci wyjdzie - a jak pisał SunRiver w 99,9% można to wykorzystywać

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO