I.L. Programování Mosaic 25. 5. 2021 16:53 25. 5. 2021 15:44

Fungující kód přestal fungovat, když jsem místo TP použil fbTPR. Zdá se, že u fbTPR nelze další pulz spustit hned po skončení předchozího, nýbrž je třeba vložit min. ještě jedno volání s .IN:=0. Pokud je to úmyslně, mělo by to být v dokumentaci.

PROGRAM prgMain
VAR
 tpp: TP := (PT:=T#4s);
 tpr: fbTPR := (PT:=T#4s);
END_VAR
 tpp( IN:=NOT tpp.Q ); // OK, trvale pulzuje
//  if NOT tpr.Q then tpr(); end_if;
 tpr( IN:=NOT tpr.Q ); // Neni OK, bez predchoziho if po prvnim pulzu nepokracuje
END_PROGRAM

Odpovědi 2

Luboš Urban 24. 5. 2021 11:00

Máte pravdu, chování jsme opravili a bude v novém vydání knihovny SysLib. U obou bloků periodických pulsů je ale po ukončení pulsu jeden cyklus s výstupním signálem v log. 0. Pokud je potřeba, aby náběžná hrana dalšího pulsu přišla 4 s po předchozí, tak je lepší použít fbTick. U TP a fbTPR přijde další náběžná hrana po 4s + době 1 cyklu.

I.L. 25. 5. 2021 15:44

Děkuji, případ uzavřen.

Tento dotaz je vyřešený.