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



Teraz jest 3 gru 2024, o 07:51


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 112 ]  Przejdź na stronę Poprzednia strona  1, 2, 3, 4  Następna strona
Autor Wiadomość
PostNapisane: 20 sie 2014, o 23:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 cze 2014
Posty: 820
Lokalizacja: Tam gdzie PYRY są
Pomógł: 64

Takie proste a tak trudno wpaść na to. dzięki wielkie. Pomogłeś i to mocno. Na pewno napotkam jeszcze jakiś problem to będę pisał. Na razie funkcje 03 04 16 działają, a to najważniejsze

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2014, o 22:04 
Offline
Użytkownik

Dołączył(a): 25 lis 2013
Posty: 28
Pomógł: 0

Panowie czy wiecie może jak odchudzić tą bibliotekę ?? zapakowałem to w megę8 z pomiarem temp. na 1wire i zrobiło się tak ciasno, że już strach cokolwiek dopisywać. A koniecznie muszę to upchnąć w megę8 :?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 paź 2014, o 09:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 162
Pomógł: 6

A czemu koniecznie m8? Wymien na m328 ten sam układ pinów.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 paź 2014, o 17:49 
Offline
Użytkownik

Dołączył(a): 30 mar 2013
Posty: 31
Pomógł: 0

Jaki program modbus master symulator free do testów, z funkcjami zadawania dla slove, możecie koledzy zaproponować ? Te które znam to tylko z funkcjami odpytywania. A może nie wiem jak je ustawić ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 paź 2014, o 17:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 cze 2014
Posty: 820
Lokalizacja: Tam gdzie PYRY są
Pomógł: 64

mbpoll jest rewelacja

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 paź 2014, o 18:11 
Offline
Użytkownik

Dołączył(a): 30 mar 2013
Posty: 31
Pomógł: 0

Wstępnie po zainstalowaniu wygląda ciekawie, właśnie o to chodzi. Ale czy wymaga klucza itp. W helpie pisze mi <unregistered> ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 paź 2014, o 21:48 
Offline
Użytkownik

Dołączył(a): 25 lis 2013
Posty: 28
Pomógł: 0

aaadamw niestety biblioteka freemodbus nie obsługuje atmegi 328. Jest tam tylko 8, 16, 32, 128 i 168, a niestety nie jestem na tyle biegły, żeby sobie z tym poradzić. W bibliotece jest rtu, ascii i tcp a używam tylko rtu, więc pomyślałem, że można coś wywalić z biblioteki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 paź 2014, o 16:19 
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

llemar napisał(a):
niestety biblioteka freemodbus nie obsługuje atmegi 328. Jest tam tylko 8, 16, 32, 128 i 168

328 nie różni się niczym do 168 i 88 poza rozmiarem pamięci
llemar napisał(a):
pomyślałem, że można coś wywalić z biblioteki

w eclipse gadget jest taka opcja, która bez zagłębiania się w szczegóły usunie nieużywane funkcje z pliku hex

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 paź 2014, o 18:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 cze 2014
Posty: 820
Lokalizacja: Tam gdzie PYRY są
Pomógł: 64

llemar napisał(a):
aaadamw niestety biblioteka freemodbus nie obsługuje atmegi 328. Jest tam tylko 8, 16, 32, 128 i 168, a niestety nie jestem na tyle biegły, żeby sobie z tym poradzić. W bibliotece jest rtu, ascii i tcp a używam tylko rtu, więc pomyślałem, że można coś wywalić z biblioteki.


można i to dość dużo
pobaw się w pliku mbconfig.h
Masz tam ustawienia czy używsz RTU ASCII TCP.
ja k używasz tylko RTU daj tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


pozniej możesz wyłączyć nieużywane rejestry/funkcje. Np Ja używam tylko Holding registers i nic więcej, więc Wszystkie input coils itp. też out.

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

powinno się ładnie odchudzić. Możesz też ograniczyć do minimum ilość potrzebnych rejestrów. Jak potzrebujesz np tylko temp z jednego czyjnika to zostaw
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

jeden rejestr dla całych stopni, drugi dla dziesiętnych, trzeci dla znaku +/-
powinna M8 zmieścić

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 paź 2014, o 19:20 
Offline
Użytkownik

Dołączył(a): 25 lis 2013
Posty: 28
Pomógł: 0

skalarro wielkie dzięki :) pomogło :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 paź 2014, o 15:27 
Offline
Użytkownik

Dołączył(a): 30 mar 2013
Posty: 31
Pomógł: 0

Utknąłem.
Zgodnie ze wszystkimi uwagami kolegów uruchamiam modbusa i powinno być ok a tu ciągle mam w ModbusMat1.1

Write status : Poll frame is successfully sent - .......
Read Status : Exception : Illegal Data Address - ......

W ModbusMAT1.1 w Comm Monitor
0A!04!00!00!00!04!F0!B2! - Sent witch CRC OK - z Mastera
0A!84!02!B3!03! - Excception incoming .. - odpowiedź ze Slove

