Konwersja typów danych w języku SCL – funkcja CONVERT

Share
Konwersja typów danych w języku SCL – funkcja CONVERT

Instrukcja „Convert Value” (Konwertuj wartość) w sterownikach SIMATIC S7-1200 i S7-1500 umożliwia programistom dokonywanie jawnych konwersji danych pomiędzy różnymi typami. Jej zastosowanie pozwala na precyzyjne zarządzanie konwersją wartości, co jest szczególnie istotne w przypadku pracy z różnorodnymi danymi. W tym artykule szczegółowo omówimy, jak korzystać z tej funkcji, jakie są jej parametry oraz ograniczenia.

Czym jest funkcja „Convert Value”?

Funkcja „Convert Value” służy do konwertowania danych pomiędzy określonymi typami źródłowymi i docelowymi. Gdy dodasz tę instrukcję do programu w środowisku TIA Portal, otwiera się dedykowane okno dialogowe „CONVERT”. W tym oknie określasz typ danych wejściowych (źródłowych) oraz typ docelowy, na jaki chcesz je przekonwertować.

Jak działa proces konwersji?

Instrukcja odczytuje wartość z zadanego źródła, a następnie przekształca ją do wskazanego typu danych docelowych. Proces konwersji działa w sposób następujący:

Wybór typu danych

W oknie dialogowym definiujesz typ źródła i celu, np. konwersję liczb całkowitych na liczby zmiennoprzecinkowe.

Ograniczenia dla bitów

W polu instrukcji nie można wybrać typów danych BYTE i WORD jako ciągów bitowych. Możesz jednak użyć operandów typów DWORD lub LWORD, o ile długość operandów wejściowych i wyjściowych jest zgodna.

Interpretacja bitów

Operandy typu DWORD są interpretowane jako DINT/UDINT, a LWORD jako LINT/ULINT. Dla tych typów zachodzi konwersja implicit (domyślna).

Zgodność z IEC

Gdy włączone jest sprawdzanie zgodności z normą IEC, dostępne są dodatkowe opcje konwersji, co zwiększa elastyczność instrukcji.

Przykłady konwersji danych

Dla sterowników S7-1500

Sterowniki tej serii oferują dodatkowe opcje konwersji, ale z pewnymi ograniczeniami:

  • Typy DWORD i LWORD mogą być konwertowane tylko na lub z typów REAL i LREAL.
  • Podczas konwersji wzorzec bitowy wartości źródłowej zostaje przeniesiony w niezmienionej formie do wartości docelowej, wyrównanej do prawej strony.

Praktyczne zastosowanie

Załóżmy, że masz wartość w formacie DINT, którą chcesz przekształcić na typ REAL:

  1. Określasz typ źródłowy jako DINT.
  2. Ustawiasz typ docelowy na REAL.
  3. Wynikowa wartość zostaje automatycznie przeliczona do standardu liczby zmiennoprzecinkowej.

Wskaźniki stanu sygnału ENO

Podczas pracy z instrukcją „Convert Value” ważne jest monitorowanie wskaźnika stanu sygnału wyjściowego ENO:

  • ENO = 1: Konwersja przebiegła pomyślnie, brak błędów.
  • ENO = 0: Wystąpił błąd w trakcie przetwarzania. Warto w takim przypadku zweryfikować poprawność określonych typów danych lub parametrów.

Parametry instrukcji „Convert Value”

Poniżej przedstawiono zestawienie parametrów dostępnych w instrukcji:

ParametrDeklaracjaTyp danychObszar pamięciDescription 
<Source type>WejścieLiczby binarne, całkowite, zmiennoprzecinkowe, czas, itp.I, Q, M, D, L, P, stałaWartość, która ma zostać przekonwertowana.
<Destination type>WyjścieLiczby binarne, całkowite, zmiennoprzecinkowe, czas, itp.I, Q, M, D, L, P, stałaWynik konwersji.

Uwagi końcowe

W sterownikach SIMATIC S7-1200 i S7-1500 funkcja „Convert Value” jest niezastąpiona przy pracy z danymi różnorodnych typów. Warto pamiętać o:

  • Zachowaniu zgodności długości operandów.
  • Specyficznych wymaganiach dla sterowników S7-1500.
  • Monitorowaniu stanu sygnału ENO, aby unikać błędów w aplikacji.

Dzięki tej instrukcji programista może efektywnie zarządzać konwersją danych, co przyczynia się do zwiększenia niezawodności i elastyczności aplikacji przemysłowych.

Jeśli chcesz pogłębić swoją wiedzę i umiejętności w zakresie programowania i konfiguracji systemów automatyki, polecamy zapisanie się na darmowy kurs PLC!

Share
Recommended course!
Until 20.09.2022 rebate -15% on:

SIMATIC S7 in action

Sign up for the newsletter!
Author of entries
Tomasz Gilewski

Hello, my name is Tomasz Gilewski. I am the author of books on the S7-1200 controller and HMI panels (i.e. Siemens hardware). I have been programming exclusively on Siemens hardware and engineering tools for several years.

Leave a Comment

Select currency
Scroll to Top

Search on