Форум 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 » Языки программирования в TRACE MODE 6 / Algorithm Programming Languages » Преобразование данных

   
Автор / Author Тема / Topic: Преобразование данных
AlKon
Forum Professor / Завсегдатай форума
Участник № / Member № 1919


Icon 1 отправлено / posted      Профиль для / Profile for AlKon           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Вопрос такой:
Как преобразовать целочисленный аргумент (DINT) в 16-форму представления и показать на экране в 16-системе счисления?
Задача у меня такая:
есть два/три аргумента типа (DINT) - необходимо сцепить их и получить строку в виде номера сот.телефона: "E7910..." а потом "E" заменить на "+"?
Каким образом можно это сделать, используя язык ST?

Сообщения / Posts 229 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AlKon
Forum Professor / Завсегдатай форума
Участник № / Member № 1919


Icon 1 отправлено / posted      Профиль для / Profile for AlKon           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Вопрос решен, но только почему в программе при обмене с внутренними функциями передаются строки только из 4 символов?
Сообщения / Posts 229 | Из / 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 
Свяжите строковые аргументы с текстовыми атрибутами каналов, например, КОММЕНТАРИЯМИ.
Тогда Вы сможете манипулировать строковыми переменными длиной до 40 символов.

Сообщения / Posts 17107 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AlKon
Forum Professor / Завсегдатай форума
Участник № / Member № 1919


Icon 1 отправлено / posted      Профиль для / Profile for AlKon           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Сообщите пожалуйста в чем дело:
Системная переменная @Set_Date возвращает дату и время в секундах с 00:00:00, 01.01.1970 ?
У меня получается, что кол-во секунд смещено на три часа, т.е. на три часа меньше?

Сообщения / Posts 229 | Из / 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 
Потому что эта переменная показывает абсолютное безсезонное время по Гринвичу, как и все переменные времени в Trace Mode.
При отображении таких переменных они "локализуются" в соответствии с системным временем места наблюдения.

Сообщения / Posts 17107 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AlKon
Forum Professor / Завсегдатай форума
Участник № / Member № 1919


Icon 1 отправлено / posted      Профиль для / Profile for AlKon           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Может быть подскажете как присвоить переменной типа "Data and Time" значение из переменных типа Int или Real?
т.е. есть переменные дата и время в числовом виде с котроллера, как их перевести в Trace Mode формат?

Сообщения / Posts 229 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AlKon
Forum Professor / Завсегдатай форума
Участник № / Member № 1919


Icon 1 отправлено / posted      Профиль для / Profile for AlKon           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
И еще:
В программе на ST наблюдается такое:
при делении:
переменных SINT на SINT сообщается, что деление на ноль???
переменных INT на INT результат неправильный???
переменных UINT на UINT результат правильный!!!

В чем особенность ???
переменные использовались простые (60 и 10; 60 и 30 и.т.п.).

Сообщения / Posts 229 | Из / 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 
Особенность заключается в том, что операция деления производится только с числами с типом данных REAL (FLOAT).
Сообщения / Posts 17107 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Grigorovskih
Forum Professor / Завсегдатай форума
Участник № / Member № 1915


Icon 1 отправлено / posted      Профиль для / Profile for Grigorovskih           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Здравствуйте Господа!

Расскажите мне вот, что:

Есть у меня 4-х байтовое число типа FLOAT в памяти в виде отдельных двухбайтовых слов, как мне собрав эти слова в двойное корректно воспроизвести это число в виде собственно самого FLOATа?
т.е. к примеру, есть число 45.56, в памяти это будет выглядеть так 16#42363d71. Есть функция выполненная в виде FBD блока (упаковка слов).
Я искусственно (для проверки) задаю в шестнадцатиричном виде для имеющихся у неё входных аргументов UINT(2шт.) значения 16#4236 и 16#3d71 соответственно, т.е. происходит упаковка слов 16#4236 и 16#3d71 в двойное четырёхбайтовое слово 16#42363d71- Аргумент LREAL (выход функции).
По скольку выход этого FBD блока связан с аргументом типа LREAL, значит как я понимаю должно произойти преобразование во FLOAT. Так вот в окне значений аргументов при отладке в шеснадцатиричном виде он показывает то что надо, а именно 16#42363d71, а вот Float он показывает не 45.56, а 1,11085*10^9. В чём ошибка?

Сообщения / Posts 362 | Из / 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 
В Trace Mode встроено преобразование типов, поэтому большое целое число будет большим числом во Float. Реализовать Вашу задачу можно только арифметически. Т.е. выделить мантису, порядок и знак, и преобразовать с помощью программки во Float.

А для каких целей Вам это нужно?

Сообщения / Posts 17107 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Grigorovskih
Forum Professor / Завсегдатай форума
Участник № / Member № 1915


Icon 1 отправлено / posted      Профиль для / Profile for Grigorovskih           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Просто есть контроллер I7188 с которого надо читать DWORD, который разбит на два двухбайтовых регистра, а ложит он туда число прямо из памяти но в виде FLOATa (там на С програмка написана, которая читает данные по нестандартному протоколу с другого устройства и врегистры MB TCP ложит), ну я и решил пойти легким путём, но увы...
Придётся сделать как Вы говорите, выделить все составляющие и собрать число так сказать "вручную".

Сообщения / Posts 362 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Grigorovskih
Forum Professor / Завсегдатай форума
Участник № / Member № 1915


Icon 1 отправлено / posted      Профиль для / Profile for Grigorovskih           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Поступили более изящно!
Написали внешнюю библиотеку которая преобразовывает представленное FLOAT число в обычный REAL.

Сообщения / Posts 362 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Grigorovskih
Forum Professor / Завсегдатай форума
Участник № / Member № 1915


Icon 1 отправлено / posted      Профиль для / Profile for Grigorovskih           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Уважаемая тех. поддержка!

Почему Вы не посоветовали мне воспользоваться функцией Rout_Float(3)? Там в текстовике необходимо только указать порядок следования байт и все!

Сообщения / Posts 362 | Из / 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 
У Вас было два регистра с WORD. Алгоритм необходимый для преобразования его во Float нам неизвестен. Помогла бы ли Вам простая перестановка байт на тот момент, мы не знали, поэтому и посоветовать не могли.
Сообщения / Posts 17107 | Из / 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