Răspunsuri pe forumurile create
-
AutorPost
-
Februarie 8, 2021 la 5: 58 pm ca răspuns la: Comunicare Modbus RTU cu contor de energie SDM120 #58986tommas.cavaliniparticipant
În primul rând, îmi cer scuze pentru confuzie: trebuie să citesc atât EnergyMeter-ul, cât și electrovalvele, pe cele din urmă trebuie să scriu și eu: întrucât amândoi comunică în RTU m-am gândit că aș putea întreba direct aici fără a fi nevoie să deschid alt subiect.
Venind la noi, nu am înțeles soluția propusă: m-am gândit să separ faza de citire și scriere, fără a conecta FB-urile în cascadă. De fapt, citirea trebuie să fie continuă în timp ce scrierea are loc numai atunci când e se Vreau să schimb niște parametri.
Februarie 8, 2021 la 11: 33 am ca răspuns la: Comunicare Modbus RTU cu contor de energie SDM120 #58983tommas.cavaliniparticipantPerfect, acum problema mea constă în gestionarea timpului de citire și scriere a zece electrovalve.
Dacă pentru citire este suficient să asociați programul la sarcina Înapoi astfel încât să fie efectuat periodic, scrierea în schimb aș dori să o pot efectua numai urmând o anumită condiție: Am văzut că LogicLab nu ofer sarcini de eveniment, deci cum aș putea să fac?
tommas.cavaliniparticipantPerfect, am încercat totul așa cum mi-ai explicat și funcționează, așa că îți mulțumesc cu adevărat.
Dar acum am o altă problemă: mi s-a cerut să amân citirea în Modbus pentru a efectua o citire pe minut. Pentru a face acest lucru m-am gândit să acționez pe vocea Delay: este corect să pun o întârziere de 60 pentru finalul meu sau ar fi mai bine să pun un eTON înainte de Enable pentru a întârzia cu temporizatorul?
În cazul în care merg să modific Delay (punând 60), având doi modbusMasters în cascadă, în elementul Delay al celui de-al doilea FB ar trebui să pun 61 (60 din precedenta + 1 întârziere între cele două citiri) sau trebuie doar să introduc întârzierea dintre cele două citiri (1 sec) și în prima let 60?
tommas.cavaliniparticipantVă spun imediat că, din păcate, citirea valorilor de la datataker nu are succes dacă folosesc VarSwap (M-am gândit să folosesc acest lucru la început, dar iese un număr foarte mare) în timp ce dacă folosesc FB BEArrayToVar funcționează și îmi oferă valoarea citită corect.
În rest, 36 din cele 40 sunt în registre consecutive, deci pentru acestea pot executa o singură comandă de citire (specificând prima adresă de la care să pornesc sub Adresă și sub Puncte din ModbusMaster câte date vreau să citesc, în cazul meu 36 * 2, 72). În tamponul ModbusMaster, atunci voi pune un tablou care poate conține 36 de date (numit ArrayA pentru a fi clar), acest tablou va fi apoi conectat la BEArrayToVar la articol Source și, în Destination Voi pune o altă matrice (ArrayB) care va conține toate valorile citite corect, nu?
Întrebarea mea este: automat, după fiecare citire, datele citite intră în ArrayA, sunt executate BEArrayToVar și este stocat în ArrayB. La următorul ciclu de citire, a doua citire a datelor se duce automat la ArrayA imediat după cea anterioară, apoi se duce la ArrayB stocate pe rând, nu?
tommas.cavaliniparticipantAm făcut o comunicație Modbus TCP / IP cu un producător de date folosind SysTCPClient și ModbusMaster FB, la finalul cărora, odată ce datele au fost primite în IEE754, am făcut o conversie cu BEArrayToVar FB.
În acest moment, problema este că trebuie să citesc 40 de valori de pe același dispozitiv și să le salvez fiecare într-o variabilă proprie: ce aș putea face?
Am văzut și FB recomandat de ea, ACModbus, dar problema este că, odată ce am citit aceste variabile, trebuie să efectuez în mod necesar conversia cu BEArrayToVar pentru fiecare dintre ele individual și să instanțiez o variabilă pentru fiecare dintre date, așa că am mi-e teamă că nu o pot folosi.
Ce îmi recomandați să fac pentru a rezolva problema?
Ianuarie 28, 2021 la 11: 21 am ca răspuns la: Comunicare Modbus RTU cu contor de energie SDM120 #58894tommas.cavaliniparticipantAcum a apărut problema că prin conexiunea ModBus RTU vreau să scriu și date. Așa că m-am întrebat: dacă pentru lectură am folosit varSwap FB pentru a converti valorile în REAL, cum o pot face pentru scriere?
M-am gândit că voi introduce valorile care urmează să fie scrise în elementul tampon al ModbusMaster FB, dar cred că am înțeles că nu pot scrie o valoare REALă, ci o valoare în standardul IEE754, nu?
Cum pot efectua apoi conversia inversă VarSwap?
Ianuarie 15, 2021 la 6: 14 pm ca răspuns la: Comunicare Modbus RTU cu contor de energie SDM120 #58808tommas.cavaliniparticipantAm încercat metoda FB ModbusMaster cascadă și funcționează, mulțumesc mult pentru ajutor!
Videoclipurile și explicațiile sale au fost fundamentale mai ales pentru că tocmai am intrat în lumea PLC-urilor, îi sunt foarte recunoscător. În caz că am alte îndoieli, voi posta pe forum că este foarte bine făcut și răspunsurile sunt mai rapide decât mă așteptam.
Ianuarie 15, 2021 la 10: 36 am ca răspuns la: Comunicare Modbus RTU cu contor de energie SDM120 #58805tommas.cavaliniparticipantBună, între timp, vă mulțumesc foarte mult pentru atenție. În proiectul meu am folosit SysSerialPort și ModbusMaster și VarSwap FBs.
Am încercat apoi să conectez un alt ModbusMaster FB (care identifică al doilea SDM120 având nodul 2) folosind același FB pentru portul serial. În portul EN al celui de-al doilea ModbusMaster am adăugat un eTON cu un timp de 200 ms, dar pot citi întotdeauna doar primul (conectat la primul ModbusMaster FB). De asemenea, am încercat să separ totul în două programe diferite, asociindu-le cu sarcini diferite, dar rezultatul nu se schimbă, dimpotrivă, nici nu mai citește primul.
Cum pot rezolva? Mulțumesc din nou anticipat.
-
AutorPost