Tag Archives: siemens plc

Управление фазным ротором в Step7

В данном примере описан автоматический запуск асинхронного двигателя с фазным ротором из состоящий четырех ступеней. Двигатель при этом запускается с полным сопротивлением ротора. По прошествии определенного времени включается первый переключатель ротора и перемыкает часть сопротивления ротора. Через каждый последующий интервал времени включаются следующие переключатели, причем сопротивление ротора каждый раз уменьшается, пока не будет полностью перемкнуто и двигатель выходит на номинальные обороты.

Кнопка ВКЛ на входе E0.0 осуществляет плавный пуск двигателя, а кнопка ВЫКЛ на E0.1 отключает двигатель. На вход E0.2 подключен автомат защиты двигателя, который срабатывает при перегрузке двигателя и отключает его.

Схема включения

Структура программы

Описание программы

Если нажата кнопка ВКЛ на входе E0.0 и не активны переключатели ротора или уже выполнен самоподхват автомата защиты двигателя (A0.0 = 1), то устанавливается промежуточный меркер M2.0. Этот промежуточный меркер используется для установки меркера защиты двигателя A0.0, в случае если не разомкнут ВЫКЛючатель или автомат защиты двигателя. Блокировка в этот момент должна отсутствовать. Меркер блокировки M10.0 устаналивается при одновременном нажатии кнопок ВКЛ и ВЫКЛ и сбрасывается только после того, как обе кнопки окажутся в исходном положении.

После того как установлен выход защиты двигателя A0.0, запускается первый таймер T37. По прошествии 2 сек. устанавливается выход A0.1 для первого переключателя ротора. Затем запускается второй таймер T38 и по прошествии 2 сек. Устанавливается выход A0.2 для второго переключателя ротора. Этот шаг повторяется для таймеров T39 и T40, которые со своей стороны включают переключатели ротора 3 и 4 установкой соответствующих выходов A0.3 и A0.4, так что двигатель в конце концов работает с номинальным числом оборотов. Двигатель будет отключен, если на входах E0.1 или E0.2 исчезает напряжение, т.е. если разомкнута кнопка ВЫКЛ или автомат защиты двигателя. Размер программы составляет 77 слов.

Листинг

Основная программа

// TITEL = ФАЗНЫЙ РОТОР

// E0.0 Кнопка вкл.

// E0.1 Кнопка выкл. Нормально замкнута

// E0.2 Защита двигателя Нормально замкнута

// A0.0 Защита двигателя

// A0.1 Переключатель ротора 1

// A0.2 Переключатель ротора 2

// A0.3 Переключатель ротора 3

// A0.4 Переключатель ротора 4

// T37 Таймер 1я ступень

// T38 Таймер 2я ступень

// T39 Таймер 3я ступень

// T40 Таймер 4я ступень

// БЛОКИРОВКА

LDN E0.1 // Кнопка Выкл нажата

U E0.0 // Кнопка Вкл нажата

S M10.0 ,1 // Вспомогательный меркер для блокировки

LD E0.1 // Кнопка Выкл не нажата

UN E0.0 // Кнопка Вкл не нажата

R M10.0 ,1 // Блокировка снята

ЗАПУСК ДВИГАТЕЛЯ

LD E0.0 // Кнопка Вкл нажата

UN A0.1 // Нет переключателя ротора 1

UN A0.2 // Нет переключателя ротора 2

UN A0.3 // Нет переключателя ротора 3

UN A0.4 // Нет переключателя ротора 4

LD A0.0

OLD

= M2.0 // Промежуточный меркер

LD M2.0 // Промежуточный меркер

U E0.1 // Кнопка Выкл не нажата

U E0.2 // Защита двигателя OK

UN M10.0 // Блокировка

= A0.0 // Двигатель в движении

ЗАПУСК ТАЙМЕРА T37

LD A0.0 // Двигатель в движении

UN A0.1 // Нет переключателя ротора 1

UN A0.2 // Нет переключателя ротора 2

UN A0.3 // Нет переключателя ротора 3

UN A0.4 // Нет переключателя ротора 4

TON T37,20 // Запуск T37 с 2 сек

ВКЛЮЧЕНИЕ ПЕРЕКЛЮЧАТЕЛЯ РОТОРА 1

LD T37 // T37 завершил работу

O A0.1 // Самоподхват переключателя ротора 1

LD A0.0 // Двигатель в движении

UN A0.2 // Нет переключателя ротора 2

UN A0.3 // Нет переключателя ротора 3

UN A0.4 // Нет переключателя ротора 4

ULD

= A0.1 // Переключатель ротора 1

ЗАПУСК ТАЙМЕРА T38

LD A0.0 // Двигатель в движении

UN A0.2 // Нет переключателя ротора 2

UN A0.3 // Нет переключателя ротора 3

UN A0.4 // Нет переключателя ротора 4

U A0.1 // Переключатель ротора 1

TON T38,20 // Запуск T 38 с 2 сек

ВКЛЮЧЕНИЕ ПЕРЕКЛЮЧАТЕЛЯ РОТОРА 2

LD T38 // T38 завершил работу

O A0.2 // Самоподхват переключателя ротора 2

LD A0.0 // Двигатель в движении

UN A0.3 // Нет переключателя ротора 3

UN A0.4 // Нет переключателя ротора 4

ULD

= A0.2 // Переключатель ротора 2

// ЗАПУСК ТАЙМЕРА T39

LD A0.0 // Двигатель в движении

U A0.2 // Переключатель ротора 2

UN A0.3 // Нет переключателя ротора 3

UN A0.4 // Нет переключателя ротора 4

TON T39,20 // Запуск T 39 с 2 сек

ВКЛЮЧЕНИЕ ПЕРЕКЛЮЧАТЕЛЯ РОТОРА 3

LD T39 // T39 завершил работу

O A0.3 // Самоподхват переключателя ротора 3

