Freescale Tower System (EXPERIMENTUL DE LABORATOR 2)

31 AUGUST 2011

Se prezintă elementele de bază pentru realizarea unui experiment ce verifică o aplicaţie extrem de utilizată: controlul PID folosind TWR-MCF52259. Controlul PID este utilizat în domeniul industrial, robotică, ghidare şi în orice aplicaţie care necesită menţinerea unui parametru în jurul unei referinţe.

Figura 1: Ciclul de dezvoltare a aplicaţiei

1. Freescale Tower System este o platformă modulară care permite construirea rapidă a unui prototip cu module controler bazate pe 8/16/32-biţi MCU şi MPU. Verificarea soluţiilor software se face folosind sistemul de operare în timp real Freescale MQX™ RTOS v3.7.0 realizat pentru familiile de procesoare ColdFire, PowerPC şi Kinetis ARM® CortexM4.

2. Tower System folosit în experiment este format din: modulul controler TWR-MCF52259EVB (ColdFire V2), modulele Elevator şi modulul de comunicaţie TWR-SER (RS232), prezentate anterior. Cerinţe pentru PC: procesor 2GHz, OS Windows XP/Vista (32 biţi), 2GB RAM, HDD liber 2GB, port USB pentru comunicaţie cu Tower System. Se urmăreşte utilizarea generală a MQX™ RTOS compilat şi testat cu CodeWarrior Development Studio (mediu de dezvoltare integrat – IDE) pentru Arhitecturi ColdFire V7.2. Arhitectura CodeWarrior permite dezvoltarea de aplicaţii cu dimensiune mică a codului program şi cel mai mic timp de execuţie. CodeWarrior Suites are variantele: basic, standard, profesional şi special.
Code Warrior C/C++ Compiler Suite include: Biblioteca Standard ANSI C şi ISO C++, Optimizarea globală pentru C/C++, Controlul grafic al setărilor compiler/linker, Biblioteci standard puternice pentru aplicaţii integrate.

Figura 2: Arhitectura CodeWarrior foloseşte o reprezentare intermediară a codului sursă

3. CodeWarrior Development Studio pentru Arhitecturi ColdFire
CodeWarrior, fiind proiectat să funcţioneze pe mai multe sisteme de operare, oferind posibilitatea alegerii limbajului de programare (C, asm) şi având suport pentru o mulţime de arhitecturi, oferă inginerilor libertatea de a alege cea mai bună cale de a finaliza o aplicaţie. Printr-o combinaţie de editor, compilator, linker şi debugger controlate printr-o interfaţă GUI uşor de utilizat se accelerează procesul de dezvoltare a aplicaţiilor. Compilatorul combină un analizor de limbaj front-end cu un generator back-end, convertind codul sursă într-un limbaj intern neutru cunoscut ca Reprezentare Intermediară (IR), făcând în plus optimizări ale instrucţiunilor de programare.
Utilizatorul are opţiuni privind limbajul, optimizarea şi generarea de cod program fiind posibilă refacerea pentru un nivel mai înalt al codului altui procesor, prin utilizarea unui compilator cu generatorul de cod back-end corespunzător.
Amintiţi-vă că fiecare compilator CodeWarrior utilizează acelaşi analizor de limbaj front-end, astfel încât problemele de portare legate de limbaj sunt inexistente.

4. Rutina de control folosind algoritmul PID
Controlul on/off este cel mai simplu, fiind folosit mai ales pentru controlul temperaturii sau unde precizia de menţinere a unui parametru în jurul unei referinţe nu este critică.
Controlul PID (Proportional, Integral, Derivativ) este una din cele mai comune forme de realizare a controlului cu precizie într-un sistem cu buclă închisă. Sistemele de control au mărit aria de aplicaţii a microprocesoarelor embedded.
În aceste sisteme, semnalele analogice trebuie convertite în semnale numerice prin eşantionare. Performanţa impusă controlului dictează rata de eşantionare, iar calculele trebuie să fie complete înaintea unei noi achiziţii de eşantioane. Amplificatoare de adaptare a nivelelor şi puterii semnalelor, senzori şi diverse circuite de interfaţă sunt necesare pentru conectarea la sistemele din lumea reală (pentru testare programului, un simplu circuit RC poate simula un proces).

