• Welcome to Diskuse2 Elektrika.cz. Please login or sign up.
 

Jakým způsobem se dá provádět zápis do proměnné v jazyce ST?

Started by Ondřej Beran cheb, 25.05.2017, 23:11

previous topic - next topic

Ondřej Beran cheb


Jakým způsobem se v jazyce ST dá provést zápis do registru a následné čtení?

Prohledal jsem nápovědu snad už desetkrát a pořád na to nemůžu přijít, v IL jsem to našel ale v ST nic.

Ondřej Beran cheb

Pro upřesnění, jedná se mi o vytvoření FB pro řízení solárních panelů na ohřev TUV a bazénové vody, zde bych potřeboval uložit hodnotu naměřenou na čidle počkat cca 2 minuty a provést porovnání těchto hodnot. předem děkuji

Juraj Rojko

promenna := hodnota;

Ale to je tak triviální (a v dokumentaci samozřejmě popsané), že si myslím, že se ptáte na něco úplně jiného. Jenže nevím na co.

Ondřej Beran cheb

to co popisujete, je přiřazení hodnoty (na tvrdo programátorem), to znám,
start         : BOOL := 1;
Jedná se mi o to že potřebuji zkopírovat hodnotu teplotního vstupu typu real do proměnné typu real, tím tuto hodnotu zmrazit a uchovat cca 3 minuty a tuto hodnotu porovnat, v případě že delta T bude větší jak X, bude se čekat na vzestup teploty a nabere se nový vzorek teploty nebo pokud bude teplotní spád dostatečný připne se ohřev aku nádrže, v opačném případě že nebude docházet k vzestupu teploty celý proces se zastavý a bude se ohřívat bazén s menší teplotní náročností. Toto je ve zkratce.
V mnemo kódu jsou příkazy WR a WRC, ale pro ST jsem nic takového nenašel.


Juraj Rojko

Je mi líto, ale stále nechápu o co vám jde. := dělá v podstatě to samé co WR. (Je pravda, že jsem měl napsat spíše výraz, než hodnota.)

Luboš Urban

Je to opravdu tak jednoduché, jak píše pan Rojko.  Zápisu v mnemokódu

LD vstup
WR promenna

opravdu v jazyce ST odpovídá

promenna := vstup;

Ta vaše úloha by snad mohla vypadat nějak takhle:
VAR
     casovac : fbTick;
END_VAR

casovac(IN:= true, PT := T#3m);    // každé 3 minuty dá impuls, tj. nastaví
                                                       // na jeden cyklus svůj výstup

IF Casovac.Q THEN                         // když dočasoval
    IF teplota - predchozi_teplota >=  X THEN    // a nárůst teploty je větší než X
          ohrev_aku := true;               // zapni nabíjení aku nádrže
          ohrev_bazen := false;          // a vypni ohřev bazénu
       ELSE                                        // jinak
          ohrev_aku := false;              // vypni aku
          ohrev_bazen := true;           // a zapni bazén
    END_IF;
    Predchozi_teplota := teplota;    // a ulož si stávající teplotu
END_IF;