Tag Archives: s-200

Структура проекта S-200

Проект создает пять собственных компонентов:

Рис. 1 Компоненты проекта S7-200

Загрузка компонентов проекта в CPU и выгрузка из CPU

Для загрузки проекта в CPU S7–200 нужно:

  • Выбрать команду меню File >Download.
  • Щелкнуть на элементе проекта, который необходимо загрузить.
  • Щелкнуть на кнопке Download

Установка режима работы CPU S7–200

S7–200 имеет два режима работы: STOP и RUN. В состоянии STOP S7–200 не выполняет программы, и можно загрузить в CPU программу или конфигурацию CPU. В режиме RUN S7–200 исполняет программу. Для изменения режима работы S7–200 снабжен переключателем режимов. С помощью переключателя режимов можно установить режим работы вручную:

  • установка переключателя режимов в STOP прекращает исполнение программы;
  • установка переключателя режимов в RUN запускает исполнение программы;
  • установка переключателя режимов в режим TERM (терминал) не изменяет режима работы.

Если питание прерывается, когда переключатель режимов находится в положении STOP или TERM, S7–200 при восстановлении питания автоматически переходит в состояние STOP. Если питание прерывается, когда переключатель режимов находится в положении RUN, S7–200 при восстановлении питания переходит в режим RUN.

STEP 7-Micro/WIN в режиме online дает возможность изменить режим работы S7–200. Чтобы это программное обеспечение могло управлять режимом работы, нужно вручную перевести переключатель режимов работы на S7– 200 в положение TERM или RUN. Для изменения режима работы можно использовать команды меню PLC > STOP или PLC > RUN или соответствующие кнопки на панели инструментов.

Для перевода S7–200 в состояние STOP можно использовать в программе команду STOP. Это позволяет прекратить исполнение программы в зависимости от логики обработки.

Программный блок Программный блок содержит исполняемый код и комментарии. Исполняемый код состоит из основной программы (OB1) и некоторых подпрограмм или программ прерываний. Код компилируется и загружается в PLC. Комментарии не компилируются и не загружаются.

Блок данных DB. Блок данных содержит данные (начальные значения переменных, значения констант) и комментарии. Данные компилируются и загружаются в PLC. Комментарии не компилируются и не загружаются.

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

Таблица символов «Symbol Name». Таблица символов позволяет Вам использовать символическую адресацию. Символика часто делает программирование более простым и облегчают чтение программ. Скомпилированная программа, которая загружается в PLC преобразует все символы в абсолютные адреса. Информация таблицы символов не загружается в PLC.

Диаграмма состояний Status Chart. Информация диаграммы состояний не загружается в PLC. На диаграмме состояния можно ввести адреса программы для мониторинга и модификации. Величины таймеров или счетчиков могут быть отображены, как биты или слова. Если выбирается битовый формат, то отображается состояние выхода (ON или OFF). Если выбирается формат слова, то отображается текущая величина таймера или счетчика.

Использование таблицы символов для символической адресации переменных

Таблица символов используется для присвоения символических имён входам, выходам и адресам.

Символическое имя:

  • Максимум 23 символа
  • Большая, маленькая буква имеет смысл
  • Пробел заменяется знаком подчёркивания.
  • Повторяющиеся символьные имена подчёркиваются, не компилируются и не могут быть использованы в программе.

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

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

Для присвоения адресу символического имени необходимо:

1. Щелкнуть в навигационной панели на кнопке таблицы символов, чтобы вызвать таблицу.

2. Ввести символическое имя (например, Pump1Limit) в столбце «Symbol Name». Максимальная длина символического имени составляет 23 символа.

3. В столбце Address ввести адрес (например, I1.1).

Рис. 2 Таблица символов

Открыть таблицу символов можно с помощью щелчка правой кнопкой «мыши» на символе модуля. После этого во всплывающем окне выбирается пункт Edit Symbolic Names (Редактирование символьных имен). После этого открывается таблица символов с соответствующими адресами. Для программы создается только одна таблица символов, независимо от того, какой язык программирования выбран. Нельзя использовать одну и ту же строку более одного раза в качестве глобального символического имени ни в единственной таблице, ни в нескольких различных таблицах!

Использование таблицы состояний (Status Chart)

С помощью таблицы состояний (Status Chart) можно наблюдать и изменять переменные процесса, когда S7– 200 исполняет программу управления. Можно отслеживать состояние входов, выходов или переменных программы, отображая их текущие значения. В таблице состояний можно также принудительно задавать или изменять значения переменных процесса.

