Преобразование данных «Time» из формата Regul в формат Labview»

Простейшие вопросы в области инженерной разработки
Аватара пользователя
JohnChaban
leader
leader
Сообщения: 669
Зарегистрирован: 18 фев 2010, 13:26
Версия LabVIEW: 2015,2016
Откуда: Город Сосновый Бор Ленинградская Область
Контактная информация:

Re: Преобразование данных «Time» из формата Regul в формат Labview»

Сообщение JohnChaban »

Я собрал эммитатор передачи данных по UDP
Не получается обратную операцию сделать
Вложения
test1.vi
(15.53 КБ) 42 скачивания
test2.vi
(12.98 КБ) 36 скачиваний
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5464
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 87 раз

Re: Преобразование данных «Time» из формата Regul в формат Labview»

Сообщение IvanLis »

JohnChaban писал(а): 07 апр 2022, 21:07 Я собрал эммитатор передачи данных по UDP
Не получается обратную операцию сделать
Прочтите описание функции Type Cast.
Вход type определяет тип выходных данных, Вы что угодно там можете написать, это ни как не повлияет на результат, все равно это String.
Потом Вы по какому-то, только Вам известному алгоритму, извлекли из строки подстроку, а потом пытаетесь из пяти чебуреков, собаку собрать.
Тут чисто логическая ошибка, по причине непонимания происходящего.

Если Вам так хочется собрать все обратно, то необходимо удаленные байты вернуть обратно и все преобразования в обратном порядке выполнить.
1.png
Аватара пользователя
JohnChaban
leader
leader
Сообщения: 669
Зарегистрирован: 18 фев 2010, 13:26
Версия LabVIEW: 2015,2016
Откуда: Город Сосновый Бор Ленинградская Область
Контактная информация:

Re: Преобразование данных «Time» из формата Regul в формат Labview»

Сообщение JohnChaban »

Спасибо вам большое за помощь.
Вот бьюсь со сторокой выяснилось что к сожелению программно она не формируется в крейте процессора RegulR500 стоит модуль и он выдает эту строку, так сказал наш разработчик.
Тоесть вот программы нет, но есть в Epsilon вот такая строка я подошел посмотрел там правда дата и время.
Чего с ней делать ума не приложу.
ujin1
adviser
adviser
Сообщения: 231
Зарегистрирован: 06 ноя 2020, 15:37
Версия LabVIEW: 19
Благодарил (а): 18 раз
Поблагодарили: 37 раз
Контактная информация:

Re: Преобразование данных «Time» из формата Regul в формат Labview»

Сообщение ujin1 »

JohnChaban писал(а): 08 апр 2022, 08:04 в крейте процессора RegulR500 стоит модуль и он выдает эту строку
Очевидно никто из коллег не сталкивался с таким форматом.
Как называется модуль? Есть ли документация на модуль?
Наиболее правильный путь - узнать формат даты и времени и формат передаваемого сообщения у разработчика RegulR500 и этого модуля.
Изображение
Аватара пользователя
JohnChaban
leader
leader
Сообщения: 669
Зарегистрирован: 18 фев 2010, 13:26
Версия LabVIEW: 2015,2016
Откуда: Город Сосновый Бор Ленинградская Область
Контактная информация:

Re: Преобразование данных «Time» из формата Regul в формат Labview»

Сообщение JohnChaban »

