Od jakiegoś czasu próbuję się skomunikować przez rs485 protokołem modbus z moim falownikiem Winner v63. Atmega ma pracować jako master, falownik jako slave. W instrukcji (w załaczniku od str. 182) jest szczegółowo opisany sposób takiej komunikacji, co kiedy wysyłać, format ramki, itp.
Przedstawiam schemat połączenie atmegi przez MAX485 z falownikiem. Pin 6 i 7 podpinam do falownika, tylko pytanie jak podpiąć bo na falowniku od rs-a są oznaczenia + i -. Próbowałem i tak i tak i nie ma komunikacji.
W falowniku dokonałem ustawień w grupie PE: (instrukcja str. 176-177)
PE.00: 22
PE.01: 1
PE.02: 0
PE:03: 500
Używam biblioteki UART z Bluebooka. Zmodyfikowałem tylko prędkość na 4800 i funkcję inicjalizującą, tak żeby ramka była z bitem parzystości zgodnie z ustawieniami w falowniku:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Main wygląda następująco:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Najpierw wysyłam dane zgodnie z przykładem w instrukcji, następnie w pętli głównej wyświetlam sobie odbierane dane.
To nie jest jeszcze modbus (brakuje m.in. obliczania Checksum) Ale czy nie powinno to mi na tym etapie działać?
Dane które wysyłam są przykładowymi danymi które mogę wysłać z instrukcji obsługi z obliczoną już checksumą, na którą falownik powinien odpowiedzieć, jest nawet przykładowa ramka odpowiedzi na to zapytanie.
Po wysłaniu danych z atmegi odbieram je z powrotem, tak jak by linie tx i rx były zwarte. Po podpięciu tylko jednego przewodu biegnącego do falownika pojawiają się śmieci w danych odebranych(przez przypadek zauważyłem, ale to chyba normalne bo zrobiła się antenka z jednego przewodu).
Mam wątpliwości co do sposobu wysyłania danych. Czy nie będzie zbyt dużych przerw podczas wysyłania kolejnych porcji danych? Czy przed wysłaniem i po będzie wystarczający czas przerwy miedzy ramkami modbus, jeśli nic nie wysyłam na UART oprócz tego co pokazałem wyżej?
Może jednak popełniłem znacznie poważniejszy błąd i to nie ma kategorycznie prawa działać?
Wiem, że dużo wymagam, ale może komuś się będzie jednak chciało naprowadzić mnie gdzie robię błąd.