Язык программирования stl siemens
Программирование ПЛК Siemens на Simatic Step7
Добрый день, хабровчане! Полазив по Хабру, мною было обнаружено всего несколько топиков, в котором упоминалось бы словосочетание «Simatic Step 7». Хочу поделиться с Вами небольшой частью информации, накопленной мною за все время работы с программируемыми логическими контроллерами, и показать, что из себя представляют ПЛК, оболочка и что мне приходилось на них строить.
Данный пост содержит общую ознакомительную информацию о программировании ПЛК Siemens.
Введение
Устроилась я в эту фирму еще на 5м курсе института. К слову, образование мое к программированию относится весьма косвенно и было это больше увлечением. Познания мои на тот момент ограничивались курсом Delphi и весьма базовым Ассемблером. Компания занималась (да и занимается) проектированием, строительством и обслуживанием грузоподъемных машин, таких как погрузчики, портальные, козловые, мостовые и прочие краны. К ГП машинам мое образование имело еще меньше отношения. Поэтому я решила попробовать. 🙂
Программируемые логические контроллеры Siemens
ПЛК фирмы Siemens — это промышленные контроллеры и используются для автоматизации технологических процессов. У нас, в частности, использовались для автоматизации работы грузоподъемных машин.
Simatic включает в себя несколько линеек ПЛК — Simatic S5 и Simatic S7. В свою очередь линейка Simatic S7 содержит семейства S7-200, S7-300, S7-400 и S7-1200.
Чаще всего мы использовали ПЛК семейств S7-300 и S7-400, для которых компанией Siemens было разработано собственное программное обеспечение Simatic Step 7.
Кроме этого, к ПЛК через сеть Profibus подключалось большое количество ведомых устройств, таких как частотные преобразователи, приводы, абсолютные/инкрементные энкодеры и пр.
Вся работа ГП машины по максимуму автоматизировалась и крановщику нужно применять минимум усилий для управления оной.
Что из себя представляет Simatic Step 7?
Главной утилитой является Step 7 — Simatic Manager, которая позволяет производить конфигурацию ПЛК и сетей (утилиты HWConfig и NetPro).
В процессе конфигурации определяется состав оборудования, способы подключения, используемые сети, адреса, выбираются настройки для используемых модулей. Готовая конфигурация загружается в ПЛК, что так же является настройкой оборудования.
Утилиты конфигурации позволяют осуществлять диагностику оборудования, обнаруживать аппаратные ошибки или неправильный монтаж.
ПЛК выполняет команды в порядке, определяемом программой, сверху вниз, затем начинает сначала.
С помощью редактора STL всегда можно посмотреть или отредактировать программы, созданные на LAD или FBD, обратное не всегда возможно.
Я работала с самого начала в STL, пробовала LAD, мне показался слишком непонятным и многие вещи таки не удавалась так просто в нем сделать, как в STL. Плюс еще в том, что при загрузке программы в ПЛК, она компилируется в STL и, соответственно, при выкачке ее из ПЛК на программатор она так же представлена в STL.
Вместо заключения
Программирование ПЛК занятие увлекательное, особенно когда это не стенд, а реальное оборудование.
Моя работа заключалась в создании программы на ПЛК для управления всей ГП машины либо отдельных ее частей, а так же загрузке программного обеспечения непосредственно в оборудование и его отладке.
Случалось разное, но работать с железом было очень интересно, хоть и не легко иногда.
А строили мы вот такие ГП машины:
Simatic Step 7, STL, сглаживание (Smooth) сигнала аналогового входа 4-20mA.
Simatic это абревиатура семейств PLC фирмы Siemens для общепромышленного применения (SIMATIC S7-300/S7-400/C7/WinAC). Сейчас есть и более новые SIMATIC S7-1200/S7-1500, программируются через TIA Portal.
Siemens выпускает и узко специализированные линейки PLC (Sinumerik — для станков ЧПУ, Simadyn — линейка повышенной производительности, многие задачи решаются аппаратно, специализированными блоками). Так же широко распостранены абревиатуры, которые относятся к области применения, а не к линейке аппаратного обеспечения на котором оно собрано, естественно оно должно поддерживать стандарты фирмы Siemens (SIMATIC HMI — управление оборудованием с панели оператора, SIMATIС NET — все что связано с межблоковой связью, SIMOTION — моторизованные приводы, управляющие движением, SIMODRIVE — инверторы, управляемые через ProfiBus, и еще куча абревиатур на которые Siemens имеет товарные знаки).
Step 7 это IDE для программирования всего этого хозяйства (кроме устаревшего S7-200, для него используется STEP 7-Micro/WIN, несмотря на схожее название, это отдельная программа и в IDE Step 7 не интегрируется). Составить представление можно почитав статью на Хабре Программирование ПЛК Siemens на Simatic Step7. Дополнительные языки программирования, драйвера оборудования и т.д. интегрируются в Step 7. Доступны драйверы для широкой номенклатуры стороннего оборудования (не Siemens).
Инструментальные средства STEP 7 позволяют выполнять:
- Конфигурирование и определение параметров настройки аппаратуры;
- Конфигурирование систем промышленной связи и настройку параметров передачи данных;
- Программирование, тестирование, отладку и запуск программ отдельных систем автоматизации, а также их локальное или дистанционное обслуживание;
- Документирование и архивирование данных проекта;
- Функции оперативного управления и диагностирования аппаратуры.
STL — один из МЭК (IEC) стандарта IEC61131-3 языков программирования (англ. Statement List, список операторов). Немцы зовут его AWL (нем. Anweisungsliste), это же расширение имеют и исходники, написанные на STL. Тут есть несоответствие в абревиатурах стандартных языков МЭК и фирмы Siemens. Дело в том, что по стандартам МЭК язык STL должен называться IL (Instruction List), а абревиатура ST (Structured Text) зарезервирована за Pascal-подобным языком, который у Siemens называется SCL (Structured Control Language).
Кроме STL, Step 7 включает в дистрибутив поддержку МЭК языков LAD (Ladder Diagram, язык релейной (лестничной) логики) и FBD (Function Block Diagram, программирование функциональными блоками). При приобретении лицензии интегрируются языки SCL (Pascal-подобный язык), S7-GRAPH (позволяет выполнять конфигурирование и программирование систем графическими способами, стандарт DIN EN 6.1131-3), S7-HiGraph (позволяет разрабатывать программы систем автоматизации SIMATIC в виде графа состояния системы), S7-PDIAG (позволяет разрабатывать однородные процедуры диагностирования систем автоматизации SIMATIC), S7-PLCSIM (позволяет эмулировать работу систем автоматизации SIMATIC, предназначен для отладки программ указанных систем на программаторе/компьютере без использования реальных технических средств автоматизации).
В настоящее время Siemens активно рекомендует переходить со Step 7 на TIA Portal. Это логическое развитие Step 7, но не всегда однозначное (IMXO, что-то теряем, что-то находим. ).
Представленный функциональный блок выполняет функции ограничителя аналогового сигнала (4..20mA) с индикацией выхода за диапазон (Limiter) и его сглаживания по алгоритму простого (арифметического) скользящего среднего (SMA).
Алгоритмов скользящего среднего несколько, SMA (простой, Simple Moving Average), EMA (экспоненциальный, Exponential Moving Average), WMA (взвешенный, Weighted Moving Average). Последние еще и разновидности имеют. Здесь рассмотрен только первый.
Код функционального блока был написан для контроллера семейства Simatic S7-300, конкретно для S7-313C.
Как правило (за редким исключением, S7-313C как раз из них), входные аналоговые модули S7-300 имеют универсальные входы. У ранних ревизий переключателем на боковой стенке модуля можно перевести вход в режим работы с сигналами напряжения, тока, термометров сопротивления и резисторов, термопар (4 положения). Аналоговые модули не имеющие переключателя (новые ревизии), конфигурируются утилитой Hardware Configuration, входящей в состав пакета STEP7.
Здесь рассмотрена работа с аналоговым входом, настроенным на измерение тока 4-20mA. Он преобразует входной ток в слово (16-разрядное HEX число).
У различных модулей аналоговых входов Simatic разрешающая способность может быть от 9 до 15 бит + знак. Если разрешающая способность аналогового модуля составляет менее 16 бит, то аналоговая величина сохраняется в модуле с выравниванием влево. Младшие, не используемые, битовые разряды заполняются нулями.
Из таблицы видно, что модуль с состоянии работать с входным током в диапазоне 1,185mA — 22,81mA. Ток не входящий в данный диапазон вызывает переполнение и показания являются недействительными. Нередкие в промышленности отказ датчика или обрыв провода приведут к выходу измеряемого тока из диапазона работы аналогового входа.
Поэтому перед любой обработкой полученных данных от аналогового входа необходимо их нормализовать, т.е. отсечь недействительные значения. Один из вариантов такой функции на языке STL:
Небольшое обьяснение к коду для тех, кто незнаком с промышленными контроллерами Siemens. Simatic S7-300 имеет два 32-х разрядных аккумулятора. При загрузке в первый, его предыдущее содержимое сдвигается во второй. Поэтому применение операции сравнения или математической операции требует двух предварительных операций загрузки. Результат сохраняется в первом аккумуляторе. Бит RLO — результат логической операции, применим и для операций сравнения. JC — переход при RLO=1, JCN — переход при RLO=0. W#16#6C00 расшифровывается как шестнадцатиричное (#16) представление слова (W) 6C00, его можно записать и в десятичном виде W#27648 или просто 27648.
Ограничитель можно оформить в виде функции, т.к. статичной памяти для работы ему не требуется.
Алгоритм же вычисления арифметического плавающего среднего должен хранить в статичной памяти результаты последних замеров (кольцевой буфер), указатель на последний замер и сумму замеров в буфере. Т.е. иметь статичную память, неизменную между вызовами функции. В Step 7 этим требованиям отвечает функциональный блок. Помимо функции он имеет жестко ассоциированный (экземплярный) блок данных для расчетов. Обращаться к этим данным изнутри функционального блока проще чем к глобальным. Доступ снаружи (не из функционального блока) запрещен и блокируется.
На рисунке ниже представлена реакция функции простого скользящего среднего на скачок сигнала полного диапазона при буфере в 16 слов, функциональный блок вызывается из блока циклического прерывания ОВ35 с цикличностью 100mc.
Это привело к тому, что адрес указателя в буфере не изменяется и программа постоянно стоит на первом слове.
Проверил на рабочем S7-300, нет, все работает как и должно быть.
И ревизия PLCSIM у меня вроде не старая (K5.4.5.2), раньше проблем не было, в общем не понял…
Если хотите, чтобы FB нормально работал и в симуляторе, его нужно немного изменить. Не полагаться на то, что нужное число осталось в ACCU 2, а принудительно загрузить его в ACCU 1. Вырезаем следующие строки:
и в самый конец блока (после T #OUTPUT) добавляем:
Создавать блоки данных для функциональных блоков вручную нет необходимости и не рекомендуется. Лучше чтобы их создал STEP 7. Для этого нужно в месте вызова функционального блока вызвать его с номером требуемого блока данных. Примерно так:
При этом FB30 должен быть скомпилирован и находиться в папке Blocks, номер блока данных может быть любым, еще не используемым. После нажатия «Enter» STEP 7 предупредит, что данного блока не существует и спросит, надо ли его создать.
При нажатии «Yes» блок данных с необходимой внутренней структурой, правильным TimeStamp (отметка времени) и привязкой к FB30 будет создан:
Вызов блока также дополнится формальными обозначениями входов/выходов:
Блок был опробован на измерении уровня воды в буферном баке (120 м3) датчиком давления. Уровень (0..6м) отслеживается с шагом изменения 0,01м. Ранее при медленном опорожнении бака происходило 4-6 переключений во время смены показаний. После подключения на выход датчика этого функционального блока показания сгладились, происходило 1-2 переключения. Хотелось бы еще плавнее. Это было достигнуто увеличением постоянной времени фильтра. Сделать это несложно, необходимо пропускать некоторые из вызовов фильтра.
Коэффициент деления и счетчик цикла хранятся в глобальном блоке данных. Это сделано для удобной подстройки коэффициента сглаживания во время работы без подключения програматора.
Коэффициент деления Division_Factor выведен как тег в операционной панели.
И в заключение расскажу еще об одном эксперименте с этим функциональным блоком. Вход и выход блока имеют одинаковый тип данных. А что если включить два блока цепочкой, один за другим? Чтобы оставить только необходимое, был оформлен новый функциональный блок.
Для сравнения график исходной функции FB30, постоянная времени фильтра 1,6 сек.
И график «тандемной» функции FB40, постоянная времени фильтра 3,2 сек. График из прямого стал S-образным.
Качественной рускоязычной документации по устройству и программированию Simatic очень много. Перевод как правило произведен фирмой Siemens, и самая полная подборка со свежими исправлениями лежит на официальном сайте. К сожалению для скачивания требуется регистрация.
SIMATIC. STL для S7-300 и S7-400, Программирование. 1 Структура и компоненты команд и операторов 2 Адресация
1 SIMATIC STL для S7-3 и S7-4, Программирование Справочное руководство Это руководство является частью пакета документации с заказным номером: 6ES78-4CA5-8BR Важные замечания, содержание Обзор продукта Структура и компоненты команд и операторов 2 Адресация 3 Операции с аккумуляторами и с адресными регистрами 4 Битовые логические операции 5 Таймерные команды 6 Операции со счетчиками 7 Команды загрузки и передачи 8 Арифметические операции с целыми числами 9 Операции над числами с плавающей точкой Операции сравнения Команды преобразования 2 Логические операции со словами 3 Команды сдвига и циклического сдвига 4 Операции с блоками данных 5 Команды перехода 6 Команды управления программой 7 Приложения Алфавитный список команд Примеры программирования Зарезервированные ключевые слова, используемые в исходных файлах Литература Глоссарий A B C D C79-G7-C562-
2 Указания по безопасности Это руководство содержит указания, которые вы должны соблюдать для обеспечения собственной безопасности, а также защиты продукта и подключенного оборудования. Эти указания выделены в руководстве предупреждающим треугольником и помечены следующим образом в соответствии с уровнем опасности:! Опасность Указывает, что несоблюдение надлежащих предосторожностей приведет к смерти, тяжким телесным повреждениям или существенному повреждению имущества.! Предупреждение Указывает, что несоблюдение надлежащих предосторожностей может привести к смерти, тяжким телесным повреждениям или существенному повреждению имущества.! Предостережение Указывает, что несоблюдение надлежащих предосторожностей может привести к небольшим телесным повреждениям или порче имущества. Замечание Привлекает ваше внимание к особенно важной информации о продукте, обращении с продуктом или к определенной части документации. Квалифицированный персонал К установке и работе на данном оборудовании должен допускаться только квалифицированный персонал. К квалифицированному персоналу относятся лица, имеющие право пускать в эксплуатацию, заземлять и маркировать электрические цепи, оборудование и системы в соответствии с установленным порядком и стандартами. Правильное использование Примите во внимание следующее:! Предупреждение Это устройство и его компоненты могут быть использованы только для приложений, описанных Торговые марки в каталоге или технических описаниях, и только в соединении с устройствами или компонентами других производителей, которые были одобрены или рекомендованы фирмой Siemens. Этот продукт может правильно и безопасно функционировать только при правильной транспортировке, хранении, установке и инсталляции, а также эксплуатации и обслуживании в соответствии с рекомендациями. SIMATIC, SIMATIC HMI и SIMATIC NET являются зарегистрированными торговыми марками SIEMENS AG. Некоторые из других обозначений, использованных в этих документах, также являются зарегистрированными торговыми марками; права собственности могут быть нарушены, если эти обозначения используются третьей стороной для своих собственных целей. Copyright Siemens AG 998 Все права сохраняются Воспроизведение, передача или использование этого документа или его содержания не допускается без специального письменного разрешения. Нарушители будут нести ответственность за нанесенный ущерб. Все права, включая права, создаваемые патентным грантом или регистрацией сервисной модели или проекта, сохраняются. Siemens AG Департамент техники автоматизации и приводов Сфера деятельности: промышленные системы автоматизации п/я 4848, D Нюрнберг Акционерное общество Siemens Отказ от ответственности Мы проверили содержание этого руководства на соответствие с описанной аппаратурой и программным обеспечением. Так как отклонения не могут быть полностью предотвращены, мы не гарантируем полного соответствия. Однако данные, приведенные в этом руководстве, регулярно пересматриваются и необходимые исправления вносятся в последующие издания. Приветствуются предложения по улучшению. Siemens AG 998 Технические данные могут изменяться. C79-G776-C562
3 Предисловие Назначение Это руководство является вашим путеводителем при создании программ пользователя на языке программирования Список операторов, часто сокращенно называемом STL (от англ. Statement List) или AWL (от нем. Anweisungsliste). В дальнейшем будет преимущественно использоваться сокращенное обозначение AWL. Это руководство включает также справочный раздел, описывающий синтаксис и функции элементов AWL. Круг читателей Это руководство предназначено для программистов, операторов и обслуживающего персонала систем S7. Очень важно практическое знакомство с процедурами автоматизации. Область применения Это руководство действительно для версии 5. пакета программного обеспечения STEP 7. Соответствие стандартам AWL соответствует языку «Instruction List [Список команд]», определенному в стандарте Международной электротехнической комиссии IEC 3 3, хотя имеются существенные отличия в отношении операций. Дополнительные подробности вы найдете в таблице стандартов в файле NORM_TBL.WRI пакета STEP 7. Требования Для эффективного использования данного руководства вы должны быть уже знакомы с теорией, на которую опирается программирование для S7 и которая задокументирована в оперативной помощи для STEP 7. Языковые пакеты используют также стандартное программное обеспечение STEP 7, так что вы должны быть знакомы с тем, как обращаться с этим программным обеспечением, и прочитать сопроводительную документацию. C79-G7-C562- v
4 Предисловие Документация Назначение Номер для заказа Базовая информация о STEP 7, включающая в себя: Working with STEP 7 V5., Getting Started Manual [Работа со STEP 7 версии 5.. Введение в STEP 7] Programming with STEP 7 V5. [Программирование с помощью STEP 7 версии 5.] Configuring Hardware and Communication Connections, STEP 7 V5. [Конфигурирование аппаратуры и проектирование соединений с помощью STEP 7 v5.] From S5 to S7, Converter Manual [От S5 к S7. Руководство по конвертированию] Справочники по STEP 7, в том числе Руководства Ladder Logic (LAD) /Function Block Diagram (FBD) /Statement List (STL) for S7-3/4 [Контактный план (LAD, КОР) /Функциональный план (FBD, FUP)/ Список операторов (STL, AWL) для S7-3/4] Standard and System Functions for S7-3/4 [Стандартные и системные функции для S7-3/4] Базовая информация для технического персонала, описывающая методы реализации задач управления с помощью STEP 7 и программируемых контроллеров S7-3/4. Предоставляется справочная информация и описываются языки программирования LAD (контактный план, KOP), FBD (функциональный план, FUP) и STL (список операторов, AWL) и стандартные и системные функции, расширяя объем базовой информации о STEP 7. 6ES78 4CA4 8BA 6ES78 4CA4 8BR Оперативные справки Назначение Номер для заказа Справочная информация STEP 7 Справочная информация о STL/LAD/FBD Справочная информация о SFB/SFC Справочная информация об организационных блоках Базовая информация о программировании и конфигурировании аппаратуры с помощью STEP 7 в виде оперативной справки (online). Контекстно-чувствительная справочная информация Часть стандартного программного обеспечения STEP 7. Часть стандартного программного обеспечения STEP 7. Доступ к оперативной помощи Оперативную помощь вы можете отобразить следующими способами: Контекстно-чувствительная справочная информация о выделенном объекте с помощью команды меню Help > Context Sensitive Help [Помощь > Контекстно-чувствительная помощь], с помощью функциональной клавиши F или щелчком на символе вопросительного знака на панели инструментов. Справочная информация по STEP 7 через команду меню Help > Contents [Помощь > Содержание]. vi C79-G7-C562-
6 Предисловие Курсы по продуктам SIMATIC Фирма Siemens предлагает ряд учебных курсов для ознакомления с системой автоматизации SIMATIC S7. Для получения более подробной информации обращайтесь в свой региональный учебный центр или в центральный учебный центр в Нюрнберге, Германия: Телефон: +49 (9) viii C79-G7-C562-
7 Содержание Предисловие v Обзор продукта 2 Структура и компоненты команд и операторов 2 2. Структура оператора Значение регистров CPU в операторах 2 3 Адресация 3 3. Непосредственная адресация Прямая адресация Косвенная адресация через память Адресные регистры Косвенная адресация внутри области через регистр Косвенная адресация с указанием области через регистр Операции с аккумуляторами и команды, использующие адресные регистры 4 4. Обзор ENT и LEAVE Инкрементирование и декрементирование AR и +AR2: прибавление константы к адресному регистру или адресному регистру Битовые логические операции 5 5. Булева битовая логика Битовые логические операции и релейно-контактные схемы Анализ условий с помощью И, ИЛИ и исключающего ИЛИ Скобочные выражения и И перед ИЛИ Команды для оценки фронтов: FP, FN Выход цепи булевых логических операций Команды установки и сброса: S и R Команда присваивания (=) Отрицание, установка, сброс и сохранение RLO Таймерные команды 6 6. Обзор Размещение таймера в памяти и компоненты таймера Загрузка, запуск, сброс и разблокировка таймера Примеры таймеров Адреса и диапазоны для таймерных команд Выбор подходящего таймера Операции со счетчиками 7 7. Обзор Установка, сброс и разблокировка счетчика 7 3 Error! Unknown document property name. i
8 Содержание 7.4 Загрузка значения счетчика в виде целого числа Загрузка значения счетчика в двоично-десятичном формате Пример счетчика Адреса и диапазоны для операций со счетчиками 7 8 Команды загрузки и передачи 8 8. Обзор Загрузка и передача Чтение слова состояния или передача в слово состояния Загрузка значений времени и счетчиков как целых чисел Загрузка значений времени и счетчиков в двоично-десятичном формате Загрузка и передача между адресными регистрами Загрузка информации о блоке данных Арифметические операции с целыми числами 9 9. Основные арифметические операции Прибавление целого числа к аккумулятору 9 6 Операции над числами с плавающей точкой. Основные арифметические операции 2.2 Образование абсолютной величины числа с плавающей точкой 6.3 Расширенные арифметические операции 7.4 Образование квадрата / квадратного корня числа с плавающей точкой 9.5 Образование натурального логарифма числа с плавающей точкой.6 Образование экспоненциального значения числа с плавающей точкой 2.7 Образование тригонометрических функций углов как чисел с плавающей точкой 3 Операции сравнения. Обзор 2.2 Сравнение двух целых чисел 3.3 Сравнение двух чисел с плавающей точкой 5 2 Команды преобразования 2 2. Преобразование чисел в двоично-десятичном коде и целых чисел Преобразование чисел с плавающей точкой (32 бита) в целые числа (32 бита) Изменение последовательности байтов в аккумуляторе Образование дополнений и изменение знака чисел с плавающей точкой Логические операции со словами 3 3. Обзор Логические операции с 6 битовыми словами Логические операции с 32 битовыми словами Команды сдвига и циклического сдвига 4 4. Команды сдвига Команды циклического сдвига 4 6 ii Error! Unknown document property name.
9 Содержание 5 Операции с блоками данных 5 5. Открытие блоков данных Обмен регистрами блоков данных Загрузка длин и номеров блоков данных Команды перехода 6 6. Обзор Команды безусловного перехода Команды условного перехода, зависящие от результата логической операции Команды условного перехода, зависящие от битов BR, OV или OS слова состояния Команды условного перехода, зависящие от значения битов CC и CC слова состояния Циклическое управление Команды управления программой 7 7. Назначение параметров при вызове FC и FB Вызов функций и функциональных блоков с помощью CALL Вызов функций и функциональных блоков с помощью CC и UC Работа с функциями Master Control Relay Команды Master Control Relay Завершение блоков 7 6 А Алфавитный список команд А А. Список немецкой (SIMATIC) и международной мнемоники А 2 А.2 Алфавитный список международных наименований А В Примеры программирования В В. Обзор В 2 В.2 Битовые логические операции B 3 В.3 Таймерные команды B 7 В.4 Операции счета и сравнения B В.5 Арифметические операции с целыми числами B 2 В.6 Логические операции со словами B 4 С Зарезервированные ключевые слова, используемые в исходных файлах С D Литература D Глоссарий Глоссарий Error! Unknown document property name. iii
10 Содержание iv Error! Unknown document property name.
12 Error! Style not defined. Если вы пишете программу в LAD или FBD, то вы всегда можете перейти к представлению STL. Если вы преобразуете программу на языке LAD в программу на языке FBD и наоборот, то элементы программы, которые не могут быть представлены на целевом языке, отображаются на STL. Hier den Titel eintragen C79-G7-C562-
13 2 Структура и компоненты команд и операторов Обзор главы Раздел Описание Стр. 2. Структура оператора Значение регистров CPU в операторах 2 C79-G7-C562-2-
15 Структура и компоненты команд и операторов Постоянные значения Таблица 2 показывает, как можно использовать постоянное значение в качестве операнда команды. Таблица 2. Операнды, указывающие на значение или строку символов Оператор Описание Команда Операнд Константа L +27 Загрузить целое число 27 в аккумулятор. L END Загрузить символы ASCII END в аккумулятор. Биты слова состояния Операнд команды списка операций может обращаться к одному или более битам слова состояния программируемого логического контроллера (см. раздел 2.2). Команда опрашивает состояние сигнала отдельного бита слова состояния (например, A BR) и реагирует на него или интерпретирует комбинацию из двух битов (например, A UO). Таблица 2 2. Операнды, ссылающиеся на бит слова состояния Оператор Описание Команда Операнд Бит слова состояния A BR или в бите 8 слова состояния включается в булеву логическую комбинацию. A UO Команда интерпретирует комбинацию, которую она находит в битах CC и CC слова состояния, чтобы выяснить, выполняется ли определенное условие. Например, комбинация из и означает «недопустимо», т.е. одно из значений в операции с плавающей точкой не было в действительности числом с плавающей точкой. C79-G7-C
16 Структура и компоненты команд и операторов Символическое имя Таблица 2 3 показывает, как использовать символическое имя в качестве операнда команды. Вы можете использовать символические имена в операторах AWL только после того, как вы их описали: глобальные символические имена должны быть введены в таблицу символов, а локальные имена в блок. Таблица 2 3. Операнды, указывающие на символическое имя Оператор Описание Команда Операнд Символ A Motor.On Выполнить логическую операцию И с битом, имеющим символическое имя «Motor.On». В этом примере символическое имя «Motor.On» может представлять только один бит из области памяти блока данных (D) или элемент структуры «MOTOR». L SPEED Загрузить значение в виде байта, слова или двойного слова с символическим именем SPEED в аккумулятор. Блок данных и адрес в блоке данных Таблица 2 4 показывает, как использовать блок данных и адрес в этом блоке данных в качестве операнда команды. Таблица 2 4. Операнды, указывающие на блок данных или адрес в блоке данных Оператор Описание Команда Операнд Блок данных и адрес L DB4.DBD Загрузить двойное слово данных DBD из блока данных DB4 в аккумулятор. A DB.DBX4.3 Выполнить логическую операцию И с битом данных DBX4.3 из блока данных DB. 2-4 C79-G7-C562-
18 Структура и компоненты команд и операторов Таблица 2 6. Идентификатор операнда, задающий область памяти и размер объекта данных Тип адресации Команда Идентификатор операнда Адрес операнда Область памяти Размер объекта данных (если размер не указан, то подразумевается бит) Прямая A I. Прямая L I B Косвенная через A I [MD2] память Косвенная через L I B [DID4] память Косвенная внутри A I [AR, P#4.3] области через регистр Косвенная внутри области через регистр T L D [AR2, P#53.] Таблица 2 7. Идентификатор операнда, задающий область памяти, но не задающий размер объекта данных Тип адресации Команда Идентификатор операнда: Область памяти Номер или адрес номера Прямая OPN DB 5 Прямая SP T 7 Косвенная через OPN DB [LW2] память Косвенная через память S C [MW44] Таблица 2 8. Идентификатор операнда, задающий размер объекта данных, но не задающий область памяти Тип адресации Команда Размер объекта данных Адрес операнда (если размер не указан, то подразумевается бит.) Косвенная с A [AR, P#4.3] указанием области через регистр Косвенная с указанием области через регистр L B [AR, P#.] Таблица 2 9. Операнды, состоящие из идентификатора операнда и адреса операнда Оператор Описание Команда Операнд Идентификатор операнда Адрес в области памяти или регистре A I. Выполнить логическую операцию И с входным битом I.. A I [MD2] Выполнить логическую операцию И с входным битом, точный адрес которого находится в двойном слове памяти MD2. L C Загрузить счетное значение счетчика в аккумулятор. 2-6 C79-G7-C562-
19 Структура и компоненты команд и операторов Работа со словом или двойным словом как с объектом данных Если вы работаете с командой, идентификатор операнда которой задает область памяти вашего программируемого логического контроллера, и с объектом данных, который по размеру является словом или двойным словом (см. табл. 2 6), то вы должны знать, что на адрес памяти всегда ссылаются как на адрес байта. Этот адрес байта является номером самого старшего байта слова или двойного слова. Например, операнд оператора, показанного на рис. 2 2, обращается к четырем следующим друг за другом байтам в области памяти M, начинающимся байтом (MB) и заканчивающимся байтом 3 (MB3). Оператор: L MD Идентификатор операнда Адрес байта Рис Пример адреса памяти, к которому обращаются как к адресу байта Рис. 2 3 иллюстрирует объекты данных следующих размеров: двойное слово: двойное слово памяти MD слово: слова памяти MW, MW и MW3 байт: байты памяти MB, MB, MB2 и MB3 Если вы используете абсолютные операнды, являющиеся словом или двойным словом, то убедитесь, что вам удалось избежать перекрытия байтов разных слов. 5 5 MW MW2 MB MB MB2 MB3 MSB 3 LSB MW 6 5 MD Рис Обращение к адресу памяти как к байтовому адресу Области памяти и их функции Большинство операндов в AWL обращаются к областям памяти. В следующей таблице перечислены области памяти и описаны функции каждой области. C79-G7-C
20 Структура и компоненты команд и операторов Таблица 2. Области памяти и их функции Имя области Функция области Доступ к области через единицы следующего размера: Вход образа процесса Выход образа процесса Битовая память Периферия: внешний вход Периферия: внешний выход Таймеры Счетчики Блок данных В начале цикла сканирования операционная система считывает входы из процесса и записывает эти значения в эту область. Программа может использовать эти значения при циклической обработке. При выполнении цикла сканирования программа рассчитывает выходные значения и помещает их в эту область. В конце цикла сканирования операционная система считывает рассчитанные выходные значения из этой области и передает их на выходы процесса. Эта область предоставляет место для хранения промежуточных результатов, рассчитанных в программе. Эта область обеспечивает прямой доступ вашей программе к модулям ввода и вывода (т.е., к периферийным входам и выходам). Таймеры это функциональные элементы программирования на AWL. Эта область предоставляет место для хранения таймерных ячеек. В этой области генератор тактовых импульсов обращается к ячейкам времени, чтобы обновить их путем уменьшения значения времени, а таймерные команды получают доступ к ячейкам времени. Счетчики это функциональные элементы программирования на AWL. Эта область предоставляет место для хранения счетчиков. Операции счета получают доступ к ним здесь. Эта область содержит данные, к которым можно обратиться из любого блока. Если вам нужно иметь два различных блока данных, открытых одновременно, то один из них можно открыть оператором «OPN DB», а второй оператором «OPN DI». Благодаря этому CPU может отличить, к какому из двух блоков данных хочет обратиться ваша программа, когда открыты оба блока. Хотя вы можете использовать оператор «OPN DI» для открытия любого блока данных, этот оператор в основном используется для открытия экземплярных блоков данных, связанных с функциональными блоками (FB) и системными функциональными блоками (SFB). За дополнительной информацией о FB, SFB и экземплярных блоках данных обращайтесь к оперативной справке STEP 7. Входной бит Входной байт Входное слово Входное двойное слово Выходной бит Выходной байт Выходное слово Выходное двойное слово Бит памяти (меркер) Байт памяти (меркерный байт) Слово памяти (меркерное слово) Двойное слово памяти (двойное меркерное слово) Периферийный входной байт Периферийное входное слово Периферийное входное двойное слово Периферийный выходной байт Периферийное выходное слово Периферийное выходное двойное слово Таймер (T) Счетчик (C) Блок данных, открытый оператором «OPN DB»: Бит данных Байт данных Слово данных Двойное слово данных Сокращение I IB IW ID Q QB QW QD M MB MW MD PIB PIW PID PQB PQW PQD T C DBX DBB DBW DBD 2-8 C79-G7-C562-
21 Структура и компоненты команд и операторов Таблица 2. Области памяти и их функции Имя области Функция области Доступ к области через единицы следующего размера: Блок данных, открытый оператором «OPN DI»: Локальные данные Эта область содержит временные данные, используемые внутри логического блока (OB, FB или FC). Эти данные называются также динамическими локальными данными. Они служат в качестве промежуточного буфера. Когда логический блок завершает работу, эти данные теряются. Эти данные хранятся в стеке локальных данных (L-стек). Бит данных Байт данных Слово данных Двойное слово данных Бит временных локальных данных Байт временных локальных данных Слово временных локальных данных Двойное слово временных локальных данных DIX DIB DIW DID Таблица 2 перечисляет максимальные диапазоны адресов различных областей памяти. Диапазон адресов, возможный в вашем CPU, вы найдете в технических данных CPU. Функции областей памяти объясняются в таблице 2. Сокращение Таблица 2. Области памяти и их диапазоны адресов Имя области Доступ к области Максимальный через единицы следующего размера: Сокращение диапазон адресов Вход образа процесса Выход образа процесса Битовая память Периферия: внешний вход Периферия: внешний выход Входной бит Входной байт Входное слово Входное двойное слово Выходной бит Выходной байт Выходное слово Выходное двойное слово Бит памяти (меркер) Байт памяти (меркерный байт) Слово памяти (меркерное слово) Двойное слово памяти (двойное меркерное слово) Периферийный входной байт Периферийное входное слово Периферийное входное двойное слово Периферийный выходной байт Периферийное выходное слово Периферийное выходное двойное слово I IB IW ID Q QB QW QD M MB MW MD PIB PIW PID PQB PQW PQD от. до 65,535.7 от до 65,535 от до 65,534 от до 65,532 от. до 65,535.7 от до 65,535 от до 65,534 от до 65,532 от. до от до 255 от до 254 от до 252 от до 65,535 от до 65,534 от до 65,532 от до 65,535 от до 65,534 от до 65,532 Таймеры Таймер (T) T от до 255 Счетчики Счетчик (C) C от до 255 Блок данных Блок данных, открытый оператором «OPN DB»: Бит данных Байт данных Слово данных Двойное слово данных DBX DBB DBW DBD от. до 65,535.7 от до 65,535 от до 65, 534 от до 65,532 Блок данных, открытый оператором «OPN DI»: Бит данных Байт данных Слово данных Двойное слово данных DIX DIB DIW DID от. до 65,535.7 от до 65,535 от до 65, 534 от до 65,532 L LB LW LD C79-G7-C
22 Структура и компоненты команд и операторов Таблица 2. Области памяти и их диапазоны адресов Имя области Доступ к области Максимальный через единицы следующего размера: Сокращение диапазон адресов Локальные данные Бит временных локальных данных Байт временных локальных данных Слово временных локальных данных Двойное слово временных локальных данных L LB LW LD от. до 65,535.7 от до 65,535 от до 65, 534 от до 65, Значение регистров CPU в операторах Аккумуляторы Два 32 битных аккумулятора это регистры общего назначения, используемые для обработки байтов, слов и двойных слов. Вы можете загружать константы и значения из памяти в качестве операндов в аккумулятор и выполнять над ними логические операции. Вы можете также передать результат операции из аккумулятора по указанному адресу. Рис. 2 4 показывает области аккумулятора. Стековый механизм для управления аккумулятором выглядит следующим образом: Команда загрузки всегда воздействует на аккумулятор и сохраняет старое содержимое в аккумуляторе 2. Команда передачи не изменяет аккумуляторы (за исключением команд TAR и TAR2). Команда TAK обменивает содержимое аккумуляторов и 2. За информацией об управлении аккумуляторами для арифметических команд обратитесь к разделу Старший байт Младший байт Старший байт Младший байт Старшее слово Рис Области аккумулятора Аккумулятор ( или 2) Младшее слово Скобочный стек Скобочный стек это область памяти, имеющая ширину один байт. Эта область памяти используется скобочными командами A(, O(, X(, AN(, ON(, XN(. Эти команды сохраняют текущий результат логической операции (RLO) в скобочном стеке и начинают новую логическую цепочку. Скобочный стек может принять семь записей. Запись скобочного стека состоит из битов RLO, BR и OR слова состояния и кода функции, указывающего, какая из булевых логических операций должна использоваться (A, AN, O, ON, X или XN). 2- C79-G7-C562-
23 Структура и компоненты команд и операторов Команда «)»завершает скобочное выражение, выполняя следующие функции: Извлекает запись из скобочного стека Восстанавливает биты OR и BR Определяет новый RLO, логически комбинируя текущий RLO (т.е. RLO из выражения, заключенного в скобки) с RLO записи стека в соответствии с кодом функции (см. раздел 5.4) Рисунок 2 5 показывает структуру записи в скобочном стеке. Под этим рисунком вы найдете объяснение битов байта скобочного стека BR RLO OR Код функции Рис Структура записи в скобочном стеке Байт скобочного стека содержит следующие биты (см. рис. 2 5): неназначенные биты (биты 7 и 6 с состоянием сигнала ) сохраняемый двоичный результат (BR) сохраняемый результат логической операции (RLO) сохраняемый бит OR в функциях A( и AN( Во всех остальных функциях сохраняется ноль код функции (в битах 2, и ) Код функции С помощью кода функции команда «)» определяет функцию, которая должна использоваться для комбинирования текущего RLO (т.е. RLO из выражения, заключенного в скобках) с RLO записи скобочного стека. Таблица 2 2 показывает комбинации битов кода функции для каждого вида функции: Таблица 2 2. Код функции из байта скобочного стека Команда Код функции 2 Код функции Код функции A( AN( O( ON( X( XN( Скобочный стек с записями и указателем Скобочный стек и указатель этого стека должны сохраняться в стеке прерываний или извлекаться из него при переходе от одного уровня вложения к другому. Число в указателе скобочного стека показывает, количество записей, имеющихся в этом стеке (см. рис. 2 6). C79-G7-C562-2-
24 Структура и компоненты команд и операторов 5 7 Запись 7 скобочного Запись 6 скобочного стека стека Запись 5 скобочного стека Запись 3 скобочного стека Запись скобочного стека Запись 4 скобочного стека Запись 2 скобочного стека Указатель скобочного стека Адреса по возрастанию Рис Структура скобочного стека с записями и указателем Слово состояния Слово состояния содержит биты, к которым вы можете обратиться в операндах логических команд, выполняемых с битами и словами. Рис. 2 7 показывает структуру слова состояния. Разделы, следующие за этим рисунком, объясняют значение битов с по BR CC CC OV OS OR STA RLO FC Рис Структура слова состояния Первичный опрос Бит слова состояния называется битом первичного опроса (бит FC, см. рис. 2 7). Состояние сигнала в бите FC указывает, что за этой точкой в вашей программе следующая логическая команда начинает новую цепь логических операций. (Черта над FC показывает, что этот бит берется с отрицанием). Каждая логическая команда опрашивает состояние сигнала бита FC, а также состояние сигнала операнда, к которому она обращается. Если бит FC равен, то команда сохраняет результат опроса состояния сигнала в бите результата логической операции слова состояния (бит RLO, см. следующий раздел) и устанавливает бит FC в. Этот процесс называется первичным опросом (см. рис. 2 8 и раздел 5.6). Если состояние сигнала бита FC равно, то команда логически сопрягает результат опроса состояния сигнала операнда, к которому она обращается, со значением, хранящимся в предыдущем бите RLO (см. рис. 2 8). Цепь логических команд всегда заканчивается командой вывода (S, R или =, см. разделы 5.7 и 5.8), командой перехода, связанной с результатом логической операции (JC, см. раздел 6) или одной из скобочных команд A(, O(, X(, AN(, ON( или XN( (см. раздел 5.4). Каждая такая команда сбрасывает бит FC в (см. рис. 2 8). 2-2 C79-G7-C562-
25 Структура и компоненты команд и операторов Результат логической операции Бит слова состояния называется битом RLO (RLO означает «result of logic operation [результат логической операции]», см. рис. 2 7). Этот бит хранит результат битовой логической операции или операции сравнения. Например, вторая команда в цепи битовых логических команд опрашивает состояние сигнала операнда и дает результат или. Затем эта команда логически сопрягает этот результат со значением, хранящимся в бите RLO слова состояния в соответствии с правилами булевой логики (см. выше Первичный опрос и главу 5). Результат этой логической операции сохраняется в бите RLO слова состояния, заменяя предыдущее значение бита RLO. Каждая последующая команда в цепи выполняет логическую операцию с двумя значениями: результатом, полученным при опросе командой операнда, и текущим значением RLO. Вы можете устанавливать RLO в безусловно с помощью команды SET; вы можете сбрасывать RLO в безусловно с помощью команды CLR. Вы можете использовать булеву битовую логическую команду при первичном опросе для присваивания RLO состояния содержимого ячейки битовой памяти. Вы можете использовать RLO для запуска команд перехода. Программа на AWL Состояние сигнала входа (I) или выхода (Q) Результат опроса Бит RLO Бит FC Объяснение Бит FC= указывает, что следующая команда начинает логическую цепь. A I. Результат первичного опроса сохраняется в бите RLO. Бит FC устанавливается в. AN I. Результат опроса сопрягается с предыдущим RLO в соответствии с таблицей истинности для И. Бит FC остается равным. = Q 4. Значение RLO присваивается выходу. Бит FC сбрасывается в. Рис Влияние состояния сигнала бита FC на логические операции Бит состояния Бит состояния (бит STA) сохраняет значение бита, к которому происходит обращение. Состояние битовой команды, которая имеет доступ к памяти на чтение (A, AN, O, ON, X, XN), всегда равно значению бита, опрашиваемого этой командой (т.е. бита, с которым она выполняет логическую операцию). Состояние битовой команды, которая имеет доступ к памяти на запись (S, R, =), равно значению бита, в который команда производит запись, или, если запись не производится, то оно равно значению бита, к которому команда обращается. Бит состояния не имеет значения для битовых команд, не обращающихся к памяти. Такие команды устанавливают бит состояния в (STA=). Бит состояния не опрашивается командой. Он интерпретируется только при тестировании программы (статус программы). C79-G7-C
28 Структура и компоненты команд и операторов Сохраняйте RLO в бите BR со значением, если FB или FC выполняется без ошибок. Сохраняйте RLO в бите BR со значением, если FB или FC выполняется с ошибкой Вы должны запрограммировать эти команды в конце FB или FC, чтобы они были последними командами, выполняемыми в блоке. Когда вы вызываете в своей программе системный функциональный блок (SFB) или системную функцию (SFC), SFB или SFC показывает, смог ли CPU выполнить функцию без ошибок или нет, предоставляя в бите двоичного результата следующую информацию: Если при выполнении произошла ошибка, то бит BR равен. Если функция была исполнена без ошибок, то бит BR равен. 2-6 C79-G7-C562-
29 3 Адресация Обзор главы Раздел Описание Стр. 3. Непосредственная адресация Прямая адресация Косвенная адресация через память Адресные регистры Косвенная адресация внутри области через регистр 3.6 Косвенная адресация с указанием области через регистр C79-G7-C562-3-
30 Адресация 3. Непосредственная адресация Описание При непосредственной адресации операнд кодируется непосредственно в команде; то есть за командой непосредственно следует значение, с которым должна работать данная команда (например, загрузка). Команда также может предоставить свое собственное значение (например, SET, см. табл. 3 ). Примеры Таблица 3. Непосредственная адресация SET Установить RLO в. OW W#6#A32 Поразрядное ИЛИ со словом. L 27 Загрузить целое число 27 в аккумулятор. L ABCD Загрузить символы ASCII ABCD в аккумулятор. L B#(,2) Загрузить два байта и 2 в аккумулятор. L C# Загрузить значение в формате BCD в аккумулятор. 3-2 C79-G7-C562-
31 Адресация 3.2 Прямая адресация Описание Команда, использующая прямую адресацию, имеет операнд, указывающий местоположение значения, которое команда будет обрабатывать, и состоящий из следующих двух частей: идентификатора операнда (например, «IB» для «входного байта») точного адреса внутри области памяти, указанной идентификатором операнда Операнд прямо указывает на адрес значения. Примеры Таблица 3 2. Прямая адресация A I. Выполнить логическую операцию И с входным битом I.. S L 2. Установить бит локальных данных L 2.. = M 5.4 Присвоить RLO биту памяти M 5.4 L IB Загрузить входной байт IB в аккумулятор. L MW64 Загрузить слово памяти MW64 в аккумулятор. T DBD2 Передать содержимое из аккумулятора в двойное слово данных DBD2. C79-G7-C
33 Адресация Формат указателя Есть два возможных формата указателя: слово и двойное слово. Сокращенное обозначение для формата в виде слова заканчивается на W (например, DBW). Рис. 3 показывает формат указателя для слова. Сокращенное обозначение для формата в виде двойного слова заканчивается на D (например, DBD). Рис. 3 2 показывает формат указателя для двойного слова n n n n n n n n n n n n n n n n Биты от до 5 (nnnn nnnn nnnn nnnn): номер (диапазон от до ) таймера (T), счетчика (Z), блока данных (DB), функции (FC) или функционального блока (FB) Рис. 3. Формат указателя в виде слова для косвенной адресации через память AWL L +5 T MW2 OPN DB[MW2] Объяснение Загрузить значение 5 как целое число в аккумулятор. Передать содержимое аккумулятор в слово памяти MW2. Открыть блок данных 5. STL OPN DB L +2 T DBW A T[DBW] Объяснение Открыть блок данных DB. Загрузить значение 2 как целое число в аккумулятор. Передать содержимое аккумулятор в слово данных DBW. Опросить состояние сигнала таймера T b b b b b b b b b b b b b b b b x x x Биты с 3 по 8 (bbbb bbbb bbbb bbbb): номер (диапазон от до ) адресуемого байта Биты с по 2 (xxx): номер (диапазон от до 7) адресуемого бита Рис Формат указателя в виде двойного слова для косвенной адресации через память Замечание Если вы обращаетесь к байту, слову или двойному слову, то убедитесь, что номер бита указателя равен. C79-G7-C
34 Адресация Два следующих примера показывают, как работать с форматом указателя в виде двойного слова: AWL L P#8.7 T MD2 A I [MD2] = Q [MD2] Объяснение Загрузить 2# (двоичное значение) в аккумулятор. Запомнить адрес 8.7 в двойном слове памяти MD2. Контроллер опрашивает входной бит I 8.7 и присваивает состояние его сигнала выходному биту Q 8.7. AWL L P#8. T MD2 L IB [MD2] T MW [MD2] Объяснение Загрузить 2# (двоичное значение) в аккумулятор. Запомнить адрес 8 в двойном слове памяти MD2. Контроллер загружает входной байт IB8 и передает содержимое в слово памяти MW8. Точный адрес 8 получается из двойного слова памяти MD C79-G7-C562-
35 Адресация 3.4 Адресные регистры Объяснение Для некоторых видов косвенной адресации при программировании в AWL необходимы определенные регистры CPU. Эти регистры описаны ниже. Адресные регистры и 2 Адресные регистры и 2 (AR и AR2) это 32-битные регистры, которые принимают указатель на адрес внутри заданной области или указатель, содержащий информацию об области, для команд, использующих косвенную адресацию через регистр (см. разделы 3.5 и 3.6). Указатели Указатели используются при косвенной адресации через регистр (см. разделы 3.5 и 3.6). В распоряжении имеются два следующих вида указателей: внутренние для области: для доступа внутри заданной области к битам, байтам, словам и двойным словам в областях памяти P, I, Q, M, DBX, DIX и L с указанием области: для доступа с указанием области к битам, байтам, словам и двойным словам в областях памяти P, I, Q, M, DBX, DIX и L C79-G7-C