Category Archives: Примеры

Настройка связи ПК и СПК 207 (часть 2)

Настройка связи ПК и ПЛК (при подключении СПК 207 в локальную сеть)

1. Настройки конфигуратора СПК

При подключении контроллера к локальной сети предприятия необходимо произвести его настройку. Более подробно эта процедура рассмотрена в руководстве по эксплуатации СКП 207, которое есть на диске из комплекта поставки прибора, кроме того его можно найти на сайте по адресу http://www.owen.ru/uploads/rie_cpk207_989.pdf .

Рассмотрим основные его этапы.

Настройка производится в конфигураторе СПК 207. Это приложение предназначено для настройки сети Ethernet, режима работы интерфейсов связи и часов реального времени в панели. Конфигурирование осуществляется с экрана панели.

Для запуска конфигуратора необходимо перевести тумблер «РАБОТА» на задней панели прибора в нижнее положение («0», выключено) и отключить панель, а через несколько секунд подать питание на нее.

Доступ к конфигуратору защищён паролем. Пароль вводится с помощью виртуальной клавиатуры. Пароль по умолчанию – «owen»[1]. После введения пароля следует нажать кнопку «ОК». Если пароль введен верно, на экране конфигуратора появится информация, отображенная на рисунке 1. Если порт Ethernet настроен на получение сетевых настроек от DHCP — сервера, то при запуске конфигуратора сетевые настройки будут получены автоматически. При этом кнопка «DHCP» на экране панели будет зеленого цвета (см. рисунок 4.1).

Если параметры сети автоматически получить невозможно, то следует нажать кнопку «DHCP». На экране появится информация, представленная на рисунке 2.

 

Рисунок 1 Вид окна конфигуратора СПК 207 по умолчанию

В окошке «Имя ПЛК» следует указать имя панели (под этим именем панель будет указана при сканировании сети в среде CoDeSys). Следует учесть, что имя может содержать только латинские буквы, цифры и знак подчеркивания «_».

В такой конфигурации соединения СПК 207 является одним из сетевых устройств, для которого нужно установить параметры «IP адрес», «Маска», «Широковещательный адрес» согласно логике работы сети. Для того чтобы избежать конфликтов оборудования необходимо дать СПК 207 уникальный IP-адрес. Параметры «IP адрес», «Маска», «Широковещательный адрес» устанавливаются в окне конфигуратора вводом значений в своих окнах с помощью виртуальной клавиатуры или кнопок «▲» и «▼» над и под окошками (см. пример рис.2). После установки всех параметров следует нажать кнопку «Настроить сеть» на экране панели или кнопку «F1» на передней панели СПК 207.

 

Рисунок 2 Настройки связи для СПК 207 (пример)

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

 

2. Настройки CoDeSys 3 на ПК.

Следующим этапом настроек связи является задание аналогичных настроек связи в проекте CoDeSys 3 на ПК. Для этого двойным щелчком по названию ПЛК в дереве проекта  откроем настройки целевой платформы и выберем вкладку настроек параметров связи (Communication Settings). Добавим новый узел связи командой Add gateway и настроим его параметры согласно рис.3.

Рисунок 3 Установка IP-адреса ПЛК в сети

Принципиально важно совпадение IP-адресов в настройках конфигуратора СПК 207 и Gateway (пример рис.2 и 3 соответственно).

Далее  среда программирования будет производить поиск ПЛК установленного типа по заданному IP-адресу. Значок в настройках связи указывает на то, что требуемый ПЛК не обнаружен по заданному адресу. В этом случае следует проверить настройки связи и состояние СПК 207[2]. В случае удачного подключения значок изменится на  .

В результате поиска по IP – адресу может быть обнаружено несколько устройств заданного класса (если они подключены к общей подсети). Из них необходимо выбрать то, которое реально задействовано в проекте, и нажать кнопку Set active path для выбора его в качестве активного, как показано на рис.4.

Рисунок 4 Выбор активного ПЛК