Se consideră o referinţă (setpoint) a procesului (Gd) şi valoarea actuală măsurată în timp G(t). Eroarea de control este e(t) = Gd – G(t), iar valoarea ieşirii de corecţie x(t) pentru controlul PID este:

x(t)= KP e(t)+ KI∫e(t) + KD(de(t)/dt) | t = T,

unde KP, KI şi KD sunt constante ale căror valori se determină în procesul de acordare (tuning) experimental de către operatorul uman sau algoritmic prin program (self tuning), pe baza unor criterii de calitate a controlului: timp de creştere, supracreştere, timp tranzitoriu, eroare staţionară. Dacă se introduce timpul discret, atunci t = kT, unde k = 1,2,…,n şi T = perioada de eşantionare şi actualizare a controlului. Acum, t0 = (k – 1)T. Acţiunea Integrală asupra erorii evaluată de la momentul (k – 1)T la momentul kT poate fi aproximată folosind o metodă trapezoidală de integrare. Termenul derivativ al erorii este viteza de schimbare a erorii, dar poate fi chiar zgomotul pe o perioadă. O medie central ponderată de patru puncte pentru a obţine termenul diferenţial este calea practică de a realiza acest lucru în microprocesor. Forma cuantificată care poate fi executată direct de microprocesor este:

x (t) = KP e(t) + KI (Gdt – T/2)G(Kt) + G(k -1)T])) + KD/6T)((e(kT) – e(k – 3) + 3e(k – 1) – e(k – 2)))

Acest termen este adăugat la ieşirea curentă şi pus în registrul de control PWM la începutul ciclului de calcul care urmează. Substituind etichetele de microcod pentru constante şi variabile în ecuaţia de mai sus şi folosind notaţia operatorilor din limbajul C se obţine:

NEWDTY = KP*(ERRX) + KI*PERDT*(CMNDX – (ADRCX + ADRCXM1) / 2) + (KD / (6*PERDT))*((ERRX – ERRM3X) + 3*(ERRM1X – ERRM2X)) + OLDDTY

Funcţia termenului Proporţional este clară, dar termenii Derivativ şi Integral necesită o mică explicaţie.
• Atunci când controlul este Proporţional, semnalul de control va creşte până la referinţa fixată (ca să devină eroarea zero) şi o va depăşi.
• Termenul Derivativ contribuie în raport de viteza de schimbare a erorii, dar cu semn opus termenului proporţional, realizând o amortizare a creşterii (chiar critică, dacă constantele Kp şi Kd sunt adecvat alese, adică acordate la proces).
• Termenul Integral elimină eroarea staţionară, fiindcă o integrează în timp şi o compensează.

5. Implementarea algoritmului PID
Implementarea în limbajul C oferă avantaje care nu sunt în limbajul de asamblare:

(1) Registrele memory-mapped pot fi definite într-un singur fişier, care poate fi inclus în orice funcţie.
(2) C este un limbaj puternic, iar compilatorul poate identifica neconcordanţe de tip de date, ca exemplu, scrierea unui întreg de 32 biţi într-un port de 16 biţi.
(3) Multe compilatoare vectorizează direct întreruperile la rutinele de service asociate, fără o adresă de bază dintr-un segment de memorie. Astfel o funcţie de întrerupere uzuală (RTI – ceasul de timp real):

interrupt [INTVEC_START + 26] void RTI_interrupt(void);
poate fi declarată ca: interrupt void RTI_interrupt(void).

Funcţia este compilată ca o instrucţiune RTI, eliminând necesitatea unei legături între întreruperile hardware şi subrutinele C.
(4) Una dintre cele mai atractive funcţii ale compilatoarelor C este abilitatea de a adăuga calculul în virgulă mobilă prin include “math.h”, pentru ca, folosind calculul în virgulă mobilă (floating point math) pe durata dezvoltării şi depanării programului să se testeze noi algoritmi.

6. Platforma hardware de testare a controlului PID
Platforma hardware este formată din:

