Созданные ответы форума
-
АвторСообщения
-
JurasskPark
УчастникНе одна точка времени, а один срез.
50 тегов и 1 срез или 50 срезов с 1 тегом — вот про что я говорю.
Через 60 секунд будет 3000 срезов вместо 60. И так очередь будет расти и расти, пока сервер не скажет «время срезов уже не актуальное, я их писать не буду и потом через некоторое время упадёт» 🙂JurasskPark
УчастникНо смысл в том, что один тег — это один срез данных и со временем он переполнялся, поэтому эту возможность я отключил.
Как говорил Михаил — один срез — это одна дата с несколькими тегами.
В варианте выше — один срез — это один тег с датой. Так делать нельзя.JurasskPark
Участник// history 3 years ago Publish project try { for (int i = 0; i < Math.Min(tagCnt, rowCnt); i++) { //create a historical data slice if (dtData.Rows[i][1].ToString() == string.Empty || dtData.Rows[i][2] is null || dtData.Rows.Count < 3) { Log.WriteLine(Locale.IsRussian ? "Столбец номер 3 с датой и временем тега пустой или равен null. Номер тега и номер строки таблицы - " + (i + 1) : "Column number 3 with the date time of the tag is empty or null. Tag number and table row number - " + (i + 1)); } else { 3 years ago Release 6.0.0.1 // if the driver has a list of tags to use if (config.DeviceTags.Count > 0) { try { DeviceTag deviceTag = (DeviceTag)DeviceTags.Where(x => x.Name == dtData.Rows[i][0].ToString()).FirstOrDefault(); if (deviceTag == null) { Log.WriteLine(Locale.IsRussian ? "[Исторические данные] В списке тегов конфигурации драйвера не обнаружен тег с названием '" + dtData.Rows[i][0].ToString() + "'" : "[Historical data] No tag with the name was found in the list of driver configuration tags '" + dtData.Rows[i][0].ToString() + "'"); } DateTime dtSSlice = (DateTime)dtData.Rows[i][2]; DeviceSlice deviceSlice = new DeviceSlice( new DateTime(dtSSlice.Year, dtSSlice.Month, dtSSlice.Day, dtSSlice.Hour, dtSSlice.Minute, dtSSlice.Second, DateTimeKind.Utc), 1, 1); deviceSlice.DeviceTags[0] = DeviceTags["DBTAG" + (deviceTag.Index + 1).ToString() + ""]; string Descr = Locale.IsRussian ? " Значение = " : " Value = "; deviceSlice.Descr = deviceTag.Name + Descr + dtData.Rows[i][1]; DeviceData.EnqueueSlice(deviceSlice); } catch { } } else // otherwise we insert all the values that we found in the database { DateTime dtSSlice = (DateTime)dtData.Rows[i][2]; DeviceSlice deviceSlice = new DeviceSlice( new DateTime(dtSSlice.Year, dtSSlice.Month, dtSSlice.Day, dtSSlice.Hour, dtSSlice.Minute, dtSSlice.Second, DateTimeKind.Utc), 1, 1); deviceSlice.DeviceTags[0] = DeviceTags["DBTAG" + (i + 1).ToString() + ""]; string Descr = Locale.IsRussian ? " Значение = " : " Value = "; deviceSlice.Descr = DeviceTags[i].Name + Descr + dtData.Rows[i][1]; DeviceData.EnqueueSlice(deviceSlice); } 3 years ago Publish project } } } 3 years ago Release 6.0.0.1 catch 3 years ago Publish project { InvalidateData(); }
Откопал как писал исторические данные в DbImportPlus
JurasskPark
УчастникПонял, вопрос снимается
Короче, я подумал, что должно работать. Но только сетевые диска нужно mapить к ПК.
http://jurasskpark.ru/pubimg/up/174967852234818d2.pngКороче… Вечером опубликую
Ничего я не опубликую. Если коротко, то я перенёс двухфакторную авторизацию на плагин Edge… И я не могу пройти двухфакторную авторизацию. 🙁 Толи из-за того что активацию я делал в Зеленограде, но дома +2 часа… Короче, хз…
JurasskPark
УчастникLinuxX64 — не работает на WB.
Короче… Вечером опубликую.JurasskPark
УчастникНе. С сетевыми дисками такая штука не проканает. + в ТЗ такого требования не было. )
JurasskPark
Участник
http://jurasskpark.ru/pubimg/up/17494878905697ccd.pngC# говорит, что ошибки нет.
А во если код был скопирован из моего Компилятора, то manjey73 говорит, что там знаки TAB и их сервер не переваривает.
Замените в скрипте все знаки TAB на 4 пробела.JurasskPark
Участникtime_stamp timestamp with time zone NOT NULL,
это и есть DateTimeJurasskPark
УчастникКак правильно передавать DateTime, чтобы в времени не было (были черточки), но тег был Good?
// datetime off DriverTag driverTagActionDate = FindTag(TagCodeActionDate); driverTagActionDate.TagDataValue = new object(); listTagsTask.Add(driverTagActionDate);
else if (val is DateTime dtVal) { deviceTag.DataType = TagDataType.Double; deviceTag.Format = TagFormat.DateTime; try { base.DeviceData.SetDateTime(deviceTag.Index, dtVal, CnlStatusID.Defined); } catch { } }
Если так, то будет ошибка
Unable to cast object of type ‘System.Object’ to type ‘System.IConvertible’.
Поэтому я убрал запись catch (Exception ex), чтобы ошибка сверху не писалась…
JurasskPark
Участник
http://jurasskpark.ru/pubimg/up/174946050262f8652.png
http://jurasskpark.ru/pubimg/up/1749460669900ac75.pngВообщем на WirenBoard тоже работает. Осталось исправить ошибку конвертирования и понять, всё же какая версия должна быть для WB. Я почему-то понял как AnyCPU…
JurasskPark
Участник
http://jurasskpark.ru/pubimg/up/1749459888444017e.pngВы были правы.
Выводы: Firebird — не умеет работать с русскими буквами в пути.
DB Import Plus и библиотека firebird работает с 2.0. Пока что. 🙂JurasskPark
УчастникНу я всë равно проверю. Чтобы самому знать.
JurasskPark
УчастникЯ как понял, что «Рубеж» — это ОПС. А какой программный продукт вы ставите? Чтобы я у себя на виртуалке поставил и проверил.
Если такого ПО на сайте производителя в открытом доступе нет, то пришлите ссылку.JurasskPark
Участник2025-01-01 00:00:00 — с таким форматом никогда нет проблем.
Плюс при сохранении можно указывать формат записи и чтения.JurasskPark
УчастникНо если мы на одной системе запишем дату скажем в русской локали, а потом будет чтение в английской — то упадет и дата не будет распознана.
А кто источник даты записи и чтения?
Просто если такая проблема, то читать и записывать дату как Михаил в double в текстовый файл. )))) -
АвторСообщения