Jump to content

Структурированный текст

Структурированный текст , сокращенно ST или STX , — это один из пяти языков, поддерживаемых стандартом IEC 61131-3 , разработанным для программируемых логических контроллеров (ПЛК). [1] [2] Это язык высокого уровня, имеющий блочную структуру и синтаксически напоминающий Паскаль , на котором он основан. [3] Все языки имеют общие элементы IEC61131 . Переменные и вызовы функций определяются общими элементами, поэтому в одной программе можно использовать разные языки стандарта IEC 61131-3.

Поддерживаются сложные операторы и вложенные инструкции:

  • Итерационные циклы (REPEAT-UNTIL; WHILE-DO)
  • Условное выполнение (IF-THEN-ELSE; CASE) [3]
  • Функции (КОРЕНЬ(), SIN())

Пример программы

[ редактировать ]
(* simple state machine *)
TxtState := STATES[StateMachine];

CASE StateMachine OF
   1: ClosingValve();
      StateMachine := 2;
   2: OpeningValve();
ELSE
    BadCase();
END_CASE;

В отличие от некоторых других языков программирования, для оператора CASE нет провала : вводится первое условие соответствия, и после выполнения его операторов блок CASE остается без проверки других условий.

Дополнительные примеры программирования ST

[ редактировать ]
// 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
  1. ^ Басидор, Майк (16 мая 2018 г.). «Должен ли я ограничить программирование релейной логикой или использовать все стандарты IEC 61131?» . Дизайн управления .
  2. ^ Стевич, Том (5 мая 2017 г.). «Очень краткая история платформ программирования ПЛК» . Дизайн управления .
  3. ^ Jump up to: а б Роос, Нике. «Программирование ПЛК с использованием структурированного текста». Департамент компьютерных наук Неймегенского университета. CiteSeerX   10.1.1.49.2016 . {{cite journal}}: Для цитирования журнала требуется |journal= ( помощь )
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: dd39a889aa6c13aa128d9c186effbe89__1718002560
URL1:https://arc.ask3.ru/arc/aa/dd/89/dd39a889aa6c13aa128d9c186effbe89.html
Заголовок, (Title) документа по адресу, URL1:
Structured text - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)