Степ 7 язык программирования

Программирование ПЛК 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.
Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программирования

Кроме этого, к ПЛК через сеть Profibus подключалось большое количество ведомых устройств, таких как частотные преобразователи, приводы, абсолютные/инкрементные энкодеры и пр.

Вся работа ГП машины по максимуму автоматизировалась и крановщику нужно применять минимум усилий для управления оной.

Что из себя представляет Simatic Step 7?

Главной утилитой является Step 7 — Simatic Manager, которая позволяет производить конфигурацию ПЛК и сетей (утилиты HWConfig и NetPro).

Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программирования

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

Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программирования

Утилиты конфигурации позволяют осуществлять диагностику оборудования, обнаруживать аппаратные ошибки или неправильный монтаж.

Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программирования

Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программирования

Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программирования

ПЛК выполняет команды в порядке, определяемом программой, сверху вниз, затем начинает сначала.
С помощью редактора STL всегда можно посмотреть или отредактировать программы, созданные на LAD или FBD, обратное не всегда возможно.

Я работала с самого начала в STL, пробовала LAD, мне показался слишком непонятным и многие вещи таки не удавалась так просто в нем сделать, как в STL. Плюс еще в том, что при загрузке программы в ПЛК, она компилируется в STL и, соответственно, при выкачке ее из ПЛК на программатор она так же представлена в STL.

Вместо заключения

Программирование ПЛК занятие увлекательное, особенно когда это не стенд, а реальное оборудование.
Моя работа заключалась в создании программы на ПЛК для управления всей ГП машины либо отдельных ее частей, а так же загрузке программного обеспечения непосредственно в оборудование и его отладке.
Случалось разное, но работать с железом было очень интересно, хоть и не легко иногда.
А строили мы вот такие ГП машины:
Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программирования

Источник

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

Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программированияУстановите переключатель режимов работы в положение STOP, должен загореться красный светодиод.
Сброс CPU и переключение в RUN
Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программированияУстоновите переключатель в положение MRES и удерживайте его там не менее 3 секунд, пока красный светодиод не начнет медленно мигать. Отпустите переключатель и спустя не более 3 секунд снова поверните его в положение MRES. Когда светодиот замигает быстро CPU сброшен. Если светодиод «STOP» не начинает быстро мигать, повторите эту процедуру.

Сброс данных удаляет все данные с CPU после чего контроллер переходит в свое начальное состояние. Вы можете удалить данные с CPU через программу Step7 в режиме OnLine выбрав в меню PLC > Clear/Reset

Перед загрузкой программы установите переключатель в режим STOP

Откройте ваш проект в Simatic Manager

Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программированияПомимо окна «Your Program Offline» откройте окно «Your Program OnLine» (состояние offline или online показываеться с помощью заголовков различного цвета)
Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программированияПереместитесь в обоих окнах к папке Blocks [Блоки].

Системные функции (SFC) остаются в CPU, хотя вы и выполнили сброс памяти. CPU предоставляет в распоряжение эти функции операционной системы. Их не нужно загружать, но они не могут быть и удалены.

Вы также можете загружать блоки по отдельности при помощи буксировки мышью, это поможет быстро реагировать на ошибки. При загрузке блоков переключатель должен находиться в положении RUN-P или STOP. Блоки загруженные в режиме RUN-P активизируются немедленно. Поэтому запомните:

Программирование в режиме online

На практике, в целях тестирования, вам может потребоваться изменять блоки, уже загруженные в CPU. Для этого дважды щелкните на требуемом блоке в окне online, чтобы открыть окно для программирования LAD/STL/FBD. Затем программируйте блок, как обычно. Обратите внимание, что запрограммированный блок немедленно становится активным в вашем CPU.

Тестирование программы с помощью функции Статус

Используя функцию «Статус программы», вы можете тестировать программу в блоке. Предпосылкой для этого является установление соединения online с CPU, CPU должен находиться в режиме RUN или RUN-P, а программа должна быть загружена.

