Форум 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 » Мониторы Реального Времени / Real Time Monitors » Передача из HEX32 в формате UDINT

   
Автор / Author Тема / Topic: Передача из HEX32 в формате UDINT
Сергей Морозов
Active Forum Member / Активный участник форума
Участник № / Member № 2076


Icon 1 отправлено / posted      Профиль для / Profile for Сергей Морозов           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
По ОРС принимаю из контроллера число в формате UDINT, все разряды значащие, младшие разряды потерять нельзя, т.е. real не подходит.
В любом другом варианте не могу получить правильное отображение значения. Показательный пример: 7F FF FF FF (+2147483647) отображается как -2147483648. При этом младшие разряды явно теряются: при изменении входного значения в младшем разряде, все равно отображается -2147483648.
Пробовал использовать каналы HEX32, DF не помогает, пробовал всячески преобразовывать - безрезультатно.
Данные принимаются правильно - значение канала HEX32 в формате "по умолчанию" отображается правильно. Проверял в профайлерах 6.06, 6.07, 6.08.

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

Сообщения / Posts 98 | Из / 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 
Для отображения значения канала HEX32 на экране в формате UDINT достаточно задать именно такой тип аргумента и задать формат отображения в ГЭ "Текст"

Generic %u
(см."Приложениея/Форматы/Формат Си вывода чисел").
Проверено в 6.08.

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


Icon 1 отправлено / posted      Профиль для / Profile for Сергей Морозов           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Извините, неправильно сформулировал основную проблему, вопрос по отображении возник в процессе.
Изначальная проблема - не могу корректно передать в базу данных число UDINT, полученное от контроллера. Без проблем передается диапазон от 0 до 9, дальше или не передается вовсе или искажается. Без проблем можно передать в текстовое поле в формате HEX, но желательно получить в базе целое десятичное число.

Сообщения / Posts 98 | Из / 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 
В отличие от остальных передач в аргументы запроса SQL передаются строковые выражения.
Канал HEX32 имеет только 2 формата:
- по умолчанию - HEX,
- при установленном флажке DEC - DINT.
Необходимо осуществить преобразование форматов. При привязке к экрану по указанной выше методике преобразование осуществляет экран.
Вам придется организовать пересылку значения канала HEX32 (по умолчанию) в аргумент SQL-запроса в формате UDINT.
Это можно выполнить либо программно, либо с помощью канала CALL.MOVE.

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


Icon 1 отправлено / posted      Профиль для / Profile for Сергей Морозов           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Создаю канал HEX32, привязываю его к источнику;
создаю канал CALL.MOVE с аргументами IN и OUT, оба UDINT;
IN канала CALL.MOVE привязываю к реальному значению канала HEX32;
в базе данных создаю поле типа длинное целое, с плавающей точкой двойной точности или текстовое;
создаю запрос, привязываю поле базы к аргументу OUT канала CALL.MOVE.
В результате:
в версии 6.06 числа с единицей в старшем разряде в базу данных пишутся как отрицательные (для любого типа поля базы данных);
в версии 6.08 все пишется правильно (кроме поля базы "длинное целое"), но мне очень желательно добиться результата в версии 6.06.
Можно как то решить проблему?

Сообщения / Posts 98 | Из / 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 
"В версии 6.08 все пишется правильно (кроме поля базы "длинное целое")"

При передаче значений в базу данных по описанной схеме в релизе 6.08 проблем быть не должно. Проконтролировать значение, отправляемое Trace Mode можно, включив трассировку ODBC.

Необходимо обновить релиз до 6.08.

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


Icon 1 отправлено / posted      Профиль для / Profile for Сергей Морозов           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Спасибо, в 6.08 "длинное целое" заработало после удаления-повторного создания CALL.MOVE.
Сообщения / Posts 98 | Из / 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