This is topic Выборка из БД с задержкой и сравнением in forum Языки программирования в TRACE MODE 6 / Algorithm Programming Languages at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/33/t/000145.html

Posted by FiXiZ (Участник № / Member № 5069) on :
 
Здравствуйте!

При нажатии кнопки запускается программа:
code:
	
//Запускаем SQL-запрос SELECT COUNT(*)...
БД_In = 1;

//Обнуляем результат прошлой выборки
Result = 0;

tiks = 0;

WHILE tiks < 5000000

DO tiks = tiks + 1;

END_WHILE;

//Если есть запись
IF Result_in == 1 THEN
Главный_1_Экран_технология = 1;
END_IF;

Она запускает запрос на выборку количества записей по заданным критериям. Если есть одна запись, соответствующая этим критериям, необходимо перейти на экран. Результат выборки находится в отдельном канале "Result_in". Запрос выполняется, но перехода не осуществляется, думаю из-за задержки обновления result_in, туда не успевает прийти значение к моменту сравнения. Нажимаю второй раз на эту кнопку - осуществляется переход. Представленная задержка также не помогает. Что здесь можно сделать? Можете объяснить популярно, задержка 5000000 - это сколько в секундах? Период 10, разрешение 0.055.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
К этому описанию много вопросов.
Пришлите, пожалуйста, Ваш тестовый проект с программой и комментариями на hotline@adastra.ru.
 
Posted by FiXiZ (Участник № / Member № 5069) on :
 
Проект отправил. Про время можете рассказать, как оно пересчитывается?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Вы организовали в программе внутренний цикл, который лишь увеличивает время пересчета одного вызова программы в реальном времени.
При этом команда на SQL-транзакцию будет выдана только после завершения всего пересчета программы, т.е. после завершения внутреннего цикла.
Задержки на проверки можно осуществлять только с внешними циклами, которые задаются циклом обработки программы и с дискретностью, не меньшей, чем цикл пересчета программы.
 
Posted by FiXiZ (Участник № / Member № 5069) on :
 
То есть входные каналы отрабатывают до выполнения программы, выходные только после нее. В процессе выполнения алгоритмов послать ничего нельзя, только после. Я правильно Вас понял?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Правильно.
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2