Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Softver za izradu kontrolnih panela

[es] :: Elektronika :: Softver za izradu kontrolnih panela

[ Pregleda: 2171 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

peromalosutra
Ivan Rajkovic
Software engineer
Luxoft
Berlin

Član broj: 54774
Poruke: 875
31.223.130.*



+148 Profil

icon Softver za izradu kontrolnih panela04.03.2017. u 19:38 - pre 86 meseci
Prvo, pozdrav svima! Ova tema bi mozda mogla da se postavi i u nekim drugim podforumima (C++, embedded), ali mislim da bi potencijalno mogla biti od koristi ponajviše ljudima koji posjećuju ovaj podforum.

Već par mjeseci samostalno radim na alatu za pravljenje kontrolnih panela u različitim domenima. Projekat sam pokrenuo kao temu za diplomski rad, međutim nastavio sam razvoj i sada to polako dolazi u neku upotrebljivu fazu.

Cilj ovog posta je da projekat izvučem iz dubina interneta, ali budući da je projekat u potpunosti otvorenog koda i razvijen je između ostalog sa ciljem doprinosa i podrške široj DIY zajednici, nadam se da ovakvo reklamiranje neće biti uzeto za zlo. Da se vratim na alat.

Glavna odlika alata je ugrađeni editor za pravljenje kontrolnih panela po principu "šta vidiš to i dobiješ" (WYSIWYG). Na raspolaganju je nekoliko virtuelnih instrumenata za prikaz mjerenih signala (analogni, digitalni, ploter, itd), kontrole za upravljanje (dugme i slider), te podrška za uvoz slika. Raspoređivanjem ovih elemenata i konfigurisanjem preko ugrađenog editora, moguće je postići veoma specijalizovane izglede kontrolnih panela. Ovako iskonfigurisan panel se snima u XML fajl koji u potpunosti opisuje konfiguraciju panela.

Nakon što se napravi zadovoljavajuća konfiguracija kontrolnog panela, moguće je istu pokrenuti (run). U ovom modu, panel predstavlja samostalnu aplikaciju koja može da prima mjerene vrijednosti i u realnom vremenu iscrtava ove promjene putem virtuelnih instrumenata. Na raspolaganju su UDP i serijska komunikacija. Bilo koji uređaj koji je u stanju da generiše UDP paket ili serijsku komunikaciju definisanog formata može da služi kao izvor vrijednosti za vizuelizaciju. Ovo mogu biti raznorazni mikrokontroleri, ali takođe i softverski izvori kao što su raznorazne skripte. Jedan primjer (dostupan u repozitorijumu) je python skripta koja čita opterećenje procesora i ovo šalje kontrolnom panelu, koji ovu veličinu prikazuje kroz par instrumenata.

Razlog zašto sam temu postavio ovdje je taj što mi je osnovna ideja bila podrška za embedded developere i elektroničare. Npr. neko razvija svoju pametnu kuću (DIY), i dobar je sa programiranjem mikrokontrolera, ali možda se nije susreo sa GUI programiranjem. Koristeći softver koji pravim, moguće je kompletan GUI dio riješiti klikanjem mišem, a prilagođenje izvršiti na strani mikrokontrolera.

Više informacija i sam izvorni kod je dostupan na sledećem github linku: https://github.com/irajkovic/visualization
Wiki stranica sa par screenshota: https://github.com/irajkovic/visualization/wiki





 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: Softver za izradu kontrolnih panela07.03.2017. u 21:43 - pre 86 meseci
extra, tih aplikacija uvek treba! ... samo treba malo da budznes deo vezan za "serial input" da umesto tvog fixnog imas mogucnost unosenja regeksa tako da moze da se parsira bilo koji serial stream i iscupana data prosledi modulu za vizualizaciju :) .. na taj nacin bi bilo mnogo korisnije :) ... takodje "string koji treba da posalje na serial za start komunikacije i string koji treba da posalje za neki info" .. npr oces da monitorujes temperaturu grejaca koji se kontrolise nekim cnc kontrolerom ... hoces na pocetku da kazes M104S200 i onda hoces na svakih 10sec da posaljes M105 .. u odgovoru nemas timestamp ali ga znas (znas kad si poslao M105) .. i slicno .. odgovor ti stigne kao T:23.61 /200 @:255 T1:23.89 /0 @1:0 .. i ti sad napravis regex da izvuces ovo 23.61 i posaljes de treba ..

