Wczytujemy postępy z tego urządzenia…
PLC Gym
Strona główna PLC GymPoziom 1, 0 XP · Twoje postępy
TIA Portal V20

Siemens SCL

Przetestowane w symulatorze

Standardowy S7-1500 · zoptymalizowana pamięć FB · lokalne zmienne # w SCL.

Struktura
Typowany interfejs; przypisania, IF / ELSIF / ELSE, listy CASE ze znakiem dla INT/DINT oraz REGION / END_REGION. Zakresy CASE nie wchodzą w ten podzbiór.
Wyrażenia
Logika BOOL, arytmetyka liczbowa, porównania i nawiasy. INT, DINT, REAL i TIME. & oznacza też AND. ABS, LIMIT, MIN, MAX, ROUND i TRUNC działają na liczbach. REAL trafia do INT lub DINT przez ROUND albo TRUNC: TIA Portal nie konwertuje go sam. Komentarze to // do końca wiersza, (* ... *) albo (/* ... */) dla komentarza, który można przetłumaczyć.
Instrukcje ze stanem
Timery TON_TIME, TOF_TIME, TP_TIME i TONR_TIME; liczniki IEC_COUNTER.CTU, CTD_INT i CTUD_INT z INT PV/CV; R_TRIG i F_TRIG. Lista poniżej opisuje każdy z nich.
Pętle FOR i EXIT
FOR counter := start TO end BY step DO … END_FOR; używa licznika INT/DINT, obejmuje obie granice i ma opcjonalne BY (domyślnie +1). Ujemne kroki działają. EXIT opuszcza najbardziej wewnętrzną pętlę. Nie zmieniaj licznika, końca ani operandów BY wewnątrz ciała pętli; BY równe zero jest odrzucane.
Tablice
Zadeklaruj ARRAY[0..9] OF REAL w interfejsie bloku; czytaj lub zapisuj #Samples[#Index]. Elementy BOOL, INT, DINT i REAL, także z ujemnymi dolnymi granicami.
Typy danych PLC i bloki funkcyjne
Nazwane typy danych PLC (tabela lub dokument TYPE) i wielokrotnego użytku FB z sekcjami Input, Output, InOut, Static i Temp. Deklaruj instancje FB w Static i wywołuj #Instance(Input := …, Output => …).
Limity wykonania
Tablice jednowymiarowe: do 256 elementów każda i 1024 rozwinięte wartości na program. Każdy element pojawia się w Obserwowanych zmiennych i w odtwarzaniu. Indeks poza zakresem zatrzymuje cykl z rzeczywistym indeksem i dozwolonymi granicami. Pętle dzielą budżet 20 000 operacji na cykl, nawet z pustym ciałem. To limity akademii.
Poza tym podzbiorem
WHILE / REPEAT, operator potęgi **, pozostałe funkcje matematyczne (SQRT, SIN i tak dalej), tablice wielowymiarowe, tablice UDT lub instancji, anonimowe struktury zagnieżdżone, kopiowanie całych tablic, własne funkcje ze zwracaną wartością, adresowanie wskaźnikami i natywne pliki projektów.

Timery, liczniki i przerzutniki

