This shows you the differences between two versions of the page.
pm:prj2023:ibradu:programmableplc [2023/05/19 19:39] mihai.costin [Hardware Design] |
pm:prj2023:ibradu:programmableplc [2023/05/31 12:53] (current) mihai.costin [Bibliografie/Resurse] |
||
---|---|---|---|
Line 12: | Line 12: | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
- | <note tip> | + | Componente Hardware: |
- | Aici puneţi tot ce ţine de hardware design: | + | >1x ESP32 |
- | * listă de piese | + | >1x eeprom |
- | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | + | >1x RTC |
- | * diagrame de semnal | + | >2x I2C I/O extender |
- | * rezultatele simulării | + | >32x relee solid-state |
- | </note> | + | >12x amplificatoare operationale |
+ | >Rezistori si condensatori de decuplare | ||
Pentru a avea acelasi numar de intrari si iesiri ca un PLC normal, am folosit block-uri de extendere de I/O. | Pentru a avea acelasi numar de intrari si iesiri ca un PLC normal, am folosit block-uri de extendere de I/O. | ||
{{:pm:prj2023:ibradu:mainimage-plc.png?600|Main configuration}} | {{:pm:prj2023:ibradu:mainimage-plc.png?600|Main configuration}} | ||
Line 28: | Line 30: | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | Mediu de dezvoltare: | ||
+ | -IntelliJ, cu plugin-ul de ANTLR \\ | ||
+ | -Visual Studio Code \\ | ||
+ | -Wasm3 \\ | ||
+ | -FreeRTOS \\ | ||
- | <note tip> | + | Interpretor de Structured Text |
- | Descrierea codului aplicaţiei (firmware): | + | > Structured Text este unul din limbajele acceptate pentru programarea PLC-urilor. Pentru a ramane fideli conceptului de PLC, am ales sa il folosim si noi in scrierea de programe pentru PLC-ul nostru. Pentru ca microprocesorul de pe ESP32 sa il inteleaga, am creat, prin intermediul ANTLR, un parser pentru acest limbaj, care imi transfera codul in Web Assembly. Dupa aceasta transformare, este usor sa ii verific corectitudinea si sa il compilez. Pentru a incarca codul astfel obtinut pe placuta, ma voi folosi de modulul de WiFi al acesteia pentru a incarca fisierul si de wasm3 pentru a il interpreta. Aceasta este o solutie mult mai simpla decat dacda as fi incercat sa fac de la 0 un compilator pentru structured text. |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | |
- | * (etapa 3) surse şi funcţii implementate | + | |
- | </note> | + | |
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | ||
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | ||
- | </note> | ||
+ | In urma realizarii proiectului, parser-ul de Structured Text reuseste sa genereze cod de WebAssembly | ||
+ | {{:pm:prj2023:ibradu:demowasm.png?400|}} | ||
+ | {{:pm:prj2023:ibradu:wasmdemo.png?600|}} | ||
+ | Incarcarea programului pe placuta ESP conduce la un boot loop, ramane sa investighez motivul. | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | In urma acestui proiect, am inceput sa stapandesc mai bine Web Assembly si partea de gramatica a unui limbaj de programare. In acelasi timp, m-am familiarizat cu Structured Text si standardul IEC 61131, utilizat in programarea PLC-urilor. | ||
===== Download ===== | ===== Download ===== | ||
- | <note warning> | ||
- | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | ||
- | Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:pm:prj20??:c?** sau **:pm:prj20??:c?:nume_student** (dacă este cazul). **Exemplu:** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. | + | Repo de git pentru parserul de Structured Text: https://github.com/mihaicostin34/ST_Parser |
- | </note> | + | |
- | + | ||
- | ===== Jurnal ===== | + | |
- | + | ||
- | <note tip> | + | |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | |
- | </note> | + | |
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | <note> | ||
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | ||
- | </note> | ||
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||
+ | |||
+ | Documentatie pentru Web Assembly Text: https://developer.mozilla.org/en-US/docs/WebAssembly/Understanding_the_text_format \\ | ||
+ | Standardul IEC 61131: https://en.wikipedia.org/wiki/IEC_61131 \\ | ||
+ | Datasheet ESP: https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdf | ||