Segnetics

Вернуться   Segnetics > Форум Segnetics > SMLogix

SMLogix Вопросы о работе в среде SMLogix и о FBD-программировании

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.03.2015, 17:01   #1
Plastic_Enterprice(Yar)
Новичок
 
Регистрация: Mar 2015
Адрес: Новочеркасск
Сообщения: 2
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Exclamation Время выполнения программы

Доброго времени суток

Как написано в "хэлпе", контроллер Segnetics автоматически увеличивает время выполнения цикла программы. Мне необходимо по условию заказчика выводить максимально время выполнения цикла (и это должно быть как можно точное число). Для чего нужно это?) Т.к. производство на предприятии заказчика связанно с опасными веществами, то нужно учитывать критическое время принятия решения, иначе пройденная точка не возврата приведёт к печальным последствиям.

Это можно реализовать с помощью счётчиков CTU 16, но для этого необходимо выставить цикл выполнения программы на самый минимальный уровень, т.е. на 1 мс. Следовательно, наша программа будет работать с постоянно увеличиваемым циклом на каждом круге, что само по себе критично, т.к. забирает ещё и на себя время выполнения.

P.S. конкретно я использую контроллер Segnetics SMH 2G. Спасибо за прочтение.
Plastic_Enterprice(Yar) вне форума   Ответить с цитированием
Старый 20.03.2015, 17:30   #2
serg-el
Senior Member
 
Регистрация: Aug 2013
Адрес: Москва
Сообщения: 600
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Время выполнения программы

Попробуй так - см. рис..
Отладить дальше сможешь сам?
Миниатюры
Нажмите на картинку для увеличения

Название:  max tick.jpg
Просмотров: 273
Размер:  23.1 Кбайт  
serg-el вне форума   Ответить с цитированием
Старый 25.03.2015, 16:01   #3
Norton
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 Причина: внесены уточнения к вопросу
Norton вне форума   Ответить с цитированием
Старый 25.03.2015, 16:55   #4
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Время выполнения программы

Цитата
Сообщение от Norton Посмотреть сообщение
Цикл работы системы (тик) обязательно нужно задавать каким-то "круглым" числом, например 100мс, 300мс, 500мс, или же можно вводить любое число в диапазоне от 1 до 1000мс?
Любое. Было бы иначе, ввести любое было бы невозможно.


Цитата
Сообщение от Norton Посмотреть сообщение
И насколько бОльшим (в процентном соотношении, может быть?) должен быть установленный цикл работы системы по отношению к реальному тику, для оптимальной работы всей программы в целом и точности счётчиков(отсчёт временных отрезков) в частности?
Ровно настолько бОльшим, чтобы реальный тик никогда не превышал установленный.



Цитата
Сообщение от Norton Посмотреть сообщение
Используется SMH2010, если это играет какую-то роль в данном вопросе. Но данный вопрос интересует так же и относительно других контроллеров Segnetics.
Не играет.



Цитата
Сообщение от Norton Посмотреть сообщение
Сейчас в проекте установленный цикл работы системы - 100мс, а реальный - колеблется от 101 до 110. СтОит увеличить установленный цикл работы, до, например, 120мс(115мс?), или можно оставить всё как есть?
Если вам не важна точность выдерживания временнЫх отрезков и качество работы регуляторов, то можете хоть 1 мс задать.

Важно ещё понимать, что отладка увеличивает время цикла на 25-40 мсек.



Цитата
Сообщение от Norton Посмотреть сообщение
При этом пересчёт секунд в тики для входов счётчиков производится через константу 100мс(установленный цикл работы системы), а не через реальный тик с блока DEVICE(kernel).
Оба варианта неправильны, поэтому всё равно, какой вы используете. Хотя нет, константа всё же лучше в вашем случае.

Жирным выделил то правило, выполнение которого не вызвало бы остальных вопросов.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 26.03.2015, 07:32   #5
Norton
Member
 
Регистрация: May 2014
Сообщения: 85
Благодарил(а): 2 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Время выполнения программы

Точность выдержки временнЫх интервалов как раз-таки важна, иначе вопросов не было бы.

"Оба варианта неправильны, поэтому всё равно, какой вы используете."

Отладка программы происходит на контроллере с версией ядра 236, он не поддерживает блок "TimeToTick". Обновить ядро нечем.

Потому приходится использовать макрос пересчёта секунд в тики, выложенный здесь же на форуме ещё до появления блока "TimeToTick". И у этого древнего макроса есть вход "тик системы", от которого, собственно, и зависит точность пересчёта секунд в тики. Что тогда заводить на этот вход, если не установленный цикл работы системы и не реальное время цикла?
Norton вне форума   Ответить с цитированием
Старый 26.03.2015, 10:02   #6
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Время выполнения программы

Цитата
Сообщение от Norton Посмотреть сообщение
Точность выдержки временнЫх интервалов как раз-таки важна, иначе вопросов не было бы.

Отладка программы происходит на контроллере с версией ядра 236, он не поддерживает блок "TimeToTick". Обновить ядро нечем.

Потому приходится использовать макрос пересчёта секунд в тики, выложенный здесь же на форуме ещё до появления блока "TimeToTick". И у этого древнего макроса есть вход "тик системы", от которого, собственно, и зависит точность пересчёта секунд в тики. Что тогда заводить на этот вход, если не установленный цикл работы системы и не реальное время цикла?
Device(kernel), выход SetTick. При этом обязательно выполнить условие: RealTick<=SetTick.

Блок TimeToTick был создан специально для тех ленивых людей, которым было влом соединять связью макрос и блок и они лили крокодиловы слёзы на форуме о том, что "невозможно задать время". Содержимое блока TimeToTick и есть банальное объединение блока Device(kernel) и макроса TimeToTick.


PS. Для использования реального цикла системы вам нужно создать счётчик, динамически отсчитывающий временные отрезки. Существующие счётчики считают циклы, чему бы они не были равны. Поэтому задавать им количество циклов исходя из времени выполнения одного единственного цикла на момент начала счёта - прямой путь к ошибкам расчётов.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 26.03.2015, 15:06   #7
Norton
Member
 
Регистрация: May 2014
Сообщения: 85
Благодарил(а): 2 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Время выполнения программы

Arsie, Спасибо.

Хоть Вы меня немного не так поняли, но ответы на свои вопросы я получил.
Norton вне форума   Ответить с цитированием
Старый 26.03.2015, 16:11   #8
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Время выполнения программы

Цитата
Сообщение от Norton Посмотреть сообщение
Arsie, Спасибо.

Хоть Вы меня немного не так поняли, но ответы на свои вопросы я получил.
Возможно, вам будет интересно: http://forum.segnetics.com/showthread.php?t=2161


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать свои сообщения

BB code is Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FMR AIN время фильтрации Max2114 Вопросы о FMR и MRL 23 03.03.2020 15:52
Оптимизируем программы на с++ Gromov Вопросы о программировании 16 26.12.2018 13:21
Журнал. Автоматическая очистка при загрузки программы Arsie SMArt 0 01.04.2015 12:22
Как оценить время выполнения программы в контроллере? Arsie ЧаВо - Часто задаваемые Вопросы 0 04.10.2013 16:51
Слетает ядро при выключении питания во время загрузки программы avas Вопросы о SMH2010 9 14.12.2012 14:19


Часовой пояс GMT +4, время: 16:43.


Версия vBulletin: 3.8.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2023