(1) Tower System conţinând modulul controler TWR-MCF5225X care se livrează însoţit de software complet Freescale MQX™ şi o versiune de evaluare a CodeWarior Development Studio (vezi configurarea modulului conform TWR-MCF 5225X User Manual şi MCF52259RM ColdFire Integrated Microcontroller Reference Manual);
(2) PC în care se elaborează programul în limbajul C (utilizând formula de mai sus);
(3) Schema RC care simulează un proces pentru închiderea buclei.
Rutina PID pentru controlul în bucla închisă elaborată în limbajul C se compilează şi, după formatarea în cod obiect, se încarcă din PC în microcontrolerul MCF52259 prin portul de comunicaţie serială de pe modulul controler.
Plăcile elevator pun la dispoziţie bornele pentru semnalele de conectare:
Elevator Primar, side A, bornele A30…A27: intrările analogice AN0…AN3
Elevator Primar, side B, bornele B30…B27: intrările analogice AN4…AN7
Acestea corespund la două convertoare fast ADC de 12 biţi. Conversiile sunt iniţiate prin semnalele SYNCA şi SYNCB.
Elevator Primar, side A, bornele A40…A37: ieşirile PWM0…PWM3
Elevator Primar, side B, bornele B40…B37: ieşirile PWM4…PWM7
Ieşirile sunt generate de un timer cu 8 canale, 8-bit PWM cu factor de umplere 0…100%. Câte două canale pot fi concatenate pentru a obţine perioadă mai mare şi rezoluţie mai mare pe 16 biţi.

Figura 3: Schema de evaluare a controlului PID

Un software watchdog timer (32 biţi) şi altul backup watchdog timer (16 biţi) asigură funcţionarea ciclică şi revenirea în program în cazul unei depăşiri timp de ciclu de execuţie.
Un circuit RC simulează un proces uzual cu o constantă de timp, fiind folosit pentru a permite feedback-ul necesar buclei PID software să fie operantă.
Variind constantele în programul cod obiect se observă efectul în performanţele controlului realizat prin microcontroler. Pentru programul scris în C se fac modificări în sursă şi se recompilează.
Dacă se schimbă rata de întreruperi dată de ceasul de timp real (RTI), atunci perioada de eşantionare PERDT trebuie şi ea schimbată.
Se ajustează constantele proporţional şi derivativ pentru a obţine un control observabil şi se micşorează rezistorul de 1 Mohm.
Se poate observa intrarea în instabilitate, respectiv oscilaţia buclei. Ştiind timpul unui ciclu de calcul pe un canal şi configurând 8 canale de reglare PID se poate aprecia pentru ce tip de procese (rapide sau lente) este potrivit controlerul multicanal obţinut cu Tower System.

Bibliografie: (Documentaţii Freescale)
TWRMCF5225X_UM, MCF52259RM, AN1215, TWR-ELEV, AN4254, MQXRTOS, FRS_TWR_TOOL, AMF_IND_0660, MQXFS, TWRMCF5225XQSG, MCF5229CAG66.

– Continuare în numărul viitor –

Distribuitori Freescale în România
Arrow Electronice SRL I 026 4417251 I office@arrowromania.com
EBV Elektronik I 021 5296911 I catalin.raduta@ebv.com
Farnell I 0800 894 946 I info-ro@farnell.com
Future Electronics SRL I 0264 457774 I info-RO-future@futureelectronics.com

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile necesare sunt marcate *

  • Folosim datele dumneavoastră cu caracter personal NUMAI pentru a răspunde comentariilor/solicitărilor dumneavoastră.
  • Pentru a primi raspunsuri adecvate solicitărilor dumneavoastră, este posibil să transferăm adresa de email și numele dumneavoastră către autorul articolului.
  • Pentru mai multe informații privind politica noastră de confidențialitate și de prelucrare a datelor cu caracter personal, accesați link-ul Politica de prelucrare a datelor (GDPR) si Cookie-uri.
  • Dacă aveți întrebări sau nelămuriri cu privire la modul în care noi prelucrăm datele dumneavoastră cu caracter personal, puteți contacta responsabilul nostru cu protecția datelor la adresa de email: gdpr@esp2000.ro
  • Abonați-vă la newsletter-ul revistei noastre