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

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

   
Автор / Author Тема / Topic: Как получить 4-х байтовый результат
tyrex
Junior Member / Новичок
Участник № / Member № 59


Icon 1 отправлено / posted      Профиль для / Profile for tyrex           Редактировать/удалить сообщение / Edit/Delete Post 
Ситуация такая: контроллер в ответ на запрос присылает ответ размером в 4 байта. Каким образом можно передать эти 4 байта в качестве результата, если структура RSDATA ограничивает поле V только двумя байтами? И еще. Не могли бы вы выслать более подробное описание полей структур IA, RSDATA и FOUR_BYTE? Например, в вашей документации нигде не написано, что структура IA применяется для передачи данных из редактора базы каналом (c[0] - первый параметр(обычно порт), с[1]-второй и т.д.). Например, узнать, что в структуре RSDATA fmt[3] обозначает режим INPUT/OUTPUT можно только внимательно изучая примеры
изучая. Про структуру FOUR_BYTE я вообще нигде не нашел ни единого упоминания.

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


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
Уважаемый tyrex!

1. В базе каналов Трейс Моуд 5.0 используются только 2 формата: 2-байтовый HEX и 4-байтовый FLOAT. Работать с 4-байтовыми целыми числами в Трейс Моуд нельзя.
В соответствии с описанными в документации алгоритмами обработки запросов
"3. Для найденного канала анализируется элемент p[ind].F.fmt[1] структуры RSDATA. Значение этого элемента определяет следующие действия:
0 – присвоить входу канала значение элемента p[ind].V.v структуры RSDATA;
1 – сформировать для канала признак аппаратной недостоверности.".
Отсюда следует, что принимаемое от драйвера значение интерпретируется как float и в зависимости от типа принимающего канала в базе результат записывается в канал в соответствующем формате.

Если получаемый от контроллера 4-байтовый ответ содержит упакованные дискретные сигналы, его следует просто разложить на 2 канала HEX.
Если это 4-байтовое число в формате float, надо объявить тип приемного канала F и записать принятое число в него без преобразований.
Если это 4-байтовое целое, то Вам придется все равно разбивать его на 2 канала, а затем преобразовывать его уже математическими средствами Трейс Моуд в число формата float (одинарный), возможно,не без потери точности. Если точность должна быть сохранена, придется работать с двумя числами - "старшие разряды" и "младшие разряды".

2. В описании алгоритма вызова драйвера (а не в примерах) указано:
"Если канал типа OUTPUT, то p[0].F.fmt[3]=1;.... Если канал типа INPUT, то p[0].F.fmt[3]=0."

3. В разделе "НАСТРАИВАЕМОЕ ПОДКЛЮЧЕНИЕ ДРАЙВЕРОВ/Описание настроек канала для связи с контроллером" указано:
"При обработке канала подтипа КОНТР_1 или КОНТР_2 МРВ вызывает драйвер, соответствующий их дополнению к подтипу. При этом драйверу передается удаленный адрес. В нем указываются данные, которые надо запросить у контроллера, или переменная контроллера, в которую надо переслать значение канала.
Удаленный адрес включает в себя шесть байт. Его можно разбить на несколько полей (до шести). Каждое поле может включать в себя один или два байта (для каналов подтипа КОНТР_1 первая настройка является номером последовательного порта и может быть только однобайтовой). Формирование значений полей удаленного адреса осуществляется с помощью настроек канала. У каналов подтипов КОНТР_1 и КОНТР_2 с помощью канала подтипа Объект с дополнением Изм. базу можно менять значение двух младших байтов удаленного адреса."
Возможно, Вы работаете со старой редакцией документации и там это отражено неполно.

4. Более подробного описания структур RSDATA и FOUR_BYTE, чем приведено в документации в разделе "ДРАЙВЕР ОБМЕНА ПО ПОСЛЕДОВАТЕЛЬНОМУ ИНТЕРФЕЙСУ/Стандартный заголовок", у нас нет. Это описание исчерпывающе.
Не упомянутые в описании драйвера структуры, приведенные в СТАНДАРТНОМ ЗАГОЛОВКЕ, могут применяться пользователями по их усмотрению.


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

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