Simatic S7-200 быстрый старт. Часть 1
В этой статье показаны основы работы с ПЛК SIMATIC S7-200 фирмы SIEMENS. Рассмотрены вопросы конфигурирования GKR? соответствия периферии областям памяти, существующие симуляторы. Также напишем первую программу и проверим ее функционирование на симуляторе. Итак приступим. Будем считать что ПКЛ смонтирован и к нему подключено питание. А также подключен кабель PPI. Для программирования, загрузки и отладки контроллера необходимо установить пакет STEP 7 MicroWin. Настройка оборудования Запускаем MicroWin. В открывшемся окне нажимаем Set PG/PC interface. Выбираем PC/PPI cable. Нажимаем Properties и на вкладке LocalConnection выбираем номер com порта на который установлен второй конец кабеля (для кабеля PPI – USB номер виртуального com порта). Закрываем вкладку. В основном окне MicroWin выбираем Communications. Ставим галочку «search all baud rates» и справа нажимаем «double click to refresh». В процессе поиска должен появиться контроллер. Выбираем его и нажимаем OK. Теперь соединение с ПЛК установлено и можем управлять им переводя его в разные режимы работы, залить в него программу, скачать из него программу, отлаживать программу в реальном времени и т.д. Теоретические основы Теперь коротко расскажу как работает ПЛК. Сначала считываются все входа и переносятся в так называемую область отображения входов. Потом идет цикл выполнения программы с обработкой эти вводов, выполнением каких либо математических операций и формированием по результату выполнения области отображения выходов. И в самом конце происходит перенос из области отображения выходов на реальные выходные регистры. После этого цикл повторяется. Из этого следует, что если в процессе выполнения программы происходит например включение какого либо выхода в состояние единицы, а следующие за этим инструкции переводят его в 0, то состояние входа не измениться в процессе выполнения программы. В этом главное отличие ПЛК от микроконтроллеров где воздействие на выхода осуществляется непосредственно внутри цикла программы записью значения в регистр выходов. Программа выполняется в основном цикле OB1. В процессе выполнения программы могут запускаться соответствующие подпрограммы и вызываться различные функции. Также в процесс выполнения программы может вызываться настроенное ранее прерывание, после выполнения которого продолжиться выполнение основного цикла. Память в ПЛК делиться на области отображения дискретных входов (обозначается латинской буквой I), дискретных выходов (обозначается буквой Q), аналоговых входов (обозначается буквами AIW), аналоговых выходов (отображается буквами AQW). Аналоговые входа имеют выход размерности 16 бит и соответственно формат «слово» WORD. Если вход специализированный (например под термосопротивление или термопару) то выход будет иметь значение температуры с десятыми долями градуса Цельсия (например аналоговый вход под Pt100 AIW10 и температура на датчике 36.6 С то AIW = 366). С дискретными входами и выходами можно общаться как побитно (например I0.0) означает дискретный вход I0 бит 0), так и побайтно (например IB2). Аналогично и дискретными выходами. Важно заметить, что выхода можно не только устанавливать но и опрашивать. Существует меркерная память, она сохраняет свои значения при пропадании питания, (обозначается буквой М) например M0.0 MB2 MW4 MD6. Есть так называемые системные меркеры (обозначаются SM), в них хранятся всяческие системные данные доступные для пользователя (об этом будет ниже). B обычная память (отображаемая буквой V) например VB0, VD4, VW10. Также существуют аккумуляторы для хранения промежуточных результатов при вычислении они имеют разрядность 32 бита и обозначаются AC0, AC1, AC2, AC3. Память разбивается на биты, байты (VB) — 8 бит, слова (VW) — 16 бит, двойные слова (VD). Математически операции выполняются на числами со следующими разрядностями.
Integer 16 бит от -32768 до +32767
Double integer 32 бита от -2147483648 до +2147483647
Real 32 бита от -1.175495E-38 до -3.402823E+38 Первая программа Напишем простую программу опрашивающую дискретный вход и устанавливающий дискретный выход. В главном окне MicroWin нажимаем View -> Ladder (это означает что писать мы будем на языке LAD). Выбираем OB1 (основной цикл программы) и дважды по нему щелкаем. В панели слева выбираем Instruction -> Bit Logic и два раза щелкаем по значку -||- Normaly open (это так называемы нормально разомкнутый контакт, что означает что он замкнется и пропустит сигнал дальше если его состояние равно «1». В появившемся над контактом поле со знаками вопроса вписываем I0.0 и нажимаем Enter, что означает мы опрашиваем дискретный вход I0.0. Опять слева из меню Instruction -> Bit Logic выбираем Output и щелкаем два раза. В появившемся над выходом поле со знаками вопроса вписываем Q0.0 (число под оператором установки или сброса бита соответствует числу сбрасываемых или устанавливаемых битов в этом байте начиная с указанного, например если написать снизу 1 то установиться только указанный бит и так далее) и нажимаем Enter, что означает мы устанавливаем дискретный выход Q0.0. Все простейшая программа готова. Нажимаем compile All. В нижней статусной строке видим, что размер кода 20 байт, ошибок и предупреждений нет. Нажимаем Download. В открывшемся окне нажимаем Download. Произойдет заливка программы и окно закроется. Переводим контроллер в состояние RUN Теперь если подать на вход I0.0 +24В то на выходе Q0.0 появиться +24В. Состояние входов выходов также отображается на светодиодах контроллера. Теперь краткое отступление для тех кто хочет попробовать работать с ПЛК но не имеет его. Существуют два симулятора S7-200. S7200SIM от SUNLiGHT software — позволяет посредством виртуального моста com – com устанавливать связь MicroWin с эмулятором ПЛК. Не поддерживает аналоговые входа выхода. Проект похоже мертв. S7_200 от http://personales.ya.com/canalPLC/ текущая версия 3.0. Не работает напрямую с MicroWin но позволяет загружать программу через awl файлы. Поддерживает аналоговые входа выхода. Просмотр состояния программы. Вот как выглядит наша программа при работе в контроллере. В MicroWin нажимаем File — > Export. Даем имя файлу например 1 и нажимаем сохранить. Запускаем симулятор S7_200. Нажимаем Program -> Load Program. Оставляем галочку logic block и нажимаем Accept. В открывшемся окне выбираем наш файл и нажимаем открыть. Нажимаем PLC -> RUN. Теперь если мы передвинем крайний левый тумблер вверх то сработает выход Q0.0. Отлично, наша программа работает. Опять небольшое отступление. Как определить по каким адресам находятся входа и выхода? Это очень просто. Во первых можно просто посчитать их следующим образом. Все входа сгруппированы побайтно, поэтому предположим что ПЛК (без модулей расширения) содержит в себе 16 дискретных входов, 8 дискретных выходов, 2 аналоговых входа и 1 аналоговый выход. Они будут иметь адреса I0.0 — I0.7 и I1.0 — I1.7. Дискретные выходные Q0.0 — Q0.7. Аналоговые входные AIW0 и AIW2 (так как занимают по два байта каждый). Аналоговый выход AQW0. Теперь если мы добавим модуль расширения с 16 дискретными входами и 16 дискретными выходами. Они автоматически получат адреса I2.0-I2.7 I3.0 — I3.7. Выхода Q1.0-Q1.7 Q2.0 — Q2.7 т.е. адресация увеличивается линейно по байту на каждые 8 дискретных входов выходов, начиная с 0 в ПЛК. Аналоговые увеличивают адресацию по словно (через один) начиная с 0 в ПЛК. Можно посмотреть присвоенные входам выходам адреса в ПЛК из MicroWin. Для этого в MicroWin нажимаем PLC -> information В таблице видим, что CPU у нас 226 имеет 24 дискретных входа начиная с I0.0 и 16 выходов начиная с Q0.0 Идем дальше. Естественно при программировании ПЛК с большим объемом входных выходных сигналов и сложной математикой работать с абсолютными адресами сложно. Символьная адресация тут тоже возможна. В MicroWin нажимаем Symbol Table. В открывшемся окне Вбиваем в поле address абсолютный адрес, в поле symbol символьное имя, в поле comment комментарий который тоже можно включить на отображение. Наименование вкладки можно изменить. Можно также добавить новую вкладку для удобства группировки дискретных входов выходов, аналоговых, результатов математических вычислений и т.д. Возвращаемся в OB1 и видим, что появилась табличка под кодом с сопоставлением символьного имени и абсолютного адреса. (если не отображается то нажать View -> Symbol Information Table. Но в коде все по прежнему. Нажимаем Viev -> Symbol Table -> Apply Symbol to Project. Вот теперь все отлично. Вернемся в Symbol Table. Я рассказывал выше о специальных системных меркерах. Чтобы не лазить каждый раз в help я всегда проделываю следующие действия. Правой кнопкой мыши вызывается меню Insert -> S7-200 Symbol Table Появляется вкладка S7-200 Symbols. Если прочитать комментарии то видно что системные меркеры содержат много полезного. Например бит SM0.1 First_Scan_On – выполняется только при первом цикле после включения питания. Это часто используется для загрузки первоначальных данных. Например в программе мы используем переменную по адресу VW0 для сравнения дальше в программе с аналоговым входом. Причем эта переменная будет потом доступна для изменения (типовая уставка аварийного значения).При этом мы хотим загрузить в нее какое либо первоначальное значение. Тогда код будет выглядеть так В переменную VW0 загрузиться значение 789 при первом цикле программы и в дальнейшем это значение будет доступно для изменения. Часто используется системный меркер SM0.0 Always ON – используется для подключения математических операций и загрузки в регистр в языке LAD. Пример Две ошибки. По правилам языка LAD перед подобными операциями должна стоять инструкция опроса контакта, а так как этот должен быть всегда замкнут то используют системный меркер SM0.0 Теперь без ошибок. Еще два интересных меркера SM0.4 SM0.5 – один переключается с периодом 1 секунда а второй с периодом 1 минута. На их базе можно реализовать цикличное выполнение какой либо подпрограммы или например простую мигалку. В OB1 набираем код Экспортируем в awl. Загружаем в симулятор s7_200. Переключаем ПЛК в RUN и видим что выход Q0.1 переключается каждые 0,5 секунды. Интересны и иногда полезны еще два специальных меркера SMW24 и SMW26 – они содержат минимальное и максимальное время выполнения цикла программы OB1 в миллисекундах. В следующей статье рассмотрим основные операции выполняемые над входами выходами и аналоговыми данными. Рассмотрим конфигурирование и использование таймеров и счетчиков, а также создание и работу с функциями.