Для вызова таблицы состояний необходимо выбрать команду меню View > Component > Status Chart или щелкнуть на пиктограмме таблицы состояний на навигационной панели.

Рис. 3 Таблица состояний

Для создания таблицы состояний и контроля переменных:

1. Введите в поле адресов адреса желаемых величин.

2. В столбце Format выберите тип данных.

3. Для отображения состояния переменных процесса в своем S7–200 выберите команду меню Debug > Chart Status.

4. Если вы хотите опрашивать эти величины непрерывно или хотите однократно считать состояние, щелкните на соответствующем символе на панели инструментов.

В таблице состояний можно также принудительно устанавливать или изменять значения различных переменных процесса.В таблицу состояний можно вставлять дополнительные строки, выбрав команду меню Edit > Insert >Row.

Невозможно отобразить состояния констант, аккумуляторов и локальных переменных. Значения таймеров и счетчиков можно отображать в виде бита или слова. Если значение отображается в виде бита, то оно представляет состояние бита таймера или счетчика; если значение отображается в виде слова, то оно является значением таймера или счетчика.

 

Мой блог находят по следующим фразам

Запуск Micro/WIN

Рабочий стол Windows имеет иконку “STEP 7-Micro/WIN 32″ и пункт «STEP 7-Micro/WIN 32» в разделе SIMATIC стартового меню. Запустить эту программу, как и любое приложение Windows, можно двойным щелчком мышью на иконке или выбором пункта в стартовом меню.

