- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Массивы в TIA Portal
Модератор: Глоб.модераторы
-
- здесь недавно
- Сообщения: 55
- Зарегистрирован: 14 июл 2020, 04:29
- Имя: Евгений
- Страна: Россия
- город/регион: Чита
- Благодарил (а): 14 раз
Массивы в TIA Portal
Здравствуйте!
Прошу подсказать как правильно работать с массивами в TIA Portal а лучше показать на примере?
Не до понимаю как работать с массивами. Нет желания например в большом проекте перелопачивать однотипные данные в нетворках, но пока видел только такие проекты. От одного проекта у меня волосы под мышками дыбом встали, 500 однотипных сигналов перебиральсь в ручную .
Про то что просто так массивы создать нельзя это я понял, надо создавать DB блок в котором и прописать массив.
Как например присвоить массиву значения входов с адреса %I0.0, ведь входа %I0.0-%I0.7 это массив бит.
Реализация TIA Portal с блоками DB мне показалась глупой, просто сравниваю с другой средой разработки.
Если кому не трудно можете в моём проекте показать TIA Portal 16, или в вашем... буду очень признателен.
Прошу подсказать как правильно работать с массивами в TIA Portal а лучше показать на примере?
Не до понимаю как работать с массивами. Нет желания например в большом проекте перелопачивать однотипные данные в нетворках, но пока видел только такие проекты. От одного проекта у меня волосы под мышками дыбом встали, 500 однотипных сигналов перебиральсь в ручную .
Про то что просто так массивы создать нельзя это я понял, надо создавать DB блок в котором и прописать массив.
Как например присвоить массиву значения входов с адреса %I0.0, ведь входа %I0.0-%I0.7 это массив бит.
Реализация TIA Portal с блоками DB мне показалась глупой, просто сравниваю с другой средой разработки.
Если кому не трудно можете в моём проекте показать TIA Portal 16, или в вашем... буду очень признателен.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- эксперт
- Сообщения: 3643
- Зарегистрирован: 10 ноя 2009, 04:58
- Имя: Толмачев Михаил Алексеевич
- город/регион: г. Чехов, МО
- Благодарил (а): 8 раз
- Поблагодарили: 286 раз
Массивы в TIA Portal
С массивами лучше работать на языке SCL, мне кажется, вы очень нуждались в таком совете... Что касаемо копирования I,M,Q-областей в массивы, то тут надо смотреть вроде обычный MOVE или MOVE_BLK...
-
- здесь недавно
- Сообщения: 55
- Зарегистрирован: 14 июл 2020, 04:29
- Имя: Евгений
- Страна: Россия
- город/регион: Чита
- Благодарил (а): 14 раз
Массивы в TIA Portal
Здравствуйте.
Спасибо за совет.
То что с массивами необходимо работать в SCL это я понял .
Вообше предпочитаю текстовый язык.
Не совсем понял как присваивать адреса массивам.
А также назначение DB.
Попробую ваши советы и отпишусь.
Спасибо за совет.
То что с массивами необходимо работать в SCL это я понял .
Вообше предпочитаю текстовый язык.
Не совсем понял как присваивать адреса массивам.
А также назначение DB.
Попробую ваши советы и отпишусь.
-
- освоился
- Сообщения: 271
- Зарегистрирован: 25 ноя 2018, 17:55
- Имя: Роман
- Благодарил (а): 4 раза
- Поблагодарили: 42 раза
Массивы в TIA Portal
Ну и записывайте необходимый байт,слово,двойное слово входов в нужный 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).
Случается нередко нам
И труд и мудрость видеть там,
Где стоит только догадаться
За дело просто взяться.
И труд и мудрость видеть там,
Где стоит только догадаться
За дело просто взяться.
-
- не первый раз у нас
- Сообщения: 318
- Зарегистрирован: 14 фев 2014, 11:55
- Имя: Николай
- Страна: Россия
- Благодарил (а): 16 раз
- Поблагодарили: 72 раза
Массивы в 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, обращаясь к ним по индексу вместо того, чтобы обращаться к тегам дискретных входов напрямую. Проблема - не проблема на самом деле...
Такой конструкции нет.
Вы можете воспользоваться простым присваиванием, как Вам уже написали, т.е. создать массив Array[0..xxx] of Bool в неоптимизированном DB и написать в начале программного цикла буквально несколько строк, где от 8 до 32 штук дискретных входов за раз присваивать типа
%DB0.DBD0 := %ID0;
%DB0.DBD4 := %ID4;
%DB0.DBW8 := %IW8;
%DB0.DBB10 := %ID10
и т.п.,
потом работать с этими данными в DB, обращаясь к ним по индексу вместо того, чтобы обращаться к тегам дискретных входов напрямую. Проблема - не проблема на самом деле...
-
- эксперт
- Сообщения: 3643
- Зарегистрирован: 10 ноя 2009, 04:58
- Имя: Толмачев Михаил Алексеевич
- город/регион: г. Чехов, МО
- Благодарил (а): 8 раз
- Поблагодарили: 286 раз
Массивы в TIA Portal
I, M, Q - это древняя дремучая структура памяти из 80-х годов.
Датаблок DB - это аналог структуры struct{...} из языка С++.
DB - это вполне современная структура, но и тут есть нюанс:
1. неоптимизированный DB - датаблок дремучего типа
2. оптимизированный DB - современный датаблок.
Многие по старинке предпочитают неоптимизированные DB, иногда использование такого типа датаблока дает преимущества - по аналогии преимущества использования указателей перед ссылками в языке С++.
По умолчанию датаблок оптимизированный. В свойствах датаблока можно снять галку и тогда блок станет неоптимизированным.
Некоторые программисты хранят свои переменные в памяти M. Это прошлый век. Надо хранить данные в датаблоке и тогда не придется думать, по какому аппаратному адресу хранятся данные.
В моих программах в памяти M хранятся только системный байт и тактовый байт, все остальные данные лежат в датаблоках DB.
P.S. Кто-то ранее поднимал тему, как одной строкой скопировать все I в DB. Я колупался с этой темой и выдал вердикт: никакие MOVE, MOVE_BLK, MOVE_VARIANT, Serialize/Deserialize такое не умеют. Хотя инструментарий у S7-1x00 очень богатый, но память I/M/Q дремучая как говно мамонта, ничего не получается. Надо копировать побайтно с помощью MOVE, но это одной строкой не получится. Но пусть будет сотня строк, ерунда ведь.
Датаблок DB - это аналог структуры struct{...} из языка С++.
DB - это вполне современная структура, но и тут есть нюанс:
1. неоптимизированный DB - датаблок дремучего типа
2. оптимизированный DB - современный датаблок.
Многие по старинке предпочитают неоптимизированные DB, иногда использование такого типа датаблока дает преимущества - по аналогии преимущества использования указателей перед ссылками в языке С++.
По умолчанию датаблок оптимизированный. В свойствах датаблока можно снять галку и тогда блок станет неоптимизированным.
Некоторые программисты хранят свои переменные в памяти M. Это прошлый век. Надо хранить данные в датаблоке и тогда не придется думать, по какому аппаратному адресу хранятся данные.
В моих программах в памяти M хранятся только системный байт и тактовый байт, все остальные данные лежат в датаблоках DB.
P.S. Кто-то ранее поднимал тему, как одной строкой скопировать все I в DB. Я колупался с этой темой и выдал вердикт: никакие MOVE, MOVE_BLK, MOVE_VARIANT, Serialize/Deserialize такое не умеют. Хотя инструментарий у S7-1x00 очень богатый, но память I/M/Q дремучая как говно мамонта, ничего не получается. Надо копировать побайтно с помощью MOVE, но это одной строкой не получится. Но пусть будет сотня строк, ерунда ведь.
-
- освоился
- Сообщения: 271
- Зарегистрирован: 25 ноя 2018, 17:55
- Имя: Роман
- Благодарил (а): 4 раза
- Поблагодарили: 42 раза
Массивы в TIA Portal
А какой вообще в этом смысл? Построчный перебор я еще могу оправдать тем, что бывает неизвестно какой сигнал (используемый во многих местах программы) будет заведен в контроллер на ПНР (н.о или н.з) и что бы потом не лазить по всей (порой довольно большой) программе его можно инвертировать в одном месте. Или вдруг понадобится сделать задержку включения/выключения входа и т.д. Или я чего то не понимаю?
Случается нередко нам
И труд и мудрость видеть там,
Где стоит только догадаться
За дело просто взяться.
И труд и мудрость видеть там,
Где стоит только догадаться
За дело просто взяться.
-
- специалист
- Сообщения: 655
- Зарегистрирован: 19 фев 2019, 22:38
- Имя: Сергей
- Страна: Россия
- город/регион: Краснодар
- Благодарил (а): 20 раз
- Поблагодарили: 89 раз
Массивы в TIA Portal
Товарищ! А вот изучить документацию по Тиа, да хоть Хелп, встроенный задействовать не вариант. Это начало-начал, фундамент любой системы программирования- типы данных и их реализация, сам дата-блок по факту структура, но если заполнить его однотипными данными, можно лихо оперировать ими при помощи приемов косвенной адресации.
А с массивом(и с любым другим типом данных) в дата-блоке адресоваться можно несколькими способами-символьный самый простой DB_Data1.Array1[Num_element].
-
- не первый раз у нас
- Сообщения: 318
- Зарегистрирован: 14 фев 2014, 11:55
- Имя: Николай
- Страна: Россия
- Благодарил (а): 16 раз
- Поблагодарили: 72 раза
Массивы в TIA Portal
Только неоптимизированные и надо использовать. Чтобы применять для HMI драйвер S7-300/400, а не S7-1200. Чтобы заказчик не имел в будущем вот таких проблем:
https://support.industry.siemens.com/cs ... 0&lc=en-TR
Никаких преимуществ у оптимизированного DB нет, кроме небольшой экономии памяти. Соответственно, если контроллер не забит под завязку и памяти хватает, то нет в этой "оптимизации" никакого толку.
Напишет он цикл и будет перебирать по индексу все DI. В функцию какую-то их отправлять в качестве аргумента, например.
-
- здесь недавно
- Сообщения: 55
- Зарегистрирован: 14 июл 2020, 04:29
- Имя: Евгений
- Страна: Россия
- город/регион: Чита
- Благодарил (а): 14 раз
Массивы в TIA Portal
Совершенно верно. Например нет смысла 40 температурных датчиков перебирать в ручную.
-
- специалист
- Сообщения: 655
- Зарегистрирован: 19 фев 2019, 22:38
- Имя: Сергей
- Страна: Россия
- город/регион: Краснодар
- Благодарил (а): 20 раз
- Поблагодарили: 89 раз
Массивы в TIA Portal
Все это можно делать используя функционал дата-блока, без всяких приблуд, типа массивов, учите мат.часть
-
- здесь недавно
- Сообщения: 55
- Зарегистрирован: 14 июл 2020, 04:29
- Имя: Евгений
- Страна: Россия
- город/регион: Чита
- Благодарил (а): 14 раз
Массивы в TIA Portal
Примером не поделитесь?
Отправлено спустя 3 минуты 17 секунд:
Со структурой то разговоров нет это пользовательский тип данных.
Просто я не совсем понял для чего в ТИА массив определяется как структура...?? тип данных определён, а для меня как для программиста это совершенно очевидно что массив есть массив с типом, размерностью и т.д. вот и в тупил.
Просто когда видел в проектах по 50 и более нетворков то это угнетало моё сознание.
-
- специалист
- Сообщения: 655
- Зарегистрирован: 19 фев 2019, 22:38
- Имя: Сергей
- Страна: Россия
- город/регион: Краснодар
- Благодарил (а): 20 раз
- Поблагодарили: 89 раз
Массивы в TIA Portal
Нет. Т.к в данный момент занят проектом не на Сименсе. Там на поиск и прочтение информации надо потратить минут надцать, зато потом сами сможете примерами делиться.
-
- знаток Eplan
- Сообщения: 1136
- Зарегистрирован: 21 сен 2012, 22:45
- Имя: aranea
- Благодарил (а): 30 раз
- Поблагодарили: 165 раз
Массивы в TIA Portal
вы их каждый день перебирать будете пока программу пишете?
имхо, напишите 1 фб масштабирования и вызовите его 40 раз - это нагляднее и удобнее, чем в цикле что-то куда-то пересылать и потом отлаживать - в каждом вызове видно состояние входов и выходов блока
-
- освоился
- Сообщения: 290
- Зарегистрирован: 09 авг 2016, 13:49
- Имя: Чистилин Андрей Анатольевич
- Страна: Россия
- город/регион: Малоярославец
- Благодарил (а): 31 раз
- Поблагодарили: 36 раз
Массивы в TIA Portal
Зато сознание ремонтника не угнетает. Очень потом легко искать, где чего не так при неисправности или отладке. А с вашими циклами еще потом разбираться, чего куда почем, пересылается. Если с "архитектурой" и "философией" мышлениея программиста не знаком, т.е видишь программу первый раз, вооще сложно. А если еще и комментариев нет, воще трэш. Когда программа написана методом "по 50 строк" работать с ней легче.
-
- освоился
- Сообщения: 271
- Зарегистрирован: 25 ноя 2018, 17:55
- Имя: Роман
- Благодарил (а): 4 раза
- Поблагодарили: 42 раза
Массивы в TIA Portal
Ну если это не вам запускать и налаживать, почему бы и нет. А вот когда в условиях ограниченного времени и пространства, придется ставить "костыли" вокруг "красивых" блоков,что бы хоть как то заработало,вы в следующий раз и 500 с радостью напишите.
Случается нередко нам
И труд и мудрость видеть там,
Где стоит только догадаться
За дело просто взяться.
И труд и мудрость видеть там,
Где стоит только догадаться
За дело просто взяться.
-
- здесь недавно
- Сообщения: 55
- Зарегистрирован: 14 июл 2020, 04:29
- Имя: Евгений
- Страна: Россия
- город/регион: Чита
- Благодарил (а): 14 раз
Массивы в TIA Portal
В циклах есть свои плюсы и минусы.
Я в них вижу больше плюсов, хотя согласен что многим они не нравятся.
Я в них вижу больше плюсов, хотя согласен что многим они не нравятся.
-
- знаток Eplan
- Сообщения: 1136
- Зарегистрирован: 21 сен 2012, 22:45
- Имя: aranea
- Благодарил (а): 30 раз
- Поблагодарили: 165 раз
Массивы в TIA Portal
расскажите пожалуйста о своем опыте по работе с ПЛК в области промышленной автоматизации
-
- освоился
- Сообщения: 299
- Зарегистрирован: 15 сен 2016, 18:47
- Имя: Андрей
- Страна: Россия
- город/регион: Вологда
- Благодарил (а): 20 раз
- Поблагодарили: 78 раз
Массивы в TIA Portal
На stl в STEP 7 можно скопировать любое количество значений вот так, если они расположены подряд:
Код: Выделить всё
OPN DB10 //Открываем DB
L P#I 10.0 //Загружаем начальный адрес входа
LAR1 // в адресный регистр 1
L P#dbx0.0 //Загружаем начальный адрес дата блока
LAR2 // в адресный регистр 2
L 500 //Загружаем количество итераций
NEXT: T MW10 // в меркер
L IW [AR1,P#0.0] //считываем слово из входов по адресу AR1 со смещением 0.0
T DBW [AR2,P#0.0] // сохраняем слово по адресу AR2 со смещением 0.0
L 16 // загружаем размер смещения (в битах)
+AR1 // увеличиваем адресные регистры на размер смещения
+AR2
L MW10
LOOP NEXT
-
- не первый раз у нас
- Сообщения: 318
- Зарегистрирован: 14 фев 2014, 11:55
- Имя: Николай
- Страна: Россия
- Благодарил (а): 16 раз
- Поблагодарили: 72 раза
Массивы в TIA Portal
Вы предлагаете программисту использовать "китайский код". Ну т.е. писать программу как можно тупее и примитивнее, просто чтобы с программой этой мог разобраться при желании любой условный "дядя Вася-электрик". Следующий совет из этой серии - писать на FBD, ну чтоб уж совсем... Это не может быть правильным подходом к делу. Возможно, что не надо пытаться рационализировать код прям до фанатизма, но и китайский код - это тоже неправильно.ZuElecRu писал(а): ↑15 июн 2021, 14:44 Зато сознание ремонтника не угнетает. Очень потом легко искать, где чего не так при неисправности или отладке. А с вашими циклами еще потом разбираться, чего куда почем, пересылается. Если с "архитектурой" и "философией" мышлениея программиста не знаком, т.е видишь программу первый раз, вооще сложно. А если еще и комментариев нет, воще трэш. Когда программа написана методом "по 50 строк" работать с ней легче
-
- администратор
- Сообщения: 4909
- Зарегистрирован: 25 июл 2008, 07:12
- Имя: Диев Александр Васильевич
- Страна: Россия
- город/регион: г. Сегежа, Карелия
- Благодарил (а): 236 раз
- Поблагодарили: 425 раз
Массивы в TIA Portal
Не знаю, что вы имеете в виду под "китайским" кодом, но в промышленных применениях FBD и LAD (LD) - это нормально, а циклы - нет.
Повторное использование кода не отменяет повторного использования мозга при его повторном использовании.
-
- не первый раз у нас
- Сообщения: 318
- Зарегистрирован: 14 фев 2014, 11:55
- Имя: Николай
- Страна: Россия
- Благодарил (а): 16 раз
- Поблагодарили: 72 раза
Массивы в TIA Portal
Немножко копипасты из lurkmore... А насчет промышленного применения LAD И FBD - это абсолютно нормальная история для тех задач, где все алгоритмы сосредоточены на уровне булевой алгебры, с этим нет нареканий - действительно, все эти логические цепочки в виде схем весьма удобно выглядят. Для задач на уровне программируемого реле - вполне нормально.
Отправлено спустя 19 минут 14 секунд:
Распишите подробнее, что у Вас за задача. Мне просто нечем открыть Ваш проект из первого сообщения в данный момент. Вообще вот эта история про "50 нетворков" странно очень выглядит.
Вот так правильнее на самом деле:
//
только я не очень понял, Вы то про DI, то про температурные датчики пишете...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- здесь недавно
- Сообщения: 55
- Зарегистрирован: 14 июл 2020, 04:29
- Имя: Евгений
- Страна: Россия
- город/регион: Чита
- Благодарил (а): 14 раз
Массивы в TIA Portal
Интересный вопрос.
Отправлено спустя 10 минут 15 секунд:
Извините за неточность будем считать это всего лишь данные...
Этот проект пустой для учебных целей.
Проект автоматизации ГВУ с пошаговым перебором датчиков навел на мысль их перебора в цикле.
Пример: В написании программы для МПСИ на CS, где более 40 датчиков температуры и давления (уставки предупр. и аварии) и 10 датчиков потока (не считая остальной логики).
Прогонял всё в цикле и радовался жизни.
Изучаю ТИА и мне стало интересно как массиву присвоить адрес и т.д..
-
- здесь недавно
- Сообщения: 89
- Зарегистрирован: 01 мар 2010, 17:37
- Имя: Алексей Алексеевич
- Страна: Россия
- город/регион: Нижний Тагил
- Благодарил (а): 17 раз
- Поблагодарили: 9 раз
Массивы в TIA Portal
Очень точно подмечено. Одинаковые объекты на практике очень часто получаются разными. Вся программная красота коту под хвост.
Программа должна быть в первую очередь быть хорошо читаема, и ее можно было бы легко поправить в условиях ПНР (сжатые сроки, шум, пыль, отсутствие рабочего места и пр.)
Сам люблю красиво завернуть. Но со временем меня перестал смущать "китайский код". В Excel забиваешь однотипные строчки, а потом копируешь их в Step7 или другую среду программирования. Все сигналы через Cross-Reference мгновенно находятся и состояние подсвечивается. В стрессовых условиях ПНР чем проще, наглядней - тем лучше.
-
- эксперт
- Сообщения: 3643
- Зарегистрирован: 10 ноя 2009, 04:58
- Имя: Толмачев Михаил Алексеевич
- город/регион: г. Чехов, МО
- Благодарил (а): 8 раз
- Поблагодарили: 286 раз
Массивы в TIA Portal
У меня часть кода на SCL (циклы-массивы). Если там что-то не так работает, очень долго раскуривать. Мониторинг не улавливает внутрицикловые процессы, а сохранять результаты внутрицикловых операций в памяти - накладно.