[Ovu poruku je menjao bogdan.kecman dana 07.03.2017. u 23:00 GMT+1]
 
Odgovor na temu

peromalosutra
Ivan Rajkovic
Software engineer
Luxoft
Berlin

Član broj: 54774
Poruke: 875
89.111.233.*



+148 Profil

icon Re: Softver za izradu kontrolnih panela08.03.2017. u 15:03 - pre 86 meseci
Hvala na prijedlogu, upravo mi je trebalo malo praktičnih zahtjeva. :)

Implementirao to što si opisao, kod je svježe pushan na repo.

Dodao sam mogućnost da se serijski port binduje na jedan signal, malo je ružno implementirano ali za sad drži vodu. Kada bilo šta dođe na serijski port, ukoliko je omogućeno bindovanje, dešava se sledeće:
* Primljeni bajtovi sa porta se provlače kroz regex
* Ukoliko je regex matchovan, kastuje se u double
* Ovaj double se množi sa faktorom i na to se dodaje offset
* Ova vrijednost se zatim kastuje u unsigned int koji je potreban signalima

Po defaultu su vrijednosti za factor i offset 1.0 i 0.0, što znači da će ulazni broj faktički biti kastovan u int. Ako na serijski port stiže nešto sa decimalama, onda se factor može staviti na npr. 100 da se očuvaju zadnje dve decimale, a onda se u podešavanju signala njegov factor stavi na 0.01, da bi se dobila originalna vrijednost, ali sa preciznošću na 2 decimale. Malo ružno rješenje, ali nisam htio da refaktorišem komplet kod.

Na zakačenom screenshotu, to su poslednjih 5 podešavanja u "Configuration parameters" dijalogu. Moram malo više da poradim na UI dijelu, npr. kada bindovanje nije omogućeno, ne treba da se prikazuju podešavanja vezana za njega.

Takođe, dokumentacija, tj. neki howto tutoriali, ali to kada nađem vremena. :)



@edit:

Eh da, fali ovaj dio za inicijalizaciju serijske komunikacije i pulovanje signala. Trenutno se podrazumjeva da mikrokontroler radi push izmjerenih vrijednosti. Vidjeću da i to dodam ovih dana, cilj je da sistem bude praktično iskoristiv..

Prikačeni fajlovi
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: Softver za izradu kontrolnih panela08.03.2017. u 17:35 - pre 86 meseci
najjednostavniji primer ti je 3d printer, saljes mu M105 i dobijes nazad T:23.61 /200 @:255 T1:23.89 /0 @1:0 T2:180.05 /200 @:150
gde bi neki regex poput

Code:

^T:([0-9]+\.[0-9]+) /([0-9]+) @.*:([0-9]+) T1:([0-9]+\.[0-9]+) /([0-9]+) @.*:([0-9]+) T2:([0-9]+\.[0-9]+) /([0-9]+) @.*:([0-9]+)


vratio vise varijabli odatle, $0 je temperatura prvog extrudera, $1 je setovana temperatura prvog extruder, $2 je trenutna PWM vrednost, $3 je temperatura drugog extrudera, $4 setovana temperatura drugog etc etc ..
 
Odgovor na temu

mikikg
System administrator
Srbija

Član broj: 3779
Poruke: 5059
*.dynamic.isp.telekom.rs.

Sajt: yu3ma.net


+505 Profil

icon Re: Softver za izradu kontrolnih panela09.03.2017. u 13:15 - pre 86 meseci
@peromalosutra
Da li je mozda u planu podrska za MODBUS protokol?
Site about Software Defined Radio – SDR
http://yu3ma.net/
https://github.com/yu3ma
On-line LM317 kalkulator
 