Kompilacja, poprawki w programie, RS485 jest ok. U kolegów ruszyło u mnie nie. Prosiłbym o podpowiedź gdzie szukać przyczyny.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 paź 2014, o 15:59 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 cze 2014
Posty: 820
Lokalizacja: Tam gdzie PYRY są
Pomógł: 64

napisz co więcej, jak masz ustawiony modbus w AVR? komunikacja się odbywa, zakładam, że masz ok parametru tupu baud, parity, rtu itp.

Wysyłasz zapytanie do slave'a 10 o wartoć czterech InputRegisters zaczynając od 300000.
slave to odbiera ale zgłasza Error Code. I teraz jest tak bo:
1 - wysyłasz zapytanie o input registwers a w atmedze masz wyłączoną funkcję 04
albo
2 - wysyłasz ok, ale zakres adresów się nie zgadza.

pokaż kawałek kodu z mbconfig.h
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


oraz ten kawałek z main.c
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

zależnie co masz ustawione w programie

Pozdrawaim
aha, na jakim procku uruchamiasz?

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 paź 2014, o 16:20 
Offline
Użytkownik

Dołączył(a): 30 mar 2013
Posty: 31
Pomógł: 0

Uruchamiam na ATMega32 na zestawie testowym ZL3AVR.
Konwerter RS232/RS485 kupiony na Allegro, natomiast MAX485 dla pewności połączeń na płytce drukownej - testowej.

W mbconfig.h

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


i w main.c

Składnia: [ Pobierz ] [ Ukryj ]
język c
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 paź 2014, o 16:24 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 cze 2014
Posty: 820
Lokalizacja: Tam gdzie PYRY są
Pomógł: 64

spórz na spokojnie jeszcze raz na swó kod i na te kawałki o których pisałem. Wszystko tam ok??
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


definiujesz adres od 0x1000 co w funkcji 04 daje adres 301000 a odpytujesz adresy 300000, 300001, 300002, 30003

Wysłąna ramka powinna wyglądać tak: 0A 04 03 E8 00 04 70 C2

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 paź 2014, o 16:37 
Offline
Użytkownik

Dołączył(a): 30 mar 2013
Posty: 31
Pomógł: 0

Mój błąd, bo podałem przykład dla offset=1, ale dla offset=1000 jest to samo. Czyli dla adresów 31000 - 31003.

Dla offset=1000 mam ramkę 0A!04!03!F7!00!04!40!C1!

Dla 1001 jest 03!F8 ale bez zmian.



Ostatnio edytowano 22 paź 2014, o 16:44 przez JurekG, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 paź 2014, o 16:43 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 cze 2014
Posty: 820
Lokalizacja: Tam gdzie PYRY są
Pomógł: 64

JurekG napisał(a):
Mój błąd, bo podałem przykład dla offset=1, ale dla offset=1000 jest to samo. Czyli dla adresów 31000 - 31003.


raczej 301000 ale nie ważne. i tak używasz tylko numeru funkcji i 1000.

Spróbuj przestawić się na funkcję 03 czyli read HoldingRegisters i 16 Write Holding registers. Lepiej się sprawdzają.

pozatym zrób eksperyment. Zapytaj slavea o dwa holdingRegisters zaczynając od 1001, ale nie zmieniaj start addres i nregs w programie. zobacz czy odpowie poprawnie - w twoim przypadku na razie zerami.
czyli wylij taką ramkę: 0A 03 03 E9 00 02 14 C0

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 paź 2014, o 16:54 
Offline
Użytkownik

Dołączył(a): 30 mar 2013
Posty: 31
Pomógł: 0

Zrobiłem jak piszesz i nadal to samo. W programie mbpoll też. Zastanawiam się czy może jednak ten RS485 coś nie działa.
Chociaż w tym ustawieniu widać że coś odpowiada, bo jak zmienię adres na inny niż 10 to od razu są timeout-y



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 paź 2014, o 17:07 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 cze 2014
Posty: 820
Lokalizacja: Tam gdzie PYRY są
Pomógł: 64

to sprawdź, oczywicie w obie strony.powysyłaj jakie teksty przez terminal. to podstawa - musisz być pewny RSa. i możeszpodłączyć ledy pod RX i TX, czyli piny które idą do RSa. Będziesz łądnie widział czy procek wogóle odpowiada. A w pliku PORT.H jaki masz ustawiony pin jako RTS PIN? i do którego pinu masz podłączone RE/DE RSa?

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 paź 2014, o 18:18 
Offline
Użytkownik

Dołączył(a): 30 mar 2013
Posty: 31
Pomógł: 0

Diody podłączyłem i widać że RxD co sekndę krótki impuls a na TxD też ale tylko jak adres ustawiony na 10.
RTS_PIN mam do PB0 i w PORT.H i na płytce. RxD do PD0 a TxD do PD1. Jeszcze spróbuję przez terminal.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 paź 2014, o 18:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 cze 2014
Posty: 820
Lokalizacja: Tam gdzie PYRY są
Pomógł: 64

JurekG napisał(a):
Diody podłączyłem i widać że RxD co sekndę krótki impuls a na TxD też ale tylko jak adres ustawiony na 10.

