K.K. Programování Mosaic 21. 1. 2026 10:54 20. 1. 2026 19:28

Dobrý den,

 

prosím o pomoc, snažím se v poli teplot definovaném jako GLOBAL RETAIN najít minimum a maximum pomocí funkce z OSCAT knihovny.

VAR_GLOBAL RETAIN
GraphData15min : ARRAY [1..48] OF REAL;
END_VAR
...
       Tmax15m := ARRAY_MAX(ADR(GraphData15min), SIZEOF(GraphData15min));
       Tmin15m := ARRAY_MIN(ADR(GraphData15min), SIZEOF(GraphData15min));
...

Zkoušel jsem i adresu prvniho prvku v poli ARRAY_MAX(ADR(GraphData15min[1]), SIZEOF(GraphData15min));

ale nic nefunguje, obě funkce pořád vrací hodnotu prvního provku v poli.

Kde dělám chybu?

Díky.

Odpovědi 2

M.B. 20. 1. 2026 12:50

Dobrý den,

v OSCAT knihovně je ve zmíněných funkcích chyba při výpočtu koncového indexu. Ve funkcích má být
stop := (size -SIZEOF(REAL)) / SIZEOF(REAL);
místo
stop := (size -SIZEOF(pt)) / SIZEOF(pt);
Opravenou knihovnu přikládám.



 

K.K. 20. 1. 2026 19:28

Funguje, díky za opravu!

Tento dotaz je vyřešený.