Драйвер счетчика Меркурий 230, 231, 232, 233, 236

Стартовая страница Форумы Разработка и интеграция Драйвер счетчика Меркурий 230, 231, 232, 233, 236

Просмотр 15 сообщений - с 286 по 300 (из 360 всего)
  • Автор
    Сообщения
  • #33404
    manjey73
    Участник

    @dequick не должно быть таких углов, Что показывает Конфигуратор счетчика?

    #33405
    baur
    Участник

    Добрый день,

    Test_6.0.05

    Остается только ошибка при SyncTime для РП15 Ввод-1 Яч.#7 и РП15 Ввод-1 Яч.#2

    2024-07-11 08:44:22 Ошибка при вызове метода Session устройства [16] РП15 Ввод-1 Яч.#2:
    System.ArgumentOutOfRangeException: Year, Month, and Day parameters describe an un-representable DateTime.
    at System.DateTime..ctor(Int32 year, Int32 month, Int32 day)
    at Scada.Comm.Drivers.DrvMercury23x.Logic.DevMercury23xLogic.Session()
    at Scada.Comm.Engine.DeviceWrapper.Session()

    Везде включил профайл, ошибок в связи с этим уже не наблюдается, ReadStatus тоже не выдает ошибки.

    Как понял теперь все ошибки контролируется

    Ошибка: Недопустимая команда или параметр

    Есть ли возможность точно определить, ошибка вызвана командой или параметром? и сообщить про отсутствия профиля мощности?

    Спасибо!

    #33406
    dequick
    Участник

    Я так понимаю эта модель без тарификатора вообще не умеет углы вычислять. И по этой же причине суммы какие-то космические.
    https://ibb.org.ru/1/VNx7OC

    #33407
    manjey73
    Участник

    @baur а логи перед ошибкой по синхронизации? Мне понять, что добавить в обработку ответа. Похоже там по аналогии с профилями, счетчик отвечает ОК, но ответ в стиле
    Недопустимая команда или параметр или из этой серии


    @dequick
    по паспорту и руководству не нашел упоминания, что углов может не быть.
    Надо посмотреть в описании протокола еще, там может быть указано.

    Не дождался обратной связи и выложил на Git 6.2.0.5 — по сути это 6.0.0.5 просто первые цифры указал по Scada системе, на которой тестировал, вероятно можно не обновлять.

    • Этот ответ был изменен 8 месяцев, 2 недели назад от manjey73.
    #33409
    manjey73
    Участник

    Ошибка: Недопустимая команда или параметр

    Собственно это и есть ответ счетчика кодом в ответе и это описано в документации.
    Не помню, в руководстве это есть или это в описании протокола, там штук 5 ошибок всего из этого плана.

    #33425
    baur
    Участник

    >> а логи перед ошибкой по синхронизации? Мне понять, что добавить в обработку ответа.
    >> Похоже там по аналогии с профилями, счетчик отвечает ОК, но ответ в стиле

    https://github.com/Manjey73/OpenDrivers/issues/1#issuecomment-2227986484

    #33427
    manjey73
    Участник

    @baur тут немного не понял, вы хотите вместо «Недопустимая команда или параметр» получать типа «Профили не поддерживаются» ?

    Ошибок при синхронизации времени я в логах не увидел.

    #33444
    baur
    Участник

    >> Ошибок при синхронизации времени я в логах не увидел.

    Это лог до включения галочки синхронизация времени, там нету ошибки, вроде вы вроде это просили

    >> а логи перед ошибкой по синхронизации?

    >> вы хотите вместо «Недопустимая команда или параметр» получать типа «Профили не поддерживаются»

    нет, если сам счетчик не идентифицирует, тогда не надо, все нормально

    на данный момент есть только 1 ошибка:

    System.ArgumentOutOfRangeException: Year, Month, and Day parameters describe an un-representable DateTime.

    #33445
    manjey73
    Участник

    Ну вот перед этой ошибкой нужны логи

    System.ArgumentOutOfRangeException: Year, Month, and Day parameters describe an un-representable DateTime.

    То есть включить синхронизацию времени, дождаться ошибки и логи ошибки + предшествующие запросы.

    У меня счётчики с часами и такой ошибки соответственно нет, я не знаю на каком именно запросе она произойдет.
    з.ы. по коду приходится долго вспоминать, так как писал давно.

    #33533
    baur
    Участник

    На данный момент только 2 счетчика дает ошибку оп SyncTime, вот лог ошибки:

    ...
    Получено за 6575 мс
    
    2024-07-24 08:54:12 Сеанс связи с устройством [15] РП15 Ввод-1 Яч.#7
    Отправка (6): 13 04 02 FF 04 41
    Приём (16/16): 13 00 00 00 00 00 00 00 00 00 00 00 00 00 B9 D2
    OK
    2024-07-24 08:54:12 Ошибка при вызове метода Session устройства [15] РП15 Ввод-1 Яч.#7:
    System.ArgumentOutOfRangeException: Year, Month, and Day parameters describe an un-representable DateTime.
       at Scada.Comm.Drivers.DrvMercury23x.Logic.DevMercury23xLogic.Session()
       at Scada.Comm.Engine.DeviceWrapper.Session()
    
    2024-07-24 08:54:12 Сеанс связи с устройством [16] РП15 Ввод-1 Яч.#2
    Отправка (6): 14 04 02 FF 05 35
    Приём (16/16): 14 00 00 00 00 00 00 00 00 00 00 00 00 00 BF 15
    OK
    2024-07-24 08:54:13 Ошибка при вызове метода Session устройства [16] РП15 Ввод-1 Яч.#2:
    System.ArgumentOutOfRangeException: Year, Month, and Day parameters describe an un-representable DateTime.
       at Scada.Comm.Drivers.DrvMercury23x.Logic.DevMercury23xLogic.Session()
       at Scada.Comm.Engine.DeviceWrapper.Session()
    
    2024-07-24 08:54:13 Сеанс связи с устройством [17] РП1 Ввод-1 Яч.#2
    Отправка (4): 19 00 0A 20
    Приём (0/4): 
    Ошибка связи
    Отправка (4): 19 00 0A 20
    Приём (0/4): 
    Ошибка связи
    Отправка (4): 19 00 0A 20
    Приём (0/4): 
    Ошибка связи
    ...

    если отключить SyncTime то все нормально, остается только ошибки по связи

    Устройства (20)
    ---------------
    [1] РП2 Ввод-1 Яч.#2    : не определён
    [2] РП2 Ввод-2 Яч.#19   : не определён
    [3] РП4 Ввод-1 Яч.#2    : не определён
    [4] РП4 Ввод-1 Яч.#19   : норма
    [5] РП7 Ввод-1 Яч.#1    : норма
    [6] РП7 Ввод-1 Яч.#4    : норма
    [7] РП11 Ввод-1 Яч.#15  : норма
    [8] РП11 Ввод-1 Яч.#26  : не определён
    [9] РП12 Ввод-1 Яч.#15  : не определён
    [10] РП12 Ввод-1 Яч.#26 : не определён
    [11] РП13 Ввод-1 Яч.#15 : не определён
    [12] РП13 Ввод-1 Яч.#24 : норма
    [13] РП14 Ввод-1 Яч.#8  : не определён
    [14] РП14 Ввод-1 Яч.#1  : норма
    [15] РП15 Ввод-1 Яч.#7  : норма <- после откл.SyncTime 
    [16] РП15 Ввод-1 Яч.#2  : норма <- после откл.SyncTime 
    [17] РП1 Ввод-1 Яч.#2   : не определён
    [18] РП1 Ввод-2 Яч.#19  : не определён
    [19] РП3 Ввод-1 Яч.#2   : не определён
    [20] РП3 Ввод-1 Яч.#19  : не определён

    Спасибо за то, что уже сделано!!!

    Еще вопрос: у нас есть формулы который вычитывается из:
    — коэффициента преобразования трансформатора тока
    — коэффициента преобразования трансформатора напряжения
    Эти коэффициенты у нас всегда 1 (видимо надо прописать)

    Они должны быть 1000 или 1500, поэтому всегда передаем через в формулу вручную

    GetMercuryTransformedValues(1500, 3, Val(600)); Stat(600)

    вот формула:

    public double GetMercuryTransformedValues(double VoltageTransformerCoefficient, int ValueType, double CurrentValue) {
          double RoundedCurrentValue = Math.Round(CurrentValue, 2);
          // if (stat != 1) {return Double.NaN;}
          double result = 0;
          // коэффициент преобразования трансформатора тока
          double СurrentTransformer = 6000 / 100;
          // коэффициент преобразования трансформатора напряжения 
          double VoltageTransformer = VoltageTransformerCoefficient / 5;
          // коэффициент счётчика
          double CounterCoefficient = СurrentTransformer * VoltageTransformer;
    
          switch (ValueType) {
          case 1:
            // Напряжение
            result = СurrentTransformer * RoundedCurrentValue * Math.Sqrt(3);
            break;
          case 2:
            // Ток
            result = VoltageTransformer * RoundedCurrentValue;
            break;
          case 3:
            // Активная мощность (P) [kW]
            // Реактивная мощность (Q) [kVAR] 
            // Полная S [kVA]
            result = (RoundedCurrentValue * CounterCoefficient) / 1000;
            break;
          case 4:
            // Потребление электроэнерги 
            result = CurrentValue;
            break;
          }
          return result;
        }

    в итоге из формулы выведем значения

    можно ли эти формулы сделать встроенным в драйвер? Спасибо!

    #33534
    baur
    Участник

    можно ли эти формулы сделать встроенным в драйвер?

    или эти данные автоматический выводится если прописать коэффициенты в счетчик?

    #33535
    baur
    Участник

    Поговорили энергетиком, они специально не прописывает, так как не может следить за всеми (замена, перемещение, ремонт), за это отвечает другие.

    Хотя бы для облегчения можно фиксировать позиции каналов чтобы пользоваться формулой DataRel? или они уже фиксированы?

    #33536
    manjey73
    Участник

    Сейчас точно не помню, так как там два режима чтения 16h и 14h пересчет на коэффициент трансформации драйвером учитывается. Но если стоит единица в счетчике, вы можете вместо 1 указать требуемый в параметре Multiplier на нужных параметрах, как в случае с переводом в кВт из Вт например.

    упс. параметр называется range — так и не исправил этот момент.
    Не совсем понял вашу формулу, попробую словами.
    Вы делите на 1000 — это уже коэффициент трансформации?
    То есть у вас трансформатор 5000ВА/5ВА ? тогда в range просто укажите 0.001
    Если например у меня транс 200/5 то коэффициент 40 то range 1/40 = 0.025
    И так далее.

    Вот с напряжением у меня нет счетчиков на 57 Вольт, но вроде как тоже можно посчитать коэффициент.
    Правда тут нюанс, если у вас наборы счетчиков разные и с разными коэффициентами трансформации по току и напряжению, то под каждый набор должен быть свой шаблон типа
    Mercury23_5000-5_57.xml и там указаны необходимые множители.

    По SyncTime посмотрю, удивительно что счетчик не ответил что типа нет такого параметра и т.д. а дал честный ответ только с нулями 🙂 кто бы мог подумать….

    #33537
    manjey73
    Участник

    Пример от программистов, углы между фазами должны быть 120гр.
    Но, это между 1-2, 2-3, 3-1
    Что сделано тут в счетчике? углы показываются 1-2, 1-3, 2-3
    почему нельзя измерить 3-1 загадка

    57,5В это по идее коэфф 4 от нормы 230В, то есть 1/4 range = 0.25

    Если там транс напряжения, который приводит к 57,5В например от 1000, это 17.3913
    то range 1/17.3913 = 0.0575

    • Этот ответ был изменен 8 месяцев назад от manjey73.
    • Этот ответ был изменен 8 месяцев назад от manjey73.
    #33540
    manjey73
    Участник

    от 6000В к 57.5 = 104.347826 то range 1/104.347826 = 0.009583

    А, или просто надо умножать на 104.347826

    range (правильно должно быть Multiplier, как-нибудь поправлю) это в данном случае умножение и в зависимости от счетчика и куда мы переводим либо указываем как есть, либо если надо поделить предварительно делаем 1/значение

    • Этот ответ был изменен 8 месяцев назад от manjey73.
Просмотр 15 сообщений - с 286 по 300 (из 360 всего)
  • Вы должны авторизироваться для ответа в этой теме.