Вход

Просмотр полной версии : изменится ли время цикла



zendo057
13.10.2014, 19:49
Есть агрегат у которого 15 механизмов работают по одному алгоритму.Программа состоит из одного PLC_PRG(PRG).Соответственно у каждого механизма свои переменные программа громоздкая.Модуль статистик максимальное время выдает чуть больше 9ти мс,выставлено mincyclelenth 10ms. Если механизмы разбить на ФБ время цикла уменьшится?Экспереминтировать нарабочем оборудовании не очень хочется.

Ryzhij
13.10.2014, 20:04
Нет, не уменьшится.

Дело тут вот в чём.
На функциональные блоки и подпрограммы разделяют ИСХОДНЫЙ ТЕКСТ программы.
Такой структурный подход к програмированию позволяет избежать ошибок, сокращает время разработки, делает сопровождение программы более удобным.
Но в ПЛК работает не исходный текст, а КОД, полученный в ходе компиляции.
Компилятор иногда может уменьшить объём кода на выходе за счёт грамотной структуризации, но никак не сократит время исполнения получившегося кода.

zendo057
13.10.2014, 20:44
Хорошо,спасибо,если модуль статистик показывает 9 с хвостиком мс, а выстановлено 10мс это нормально?

lara197a
13.10.2014, 20:49
не выиграете.
если бы были прерывания, то был бы смысл.
обычно для критичных к скорости процессам, ставят отдельные быстрые (в т.ч.булевые) модули.
а основная задача выполняется в цикле.
С ФБ удобнее работать и отлаживать. Особенно если программа большая лучше разбить на части.

К примеру на S7-400. Я смотрел, среднее время цикла 15-17мс.

zendo057
13.10.2014, 21:09
Я ВАС очень благодарю за ответ но скажите 10мс это мало? если модуль статистик 9мс.

Николаев Андрей
13.10.2014, 21:24
1. Если Вы будете использовать много экземпляров одного и того же ФБ, то время и нагрузка несколько снизятся.
2. Полностью присоединяюсь к нашим Гуру - разделять программу - хороший тон. Да и в жизни не раз поможет.
3. Если показывает 8 мс - рекомендую поставить время цикла 15-20 мс. Для Вашей задачи это критично? Может вообще поставить цикл в 100-200 мс?

Валенок
13.10.2014, 22:01
А можно про п.1. За счет чего это ?

zendo057
13.10.2014, 22:18
А можно про п.1. За счет чего это ? Не совсем понял ваш вопрос.

capzap
13.10.2014, 22:31
Занятое место не флеш сократится,все остальное без изменений
А у меня еще претензии к пункту 3, так то это не время цикла, а параметр минимальное время цикла, не отношусь к тем кто любит ноль ставить, но и сотню непонимаю зачем выставлять

lara197a
13.10.2014, 23:00
время цикла в модуле статистики-вещЧь весьма усредненная.
для того, что бы определить максимальное время цикла, в программе используйте функцию max.
Подставьте в нее переменную из модуля статистики "время цикла".
Увидите, что оно много больше того, что вы видите глазами.

Ryzhij
14.10.2014, 04:51
1. Если Вы будете использовать много экземпляров одного и того же ФБ, то время и нагрузка несколько снизятся.
Среднее время (не максимальное!) исполнения можно несколько снизить лишь применяя условные вызовы ФБ и POU, обходя исполнение ненужных в данный момент участков программы.
Но при этом резко возрастает опасность "накосячить".

amn
14.10.2014, 11:41
Надо не забывать, что помимо самой программы должен еще успеть выполниться опрос входов, сетевой обмен, функции самодиагностики и сервиса. Если Ваша программа не требует строго фиксированное время цикла, то поставьте mincyclelenth 0ms. В этом случае все выполнится за оптимальное время.