После запуска программы на исполнение можно проверить правильность выбора ПЛК на вкладке log раздела, открывающегося при двойном клике на имени используемого ПЛК в дереве проекта. Выбрав из сообщений настройку CmpBlkDrvUdp, вы получите во второй строке сообщений настройки IP-адреса и маски сети. Пример результатов такой проверки показан на рис.5. Важно отметить соответствие текущих настроек связи, прописанным в конфигураторе СПК 207 и Gateway (сравните с рис.2 и 3).

Рисунок 5 Проверка параметров связи

 

 

 


[1] Обратите внимание на то, что по умолчанию включена табуляция прописными буквами. Для переключения на строчные необходимо нажать Shift. В текущей версии ПО пароли «OWEN» и «owen» воспринимаются СПК 207 как разные.

[2] Аналогичный значок Gateway будет во время загрузки/ перезагрузки СПК 207.

    Настройка связи ПК и СПК 207 (часть 1)

    1.    Установка Microsoft FrameWork

    CodeSys 3.4 для своей работы требует наличие Microsoft framework версии 3.5 и старше. Поэтому, перед началом работы с CoDeSys необходимо установить Microsoft framework на ПК. Это программное обеспечение есть на компакт-диске комплекта поставки СПК 207, а также доступно на сайте  производителя www.microsoft.ru.

    2.    Установка ПО CoDeSys

    Перед программированием панели следует установить на ПК ПО CoDeSys 3.4 (рекомендуемая версия не ниже 3.4.0.0). После установки продукта версии CoDeSys 3.4 Patch 2 рекомендуется произвести обновление продукта установкой обновления CoDeSys v3.4 SP2 HotFix1.

    Для установки ПО CoDeSys 3 следует запустить программу-инсталлятор (файл Setup_CoDeSysV34.exe на диске из комплекта поставки СПК 207).

    В меню выбора языка работы программы русский язык в списке отсутствует. На сегодняшний день работа с CoDeSys 3 предполагает работу в среде программирования с англоязычными меню. Справочные материалы среды CoDeSys 3 большей частью русифицированы.

    Бесплатные обновления версий ПО СoDeSys доступны на сайтах www.codesys.ru, www.3ssoftware.com и www.owen.ru.

    После инсталляции ПО CoDeSys 3 следует выполнить инсталляцию Target-файлов.

    3.    Инсталляция Target-файлов

    В Target-файлах содержится информация о ресурсах панели (количестве и типах входов и выходов, интерфейсов, памяти, дополнительных устройств и т.д.), с которыми работает ПО CoDeSys.

    Для СПК 207 используется Target-файл «owen_SPC207.devdesc.xml». Файл представлен в 2 модификациях owen_spc207_0002.devdesc.xml (для СПК 207 без CAN-интерфейса) и owen_spc207_0003.devdesc.xml (для СПК207 с CAN-интерфейсом). Target-файл обязательно есть на диске из комплекта поставки СПК 207, кроме того он может быть скачан с сайта компании ОВЕН по адресу http://www.owen.ru/catalog/17844335.

    Имя Target-файла не полностью совпадает с названием панели. В названиях панели применяются латиница и кириллица, а в названии Target-файла только латиница.

    Установка Target-файла осуществляется в программной среде CoDeSys 3. Для этого, перед созданием нового проекта выберем команду «Tools | Device repository …» главного меню ПО CoDeSys как это показано на рис.3.1

    Рисунок 3.1 Выбор пункта Device repository главного меню CoDeSys 3

    После выбора команды «Tools | Device repository …» появляется диалоговое окно, вид которого представлен на рис.3.2

    Рисунок 3.2 Диалоговое окно установки Target-файла в базу устройств (Device repository)

    Для установки target-файла в открывшемся окне «Device repository …» нажать кнопку «Install…». В появившемся диалоговом окне выбрать адрес размещения target-файла как это показано на рис.3.3.

    Рисунок 3.3 Выбор адреса размещения target-файла на ПК

    После выбора пути размещения target-файла и их открытия в CoDeSys 3 информация о структуре СПК 207 будет добавлена в базу устройств CoDeSys 3, как это показано на рис.3.4.

    Рисунок 3.4 Диалоговое окно Device repository после установки Target-файла СПК 207

    После этого можно завершить работу с меню Device repository нажатием кнопки Close.

    Теперь при задании параметров стандартного проекта (Standard project) в CoDeSys 3 можно использовать в качестве исполнительной платформы (Device) СПК 207. Пример такого выбора показан на рис 3.5.

    Рисунок 3.5 Выбор СПК 207 в качестве исполнительного устройства для Standard project

    Результатом такого выбора должна стать конфигурация дерева проекта, которая приведена на рис.3.6. В случае ошибочного выбора target-файла для используемого ПЛК его можно изменить, выбрав в контекстном меню, вызываемом правой кнопкой мыши, команду Update Device, как это показано на рис.3.7. Использование этой команды  приведет к вызову окна определения ПЛК, показанного на рис.3.8. В нем можно выбрать необходимый target-файл, соответствующий подключенному ПЛК. Использование команды Add Device позволит добавить в проект новое устройство, если предполагается использование нескольких ПЛК для одного проекта.

    Рисунок 3.6 Дерево проекта с СПК 207 в качестве исполнительной платформы

    Рисунок 3.7 Контекстное меню определения/добавления устройства в дереве проекта CoDeSys 3

    Рисунок 3.8 Окно обновления target-файла для подключенного ПЛК

     

      Подключение к MasterSCADA приборов по протоколу «Овен»(часть 1).

      1. Настройка прибора.

      Настройка обмена данными осуществляется параметрами группы COMM (для приборов ТРМ-2хх):

      PROT – протокол обмена данными (ОВЕН, ModBus-RTU, ModBus-ASCII); указать ОВЕН.

      bPS – скорость обмена в сети; допустимые значения – 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200 бит/с;

      Addr – базовый адрес прибора, диапазон значений

      – 0…255 при Prot = OWEN и A.LEN = 8;

      – 0…2047 при Prot = OWEN и A.LEN = 11;

      – 1…247 при Prot = M.RTU или M.ASC.

      A.Len – длина сетевого адреса (8 или 11 бит);

      rSdL – задержка ответа прибора по RS-485 (1-45 мс).

      Подробную информацию по настройке любого другого прибора можно найти в его «Руководстве по Эксплуатации».

      В данном примере применялись следущие сетевые настройки прибора:

      PROT = ОВЕН.

      bPS = 115200 бит/с.

      Addr = 32.

      A.Len = 8  бит.

      rSdL = 20 мс.

      2 Настройка «OPC-сервера для приборов c интерфейсом RS-485 и протоколом ОВЕН»

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

      1. Запустить программу «OPC-сервер для приборов c интерфейсом RS-485 и протоколом ОВЕН».
      2. Выбрать COM- порт к которому подключен прибор, поставить галочку в поле «Включить направление», далее настроить параметры передачи данных аналогично тому, как они настроены в приборе, поставить галочку в поле «Автоматический преобразователь RS232C->RS485» (Если использутся старый преобразователь АС3 (полуавтоматический) галочку ставить не надо).

      3.         Нажать на кнопку «Добавить». В появившейся строке таблицы выбрать в поле «Наименование» свой прибор из выпадающего списка (выбрать нужную прошивку), в поле «Адрес» указать адрес прибора (аналогично Addr – базовый адрес прибора, диапазон значений), в поле «Вид»  указать базового адреса прибора (аналогично A.Len – длина сетевого адреса (8 или 11 бит))

      4.       Для рассмотриваемого примера имеем следующие настройки :

      ◦         Скорость — 115200 бит/с

      ◦         Бит данных — 8

      ◦         Четность — отсутствует

      ◦         Стоп-биты — 2

      ◦         Вид — 2 бита

      ◦         Адрес — 32

      ◦         Название — ТРМ202 v2.0022

      На этом настройка OPC-сервера закончена. Нажмите кнопку «Выход», в появишемся диалоговом окне на предложение сохранить изменения ответить «Да».

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