PLC - Programovatelné logické automaty
PLC-AUTOMATIZACE - PROGRAM - ZOBRAZENÍ PROGRAMU - ST (STL) / SCL Provoz webu zajišťuje:

www.hapesoft.cz

ST (STL) / SCL

Charakteristika

Vyšší strukturovaný programovací jazyk (ST (STL) - Strukturierte Text / SCL - Structured Control Language) je určen pro složité výpočty, algoritmy a jiné, kdy by byl zápis při použití instrukcí velmi složitý. Jedná se o strukturovaný jazyk, podobný syntaxi vyššímu programovacímu jazyku Pascal.

Zápis programu se provádí ve formě strukturovaného textu s použitím metod a způsobů vyššího programovacího jazyka včetně deklarací, podmínek, knihoven atd...

Výsledný programový kód pro PLC je ze strukturovaného zápisu kompilován do zápisu programu ve formě seznamu instrukcí. Tento instrukční zápis je pak reprezentací původního strukturovaného zápisu. Kompilátor generuje jeden nebo několik podprogramů (FC, FB), které se volají z hlavního programového bloku a potřebné datové bloky pro ukládání proměnných.

Poznámka
Při použití ST (STL) / SCL je potřeba brát v úvahu vyšší nároky na paměť (kapacitu) pro uložení programu a dat.

Příklady

 
    (* simple state machine *)    
TxtState := STATES[StateMachine];
CASE StateMachine OF
    1: ClosingValve();
ELSE
    ;; BadCase();  
END_CASE;
 
 
 
// PLC configuration
CONFIGURATION DefaultCfg
    VAR_GLOBAL
        b_Start_Stop  : BOOL;         // Global variable to represent a boolean.
        b_ON_OFF      : BOOL;         // Global variable to represent a boolean.
        Start_Stop AT %IX0.0:BOOL;    // Digital input of the PLC (Address 0.0)
        ON_OFF     AT %QX0.0:BOOL;    // Digital output of the PLC (Address 0.0). (Coil)
    END_VAR
    // Schedule the main program to be executed every 20 ms
    TASK Tick(INTERVAL := t#20ms);
    PROGRAM Main WITH Tick : Monitor_Start_Stop;
END_CONFIGURATION
 
PROGRAM Monitor_Start_Stop          // Actual Program
      VAR_EXTERNAL  
          Start_Stop  : BOOL;  
          ON_OFF      : BOOL;  
      END_VAR  
      VAR                             // Temporary variables for logic handling  
          ONS_Trig    : BOOL;  
          Rising_ONS  : BOOL;  
      END_VAR  
     
      // Start of Logic  
      // Catch the Rising Edge One Shot of the Start_Stop input  
      ONS_Trig    := Start_Stop AND NOT Rising_ONS;  
     
      // Main Logic for Run_Contact -- Toggle ON / Toggle OFF ---  
      ON_OFF := (ONS_Trig AND NOT ON_OFF) OR (ON_OFF AND NOT ONS_Trig);  
     
      // Rising One Shot logic  
      Rising_ONS := Start_Stop;  
  END_PROGRAM  
     
 
 
//=======================================================================
// Function Block Timed Counter : Incremental count of the timed interval
//=======================================================================
FUNCTION_BLOCK FB_Timed_Counter
    VAR_INPUT
        Execute : BOOL := FALSE;                // Trigger signal to begin Timed Counting
        Time_Increment : REAL := 1.25;          // Enter Cycle Time (Seconds) between counts
        Count_Cycles : INT := 20;               // Number of Desired Count Cycles
    END_VAR
    VAR_OUTPUT
        Timer_Done_Bit  : BOOL := FALSE;        // One Shot Bit indicating Timer Cycle Done
        Count_Complete  : BOOL := FALSE;        // Output Bit indicating the Count is complete
        Current_Count   : INT  := 0;            // Accumulating Value of Counter
    END_VAR
    VAR
        CycleTimer      : TON;                  // Timer FB from Command Library
        CycleCounter    : CTU;                  // Counter FB from Command Library
        TimerPreset     : TIME;                 // Converted Time_Increment in Seconds to MS
    END_VAR
 
    // Start of Function Block programming
    TimerPreset := REAL_TO_TIME(in := Time_Increment) * 1000;
 
    CycleTimer(
        in := Execute AND NOT CycleTimer.Q
        ,pt := TimerPreset);
 
    Timer_Done_Bit := CycleTimer.Q;
 
    CycleCounter(
        cu := CycleTimer.Q
        ,r := NOT Execute
        ,pv := Count_Cycles);
 
    Current_Count := CycleCounter.cv;
    Count_Complete := CycleCounter.q;
 
END_FUNCTION_BLOCK
 

PLC-AUTOMATIZACE - PROGRAM - ZOBRAZENÍ PROGRAMU - ST (STL) / SCL
 
Publikovaný obsah je určen pouze pro individuální studium.
Není povolena distribuce, prodej, přetisk a použití textu a/nebo vyobrazení (úplný, dílčí a/nebo částečný), použití ke školení a/nebo výuce (hromadné, skupinové nebo zadávané), veřejné a/nebo skupinové prezentace a ani jiné formy šíření v hmotné a/nebo nehmotné podobě.