Попытаюсь узать
Там просто данные типа Ulint как блин с нмим работать.
Служба технической поддержки прислала документ, в нем есть такая выдержка.(если надо могу выслать документ)
______________________________________________________________________________________________________________________
Дата, время и длительность
Давайте для начала разберемся с различиями типов переменных, которые
применяются для работы со временем и датой. Для этого напомним
соответствующие типы переменных, операции и константы определенные
стандартом МЭК 61131-3 и составляющие целостную систему.
Таких типов в стандарте 4: интервал времени TIME, время дня
TIME_OF_DAY, дата DATE и временная отметка DATE_AND_TIME.
Для каждого типа существуют специальные префиксы, позволяющие
определить, что значение переменной или константы относится к данному типу
(См. Табл.1).
Полная форма Сокращенная форма
TIME# T#.
TIME_OF_DAY# TOD#
DATE# D#
DATE_AND_TIME# DT#
Табл. 1. Типы данных
Для типа TIME представление значений времени состоит из полей дней
(d), часов (h), минут (m), секунд (s) и миллисекунд (ms). Порядок представления
должен быть именно такой, хотя ненужные элементы можно опускать. Для
лучшего зрительного восприятия, поля допускается разделять символом
подчеркивания. Например:
t1 := t#10h_14m_5s;
Старший элемент имеет право превышать верхнюю границу естественного
диапазона представления. Так если в представлении присутствуют дни или
часы, то секунды не могут превышать значения 59. Если секунды стоят
первыми, то их значение может быть и большим.
t1 := t#1m65s; (*ошибка*)
t1 := T#125s; (*правильно*)
Младший элемент можно представить в виде десятичной дроби:
t1 := T#1.2S; (*T#1s200ms*)
Тип TIME это время протекания некоторого процесса – длительность. Его
нельзя смешивать со временем суток – тип TIME_OF_DAY. Принципиальное их
отличие состоит в том, что значение переменных типа TIME_OF_DAY
ограничено диапазоном от 0 до 24 часов. Длительности, определяемые
переменными типа TIME, могут быть произвольными.
Представление значений времени суток дается в формате часы: минуты:
секунды. Секунды могут иметь дробную часть:
td1 := TOD#23:59:59.99;
Применение типа DATE очевидно. Представление даты дается в формате:
ВВГГ-ММ-ДД. Все числа должны быть целыми в рамках естественных
диапазонов. Нумерация дней и месяцев идет «по человечески», т.е. с единицы:
d1 := d#2004-12-04;
Переменные типа DATE_AND_TIME представляют собой временной
штамп – дату и время «в одном флаконе». Представление значений типа DT
содержит дату и время, через дефис:
dt1 := dt#2004-04-04-16:30:00;
Обратите внимание, что дата представлена как ГГГГ-ММ-ДД-ЧЧ:ММ:СС.
Мы в России более привыкли к другому порядку записи но, такое
представление определено ISO 8601 и считается однозначно понятным в разных
странах.
Смешивать в выражениях переменные разного типа нельзя. При
необходимости применяются операции преобразования типов. Наименование
стандартных преобразований выглядят так: «ИЗ ТИПА_TO_В ТИП». Например:
Промышленные АСУ и контроллеры NN 7,8,9 Ó НАУЧТЕХИЗДАТ 2004г.
d1 := DATE_AND_TIME_TO_DATE(dt1);
Внутреннее представление
К сожалению, внутренний формат представления даты и времени не
стандартизован. Даже в рамках одной системы МЭК 61131-3 программирования
на разных целевых платформах он может отличаться. Многие разработчики
вообще ограничиваются только поддержкой типа TIME.
С точки зрения «человеческого» представления, удобнее всего хранить
дату и время в виде структуры. Например, в DATA_AND_TIME можно
представить структурой из 8 переменных, содержащей поля года, месяца, дня
недели и т.д. Такой формат очень удобен для организации ввода-ввода в
прикладной программе, но совершенно непригоден для вычислений.
Удобнее преобразовать дату и время в одно число. Это может быть число
секунд или дней отмеренных от определенного момента. В результате
вычисление длительности между двумя отметками времени сводится к
простому вычитанию. Подобное указание числа дней от РХ часто используется
в научных источниках. Это позволяет избежать необходимости учета различных
календарей. К сожалению, числа получаются достаточно большими и
неудобными для повседневного обращения.


Очень прошу помочь мне очень надо
Вложения
TimeExperience.pdf
Если надо вот есть документ странца 7
(366.99 КБ) 40 скачиваний
ulint.jpg
Artem.spb

Activity Автор
professor
professor
Сообщения: 3404
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 175 раз
Контактная информация:

Re: Преобразование данных «Time» из формата Regul в формат Labview»

Сообщение Artem.spb »

Вы уж разберитесь со своим разработчиком
JohnChaban писал(а): 08 апр 2022, 08:04 Вот бьюсь со сторокой выяснилось что к сожелению программно она не формируется в крейте процессора RegulR500 стоит модуль и он выдает эту строку, так сказал наш разработчик.
Попытаюсь узать
Там просто данные типа Ulint как блин с нмим работать.
Строка - это строка, Ulint - это число, а никак не строка.
Тоесть вот программы нет, но есть в Epsilon вот такая строка я подошел посмотрел там правда дата и время.
Если вы там видите дату и время, расскажите нам, как так получаете вот это, совершенно не похожее на дату
Снимок.PNG
Аватара пользователя
JohnChaban
leader
leader
Сообщения: 669
Зарегистрирован: 18 фев 2010, 13:26
Версия LabVIEW: 2015,2016
Откуда: Город Сосновый Бор Ленинградская Область
Контактная информация:

Re: Преобразование данных «Time» из формата Regul в формат Labview»

Сообщение JohnChaban »

Преобразовать строку никак нельзя?
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5464
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 87 раз

