Structured text язык программирования

Содержание

Применение контроллеров

Современный ПЛК, недорогой и надежный, находит применение в ПИД-регуляторах, счетчиках типа «Меркурий», промышленных устройствах серии DVP. Компактность блоков позволяет встраивать их в бытовую технику, монтировать в щитах и шкафах совместно с прочим электрооборудованием.

Энкодер, подключенный к контроллеру, применяется в автомобилестроении, реагируя на изменение угла поворота руля. Удобно использовать ПЛК при создании комплексов с ЧПУ, автоматизированных систем запуска аварийной откачки сточных вод в канализации. Видеонаблюдение, интегрированное в охранный пост, создаст полноценный обзор зоны наблюдения для оператора.

Все требуемые данные при этом будут сохранены на носителе информации (переданы в сеть), а в случае опасности сигнал тревоги будет подан автоматически. Цепочке контроллеров под силу управлять работой цеха металлообработки, пошивочной мастерской. В домашнем варианте ПЛК без участия человека включит свет, накачает воду из колодца в бак до требуемого уровня.

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

(* simple state machine *)
TxtState := STATESStateMachine;

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.BOOL;    // Digital   input of the PLC (Address 0.0)
        ON_OFF     AT %QX0.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  := ;            // 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

Объявление и использование переменных

При помощи вашей первой программы на экран выводится «Hello World!».

Совет

Вероятнее всего, при изучении C# (как и любого другого языка программирования) вы будете допускать ошибки в коде. Компилятор найдет эти ошибки и сообщит вам о них. Если результат содержит сообщения об ошибках, внимательно просмотрите пример кода и код в интерактивном окне, чтобы понять, что нужно исправить.
Это упражнение поможет вам изучить структуру кода C#.

Функции первой программы ограничиваются выводом одного сообщения. Вы можете создавать более полезные программы с использованием переменных. Переменная — это символ, который вы можете использовать для выполнения одного и того же кода с разными значениями. Попробуем сделать это. Замените код, написанный в интерактивном окне, следующим:

В первой строке объявляется переменная , и ей назначается значение Bill. Вторая строка выводит имя.

Любой объявляемой переменной можно присваивать разные значения. Можно назначить переменной имя одного из ваших друзей. Добавьте эти две строки в интерактивном окне после уже добавленного вами кода. Обязательно сохраните объявление переменной и ее начальное присваивание.

Обратите внимание, что при помощи одной и той же строки кода выводятся два разных сообщения. Они формируются на основе значения, которое хранится в переменной

Как вы могли заметить, слово Hello в двух последних сообщениях отсутствует. Исправим это. Измените строки, которые выводят сообщение, следующим образом:

Снова нажмите кнопку Выполнить, чтобы просмотреть результаты.

Вы уже использовали для создания строк из переменных и констант. Но есть способ лучше.
Вы можете поместить переменную между символами и , чтобы код C# заменял этот текст значением переменной.

Этот подход называется интерполяцией строк.

Если добавить перед открывающей кавычкой строки, то внутри строки можно включать переменные в фигурных скобках, например . Попробуйте!

Техническое задание

Создание и утверждение технического задания (ТЗ) – очень важная часть разработки ПО. От грамотно составленного ТЗ зависит, насколько эффективно будет вестись разработка.

Опытные программисты знают, что программа не пишется за один раз. Как правило, софт корректируется и приближается итерациями к конечному варианту в соответствии с пожеланиями конструкторов, инженеров, электриков, механиков и технологов

Поэтому очень важно на этапе составления ТЗ плотно взаимодействовать со всеми заинтересованными специалистами, которые подписывают ТЗ, а по окончании принимают работу

Язык ассемблера

Так как программировать на машинном языке — удовольствие специфическое, то программисты изобрели язык ассемблера. В этом языке каждая команда идентифицируется коротким именем (а не набором единиц с нулями), и переменными можно управлять через их имена. Таким образом, писать/читать код стало гораздо легче. Тем не менее, процессор все равно не понимает язык ассемблера напрямую. Его также нужно переводить, с помощью ассемблера, в машинный код. Ассемблер — это транслятор (переводчик), который переводит код, написанный на языке ассемблера, в машинный язык. В Интернете язык ассемблера часто называют просто «Ассемблер».

Преимуществом Ассемблера является его производительность (точнее скорость выполнения) и он до сих пор используется, когда это имеет решающее значение. Тем не менее, причина подобного преимущества заключается в том, что программирование на этом языке адаптируется к конкретному процессору. Программы, адаптированные под один процессор, не будут работать с другим. Кроме того, чтобы программировать на Ассемблере, по-прежнему нужно знать очень много не очень читабельных инструкций для выполнения даже простого задания.

Например, вот вышеприведенная команда, но уже на языке ассемблера:

Преимущества высокоуровневых языков программирования

Преимущество №1: Легче писать/читать код. Вот вышеприведенная команда, но уже на языке C++:

Преимущество №2: Требуется меньше инструкций для выполнения определенного задания. В языке C++ вы можете сделать что-то вроде в одной строке. В языке ассемблера вам пришлось бы использовать 5 или 6 инструкций.

Преимущество №3: Вы не должны заботиться о таких деталях, как загрузка переменных в регистры процессора. Компилятор или интерпретатор берёт это на себя.

Преимущество №4: Высокоуровневые языки программирования более портируемые под различные архитектуры (но есть один нюанс).Нюанс заключается в том, что многие платформы, такие как Microsoft Windows, имеют свои собственные специфические функции, с помощью которых писать код намного легче. Но в таком случае приходится жертвовать портируемостью, так как функции, специфические для одной платформы, с большей долей вероятности, не будут работать на другой платформе. Обо всем этом мы детально поговорим на следующих уроках.

Машинный язык

Процессор компьютера не способен понимать напрямую языки программирования, такие как C++, Java, Python и т.д. Очень ограниченный набор инструкций, которые изначально понимает процессор, называется машинным кодом (или «машинным языком»). То, как эти инструкции организованы, выходит за рамки данного введения, но стоит отметить две вещи.

Во-первых, каждая команда (инструкция) состоит только из определенной последовательности (набора) цифр: и . Эти числа называются битами (сокр. от «binary digit») или двоичным кодом.

Например, одна команда машинного кода архитектуры ×86 выглядит следующим образом:

Во-вторых, каждый набор бит переводится процессором в инструкции для выполнения определенного задания (например, сравнить два числа или переместить число в определенную ячейку памяти). Разные типы процессоров обычно имеют разные наборы инструкций, поэтому инструкции, которые будут работать на процессорах Intel (используются в персональных компьютерах), с большей долей вероятности, не будут работать на процессорах Xenon (используются в игровых приставках Xbox). Раньше, когда компьютеры только начинали массово распространяться, программисты должны были писать программы непосредственно на машинном языке, что было очень неудобно, сложно и занимало намного больше времени, чем сейчас.

Принцип работы ПЛК

По сути, микроконтроллер достаточно близок к реле. Только вместо механических контактов и катушек в нем — электронные цепи. Понять принцип действия будет легко любому инженеру, знакомому со схемами, основами электротехники.

Датчик освещенности на входе подает сигнал в блок обработки данных. В нормальном состоянии процессор не реагирует. Как только сенсор определит падение освещения, изменится его сопротивление, центральный блок задействует цепи питания электроламп.

Для управления ПЛК, его программирования используется бытовой ПК. Несколько отдельных микроконтроллеров образуют каскад с усложненными задачами. Системы «умный дом», автоматика включения двигателя насоса для закачки воды в накопительный бак давно содержат в себе подобные блоки.

Сложные микроконтроллерные устройства обеспечивают охрану, защиту периметра (квартиры), включая связь с полицией (владельцем) через модем, подъем тревоги при проникновении нарушителей, разрушении механизма закрытия двери.

Первый этап работы устройства состоит из экспресс-теста задействованного оборудования. Одновременно идет загрузка операционной среды, управляющих программ. Все как в настольном ПК при старте Windows. Предусмотрена пошаговая отработка команд (отладка), при которой допускается мониторинг, корректировка переменных.

Для простоты восприятия рабочий, шаговый режим ПЛК разбит на типовые циклы. Они повторяются во время функционирования устройства. В каждом цикле, «маршрутной карте» заключаются 3 действия:

Завершается цикл быстрым переходом к первому этапу «урока».

Как программировать на codesys 2.3 новичку? Легко

