Стартовая страница › Форумы › Разработка и интеграция › Драйвер ODBC
- В этой теме 83 ответа, 5 участников, последнее обновление 1 год, 1 месяц назад сделано Mikhail.
-
АвторСообщения
-
24.12.2022 в 22:42 #26841JurasskParkУчастник
Во время написания кода понял одну вещь, что код правильный и не правильный одновременно.
1. Использовать
DeviceSlice deviceSlice = new DeviceSlice();
для передачи значений и генерировать его для каждого тега — не правильно.
Его нужно заполнять из массивом тегов и значений.
Это понятно.2. У DeviceSlice можно использовать только одно время при передачи массива тегов и значений.
То есть получается, чтобы функционально данные были истинными, то время у всех тегов должно быть одинаковое.
Одинаковое время у нас только у часовых и суточных значений.
Получается, что DeviceSlice (чтобы не положить систему как я =) ) лучше использовать с тегами, у которыми признак часовой или суточный.3. Если я из БД вытащил значение мгновенное, заменял на одно время Datetime.Now , положил в срез значения N тегов, где у каждого своё было время, то я по сути подменил данные. С другой стороны передача Мгновенных данных — тоже подменяет данные на те, когда отработал DrvDsScadaServer. )
Какой можно сделать итог:
1. Текущие показания передавать через DeviceData.Set
2. Если в запросе исторические данные (часовые или суточные), время у всех должно быть одно, то нужно генерировать DeviceSlice с одним временем, массивом тегов и массивом значений. Иначе делая DeviceSlice под каждый тег… система умирает.
3. Делать у списка тегов признак Исторический тег или Мгновенный (Текущий), тем самым можно выбрав значения, отправить все в DeviceData.Set или только мгновенные, а часовые\суточные в DeviceSlice.
4. Мертвая зона.
В DrvDsScadaServer есть условие проверки жизни данных dataLifetime// export the slice
if (DateTime.UtcNow — queueItem.CreationTime > dataLifetime)Это хорошая штука. Потому что если в БД значение лохматого года или месяца, в текущие данные такую вещь передавать нельзя, иначе никогда не поймешь, что оно умерло. Да… прямой тренд — это показатель… но всё же…
24.12.2022 в 22:47 #26842JurasskParkУчастникhttps://forum.rapidscada.ru/?topic=расшифровка-статуса-каналов
Хм… Мне кажется я теперь понял, ответ на свой вопрос почему Статус = 4.
Я говорю DrvDsScadaServer вот тебе данные из БД… А он такой… че за старье… у них время больше текущего. Вот им признак Исторических и поставлю им 4. )- Этот ответ был изменен 1 год, 3 месяца назад от JurasskPark.
26.12.2022 в 15:44 #26863MikhailМодераторСрез состоит из метки времени и данных нескольких каналов.
Сервер на порядок быстрее примет 1 срез на 100 каналов, чем 100 срезов на 1 канал, потому что каждый срез отправляется отдельным пакетом.Если драйвер в основном принимает текущие данные, то нужно увеличить паузу между сеансами связи, чтобы успевали накопиться изменения тегов и они отправлялись в виде одного среза.
Подберите опытным путём паузы между сеансами связи, при которых очередь не переполняется. Если паузы окажутся слишком большими, то можно ускорить передачу, использовав несколько «источников данных» в Коммуникаторе с фильтрами по устройствам.
Некоторые тесты на производительность версии 6 уже проводились. Более подробно проблемы производительности и узкие места будут исследоваться после портирования оставшихся модулей и драйверов.
31.01.2023 в 09:23 #27242JurasskParkУчастникДобавил на форму ListView. Посмотрел, в Translate он есть
else if (elem is ListView listView) { Translate(listView.Columns, controlDict, options); Translate(listView.Groups, controlDict, options); }
А вот как в трансляции указать название Columns я не понимаю…
https://i.ibb.co/bJcd7WQ/001.png
Пример, как я пытался
https://i.ibb.co/HDHHx2b/002.png31.01.2023 в 15:57 #27248MikhailМодераторПосмотрите, например, здесь. Нужно у колонок явно установить имя. Такая особенность ListView.
31.01.2023 в 17:49 #27249JurasskParkУчастникСпасибо большое пребольшое! Помогло! Ура!!!
01.02.2023 в 15:35 #27266MikhailМодераторЕсли есть желание, заведите тикет на WinForms, т.к. подобная особенность ListView явно ненормальна.
23.02.2023 в 01:02 #27514JurasskParkУчастникОбновил до версии 6.0.0.4. Тоже добавил создание каналов через Мастер.
24.02.2023 в 11:31 #27515MikhailМодераторСсылка в репозитории модулей остаётся актуальной, т.к. ведёт на общую страницу релизов.
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.