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.
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
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.
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.
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.)
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;