Odgovor na temu

peromalosutra
Ivan Rajkovic
Software engineer
Luxoft
Berlin

Član broj: 54774
Poruke: 875
89.111.233.*



+148 Profil

icon Re: Softver za izradu kontrolnih panela10.03.2017. u 11:44 - pre 86 meseci
@bogdan

Ok, sad je dosta jasnije, iz jednog streama ovako mogu povući više signala. Ovo već ima smisla, ova moja prethodna implementacija ja zaključana na jedan signal, što baš i nije pretjerano korisno. :) Gledaću da dodam ovo sledeće sedmice, javiću ovdje kad završim taj dio.

@mikikg

Koliko vidim, modbus protokol nije direktno podržan od strane Qt-a, morale bi da se koriste neke platform specific biblioteke. Jedan workaround za sad je da se koristi neka skripta ili program kao međusloj, koji će da kupi podatke sa modbus-a, a zatim ih prepakuje i šalje serveru za vizuelizaciju. Trenutno postoji neki minimalni python framework koji je razvijen baš za ovu namjenu, pogledaj unutar sender/ foldera. Npr sledeća python skripta mjeri CPU usage (izbačene su neke stvari radi jasnoće):

Code:

server = Server("127.0.0.1", 3334)
sender = Sender(server)    
signal = Signal(0)

while True:
    cpuUsage = int(psutil.cpu_percent(interval=0.1))
    signal.update(cpuUsage)
    sender.send(signal)


Ako python ima neku biblioteku za modbus, onda bi ona jednostavno mogla da se integriše u ovaj kod gore koji služi kao neki adapter prema serveru za vizuelizaciju.

 
Odgovor na temu

mikikg
System administrator
Srbija

Član broj: 3779
Poruke: 5059
*.dynamic.isp.telekom.rs.

Sajt: yu3ma.net


+505 Profil

icon Re: Softver za izradu kontrolnih panela10.03.2017. u 14:42 - pre 86 meseci
Modbus je relativno jednostavan protokol, on se nalazi u nivou 7 OSI modela, nebi trebalo da bude neka preterana komplikacija da se on implementira, klasicno baratanje stringovima i iskljucivo radi po principu pullinga, dakle klient (tvoj SW) pita tamo neku periferiju (request) da iscita neku memorisku lokaciju (ili da je setuje ili da uradi neku akciju) iz uredjaja, uredjaj odgovori (response), usput doda CRC i to mu dodje to. Postoji i broadcast mode gde periferija ne odgovara nista, samo uradi to sto je trazeno.

Sta se tacno i gde pita je specificno za samu periferiju.

PLC-ovi, motor drajveri i ostale industriske stvari uglavnom imaju Modbus podrsku, veoma je zastupljen u tim vodama.

Evo ja bas ovih dana radim na nekoj periferiji koja bi treba da ima Modbus (preko RS485) za iscitavanje i setovanje nekih parametara.
Site about Software Defined Radio – SDR
http://yu3ma.net/
https://github.com/yu3ma
On-line LM317 kalkulator
Prikačeni fajlovi
 
Odgovor na temu

peromalosutra
Ivan Rajkovic
Software engineer
Luxoft
Berlin

Član broj: 54774
Poruke: 875
89.111.233.*



+148 Profil

icon Re: Softver za izradu kontrolnih panela13.03.2017. u 07:51 - pre 86 meseci
Prosle sedmice nisam stigao da se pozabavim ovim, sada sam malo počeo da čitam oko modbus protokola, pa mi na prvu nije jasno kako se to uopšte koristi. Npr. kažeš da on radi na layeru 7 OSI modela, to je fino, ali koliko je meni poznato OSI je teoretski model, kako ja da to implementiram unutar aplikacije? Npr. ja nemam OSI, imam TCP/IP stack, gdje sad tu dolazi modbus, da li šaljem raw ethernet frejmove?

