Tłumaczenie SCL

Witam klubowiczów proszę o pomoc w przetłumaczenia kodu z języka SCL na LAD lub FBD oto linijka kodu, używam TIA Portal V15.

// #elapsedTime (range): 0 to 4.294.967.280
// #elapsedTime (overflow): 4.294.967.295 (0xFFFF FFFF)

// If EdgeCount and ElapsedTime is valid, calculate the period
IF (#edgeCount > 0)
AND (#elapsedTime > 0)
AND (#elapsedTime <= 4294967280)
THEN
// Calculate the period in nanoseconds
#statPeriod := #elapsedTime / #edgeCount;
// Calculate the period in seconds
#statPeriod := #numPulsePerRot * #statPeriod / #BILLION;
END_IF;

// Check overflow (the period between two pulse edges exceeds 4.295 seconds)
IF (#elapsedTime = #OVERFLOW_VALUE)
THEN
#statOverflow := TRUE;
ELSE
#statOverflow := FALSE;
END_IF;

// Set period to zero, if overflow
IF(#statOverflow = TRUE)
THEN
#statPeriod := 0;
END_IF;

// Calculate speed in rpm
IF (#statPeriod > 0)
THEN
#speed := 1 / #statPeriod * 60.0;
ELSE
#speed := 0;
END_IF;

// Set output overflow
#overflow := #statOverflow;

Pokaż proszę screen z typami zmiennych z TIA Portal jeśli to dalej aktualne. I screen z kodem w SCL też się przyda.

1 polubienie

Trzymaj kolego link do projektu w TIA v15. Przetłumaczyłem funkcję na LAD, ale możesz ją też bez problemu przekonwertować na FBD. Dodałem funkcję do sterownika s7-1200, bo nie wiedziałem jaki masz w projekcie. Funkcja powinna pasować 1:1 z Twoim projektem.

1 polubienie

@MarcinS naprawdę nie wiem jak mam ci dziękować bardzo mi pomogłeś dziękuję ci za pomoc, naprawdę jestem bardzo wdzięczny :smile: .

1 polubienie

Nie ma sprawy :slight_smile: zajęło to niedługą chwilę. Cieszę się, że mogłem pomóc.
Społeczność automatyków powinna sobie pomagać.

1 polubienie