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

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

   
Автор / Author Тема / Topic: КОНТР_1
Dmitry Alexandrovich
Junior Member / Новичок
Участник № / Member № 371


Icon 7 отправлено / posted      Профиль для / Profile for Dmitry Alexandrovich           Редактировать/удалить сообщение / Edit/Delete Post 
драйвер для КОНТР_1 одиночные запросы.

1. один СОМ порт и несколько контролеров, для каналов Input запросы проxодят нормально, но если
'Входу' канала присвоить скажем 5, то (RSDATA *p в Setxxx)
p[0].V.v==1 , a p[0].V.i[0]==25772 и при дальнеших изменениях "Входа" канала увеличивается p[0].V.i[0], а p[0].V.v==1 всегда.
Как определить значение "Входа" канала, нужно скажем оформить разные запросы для разных "состояний" одного канала

2.Если type_cnv==1 || type_cnv==0 в Get_xxx, то наблюдаем ситуацию (1), а если type_cnv==10 || type_cnv==8, то p[0].V.v==0 всегда

Нет возможности узнать значение канала, как его "вычислить"
[Улыбка / Smile]

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


Icon 2 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
1) Канал может быть либо Input либо Output, что-нибудь одно. Соответственно для канала Input значение читать бессмысленно, в него драйвер может только посылать значение. Тип канала определяется флажком p[0].F.fmt[3].
Например так:
code:
bool bInput = (p[0].F.fmt[3] == 0);

Если Вам нужно "...оформить разные запросы для разных "состояний"...", то можно либо запоминать текущее состояние в драйвере (для этого нужно предварительно сделать запрос состояния), либо передавать эти состояния через параметры канала, которых максимум 6 байт (структура IA), причем при блоковых запросах доступны только 5.

2) В Get_xxx() нужно ЗАПИСЫВАТЬ значение в канал а не пытаться читать. Параметр type_cnv определяет алгоритм разбора при блоковых запросах:
  • 0 или 1 – получены корректные данные. Использовать алгоритм обработки запросов DATA11.
  • 2 или 3 – получены корректные данные. Использовать алгоритм обработки запросов BLOCKDATA11.
  • 8,10,12 – получены корректные данные. Использовать алгоритм обработки данных DATA11. Элемент p[i+1] содержит метку времени последнего изменения значения опрашиваемого канала в секундах с 1 января 1970 года (i – индекс элемента, содержащего значение для канала). 8 – запись полученного значения канала в архив запрещена, 10 – разрешена, 12 – получен блок данных одного канала для записи в архив.
  • 9,11,13 – то же, что 8, 10, 12, но использовать алгоритм обработки данных BLOCKDATA11. 9 – запись полученного значения канала в архив запрещена, 11– разрешена, 13 - получен блок данных одного канала для записи в архив.
  • 99 - ошибка.

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