Создание программы
Создание таблицы символов Каждый вход и выход имеет абсолютный адрес, определенный при конфигурировании аппаратуры (для лабораторного стенда адреса входов и выходов контроллера приведены в таблице 1.2). Абсолютный адрес по вашему выбору может быть заменен символическим именем (например, Q9.6: Automatic_Mode [Автоматический режим]). Используемые символические имена не зависят от языков программирования LAD, FBD или STL. Таблица символов определяет символические имена и типы данных для всех абсолютных адресов, которые вы используете в программе. Эти имена, называемые глобальными именами, применимы к проекту в целом. Символическое программирование значительно улучшает читаемость созданной вами программы.
Откройте в STEP 7 Lite ваш созданный проект «GettingStarted.k7p». Сейчас ваш проект содержит только элементы, создаваемые по умолчанию и программный компонент OB1. В окне проекта дважды щелкните компонент Symbol table [Таблица символов]. Таблица символов содержит только организационный блок OB1. Заполните таблицу символов в соответствии с рисунком 3.1.9. Рисунок 3.1.9 – Таблица символов Сохраните введенные данные, выполнив команду меню File → Save. Работа в редакторе блоков Программирование блоков осуществляется в редакторе блоков (см. рисунок 3.1.10). Пользовательские программы в STEP 7 Lite разбиты на блоки. Это упрощает управление большими программными проектами. Эти блоки отображены внутри компонента Program [Программа]. Новый проект содержит только блок OB1, который STEP 7 Lite создает автоматически. Организационный блок (Organization Block) ОВ1 является управляющим блоком для ЦПУ и содержит главную программу. Дополнительные блоки (DB, FB, FC) в основном вызываются из ОВ1.
Рисунок 3.1.10 – Редактор блоков Программирование ОВ1 в LAD Запрограммируем последовательную цепь, параллельную цепь и функцию памяти (SR-триггер) на языке LAD (Ladder logic) [контактный план] (см. рисунок 3.1.11). Рисунок 3.1.11 – Программирование OB1 в LAD Дважды щелкните мышью элемент ОВ1 для открытия в рабочей области редактора блоков. В меню View выберите язык программирования LAD. Теперь ОВ1 будет открыт на языке LAD. В меню View выберите команду Display With → Symbolic Representation [Отобразить → Символическое Представление]. Программирование последовательной цепи в LAD: - В заголовке ОВ1 введите «Периодически исполняемая главная программа». В заголовке (Title) Network 1 [Сегмент 1] введите «Последовательное соединение»; - Выделите токоведущую шину, щелкнув по ней мышью; - Вставьте три элемента, используя различные способы: · вставьте нормально открытый контакт, щелкнув значок Normally Open Contact; · щелкните правой кнопкой мыши токоведущую шину, чтобы открыть выпадающее меню. Выберите Normally Open Contact; · установите в вашей цепи Coil [катушку] с помощью операции перетаскивания. - Щелкните на вопросительные знаки. Выберите из выпадающего списка имена «Key_1», «Key_2» и «Green_Light» для соответствующих элементов. Т.о. светодиод на стенде VD1 («Green_Light») будет загораться, если нажаты кнопки SA1 («Key_1») И SA2 («Key_2»). Программирование параллельной цепи в LAD: - Выделите Network 1. Вставьте новый сегмент (через пиктографическое меню или CTRL+R) и назовите его «Параллельное соединение»; - Выделите токоведущую шину; - Вставьте нормально открытый контакт и катушку. Назовите их «Key_3» и «Red_Light»; - Выделите основную токоведущую шину (вертикальную линию слева). Добавьте параллельную ветвь (Branch Open) и еще один нормально открытый контакт («Key_4») в параллельную ветвь; - Закройте ветвь, щелкнув значок Branch Closed в пиктографическом меню или перетащив двойную стрелку на конце параллельной ветви на токоведущую шину. Т.о. светодиод на стенде VD2 («Red_Light») будет загораться, если нажата кнопка SA3 («Key_3») ИЛИ SA4 («Key_4»).
Программирование функции памяти в LAD: - Выделите Network 2. Вставьте новый сегмент и назовите его «Функция памяти SR»; - Выделите токоведущую шину; - На закладке Command откройте ветвь Bit logic. Для вставки функции памяти найдите и дважды щелкните элемент SR; - Вставьте нормально открытый контакт перед верхним входом S; - Введите соответствующие символические имена (см. рисунок 3.1.11). Сохраните введенные данные через меню File → Save. Работа с функциональными блоками FB Функциональные блоки (FB) используются в функциональном программировании, когда необходимо сохранять рабочие параметры, промежуточные результаты или режимы работы до следующего вызова функции. Поэтому их также называют «Блоки с памятью».
Создание и открытие функциональных блоков: - В окне проекта щелкните мышью компонент Program; - Выберите команду Insert → Block или щелкните правой кнопкой мыши в окне проекта, чтобы открыть всплывающее меню и выберите команду New → Block; - В диалоговом окне (см. рисунок 3.1.12) выберите Function Block. Выберите язык программирования в списке Created in language;
Рисунок 3.1.12 – Создание функционального блока - Подтвердите ввод, нажав ОК. Новый блок будет немедленно добавлен и открыт в окне проекта.
Рассмотрим, как запрограммировать функциональный блок контроля и управления бензиновым и дизельным двигателями с использованием двух блоков данных. Все сигналы, «специфичные для двигателей», т.е. параметры блока, передаются функциональному блоку из организационного блока. Поэтому они должны быть определены в таблице описания переменных как входные и выходные параметры (описание «in» и «out»). Это определяет «интерфейс» для вызова функционального блока в программе. Заполните таблицу описания переменных функционального блока, как показано на рисунке 3.1.13. В столбце «Type» щелкните правой кнопкой мыши и выберите тип из «Elementary types» во всплывающем меню. Рисунок 3.1.13 – Таблица описания переменных FB1 Программирование FB в LAD: На рисунке 3.1.14 представлены программы включения/выключения двигателя и контроля скорости. Рисунок 3.1.14 – Программирование FB1 в LAD Локальные переменные блока помечаются знаком # и действительны только в этом блоке. Глобальные переменные заключаются в кавычки. Они определены и действительны в пределах всей программы.
Создание локальных блоков данных (DB) и изменение фактических значений Чтобы позже иметь возможность запрограммировать вызов функционального блока из ОВ1, вы должны создать соответствующий блок данных (DB). Функциональный блок управляет и контролирует работу бензинового или дизельного двигателя. Различные заданные скорости двигателей хранятся в двух различных блоках данных, в которых изменяется фактическое значение #Present_Speed. Вставьте новый блок (Insert → Block). В диалоговом окне (см. рисунок 3.1.15) выберите Data Block. Укажите FB1 в качестве соответствующего функционального блока. Рисунок 3.1.15 – Создание блока данных DB1 Подтвердите ввод, нажав ОК. Новый блок будет немедленно добавлен и открыт в окне проекта. Активизируйте Data view (View → Data view). Вы можете редактировать DB только в данном представлении. Проверьте, что для бензинового двигателя введено значение «1500» в столбец Actual value (см. рисунок 3.1.16). Рисунок 3.1.16 – Блок данных для бензинового двигателя Аналогично добавьте DB2 «Diesel». Для дизельного двигателя введите в столбец Actual value значение «1200» (см. рисунок 3.1.17). Сохраните введенные данные. Рисунок 3.1.17 – Блок данных для дизельного двигателя Программирование вызова блока в LAD Программирование функционального блока окажется бесполезным, если вы не вызовите этот блок в ОВ1. При каждом вызове FB используется только один DB. Таким образом, вы можете управлять обоими двигателями. Откройте ОВ1 и добавьте сегмент 4 [Network 4]. Перетащите FB1 из окна проекта в сегмент 4. Будут отображены все переменные, характерные для двигателей (см. рисунок 3.1.18). Рисунок 3.1.18 – Программирование вызова блока FB1 Щелкните на вопросительных знаках. Появится всплывающий список символов. В списке выбора символов щелкните блок данных «Petrol». Всем переменным дайте адреса. Адреса для бензинового двигателя имеют вид «PE_xxx» (см. рисунок 3.1.19). Рисунок 3.1.19 – Программирование вызова FB1 с DB «Petrol»
Добавьте сегмент 5. Вновь перетащите FB1 из окна проекта в сегмент. Аналогично запрограммируйте вызов FB «Engine» с DB «Diesel». Всем переменным дайте адреса. Адреса для дизельного двигателя имеют вид «DE_xxx» (см. рисунок 3.1.20).
Рисунок 3.1.20 – Программирование вызова FB1 с DB «Diesel» Сохраните введенные данные и закройте блок. Работа с функциями (FC) Функции (FC) используются в программировании, если не требуется сохранение промежуточных результатов, настроек или режимов работы до следующего вызова блока. Поэтому их также называют как «Блоки без памяти». Вставьте новый блок (Insert → Block). В диалоговом окне (см. рисунок 3.1.21) выберите Function. Выберите нужный язык программирования в списке Created in language. Подтвердите ввод, нажав ОК. Новый блок будет немедленно добавлен и открыт в окне проекта.
Рисунок 3.1.21 – Создание функции FC1 Программирование функций Требуется запрограммировать функцию таймера. При включении таймера функция таймера одновременно включает вентилятор, который работает еще 4 секунды после выключения двигателя (задержка выключения). Аналогично FB, начните с объявления входных и выходных параметров функции (описание «in» и «out») в таблице описания переменных (см. рисунок 3.1.22). В столбце «Type» щелкните правой кнопкой мыши и выберите тип TIMER из «Parameter types» во всплывающем меню. Рисунок 3.1.22 – Таблица описания переменных FC1 Для программирования функции перейдите в Libraries → Commands → Timers [Библиотеки → Команды → Таймеры]. Выберите элемент S_OFFDT и вставьте его в сегмент 1. Добавьте нормально открытый контакт и катушку. Вместо вопросительных знаков введите имена из таблицы описания переменных, как показано на рисунке 3.1.23. Введите константу S5T#4s на входе TV таймера. Сохраните функцию и закройте окно. Рисунок 3.1.23 – Программирование функции FC1 в LAD Вызов функций в ОВ1 Функция FC1 вызывается в ОВ1 таким же образом, как и функциональный блок. В ОВ1 параметрам функции назначаются соответствующие адреса или для бензинового или для дизельного двигателя. Откройте ОВ1. Добавьте Network 6 [сегмент 6] для бензинового двигателя и Network 7 [сегмент 7] для дизельного двигателя. Перетащите FC1 в сегмент 6 и сегмент 7. Замените все вопросительные знаки символическими именами, как показано на рисунке 3.1.24. Сохраните блок и закройте окно. Рисунок 3.1.24 – Программирование вызова FC1 в LAD В этом примере запрограммирован безусловный вызов функции, т.е. функция будет обрабатываться всегда. В зависимости от требований задачи автоматизации вы можете также запрограммировать условный вызов функции (FC) или функционального блока (FB): т.е. вызов, зависящий от входа или предшествующей операции. Для программирования условных вызовов предназначены вход EN и выход ENO. Работа с глобальными блоками данных (DB) Если ЦПУ недостаточно внутренней памяти для хранения всех данных, вы можете хранить определенные данные в глобальных (совместно используемых) блоках данных. Данные в совместно используемых блоках данных доступны всем остальным блокам, а локальный блок данных соответствует конкретному функциональному блоку, и его данные доступны только в этом функциональном блоке. Вставьте новый блок (Insert → Block). В диалоговом окне выберите Data Block, заполните поля, как показано на рисунке 3.1.25. Подтвердите ввод, нажав ОК. Новый блок будет немедленно добавлен и открыт в окне проекта. Рисунок 3.1.25 – Создание глобального блока данных DB3 Заполните таблицу, как показано на рисунке 3.1.26. Сохраните блок и закройте окно. Рисунок 3.1.26 – Программирование переменных в блоке данных DB3
|