This shows you the differences between two versions of the page.
|
pm:prj2023:ibradu:programmableplc [2023/05/19 19:52] mihai.costin [Software Design] |
pm:prj2023:ibradu:programmableplc [2023/05/31 12:53] (current) mihai.costin [Bibliografie/Resurse] |
||
|---|---|---|---|
| Line 11: | Line 11: | ||
| Interpretarea programelor în Structured Text se va desfășura în felul următor: programatorul va scrie codul conform standardului (la care am adăugat mici modificări pentru a ne permite scrierea și citirea pe pinii plăcuței), după care acesta va fi trecut printr-un parser care va scrie cod echivalent in Web Assembly. După aceea, codul nou obținut va fi compilat, iar rezultatul compilării va fi încărcat în memoria plăcuței și interpretat. | Interpretarea programelor în Structured Text se va desfășura în felul următor: programatorul va scrie codul conform standardului (la care am adăugat mici modificări pentru a ne permite scrierea și citirea pe pinii plăcuței), după care acesta va fi trecut printr-un parser care va scrie cod echivalent in Web Assembly. După aceea, codul nou obținut va fi compilat, iar rezultatul compilării va fi încărcat în memoria plăcuței și interpretat. | ||
| ===== Hardware Design ===== | ===== Hardware Design ===== | ||
| + | |||
| + | Componente Hardware: | ||
| + | >1x ESP32 | ||
| + | >1x eeprom | ||
| + | >1x RTC | ||
| + | >2x I2C I/O extender | ||
| + | >32x relee solid-state | ||
| + | >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. | ||
| Line 20: | Line 29: | ||
| Input Block | Input Block | ||
| ===== Software Design ===== | ===== Software Design ===== | ||
| - | |||
| - | |||
| - | <note tip> | ||
| - | Descrierea codului aplicaţiei (firmware): | ||
| - | * 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> | ||
| Mediu de dezvoltare: | Mediu de dezvoltare: | ||
| - | -IntelliJ, cu plugin-ul de ANTLR | + | -IntelliJ, cu plugin-ul de ANTLR \\ |
| - | -Visual Studio Code | + | -Visual Studio Code \\ |
| - | -Wasm3 | + | -Wasm3 \\ |
| + | -FreeRTOS \\ | ||
| Interpretor de Structured Text | Interpretor de Structured Text | ||
| Line 40: | Line 41: | ||
| ===== 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 | ||