to zachowuje się dobrze, odpowiada na zapytania. teraz pytanie co odpowiada. bo właściwa odpowiedź to nie jest. A jak pytasz o holdingregisters powiedzmy tylko 1001 to odpowiada ze zły adres czy timeoutem?

Spróbuj jeszcze zmienić rejestry dla input i holdings. teraz masz na tych samych, może miesza? daj jednemu 1000 drugiemu 1100np.

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 paź 2014, o 19:15 
Offline
Użytkownik

Dołączył(a): 30 mar 2013
Posty: 31
Pomógł: 0

Widać coś z tymi adresami mu nie pasuje bo

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


W else wstawiłem PORTC &= ~WYJSCIE1; gasi mi leda co by znaczyło że do funkcji wchodzi ale instrukcja if jest nie spełniona.

Główny podejrzany to "usAddress"



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 paź 2014, o 19:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 cze 2014
Posty: 820
Lokalizacja: Tam gdzie PYRY są
Pomógł: 64

leda gasi i gasić będzie.
zauważ że funkcję eMBpoll(); wywołujesz w pętki nieskończonej więc baaaardzo często. Wg mnie pierwsze wywołanie spełnia warunki i if się wykonje ale już następne wywołanie funkcji nie spełnia ifa i gasi led

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 paź 2014, o 19:44 
Offline
Użytkownik

Dołączył(a): 30 mar 2013
Posty: 31
Pomógł: 0

Diodę zapalam przed węjsciem w pętlę nieskończoną z Poll. Diody mam do masy.
I tylko w tym jednym miejscu else gasi diodę. Gdy wstawię za if to nie gasi. Podobnie jest w obu funkcjach. Dlatego twierdzę że jest zły ten usAddress.

Składnia: [ Pobierz ] [ Ukryj ]
język c
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 paź 2014, o 19:46 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 cze 2014
Posty: 820
Lokalizacja: Tam gdzie PYRY są
Pomógł: 64

a jaką ramkę wysyłasz?

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 paź 2014, o 19:53 
Offline
Użytkownik

Dołączył(a): 30 mar 2013
Posty: 31
Pomógł: 0

Hura jest !!! I jak zwykle błąd aż się smiać chce .
Otóż adres tu jest w formacie hex
#define REG_HOLDING_START 0x1000
a w ModbusMat podajemy dziesietnie 1000.
Wystarczyło zmienic na
#define REG_HOLDING_START 1000
i jest ok.

Dzieki skalarro za pomoc w szukaniu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 paź 2014, o 20:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 cze 2014
Posty: 820
Lokalizacja: Tam gdzie PYRY są
Pomógł: 64

Toż kur... wróć kilka postów wyżej i zobacz na kawałki kodu jakie Tobie wklejałem i jak tam jest. Miałeś zrobić tak samo.!! Nie zauwaźyłem że tam tegi x jeszcze dodałeś w adresie
skalarro napisał(a):
oraz ten kawałek z main.c
Składnia: [ Pobierz ] [ Ukryj ]
język c
#define REG_HOLDING_START           1000
#define REG_HOLDING_NREGS           30
GeSHi
;]

pierwsza moja odpowiedź na twój problem! :twisted:
cieszę się że dzaiła

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 paź 2014, o 20:06 
Offline
Użytkownik

Dołączył(a): 30 mar 2013
Posty: 31
Pomógł: 0

Przepraszam, "jak sroka w kość" patrzyłem.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 paź 2014, o 20:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 cze 2014
Posty: 820
Lokalizacja: Tam gdzie PYRY są
Pomógł: 64

JurekG napisał(a):
Przepraszam

niezamaco ;]

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lis 2014, o 22:00 
Offline
Użytkownik

Dołączył(a): 25 lis 2013
Posty: 28
Pomógł: 0

Koledzy a jak zapisywać do procka? Zrobiłem tak jak zalecał kolega Krauser na pierwszej stronie i niestety z ModbusMAT1.1 nie daje się zapisać
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

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


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


Do zmiennej test próbowałem wpisać 1 z ModbusMAT1.1 i po kliknięciu zapisz na dole wyświetla się na czerwono Timeout
Obrazek
Obrazek

Dziękuję za wszelakie wskazówki :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lis 2014, o 22:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 cze 2014
Posty: 820
Lokalizacja: Tam gdzie PYRY są
Pomógł: 64

llemar napisał(a):
Koledzy a jak zapisywać do procka? Zrobiłem tak jak zalecał kolega Krauser na pierwszej stronie i niestety z ModbusMAT1.1 nie daje się zapisać

Po kolei kolego. ..
Co chcesz zapisać i w jaki sposób?
Używasz do zapisu do procka funkcji 16?
Po drugie o ile do porze interpretuje twoje wycinki kodu to zaraz po wywołaniu funkcji mbpoll() nadpisujesz rejestry wartościami zmiennych. Chyba nie to chciałeś osiągnąć?
Napisz trochę więcej szczegółów.

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



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: 112 ]  Przejdź na stronę Poprzednia strona  1, 2, 3, 4  Następna strona

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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO