PDA

Просмотр полной версии : Передача времени и даты из Modbus master OPC в MasterScada



Al-Al
26.01.2016, 14:28
Добрый день!

Modbus masterOPC universal опрашивает устройство и получает от него несколько меток времени. Формат меток: 32 бита, время пересчитано в секундах с начальной даты 0:00:00 01.01.2004 года.

Требуется передавать эти данные в мастерскаду. В некоторых случаях в скаде требуется только дата (число, месяц, год) в некоторых полная DATE_AND_TIME.
Как правильней передавать время в скаду?
Для ОРС напишу скрипт по пересчёту времени, но в какой формат пересчитывать? В ОРС видимо будет uint32.
В самой Мастерскаде какой тип переменной выбрать для привязки переменной с ОРС? "Время" или "вещественный двойной точности"?
А далее, чтобы в Мастерскаде из переменной выделить дату добавлять в дерево объекта "Установку метки времени"?

SCADAMaster
26.01.2016, 15:16
Modbus masterOPC universal опрашивает устройство и получает от него несколько меток времени. Формат меток: 32 бита, время пересчитано в секундах с начальной даты 0:00:00 01.01.2004 года.

Требуется передавать эти данные в мастерскаду. В некоторых случаях в скаде требуется только дата (число, месяц, год) в некоторых полная DATE_AND_TIME.
Как правильней передавать время в скаду?

Наш ОРС сервер не поддерживает передачу типа "Время", поэтому вы можете передавать в скаду количество секунд, а преобразование во время делать уже в секундах.
Для преобразования во время в MasterSCADA, можно использовать модуль "Расчет". Используйте функцию Int2Date( ) - с ее помощью вы получите 01.10.2004 года. затем прибавьте к результату ваше количество секунд - будет итоговая дата.

Al-Al
27.01.2016, 13:52
Спасибо. Буду пробовать сделать так.

Ещё как вариант, можно передавать часы минуты секунды в отдельных тегах, но нерационально растёт количество тегов (имеется лицензия на 500) и увеличивается время на привязку к переменным СКАДы

krollcbas
07.12.2018, 00:07
Действительно совершенно непонятно почему продукты (Мастерскада и Codesys) - имеют разные типы данных, что требует усилий по конвертированию.
Так например:
TIME представляет длительность интервалов времени в миллисекундах. Максимальное значение для типа TIME : 49d17h2m47s295ms (4194967295 ms).
Формат "Время" Мастерскады нигде толком не описано(не нашел) и он явно больше, так как содержит и год

Причем в Мастерскаде присутствуют инструменты работы со временем, но не временем ПЛК, а своим типом данных.
Ниже даю примеры скриптов, конвертирующие одно в другое.
https://yadi.sk/d/meqCJK5y_zcViw

SCADAMaster
07.12.2018, 09:06
Действительно совершенно непонятно почему продукты (Мастерскада и Codesys) - имеют разные типы данных, что требует усилий по конвертированию.

Почему это непонятно?



Формат "Время" Мастерскады нигде толком не описано(не нашел) и он явно больше, так как содержит и год

OLE Variant Time.
Для получения времени есть функция Расчет. С ее помощью можно легко получить время из отдельных элементов времени или из UnixTime

Panda
06.06.2019, 12:20
Добрый день.
В проекте используется метка времени для определения, когда объект подключился и отключился.
В случае остановки и проекта и его повторного запуска метка времени сбивается.
Как можно сделать так, чтобы метка времени не сбивалась?

SCADAMaster
06.06.2019, 12:47
Так как она у вас сделана?
И что нужно в итоге? Когда была остановка режиме исполнения в последний раз?

Panda
06.06.2019, 15:57
Так как она у вас сделана?
И что нужно в итоге? Когда была остановка режиме исполнения в последний раз?

Метка времени меняется при подключении устройства (при условии Истина). Необходимо, чтобы после остановки проекта и последующего запуска метка времени (или какая-то переменная) сохраняло то значение, которое было при подключении.

Пример как должно быть:
16:00:00 Устройство подключилось, на Вход в метке времени поступил сигнал Истина и метка времени (или какая-то переменная) изменила значение на 16:00:00
16:05:00 Проект остановлен.
16:20:00 Проект запущен, у метки времени (или какой-то переменной) значение 16:00:00

SCADAMaster
06.06.2019, 17:54
Можно в событии с помощью функции OPC Qualtiy отслеживать признак качества переменной прибора. Если она GOOD, то выполняем действием - присваивание текущего времени какой то команде. У команды включаем восстановление при рестарте.
Мудрить с меткой времени - смысла нет, если вы опрашиваете Modbus устройство, то разница будет небольшая.