Vjerovatno je glupo pitanje, čim ne nalazim odgovor. :)

 
Odgovor na temu

mikikg
System administrator
Srbija

Član broj: 3779
Poruke: 5059
*.dynamic.sbb.rs.

Sajt: yu3ma.net


+505 Profil

icon Re: Softver za izradu kontrolnih panela13.03.2017. u 09:10 - pre 86 meseci
I za mene je MODBUS protokol relativno nova stvar, silom prilika treba da ga implementiram u nekim mikrokontrolerima.

Taj protokol je na aplikacionom nivou, ne interesuje te sam transport i nista se tu ne "cacka", recimo da je slicno kao HTTP protokol (dakle iznad TCP/IP staka, ima i MODBUS RTU koji koristi serisku komunikaciju najcesce u okviru RS485 mreze), kocka se request i uredjaj odgovara sa nekim response koji SW treba da izparsuje i izvuce konkretne informacije.

Verujem da se to moze lako implementirati u tvoju Qt aplikaciju kada moze da se implamentira i u 8bitne mikrokontrolere :)
Site about Software Defined Radio – SDR
http://yu3ma.net/
https://github.com/yu3ma
On-line LM317 kalkulator
 
Odgovor na temu

peromalosutra
Ivan Rajkovic
Software engineer
Luxoft
Berlin

Član broj: 54774
Poruke: 875
89.111.233.*



+148 Profil

icon Re: Softver za izradu kontrolnih panela13.03.2017. u 10:09 - pre 86 meseci
E to me zanimalo, dakle modbus se oslanja na TCP/IP, a u drugoj varijanti može da radi i sa serijskim portovima.

Citat:
So in summary, Modbus TCP/IP uses TCP/IP and Ethernet to carry the data
of the Modbus message structure between compatible devices. That is,
Modbus TCP/IP combines a physical network (Ethernet), with a networking
standard (TCP/IP), and a standard method of representing data (Modbus as
the application protocol). Essentially, the Modbus TCP/IP message is
simply a Modbus communication encapsulated in an Ethernet TCP/IP
wrapper.


Evo nasao sam ovdje, sve fino nacrtano: https://www.youtube.com/watch?v=k993tAFRLSE :)

Ove sedmice počinjem polako da radim na budženju serijske komunikacije u skladu sa Bogdanovim komentarima, usput ću pomalo razmišljati o tome kako da ubacim modbus u priču.

Većinu vremena na razvoju ne uzima konkretno implementacija konkretnog protokola, već više sama izrada interfejsa koji omogućava da upotreba toga nečega bude što fleksibilnija .. Npr. na prvu loptu, ne djeluje mi komplikovano da napravim da moj uređaj priča preko modbusa, ali ako radim modbus podršku za vizuelizaciju, trebaju mi dijalozi za konfigurisanje svih aspekata protokola, definicije ovih coil i register tabela itd. Ne mogu ništa da obećam, ali trenutno razmišljam o implementaciji, pa možda nešto i bude od toga.

Pišite sve ideje i sugestije ovdje, mislim da nisam pogriješio sa otvaranjem teme jer me upravo i zanima praktična primjena ovoga.





 
Odgovor na temu

mikikg
System administrator
Srbija

Član broj: 3779
Poruke: 5059
*.dynamic.isp.telekom.rs.

Sajt: yu3ma.net


+505 Profil

icon Re: Softver za izradu kontrolnih panela13.03.2017. u 13:12 - pre 86 meseci
Hmm, sad kad sam odgledao ovaj video, uocio sam jedan vrlo nezgodan problem, nece moci to tako kako sam mislio, problem je sto na MODBUS mrezi moze samo jedan uredjaj da bude MASTER i to je obicno neki PLC ili SCADA :(
Site about Software Defined Radio – SDR
http://yu3ma.net/
https://github.com/yu3ma
On-line LM317 kalkulator
 
Odgovor na temu

[es] :: Elektronika :: Softver za izradu kontrolnih panela

[ Pregleda: 2171 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.