TON TON_TIME
Opóźnione załączenie. Q włącza się, gdy IN jest włączone przez PT, i wyłącza się razem z IN. #Delay(IN := #Start, PT := T#2s); Siemens– strona
TOF TOF_TIME
Opóźnione wyłączenie. Q włącza się razem z IN i pozostaje włączone przez PT po wyłączeniu IN. #RunOn(IN := #Start, PT := T#2s); Siemens– strona
TP TP_TIME
Impuls. Q jest włączone przez PT od każdego zbocza narastającego IN, bez względu na to, co potem robi IN. Nowe zbocze podczas trwania impulsu jest ignorowane. #Dose(IN := #Start, PT := T#2s); Siemens– strona
TONR TONR_TIME
Akumulator czasu. ET sumuje czas, przez który IN jest włączone, i zachowuje go, gdy IN się wyłączy. Q włącza się przy PT i pozostaje włączone. R kasuje ET i Q. #RunTime(IN := #Running, R := #Clear, PT := T#1h); Siemens– strona
CTU IEC_COUNTER
Liczy w górę. Każde zbocze narastające CU dodaje 1 do CV. Q jest włączone, gdy CV wynosi PV lub więcej. R ustawia CV na 0. #Bottles.CTU(CU := #Sensor, R := #Clear, PV := 6); Siemens– strona
CTD CTD_INT
Liczy w dół. LD ładuje PV do CV. Każde zbocze narastające CD odejmuje 1. Q jest włączone, gdy CV wynosi 0 lub mniej. #Left(CD := #Sensor, LD := #Refill, PV := 12); Siemens– strona
CTUD CTUD_INT
Liczy w górę i w dół. CU dodaje 1, CD odejmuje 1, a oba w jednym cyklu nie zmieniają CV. R ustawia CV na 0, a LD ładuje PV. QU jest włączone przy PV lub więcej, QD przy 0 lub mniej. #Stock(CU := #In, CD := #Out, R := #Clear, LD := FALSE, PV := 10); Siemens– strona

SR, RS i cewka zanegowana to bloki LAD i FBD. W SCL zatrzask napisz za pomocą IF, a zanegowany bit za pomocą NOT.

Typy danych PLC i bloki funkcyjne

Grupuj dane urządzeń i używaj ponownie przetestowanego bloku sterującego

Przetestowane w symulatorze
  • UDT opisuje grupę powiązanych wartości. PumpStatus przechowuje stan pracy i licznik uruchomień; nie wykonuje żadnej logiki.
  • PumpControl zawiera logikę wielokrotnego użytku. DutyControl i StandbyControl to osobne instancje: mają wspólną definicję, ale każda zachowuje własne wartości Latch i WasRunning.
  • Wejścia są podawane przy wywołaniu. Running jest kopiowane na wyjście po wykonaniu. Status to strukturalny parametr InOut wskazujący zmienną stanu tej pompy; zapis do Status.Starts zmienia dane wywołującego.
  • Każde wywołanie wykonuje się w kolejności programu. Pominięte wywołanie zachowuje wartości instancji i wyjść; IF wokół wywołania nie jest poleceniem zatrzymania. Podaj wejście blokady/Stop i wykonaj blok, aby wyłączyć pompę.

Zadeklaruj PumpStatus jako typ danych PLC, a PumpControl jako FB. Zadeklaruj DutyControl/StandbyControl w Static, żeby wywoływać wiele instancji. SCL używa zmiennych lokalnych z #, Input/InOut z := i Output z =>. Dane Temp są czyszczone przy każdym wywołaniu w tym zoptymalizowanym modelu dydaktycznym.

Typ danych PLC · dokument TYPE
TYPE
    PumpStatus : STRUCT
        Running : BOOL;
        Starts : DINT;
    END_STRUCT;
END_TYPE
FB PumpControl · interfejs
NazwaSekcjaTyp danych
StartWejścieBOOL
StopWejścieBOOL
PermitWejścieBOOL
FaultWejścieBOOL
RunningOutputBOOL
StatusInOutPumpStatus
LatchStaticBOOL
WasRunningStaticBOOL
Treść FB (SCL)
#Latch := (#Start OR #Latch) AND NOT #Stop AND #Permit AND NOT #Fault;
IF #Latch AND NOT #WasRunning THEN
    #Status.Starts := #Status.Starts + 1;
END_IF;
#Status.Running := #Latch;
#Running := #Latch;
#WasRunning := #Latch;
Dwie instancje wywołane z procedury głównej
#DutyControl(Start := #Start, Stop := #Stop, Permit := #Permit, Fault := #Fault, Running => #PumpOn, Status := #DutyStatus);
#StandbyControl(Start := #StandbyStart, Stop := #Stop, Permit := #Permit, Fault := #StandbyFault, Running => #StandbyPump, Status := #StandbyStatus);

Wypróbuj w warsztacie

