Použitie OCL metód

Nedávno som obdržal dotaz, či je vôbec možné v Control Panely programovými prostriedkami nastavovať systémový čas (užívatelia znalí OCL metód môžu prestať čítať).
Použitie OCL metód sa pokúsim vysvetliť zrovna na tomto konkrétnom príklade.

Systém Control Panel obsahuje prístroj PROGRAM, v ktorom je možné vytvoriť jednoduchšie či zložitejšie podprogramy Vašej aplikácie. K dispozícii je obmedzená ale dostatočne všeobecná množina príkazov, takže sa dá realizovať pravdepodobne ľubovoľný algoritmus. To by však bolo k ničomu, keby takto vytvorený podprogram nemal možnosť spolupracovať alebo priamo ovplyvňovať iné virtuálne prístroje v aplikácii. A k tomu slúžia tzv. OCL metódy.
Sú to vlastne špeciálne príkazy prístroja PROGRAM, ktoré slúžia len pre použitie s tým-ktorým virtuálnym prístrojom. Je ich však veľké množstvo a podstatnou mierou rozširujú možnosti tohoto a ostatných prístrojov a celej aplikácie. Všeobecná syntax zápisu OCL metódy je nasledovná:

Prístroj.OclMetoda(parametre);

Keď to aplikujeme na náš konkrétny príklad, výpis zdrojáku prístroja PROGRAM bude nasledovný:

program nastav_cas;
    begin
    if nastavit then
      (* nastavenie aktuálneho času pomocou OCL metódy *)
      system.SetTime(Hodina, Minuta, Sekunda);
    end;
  end;
end_program;

 

Hodina, Minuta a Sekunda sú číselné premenné, ktoré obsahujú hodnoty, ktorými chceme prestaviť systémový čas v PC. Ich naplnenie môžme zabezpečiť trebárs prístrojom CONTROL alebo prenosom z PLC automatu (jeden krátky tip - ak vyvíjate aplikáciu, kde CP spolupracuje s PLC-čkom, oplatí sa synchronizovať čas v PC z PLC-čka - podľa mojich skúseností majú automaty presnejšie hodiny reálneho času ako PC).
Pre lepšie pochopenie si môžte stiahnuť nižšie uvedený súbor, ktorý obsahuje demo aplikáciu citovaného príkladu.
Tento príspevok je viac menej reakcia na konkrétny dotaz a nemá za úlohu suplovať dostatočne vypracovanú dokumentáciu k systému Control Panel. Dúfam však, že aspoň načrtol možnosti, ktoré možno mnohým ostávajú zatiaľ skryté.

download:
ocl-demo.zip - 1067 bytov