Форум 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: Циклы пересчета
Avsiannikova
Active Forum Member / Активный участник форума
Участник № / Member № 5946


Icon 1 отправлено / posted      Профиль для / Profile for Avsiannikova           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Здравствуйте.
У меня такая ситуация. Есть две программы, которые должны отрабатывать друг за другом. Т.е. вторая программа должна сработать, после того как выполнится первая(из первой должно придти значение во вторую и вторая срабатывает).
Какой следует поставить цикл пересчета у обоих программ?

Сообщения / Posts 64 | Из / 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 
Разнести исполнение программ по разным циклам можно, если использовать циклы пересчета типа F1, F2 и т.д.
Однако, при циклическом исполнении программ понятия "первая" и "вторая" весьма условны.
Если эти программы работают эпизодически (запускаются по какому-то событию), то корректнее сделать их выключенными.
Включать первую.
Первая отрабатывает, передает данные, запускает вторую и выключает себя.
Вторая отрабатывает и выключает себя.

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


Icon 1 отправлено / posted      Профиль для / Profile for Avsiannikova           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Они должны постоянно выполняться одна за одной.
Сообщения / Posts 64 | Из / From: Беларусь  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Avsiannikova
Active Forum Member / Активный участник форума
Участник № / Member № 5946


Icon 1 отправлено / posted      Профиль для / Profile for Avsiannikova           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Что именно вы понимаете под "включает/выключает"?
Сообщения / Posts 64 | Из / From: Беларусь  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Alex210271
Active Forum Member / Активный участник форума
Участник № / Member № 4421


Icon 1 отправлено / posted      Профиль для / Profile for Alex210271           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Имеется в виду атрибут "Выключить – (3, C) Состояние" канала CALL вызова программы. Его можно изменить и изнутри самой этой программы и тем самым остановить пересчет канала. В Вашем случае естественно запустив перед этим на выполнение вторую программу. Вот только если программы выполняются последовательно друг за другом, нельзя ли все сделать в одной программе?
Сообщения / Posts 80 | Из / 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 
"Они должны постоянно выполняться одна за одной. "
Если программы выполняются без пауз, трудно понять, какая из них будет первой, какая - второй.

Сообщения / Posts 17316 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Жигалов Денис Николаевич
Forum Haunter / Завсегдатай форума
Участник № / Member № 6035


Icon 1 отправлено / posted      Профиль для / Profile for Жигалов Денис Николаевич           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
А что у вас там за программы то две? Их в одну не как не объединить?
Сообщения / Posts 112 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Avsiannikova
Active Forum Member / Активный участник форума
Участник № / Member № 5946


Icon 1 отправлено / posted      Профиль для / Profile for Avsiannikova           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Первая генерирует некоторые числа в канал и посылает бит=1. Вторая считывает значение канала из первой и сбрасывает бит.
На основе этого значения из базы данных вытягиваются некоторые знаЧения, которые рассылаются по выходным каналам.

Тоесть, сгенерилось значение при помощи пилы(если пила=4 одно, если 5 другое и итд от 0 до 23) и послалась единичка на исполнение выборки из базы. Вторая програмка подсчитала сгенеренное значение и записала выбранное из базы в нужный канал. Потом обнуляем бит.
В одной программе что-то не идет.. извините, если не совсем понятно.

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


Icon 1 отправлено / posted      Профиль для / Profile for Alex210271           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
За один проход программы конечно не получится, поскольку выборка из базы запустится программой только после окончания этого прохода программы. К тому же выборка может выполнятся долго - не один цикл пересчета. Но одной программой сделать можно и нужно. Если Вы выставляете бит=1 в какой-то канал, то по нему и надо ориентироваться. Проверяете бит в начале программы и если бит равен нулю выполняем первую часть программы (определяем значение и взводим бит, запускаем на исполнение запрос) если бит равен единице проверяем выполнился ли запрос к БД (после отработки значение канала запроса должно сбросится в ноль), если запрос еще не выполнен ничего не делаем, если запрос завершен, выполняем вторую часть программы, потом обнуляем бит. Программа будет постоянно повторятся со своим периодом пересчета и будет выполнять разные действия при разных условиях. Как-то так :-)
Сообщения / Posts 80 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Avsiannikova
Active Forum Member / Активный участник форума
Участник № / Member № 5946


Icon 1 отправлено / posted      Профиль для / Profile for Avsiannikova           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Как проверить выполнился ли запрос? Или может делать какую-то задержку, чтобы подождать пока выполнится запрос?
Кажется такой простой алгоритм, а уже всю голову сломала.

Сообщения / Posts 64 | Из / From: Беларусь  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Жигалов Денис Николаевич
Forum Haunter / Завсегдатай форума
Участник № / Member № 6035


Icon 1 отправлено / posted      Профиль для / Profile for Жигалов Денис Николаевич           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
quote:
Отправитель / Originally posted by Avsiannikova:
Как проверить выполнился ли запрос? Или может делать какую-то задержку, чтобы подождать пока выполнится запрос?
Кажется такой простой алгоритм, а уже всю голову сломала.

...проверяем выполнился ли запрос к БД (после отработки значение канала запроса должно сбросится в ноль)...

Т.е смотрим на входное или реальное значение канала(канал который шаблон связей с СУБД).
Смотрим при выполнении запроса там 1 или 0. Я вот тут не уверен говорить не стану.

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


Icon 1 отправлено / posted      Профиль для / Profile for Alex210271           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Ну если у Вас запрос к БД канал CALL с типом вызова SQLQuery, то в справке написано: "Значение канала CALL задает номер выполняемого запроса (см. Создание SQL-запросов ). После отработки значение канала автоматически сбрасывается в 0", то есть если в первой половине программы вы дали команду выполнить запрос, то во второй половине программы проверяете значение канала и как только оно равно нулю значит запрос выполнен. (Правда нужно еще проверить достоверность канала CALL.SQLQuery. Так как вот еще цитата из справки: "Если SQL-запрос по каким-либо причинам выполнить невозможно, то по истечении 600 секунд с момента инициализации запроса каналу CALL устанавливается признак аппаратной недостоверности. ")
Сообщения / Posts 80 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Жигалов Денис Николаевич
Forum Haunter / Завсегдатай форума
Участник № / Member № 6035


Icon 1 отправлено / posted      Профиль для / Profile for Жигалов Денис Николаевич           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Ну наверное как то так.
"выполнить_запрос" = 1;
IF "CALL.SQLQuery_In(или R)" = 0 and "CALL.SQLQuery_I(достоверность)" = 0 THEN
<Делаем что нам надо>;
END_IF;

Ну и так по случаю добавлю. Если TM не сможет выполнить запрос(допустим сервер БД выключился), он начинает так тормозить что глаза на лоб вылезают, учтите это.

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


Icon 1 отправлено / posted      Профиль для / Profile for Avsiannikova           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Спасибо за ответы, делала не через стандартный сервер БД,а при помощи базы Оракла и Industrial Data Bridge. Сделала все в одной программе.
Сообщения / Posts 64 | Из / 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