Хотелось бы более гибко отображать время и дату. Т.е. управлять отображением через настройки проекта или МРВ.
Вообщем хочу написать форматированную строку для отображения времени в ГЭ "Текст" или ГЭ "Дата и время" Если задавать формат отображения времени через настройки ОС, то это может привести к некорректному отображению в других программах, что не желательно.
В настройках узла нашел подобное поле для задания формата, но огорчился потому что оно было только для отчета тревог.
И было бы совсем чудесно, если для каждого ГЭ можно было бы задавать такую строку. Ну хотя бы через настройки канала типа TIME, к которому привязан через аргумент ГЭ.
Наверное я прошу невозможного ?
Posted by Romсheg (Участник № / Member № 3792) on :
А не проще сделать программку на ST, в которой самому формировать строку нужного вам вида, а потом уже эту строку отображать на экране оператору?
Posted by Serex (Участник № / Member № 3942) on :
Ну как бы не проще Это же делать надо. Да еще там что-то с отображением строк не более 39 символов...
Posted by Romсheg (Участник № / Member № 3792) on :
Что же у вас за формат даты такой, что 39 символов не хватает?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Вводить произвольные форматы отображения даты-времени не считаем целесообразным.
Posted by Serex (Участник № / Member № 3942) on :
Сейчас возникла проблема, что не читаются значения с ОПС сервера. Не могу понять. Переменная на ОПС типа "date". В тестовом клиенте отображает дату и время правильно. В Трэйс Моде Создан ОПС-компонент, привязанный к ОПС-переменной. Далее создан канал типа "Time" к нему привязана компонента. Далее Аргумент типа "Date_and_time" И ГЭ "Текст" с форматом вывода "по умолчанию.
Не работает!! Нужно что-то еще?
Posted by Serex (Участник № / Member № 3942) on :
quote:Отправитель / Originally posted by AdAstra Technical Support: Вводить произвольные форматы отображения даты-времени не считаем целесообразным.
Хорошо, вам виднее как покупателей привлекать.
Но вот хотя бы специализированный ГЭ "Дата и время" сделайте, чтобы к настройкам ОС привязывался. А то он вообще деревянный, формат никак не меняет.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
1. Формат представления реального значения канала TIME включает в себя как вариант "Дата и время ОС" в формате ОС. Это можно увидеть в окне "Просмотр компонентов" профайлера.
2. Надо разделить проблему: прием данных из OPC-сервера и их отображение. Если OPC-сервер указывает клиенту на тип передаваемых данных "Дата/время", то они принимаются и преобразуются в LONG. В окне "Просмотр компонентов" профайлера можно увидеть это число в атрибуте ВХОД канала TIME. Там же можно увидеть отображение РЕАЛЬНОГО значения в формате OC. Если данные принимаются правильно и передаются на экран через аргумент DANE&TIME, то и отображаться они должны правильно.
Posted by Serex (Участник № / Member № 3942) on :
Сделал скриншоты 1. канал соответствует ОПС-переменной с датой 01.01.1970 т.е. "0" в формате Виндоус
2. канал соответствует ОПС-переменной с сегодняшней датой и временем
Прикинул на калькуляторе. Значение на входе канала отсчитывается от 1900 года, как в прошлом веке под досом
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Во всех приложениях, работающих с системным временем, время измеряется числом секунд с 01.01.1970 в формате LONG. ""0" в формате Виндоус" был бы именно "0", а получено от OPC-сервера 25569. И это соответствует по Гринвичу 01.01.1970 7:06:09, а по Москве 01.01.1970 10:06:09. Во втором случае от OPC-сервера принято число 40200, что опять-таки соответствует 01.01.1970 14:10:00 по Москве. Отсюда ясно, что OPC-сервер передает время в каком-то другом формате. В каком именно, можно узнать только у него. Вы, похоже, правы. OPC-сервер передает только дату в днях с 1900 года. Даже в древнем DOSe дата/время тоже исчилялось в секундах, хотя и с другого начала.
Придется Вам либо OPC-сервере приводиться эту переменную к стандартному формату, либо в Trace Mode 6 программным путем конвертировать до нужного вида.
Posted by Serex (Участник № / Member № 3942) on :
Вообщем нужен третий OPC клиент, чтобы разрешить вопрос. К вечеру что-нибудь сделаю.
А пока отвязал канал от ОПС и посмотрел его в профайлере. Вот скриншот.
Если записать в канал какое-то число, то все становится нормально от 1970 года. Т.е. при инициализации какая-то заморочка.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Действительно, значение "0" канал TIME не обрабатывает. Это, однако, никак не влияет на отработку любых целочисленных значений больше 0.
Posted by Serex (Участник № / Member № 3942) on :
И так... Протестировал ОПС-сервер с третьим клиентом. Работает все отлично. Выводится дата, вводится дата. Все изменения также наблюдаются и в первом ОПС-клиенте. Контроллер используется Beckhoff К нему фирменный ОПС-сервер Beckhoff 1 клиент: Beckhoff OPC test client 2 клиент: Trace Mode 6 - работает не корректно 3 клиент: MasterScada 3.1 - работает корректно.
Готов протестировать на любом другом клиенте, который вы предложите.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Если используемый Вами OPC-сервер и OPC-клиент Beckhoff могут работать в демо-режиме без связи с контроллерами, пришлите нам, пожалуйста, OPC-сервер и OPC-клиент вместе с конфигурацией и Вашим проектом, на котором описанную Вами ситуацию можно воспроизвести у нас.
Posted by Serex (Участник № / Member № 3942) on :
Чтобы подготовить файлы проекта, мне потребуется время. Тем более симуляция ОПС-сервера без контроллера затруднительна для меня. Лучше это делать через тех поддержку Beckhoff. Дистрибутив сервера можно скачать на сайте Beckhoff.ru Клиент внутри дистрибутива с сервером.
Ключ к серверу - "DEMO" открывает триал версию на 30 дней.
Posted by Serex (Участник № / Member № 3942) on :
Уважаемая поддержка. Наметились ли какие-то сдвиги в решении этой проблемы?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Выяснилось, что OPC-сервер Beckhoff возвращает переменные с типами данных ДАТА и ДАТА_И_ВРЕМЯ в виде строк. Trace Mode 6 не поддерживает строкового OPC-интерфейса.
Пока предлагаем процедурой трансляции преобразовать получаемое от OPC-сервера число в дату.
Здесь ARG_001 - РЕАЛЬНОЕ значение канала TIME, привязанного к OPC-источнику, ARG_000 - его ВХОДНОЕ значение, ARG_002 - количество дней с 01.01.1900 до 01.01.1970.
Posted by Serex (Участник № / Member № 3942) on :
Наверное нужно сделать на одну дату минимум два канала типа TIME. входное значение ОПС и обработанное значение для экрана. Иначе получится, что два разных числа будут записываться во входной атрибут канала.
Потом будет обрабатываться только дата, но хотя бы половина, чем ничего.
Буду ждать обновления ...
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
В Trace Mode внутренний формат переменных, связанных с датой и временем, всегда LONG. Поэтому, если Вы предполагаете обрабатывать эту переменную средствами Trace Mode (например, сопоставлять ее с текущим временем ОС), то она обязательно должна быть в формате LONG. Поэтому, я думаю, что Вам нужно иметь 1 канал TIME, получающий переменную из OPC и преобразующий ее в LONG.
Posted by Serex (Участник № / Member № 3942) on :
Обнаружилась еще какая-то заморочка.
Булевы(Boolean) значения с ОПС сервера Beckhoff не читаются... Записываются, но не читаются.
Создаю ОПС-компонент, привязываю его к каналу HEX16. Играюсь переменной на ОПС сервере, канал не реагирует.
Posted by Serex (Участник № / Member № 3942) on :
Ох... выяснилось, что другие типы тоже не читаются. Не читаются, но записываются.
Похоже от версии ТМ зависит. Знакомый говорил, что надо какие-то обновления скачать... Между релизами промежуточные обновления что-ли существуют? Две недели назад поменял комп и все проги переставил. Данные на предыдущем компе читались нормально. Видимо там нужные обновления были. Проясните ситуацию.
Posted by Serex (Участник № / Member № 3942) on :
Хех... обновил редактор версию 6.06.3 до версии 6.06.3 пакетом http://www.adastra.ru/files/support/tm6/commercial/updates/tm6b_ide_update_6.06.3.zip Чтение ОПС в профайлере сразу заработало. подскажите чем теперь обновить МРВ 6.06.3 базовую версию, чтобы там тоже чтение заработало.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Проблема с временем полностью решилась. В контроллера поменяли тип у переменных со временем на DWORD. В TraceMode даже ничего не меняли. Сразу все заработало.
Posted by Romсheg (Участник № / Member № 3792) on :
DWORD - это по сути long, а ТМ6 как раз в long и воспринимает Дату/Время.
Posted by Serex (Участник № / Member № 3942) on :
Ну понятно. Не просто же так 4 часа переименовывали переменные в контроллере. А целенаправленно.!!!
Posted by Avsiannikova (Участник № / Member № 5946) on :
Здравствуйте! Не хотелось создавать новую тему для моего вопроса, поэтому задам его здесь. Возможно ли стандартным средством ГЭ "Дата и время" отображать более 23 часов? Например 72:05:00.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Надо в ГЭ "Дата и время" задать свойство "Показывать"="Интервал". При этом тип данных должен быть UDINT и принимать число секунд.
Posted by Avsiannikova (Участник № / Member № 5946) on :