Перед тем, как программировать ПЛК в среде разработки CoDeSyS 2.3 новички часто задаются вопросом: А какие системы требуется установить для корректной работы с аппаратом?? А как конфигурировать входы и выходы контроллера?? А каким образом связать устройство с ПК?? И снова, а как, а как?? Все мы с вами понимаем, устройства сложные и алгоритмы объёмные, и на изучение потребуется время. Я вот думаю, может написать небольшую книжку и назвать codesys для чайников? А вы согласны?

Из этой статьи вы узнаете:

Здравствуйте уважаемые коллеги и гости. Пишет вам автор блога kip-world.ru, Гридин Семён, и в этой статье я вам расскажу, как правильно программировать контроллер. Тема достаточно актуальная, я надеюсь после прочтения статьи, некоторые вопросы отпадут самим собой. =)

Циклы

Циклы в программировании ПЛК могут быть использованы для различных целей. У вас может быть функция или набор утверждений, которые вы хотите выполнить определенное количество раз или пока что-то остановит цикл. В Structured Text вы найдете 3 различных типа циклов:

Общим для всех типов циклов является то, что они имеют условие либо повторения, либо остановки цикла.Условие в FOR и WHILE циклах задает, следует ли цикл повторить или нет. Для REPEAT условие не является условием выполнения, оно будет решать, следует ли остановить цикл.

Цикл FOR

Первым циклом является цикл FOR и используется, чтобы повторить определенное количество раз. Цикл FOR имеет и некоторые другие ключевые слова. TO, BY, DO and END_FOR. Синтаксис для цикла в Structured Text.

Цикл WHILE

Данный цикл в отличие от FOR выполняется до тех пор, пока истинно логическое выражение. Синтаксис WHILE

Между ключевыми словами WHILE и DO находится логическое выражение. Если логическое выражение истинно, все выражения до ключевого слова END_WHILE будут выполнены. При достижении END_WHILE, логическое выражение будет вычисляться снова. Это будет происходить снова и снова, пока выражение не перестанет быть истинным. Чтобы сделать остановку цикла, вы должны изменить значение логического выражения с истинного на ложное. Пример цикла WHILE в STL

В третьей строке вы увидите, как цикл в конечном итоге перестанет выполняться. Логическое выражение использует переменную и проверяет счетчик, если его значение меньше или равно 10. Но так как значение счетчика устанавливается в 0 перед выполнением цикла, логическое выражение будет истинным, если счетчик не изменяется. В приведенном выше примере, цикл будет повторяться 10 раз. Когда значение счета достигает 10, логическое выражение будет вычисляться в ЛОЖЬ (потому что 10 не менее 10), и цикл остановится. Вы также можете использовать ключевое слово EXIT, тогда цикл может быть остановлен до перехода булева выражения в ложно. Синтаксисом выражения является выражение с ключевыми словами IF и EXIT. Это выражение может находиться в любом месте между DO и END_WHILE.

Цикл REAPEAT

Последним типом цикла в Structured Text является REAPEAT цикл. Он работает противоположным образом от цикла WHILE. Этот цикл прекращает повторение, когда логическое выражение имеет значение ИСТИНА. В ST, синтаксис для REPEAT цикла выглядит следующим образом:

Так как логическое выражение в этом типе цикла расположено после выражений, выражение всегда будет выполняться по крайней мере один раз. Это полезно, если вы хотите, чтобы действие произошло один раз, а затем, в зависимости от условия, решить, должно ли это действие повториться. Так же, как с циклом WHILE, вы должны изменить значение в логического выражения, чтобы цикл перестал выполняться. Это может быть сделано увеличением значения переменной (счетчика), или это может быть сделано с помощью условного оператора IF внутри цикла.

Общие сведения о языке ST¶

ST (Structured Text) – это текстовый язык высокого уровня общего назначения, по синтаксису схожий с языком Pascal. Удобен для программ, включающих числовой анализ или сложные алгоритмы. Может использоваться в программах, в теле функции или функционального блока, а также для описания действия и перехода внутри элементов SFC. Согласно IEC 61131-3 ключевые слова должны быть введены в символах верхнего регистра. Пробелы и метки табуляции не влияют на синтаксис, они могут использоваться везде.

Выражения в ST выглядят точно также, как и в языке Pascal:

