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

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

   
Автор / Author Тема / Topic: Вычисляемый канал
fherbeck
Junior Member / Новичок
Участник № / Member № 1012


Icon 1 отправлено / posted      Профиль для / Profile for fherbeck           Редактировать/удалить сообщение / Edit/Delete Post 
Есть 32-х битный накопительный счетчик, представленный в виде двух 16-битных каналов
C1HI и C1LO. Необходимо создать канал, вычисляемый по следующей формуле:
(C1HI*0x10000+C1LO) - (C1HI_O*0x10000+C1LO_O),
где C1HI_O и C1LO_O - значения старшего и младшего слова счетчика на предыдущем измерении. Такое возможно?

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


Icon 2 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
Да - такое возможно, но только формулу необходимо переделать:
1) Сначала выполнить вычитание младших байтов, выполнить проверку на неотрицательный результат. Если результат отрицательный - выполнить соответсвующие арифметические действия со старшими байтами.
2) Вычесть между собой старшие байты.
3) Преобразовать результирующие значения старшего и младшего значения в одно число.

В том виде, в котором задана формула у Вас ее можно реализовать только через FBD-блок на Си++.

Сообщения / Posts 17317 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
fherbeck
Junior Member / Новичок
Участник № / Member № 1012


Icon 1 отправлено / posted      Профиль для / Profile for fherbeck           Редактировать/удалить сообщение / Edit/Delete Post 
А в том варианте, который предложили Вы это можно сделать не через FDB-блок на C++? Объясните пожалуйста конкретно, как и куда это подключать. Я пытался проделать это через трансляцию в канале, но так и не понял как получать из СПАД архива значение предыдущего измерения в FDB программе. Кроме того, как я понимаю, при трансляции в архиве будут отсутствовать исходные значения канала. Мне хотелось бы получить результаты вычислений как отдельный канал.

[ 22.03.2005, 18:29: Сообщение отредактировал / Message edited by AdAstra Technical Support ]

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


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
1. Написать программу FBD, реализующую указанный алгоритм. У этой программы должны быть 2 входа, которые будут принимать данные от каналов C1HI и C1LO, и 1 выход.
2. Создать канал RESULT типа FLOAT, в котором должен быть получен ОКОНЧАТЕЛЬНЫЙ РЕЗУЛЬТАТ.
3. Подключить к этому каналу созданную программу в качестве процедуры ТРАНСЛЯЦИИ. При этом входы программы надо привязать к каналам C1HI и C1LO, а ее выход - к атрибуту РЕАЛЬНОЕ канала RESULT.
3. Канал RESULT при архивировании будет сохранять в архиве уже конечный результат.

Надо обратить внимание на то, что необходимо обеспечить синхронность изменения значений каналов C1HI и C1LO с обработкой канала RESULT.
Если данные получаются в асинхронном потоке, надо по сигналам "отработки" (в атрибуте СОБЫТИЯ) каждого канала отслеживать актуальность каждого измерения.

Сообщения / Posts 17317 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
fherbeck
Junior Member / Новичок
Участник № / Member № 1012


Icon 1 отправлено / posted      Профиль для / Profile for fherbeck           Редактировать/удалить сообщение / Edit/Delete Post 
quote:
Отправитель / Originally posted by AdAstra Technical Support:
Надо обратить внимание на то, что необходимо обеспечить синхронность изменения значений каналов C1HI и C1LO с обработкой канала RESULT.

А как достичь этого средствами TRACE MODE?
Сообщения / Posts 18 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
Контроль можно осуществлять по атрибуту "СОБЫТИЯ". Смотрите описание этого атрибута в справочной системе.
Сообщения / Posts 17317 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
fherbeck
Junior Member / Новичок
Участник № / Member № 1012


Icon 1 отправлено / posted      Профиль для / Profile for fherbeck           Редактировать/удалить сообщение / Edit/Delete Post 
А как получить значение предыдущего измерения?
Сообщения / Posts 18 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
А другом канале Вы его не можете сохранять?
Дело в том, что в программе это можно сделать только через глобальные переменные.

Сообщения / Posts 17317 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
   

   Закрыть тему / 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