|
SMLogix Вопросы о работе в среде SMLogix и о FBD-программировании |
|
Опции темы | Поиск в этой теме |
20.03.2015, 17:01 | #1 |
Новичок
Регистрация: Mar 2015
Адрес: Новочеркасск
Сообщения: 2
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Время выполнения программы
Доброго времени суток
Как написано в "хэлпе", контроллер Segnetics автоматически увеличивает время выполнения цикла программы. Мне необходимо по условию заказчика выводить максимально время выполнения цикла (и это должно быть как можно точное число). Для чего нужно это?) Т.к. производство на предприятии заказчика связанно с опасными веществами, то нужно учитывать критическое время принятия решения, иначе пройденная точка не возврата приведёт к печальным последствиям. Это можно реализовать с помощью счётчиков CTU 16, но для этого необходимо выставить цикл выполнения программы на самый минимальный уровень, т.е. на 1 мс. Следовательно, наша программа будет работать с постоянно увеличиваемым циклом на каждом круге, что само по себе критично, т.к. забирает ещё и на себя время выполнения. P.S. конкретно я использую контроллер Segnetics SMH 2G. Спасибо за прочтение. |
20.03.2015, 17:30 | #2 |
Senior Member
Регистрация: Aug 2013
Адрес: Москва
Сообщения: 600
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Время выполнения программы
Попробуй так - см. рис..
Отладить дальше сможешь сам? |
25.03.2015, 16:01 | #3 |
Member
Регистрация: May 2014
Сообщения: 85
Благодарил(а): 2 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Время выполнения программы
Более подходящей темы для вопроса не нашёл, поэтому спрошу здесь.
Цикл работы системы (тик) обязательно нужно задавать каким-то "круглым" числом, например 100мс, 300мс, 500мс, или же можно вводить любое число в диапазоне от 1 до 1000мс? И насколько бОльшим (в процентном соотношении, может быть?) должен быть установленный цикл работы системы по отношению к реальному тику, для оптимальной работы всей программы в целом и точности счётчиков(отсчёт временных отрезков) в частности? Используется SMH2010, если это играет какую-то роль в данном вопросе. Но данный вопрос интересует так же и относительно других контроллеров Segnetics. Сейчас в проекте установленный цикл работы системы - 100мс, а реальный - колеблется от 101 до 110. СтОит увеличить установленный цикл работы, до, например, 120мс(115мс?), или можно оставить всё как есть? При этом пересчёт секунд в тики для входов счётчиков производится через константу 100мс(установленный цикл работы системы), а не через реальный тик с блока DEVICE(kernel). Последний раз редактировалось Norton, 25.03.2015 в 16:07 Причина: внесены уточнения к вопросу |
25.03.2015, 16:55 | #4 | |||||
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: Время выполнения программы
Цитата:
Цитата:
Цитата:
Цитата:
Важно ещё понимать, что отладка увеличивает время цикла на 25-40 мсек. Цитата:
Жирным выделил то правило, выполнение которого не вызвало бы остальных вопросов. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|||||
26.03.2015, 07:32 | #5 |
Member
Регистрация: May 2014
Сообщения: 85
Благодарил(а): 2 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Время выполнения программы
Точность выдержки временнЫх интервалов как раз-таки важна, иначе вопросов не было бы.
"Оба варианта неправильны, поэтому всё равно, какой вы используете." Отладка программы происходит на контроллере с версией ядра 236, он не поддерживает блок "TimeToTick". Обновить ядро нечем. Потому приходится использовать макрос пересчёта секунд в тики, выложенный здесь же на форуме ещё до появления блока "TimeToTick". И у этого древнего макроса есть вход "тик системы", от которого, собственно, и зависит точность пересчёта секунд в тики. Что тогда заводить на этот вход, если не установленный цикл работы системы и не реальное время цикла? |
26.03.2015, 10:02 | #6 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: Время выполнения программы
Цитата:
Блок TimeToTick был создан специально для тех ленивых людей, которым было влом соединять связью макрос и блок и они лили крокодиловы слёзы на форуме о том, что "невозможно задать время". Содержимое блока TimeToTick и есть банальное объединение блока Device(kernel) и макроса TimeToTick. PS. Для использования реального цикла системы вам нужно создать счётчик, динамически отсчитывающий временные отрезки. Существующие счётчики считают циклы, чему бы они не были равны. Поэтому задавать им количество циклов исходя из времени выполнения одного единственного цикла на момент начала счёта - прямой путь к ошибкам расчётов. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
26.03.2015, 15:06 | #7 |
Member
Регистрация: May 2014
Сообщения: 85
Благодарил(а): 2 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Время выполнения программы
Arsie, Спасибо.
Хоть Вы меня немного не так поняли, но ответы на свои вопросы я получил. |
26.03.2015, 16:11 | #8 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: Время выполнения программы
Цитата:
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|