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



Teraz jest 13 maja 2026, o 04:05


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 25 mar 2014, o 14:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lis 2012
Posty: 41
Lokalizacja: Gdańsk
Pomógł: 1

Postanowiłem poszerzyć wiedzę na temat komunikacji szeregowej. Przerobiłem już lekcję UART z niebieskiej książki. Chciałbym teraz wykorzystać ten przykład w praktyce stąd moje kilka pytań. Mam nadzieję że znajdę tu odpowiedzi. Mam zainstalowany na dachu kolektor solarny. Jego sterownik posiada złącze do transmisji szeregowej RS485(piny A oraz B). Przymierzam się do stworzenia monitoringu na początek podłączenie ATB1.04 i odczytywanie aktualnej temperatury solara, a w przyszłości może innych parametrów oraz wysyłanie na serwer www z wizualizacją. To na dziś plany, bo nie czuję się jeszcze na tyle mocny. Po rozmowach telefonicznych z producentem sterownika dowiedziałem się, że łącze szeregowe może służyć do wysyłania parametrów, ale sterownik wykorzystuje własny protokół komunikacyjny COMPIT C3. Otrzymałem budowę ramki zapytania o temperaturę. Składa się ona z 11 bajtów. Wygląda ona następująco:
Obrazek

1. Czy podłączenie będzie poprawne dla dwóch urządzeń na magistrali? Sterownik z ATB połączony dwoma przewodami A-A oraz B-B. Zestaw ATB1.04 z zapiętą zworką TRM (terminator 120ohm na końcu linii), złącza przejściówki RS485 zestawu podłączone: TX -> PD0(RXD), RX -> PD1(TXD), DE-> PD2. Do złącz w sterowniku podpięty również rezystor 120 ohm, ze względu na drugi koniec magistrali.

2. Zastanawiam się nad inicjalizacją komunikacji UART w programie. Prędkość można ustawić w sterowniku od 1200 do 9600, ale czy dowolnie mogę zadeklarować ilość bitów parzystości oraz stopu? W opisie protokołu nie mam informacji na ten temat.

3. Czy dobrze zakładam że wysyłając kolejno po sobie 11 bajtów zawierających zapytanie powinienem po tym w buforze odbiorczym odczytać jedenaście bajtów z odpowiedzią ze sterownika?

Dzięki za podpowiedzi bo temat komunikacji dla mnie jest wyjątkowo trudny.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 mar 2014, o 10:40 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

1. Tak.
2. Nie. Informacja jest w instrukcji np. dla R350 podają: długość znaku - 8 bitów, brak kontroli parzystości, 1,5 bitu stopu
3. Lepiej dopytać. Najlepiej na początek odstawić mikrokontroler i skomunikować się używając PC, przejściówki USB-RS485 i programu, gdzie można pod przycisk podpiąć złożoną ramkę np. Bray Terminal


Autor postu otrzymał pochwałę

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 mar 2014, o 23:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lis 2012
Posty: 41
Lokalizacja: Gdańsk
Pomógł: 1

Dzięki za wskazówki. Naprawdę jestem wdzięczny za każdą radę która popycha mnie do przodu. Układ już połączyłem i pobrałem ten program. Idealne żeby na początek żeby ustanowić połączenie. Jestem na etapie zapoznawania się z programem. Wiem jak wysyłać już znaki ASCII. Nie wiem czy dobrze wysyłam liczby binarne, bo np. adres odbiorcy dziesiętnie "138" zamieniam na liczbę szesnastkową "8A" i wysyłam tak samo jak znak ASCII. Jedenaście bajtów szesnastkowo, makro: $8A$54$01$5A$78$78$01$78$78$78$23. Niestety jeszcze nie mam odpowiedzi w terminalu. Ramka nadawcza wygląda tak (sonda pomiędzy A i B):
Obrazek

W mojej instrukcji sterownika nie znalazłem nic o kontroli parzystości oraz bicie stopu, to ten ten sam protokół więc takie same parametry ustawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 mar 2014, o 10:56 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

