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.

If you would like to enhance your knowledge and skills in programming and configuration of automation systems, we recommend enrolling in the free PLC course!

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