Форум TRACE MODE: техническая поддержка Послать новую тему / Post New Topic  Послать ответ / Post A Reply
мой профиль / my profile авторизация / login | регистрация / register | поиск / search | часто задаваемые вопросы / faq | начало / forum home

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ТЕХНИЧЕСКАЯ ПОДДЕРЖКА / TECHNICAL SUPPORT TRACE MODE 6 » Редактор проекта TRACE MODE 6 / » Задержка выполнения программы

   
Автор / Author Тема / Topic: Задержка выполнения программы
Сергей Александрович
Active Forum Member / Активный участник форума
Участник № / Member № 2884


Icon 1 отправлено / posted      Профиль для / Profile for Сергей Александрович           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Здравствуйте!

Ситуация следующая: есть алгоритм программы, написанный на Techo ST, в нем есть вызов функции с внешней библиотеки - простой функции задержки (Sleep). Так вот при работе функции, программа стопорится на n-ое количество секунд (как задаю), затем алгоритм продолжает свое выполнение, но вылетает окошко "Calc loop is big".
В принципе понятно почему... Ведь время цикла действительно превышено из-за вынужденного тайм-аута. Не подскажите, как можно реализовать задержку выполнения алгоритма в программе 1)штатными средствами или 2)средствами внешней dll , но без появления этого окошка?

Заранее благодарен!

Сообщения / Posts 65 | Из / From: Российская Федерация  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
В любом варианте Вам надо организовать пересчет программы таким образом, чтобы она имела статическую (глобальную) переменную, которая выступала бы в качестве счетчика времени или циклов.
По достижении значением этой переменной критической величины должен включаться блок выполнения нужного алгоритма в программе.
Такая глобальная переменная может быть организована во внешней библиотеке.
Но более простой способ - использовать глобальную переменную в ST-программе (например, счетчик вызовов программы) или, еще проще, использовать таймерные функциональные блоки языка FBD.

Сообщения / Posts 17106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Grigorovskih
Forum Professor / Завсегдатай форума
Участник № / Member № 1915


Icon 1 отправлено / posted      Профиль для / Profile for Grigorovskih           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Здравствуйте Господа!
Мы уже сталкивались с такой проблемой, в данной ситуации не надо заморачиваться на внешние DLL, всё гораздол проще.
Как уже сказал Модератор, надо завести гл переменку и сделать вызов функции в программе, где добавлять к значению переменки 1 и выходить, а в самой проге просто проверять значение гл. перем. на соответствие заданной величине, ну эта величина и будет мерой задержки.

Сообщения / Posts 362 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Сергей Александрович
Active Forum Member / Активный участник форума
Участник № / Member № 2884


Icon 1 отправлено / posted      Профиль для / Profile for Сергей Александрович           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Спасибо за подсказки!

Действительно, с внешней DLL сплошные заморочки...

Однако, таймаут из DLL делает задержку ровно на n-ое количество секунд (а такая строгая задержка именно и нужна), тогда как время отработки программы всегда разное и варьируется в пределах секунды ...

Сообщения / Posts 65 | Из / From: Российская Федерация  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Задайте в настройках узла период, кратный 0.1 сек. (например, 10*0.01) и организуйте вызов программы с периодом 1 секунда.
Сообщения / Posts 17106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Сергей Александрович
Active Forum Member / Активный участник форума
Участник № / Member № 2884


Icon 1 отправлено / posted      Профиль для / Profile for Сергей Александрович           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Спасибо, помогло!
Сообщения / Posts 65 | Из / From: Российская Федерация  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
   

Quick Reply
Сообщение / Message:

HTML код не разрешен. / HTML is not enabled.
UBB код разрешен. / UBB Code is enabled.

Значки Graemlins / Instant Graemlins
   


Послать новую тему / Post New Topic  Послать ответ / Post A Reply Закрыть тему / Close Topic   Feature Topic   Переместить топик / Move Topic   Удалить топик / Delete Topic Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
 - Printer-friendly view of this topic
Перейти к / Hop To


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2