Порядок их выполнения – справа налево. Выражения состоят из операндов и операторов. Операндом является литерал, переменная, структурированная переменная, компонент структурированной переменной, обращение к функции или прямой адрес.

Признаки качественного текста

Следующие черты присущи статьям, авторы которых правильно доносят свои идеи до читателей:

  1. Текст состоит из смысловых частей. Чтобы выделить их, используются заголовки, элементы форматирования, дополнительные материалы (диаграммы, изображения, графики, мультимедийные вставки).
  2. Разделы логически и тематически связаны между собой.
  3. Слова расположены в порядке, который не допускает двусмысленного толкования написанного.
  4. Материал выдержан в едином стиле (публицистическом, информационном, официально-деловом, разговорном, научном и др.).
  5. Тема раскрыта до конца, у посетителя не остается нерешенных проблем после прочтения статьи.

Такой контент положительно оценят пользователи сети, а поисковые роботы поставят его на высокие позиции в выдаче.

INI

Name and link Platform License Description
Any with Python 2.x? GNU GPLv2+ Retrieve properties as shell script commands to set the corresponding variables (with ). Retrieve properties’ values as plain text. Substitute values from an INI file in an Autoconf-style template. Supports plug-ins. Chokes on section names and keys with spaces.
Linux, FreeBSD Two-clause BSD Retrieve properties and sections as shell script commands to set the corresponding variables. Retrieve properties’ values as plain text. Check for existence of properties. List sections. Find values that match a pattern. Read-only.
crudini Any with Python 2.x GNU GPLv2 Retrieve properties and sections as INI fragments or shell script commands to set the corresponding variables. Retrieve properties’ values as plain text. Set properties. Remove properties and sections. Create empty sections. Merge INI files. Changes files in place.
inicomp Windows, *nix Apache 2.0 Compare INI (and also Windows .reg) files.
Windows (x86, x86-64), MS-DOS Closed-source freeware Retrieve properties and sections as batch file commands to set the corresponding variables. Set properties. Remove properties and sections. Changes files in place.
initool Linux, FreeBSD, Windows MIT Retrieve properties and sections as INI fragments. Retrieve properties’ values as plain text. Set properties. Check for existence of properties and sections. Remove properties and sections. Outputs the updated INI file.

Multiple formats

Name and link Description
Query and modify configuration files. Shares Augeas’ limitations when it comes to application-specific configuration files (it uses the same lenses), but has better support for generic formats such as JSON and INI.

About Structured Text

Structured text is one of (if not, the most) powerful of the available IEC languages. It allows complex, conditional code to be written much easier than any of the other languages.

The following functions are available in Structured Text:

  • FOR — Iterate through nested code a number of times
  • WHILE — Execute the same nested code until the while condition is false
  • IF — Execute nested code only if the condition is true
  • ELSE — Execute an alternative section of code if the IF condition is false
  • ELSIF — Conditional Else function, if the IF condition is false, but the ELSIF condition is true, execute the nested code. ELSIF can be stacked multiple times, and combined with an ELSE at the end to ensure code runs in the event of all conditions returning false. More on stacked conditions later!
  • CASE Statement — Execute a particular case, depending on the value of a declared variable

Structured Text lends itself heavily to complex algorithms, long mathematical functions, array manipulation and repetitive tasks. I often find myself using ST (structured text) in function blocks that iterate over arrays.

Язык программирования ST и типы переменных

ST (Structured text) — это одна из составных частей комплекса CoDeSyS и представляет собой текстовый редактор высокого уровня. Он очень похож на Basic или Pascal. Такой способ программирования является идеальным инструментом для людей-программистов. Преимуществом языка является создание сложных математических и разветвленных алгоритмов.

ST позволяет без труда описывать сложные операции компактным и лёгким для восприятия текстом. Structured Text содержит в себе много конструкций, позволяющие присваивать переменные, использовать готовые библиотеки, функции и функциональные блоки.

В чём преимущество данного способа программирования? давайте с вами перечислим:

С этим мы разобрались, но, прежде чем переходить к непосредственному изучению азов программирования, необходимо ознакомиться с элементом языка — тип данных

