Strona 1 z 1

ModeBus

: 16 lut 2023, 20:05
autor: grzeniu 73
Siema. Pierwszy raz zabrałem sie za Modbus rtu . Korzystam z przykładu bascoma.
Musze wysłać " 01 04 03 E8 00 15 "

i wysyłam
  1.  W = &H0015 : Print #1 , Makemodbus(1 , 4 , &H03E8 , W);
Cokolwiek nie wpisze do zmiennej W to wysyła "01 04 03 E8 00 01" , A chce odczytać 21 adresów.
Poradziłem sobie po długim kombinowaniu zamiast W
  1. Print #1 , Makemodbus(1 , 4 , &H03E8 , 42);
Tylko, że nie rozumiem czemu tak sie dzieje.
I drugie pytanie czy ta biblioteka używa jakiegoś Timera? Nie mogę znaleźć na to pytanie odpowiedzi

Re: ModeBus

: 16 lut 2023, 21:19
autor: niveasoft
Przepraszam że nie moge sie zagłebić w ten akurat temat dzisiaj, ale na pewno ta biblioteka korzysta z Timera. O to chodzi właśnie w ModBus. Jak nie ma wiecej danych to znaczy że to wszystko i wtedy sie je analizuje.. Na samym poczatku okresla się to ze przesłanie jednego bajtu potrwa tyle.. a jak dwie długosci tego minęły i nic nowego nie nadeszło to znaczy koniec transmisji.

Timer0 tu jest używany - jesli ma sie w procu więcej takich timerów to mozna to przełączyć.

Re: ModeBus

: 18 lut 2023, 11:46
autor: grzeniu 73
Dzięki za odpowiedz. Trochę sie tym pobawiłem i bascomie trzeba wysłać ile bajtow chce odebrać od slave , a nie ile adresów odczytać. Ważne ,ze działa. Gorzej jest z crc, ale może kiedyś i z tym sobie poradzę.

Re: ModeBus

: 18 lut 2023, 11:56
autor: niveasoft
Co ciekawe musiało mnie trochę przycmic bo to wszystko jest opisane w Helpie -> F1 ->Modbus Slave Server :
A timer is used to detect the start of a frame. With RTU (binary data) a silence of 3.5 characters is needed between frames. A frame is a complete MODBUS message.

Re: ModeBus

: 18 lut 2023, 21:39
autor: grzeniu 73
Mnie chyba tez , bo zapomniałem napisać ,ze korzystam z modebus Master. Ale tu w sumie do wysłania zapytania chyba tez potrzebny jest timer ,żeby do pauzę zrobić na początku i na końcu ramki. Chociaż w helpie nie znalazłem, żeby korzystał z timera w tym wypadku.