Re: Преобразование данных «Time» из формата Regul в формат Labview»

Сообщение IvanLis »

JohnChaban писал(а): 08 апр 2022, 16:04 Преобразовать строку никак нельзя?
Необходимо сперва дату принять от контроллера правильно.
Вы же описание представили, там написано, что тип данных можно определить по префиксу, который у Вас в принципе отсутствует. Значит и дальше смысла нет что-то искать.
Если Вы абсолютно уверены, что данные получаете верные, а не можете только преобразовать их правильно. Попробуйте уточнить порядок следования bit.
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: Преобразование данных «Time» из формата Regul в формат Labview»

Сообщение Borjomy_1 »

Можно пойти классическим путем. А именно аппроксимацией. Но для этого надо иметь больше одного значения. Необходим следующий набор данных:
1. таймстамп передатчика (текущие значения даты и времени)
2. таймстамп приемника (момент приема датаграммы)
3. сама датаграмма полностью.
Причем желательно фрагменты в течение несколько суток и часов.
Таким образом можно вычленить статические величины и динамические.
Аватара пользователя
JohnChaban
leader
leader
Сообщения: 669
Зарегистрирован: 18 фев 2010, 13:26
Версия LabVIEW: 2015,2016
Откуда: Город Сосновый Бор Ленинградская Область
Контактная информация:

Re: Преобразование данных «Time» из формата Regul в формат Labview»

Сообщение JohnChaban »

Добрый день простите что я вас достал уже
можно мне поправить приемник времени. Я просто по UDP передаю время как во вложении подскажите что я на приемнике не так преобразую.
Мне подсказали что Ulint в данном случае Unsigned 64 bit
Вложения
shema.jpg
UDP_RESEVD.vi
(14.89 КБ) 36 скачиваний
UDP_SEND.vi
(15.07 КБ) 34 скачивания
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: Преобразование данных «Time» из формата Regul в формат Labview»

Сообщение Borjomy_1 »

Использование булевого массива - лишнее. таймстам приводите в Double, потом сразу в U64
Но вообще, использование пробников (ПКМ на wire ->Probe) снимает множество вопросов
UPD при приеме надо использовать функцию Decimal String To Number.vi, а вы используете функцию для преобразования числа с плавающей точкой.
Вложения
recv TS.png
send TS.png
Аватара пользователя
JohnChaban
leader
leader
Сообщения: 669
Зарегистрирован: 18 фев 2010, 13:26
Версия LabVIEW: 2015,2016
Откуда: Город Сосновый Бор Ленинградская Область
Контактная информация:

Re: Преобразование данных «Time» из формата Regul в формат Labview»

Сообщение JohnChaban »

Мне нужен байтовый массив обязательно, если строка приходит из вне.
Именно через байтовый массив у меня тут именно затык.
Еще как можно байтовый массив преобразовать в Ulint (Unsigned 64 bit) у меня чтото затык совсем.
Если я преобразовываю через байтовый массив у меня получается 5 сентября 2040 года
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: Преобразование данных «Time» из формата Regul в формат Labview»

Сообщение Borjomy_1 »

Проще на таком проверять
Вложения
Convert Test.png
Аватара пользователя
JohnChaban
leader
leader
Сообщения: 669
Зарегистрирован: 18 фев 2010, 13:26
Версия LabVIEW: 2015,2016
Откуда: Город Сосновый Бор Ленинградская Область
Контактная информация:

Re: Преобразование данных «Time» из формата Regul в формат Labview»

Сообщение JohnChaban »

Я вот сделал то что мне необходимо.
Подскажите, где все время ошибаюсь передача по Udp обязательно.
Не получается прием осуществить.
Байтовый массив я понимаю, нужен для того чтобы с контроллера строку раскрутить
Я как получаю шифровку, но в как с контроллером будет я не понимаю пока вообще.
Спасибо за помощь, буду благодарен.
Очень нужно решение по приему
Вложения
UDP_RESEVD.vi
Прием с помощью UDP с использованием байтового массива.
(12.71 КБ) 35 скачиваний
UDP_SEND.vi
Передача с помощью UDP с использованием байтового массива.
(18.6 КБ) 36 скачиваний
Artem.spb

Activity Автор
professor
professor
Сообщения: 3404
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 175 раз
Контактная информация:

Re: Преобразование данных «Time» из формата Regul в формат Labview»

Сообщение Artem.spb »

Borjomy_1 писал(а): 11 апр 2022, 13:09 таймстам приводите в Double, потом сразу в U64
Зачем? Прекрасно работает сразу в U64
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Для чайников»