Potrebujete prevádzať analógový výstup na pulzne šírkovú moduláciu?

Pred časom som s kolegom riešil riadiaci systém, kde sa plynule riadilo 14 teplôt pomocou 14-tich výkonných elektrických ohrievačov. Celý riadiaci systém bol postavený na Control Panely, pričom signály zo snímačov a na akčné členy boli prevádzané pomocou modulov ADAM 4000 od firmy Advantech.

Softwarová náhrada hardwarového prevodníku analogového výstupu na pulzne-šírkovú moduláciu

Kolega riešil elektro-projekt a hardwarovú časť, ja som riešil riadiacu a monitorovaciu aplikáciu v Control Panely. Riadenie ohrievačov bolo nutné vykonávať pomocou pulzne šírkovej modulácie (niečo o PSM so môžte prečítať na tomto mieste). Štandardné riešenie (pozri obr. č. 1) by si pri počte 14-tich riadených teplôt vyžiadalo značné finančné náklady, preto kolega prišiel s návrhom vytvoriť prevod na PSM priamo v programe. Ja som sa to pokúsil zrealizovať a tak vzniklo riešenie (pozri obr. č. 2), ktoré predstavovalo úsporu nákladov pri zachovaní kvality regulácie.

Obrázok 1 - bloková schéma pôvodného riešenia
bloková schéma 1

Obrázok 2 - bloková schéma nového riešenia
bloková schéma 2
 

Spôsob aplikácie PSM v Control Panely je jednoduchý. Aby sme dosiahly plynulú reguláciu, musíme výkon ohrievača riadiť PID regulátorom. Ten umiestnime do sequencera, ktorý je časovaný 4 sekundami. Ako výstup regulátora zvolíme premennú typu "real" s názvom "vystup_regulatora". Ďaľšie význačné parametre nastavíme v "output_section" a to range_from=0 a range_to=20. Ostatné parametre pre náš popis nie sú podstatné a líšia sa od konkrétnej implementácie.
Do sequencera hneď za regulátor umiestnime prístroj program obsahujúci kód:

log_jedna=vystup_regulatora;
log_nula=20-vystup_regulatora;
citac=1;

 

Premenné "log_jedna", "log_nula" a "citac" sú typu "integer", pričom prvé dve nám vlastne budú určovať, koľko pulzov po sebe bude v stave logickej jedničky a koľko pulzov v stave logickej nuly. Premenná "citac" nám bude určovať okamžik, kedy dôjde k preklopeniu z 1 do 0.
Ako ste už asi postrehli, z dĺžky časovania regulátora a z rozsahu jeho výstupu nám vyplýva, že dĺžka jednotlivých pulzov po prevode bude 0,2 sekundy.
Takže si vytvoríme prístroj program, ktorý bude časovaný hodnotou 0,2 sekundy:

if log_jedna>=citac then
  OHRIEVAC=true;
else
  OHRIEVAC=false;
end;
citac=citac+1;

 

"OHRIEVAC" je výstupný kanál typu "boolean". Ako vidno, v tomto programe už dochádza k prevodu hodnoty analógovej veličiny z PID regulátora na modulovaný digitálny výstup. V našom konkrétnom prípade ja tak výkon ohrievača riadený s odstupňovaním po 5-tich percentách.

Pre lepšie objasnenie tohoto príkladu si môžte stiahnuť demo (pre Control Panel) prevodu analógovej veličiny na PSM. Pre zjednodušenie je v ňom PID regulátor nahradený poteciometrom, ktorého výstup nám predstavuje hodnotu výstupu regulátora.

download:
psm-demo.zip - 1827 bytov

Poznámka

Je nutné zdôrazniť, že všetky uvádzané hodnoty sú stavané na konkrétnu regulovanú sústavu. Ak by ste sa rozhodli tento softwarový prevod použiť vo vašej aplikácii, je nutné vašej regulovanej sústave prispôsobiť hodnoty časovania regulátora, výstupný rozsah regulátora a z toho vyplývajúcu hodnotu časovania následného prevodu na digitálny signál. Takisto treba brať do úvahy teplotnú zotrvačnosť regulovanej sústavy.