Ответы в темах
-
АвторЗаписи
-
Romiros
УчастникЕсли с восстановлением архивов, то Быстрый шлюз. Это правда уже платный модуль, но он того стоит. Там есть автоматическая репликация архивов, но можно и сделать через команды, если связи не было долго. У нас так 10 локальных scada отправляют в центральную.
Можно для старта сделать без архивов, просто отправляя данные на два сервера — локальный и удаленный.Romiros
УчастникЗдесь наверное ключевой вопрос в каналах связи. GSM вряд-ли подойдёт. Нужно tcp соединение. Или модемы 3g-4g?
Romiros
УчастникУ прибора есть свое локальное время. Драйвер его забирает, переводит в UTC и кладет в БД сервера. Если в web другой часовой пояс, то естественно и время будет другое. Если нужно подгонять под время сервера, то в драйвере надо учитывать часовой пояс сервера. Все же логично вроде?
Romiros
УчастникВот кусок кода. Время везде приводится к UTC. Я думаю Михаил написал правильно, нужно плясать от времени прибора по UTC и хранить его в UTC. В драйвере использовать только время прибора, не привязываясь к системному.
DateTime sliceTime = typeData == TypeData.Hour? reader.GetDateTime("DTime").ToUniversalTime(): reader.GetDateTime("DTime").ToUniversalTime().Date; Dictionary<DeviceTag, CnlData> dict = new Dictionary<DeviceTag, CnlData>(); for (int i = 0; i < cnt; i++) { var property = reader[group.DeviceTags[i].Code.Split('.')[1]]; if (property != DBNull.Value) { dict.Add(group.DeviceTags[i], Utils.DecodeTag(property, typeData)); } } DeviceSlice slice = new DeviceSlice(sliceTime, dict.Keys.ToArray(), dict.Values.ToArray()) { DataSentCallback = DataSent, FailedToSendCallback = FailedToSend, ArchiveMask = typeData == TypeData.Hour ? 4 : 8, Descr = typeData == TypeData.Hour ? "Часовой" : "Дневной" }; DeviceData.EnqueueSlice(slice);Romiros
УчастникСкорее всего в коде есть ошибка. Завтра буду на работе, пришлю работающий вариант. Давно делал не помню сейчас, но уже третий год все пишется и часы и сутки.
Romiros
УчастникА у меня его нет вообще. Только slice.
По идее это не должно никак влиять. Канал же существует и ему просто отправляется архивный срез.Romiros
УчастникВ tibbo поставьте On-the-fly commands: Disabled
Romiros
УчастникГенерировать статус через МАУ с задержкой, наверное. А какие границы стоят?
Romiros
УчастникПравой кнопкой на линии связи в администраторе, синхронизировать, из коммуникатора в БД. В базе создадутся нужные линии и устройства. Потом можно будет создать каналы. Это все есть в обучающих роликах и доках.
Romiros
Участник1. Да
2. Смотрите что есть в html типа table, input, button и т.д.
3. Blazor — очередное изобретение Microsoft. Использует web assembly и позволяет писать на c#, который преобразуется в js. Возможно под него есть готовые библиотеки компонентов.Romiros
УчастникВ настройке web станции есть соответствующий пункт. Что-то типа требовать пароль при отправке команд.
Romiros
УчастникШтатного примера не обнаружено.
Значит мы просто обсудили, что его нужно добавить, но так и не сделали :). Вещь действительно не очевидная. Сам с такой же проблемой столкнулся.
Romiros
УчастникВ Редакторе Перечислений дать возможность их перечислять с новой строки — сейчас такой шухер происходит, если так сделать 🙂 но было бы удобнее так видеть.
Просто перенос на новую строку, без точки с запятой. По-моему даже есть штатный пример, посмотри.Romiros
УчастникДа работать будет. По синтаксису точно не помню,но я так отправлял записи в БД ещё на пятой версии скады, причем скопом кучу каналов, единственное наверное через формулу в виде строки. Если будет нужно, завтра на работе могу посмотреть. Ну или попробуйте вариант Михаила, может так проще будет.
Romiros
УчастникНет, тут вопрос как записать в стороннюю БД mySQL текущие данные из SCADA 1 раз по триггеру?
Я про это и написал. Используйте драйвер импорта из БД вместо модуля экспорта. Сможете записывать в MySQL с нужным интервалом.
-
АвторЗаписи