Откройте OB1 в окне проекта «Your program ONLINE.» Откроется окно для программирования LAD/STL/FBD.

Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программированияВыделите папку Blocks [Блоки] в окне offline, а затем загрузите программу в CPU с помощью команды меню PLC > Download [ПЛК > Загрузить]. После приглашения подтвердите команду с помощью OK. Загружаемые блоки отображаються в окне OnLine
Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программированияАктивизируйте функцию Debug >Monitor [Отладка > Наблюдение].
отладка в случае контактного плана
Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программированияВ контактном плане в сегменте 1 отображается последовательная цепь. Путь тока представляется сплошной линией вплоть до Key_1 (I 0.1); это значит, что в цепь уже подано питание.
Отладка в случае функционального плана
Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программированияСостояние сигнала показывается с помощью «0» и «1.» Пунктирная линия показывает, что результат логической операции отсутствует.
Отладка в случае списка операторов
Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программированияДля списка операторов в табличной форме отображается следующее:
– результат логической операции (RLO)
– бит состояния (STA)
– стандартное состояние (STANDARD)

Используя команду меню Options >Customize [Параметры > Настроить], вы можете изменить способ, которым язык программирования представляется во время тестирования.

Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программированияВ графических языках программирования Контактный план и Функциональный план вы можете проследить результаты тестирования, просматривая изменение цвета в сегментах программы. Это изменение цвета показывает, что результат логической операции выполнен до этой точки.
Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программированияВ Списке операторов отображение в столбцах STA и RLO меняется, когда результат логической операции выполняется.
Если у вас очень большая программа, рекомендую загружать ее блоками, т.к. диагностирование ошибок в больших программах затруднено из-за наличия нескольких возможных источников ошибки.

Тестирование программы с помощью таблицы переменных

Для того чтобы выполнить тестирование этим способом, установите режим OnLine, а CPU переведите в режим RUN-P

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

Создание таблицы переменных

Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программированияВ папке Блоки окна «Your program Offline» открыв контекстное меню в правой половине окна
Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программированияВыберетеVariable Table [Таблицу переменных]
Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программированияПримите параметры настройки по умолчанию, закрыв диалоговое окно «Properties [Свойства]» щелчком на OK.
Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программированияVAT1 (таблица переменных) создается в папке блоков.

Дважды щелкните на VAT1, чтобы открыть таблицу; откроется окно «Monitoring and Modifying Variables [Наблюдение и изменение переменных]».

Сначала таблица переменных пуста. Введите символические имена или адреса для примера «Your program» в соответствии со следующей иллюстрацией. Остальные элементы будут добавлены, когда вы завершите ввод нажатием Enter.

Замените формат наблюдения (Monitior Format) всех значений скорости форматом DEC (десятичный). Для этого щелкните на соответствующей
ячейке в заголовке и, используя правую кнопку мыши, выберите формат DEC.
Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программирования

Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программированияСохраните вашу таблицу и включите ее в режим OnLine при помощи кнопки ON на панели инструментов таблицы. В строке состояния появится слово
«ONLINE». Переключите CPU в режим RUN-P

Наблюдение за переменными

Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программированияЩелкните на кнопке Monitor Variables [Наблюдать переменные] на панели инструментов. В строке состояния отобразится режим работы CPU.

Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программированияПодайте сигнал на ключ 1 и 2 и наблюдайте за результатом. Значения в таблице переменных изменятся с false[ложь] на true [истина]

Изменение переменных

Введите значение «1500» для адреса MW2 в столбце Modify Value [Изменение значений] и «1300» для адреса MW4.
Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программирования

Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программированияПередайте измененные значения в свой CPU.

После передачи эти значения будут обрабатываться в вашем CPU. Результат сравнения становится видимым.
Остановите наблюдение за переменными (снова щелкните на кнопке на панели инструментов) и закройте окно. Подтверждайте любые запросы с помощью Yes или OK.
Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программирования
Очень большие таблицы часто не могут быть отображены полностью из-за ограниченных размеров экрана.
Если у вас есть большие таблицы, то мы рекомендуем вам создать несколько таблиц для одной программы S7 с помощью STEP 7. Вы можете приспособить таблицы переменных, чтобы они точно удовлетворяли вашим требованиям при тестировании.
Вы можете назначать индивидуальные имена таблицам переменных таким же способом, как и для блоков (например, имя OB1_Network1 вместо VAT1). Для назначения новых имен используйте таблицу символов.

Анализ диагностического буфера

Если, в крайнем случае, CPU переходит в STOP при обработке программы S7, или вы не можете переключить CPU в RUN после загрузки программы, то вы можете определить причину ошибки из событий, перечисленных в диагностическом буфере.

Предпосылкой для этого является установление связи online с CPU и нахождение CPU в состоянии STOP.

Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программированияОткройте Окно проекта «Your program Offline» ивыделите папку Блоки

