Ciągi znaków i tekst
Operacje na danych
Przetwarzaj dane tekstowe jak profesjonalista. Od dynamicznego generowania etykiet po parsowanie protokołów, opanuj każdą instrukcję manipulacji ciągami znaków w swoim PLC.
Dlaczego warto przetwarzać ciągi znaków w PLC?
Podczas gdy sterowniki PLC są projektowane głównie do logiki binarnej i numerycznej, operacje na ciągach znaków są niezbędne dla nowoczesnych interfejsów przemysłowych. Pozwalają one na generowanie dynamicznych komunikatów dla HMI, parsowanie kodów kreskowych lub kodów QR ze skanerów oraz komunikację z systemami IT za pomocą sformatowanych protokołów tekstowych.
TIA Portal oferuje solidny zestaw instrukcji do zarządzania typami STRING (ASCII) i WSTRING (Unicode), zapewniając, że Twoja maszyna może komunikować się wyraźnie w dowolnym języku.
Konkatenacja i wstawianie
Budowanie dynamicznych komunikatów
CONCAT — Konkatenacja ciągów znaków
CONCATCo robi
Łączy dwa lub więcej ciągów znaków w jeden wyjściowy ciąg znaków. Ciągi źródłowe są dołączane w kolejności, w jakiej zostały zdefiniowane.
Kiedy używać
Tworzenie pełnego komunikatu statusu z prefiksu i nazwy zmiennej lub budowanie linii CSV do logowania danych.
Pro wskazówki
Zawsze sprawdzaj maksymalną długość docelowego ciągu znaków, aby uniknąć obcięcia tekstu.
W SCL możesz użyć operatora '+', aby uprościć konkatenację, jeśli jest obsługiwany.
Łącz CONCAT ze znakami spacji, aby zapewnić czytelny wynik na HMI.
INSERT — Wstawianie do ciągu znaków
INSERTCo robi
Wstawia podciąg do istniejącego ciągu znaków na określonej pozycji znaku (P).
Kiedy używać
Dodawanie symboli jednostek (takich jak 'kg' lub '°C') wewnątrz dynamicznego szablonu tekstu.
Pro wskazówki
Jeśli P wynosi 0, ciąg znaków jest wstawiany na początku.
Jeśli P jest większe niż długość ciągu, podciąg jest dopisywany na końcu.
Użyteczne do dynamicznego formatowania ciągów daty/czasu.
Wyszukiwanie i modyfikacja
Analiza danych tekstowych
FIND — Wyszukiwanie podciągu
FINDCo robi
Wyszukuje określony wzorzec w ciągu znaków i zwraca pozycję początkową. Zwraca 0, jeśli nie znaleziono.
Kiedy używać
Lokalizowanie ograniczników (takich jak przecinki lub średniki) w ciągu wejściowym ze skanera.
Pro wskazówki
Wyszukiwanie uwzględnia wielkość liter. 'Error' różni się od 'error'.
Użyj zwróconej pozycji bezpośrednio w instrukcji MID, aby wyodrębnić dane.
W pętli możesz znaleźć wiele wystąpień, aktualizując przeszukiwany ciąg znaków.
REPLACE — Zastępowanie części
REPLACECo robi
Zastępuje określoną liczbę znaków, zaczynając od pozycji P, nowym podciągiem.
Kiedy używać
Aktualizowanie zmiennej części statycznego komunikatu bez przebudowywania całego ciągu.
Pro wskazówki
Aby usunąć znaki bez dodawania nowych, użyj pustego ciągu jako zamiennika.
Często używane do zamiany symboli zastępczych, takich jak {val}, na rzeczywiste wartości.
Zachowaj ostrożność przy liczbie znaków, aby uniknąć nieoczekiwanego przesunięcia reszty tekstu.
Konwersja i wyodrębnianie
Łączenie liczb i tekstu
VAL_STRG / STRG_VAL — Konwersja
VAL_STRGCo robi
Konwertuje wartości numeryczne (Int, Real) na String (VAL_STRG) lub parsuje liczby z ciągu String (STRG_VAL).
Kiedy używać
Wyświetlanie temperatury typu Real w niestandardowym komunikacie tekstowym lub konwersja danych z portu szeregowego na Integer.
Pro wskazówki
Skonfiguruj wejście FORMAT, aby zdefiniować miejsca dziesiętne i zachowanie znaku.
STRG_VAL jest wrażliwy na separator dziesiętny (kropka vs przecinek).
Sprawdzaj wyjście statusu, aby upewnić się, że konwersja zakończyła się sukcesem.
LEFT / RIGHT / MID — Wyodrębnianie
MIDCo robi
Wyodrębnia część ciągu znaków z lewej, prawej strony lub z określonej pozycji środkowej (MID).
Kiedy używać
Pobieranie prefiksu z kodu kreskowego lub wyodrębnianie wartości między nawiasami.
Pro wskazówki
MID(IN, L, P) wyodrębnia L znaków zaczynając od pozycji P.
Jeśli L przekracza dostępną liczbę znaków, instrukcja zwraca wszystko do końca.
Niezbędne do wyodrębniania danych z protokołów szeregowych innych firm.
STRING vs WSTRING
Wybór właściwego formatu tekstu
| Właściwość | STRING | WSTRING |
|---|---|---|
| Kodowanie | ASCII / Extended ASCII | Unicode (UTF-16) |
| Bajty na znak | 1 bajt | 2 bajty |
| Maksymalna długość | 254 znaki | 16382 znaki |
| Zastosowanie | Standardowy tekst zachodni | Znaki międzynarodowe / specjalne |
| Wpływ na pamięć | Niski | Wysoki (podwójny) |
| Prefiks SCL | '' (Pojedyncze cudzysłowy) | W#'' |
Często zadawane pytania
Jaka jest maksymalna długość typu STRING w TIA Portal?
Standardowy STRING może pomieścić do 254 znaków. Jeśli potrzebujesz więcej, musisz użyć typu WSTRING, który obsługuje do 16 382 znaków na S7-1500.
Dlaczego moja konwersja VAL_STRG kończy się niepowodzeniem?
Najczęstszą przyczyną jest niewystarczająca długość docelowego ciągu znaków lub niezgodność parametru FORMAT (np. próba zmieszczenia dużej liczby REAL w krótkim ciągu STRING).
Czy mogę używać ciągów znaków w zoptymalizowanych blokach danych?
Tak, ciągi znaków są w pełni obsługiwane w zoptymalizowanych blokach danych (DB). Pamiętaj jednak, że zawsze zajmują one maksymalny zdefiniowany rozmiar w pamięci plus 2 bajty na nagłówki długości.
Jak porównać dwa ciągi znaków w SCL?
Możesz użyć standardowych operatorów porównania (=, <>, <, >). TIA Portal porównuje ciągi znak po znaku w oparciu o ich wartości ASCII/Unicode.