swibno napisał(a):
Idealne żeby na początek żeby ustanowić połączenie
To podstawa.
Moim zdaniem twoja ramka jest poprawna. Może jest możliwość by to urządzenie co jakiś czas nadawało swoją ramkę bez pytania.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 mar 2014, o 19:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lis 2012
Posty: 41
Lokalizacja: Gdańsk
Pomógł: 1

Nie mogę sobie z nawiązaniem połączenia poradzić. W ustawieniach sterownik ma tylko prędkość transmisji 1200 i adres 10. Nic innego nie można zmienić.
Gdy odłączę przejściówkę RS485 i zewrę w złączu RS232 RX oraz TX w terminalu wysyłam makro: #138#084#001#090#120#120#001#120#120#120#035
w oknie nadane dane pojawia się: ŠTZxxxxx#
w oknie odebrane dane pojawia się: TZxxxxx#
Jedenaście bajtów na liczniku TX ale po podłączeniu przejściówki cisza na magistrali.
Zastanawia mnie rodzaj pola w ramce danych: binarne i ASCII. Nie rozumiem różnicy w sposobie wysyłania binarnie i ASCII. Ja wysyłam wszystkie pola jednakowo jako kod ascii i może tu jest błąd.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 mar 2014, o 11:04 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Może podasz w końcu co to za sterownik to może coś się dopatrzymy.
Upewnij się jaki adres ma ten sterownik, bo niby na początku 138 teraz piszesz adres 10, a wysyłasz 138.
Czy ACII, binarnie albo postaci hex to bez znaczenia w tym sensie, że na magistralę i tak zawsze idą 1 i 0. Możesz to też mieszać np. #138T#001$5Axx#001xxx# Ważne, że cała liczba 0-255 zajmuje jeden bajt jak wysyłasz ją w postaci binarnej, bo równie dobrze można liczbę 123 wysłać jako 3 znaki ASCII "123" i zajmie to 3 bajty a nie 1.
W tym terminalu można sobie włączyć dodatkowo podgląd tego co odebrano w formacie Bin, Hex, Dec (patrz obrazek: 1) i pojawi się to w odpowiednich kolumnach (2) lub całą odpowiedź mieć od razu jako ciąg liczb w formacie Hex (3)
Obrazek

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2014, o 11:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lis 2012
Posty: 41
Lokalizacja: Gdańsk
Pomógł: 1

Według instrukcji protokołu w bajcie odbiorcy wysyłamy 128+adres odbiorcy, dlatego wysyłam #138. Dziś podczas kolejnych prób nastąpił duży przełom, gdy nerwowo kilkakrotnie nacisnąłem ENTER wysyłając zapytanie. Spłynęła odpowiedź z temperaturą do terminala. Wymarzone jedenaście bajtów. Nie pojawia się jeszcze po wysłaniu każdej ramki z zapytaniem ale jest już duży sukces. Jeszcze raz dzięki za podpowiedzi zabieram się za dalsze testy.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2014, o 21:17 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Do tej ramki dodaj sobie na koniec $0D$0A, czyli "\r\n". Możliwe, że wymagane jest samo "\r".

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 kwi 2014, o 14:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lis 2012
Posty: 41
Lokalizacja: Gdańsk
Pomógł: 1

Dodawanie znaków na końcu ramki nie było potrzebne. W protokole Compit C3 na końcu zawsze wysyłany jest znak '#" kończący ramkę. Pochwalę się efektem etapu komunikacji ze sterownikiem. Zestaw ładnie wysyła zapytania i zbiera odpowiedzi.
Obrazek

Muszę jeszcze stworzyć kosmetyczne zabezpieczenia od zakłóceń w transmisji, przepełnienia bufora, ale tej chwili nie ma z tym żadnych problemów.
Kolejny krok to zapis godziny i temperatury na kartę SD, a później może przesyłanie przez Ethernet. :)
Jeszcze raz dzięki za pomoc w rozwiązaniu problemu.



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: 9 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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