Для открытия STEP 7-Micro/WIN дважды щелкните на символе STEP 7-Micro/WIN или выберите команду меню Start > SIMATIC > STEP 7 MicroWIN 32 V4.0 [Пуск > SIMATIC > STEP 7 MicroWIN 32 V4.0 (Рис.1)

Рис.1 Окно STEP 7-Micro/WIN

Элементы окна

Панель заголовка Панель заголовка содержит имя окна и кнопки управления окном (Рис.2). Строка меню Содержит все меню, доступные для активного окна.

Панель инструментов Содержит наиболее часто используемые команды меню в форме кнопок с изображениями.

Панель навигации Содержит иконки для активации функций программы.

Дерево команд Показывает все элементы проекта и все команды, доступные в активном редакторе программ (LAD, FBD или STL).

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

Строка состояния Показывает текущее состояние и другую информацию (Рис.2).

Рис.2 Элементы окна

Рабочая область для создания программы управления

Навигационная панель (Рис.3) предлагает группы символов для доступа к различным функциям программирования STEP 7-Micro/WIN.

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

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

Рис. 3 Рабочая область для создания программы управления

Мой блог находят по следующим фразам

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 не возможны, зато возможны комментарии к сегментам.

 

S7-200 Примеры управление широтно-импульсной модуляцией

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

CPU-214 S7-200 содержит функцию выдачи прямоугольных сигналов на выходы A0.0 и A0.1. При этом длительность периода и ширина импульса устанавливаются независимо друг от друга. Ширина импульса соответствует времени, в течение которого выходной сигнал за период имеет состояние „1“.

Данный пример описывает широтно-импульсную модуляцию (ШИМ), где на выход A0.0 выдается сигнал, ширина импульса которого увеличивается от периода к периоду на 0,5 с. Длительность периода составляет 5 с, а стартовая ширина импульса 0,5 с. Если будет достигнуто максимальное значение ширины импульса 4,5 с, то ширина импульса снова начинает уменьшаться на 0,5 с, пока значение не станет равно нулю. Этот процесс повторяется периодически.

Для проведения такой широтно-импульсной модуляции необходимо связать выход A0.0 со входом E0.0, также как массу напряжения питания с массой входов, для того чтобы имелась возможность управлять ШИМ из программы.

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

Байт специальных меркеров SMB67 служит для инициализации широтно-импульсной модуляции на выходе A0.0. Это инициализация содержит деблокировку ШИМ и установки, позволяющие изменять длительность периода и ширину импульса, а также выбрать временной базис (здесь в мс). В подпрограмме 0 будут установлены соответствующие контрольные байты. Команда ENI производит глобальную деблокировку всех прерываний. По команде PLS 0 операционная система запоминает установленные значения и инициализирует так называемый “PTO/ШИМ-генератор”, который будет производить ШИМ на выходе A0.0.

Длительность периода 5 с задается передачей значения 5000 в слово специальных меркеров SMW68. Начальная ширина импульса устанавливается на 0,5 с, путем записи значения 500 в слово специальных меркеров SMW70.

Данная инициализация производится в первом цикле, путем логического связывания вызова подпрограммы с битом специальных меркеров SM0.1 (First Scan Flag). Инициализация и установка ШИМ будет прооизводится повторно, после завершения процесса ШИМ, т.е. когда текущая ширина импульса станет равной 0.

Вспомогательный маркер M0.0 служит для установки, будет ли ширина импульса увеличиваться или уменьшаться. Во время инициализации он устанавливается, для того чтобы могло производиться инкрементирование. Выход A0.0 связан со входом E0.0, так что выходной сигнал появляется и на входе E0.0. После того как будет выдан первый импульс, событие ‘0’ (положительный фронт на E0.0) будет назначено подпрограмме прерывания 1 (INT1) с помощью команды ‘ATCH’. INT1 повышает текущее значение импульса на 0,5 с а затем команда ‘DTCH’ разрывает связь этого прерывания с INT1, причем прерывание снова будет блокировано. Если ширина импульса при следующем увеличении станет равна длительности периода, то вспомогательный маркер M0.0 будет сброшен. При этом событие ‘0’ назначается подпрограмме прерывания 2, которая уменьшит ширину импульса после каждого импульса на 0,5 с. Когда ширина импульса станет равна 0, снова будет вызвана подпрограмма инициализации (подпрограмма SBR 0).

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

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

// TITEL = УПРАВЛЕНИЕ ШИРОТНО-ИМПУЛЬСНОЙ МОДУЛЯЈИЕЙ

CALL 0 // вызов подпрограммы 0 для пуска ШИМ

LDW>= SMW70, VW0// Если ширина импульса >= (длина периода — ширина импульса),

R M0.0, 1// вспомогат. маркер сбрасывается

LDW= SMW70, 0// Если ширина импульса равна нулю,

CALL 0 // Вызов подпрограммы 0 для нового пуска ШИМ

LD E0.0 // ВходE0.0 установлен

U M0.0 // и вспомогательный маркер для увеличения установлен,

ATCH 1, 0 // то INT 1 назначена событию 0 (положительный фронт на E0.0)

LD E0.0 // Вход E0.0 установлен,

UN M0.0 // а вспомогательный маркер для увеличения не установлен,

ATCH 2, 0 // то INT 2 назначена событию 0 (положительный фронт на E0.0)

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

ПОДПРОГРАММА 0

// SM67.0 := 1 => сохранение новой длительности периода (деблокировка)

// SM67.1 := 1 => сохранение новой ширины импульса (деблокировка)

// SM67.3 := 1 => временной базис 1мс (если 0 => временной базис 1мкс)

// SM67.6 := 1 => выбор режима ШИМ (если 0 => режим PTO)

// SM67.7 := 1 =>общая деблокировка High-Speed-Output-функций

SBR 0 // Инициализация ШИМ

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

S M0.0, 1 // Установка вспом. маркера “увеличение  ширины импульса”

MOVB 16#CB, SMB67//Установка контрольных байтов PTO/ШИМ — для выхода A0.0

MOVW 500, SMW70// Задание начальной ширина импульса (здесь 500 мс)

MOVW 5000, SMW68// длина периода (здесь 5 с)

ENI // Деблокировка всех прерываний

PLS 0 // Команда на программирование PTO/ШИМ-генератора

MOVW SMW68, VW0// Копировать длину периода в слово/ данных VW0

-I 500, VW0// Сохранить значение ‘длина периода — ширина импульса’ в слове данных VW0

RET // Конец подпрограммы 0 и возврат в основную программу

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

INT 1 // Увеличение ширины импульса

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

+I 500, SMW70// Увеличение ширины импульса на 500мс

PLS 0 // Команда на программирование PTO/ШИМ-генератора

DTCH 0 // Разделить прерывание и назначенное ему событие 0

RETI // Конец ISR 1 и возврат в основную программу

Подпрограмма обработки прерываний 2

INT 2 // Уменьшение ширины импульса

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

-I 500, SMW70// Уменьшение ширины импульса на 500мс

PLS 0 // Команда на программирование PTO/ШИМ-генератора

DTCH 0 // Разделить прерывание и назначенное ему событие 0

RETI // Конец ISR 2 и возврат в основную программу

 

Управление Быстрым счетчиком 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 не возможны, зато возможны комментарии к сегментам.