Instrukcje TIA Portal

Przesuwanie i Rotacja
Manipulacja bitami

Zoptymalizuj przetwarzanie swoich rejestrów. Od ultraszybkich obliczeń matematycznych po złożone zarządzanie protokołami komunikacyjnymi — opanuj ruch bitów.

Dlaczego warto przesuwać lub obracać bity?

Operacje przesuwania (Shift) i rotacji (Rotate) pozwalają na przemieszczanie bitów słowa w lewo lub w prawo. W przemyśle są one używane do wyodrębniania precyzyjnych informacji z telegramu komunikacyjnego, tworzenia rejestrów przesuwnych do śledzenia części na przenośniku lub wykonywania mnożenia/dzielenia przez potęgi 2 w sposób niezwykle wydajny.

Główna różnica polega na traktowaniu bitów 'wychodzących': podczas gdy Przesunięcie (Shift) odrzuca je i zastępuje zerami, Rotacja (Rotate) wprowadza je z powrotem z drugiej strony słowa, tworząc ciągłą pętlę kołową.

Przesunięcie (Shift)

Ruch liniowy z utratą bitów

SHL / SHR — Przesunięcie w lewo/prawo

SHL

Co robi

Przesuwa bity w lewo (SHL) lub w prawo (SHR) o liczbę pozycji zdefiniowaną przez wejście N. Bity wychodzące z rejestru są tracone, a nowe bity wchodzące są ustawiane na 0.

Kiedy używać

Szybkie mnożenie przez 2 (SHL), dzielenie przez 2 (SHR) lub izolowanie konkretnego bajtu w 32-bitowym słowie.

Porady Pro

Przesunięcie liczby całkowitej o 1 bit w lewo jest równoważne pomnożeniu jej przez 2 bez obciążania jednostki matematycznej.

Dla typów ze znakiem (Int, DInt), SHR często zachowuje bit znaku (przesunięcie arytmetyczne).

Jeśli N jest większe niż rozmiar słowa (np. N=20 dla WORD), wynikiem będzie 0.

Rotacja (Rotate)

Ruch kołowy bez utraty bitów

ROL / ROR — Rotacja w lewo/prawo

ROL

Co robi

Obraca bity w sposób kołowy. Bit wychodzący z jednej strony (np. z lewej dla ROL) natychmiast wchodzi z drugiej strony (z prawej). Żadne dane nie są tracone.

Kiedy używać

Tworzenie wirujących wzorów świetlnych, proste szyfrowanie danych lub zarządzanie buforami cyklicznymi (FIFO).

Porady Pro

Idealne do naprzemiennego ustalania priorytetów w grupie pomp lub silników.

W przeciwieństwie do przesuwania, pełna rotacja (np. 16 bitów dla WORD) przywraca wartość początkową.

Użyj ROL/ROR do zmiany kolejności bajtów (Endianness) w wymianie danych.

Shift vs Rotate: Pojedynek

Zrozumienie wpływu na Twoje dane

WłaściwośćPrzesunięcie (SHL/SHR)Rotacja (ROL/ROR)
StrukturaLiniowaKołowa
Bity wychodząceOdrzucone (Utracone)Wprowadzone ponownie
Bity wchodząceZawsze 0Bity wychodzące odzyskane
Zastosowanie matematyczneMnożenie / DzieleniePermutacja bitów
Przykład z życiaŚledzenie części (Przenośnik)Sekwencer / Biegnące światło
RyzykoOpróżnienie rejestruBrak (dane zachowane)

Często Zadawane Pytania

Dlaczego używać SHL zamiast mnożenia przez 2?

Instrukcja SHL jest wykonywana znacznie szybciej przez procesor PLC niż operacja MUL, ponieważ pracuje bezpośrednio na rejestrze bez przechodzenia przez złożone ALU.

Jak stworzyć rejestr przesuwny dla przenośnika?

Użyj SHR przy każdym impulsie encodera. Jeśli na wejściu wykryto część, wymuś bit 0 na 1. Przesuwając słowo, śledzisz pozycję części bit po bicie.

Jaki jest wpływ typu danych (Byte, Word, DWord)?

Instrukcja dostosowuje się do rozmiaru. ROR na Byte sprawi, że bit 7 pojawi się ponownie na pozycji 0 po 1 przesunięciu. Na Wordzie bit 15 powróci na 0.

Czy można przesuwać zmienne w SCL?

Tak, poprzez funkcje SHL(IN:=var, N:=n) lub używając standardowych operatorów bitowych, jeśli pozwala na to Twoja wersja TIA Portal.

Zautomatyzuj swoje manipulacje binarne

Potrzebujesz wyizolować bity lub stworzyć złożony sekwencer? T-IA Connect błyskawicznie wygeneruje Twoje sieci przesuwania i rotacji.