[ korak @ 30.11.2023. 15:03 ] @
Isporučio sam mušteriji jedan sistem koji treba da komunicira sa njegovom opremom na RS485 po Modbus protokolu. Zbog malog broja podataka, i male hitnosti slanja podataka, izabrao sam da to bude Modbus ASCII. Posle godinu dana mušterija kaže da mora da bude RTU, iako je sve vreme znao da je ASCII. I naravno treba mu za juče, pa mi njegov inženjer poslao simulator pomenut u naslovu, uz tvrdnju da ako radi sa simulatorom radiće i sa njihovom opremom.

Vidim da simulator ima konekt i diskonekt, mada Modbus ne zahteva otvaranje i zatvaranje komunikacije. Ne pokazuje virtuelni com port, ali sam za to našao rešenje.

Na konekt pošalje: 01 02 00 64 00 0A B9 D2 01. Adresa mog uređaja je 100 (0x64). Dakle, prvi bajt nije slave adresa.

Takođe ne znam značenje tablice koja se tom priikom prikazuje.

Sve u svemu nedostaje mi neko uputstvo za ovaj simulator, a svakodnevno mušterija zove da pita kada će biti završeno. Doduše, ja sam u ovom poslu treća ruka, pa ovo radim samo zato što mi je druga ruka prijatelj.

Ako neko ima iskustva sa ovim simulatorom ili bilo kako može da mi pomogne biću mu zahvalan.

Pozdrav svima.
[ ZAS011 @ 01.12.2023. 09:01 ] @
Jesi li pogledao ovo: https://www.protoconvert.com/s...bus/modbusmastersimulator.aspx
[ korak @ 01.12.2023. 13:43 ] @
Da, jesam. Radi se o istom simulatoru sa onim koji su mi poslali.

Imam nekoliko zabuna:

1. Ne pokazuje koji je virtuelni COM port napravio. Zato sam pokrenuo Tera Term koji je to uradio. Onda sam taj virtuelni port izabrao u simulatoru. Naravno, Tera Term sam ugasio. Tek posle toga je na "konekt" poslao nešto.

2. To što je poslao je 01 02 00 64 00 0A B9 D2 01. Standard Modbus-a je da prvi bajt bude adresa slave uređaja. U mom slučaju je ta adresa 100 (0x64). Vidi se da je ona poslata kao 4-ti bajt? Dakle, ne znam šta je 01 02 00.

3. Kako da pišaljem neki upit slave-u kada ima samo "konekt"?

4 Kako se piše, i gde, upit

U vremenskoj stisci sam, guglam, i kada ne nađem rešenje obratim se "eliti" jer tu je elita, ali izgleda sve manje ih ima. Nadam se da ću ipak dobiti pomoć.

Hvala ti na odgovoru.
Pozdrav.
[ scoolptor @ 01.12.2023. 13:59 ] @
Adresa slave-a: 01
Funkcijski kod: 02 (Read Input Registers)
Pocetna adresa registra: 00 64 (100 decimal)
Broj registara za citanje: 00 0A (10 decimal)
CRC: B9 D2

Znaci, komanda slave-u 01 da posalje vrednosti registara 100..109.

Modbus RTU mozes prilicno lako implementirati bez ikakve biblioteke.
Pitaj klijenta koje funkcijske kodove treba da pokrijes. Mozes implementirati samo subset protokola.

Samo sam jednom koristio Modbus RTU kada sam komunicirao sa power metrom i brzo sam se snasao bez ikakvih biblioteka.



[ korak @ 01.12.2023. 14:45 ] @
Da, tako bi trebalo da bude.

Šta onda znači u "Device setings" polje "Address". Tu upišem 100 kao slave adresu i ona se pojavi kao 4-ti bajt. Postoji i polje "Device ID, koje je 1, pa možda tu treba upisati slave adresu.

To ću sada da proverim.

Hvala
Pozdrav.
[ bogdan.kecman @ 01.12.2023. 15:22 ] @
ja sam negde implementirao citanje tog RT protokola mora iskopam pa da ti posaljem, mozda ti vredi da preko toga implementiras uredjaj sa koga se cita
[ korak @ 01.12.2023. 16:25 ] @
Već sam implementirao Modbus ASCII i on radi. Za to sam se pomogao sa Tera Term, sada imam ovaj simulator koji ne poznajem, a treba mi da bih programirao svoj uređaj.

Tvoja pomoć i iskustvo su uvek dragoceni, ako nađeš pošalji.
Pozdrav
[ bogdan.kecman @ 01.12.2023. 19:23 ] @
ja sam koristio neki simulator na meku pa sam ga snifovo da bi napravio ovo nisam nasao bio valjanu dokumentaciju... posle sam valjda nasao dobru dokumentaciju ali vec sve radilo ... citao sam neko brojilo ... nego sam onda nasao neki library za arduino pa sam ga iskasapio i ubacio umesto mog koda posto je radio lepse i bolje od mog koda ... nego ima tome vremena pa sam pozaboravljao sve jbg ...

evo ga digao sam ga na github izgleda:D https://github.com/arhi/ESP8266_VSC_WS100-19l3_Modbus

a evo ti zakacen i originalni modbus library za arduino koji prilicno dobro radi: https://downloads.arduino.cc/l.../4-20ma/ModbusMaster-2.0.1.zip
[ korak @ 01.12.2023. 20:51 ] @
Uz vašu pomoć nekako sam skockao da dobijem nešto smisleno. "ID" je ustvari adresa slave

Sutra ću da napišem kod za CRC da vidim da li je to što mi šalje simulator, pa ću tek onda da prionem na konačni posao. Sigurno ću imati problema, pa budite sigurni da ću da se javim.

Bogdane, da li si razumeo da pišem kod za slave uređaj, jer ono što si mi poslao se odnosi na master, hvala i tebi.

Pozdrav svima.
[ bogdan.kecman @ 02.12.2023. 02:36 ] @
pa napisao sam ti da sam ja pisao master ali da ce mozda taj master kod da ti pomogne da napises slave ...

ne znam da li onaj arduino lib ima kod za slave u sebi, ja nisam slave nikad pisao za modbus
[ korak @ 02.12.2023. 13:27 ] @
Izvini, nisam pažljivo čitao. Ako budem imao problema svakako ću poglrdati.

Hvala
Pozdrav
[ bogdan.kecman @ 02.12.2023. 15:37 ] @
gledaj sors ove arduino biblioteke to je korisnije od mog koda :D ne secam se dal ima i ceo slave vec implementiran tu