Если в вашем проекте имеется несколько CPU, сначала определите, какой CPU перешел в STOP.

Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программированияВсе доступные CPU перечислены в диалоговом окне «Diagnosing Hardware [диагностирование аппаратуры]». CPU, находящееся в состоянии STOP, выделены
подсветкой. Наш проект имеет только один CPU.

Щелкните на кнопке Module Information [Информация о модуле], чтобы проанализировать диагностический буфер этого CPU.

Если подключен только один CPU, то вы можете запросить информацию о модуле для этого CPU непосредственно с помощью команды меню PLC > Module Information [ПЛК > Информация о модуле].
Окно «Module Information [Информация о модуле]» предоставляет вам информацию о свойствах и параметрах вашего CPU. Теперь выберите вкладку «Diagnostic Buffer [Диагностический буфер]», чтобы определить причину перехода в состояние STOP.
Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программирования

Пояснение к рисунку:
Самое последнее событие (номер 1) находится наверху списка. Отображается причина перехода в состояние STOP.

Если переход CPU в состояние STOP вызвала ошибка программирования, выберите событие и щелкните на кнопке «Open Block [Открыть блок]».
В знакомом вам окне для программирования LAD/STL/FBD открывается блок, и сегмент, содержащий ошибку, выделяется подсветкой.

Источник

Simatic Step 7, STL, сглаживание (Smooth) сигнала аналогового входа 4-20mA.

Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программирования

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 число).

Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программирования

У различных модулей аналоговых входов 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.

Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программирования

Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программирования

Это привело к тому, что адрес указателя в буфере не изменяется и программа постоянно стоит на первом слове.

Проверил на рабочем S7-300, нет, все работает как и должно быть.

Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программирования

И ревизия PLCSIM у меня вроде не старая (K5.4.5.2), раньше проблем не было, в общем не понял…
Если хотите, чтобы FB нормально работал и в симуляторе, его нужно немного изменить. Не полагаться на то, что нужное число осталось в ACCU 2, а принудительно загрузить его в ACCU 1. Вырезаем следующие строки:

и в самый конец блока (после T #OUTPUT) добавляем:

Создавать блоки данных для функциональных блоков вручную нет необходимости и не рекомендуется. Лучше чтобы их создал STEP 7. Для этого нужно в месте вызова функционального блока вызвать его с номером требуемого блока данных. Примерно так:

При этом FB30 должен быть скомпилирован и находиться в папке Blocks, номер блока данных может быть любым, еще не используемым. После нажатия «Enter» STEP 7 предупредит, что данного блока не существует и спросит, надо ли его создать.

Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программирования

При нажатии «Yes» блок данных с необходимой внутренней структурой, правильным TimeStamp (отметка времени) и привязкой к FB30 будет создан:

Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программирования

Вызов блока также дополнится формальными обозначениями входов/выходов:

Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программирования

Блок был опробован на измерении уровня воды в буферном баке (120 м3) датчиком давления. Уровень (0..6м) отслеживается с шагом изменения 0,01м. Ранее при медленном опорожнении бака происходило 4-6 переключений во время смены показаний. После подключения на выход датчика этого функционального блока показания сгладились, происходило 1-2 переключения. Хотелось бы еще плавнее. Это было достигнуто увеличением постоянной времени фильтра. Сделать это несложно, необходимо пропускать некоторые из вызовов фильтра.

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

Коэффициент деления Division_Factor выведен как тег в операционной панели.
И в заключение расскажу еще об одном эксперименте с этим функциональным блоком. Вход и выход блока имеют одинаковый тип данных. А что если включить два блока цепочкой, один за другим? Чтобы оставить только необходимое, был оформлен новый функциональный блок.

Для сравнения график исходной функции FB30, постоянная времени фильтра 1,6 сек.

Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программирования

И график «тандемной» функции FB40, постоянная времени фильтра 3,2 сек. График из прямого стал S-образным.

Степ 7 язык программирования. Смотреть фото Степ 7 язык программирования. Смотреть картинку Степ 7 язык программирования. Картинка про Степ 7 язык программирования. Фото Степ 7 язык программирования
Качественной рускоязычной документации по устройству и программированию Simatic очень много. Перевод как правило произведен фирмой Siemens, и самая полная подборка со свежими исправлениями лежит на официальном сайте. К сожалению для скачивания требуется регистрация.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *