Atmega Bascom odczyt rejestru po RS485 Modbus RTU
- niveasoft
- Posty: 1313
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Atmega Bascom odczyt rejestru po RS485 Modbus RTU
Nie jest najgorzej. Jednak gada. 01 adres, 03 odczyt danych, 04 zamówione bajty....
Chyba powinieneś sobie zwiększyć na razie tablicę Rx(10) i tę Twoją logike przesunąć o jeden
Czyli If Rx(3) = 3 And Rx(4) = 4 Then .... i tak dalej. Ogólnie to ciekawe dlaczego dodaje te zero.
Chyba powinieneś sobie zwiększyć na razie tablicę Rx(10) i tę Twoją logike przesunąć o jeden
Czyli If Rx(3) = 3 And Rx(4) = 4 Then .... i tak dalej. Ogólnie to ciekawe dlaczego dodaje te zero.
-
Zbyszek
- Posty: 96
- Rejestracja: 30 lis 2017, 17:12
Re: Atmega Bascom odczyt rejestru po RS485 Modbus RTU
Kazałeś mu wpisać w 2 linii a on nadpisuj na pierwszej 2 pierwsze znaki na 00
Powalczymy jutro.
Powalczymy jutro.
- niveasoft
- Posty: 1313
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Atmega Bascom odczyt rejestru po RS485 Modbus RTU
Zacznij od Locate 1, 1 a potem napisz w tej pętli "If i = 8 then Lowerline" i przejdzie do drugiej 
Na razie sobie daruj ten napis początkowy.
Na razie sobie daruj ten napis początkowy.
- niveasoft
- Posty: 1313
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Atmega Bascom odczyt rejestru po RS485 Modbus RTU
Patrzyłem na Twój schemat i widzę że masz wolny pin na PB2.
Gdybyś miał przejściówkę USB<>USART taką jak CH340G, CP210x, FTDI232 albo Profilic (ten nie działa na Win10) to byś sobie mógł podglądać całą tę komunikację i bardzo szybko rozwiązać problemy.
I potem zamiast używać wyświetlacza to sobie to wysyłasz co dostał albo co obliczył itp...
Gdybyś miał przejściówkę USB<>USART taką jak CH340G, CP210x, FTDI232 albo Profilic (ten nie działa na Win10) to byś sobie mógł podglądać całą tę komunikację i bardzo szybko rozwiązać problemy.
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- Open "COMB.2, 9600, 8 , n, 1" For Output As #2
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- Rx(i) = Waitkey(#1)
- Print #2 ,Hex(Rx(i))
-
Zbyszek
- Posty: 96
- Rejestracja: 30 lis 2017, 17:12
Re: Atmega Bascom odczyt rejestru po RS485 Modbus RTU
Większą część dnia z tym walczyłem bo nie wiedziałem o co chodzi. Twoje diody nie świeciły. Założyłem diody tak jak mówiłeś na RxD i TxD przez rezystor 470R i wychodzi na to że Atmega wysyła sygnał i nie nie dostaje odpowiedzi. Po resecie Atmegi mrugnie tylko Txd i cisza ... ale jak założę rezystor terminujący między piny A i B oraz jeden z nich czyli A albo B dodatkowo przez rezystor 510R do masy to wtedy Rxd i TxD zaczynają mrugać ale na wyświetlaczu pokazują się przypadkowe liczby i tylko w górnej linii. Mówiłem że mam wersję z Timeout i Modbus Error. Jak odepnę przewody od A i B to wyświetla się Timeout, a jak podłączę to Modbus Error. Wg. mnie z tego wynika że problem leży pomiędzy Maxem a licznikiem, co ... niedopasowane poziomy ? Wszystkie przemysłowe urządzenia mają MAX 487 i taki w nocy zamówię, ale jutro jeszcze spróbuję rano podejść na wydział pomiarowy żeby mi pożyczyli przetwornik parametrów sieci nasz Lumelowski P43, położę go obok i zobaczę czy z nim się skomunikuję. Odezwę się jak coś będę wiedział. Jak mi to będzie normalnie czytać to wtedy powalczymy z programem ... nochyba że coś innego ci przychodzi do głowy. A i coś pisałeś o Windows 10 ... ja mam Windows 7 i innego niezabardzo chcę. 
-
Zbyszek
- Posty: 96
- Rejestracja: 30 lis 2017, 17:12
Re: Atmega Bascom odczyt rejestru po RS485 Modbus RTU
Myślę że fusebity są dobrze. Ustawione są na Kwarc zewnętrzny powyżej 8MHz i wewnętrzny podział zegara przez 8 jest wyłączony. Kwarc wsadzony 16 MHz i w programie też 16 MHz
- niveasoft
- Posty: 1313
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Atmega Bascom odczyt rejestru po RS485 Modbus RTU
Gdybyś zainwestował 7zł-9zł to byś mógł podglądać na komputerze co ta Atmega próbuje zrobić albo czy w ogóle próbuje. Mógłbyś też z komputera puscić ramkę do licznika i sprawdzić czy odpowie .... Mam taki i działa.
https://allegro.pl/produkt/konwerter-us ... 9349556295
Oczywiście mam tez lepsze...ale więcej niż 50zł to nie ma co przepłacać.
https://allegro.pl/produkt/konwerter-us ... 9349556295
Oczywiście mam tez lepsze...ale więcej niż 50zł to nie ma co przepłacać.
-
Zbyszek
- Posty: 96
- Rejestracja: 30 lis 2017, 17:12
Re: Atmega Bascom odczyt rejestru po RS485 Modbus RTU
Mam takie coś ... i to nawet 2. Tylko jaki program do tego ? Może do d... bibliotekę modbus.lbx ?
-
Zbyszek
- Posty: 96
- Rejestracja: 30 lis 2017, 17:12
Re: Atmega Bascom odczyt rejestru po RS485 Modbus RTU
Bartek tu nie chodzi o takie grosze ....
- niveasoft
- Posty: 1313
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Atmega Bascom odczyt rejestru po RS485 Modbus RTU
Domyślam się że nie chodzi o grosze...
Popatrz jakie to proste i że nie trzeba być aż tak pomysłowym...
Piszesz sobie prosty program na Atmegę żeby przechwycić to jak wygląda ramka zbudowana przez Bascom.
Wrzucasz to na Atmege i ściągasz program HTerm.
Atmege podłączasz przejściówką USB<>SERIAL do kompa i podglądasz ramkę.
Program najlepiej ustawić tak jak na obrazku czyli na pokazywanie HEX.
Tu masz juz tę ramke pokazaną więc możesz odgapić i krok pominąć...
01 03 20 12 00 02 FF CE
Podłączasz się bezpośrednio do licznika tą przejściówką USB<>RS485
Przepisujesz tę ramkę niżej tam gdzie pisze "Type HEX" i wciskasz ENTER
Jak licznik odpowie to coś zobaczysz. Jak nie no to szukaj w połączeniach.
W sumie jak masz taką przejściówkę USB<>RS485 to mogłeś się na stole próbować połączyć z Atmegą i sprawdzić czy ona coś wysyła. Sprawdziłbyś transceiver. To naprawdę nieskomplikowane....
Popatrz jakie to proste i że nie trzeba być aż tak pomysłowym...
Piszesz sobie prosty program na Atmegę żeby przechwycić to jak wygląda ramka zbudowana przez Bascom.
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- $regfile = "m328pdef.dat"
- $crystal = 16000000
- $hwstack = 64
- $swstack = 32
- $framesize = 128
- $lib "modbus.lbx"
- Config Com1 = 9600 , Parity = None , Stopbits = 1 , Databits = 8
- Open "COM1:" For Binary As #1
- Wait 3
- Print #1 , Makemodbus(1 , 3 , &H2012 , 4)
- End
Atmege podłączasz przejściówką USB<>SERIAL do kompa i podglądasz ramkę.
Program najlepiej ustawić tak jak na obrazku czyli na pokazywanie HEX.
Tu masz juz tę ramke pokazaną więc możesz odgapić i krok pominąć...
01 03 20 12 00 02 FF CE
Podłączasz się bezpośrednio do licznika tą przejściówką USB<>RS485
Przepisujesz tę ramkę niżej tam gdzie pisze "Type HEX" i wciskasz ENTER
Jak licznik odpowie to coś zobaczysz. Jak nie no to szukaj w połączeniach.
W sumie jak masz taką przejściówkę USB<>RS485 to mogłeś się na stole próbować połączyć z Atmegą i sprawdzić czy ona coś wysyła. Sprawdziłbyś transceiver. To naprawdę nieskomplikowane....
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
