|
SMLogix Вопросы о работе в среде SMLogix и о FBD-программировании |
|
Опции темы | Поиск в этой теме |
05.03.2009, 14:57 | #1 |
Senior Member
Регистрация: Jul 2007
Адрес: Калининград
Сообщения: 422
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
Оптимизация программ
Накопилось несколько вопросов по работе FBD и оптимизации программ по объему и быстродействию:
1. Компилируются ли в готовую программу неподключенные FBD и "входы"-"выходы" макросов и резервируются ли для них ресурсы? 2. Что более оптимально по по объему/быстродействию: "собрать" логику на отдельных FBD или использовать пару bool->int + MUX(bool)? 3. Какой сакраментальный смысл в "растяжках", например подключенных к "входам"-"выходам" SCADA? |
05.03.2009, 18:02 | #2 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 115
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: Оптимизация программ
1) Блоки - да. "Входы"/"выходы" - нет (это всего лишь указатели).
2) Вопрос слишком неконкретен. Чуть-чуть почитать можно здесь и пройтись поиском по форуму. Я где-то подробно расписывал. 3) Это есть в разделе Конструктора. Тема так и называется: Растяжка __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
05.03.2009, 19:48 | #3 | ||
Senior Member
Регистрация: Jul 2007
Адрес: Калининград
Сообщения: 422
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
Ответ: Оптимизация программ
Цитата:
Сколько памяти требуют и на сколько увеличивают время обработки программы входы-выходы FBD типа bool, int, long и real каждый? Сколько памяти и времени обработки (хотя бы оценочно) тратится на FBD с количеством входов-выходов по умолчанию. А вопрос подразумевался такой. Что оптимальнее по объему памяти и скорости обработки: на нескольких десятках логических FBD нарисовать автомат состояний или же всего на двух FBD (bool->int и MUX(bool), но с очень большим количеством входов у мультиплексора (2 в степени количества входных переменных)? То есть один и тот же результат можно получить разными способами и с использованием разных FBD. Которые, наверное, обрабатываются с разной скоростью и занимают различный объем памяти.... Цитата:
|
||
05.03.2009, 20:52 | #4 |
Новичок
Регистрация: Jun 2007
Сообщения: 13
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Оптимизация программ
+1
тоже задавался таким вопросом. А можно ли получить информацию по времени выполнения различных блоков, в каких нибудь условных единицах, для сравнения? Например в тактах микроконтроллера. |
06.03.2009, 07:54 | #5 |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 052
Благодарил(а): 20 раз(а)
Поблагодарили:
21 раз(а) в 21 сообщениях
|
Ответ: Оптимизация программ
нельзя
|
06.03.2009, 10:51 | #6 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 115
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: Оптимизация программ
Я бы даже сказал, что нереально.
Если бы ядро писалось на ассемблере, ещё можно было как-то через пень-колоду посчитать (а ведь некоторые блоки имеют внутри циклы!). А тут С++ с оптимизацией. Это после каждого выпуска ядра внутрисхемным отладчиком проверять, что там компилятор намудрил. Уж увольте. Пару месяцев работы можно пустить на более важные дела. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
06.03.2009, 11:15 | #7 | ||
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 115
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: Оптимизация программ
Цитата:
Как я уже писал, мультиплексор - это самый быстрый блок. Количество его входов влияет только на занимаемый объём памяти. Входы - это указатели, они ничего, кроме памяти, не потребляют. Это в любом случае адрес (2 или 4 байта). Если это открытый вход, то он указывает на константу, хранящуюся в ПЗУ (ещё плюс 1, 2 или 4 байта на хранение константы). Любой блок - это набор входов и выходов + идентификатор блока. Цитата:
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
||
06.03.2009, 19:37 | #8 |
Новичок
Регистрация: Jun 2007
Сообщения: 13
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Оптимизация программ
Еще вопросик, проверка числа на не равенство !=0 можно выполнить либо
блоком CMP(int) Либо блоком int->bool Какой способ лучше с точки зрения скорости и размера. |
10.03.2009, 10:19 | #9 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 115
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: Оптимизация программ
У блока int->bool меньше входов/выходов, типы одинаковые с cmp(int), следовательно он занимает меньше памяти.
Если вы предлагаете использовать преобразование, как сравнение с нулём, значит вам знакома следующая комбинация: or a,a jnz label1 ... И значит вы знаете, что преобразование в бул выполняется много быстрее, чем сравнение интов. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
22.01.2019, 16:13 | #10 | |
Senior Member
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 4 163
Благодарил(а): 240 раз(а)
Поблагодарили:
165 раз(а) в 157 сообщениях
|
Ответ: Оптимизация программ
Цитата:
|
|
23.01.2019, 03:27 | #11 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 115
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: Оптимизация программ
В тексте этого обсуждения вся суть существования растяжки уже раскрыта.
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
23.01.2019, 09:12 | #12 |
Senior Member
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 4 163
Благодарил(а): 240 раз(а)
Поблагодарили:
165 раз(а) в 157 сообщениях
|
Ответ: Оптимизация программ
это не суть, а набор букв.
|
23.01.2019, 23:41 | #13 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 115
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: Оптимизация программ
Чтобы гарантировать доставку данных до Автоскады в заданных при проектировании условиях.
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
24.01.2019, 11:36 | #14 | |
Senior Member
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 4 163
Благодарил(а): 240 раз(а)
Поблагодарили:
165 раз(а) в 157 сообщениях
|
Ответ: Оптимизация программ
Цитата:
мне же хочется увидеть пример решения устранения "зацикливания" |
|
24.01.2019, 12:38 | #15 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 115
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: Оптимизация программ
Растяжка не решает проблем зацикливания. Она решает именно то, для чего она предназначена.
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
22.06.2020, 11:40 | #16 |
Senior Member
Регистрация: Feb 2016
Адрес: Москва
Сообщения: 294
Благодарил(а): 3 раз(а)
Поблагодарили:
6 раз(а) в 6 сообщениях
|
Ответ: Оптимизация программ
Арсений, ссылки не работают(
__________________ Работа есть величина физическая, измеряется в Джоулях... |
22.06.2020, 12:43 | #17 | |
Сотрудник Сегнетикс
Регистрация: Mar 2016
Адрес: SPb
Сообщения: 4 337
Благодарил(а): 0 раз(а)
Поблагодарили:
255 раз(а) в 251 сообщениях
|
Ответ: Оптимизация программ
Ага
Цитата:
__________________ Если ничто другое не помогает, прочтите, наконец, инструкцию |
|
22.06.2020, 12:44 | #18 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 115
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: Оптимизация программ
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |