Стартовая страница › Форумы › Разработка и интеграция › Модуль сервера (получить значения тега)
- В этой теме 11 ответов, 3 участника, последнее обновление 2 года, 6 месяцев назад сделано
JurasskPark.
-
АвторЗаписи
-
30.01.2024 в 02:20 #30923
JurasskParkУчастникДоброй ночи!
Михаил, а подскажите, пожалуйста, какой есть лёгкий способ из драйвера сервера обратиться к текущим данным по номеру и коду тега?30.01.2024 в 08:54 #30924
manjey73УчастникКажется из драйвера никак или через одно место.
Ведь Коммуникатор может быть установлен на другом ПК. Или вы все же не про драйвер а про модуль сервера, что более логичнее?30.01.2024 в 09:28 #30925
JurasskParkУчастникПро модуль сервера.
30.01.2024 в 09:33 #30926
manjey73УчастникИз модуля наверное можно, по крайней мере я доставал родительские объекты, дочерние и т.д.
Опять же, модули Быстрый шлюз, Автоуправления они же данные забирают.30.01.2024 в 15:10 #30927
MikhailМодераторДобрый день!
Сервер оперирует каналами. По номеру и коду тега нужно сначала найти канал, а затем считать его данные. Доступ к загруженной базе конфигурации из модулей есть.30.01.2024 в 20:47 #30929
JurasskParkУчастникЯ ждал ссылку на пример кода)
30.01.2024 в 22:51 #30930
manjey73УчастникConfigDataset.CnlTable — вообще ConfigDataset смотрите, там все таблицы.
31.01.2024 в 17:09 #30932
MikhailМодераторЯ ждал ссылку на пример кода)
Правильный алгоритм более ценен, чем примеры )
Используйте исходники ModDbExport, этот модуль как раз читает данные.
Задавайте более конкретные вопросы.27.02.2024 в 12:46 #31215
JurasskParkУчастникВозвращаемся к вопросу.
/// <summary> /// Processes new data. /// </summary> public override void ProcessData(ICurrentData curData) { //WriteOnChange(curData); }Я как понял мне нужен ICurrentData curData (правда нашел я его в Influx), но как его получать я не понял. 😀
На ProcessData говорится, что не найден метод как переопределенный.P.S. С таблицами я разобрался. Оказывается serverContext его содержит. 😀
this.configDatabase = serverContext.ConfigDatabase;27.02.2024 в 13:36 #31216
JurasskParkУчастникОООООО!!!!
foreach (int cnlNum in cnlNums) { CnlData curCnlData = serverContext.GetCurrentData(cnlNum); if (!skipUnchanged || ChannelDataChanged(cnlNum, curCnlData)) { if (sliceCnlNums == null) { sliceCnlNums = new List<int>(SliceSize); sliceCnlData = new List<CnlData>(SliceSize); } sliceCnlNums.Add(cnlNum); sliceCnlData.Add(curCnlData); if (sliceCnlNums.Count == SliceSize) AddSlice(); } }Нашел.
27.02.2024 в 16:28 #31219
MikhailМодераторНужен был метод ServerContext.GetCurrentData ?
27.02.2024 в 18:03 #31225
JurasskParkУчастникНужен был метод ServerContext.GetCurrentData ?
Ну да. Как вы в ModDiffCalculator ведете расчете. Мне тоже, нужно было в модуле взять текущее значение, пересчитать и записать в другой тег(канал). 🙂
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.