PSE

Aplikační software řídicích systémů AMiT.

Počítání sumy malých přírůstků

► Počítám sumu malých přírůstků (0.001), je-li hodnota sumy < 8192, je vše v pořádku, ale dojde-li k překročení této meze, přestane se obsah sumy zvětšovat. V čem je chyba?

Jestliže počítáte SUMA = SUMA + PRIRUSTEK a proměnná SUMA je typu FLOAT, pak je třeba si uvědomit, že sice maximální možné číslo proměnné SUMA je 3,4e38, avšak vzhledem k tomu, že toto číslo je uloženo v exponenciálním tvaru, je samotné číslo uloženo pouze na 23 bitech, 8 bitů je použito pro exponent a jeden bit pro znaménko.
Pokud tedy k hodnotě SUMA = 8388608 2^23+1) přičtete PRIRUSTEK = 1, nastane situace, kdy SUMA a SUMA + PRIRUSTEK jsou si rovny a přičítání se nijak neprojeví. Podobně je tomu i v případě, že PRIRUSTEK = 0,001. SUMA se "zastaví" na hodnotě 8192. Pro PRIRUSTEK = 0,1 je pak maximální SUMA = 524288 atd. (Pomůcka od AMiTu)

Pokud chcete použit bit z LONGové proměnné

V reléovém schématu pomocí modulů LD a LDN atd., nebo si udělat @alias tak je to chyba L. Zvlášť je to nemilé, při načítání DIN modulů DI, kdy nemůžete načíst celý DIN modul do jedné Longové hodnoty, pokud ho chcete použít výše uvedeným způsobem. Musíte ho načíst do dvou Intigerů a přenést nejprve 16 a pak 8 vstupů. Zná někdo jiné řešení?

Moduly

► KOMUNIKACE RS-485

V AKTIVNÍ STANICI REGDBDIR

► COND

Když jsou oba porty obsazeny a potřebujeme krátkodobě připojit počítač s PSP, tak použít při tvorbě programu tuto funkci.

► Poruchy od čidel

Zpozdit o cca. 50 sekund @START

► DELTA AVG

Neklouzavý průměr – počet vzorků a pak průměr.

Hodnota se zaznamená při změně

Pro tyto účely je k dispozici funkční modul SyncArch. Vlastní detekci, že ke změně hodnoty došlo, musí tvůrce aplikace sám napsat a odvozovat od toho, že se má archivovat. Jako příklad může posloužit následující výpis, z kterého je vše zřejmé:
Let @Archivuj = if(Hodnota<>StaraHodn, 1, 0)
Let StaraHodn = Hodnota
SyncArch Hodnota, 1, ArchMatice, CasMatice, @Archivuj, NONE, 1, ArchIndex, 1

VÝSTUPY DO

DO0.0            -   AKTUÁLNÍ
DO0_A.0         -   PROGRAM
DO0_R.0         -   RUČNÍ VOLBA
DO0_XR.0       -   VOLBA RUČNĚ/AUTOMAT
DO0_VALVE.0   -  VENTILY (ABY NEŠEL PROTI SOBĚ LEVÝ A PRAVÝ CHOD)

Stránky