Acasă > forum > controlerele SlimLine e Netsyst (LogicLab) > Module de expansiune a vitezei de achiziție de intrare digital
- Acest subiect are 4 răspunsuri, 3 participanți și a fost actualizat ultima dată 9 ani, acum 3 luni da Sergio Bertana.
-
AutorPost
-
August 8, 2012 la 8: 58 pm #35265AnonimInactiv
Privind foaia de date hardware a modulelor slimline, vezi că există intrări numite viteză mare, care este diferența față de celelalte intrări disponibile?
Dacă doriți să citiți encodere inpulsi cu frecvență maximă 200Hz, puteți utiliza de asemenea intrări de mare viteză?
August 9, 2012 la 6: 40 am #37367Sergio BertanaAdministrator al forumuluiIntrările de mare viteză sunt realizate cu optocuploare foarte rapide și pot obține semnale de intrare cu o frecvență maximă de 50 Khz. Toate celelalte intrări au optocuploare lente și pot obține semnale de intrare cu o frecvență maximă de 10 Khz. Dar dincolo de limita de viteză electrică, este necesar să introduceți logica de funcționare a modulului de achiziție pentru a înțelege posibilitățile și limitele acestuia.
Un filtru digital de 5 mS este configurat pe toate intrările (chiar și cele rapide) care limitează frecvența maximă de achiziție la 200 Hz. Filtrul a fost introdus pentru a tăia semnalele de revenire (Debouncing) ale contactelor electrice, un PLC trebuie să achiziționeze semnale care sosesc de la traductoare electromecanice și trebuie să garanteze achiziția corectă a acestora.
La intrările rapide există un circuit de numărare care utilizează semnalul înainte de filtru permite gestionarea unui codificator în cuadratură cu o frecvență maximă egală cu cea tipică optocuplatorului.
August 9, 2012 la 6: 52 am #37368Sergio BertanaAdministrator al forumuluiDar pentru a răspunde la întrebarea dvs., vă reamintesc că FB există în biblioteca de blocuri funcționale IOEncoder, codificator incremental peste I / O (a se vedea manual extract). Prin conectarea a două intrări digitale la acest bloc funcțional, este posibil să obțineți un codificator incremental pe ele.
Bineînțeles, frecvența maximă pe care o puteți gestiona depinde de viteza cu care este executat blocul funcțional, presupunând că se utilizează cele două intrări ale modulului CPU pentru achiziție (Nu au filtru) prin crearea unui program simplu de tip scară ca cel din manual introduceți programul în sarcina rapidă și rulați-l la fiecare 1 mS puteți gestiona codificatoare cu o frecvență maximă de 200 Hz (Consultați nota aplicației).
De asemenea, puteți efectua achiziția directă de intrare prin intermediul blocului funcțional SysGetPhrDI, obțineți intrare digitală periferică, apoi mapați intrările la mai multe instanțe ale blocului funcțional IOEncoder gestionarea mai multor codificatoare.
Ianuarie 11, 2015 la 9: 45 am #38634Maurizio ContiparticipantAchiziționez o baterie DI cu ea SlimLine conform următorului cod:
FOR i: = 0 TO 21 DO
(* CAZUL OF
0..5: DIN [i]: = SysCPUDI [i];
6..21: DIN [i]: = SysDI00 [i-6];
END_CASE; *)CAZUL
0: DIN [0]: =% IX255.0;
1: DIN [1]: =% IX255.1;
...
21: DIN [21]: =% IX0.15;
END_CASE;
END_FOR;În timp ce CASE necomentatat funcționează, atunci când încerc să compactez codul (cod comentat) primesc următoarele erori: SysCPUDI => Variabilele complexe nu pot avea imagine de proces
SysDI00 => Variabilele complexe nu pot avea imagine de procesCu toate acestea, accesarea elementului matricei SysDI00 în fereastra ceasului nu cauzează probleme. Ce fac greșit ?
De asemenea, vă întreb, dacă doriți să achiziționați DI-urile prin Modbus, este recomandabil / preferabil să utilizați starea de intrare a citirii (FC = 02) sau să le plasați pe o variabilă internă și lumină cu funcția de citire a registrelor de stocare (FC = 03)?
Ianuarie 12, 2015 la 1: 54 pm #38635Sergio BertanaAdministrator al forumuluiProblema este legată de modul în care este gestionată imaginea procesului I / O, găsiți mai multe informații în acest subiect. În practică, intrările digitale sunt achiziționate de sistemul de operare în sarcina Slow și sunt transferate variabilelor UDINT SysCPUDI și SysDIxx, apoi sunt transferate în tabelul variabilelor BOOL% IXxx.
Când un program se referă la o variabilă% IXxx LogicLab verifică ce sarcină execută programul și dacă este sarcina Slow, se referă la variabila reală, dacă este sarcina Înapoi efectuează o copie a variabilei reale într-o variabilă de suport creând o altă imaginea procesului.
Imaginea procesului să o numim o copie, este realizată automat numai pe variabile% IXxx, astfel încât soluția la problema dvs. este să rulați programul în sarcina lentă.
Referindu-se la achiziția de la Modbus, atât comanda 16 # 02 Citiți starea intrărilor că 16 # 03 Citiți registrele exploatației, au aproximativ aceeași lungime în octeți în cadrul de răspuns, astfel încât la nivelul cadrului sunt comparabile. Apoi, desigur, primul vă returnează o serie de BOOL-uri, în timp ce al doilea returnează unul sau mai multe cuvinte pe care va trebui să le despachetați pentru a obține valorile din variabilele BOOL.
-
AutorPost
- Trebuie să fiți autentificat pentru a răspunde la acest subiect.