LD A0.0 // Двигатель в движении

UN A0.4 // Нет переключателя ротора 4

ULD

= A0.3 // Переключатель ротора 3

 

ЗАПУСК ТАЙМЕРА T40

LD A0.0 // Двигатель в движении

U A0.3 // Переключатель ротора 3

UN A0.4 // Нет переключателя ротора 4

TON T40,20 // Запуск T 40 с 2 сек

 

ВКЛЮЧЕНИЕ ПЕРЕКЛЮЧАТЕЛЯ РОТОРА 4

LD T40 // T40 завершил работу

O A0.4 // Самоподхват переключателя ротора 4

LD A0.0 // Двигатель в движении

ULD

= A0.4 // Переключатель ротора 4

MEND // Конец

 

    Запуск звезда-треугольник Step7

    Краткое описание

    Данный пример управляет запуском звезда-треугольник асинхронного двигателя. Двигатель запускается после нажатия кнопки ВКЛ на входе E0.0 в режиме звезды. По прошествии установленного времени 5сек двигатель переключается в режим треугольник.

    Если нажата кнопка ВЫКЛ или сработал автомат защиты двигателя, находящиеся на входах E0.1 и E0.2, двигатель выключается. Если одновременно нажаты кнопки ВЫКЛ и ВКЛ, то двигатель остается выключенным.

    Схема включения

    Структура программы

    Описание программы

    В начале цикла программа проверяет, должен ли быть установлен вспомогательный меркер M10.0 для блокировки. Это будет сделано, если Кнопки ВЫКЛ (E0.1) и ВКЛ (E0.0) нажаты одновременно. Блокировка будет снята только, если обе кнопки снова находятся в исходном состоянии. Блокировка служит для защиты от неверных условий.

    Для процесса включения имеется вспомогательный меркер M11.0. Он будет установлен при включении, т.е. если кнопка на входе E0.0 замкнута и переключатель сети еще не сработал. Он будет также установлен, если двигатель находится в режиме звезды, т.е. переключатель сети (A0.0) и переключатель звезды (A0.1) активны. Установка вспомогательного меркера M11.0 происходит впрочем только тогда, если не разомкнуты автомат защиты двигателя (E0.2) или кнопка ВЫКЛ (E0.1), а переключатель треугольника (A0.2) неактивен.

    Выход A0.1 переключателя звезды будет установлен, если установлен вспомогательный меркер запуска M11.0, отсутствует блокировка (M10.0) и время переключения (5 сек таймера T37) еще не закончилось.

    Время переключения запускается в момент установки вспомогательного меркера запуска M11.0, в случае если отсутствует блокировка. Временной базис таймера T37 — 100 мсек, т.е. при загрузке значения 50 время переключения составит 5 сек.

    Выход A0.0 переключателя сети устанавливается, если или кнопка ВКЛ на E0.0, выход A0.1 переключателя звезды или переключатель сети уже активны и нет команды ВЫКЛ от кнопки на E0.1 или сработала защита двигателя на E0.2 и отсутствует блокировка.

    Переключатель треугольника, т.е. выход A0.2, устанавливается при активном переключателе сети и уже неактивном переключателе звезды.

    Размер программы составляет 40 слов.

    Листинг

    Основная программа

    // TITEL = ЗАПУСК ЗВЕЗДА-ТРЕУГОЛЬНИК БЕЗ ОТВЕТНОГО СООБЩЕНИЯ

    // E0.0 Кнопка вкл.

    // E0.1 Кнопка выкл. Нормально замкнута

    // E0.2 Защита двигателя Нормально замкнута

    // A0.0 Переключатель сети

    // A0.1 Переключатель звезды

    // A0.2 Переключатель треугольника

    // T37 Таймер переключения 5 сек

    // БЛОКИРОВКА

    LDN E0.1 // Кнопка Выкл нажата

    U E0.0 // Кнопка Вкл нажата

    S M10.0 ,1 // Вспомогательный меркер для блокировки

    LD E0.1 // Кнопка Выкл не нажата

    UN E0.0 // Кнопка Вкл не нажата

    R M10.0 ,1 // Блокировка снята

     

    // ВКЛЮЧЕНИЕ

    LD E0.0 // Кнопка Вкл нажата

    UN A0.0 // Нет переключателя сети

    LD A0.0 // Переключатель сети

    U A0.1 // Переключатель звезды

    OLD

    LD E0.2 // Защита двигателя OK

    U E0.1 // Кнопка ВЫКЛ не нажата

    UN A0.2 // Нет переключателя треугольника

    ULD

    = M11.0 // Вспомогательный меркер

     

    // ВКЛЮЧЕНИЕ ПЕРЕКЛЮЧАТЕЛЯ ЗВЕЗДЫ

    LD M11.0 // Вспомогательный меркер

    UN M10.0 // Нет блокировки

    UN T37 // Время переключения не закончилось

    = A0.1 // Переключатель звезды

     

    // ЗАПУСК ТАЙМЕРА ПЕРЕКЛЮЧЕНИЯ

    LDN M10.0 // Нет блокировки

    U M11.0 // Вспомогательный меркер

    TON T37,50 // Запуск таймера переключения (5 сек)

     

    // ВКЛЮЧЕНИЕ ПЕРЕКЛЮЧАТЕЛЯ СЕТИ

    LD E0.1 // Кнопка ВЫКЛ не нажата

    U E0.2 // Защита двигателя OK

    UN M10.0 // Нет блокировки

    LD E0.0 // Кнопка Вкл нажата

    U A0.1 // Переключатель звезды

    O A0.0 // Переключатель сети

    ULD

    = A0.0 // Переключатель сети

     

    // ВКЛЮЧЕНИЕ ПЕРЕКЛЮЧАТЕЛЯ ТРЕУГОЛЬНИКА

    LD A0.0 // Переключатель сети

    UN A0.1 // Переключатель звезды

    = A0.2 // Переключатель треугольника

    MEND // Конец основной программы

     

     

    P.S. Кадастровый паспорт земельного участка — это ничто иное, как выписка  из государственного кадастра недвижимости, которая содержит все  необходимые сведения об объекте недвижимости, требующиеся для  государственной регистрации прав объекта недвижимости.

     

      Реверсивный переключатель для полюсно-переключаемых асинхронных двигателей с выбором направления вращения (часть 1)

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

       

      Схема включения

      Описание программы

      Данная программа служит для управления асинхронным двигателем с двумя раздельными обмотками для различных оборотов и двумя возможными направлениями движения. Она является дополнением к контакторной схеме из примера Nо. 10. В этой программе можно дополнительно выбирать между меньшим и большим числом оборотов для каждого направления вращения.

      Включение двигателя производится кнопками на входах E0.0 для включения медленного вращения вправо, E0.1 для включения быстрого вращения вправо, E0.2 для включения медленного вращения влево и E0.3 для включения быстрого вращения влево. После включения возможно в любой момент времени произвести переключение между быстрым и медленным вращением в любом направлении. При переключении направления вращения необходимо сначала нажать кнопку ВЫКЛ. Двигателю необходимо примерно 5 сек для торможения и запуска в противоположном направлении. Время ожидания индицируется миганием лампочки на выходе A0.5. Переключатель на E0.4 служит для выключения двигателя. На вход E0.5 подключен автомат защиты двигателя, который размыкается при перегрузке двигателя и производит отключение двигателя. При отключенном двигателе горит сигнальная лампа на выходе A0.4.

      В начале цикла програмы вызывается подпрограмма ‘SBR 1’, чьей задачей является оценка сигналов на входах. Для того чтобы исключить ошибку сначала проверяется, не нажато ли два или более переключателя одновременно или закончено ли время ожидания при переключении. В этих случаях меркер блокировки M1.0 устанавливается в ‘1’, исключая тем самым деблокировку автомата защиты двигателя. Блокировка позволяет избежать неконтролируемого движения двигателя или движения в неверном направлении. Блокировка будет снята, т.е. M1.0 установится в логический ‘0’, только если все кнопки снова находятся в ненажатом положении или окончено время ожидания.

      Деблокировка двигателя для режима работы производится только если ВЫКЛючатель (нормально замкнутый) на E0.4 не нажат, автомат защиты двигателя (нормально замкнутый) на E0.5, контролирующий перегрузку двигателя, не разомкнут и двигатель не вращается в противоположном направлении (бит состояния противоположного направления не установлен). Деблокировка снимается также, если подана команда на изменение числа оборотов. Тем самым гарантируется, что два переключателя, для быстрого и медленного движения в одном направлении, не смогут быть активированы одновременно. Например, выход A0.2, который отвечает за медленное вращение влево, будет сброшен, если нажатием кнопки на E0.3 подана команда быстрого вращения влево.

      Самоподхват включенного режима работы, т.е. установка соответствующих битов состояния A0.0, A0.1 A0.2 или A0.3, возможен, если произошла деблокировка желаемого режима работы и не активна общая блокировка. Определение фронта в конце подпрограммы служит для запуска времени ожидания после выключния двигателя, с тем чтобы двигатель имел время на торможение.

      При выходе из подпрограммы биты состояния копируются на выходы с A0.0 по A0.3. Эти выходы управляют автоматами двигателя, в то время как выходы A0.4 и A0.5 служат для индикации состояния ‘ВЫКЛ’ или ‘Идет время ожидания’.

      Размер программы составляет 125 слов.

      Листинг

      Основная программа

       

      // TITEL = Полюсно-переключаемый асинхронный двигатель с двумя направлениями вращения

      //************ ВХОДЫ ****************************

      // E0.0 Медленное вращение вправо

      // E0.1 Быстрое вращение вправо

      // E0.2 Медленное вращение влево

      // E0.3 Быстрое вращение влево

      // E0.4 Кнопка ВЫКЛ (нормально замкнутый)

      // E0.5 Автомат защиты двигателя (нормально замкнутый)

      //**************** ВЫХОДЫ ***********************

      // A0.0 Переключатель медленного вращения вправо

      // A0.1 Переключатель быстрого вращения вправо

      // A0.2 Переключатель медленного вращения влево

      // A0.3 Переключатель быстрого вращения влево

      // A0.4 Сигнальная лампа ВЫКЛ

      // A0.5 Сигнальная лампа Время ожидания

       

       

        S7-200 Примеры. Реверсивный переключатель для асинхронного двигателя

        Краткое описание

        Данный пример программы служит для управления асинхронным двигателем с двумя направлениями вращения.

        Двигатель может быть запущен на движение влево нажатием кнопки на входе E0.0 или вправо нажатием кнопки на E0.1, при условии, что защитный выключатель на входе E0.3 и основной выключатель на E0.2 не нажаты. Переключить направление вращение можно только после нажатия основного выключателя и окончания времени ожидания 5 с, при этом может происходить торможение и запуск двигателя. Если обе кнопки на включение нажаты одновременно, то двигатель будет блокирован.

         

        Описание программы включая листинг

        Сначала программа проверяет, должна ли быть включена блокировка установкой вспомогательного меркера M2.0. Это как раз тот случай когда обе кнопки, на входах E0.0 и E0.1 нажаты одновременно или если время ожидания еще не вышло. Только если обе кнопки снова находятся в отжатом состоянии и кончилось время ожидания, т.е вспомогательный меркер M2.3 сброшен, будет сброшен и блокирующий меркер M2.0.

        Разрешение на вращение влево осуществляется установкой соответствующего бита деблокировки M2.1, если ни защитный выключатель двигателя на входе E0.3 или кнопка ВЫКЛ на E0.2 (оба нормально закрытые) не нажаты, ни бит состояния для вращения вправо M1.1 не установлен. Бит состояния для вращения влево это M1.0. Деблокировка вращения вправо происходит аналогично.

        Двигатель включается, если нажата одна кнопка включения и ни бит блокировки ни бит состояния другого направления не установлены. Пуск двигателя происходит установкой соответствующего выхода и относящегося к нему бита состояния, обеспечивающего самоподхват. На выходе A0.0 срабатывает контактор левого вращения, а на выходе A0.1 правого. Кроме того, загорается сигнальная лампа режима. Сигнальная лампа движения влево подключена на A0.4, движения вправо на A0.3, а лампа состояния ВЫКЛ на A0.2.

        Если двигатель выключается, то по положительному фронту ‘ED’ устанавливается вспомогательный меркер M2.3 (процесс выключения). Если последний установлен, то запускается таймер ожидания для повторного пуска со временем работы 5 с (500*10 мс). По завершении этого времени меркер M2.3 процесса выключения сбрасывается. Во время работы таймера ожидания на выходе A0.5 мигает сигнальная лампа. В случае, если бит состояния не установлен, то на выходе A0.2 горит сигнальная лампа состояния ‘ВЫКЛ’.

        Размер программы составляет 61 слово.

         

        // TITEL = Контакторное переключение

        // Блокировка

        LD E0.1 // Команда вправо

        U E0.0 // и команда влево

        O M2.3 // или время ожидания не кончилось

        S M2.0,1 // устанавливается блокировка

        LDN E0.0 // Нет команды влево

        UN E0.1 // нет команды вправо

        UN M2.3 // время ожидания кончилось

        R M2.0, 1 // блокировка сбрасывается

        Деблокировка движения влево

        LD E0.2 // Нет команды выключения

        U E0.3 // не сработал защитный выключатель

        UN M1.1 // бит состояния движения вправо не установлен

        = M2.1

        // Деблокировка движения вправо

        LD E0.2 // Нет команды выключения

        U E0.3 // не сработал защитный выключатель

        UN M1.0 // бит состояния движения влево не установлен

        = M2.2

        // Движение влево

        LD E0.0 // Команда влево

        O M1.0 // или состояние левого движения

        UN M2.0 // и нет блокировки

        U M2.1 // разрешение на движение влево

        = M1.0 // бит состояния движения влево

        = A0.0 // выход контактора

        = A0.4 // выход сигнальной лампы движения влево

        // Движение вправо

        LD E0.1 // Команда вправо

        O M1.1 // или состояние правого движения

        UN M2.0 // и нет блокировки

        U M2.2 // разрешение на движение вправо

        = M1.1 // бит состояния движения вправо

        = A0.1 // выход контактора

        = A0.3 // выход сигнальной лампы движения вправо

        // Определение фронта процесса выключения

        LDN M1.0 // бит состояния движения влево

        UN M1.1 // бит состояния движения вправо

        = A0.2 // выход сигнальной лампы состояния ВЫКЛ

         

         

        LD A0.2 // При выключении

        ED

        S M2.3,1 // Устанавливается вспомогательный меркер для

        // процесса выключения

        LD M2.3

        MOVW 500,VW20 // Загрузка времени ожидания для перезапуска

        TON T33,VW20 // Пуск таймера ожидания для перезапуска

        U T33

        R M2.3, 1 // Сброс вспомогательного меркера после времени ожидания

        // Индикация состояния ВЫКЛ, Время ожидания

        LD M2.3 // Вспомогательный меркер времени ожидания

        // процесса выключения

        U SM0.5 // Мигание 1 с

        = A0.5 // Выход сигнальная лампа время ожидания

         

        MEND // Конец основной программы

        Различные возможности установки битов или байтов в S-200

        Данная программа описывает различные возможности занесения в области памяти определенных значений или очистки определенных областей памяти.

        В этом примере применения рассмотрены:

        Рисунок  SEQ Рисунок * ARABIC 1 Структура программы

        Описание программы вкл. листинг

        Этот пример программы описывает различные возможности занесения определенных значений в заданные биты и байты или очистки определенных областей памяти.

        Используются команды:

        FILL Устанавливает один или несколько битов

        FOR… NEXT Цикл FOR…NEXT R Сбрасывает один или несколько битов

        Размер программы составляет 55 слов.

        Основная программа

        // TITEL=FORNEXT

        // Основная программа содержит вызовы подпрограмм 0, 1 и 2.

        LD SM0.0 // Всегда в единице

        CALL 0 // Вызов подпрограммы 0

        // (FILL)

        CALL 1 // Вызов подпрограммы 1

        // (FOR…NEXT)

        CALL 2 // Вызов подпрограммы 2

        // (Reset)

        MEND // Конец основной программы

        Подпрограммы

        // Подпрограмма 0 копирует значение слова VW200 в слово VW204 и в 6 последующих слов памяти (до VW216), если установлен вход E0.0.

        SBR 0 // Подпрограмма 0

        LD E0.0 // Чтение входа E0.0

        MOVW 16#ABC3,VW200 Запись 16-рич.значения

        // ABC3 в VW200

        FILL VW200,VW204,7 Копирование значения слова VW200 в слово VW204 и шесть последующих слов памяти (до VW216)

        RET // Конец подпрограммы 0

        Подпрограмма 1 копирует следующие друг за другом числа в переменную область памяти, если установлен вход E0.1. Число выполняемых циклов определяется номерами первого (в VW10) и последнего цикла (в VW0). Текущее значение выполненных циклов находится в слове памяти VW20. Первое число, с которого надо начинать счет, загружается в аккумулятор AC0. Первый адрес, под которым надо запоминать значение,заносится в аккумулятор AC1, действующий в качестве указателя. Затем начинается выполнение циклов. К начальному значению AC0 за один цикл прибавляется 4, указатель AC1 увеличивается на следующее слово памяти, пока не будет обработан последний цикл.

        SBR 1 // Подпрограмма 1

        LD E0.1 // Чтение входа E0.1

        MOVW 10,VW0 // Номер последнего цикла в VW0

        MOVW 0,VW10// Номер первого цикла в VW10

        MOVW 0,VW20// Текущий номер цикла в VW20 (счетчик)

        MOVW 50,AC0// Начальное значение счета в аккумулятор 0

        MOVD &VB100,AC1// аккумулятор 1 (указатель памяти) указывает на байт памяти VB100

        FOR VW20,VW10,VW0 / Начало цикла

        MOVW AC0,*AC1// Сохранить текущее значение счетчика по текущ. адресам памяти

        INCD AC1 // Инкрементировать указатель памяти на 1 байт

        INCD AC1 // Инкрементировать указатель памяти на 1 байт

        +I 4,AC0 // Прибавить 4 к текущ. значению счетчика

        NEXT // Конец цикла

        RET // Конец подпрограммы 1

        // Подпрограмма 2 сбрасывает биты памяти с V100.0 до V121.7 и с V204.0 до 217.7, если установлен вход E0.2.

        SBR 2 // Подпрограмма 2

        LD E0.2 // Установка входа E0.2

        R V100.0,176// Сброс битов с V100.0 до 121.7

        R V204.0,112// Сброс битов с V204.0 до 217.7

        RET // Конец подпрограммы 2

        S7-200 Примеры. Обработка фронтов входных сигналов

        Этот пример показывает, как можно определить смену сигнала с помощью функции определения фронта S7-200. При этом различаются положительные и отрицательные фронты, причем под положительным фронтом понимается смена сигнала с ‘0’ на ‘1’, а под отрицательным – смена сигнала с ‘1’ на ‘0’. Логическая ‘1’ означает, что на вход подано напряжение, а под ‘0’ понимается отсутствие напряжения на входе.

        Программа запоминает число положительных фронтов на входе E0.0 и отрицательных на входе E0.1 в слове меркеров. Можно дополнить программу опросом запомненных значений, проверяя при этом все ли фронты опознаны.

        Структура программы

         

         

        Описание программы вкл. листинг

        Программа опрашивает вход E0.0 и и проверяет затем с помощью команды EU (Edge Up), произошла ли положительная смена сигнала, то есть смена с ‘0’ на ‘1’. Если да, то значение меркерного слова MW1 повышается на 1. Отрицательный фронт входа E0.1 будет сосчитан посредством команды ED (Edge Down) iв меркерном слове MW3. Если число сосчитанных фронтов достигает 127, то соответствующий меркер сбрасывается в ноль. Не забывайте, что младший байт слова меркеров MW1 это байт M2, а старший байт это байт M1. В слове меркеров MW3 соответственн младший бит M4, а старший M3.

        Размер программы составляет 27 слов.

         

        Основная программа

        LD SM0.1 // Только в первом цикле в единицу

        MOVD 0, MD1// Установка двойного слова MD1 в ноль

        LD E0.0 // Положительный фронт

        EU

        +I 1,MW1// При смене фронта: слово меркеров MW1 увеличивается на 1

        LDW= 127,MW1// После 127 смен фронта (=свободно задаваемое значение)

        MOVW 0,MW1// Слово меркеров MW1 сбрасывается в 0

        LD E0.1 // Отрицательный фронт

        ED

        +I 1,MW3// При смене фронта: слово меркеров MW3 увеличивается на 1

        LDW= 127,MW3// После 127 смен фронта (=свободно задаваемое значение)

        MOVW 0,MW3// Слово меркеров MW3 сбрасывается в 0

        MEND // Конец программы

         

         

        Управление часами реального времени SIMATIC S7-214

         

        Краткое описание

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

        • Байт 0: Столетие (00 — 99)
        • Байт 1: Месяц (1 — 12)
        • Байт 2: День (1 — 31)
        • Байт 3: Часы (00 — 24)
        • Байт 4: Минуты (00 — 59)
        • Byte 5: Секунды (00 — 59)
        • Byte 6: не занято
        • Byte 7: День недели (1-7 = Вс-Сб)

        Данные хранятся в коде BCD (при чтении) или должны заноситься в коде BCD (при записи). При нажатии кнопки на E0.0 в часы реального времени будет занесена предустановленная дата. Кнопка на E0.1 служит для индикации текущего значения секунд, которое копируется на выходной байт AB0. Кодирование при этом производится на выбор в формате BCD (E0.1 = ‘1’) или двоичном (E0.1 = ‘0’).

        Описание программы вкл. листинг

        При нажатии кнопки на входе E0.0 будет вызвана подпрограмма 0. Эта подпрограмма заполняет 8 байтов VB100 до VB107 соответствующими значениями для даты и времени. Заключительная команда ‘TODW’ сохраняет установки для часов реального времени. Часы реального времени считываются в каждом цикле. Эти данные заносятся в 8 байтов с VB400 по VB407 в формате BCD (4 бита представляют цифру от 0 до 9). Если установлен вход E0.1, то это значение копируется непосредственно на выходной байт.

        Если вход E0.1 не установлен, то слово данных VW404 копируется в слово VW204, а затем старший байт VB204, который содержит значение минут, стирается. Это мероприятие необходимо, так как конвертирование значения секунд из формата BCD в двоичный может быть произведено только пословно. Теперь двоичнокодированное значение секунд передается на выходной байт AB0.

        Размер программы составляет 46 слов.

        Основная программа

        // TITEL = Часы реального времени

        LD E0.0 // Кнопка записи реального времени

        EU

        CALL 0 // Вызов подпрограммы 0

        LD SM0.0 // Начало стека

        TODR VB400 // Чтение данных реального времени и запись в 8- байтовый буфер

        LD E0.1 //Кнопка индикации секунд в формате BCD

        MOVB VB405, AB0 // Копирование текущего значения секунд в выходной байт

        LDN E0.1

        MOVW VW404, VW204 //Копирование слова

        MOVB 0, VB204 //Стирание старш. байта (минуты)

        BCDI VW204 // Преобразование BCD => Двоич.

        MOVB VB205, AB0 // Копирование текущего значения секунд в выходной байт

        MEND

         

        Подпрограмма

        SBR 0 // Установка даты и времени

        LD SM0.0

        MOVB 16#95, VB100 // год: 95

        MOVB 16#02, VB101 // месяц: февраль

        MOVB 16#14, VB102 // день: 14

        MOVB 16#12, VB103 // часы: 12

        MOVB 16#0, VB104 // минуты: 00

        MOVB 16#0, VB105 // секунды: 00

        MOVB 16#0, VB106 // не занято

        MOVB 16#3, VB107 // день недели: вторник

        TODW VB100 // записать время

        RET // Конец подпрограммы

         

         

         

        Простые применения свободнопрограммируемого интерфейса S-200

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

        Пользователь должен помнить о следующих соглашениях:

        • Четность
        • Число битов на символ
        • Скорость

        В режиме передачи именуемом режим свободного порта данные могут как передаваться так и приниматься. В данном примере описана передача данных с имитацией программы печати.

        Для того чтобы пояснить прием данных, добавлена программа считывателя штрих-кода.

        Рисунок 1 Схема включения

         

        Рисунок 2 Структура программы принтер

         

         

        Рисунок 3 Структура программы Штрих-код

        Описание программы, включая листинг: принтер

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

        Программа составляет 13 слов.

         

        Основная программа

        // TITEL = Режим свободного порта

        // Для этого приложения важно, корректно установить режим свободного порта.

        // В байт специальных меркеров SMB30 заносится необходимая информация.

        // Введенные значения можно определить с помощью руководства.

        // Команда передачи XMT содержит начальный адрес передаваемой информации.

        // Начальный адрес в результате содержит информацию о длине сообщения, указанной в байтах.

        LD SM0.1 //Меркер первого цикла

        MOVB +9,SMB30 // Свободный порт,

        //9600 Бод,без паритета

        // 8 бит/символ

        MOVB +1,VB100 // Длина сообщения: 1

        // ASCII символ

        MOVB 16#41,VB101 // Длина символа “A”

        // 1 байт (A => 41 hex)

        LD E0.1 // Начало передачи

        // вход E0.1

        EU // Определение положит. фронта

        XMT VB100,0 // Передача на интерфейс связи

        MEND // Конец основной программы

         

         

        Описание программы вкл.листинг: Считыватель штрих-кода

        В данной программе описан прием данных. Штрих-код считыватель посылает при этом считанные данные через свободнопрограммируемый интерфейс на SIMATIC S7-200. Чтобы упростить реализацию данного примера, в качестве передатчика вместо считывателя штрих- кода можно использовать программу-терминал под Windows.

        Размер программы составляет 15 слов.

         

        Основная программа

        // TITEL = Режим свободного порта

        // Для этого приложения важно, корректно установить режим свободного порта.

        // В байт специальных меркеров SMB30 заносится необходимая информация.

        // Введенные значения можно определить с помощью руководства.

        // Принятые данные реализуются через прерывание. Если данные поступят через

        // свободнопрограммируемый интерффейс, то выполняется т.н. прерывание для приема, которое в данном приложении носит обозначение INT 0.

        LD SM0.1 // Меркер первого цикла

        MOVB +9,SMB30 // Свободный порт,9600 Бод,без паритета, 8 бит/символ

        ATCH 0, 8 //Назначен. прерывания для приема 0

        ENI // Деблокировка подпрограммы прерываний

        MEND // Конец осн.программы

         

         

        Подпрограмма прерывания

        // В подпрограмме прерывания 0 принятые символы, сохраняемые в байте специальных меркеров SMB2, сравниваются с большой буквой “A”.

        //в случае совпадения устанавливается выходной бит A0.1.

        INT 0 // Подпрограмма прерывания для приема

        LDB= SMB2,16#41 // Сравнение принятого символа в SMB2 с “A”

        // Если символ “A”

        S A0.1,1 // получен, то устанавливается A0.1

        RETI // Возврат в основную программу

        Для того чтобы преобразовать TOOLITE2 AWL в S7-Micro/DOS AWL

        • Установите ‘K’ перед каждым числом, не являющимся 16-ричной константой (напр. 4 →K4)
        • Замените ‘16#’ → ‘KH’ для всех 16-ричных констант (напр. 16#FF → KHFF)
        • Поставьте запятые для смены полей. Используйте клавиши перемещения или клавишу TAB для перехода от поля к полю.
        • Для преобразования программы S7-Micro/DOS AWL в KOP-форму нужно начинать каждый сегмент словом ‘NETWORK’ и номером. Каждый сегмент в этом примере имеет свой номер на диаграмме KOP. Используйте NWENFG в меню редактора для ввода нового сегмента. Команды MEND, RET, RETI, LBL, SBR и INT требуют отдельных сегментов.
        • Комментарии к строкам, начинающиеся с «//» в S7-Micro/DOS не возможны, зато возможны комментарии к сегментам.

         

        Управление Быстрым счетчиком S-200

        В данном примере применения поясняется функция быстрого счетчика в SIMATIC S7-200. Быстрый счетчик может использоваться в различных конфигурациях, для того чтобы обрабатывать входные сигналы от датчиков, как напр. датчик перемещения.

        Импульсные выходы будут использоваться в данном, для того чтобы создать быстрые сигналы. При этом появляется возможность генерировать последовательность импульсов (PTO), а также модулировать ширину импульсов (ШИМ), для того чтобы напр., управлять серводвигателем. Так как в данном применении используется последовательность импульсов, то можно использовать только CPU 214 DC/DC/DC.

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

         

        Структура программы

         

        В этом примере описывается функция быстрого счетчика S7-200 DC/DC/DC. Он считает быстрее чем ПЛК может обработать цикл. Используемый счетчик это 2 килогерцовый программный счетчик, который встроен в S7-212. S7-214 имеет дополнительно два аппаратных счетчика по 7 КГц. Все счетчики вместе требуют 10 байт в памяти данных, для управления, хранения значений, счета и чтения текущего состояния.

        Размер программы составляет 96 слов.

        Основная программа

        Основная программа сбрасывает выход A0.0, так ка он необходим для  функции импульсов. Кроме того инициализируется быстрый счетчик HSC0 и вызываются подпрограммы 0 и 1. При этом HSC0 запускается со следующими свойствами: возможна актуализация значения, прямой счет. Программа завершается, если выполняется число циклов указанное в SBR 0 (SMD72).

         

         

        LD SM0.1 // Первый цикл

        R A0.0,1 // Сброс выхода // A0.0 для импульсов

        MOVB 16#F8,SMB37 // Загрузка контрольных битов для быстрого счетчика HSC0 (деблокировка HSC0, обновление текущих значений, обновление сбросов, обновление направления счета и числа циклов). Команда HSC использует эти контрольные биты, для конфигурирования быстрого счетчика.

        MOVD 0,SMD38 // Начальное значение быстрого счетчика HSC0

        MOVD 1000,SMD42 // Первое значение останова от HSC0

        HDEF 0,0 // Определение быстрого счетчика 0 в режиме 0

        CALL 0 // Вызов подпрограммы 0

        CALL 1 // Вызов подпрограммы 1

        MEND // Конец основной программы

         

         

        Подпрограммы

        // Подпрограмма 0 служит для инициализации и деблокировки выдачи импульсов. В байте специальных меркеров SMB67 определяется вывод: последовательность импульсов, временой базис, обновление значений и деблокировка. Слово SMW68 содержит время цикла как мультипликатор временного базиса. В двойном слове специальных меркеров задается число генерируемых циклов.

         

        SBR 0 // Подпрграмма 0

        LD SM0.0 // Всегда в единице

        MOVB 16#8D,SMB67 // Выдача импульсов:1мс,

        // PTO, деблокировка, обновление

        MOVW 1,SMW68// Длина цикла в мс

        MOVD 30000, SMD72 // Число гененируемых циклов

        PLS 0 // Разрешение выдачи импульсов на выходA0.0

        RET // Конец подпрограммы 0

         

        Подпрограмма 1 запускает быстрый счетчик HSC0 и назначает  подпрограмму 0 событию прерывания 12 (HSC0 текущее значение = сброс). Это событие возникает, если число сосчитанных импульсов (текущее значение) достигает текущего значения останова (сброс). Происходит деблокировка прерывания.

         

        SBR 1 // Подпрограмма 1

        LD SM0.0 // Всегда в единице

        ATCH 0,12 // Назначение INT 0 событию прерывания 12 (HSC0 текущее значение = сброс)

        ENI // Деблокировка прерывания

        HSC 0 // Пуск быстрого счетчика 0

        RET // Конец подпрограммы 1

         

        Подпрограммы прерываний

        //Подпрограмма прерывания 0 будет вызвана, если достигнуто первое значение сброса (1000) быстрого счетчика 0. Выход A0.1 устанавливается и задается новое значение сброса (1500) для быстрого счетчика.

        // Подпрограмма прерывания 1 назначается событию прерывания 12 вместо подпрограммы 0.

         

        INT 0 // Подпрограмма прерывания 0

        LD SM0.0 // Всегда в единице

        S A0.1,1 //Установка выхода A0.1

        MOVD 16#A0,SMB37 //Установка контрольных битов: только загрузка нового сброса

        MOVD 1500,SMD42// Следующее значение сброса HSC0

        ATCH 1,12 // Назначение INT 1событию прерывания 12 вместо INT 0

        HSC 0 // Загрузка нового сброса в HSC0

        RETI // Конец подпрограммы прерывания 0

         

        // Подпрограмма прерывания 1 вызывается, если достигнуто второе значение сброса (1500) быстрого счетчика 0. Выход A0.2 устанавливается, направление счета изменяется на обратное и определяется новое значение сброса (1000).

        // Подпрограмма прерывания 2 назначается событию прерывания 12 INT 1

        Подпрограмма прерывания 1

        LD SM0.0 // Всегда в единице

        S A0.2,1 //Установка выхода A0.2

        MOVB 16#B0,SMB37//Установка контрольных битов для загрузки нового сброса и обратного счета

        MOVD 1000,SMD42// Следующее значение сброса

        ATCH 2,12 // Назначение INT 2 событию прерывания 12 вместо INT 1

        HSC 0 // Загрузка нового сброса и нового направления в HSC0

        RETI // Конец подпрограммы прерывания 1

         

        Подпрограмма прерывания 2 вызывается, если достигнуто третье значение сброса (1000) быстрого счетчика 0. Выходы A0.1 и A0.2 сбрасываются, направление счета изменяется на прямое и текущее значение счетчика сбрасывается в ноль.

        Значение сброса остается неизменным. При этом подпрограмма прерывания 0 назначается событию прерывания 12, выполнение программы начинается заново. Программа завершается, если заданное в SBR 0 (SMD72) число циклов отработано.

         

        INT 2 // Подпрограмма прерывания 2

        LD SM0.0 // Всегда в единице

        R A0.1,2 // Сброс выходов A0.1 и A0.2

        MOVB 16#D8,SMB37//Установка контрольных битов, для загрузки нового текущего значения прямого счета

        MOVD 0,SMD38// Сброс текущего значения счетчика HSC0

        ATCH 0,12 // Назначение INT 0 событию прерывания 12

        HSC 0 // Новый пуск быстрого счетчика 0

        RETI // Конец подпрограммы прерывания 2

         

        Указания по преобразованию

        Для того чтобы преобразовать TOOLITE2 AWL в S7-Micro/DOS AWL:

        • Установите ‘K’ перед каждым числом, не являющимся 16-ричной константой (напр. 4 → K4)
        • Замените ‘16#’ → ‘KH’ для всех 16-ричных констант (напр. 16#FF → KHFF)
        • Поставьте запятые для смены полей. Используйте клавиши перемещения или клавишу TAB для перехода от поля к полю.
        • Для преобразования программы S7-Micro/DOS AWL в KOP-форму нужно начинать каждый сегмент словом ‘NETWORK’ и номером. Каждый сегмент в этом примере имеет свой номер на диаграмме KOP. Используйте NWENFG в меню редактора для ввода нового сегмента. Команды MEND, RET, RETI, LBL, SBR и INT требуют отдельных сегментов.
        • Комментарии к строкам начинающиеся с «//» в S7-Micro/DOS не возможны, зато возможны комментарии к сегментам.

        Работа с аналоговыми потенциометрами S7-200

        Этот пример поясняет применение аналоговых потенциометров SIMATIC CPU 214. Положение аналоговых потенциометров преобразуется в цифровое значение между 0 и 255 и заносится в два байта специальных, причем SMB28 содержит значения потенциометра 1, а SMB29 значение потенциометра 2.

        Метод 1:

        В качестве первого варианта рассмотрим применение аналогового потенциометра 0 для точной установки таймера. Грубая или предварительная установка (здесь 200мс) производится в программе. Потенциометр может быть при этом использован для дальнейшей установки нужного значения до ,примерно, 1,48 секунды. После каждого цикла таймера будут выполнятся операции подпрограммы 1: Значение потенциометра 0, содержащееся в SMB28, будет загружено в AC1, разделено пополам и прибавлено к 200мс-предустановке. В основной программе число циклов таймера в AC2 будет увеличено на 1 и индицировано на выходном байте AB0.

        Метод 2:

        Второй метод позволяет сложить и усреднить в AC3 значения потенциометра 1 в 100 следующих друг за другом циклах программы. В первом цикле запоминаются нижнее граничное в VW14 и верхнее граничное в VW16 значения. Если усредненное значение ниже нижней границы или выше верхней границы, то это значение заносится в VW12 и копируется в VW14, VW16 и VW18. Новые верхняя и нижняя границы задаются прибавлением или вычитанием 3мс к усредненному значению. Среднее значение потенциометра, сохраненное в VW18, будет передано в основную программу в таймер T34. Здесь считаются циклы таймера и индицируются затем на выходном байте AB1. Этот метод создает путем фильтрации значений потенциометра относительно постоянную установку таймера от 0 до 2,55 секунд.

        Метод 3:

        Метод 3 это прямая загрузка значения потенциометра в качестве предустановки для таймера T35. Здесь число циклов таймера будет индицироваться на выходном байте AB0. Установка таймера может быть изменена в любом цикле.

        Размер программы составляет 112 байт.

        Подпрограммы

        // Подпрограмма SBR 1:

        // Уменьшение значения потенциометра 0 включая сложение с предустановленным значением.

        SBR 1

        LD T33 // После выполнения цикла таймера

        MOVW 0, AC1 // аккумулятор AC1 сбрасывается

        MOVB SMB28, AC1 // и значение потенциометра 0 копируется в AC1

        MOVW 2, VW60

        DIV VW60, AC1 // Принятое значение потенциометра делится пополам

        +I 20, AC1 // и прибавляется смещение 200 мс

        MOVW AC1, VW0 // Значение AC1 копируется в VW0

        RET // Возврат в основную программу

        // Подпрограмма SBR 2:

        // Определение среднего значения потенциометра 1 по 100 циклам программы

        SBR 2

        LD SM0.0 // В каждом цикле

        INCW VW10 // счетчик циклов увеличивается на 1

        MOVB SMB29, AC0 // Значение потенциометра 1 заносится в AC0

        +I AC0, AC3 // Прибавляется к общему значению в AC3

        LDW= VW10,100 // После 100 циклов

        MOVW 100, VW50

        DIV VW50, AC3 // Значение для образования среднего значения делится на 100

        MOVW AC3, VW12 // Среднее значение заносится в VW12

        MOVW 0, VW10 // Сброс счетчика циклов

        MOVD 0, AC3 // Сброс памяти общего значения

        = M0.0

        LD M0.0

        LDW<= VW12, VW14 // и новое среднее значение вне поля допуска

        OW>= VW12, VW16

        ALD

        FILL VW12, VW14, 3 // Новое среднее значение копируется в VW14, VW16 и VW18

        -I 3, VW14 // Установка новой нижней границы (Среднее значение — 3мс)

        +I 3, VW16 // Установка новой верхней границы (Среднее значение + 3мс)

        RET // Возврат в основную программу

        Для того чтобы преобразовать TOOLITE2 AWL в S7-Micro/DOS AWL:

        • Установите ‘K’ перед каждым числом, не являющимся 16-ричной константой (напр. 4 → K4)

        • Замените ‘16#’ → ‘KH’ для всех 16-ричных констант (напр. 16#FF → KHFF)

        • Поставьте запятые для смены полей. Используйте клавиши перемещения или клавишу TAB для перехода от поля к полю.

        • Для преобразования программы S7-Micro/DOS AWL в KOP-форму нужно начинать каждый сегмент словом ‘NETWORK’ и номером. Каждый сегмент в этом примере имеет свой номер на диаграмме KOP. Используйте NWENFG в меню редактора для ввода нового сегмента. Команды MEND, RET, RETI, LBL, SBR и INT требуют отдельных сегментов.