Хочу обратить внимание, этот элемент практически схож во многих си-подобных языках (Питон, Ардуино IDE, СИ# т.д.)

Тип данных переменной определяет род информации, диапазон представлений и множество допустимых операций. Языки МЭК используют строгую идеологию в этом отношений. Любую переменную можно использовать только после её объявления. Присваивать значения одной переменной другой можно, только если они одного типа. В другом случае используются преобразователи типов.

В таблице ниже я представлю типы данных, которые используются чаще всех:

Тип Название Предел Размер в байтах
BOOL Логическое 1 бит 1 бит
BYTE Целочисленое 8 бит 1 байт
WORD Целочисленое 16 бит 2 байта
INT Целочисленое -32768-32767 2 байта
UINT Целочисленое 0-65535 2 байта
FLOAT Вещественное ±10³³ 4 байта
DATE_AND_TIME Дата и время
STRING Строковое

Структура и устройство ПЛК

Любой плк Siemens или аналогичный, других производителей, ориентирован на выполнение конкретных действий. Микроконтроллер опрашивает блоки ввода информации, чтобы принять решение, сформировать на выходе готовую команду. Упрощенно схема стандартного элемента включает:

  • вход;
  • центр;
  • выход.

Входные цепи образованы набором датчиков (аналоговых или цифровых), переключающих устройств, смарт-систем. В центральном блоке расположены: процессор, обрабатывающий команды, модуль памяти и средства коммуникации. Выходные цепи отвечают за передачу сигнала на моторы привода, вентиляцию, осветительную арматуру. Туда же допускается подключить управляющее смарт- устройство архитектуры ардуино или подобное. Необходимо также выполнить условие подключения ПЛК к цепям питания. Без них устройство работать не будет. Внешний компьютер через унифицированный интерфейс используется для отладки, программирования контроллера.

Programming Environment

ST is no different to any of the other IEC languages, and every editor displays it slightly differently.

The ST environment is extremely simple, it’s essentially a blank text file. In most editors, the lines are numbered for convenience of referencing code in documentation.

Consider the above example, let’s analyse this line by line

  1. IF Statement — If the variable «Start» is TRUE then execute all code between the IF and the END_IF
  2. Set the variable «Start» to FALSE. This stops «Start» from remaining TRUE once we have started executing the IF statement. Ensuring the IF Statement only executes once
  3. WHILE Statement — Whilst the variable «Initialised» is FALSE, DO the nested code repeatedly.
  4. Set the variable «System_Prime» to true
  5. END_WHILE — Ends the WHILE statement
  6. Set the variable «System_Prime» to false
  7. END_IF — Ends the IF Statement

YAML, TOML

With a format converter like Remarshal (below) you can use tools to process YAML and TOML, but make sure you do not lose data in the conversion.

Name and link Description
clconf Merge multiple config files and extract values from them using path string. Supports JSON and YAML. Can be used as a Go library.
dasel Supports TOML and YAML. See the .
gojq Supports YAML. See the .
Graphtage Supports YAML. See the .
Mario Supports YAML. See the .
Remarshal Convert between CBOR, JSON, MessagePack, TOML, and YAML. Validate each of the formats. Pretty-print JSON, TOML, and YAML.
rq Supports TOML and YAML. See the .
shyaml Query YAML. Can output null-terminated strings for use in shell scripts.
validtoml Validate TOML.
validyaml Validate or pretty-print YAML.
yaml-tools
yq (kislyuk) wrapper for YAML.
yq (mikefarah) Query, modify, and merge YAML. Convert to and from JSON.

Рабочее окно программы

Дистрибутив мы с вами установили, таргеты тоже. Давайте мы с вами рассмотрим рабочее окно среды разработки, элементы меню и основные вкладки.

Основное поле на рисунке выше делится на три области:

Редактор переменных — здесь мы с вами вводим переменные и присваиваем им типы данных. Для тех, кто не знает, переменная — это имя, к которому будет обращаться программа и возвращать результат. А тип данных определяет род информации, диапазон представления чисел и множество других операций.

Дерево объектов — в этом окне располагаются такие объекты, как функции, функциональные блоки, подпрограммы, конфигурация ПЛК, библиотеки. Об этом я расскажу позже.

Интеграция модулей ввода/вывода и универсальное программное обеспечение являются ключевыми возможностями ПЛК

По этим и ряду других причин подписчики Control Engineering, судя по недавнему опросу Reed Research Group, планируют покупку большего числа ПЛК в наступившем году. Среди 202 респондентов, занимающихся составлением спецификаций или покупкой ПЛК, 59% делают это для конечных потребителей, 19% – для изготовителей оборудования и 22% – для обоих применений.

45% респондентов сообщили, что они увеличат затраты на ПЛК, 49% – оставят на прежнем уровне и 6% предполагают уменьшить; в 2002 г. только 29% планировали увеличить покупки, 64% оставить на прежнем уровне и 7% уменьшить.

Опрос показал также, что в наступившем году ожидается существенное увеличение беспроводных соединений с ПЛК. Возрастет также иx использование Ethernet.

Популярность емкости ПЛК (выраженной числом входов/выходов) в 2004 г. осталась на уровне 2002 г.; но использование систем управления на базе ПК и систем soft-logic немного увеличилось. Микро ПЛК (от 16 до 128 входов/выходов) использовали 27%, ПЛК среднего размера (от 129 до 512 входов/выходов) – 27%, большие ПЛК (>512 входов/выходов) – 18%, контроллеры на базе ПК 10%, нано ПЛК (менее 15 входов/выходов) – 7%, soft-logic – 7% и встроенные – 4%.

Майк Миклот, менеджер по маркетингу Rockwell Automation, заявляет, что некоторое увеличение использования систем управления на основе ПК и систем soft-logic „не удивительно и в большей степени характерно для организаций, переходящих от традиционных „доморощенных“ систем управления к реализации и внедрению готовых решений“.

Большая часть ПЛК используется в технологических процессах или в дискретном производстве, и эту тенденцию Миклот также не находит неожиданной, поскольку „потребители начали понимать, что распределенные системы управления (DCS) являются избыточными для операций с партиями продуктов“.

Респонденты в 2004 г. Используют ПЛК в равной степени (72% случаев) для управления как процессами, так и механизмами, для управления движением – 45%, для управления партиями 36%, для диагностики – 19% и в других случаях – 6%. Эти показатели в сущности такие же, как и в 2002 г., за исключением управления движением (было 79%) и управления партиями – 31%.

Большая часть ПЛК подключается к ПК и лишь немногие используются в автономных приложениях. Возможно, это две стороны одной и той же тенденции увеличившегося распределения информации. Отвечая на вопрос: „Как большинство ПЛК взаимодействует с другими системами?“ респонденты заявили следующее: соединены сетью с персональным компьютером – 30%, работают автономно – 29%, через сеть с другими ПЛК – 24%, соединены сетью распределенной системы управления 18%.

В 2002 г. автономно работали 34%, были включены в сети с ПК – 26%, в сети с другими ПЛК – 24% и в сети распределенной системы управления 16%.

Ник Инфелис, торговый менеджер продукции ПЛК в Omron Electronics, говорит, что развитые коммуникации „облегчают изготовителю распределение данных и получение единой точки доступа к уровню предприятия“. Рассматривая текущее состояние и перспективы применения протоколов коммуникации с ПЛК, пользователи ожидают уменьшения роли последовательного интерфейса, роста Ethernet и еще большего роста беспроводных соединений. Ведущими способами связи с ПЛК являются: последовательный RS-232/RS-485 89%, Ethernet – 86%, и 4-20 мА/0-10 В постоянного тока – 81%.

Коммуникации ПЛК обеспечивают повышение качества предупредительного ремонта за счет „возможностей оценки текущего состояния и диагностики, встроенных в удаленные устройства сетей ввода/вывода, сетей безопасности и прямого доступа к удаленным сетям из одной точки для ускорения отладки“ – добавляет Инфелис.

В 2004 г. среди всех, кто сообщает об использовании Ethernet, 79% применяют его для решения задач контроля. Около двух третей (65%) используют его для объединения в сеть ПЛК; 44% – дляуправления устройствами ввода/вывода.

Среди тех, кто использует Ethernet, 83% применяют TCP/IP; EtherNet/IP 54% и Profinet – около 7%.

Среди ведущих языков программирования доминирующим остается язык релейно-контактных схем. Даже приэтих условиях, отмечает Конни Чик, бизнес-менеджер по контроллерам GE Fanuc Automation, „развитие таких программных инструментов, как функцио нальные блоковые диаграммы и последовательные функциональные схемы, увеличивает возможности выбора функциональности приложения разработчиками систем управления и сводит к минимуму время выполнения проекта“.