Vizitator Zithum Postat August 10, 2016 Partajează Postat August 10, 2016 Pentru ca am lucrat suficient de mult cu ModBus RTU / Eth, si pentru ca am dat de numeroase placi de achizitie (intrari/ iesiri/ analogice) cu iesire ModBus RTU la niste preturi astronomice, m-am hotarat sa-mi fac eu un set de asemenea placi de achizitie, cumva universale (dimensiune, conectori, etc.) prin care sa pot acoperii necesitatile, adica: - intrari digitale; - iesiri digitale; - intrari analogice (curent, 4-20mA). - intrari analogice (tensiune 0-10V sau 0-5V) - intrari analogice - tranductori curent (0-50Aca) - module speciale: ModBus RTU - serial (RS232/RS485) - module speciale: interfatare imprimanta termina AP24; - module speciale: interfatare module radio 869Mhz; Cateva informatii despre protocolul modbus: http://modbus.org/specs.php Softul il doresc sa fie cat mai unitar. Practic acelasi soft (prin comment-ul unor directive) sa se adapteze diverselor placi. Controller folosit: PIC18F26K22 (2 porturi seriale, CAD pe PORTB, etc.). Atasez ce am facut pana acum: schema si cablaj pentru RS485MB_DO8 (placa cu 8 iesiri digitale, comandate ModBus RTU). Ca si principiu: alimentare 7..29Vcc (o sa se incalzeasca stabilizatorul 7805 la 29V alimentare), varistor pe intrare, dip-switch-uri pentru selectia adresei RS485 (max. 63), dip-switch pentru parametrii comunicatie (8/9bit, baudrate 9600, 19200, 57600 si 115200bps, cu paritate even sau none). A doua alimentare (pentru izolare galvanica). Optocuploare pentru iesire si led-uri de semnalizare. Nu e optimizata la dimensiune. Sper ca va place. O sa revin cu detalii curand. RS485MB_DO8_v1.pdf Link spre comentariu
Vizitator Zithum Postat August 11, 2016 Partajează Postat August 11, 2016 Cateva poze cu cablajele si asamblarea finala. Distantiere de 25mm intre placi pentru a crea un sandwitch ce va contine mai multe module. Aceste module vor putea fi gestionate de un PC sau de un modul central. Practic creez un mic PLC dar cu comunicatia dintre carduri standardizata (ModBus). In acest fel, placile se pot folosii si independent pentru achizitii de date sau in echipamente industriale. Link spre comentariu
Vizitator Zithum Postat August 11, 2016 Partajează Postat August 11, 2016 Primele probe cu placa: comunicatie la 115200bps, 8bit data, 1 stop, timeout 250ms, interogare la 50ms. M-am cuplat la placa direct pe serial (am scos LTC485) si folosind http://en.radzio.dxp.pl/modbus-master-simulator/ (rmms) i-am dat bataie. Poze atasate. In scurt timp (dupa ce mai bibilesc la el) si codul sursa. Intre timp mai vreau sa fac si un program pe PC pentru gestiunea placilor de achizitie ... Poza cu ecran laptop: program RMMS ruland, parametrii de comunicatie, numarul de interogari in partea de jos, valorile citite in stg. Am facut si un mic filmulet dar nu stiu cum pot sa-l postez aici (ocupa destul de mult). Link spre comentariu
nickrvl Postat August 11, 2016 Partajează Postat August 11, 2016 ........ Am facut si un mic filmulet dar nu stiu cum pot sa-l postez aici (ocupa destul de mult). Youtube sau alt "gazduitor" si link.... Link spre comentariu
Vizitator Zithum Postat August 16, 2016 Partajează Postat August 16, 2016 Pentru partea de soft: se vede ca am optat pentru un uC cu 2 porturi USART (pentru aplicatii in care avem nevoie si de al doilea port RS232/RS485) si cu CAD pe liniile PORTB. La toate placile va fi o parte comuna (PORTA= adresa placii, PORTC = configurare comunicatie + comunicatie ModBus RTU, PORTB= intrari / iesiri). PORTB, in functie de tipul placii poate fi configurat ca intrare digitala, iesire digitala, intrare analogica sau intrerupere (pini RB0- RB2) pentru contoare de mare viteza sau alte aplicatii. Softul este realizat in XC8 (MPLABX) si prezint mai jos header-ul programului principal cat si programul principal, cu observatiile: - in header sunt definite mai multe tipuri de placi. Practic se "de-comenteaza" definitia tipului de placa pentru care se doreste compilarea programului (ex. #define RS485MB_AI4V /**< card with 4 analog inputs, 0-10V (type=4) */) si mai departe la compilare se incarca definitiile si functia de citire specifica. In cazul acesta se va include header-ul #include "rs485mb_ai4v.h" unde sunt definite variabilele si functiile proprii. - procesorul ruleaza la 64MHz (ceas intern + PLL) pentru a avea un maxim de viteza. Pasul de executie al functiilor (pentru toate placile) este de 1ms. Practic unitatea de executie cea mai mica este de minim 1ms (cu exceptia cazurilor definite "fastest" in care operatiile de citire / scriere se executa la viteza maxima). Pentru comunicatia ModBus, avem definit bufferul rx/tx (commBuffer[256]), 2 tabele pentru calculul CRC-ului (extern const UINT8 crcHighTable[256]; // crc high table; extern const UINT8 crcLowTable[256]; // crc low table), adresa placii (slaveAddress), configuratia comunicatiei (baud rate si 8/9 bit, in configReg) (acesti ultimi 2 registrii se seteaza conform dip-switch-urilor externi). Intreruperea la 1ms este folosita pentru a incrementa timer-ul sfarsit comunicatie (la 4ms de la stop receptie) cat si pentru a asigura o perioada de tact executie functie I/O. Partea de receptie USART (ModBus) se gaseste tot in cadrul intreruperii (sunt 2 intreruperi: TMR1 @1ms si USART1_RX) care asigura incarcarea buffer-ului, resetarea comunicatiei in caz de receptie eronata sau bit de paritate gresit. Programul in sine e simplu si apeleaza 2 functii principale: verificare receptie comunicatie si EvaluateIO (functie ce evalueaza intrarile/ iesirile si care e diferita in functie de definitia placii). Urmeaza: fisierele pentru citirea adresei si configuratiei si fisierele specifice fiecarui modul de achizitie in parte. SS_PLC_main.ZIP Link spre comentariu
Vizitator Zithum Postat August 18, 2016 Partajează Postat August 18, 2016 Continuare: rutinele pentru citirea adresei hardware a dispozitivului, pentru citirea configuratiei comunicatie. De asemeni, rutine placa DO8 (iesiri digitale x8, tip NPN). Cateva cuvinte despre rutinele DO8: - structura celorlalte module va fi similara cu a acestuia. - avem cateva definitii standard: product type (un registru care va identifica tipul de placa). Acesta impreuna cu adresa placii ne va ajuta daca dorim sa facem un master cu configurare automata. Product serial si software version (idem pentru identificare). Registrul Output seteaza (LB) iesirile. - mai avem definitia cu numarul maxim de registrii implementati. Ca si rutine (aceleasi rutine dar cu un continut diferit le vom gasii si in fisierele celorlalte placi: - InitIO: initializarea PORTB (in cazul de fata ca iesire). - InitRegs: initializare tabela registrii cat si a variabilelor interne. - EvaluateIO: aici setare PORTB in funtie de valoarea registrului output. Pentru alte placi aceasta functie va fi diferita ... CFG.ZIP DO8.ZIP Link spre comentariu
Vizitator Zithum Postat Septembrie 8, 2016 Partajează Postat Septembrie 8, 2016 Am facut o aplicatie pe PC pentru comunicatia cu placile. Cateva capturi de ecran atasate.... Comunica pe RS232 (merge si cu adaptor USB) si asigura si comutarea liniei RTS pentru a schimba directia in cazul in care se foloseste un montaj cu LTC485. As vrea sa incarc kit-ul programului dar nu stiu cum (are cam 262MB). Daca ma puteti ajuta ... (dar sunt alergic la creerea de conturi, etc.). O sa revin cu o scurta descriere a ceea ce face programul ... Link spre comentariu
nickrvl Postat Septembrie 8, 2016 Partajează Postat Septembrie 8, 2016 .................. As vrea sa incarc kit-ul programului dar nu stiu cum (are cam 262MB). Daca ma puteti ajuta ... (dar sunt alergic la creerea de conturi, etc.). ............................ Pe forum nu, pe un site de gazduire si link.... Link spre comentariu
Stefan Postat Septembrie 8, 2016 Partajează Postat Septembrie 8, 2016 Probabil executabilul ocupa asa mult deoarece are inclus si runtime-ul de LabView. Nu mai retin dar parca reusisem sa fac un exe mult mai mic si runtime-ul il instalam separat (link extern). Imi place si acest proiect al tau si cand am ceva timp liber sigur o sa-ti cer ceva informatii, poate reusesc sa-l pun in practica ca o placuta demo. Link spre comentariu
Vizitator Zithum Postat Septembrie 9, 2016 Partajează Postat Septembrie 9, 2016 Probabil executabilul ocupa asa mult deoarece are inclus si runtime-ul de LabView. Nu mai retin dar parca reusisem sa fac un exe mult mai mic si runtime-ul il instalam separat (link extern). Imi place si acest proiect al tau si cand am ceva timp liber sigur osa-ti cer ceva informatii, poate reusesc sa-l pun in practica ca o placuta demo. Corect, programul e facut in LabWindows CVI ... In momentul de fata sunt facute si testate urmatoarele module: DI8 (digital input), DO8 (digital output), AI4I (analog inputs - current 4-20mA), AI4V (analog inputs, voltage 0-10V sau 0-5V), AI4T (analog inputs, traductor curent 50A). Mai am facute cablaje pentru RSxxx (placa conversie RS485 modbus la RS232 sau RS485 transparent (multiprotocol ...)), AP24prt (placa comanda imprimanta matriciala tip AP25-1200/ AP24 (able systems)). Momentan am in lucru: _RF: placa transceiver RF (869MHz) _IR: placa emitator/receptor IR (RC5 protocol) _CPU_V1: modul central (care va comanda celelalte placi... gen modul PLC) - cablajul e facut deja: include ceas de timp real cu baterie backup, eeprom, interfata afisaj 4x20caractere (sau altele), interfata RS232 (am de gand sa implementez un bootloader). Din pacate gasesc deosebit de dificil sa postez proiectul (kit de instalare, documentatie, etc.) ... si probabil o sa ma las pagubas ... sa vad cum stau cu timpul... Link spre comentariu
Vizitator flueras Postat Septembrie 9, 2016 Partajează Postat Septembrie 9, 2016 As vrea sa incarc kit-ul programului dar nu stiu cum (are cam 262MB). Daca ma puteti ajuta ... (dar sunt alergic la creerea de conturi, etc.). Poti folosi Inno setup pentru crearea kitului de instalare. Este simplu de folosit. Link spre comentariu
Vizitator Zithum Postat Septembrie 9, 2016 Partajează Postat Septembrie 9, 2016 Poti folosi Inno setup pentru crearea kitului de instalare. Este simplu de folosit. Kit-ul il am facut ... cum il postez sau unde il postez ... asta e mai dificil ... Link spre comentariu
Vizitator flueras Postat Septembrie 9, 2016 Partajează Postat Septembrie 9, 2016 Kit-ul il am facut ... cum il postez sau unde il postez ... asta e mai dificil ... https://github.com/ Link spre comentariu
nickrvl Postat Septembrie 9, 2016 Partajează Postat Septembrie 9, 2016 Am sugerat mai sus si-n alte dați, pe un site de găzduire, cât de greu crezi ca este? Flueraș a arătat unul... Link spre comentariu
bennyy Postat Martie 22, 2017 Partajează Postat Martie 22, 2017 Kit-ul il am facut ... cum il postez sau unde il postez ... asta e mai dificil ... Pe google drive si link. Acolo nu expira. Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum