|
Вопросы о программировании Вопросы, касающиеся программирования на FBD |
|
Опции темы | Поиск в этой теме |
15.08.2018, 15:00 | #1 |
Senior Member
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили:
38 раз(а) в 30 сообщениях
|
Можно ли применять пустые макросы (нельзя)
Набор макросов для типов BOOL, INT, LONG и REAL для задания константных значений.
Каждый макрос имеет простейшее содержимое, вида: Так же, добавлен файл для тестирования макросов (const-test.psl) с содержимым: Последний раз редактировалось Arsie, 15.08.2018 в 16:18 |
15.08.2018, 16:11 | #2 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 170
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Обмениваемся своими макросами
Цитата:
Другими словами, это очень и очень вредные макросы. Это одна из двух недокументированных возможностей завалить ядро лоджика. Я удалю эти макросы с форума. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
15.08.2018, 16:17 | #3 |
Senior Member
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили:
38 раз(а) в 30 сообщениях
|
Ответ: Обмениваемся своими макросами
|
15.08.2018, 16:22 | #4 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 170
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Обмениваемся своими макросами
Любой вход блока - это вход для указателя либо на выход другого блока, либо на константу. Пустой макрос - это просто указатель, ему негде хранить константу. Создание таких макросов, используя некоторые хитрости, не запрещено только ради нормальной работы Конструкторов.
Как правило лоджик нормально разворачивает цепочку указателей и всё же находит место, куда записать константу. Но в больших проектах у него это может не получиться. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
15.08.2018, 16:35 | #5 |
Senior Member
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили:
38 раз(а) в 30 сообщениях
|
Ответ: Обмениваемся своими макросами
|
15.08.2018, 16:38 | #6 | |
Уволен из Сегнетикс
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
Ответ: Обмениваемся своими макросами
Цитата:
Такой проект не компилируется, поскольку ничего указывает никуда. Ошибки такого рода могут возникать при использовании пустых блоков, как у вас. Может быть чрезвычайно сложно отследить, в каком месте вы допустили ошибку, и проект перестал собираться. При этом пользователь обязательно пишет в техподдержку, что ничего не работает. __________________ В сегнетиксе не работаю с самого начала 2019 года. |
|
15.08.2018, 16:54 | #7 |
Senior Member
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили:
38 раз(а) в 30 сообщениях
|
Ответ: Обмениваемся своими макросами
Ок. Но получается просто "Ошибка компоновки".
Но приведенные макросы и не предполагают такое использование. Может ли быть проблема, когда проект успешно собирается? |
15.08.2018, 17:00 | #8 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 170
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Обмениваемся своими макросами
Да. Примеров не просите, пожалуйста.
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
15.08.2018, 17:03 | #9 |
Senior Member
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили:
38 раз(а) в 30 сообщениях
|
Ответ: Обмениваемся своими макросами
|
15.08.2018, 17:18 | #10 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 170
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Обмениваемся своими макросами
Нет, если не подключать и выход тоже.
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
15.08.2018, 17:38 | #11 |
Senior Member
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили:
38 раз(а) в 30 сообщениях
|
Ответ: Обмениваемся своими макросами
|
15.08.2018, 17:47 | #12 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 170
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Обмениваемся своими макросами
А вы не лепите обходными манёврами то, что лоджик не даёт сделать штатным образом, жЫзнь сразу станет легче. Жизнь станет веселей.
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
15.08.2018, 18:12 | #13 |
Senior Member
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили:
38 раз(а) в 30 сообщениях
|
Ответ: Обмениваемся своими макросами
|
15.08.2018, 18:17 | #14 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 170
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Обмениваемся своими макросами
Работать с пустыми макросами? Увольте, не нужны они для работы.
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
15.08.2018, 18:58 | #15 |
Senior Member
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили:
38 раз(а) в 30 сообщениях
|
Ответ: Обмениваемся своими макросами
Ну вам не нужны. Мне нужны. Кому-то еще могут быть нужны.
Мне нужно иметь единую точку определения константы, что бы потом не бегать по блокам и не вспоминать, где я его успел задать. И поменять значение только в одном месте, а не в десяти. |
15.08.2018, 18:58 | #16 |
Senior Member
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 4 173
Благодарил(а): 242 раз(а)
Поблагодарили:
166 раз(а) в 158 сообщениях
|
Ответ: Обмениваемся своими макросами
почему же тогда в конструкторе есть как минимум два макроса что используют именно этот способ задания констант?
|
15.08.2018, 19:00 | #17 | ||
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 170
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Обмениваемся своими макросами
Цитата:
Цитата:
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. Последний раз редактировалось Arsie, 15.08.2018 в 19:11 |
||
15.08.2018, 19:44 | #18 | |
Senior Member
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 4 173
Благодарил(а): 242 раз(а)
Поблагодарили:
166 раз(а) в 158 сообщениях
|
Ответ: Обмениваемся своими макросами
Цитата:
т.е. я хотел спросить - какие хитрости? |
|
16.08.2018, 12:02 | #19 | ||
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 170
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Обмениваемся своими макросами
Цитата:
Официальный ответ: недокументировано, не применять. Добавлено через 6 минут Цитата:
Графически места они занимают абсолютно столько же. А ещё их в конце работы можно закатать в макрос и иметь все константы в одном месте. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
||
16.08.2018, 13:27 | #20 |
Senior Member
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили:
38 раз(а) в 30 сообщениях
|
Ответ: Обмениваемся своими макросами
|
18.08.2018, 22:32 | #21 |
Senior Member
Регистрация: Feb 2016
Адрес: Москва
Сообщения: 294
Благодарил(а): 3 раз(а)
Поблагодарили:
6 раз(а) в 6 сообщениях
|
Ответ: Можно ли применять пустые макросы
Арсений, а что на счет макросов Scada in/out? У меня была необходимость создать нечто подобное, но пока не получилось)
Добавлено через 1 минуту Заодно интересно, как делаете макросы для просмотра?) __________________ Работа есть величина физическая, измеряется в Джоулях... |
18.08.2018, 23:01 | #22 | |
Senior Member
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 4 173
Благодарил(а): 242 раз(а)
Поблагодарили:
166 раз(а) в 158 сообщениях
|
Ответ: Обмениваемся своими макросами
Цитата:
хороший ответ д.б. иным. |
|
20.08.2018, 11:31 | #23 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 170
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Можно ли применять пустые макросы
Цитата:
Последние лет 5 адрес не теряется, необходимость в таких макросах объективно пропала. Добавлено через 1 минуту Да, конечно, после переработки Конструкторов данный тип связи будет запрещён. Но пока с этим сделать ничего нельзя. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
20.08.2018, 12:16 | #24 |
Senior Member
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 4 173
Благодарил(а): 242 раз(а)
Поблагодарили:
166 раз(а) в 158 сообщениях
|
Ответ: Можно ли применять пустые макросы
и когда этого ждать? хотяб +/-
|
20.08.2018, 12:30 | #25 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 170
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Можно ли применять пустые макросы
У меня нет ответа. Но если эта особенность не позволяет вам создавать программы, мы обязательно поторопимся.
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
03.04.2020, 07:43 | #26 |
Новичок
Регистрация: Apr 2020
Адрес: UrFO
Сообщения: 9
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Можно ли применять пустые макросы
Тема еще актуальна? Вопрос аналогичен заданным ранее - можно ли делать так? Второй вход-выход, чувствую, плохо переварится лоджиком - тестить лень, применять некуда и не собираюсь. А вот первая пара вход-выход выглядит заманчиво, особенно в моем случае (SMH2010, кол-во блоков в проекте >3000)
Если проблема не решена на данный момент - подскажите, к чему она может привести? __________________ Нормально делай - нормально будет |
03.04.2020, 08:52 | #27 | |
Senior Member
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 4 173
Благодарил(а): 242 раз(а)
Поблагодарили:
166 раз(а) в 158 сообщениях
|
Ответ: Можно ли применять пустые макросы
Цитата:
как можно - использовать входа любого подходящего фбд-блока, например так. Последний раз редактировалось LordN, 03.04.2020 в 09:15 |
|
03.04.2020, 15:00 | #28 |
Новичок
Регистрация: Apr 2020
Адрес: UrFO
Сообщения: 9
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Можно ли применять пустые макросы
Уж не ругайтесь так на меня. Просто последнее сообщение в ветке от августа 2018. Вдруг за полтора года чего поменялось...
__________________ Нормально делай - нормально будет |
03.04.2020, 17:58 | #29 | |
Senior Member
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 4 173
Благодарил(а): 242 раз(а)
Поблагодарили:
166 раз(а) в 158 сообщениях
|
Ответ: Можно ли применять пустые макросы
Цитата:
макрос - это не фбд блок, а упаковка для них. лоджик по-сути ничего про макросы и не знает. ему что они есть что их нету - без разницы. |
|
05.04.2020, 20:04 | #30 |
Новичок
Регистрация: Apr 2020
Адрес: UrFO
Сообщения: 9
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Можно ли применять пустые макросы
Ну вообще - это брешь в обороне, которую на мой взгляд, залатать нетрудно - почему не латают - непонятно..
Фичей это назвать нельзя - фича - это случайный баг, прошедший испытание временем)) Думаю, что и первый попавшийся фбд не нужно воспринимать как стартовую точку. Например, мультиплексор - вроде готовый фбд, а по сути ветвитель switch (ну или многоуровневый if), состоящий из кучи фбд попроще - то бишь сам является залоченным макросом.. В целом у меня сформировалось такое мнение: официально никто об этой штуке не знает, потому и испытаний не проводилось. Хотите - используйте на свой страх и риск, а лучше не используйте. При этом ни отключать, ни тестировать никто не собирается PS А кто писал лоджик и конструктор - сотрудники Сегнетикс или наемники? __________________ Нормально делай - нормально будет |