Форум 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 / Algorithm Programming Languages » Помогите разобраться

   
Автор / Author Тема / Topic: Помогите разобраться
Abram Shnider
Active Forum Member / Активный участник форума
Участник № / Member № 4534


Icon 5 отправлено / posted      Профиль для / Profile for Abram Shnider           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Ситуация следующая:

Есть драйвер, который связывает TM 6.07 с прибором через канал W_Float по ModBus.
Есть программа, которая записывает через этот канал значение параметра в прибор.
Значение пераметра берется из базы данных (в интерфейсе представляется в виде импровизированной таблицы из текстовых полей), при обновлении которой значение меняется на 0.

Во время работы программы прибор не всегда успевает "поймать" значение передаваемого параметра.
Как выяснилось, при обновлении таблицы БД, переменная, передающая в программе значение параметра обнуляется вместе с каналом, который отвечает за хранение и отображение параметра в таблице.

В программе пробовал передавать параметр при помощи помещения его в глобальную переменную, а также в другой канал, после чего отправлял в канал драйвера, или в промежуточный Output канал.

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

Собственно вопрос:
Если приравниваешь переменную значению канала (после чего ставим флаг и запрещаем обращаться в канал), то она начинает изменяться вместе со значением канала?

Сообщения / Posts 78 | Из / 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 
Пришлите, пожалуйста, на hotline@adastra.ru тестовый проект с базой данных и четким описанием задачи и используемых для ее решения функций и связей.
Сообщения / Posts 17083 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Abram Shnider
Active Forum Member / Активный участник форума
Участник № / Member № 4534


Icon 1 отправлено / posted      Профиль для / Profile for Abram Shnider           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
2 AdAstra Technical Support,

Столько много я написал только для того, чтобы Вас ввести в смысл решаемой задачи... Сам вопрос конкретно поставлен в конце поста.

Дело в том, что тестовый проект делать слишком напряжно, если учесть как там организована работа с базой данных. Если, конечно, решения не найдем, то тестовый проект подготовить придется...

Хотелось бы просто знать типична ли такая ситуация или Вы ее впервые встречаете?

Сообщения / Posts 78 | Из / 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 17083 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Abram Shnider
Active Forum Member / Активный участник форума
Участник № / Member № 4534


Icon 1 отправлено / posted      Профиль для / Profile for Abram Shnider           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Решение своей проблемы я уже нашел, однако, поставленный вопрос остался для меня актуальным.

Повторюсь более подробно:

Есть канал и программа;
Программа содержит в аргументах реальное значение канала и 2 глобальных переменных (Flag и переменная для хранения реального значения канала);

Программа:

IF (!Flag)
THEN
Flag = true;
Переменная = Канал_R;
END_IF;

В режиме отладки все выглядит как положено, однако, в профайлере Переменная приравнивается реальному значению канала и более не должна изменяться, но при изменении значения канала переменная принимает это значение, хотя не должна.

Мне интересно: это так и должно быть или мне искать проблему где-то в другом месте?

Сообщения / Posts 78 | Из / 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 
По этому фрагменту программы можно утверждать, что "Переменная" должна принять значение "Канал_R" только 1 раз, пока выполняется условие !Flag.
Специально перепроверл этот фрагмент, добавив к нему для проверки выходной аргумент, возвращающий значение "Переменной".
Работает правильно.

Проблему надо искать в остальном тексте программы.
Если есть желание, присылайте для анализа минимизированный тест, воспроизводящий описанный Вами эффект.

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


Icon 1 отправлено / posted      Профиль для / Profile for Abram Shnider           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Тестовый проект работает правильно)

Что-то в проекте, видимо, я упустил... Перепроверю еще...

В любом случае спасибо за участие.

Сообщения / Posts 78 | Из / 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