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ý.