Как тегам задавать значение tia portal
В данной статье рассмотрим основы программирования в Tia Portal на примере структурированного языка управления SCL (Structured Control Language), являющегося высокоуровневым текстовым языком, основанным на языке PASCAL.
Данный язык поддерживает типовые операторы программирования, такие как присвоение (: =), математические функции (+ для сложения, — для вычитания, * для умножения, / для деления), а также использует стандартные операторы языка PASCAL, такие как IF-THEN-ELSE, CASE, REPEAT-UNTIL, GOTO и RETURN. Другие инструкции для SCL, такие как таймеры и счетчики, соответствуют LAD и FBD инструкциям.
Начнем мы изучение SCL с простых логических операций и математических выражений и сравним их с программированием на языке LADDER.
Ниже на рис. приведен пример FB блока на LAD, состоящий из пяти Network, в которых выполняются простые логические и математические операции, в том числе один таймер. Создадим подобный блок на языке SCL.
Создаем в программе новый функциональный блок и в раскрывающемся списке выберем SCL в качестве языка программирования.
Таблицу тегов будем использовать ту же самую, что и для LAD.
Начнем с самой простой задачи – логической операции AND. Значение TRUE на i1 и i2 активирует выход q1.
Комментарии в программе указываются с помощью двойной косой линии – слеша.
Напомню, что каждая строка должна заканчиваться точкой с запятой. Во второй строке оператор RETURN после косой черты указывает на конец программного блока, достаточно удалить эти косые черты и ПЛК не выполнит следующие строки программы. Это удобно при отладке программы.
Одна важная деталь. В блоке, созданном на языке LAD, мы можем легко добавить сегмент на языке SCL с помощью правой кнопки мыши. Таким образом, при необходимости, мы можем написать несколько длинных логических операций на SCL прямо в функциональном блоке LAD.
Переходим ко второму сегменту. В данном случае, выход будет активен, если значение хотя бы одного из входов (i1 или i3) выражения в скобках будет принимать значение TRUE и нет сигнала на входе i2.
Далее из меню основных инструкций добавим таймер с задержкой выключения — TOF. Параметры таймера указываются в скобках.
Тип таймера можно легко изменить, просто щелкнув по нему мышью.
В следующей строке напишем простое математическое выражение «А умноженное на В равно С». Если необходимо, вместо умножения можно использовать и другие операторы – сложение, вычитание, деление, сравнения и т.д.
Наконец, еще одно выражение «A + B = C», на этот раз с использованием временных переменных в функциональном блоке. В последней строке используется команда RETURN, то есть конец программного блока.
Наши последние несколько строк, написанных на SCL, заменили эти два сегмента программы LAD.
В принципе, это вся программа на SCL, которая представляет собой аналогичную программу на LAD, согласно первому рисунку в статье.
Как видим, получилось все более компактно. Кроме того, программный код можно еще немного уменьшить, удалив ненужные комментарии.
В следующем уроке мы продолжим изучение SCL и рассмотрим работу с детекторами фронтов, счетчиками.
Урок 14
Программирование в TIA Portal обмена данными по сети PROFINET между преобразователем частоты ATV630 и контроллером SIMATIC S7-1500
Задание
Сконфигурировать ПЧ и ПЛК так, чтобы ПЛК мог получать данные о состоянии ПЧ по сети PROFINET, и написать программу обработки данных в ПЛК.
Решение
- В качестве ПЧ возьмём Altivar Process ATV600, у которого на борту есть 3 разъёма RJ45:
Первый – для подключения графического дисплея:
Третий – для подключения к последовательной шине Modbus RTU:
В этом примере выбраны данные ПЧ (коммуникационные параметры) с адресами:
Адрес бита состоит из адреса байта и номера бита от 0 до 7. Например, адрес третьего бита в первом входном байте: I1.3.
В нашем преобразователе частоты биты в словах нумеруются от 0 до 15.
Если слово ST12 из ПЧ передаётся в слово IW30 в ПЛК, то какой адрес в ПЛК будет иметь бит 0 (который в слове ST12 равен 1 при обрыве аналогового сигнала на входе AI0)?
Этот бит окажется в крайнем правом положении слова IW30 (в байте IB31), его адрес: I31.0
Уроки TIA Portal, STEP7 и HMI
Урок 5
Создание фейсплаты дискретной задвижки (продолжение урока 4)
Задание
Разработать фейсплату задвижки.
Решение
- На основе разработанного графического интерфейса задвижки создаём фейсплату задвижки.
Для этого в редакторе экрана панели оператора выделяем мышкой все графические элементы будущей фейсплаты, кликаем правой кнопкой и выбираем пункт меню Create faceplate:
Сбрасывать тег будем в программе ПЛК после его обработки. Потому что, если присваивать тегу 1 при нажатии кнопки (Press), и сбрасывать его при отпускании кнопки (Release), то:
1) Программа ПЛК может не успеть обработать нажатие кнопки
2) При обрыве связи между панелью оператора и ПЛК во время нажатия кнопки тег так и останется висеть в единице (и всё равно его придётся как-то сбрасывать в контроллере).
- Выбираем подходящий тег и диапазон видимости:
Цветом полигона изображаем статус задвижки:
- серый – не открыто и не закрыто (среднее положение)
- белый – открыто
- черный – закрыто
- мигает белым и серым - открывается
- мигает чёрным и серым – закрывается
Цветом круга оповещаем о типе аварии:
- жёлтый – предупреждение
- красный – авария
Текстом информируем о режиме работы:
- Автоматический
- Ручной
- Местный
Уроки TIA Portal, STEP7 и HMI
Уроки TIA Portal, STEP7 и HMI
Урок 24
Уставки (Setpoints) в TIA Portal STEP7 или как не потерять настройки ПИД-регуляторов после пусконаладки
Задание
Сконфигурировать в TIA Portal уставки (Setpoints) – теги, значения которых изменяются в процессе пусконаладки (например, настроечные коэффициенты ПИД-регулятора), а в конце пусконаладки значения этих тегов могут быть сохранены в офлайн программе, как стартовые значения.
Решение
- Создаём блок данных, в котором хранятся коэффициенты ПИД-регулятора. Проставляем галочки в столбце Retain у тех тегов, которые должны сохранять свои значения при пропадании и восстановлении питания.
В столбце Start value задаём стартовые значения тегов (значения, которые принимают теги при перезапуске программы ПЛК).
Проставляем галочки в столбце Setpoint у тех тегов, которые являются уставками:
то при загрузке его в контроллер потребуется инициализация блока данных:
после которой все текущие значения уставок будут изменены на стартовые значения:
и сделаем онлайн копию памяти ЦПУ:
Видим, что все теги приняли свои стартовые значения:
Видим, что текущие значения сохраняемых тегов изменились на те, которые были до резервного копирования:
Форум АСУТП
Массивы в TIA Portal
Здравствуйте!
Прошу подсказать как правильно работать с массивами в TIA Portal а лучше показать на примере?
Не до понимаю как работать с массивами. Нет желания например в большом проекте перелопачивать однотипные данные в нетворках, но пока видел только такие проекты. От одного проекта у меня волосы под мышками дыбом встали, 500 однотипных сигналов перебиральсь в ручную .
Про то что просто так массивы создать нельзя это я понял, надо создавать DB блок в котором и прописать массив.
Как например присвоить массиву значения входов с адреса %I0.0, ведь входа %I0.0-%I0.7 это массив бит.
Реализация TIA Portal с блоками DB мне показалась глупой, просто сравниваю с другой средой разработки.
Если кому не трудно можете в моём проекте показать TIA Portal 16, или в вашем. буду очень признателен.
Массивы в TIA Portal
С массивами лучше работать на языке SCL, мне кажется, вы очень нуждались в таком совете. Что касаемо копирования I,M,Q-областей в массивы, то тут надо смотреть вроде обычный MOVE или MOVE_BLK.Массивы в TIA Portal
Здравствуйте.Спасибо за совет.
То что с массивами необходимо работать в SCL это я понял .
Вообше предпочитаю текстовый язык.
Не совсем понял как присваивать адреса массивам.
А также назначение DB.
Попробую ваши советы и отпишусь.
Массивы в TIA Portal
Как например присвоить массиву значения входов с адреса %I0.0, ведь входа %I0.0-%I0.7 это массив бит. Ну и записывайте необходимый байт,слово,двойное слово входов в нужный DB. IB0 Move DB1.DBB0 (DB1.DBX0.0 - DB1.DBX0.7),IW0 Move DB1.DBW0 (DB1.DBX0.0 - DB1.DBX1.7),ID0 Move DB1.DBD0 (DB1.DBX0.0 - DB1.DBX3.7). Случается нередко намИ труд и мудрость видеть там,
Где стоит только догадаться
За дело просто взяться.
Массивы в TIA Portal
ZETs , я правильно Вас понял, что Вам не нравится обращаться к дискретным входам по имени тега или по адресу типа %I0.0, а хочется обращаться через массив? Т.е. Вы бы хотели в разделе "PLC tags" объявить тип данных Array[0..xxx] of Bool, адресация которого начиналась бы с I0.0, и таким образом обращаться к дискретным входам по индексу?
Такой конструкции нет.
Вы можете воспользоваться простым присваиванием, как Вам уже написали, т.е. создать массив Array[0..xxx] of Bool в неоптимизированном DB и написать в начале программного цикла буквально несколько строк, где от 8 до 32 штук дискретных входов за раз присваивать типа
%DB0.DBD0 := %ID0;
%DB0.DBD4 := %ID4;
%DB0.DBW8 := %IW8;
%DB0.DBB10 := %ID10
и т.п.,
потом работать с этими данными в DB, обращаясь к ним по индексу вместо того, чтобы обращаться к тегам дискретных входов напрямую. Проблема - не проблема на самом деле.
Массивы в TIA Portal
I, M, Q - это древняя дремучая структура памяти из 80-х годов.
Датаблок DB - это аналог структуры struct <. >из языка С++.
DB - это вполне современная структура, но и тут есть нюанс:
1. неоптимизированный DB - датаблок дремучего типа
2. оптимизированный DB - современный датаблок.
Многие по старинке предпочитают неоптимизированные DB, иногда использование такого типа датаблока дает преимущества - по аналогии преимущества использования указателей перед ссылками в языке С++.
По умолчанию датаблок оптимизированный. В свойствах датаблока можно снять галку и тогда блок станет неоптимизированным.
Некоторые программисты хранят свои переменные в памяти M. Это прошлый век. Надо хранить данные в датаблоке и тогда не придется думать, по какому аппаратному адресу хранятся данные.
В моих программах в памяти M хранятся только системный байт и тактовый байт, все остальные данные лежат в датаблоках DB.
Читайте также: