This is an old revision of the document!


Programmable PLC

Proiect realizat în colaborare cu studentul Anastasiu Alexandru Ioan, de la Facultatea de Inginerie Industrială și Robotică, anul II.

Introducere

Proiectul își propune transformarea unui microcontroller ESP32 într-un PLC care să poată controla roboți industriali, mai exact Mitsubishi RV-E3J și RV-E2, prin intermediul programelor scrise conform standardului IEC 61131-3. Ideea a pornit de la existența celor doi roboți și lipsa unui PLC pentru a îi programa. Cum unul din comerț poate deveni destul de scump, ne-am propus să facem unul propriu. Consider că este un proiect util în primul rând din scop educațional, deoarece îmi permite să pun în practică multe dintre cunoștiințele obținute la facultate.

Descriere generală

La modulul ESP32 am adăugat două block-uri de extendere de I/O, pe care le vom folosi ca Output. Am păstrat câțiva pini pe microcontroller pentru Input. 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

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. Main configuration Main configuration Output Block Output Block Input Block Input Block

Software Design

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

Mediu de dezvoltare: -IntelliJ, cu plugin-ul de ANTLR
-Visual Studio Code
-Wasm3
-FreeRTOS

Interpretor de Structured Text

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.

Rezultate Obţinute

In urma realizarii proiectului, parser-ul de Structured Text reuseste sa genereze cod de WebAssembly Incarcarea programului pe placuta ESP conduce la un boot loop, ramane sa investighez motivul.

Concluzii

Download

Repo de git pentru parserul de Structured Text: https://github.com/mihaicostin34/ST_Parser

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2023/ibradu/programmableplc.1685526534.txt.gz · Last modified: 2023/05/31 12:48 by mihai.costin
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0