Otwórz dowolną SCL misję i użyj kart Typy danych PLC i Bloki funkcyjne – następnie zadeklaruj instancje w Interfejs bloku.

  1. Obejrzyj UDT i definicję bloku, a potem dwie inaczej nazwane instancje.
  2. Podczas pauzy wymuś Start na TRUE w zakładce Wejścia i przejdź kilka cykli: PumpOn pozostaje włączone, a DutyStatus.Starts rośnie tylko raz.
  3. Puść Start. Podtrzymanie utrzymuje pracę pompy głównej. Uruchom pompę rezerwową; jej licznik uruchomień jest niezależny.
  4. Ustaw Fault na ON: pompa główna zatrzymuje się natychmiast, a rezerwowa pracuje dalej. Naciśnij Stop podczas pracy albo w pauzie wymuś Stop na TRUE w zakładce Wejścia: oba sposoby ją zatrzymują.
  5. Przewiń do nagranego cyklu i porównaj zmienne stanu wywołującego ze stanem lokalnym bloku i wykonanymi liniami bloku.

Umowa symulacji

  • Stałe, wirtualne zadanie 20 ms. Prędkość odtwarzania i liczba klatek 3D nie zmieniają wyników.
  • Każdy scenariusz testowy zaczyna się od świeżego stanu sterownika i instalacji.
  • Edycja zatrzymuje wykonanie. Wyniki i odtwarzanie należą do przetestowanej wersji programu.
  • REAL używa 32-bitowej precyzji. Nieobsługiwane przepełnienie liczby całkowitej daje komunikat diagnostyczny.
  • Liczniki przechowują wartości INT. Pozostałe szerokości liczników (SINT, DINT i typy bez znaku) oraz timery LTIME nie są tu zaimplementowane.
  • Poprawne obliczenia NORM_X/SCALE_X są obsługiwane w FBD. Nieprawidłowe zakresy kończą się komunikatem diagnostycznym; natywne wyniki ENO/błędu nie są odtwarzane.
  • Wykresy używają jednej aktywnej ścieżki i logicznych akcji N/S/R. Natywne akcje czasowe, ścieżki równoległe i opcje ostatniego cyklu/resetu są poza tym modelem.
  • Dzielenie liczb całkowitych odrzuca część ułamkową: 7 / 2 to 3. Porównania dziesiętne używają precyzji operandu; wartość REAL 0.1 jest równa 0.1. Do dzielenia z ułamkami użyj operandu REAL.
  • SCL przyjmuje stałe REAL z typem, jak REAL#2.0. Niejednoznaczne obliczenia zmiennoprzecinkowe używają podwójnej precyzji S7-1500 przed przypisaniem do zmiennej REAL.
  • Zachowanie po wyłączeniu zasilania, prawdziwe wejścia i wyjścia, czasy sieci oraz firmware producenta są poza modelem.

Przeczytaj oryginalną dokumentację

Ta akademia uczy ograniczonego podzbioru. Natywna weryfikacja wymaga kompilacji i testów we wskazanym oprogramowaniu producenta.

Ocena rozmowy działa w tej przeglądarce. Obecny przebieg na żywo to lokalny prototyp, a nie bezpieczna usługa zdalnej oceny. Pliki eksportu są w wersji beta i wymagają sprawdzenia importu i działania w TIA Portal V20 lub Studio 5000.

Podstawowe zachowanie sprawdzono z oficjalnymi podręcznikami Logix oraz podręcznikiem S7-1200 i wytycznymi S7-1200/1500. Dokumenty Siemens są starsze niż V20. Zachowanie TwinCAT wynika ze stron referencyjnych Tc2_Standard od Beckhoff i podręcznika TwinCAT 3 PLC. To sprawdzenie nie zastępuje testów na docelowym sterowniku, zwłaszcza dla czasu wykresów i bloków wielokrotnego użytku.

Siemens TIA Portal V20Studio 5000 v38Podręcznik bloków funkcyjnych LogixPodręcznik SFC LogixJęzyki TwinCAT 3 PLCTwinCAT Tc2_Standard TONTwinCAT Tc2_Standard CTU