This is topic Атрибут недостоверность при работе Call.OtherProj с разными проектами in forum Мониторы Реального Времени / Real Time Monitors at Форум TRACE MODE: техническая поддержка.


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

Posted by electroair (Участник № / Member № 8317) on :
 
Добрый день.
С помощью функции CALL.OtherProj (параметр 3) осуществляю передачу данных на микро МРВ (WinPac). Веду управление записью с панели МРВ в профайлере. При наличии связи - всё нормально. Т.е. пишу в атрибут 2-> атрибут 1 становится равен "1" -> атрибут 2 сбрасывается ->передача выполнена->атрибут 1 сбрасывается.
Но при отсутствии связи всё плохо:
Т.е. пишу в атрибут 2-> атрибут 1 становится равен "1" -> атрибут 2 сбрасывается.. и всё.
Достоверность - достоверна, атрибут (1,A) в единице. Если восстановить соединение ничего не поменяется.
Если снова записать "1" в атрибут 2, то (1,A) станет "2", но атрибут 1 уже не сбросится.
Восстановление связи возможно только если сначала обнулить атрибут 2, а затем атрибут 1, и только потом снова записать атрибут 2.
Атрибут недостоверности не появляется вообще.
Что я делаю не так? Как с этим работать?

Мне необходимо понимать, прошла запись или нет.
Спасибо.

[ 30.04.2020, 11:39: Сообщение отредактировал / Message edited by АдАстра. Техподдержка ]
 
Posted by Nico (Участник № / Member № 5342) on :
 
-общий принцип контроля записи есть операция чтения значения переменной;
-узлы должны быть в одном проекте;
-взаимодействие между разными проектами есть
исключительная ситуация;
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
При работе Call.OtherProj с разными проектами атрибут недостоверность использовать нельзя. Так как нет привязки между каналами разных проектов, то достоверность контролировать нельзя.

В этом случае, как уже рекомендовал Nico, для контроля записи параллельно читайте ту же переменную.
 
Posted by electroair (Участник № / Member № 8317) on :
 
Довольно неожиданно, что otherProj не может нормально проверять успешность.
Чтение через otherProj работает неплохо, но жаль, что достоверность может встать в недостоверность при обрыве связи и не восстановится после восстановления связи.
Но как работать с записью через otherProj при том, что после установки 1 в атрибут 2, если связи нет, то атрибут 2 сбрасывается, а атрибут 1 "застревает" в этом состоянии.
В этом состоянии не понятно: оборвалась связь или посылка ещё не отправлена.
А чтобы заставить канал работать снова необходимо принудительно обнулять атрибуты 1 и 2, а только потом снова писать в атрибут 2. Это довольно много действий сделанных последовательно.
Сейчас я провожу все операции через панель МРВ, но я хочу написать функцию, которая будет сама отслеживать запись и чтение и которая сама определит сбой при записи и выведет канал из этого состояния.
Мне необходимо знать, как правильно определять состояние заклинивания канала и как выводить канал из этого состояния. Желателен алгоритм того, что я должен писать, куда и как долго ждать.
Спасибо.
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Контролировать запись Вы можете чтением.

Если значение, которое Вы записываете отличается от считанного, то запись не прошла.

Проделать это можно, скажем периодически отрабатываемой программой на ST (сравнение значений двух аргументов и обнуление еще двух аргументов)
 
Posted by electroair (Участник № / Member № 8317) on :
 
Ок. Тогда всего один вопрос:
Как выодить из заклиненного состояния call.otherProj, когда у него не получилось записать? Что, куда и в какой последовательности необходимо записать, чтоб он развесился?
 
Posted by Nico (Участник № / Member № 5342) on :
 
обнулить атрибуты R,A,FA
 
Posted by electroair (Участник № / Member № 8317) on :
 
А In(2) и I(4) обнулять не обязательно?
Что такое FA?
За один цикл обнуляю R, A и FA (что это?) а на следующем цикле уже можно снова запускать опрос, т.е. писать в In(2)?
 
Posted by Nico (Участник № / Member № 5342) on :
 
FA(4) - недостоверность
 
Posted by electroair (Участник № / Member № 8317) on :
 
А что делать с In (2), который зависает в 1 и при сбрасывании A, снова поднимает его (атрибут А) в единицу?

Всё нужно обнулить за один раз и со следующего цикла запускать запись?
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2