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

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

Просмотр 15 сообщений - с 46 по 60 (из 379 всего)
  • Автор
    Сообщения
  • #15160
    talbutdinov
    Участник

    Начал со старыми исходниками пока ковыряться, данные в архив загружаются.

    Пока с сигналами не совсем разобрался, когда драйвер для Веги писал, тоже на это натыкался, но думаю разберусь …

    Не публикуются картинки, уже всяко их прикладывал

    #15161
    manjey73
    Участник

    Я пытаюсь сейчас малой кровью переделать на xml шаблон. Как протестирую, выложу.

    talbutdinov объясните куда вы загружаете архивные данные ?
    вот например как сделать чтение
    1. месячных архивов на начало месяца ? как выбрать период ?
    2. суточных архивов на начало дня ? как выбрать период ?

    в общем много НО…

    В Scada нет возможности при вызове команды выбирать периоды. Кстати не помешало бы к командам Стандарт, Бинарная и т.д. добавить вызов календаря и каким-то образом это передавать в драйвер.

    #15162
    manjey73
    Участник

    С сигналами там все жестко :). в последнее время я сам назначаю номера сигналов в шаблоне и слежу за их индексацией в KpTags, так проще если мы отключаем чтение каких то параметров, чтобы нумерация сигналов не съезжала.

    В Драйвере Меркурий несколько иначе все, там за счет битовой маски все настройки были. Тогда я еще с xml не разобрался…

    #15164
    talbutdinov
    Участник

    Архивные данные я пока не загружаю, я пока сохраняю текущие данные в БД скады. Как вытаскивать профили мощности как раз таки разбираюсь, как записать их в БД проблем нет, на Веге это уже проходил. Логика была примерно такая:
    1. Выбирается дата отправная, с которой будет производиться первоначальная загрузка, например 1 число текущего месяца. В драйвере где-то должна сохраняться дата (у конкретного экземпляра КП) последнего загруженного показания из прибора учета (архивного показания)
    2. В час X производится загрузка показаний (у меркурия это архив 30+30), данные загружаются либо с даты последней загрузки, либо с отправной точки (если данные загружаются впервые)
    3. После успешного обновления в параметрах где-то отображается дата последних записанных архивных данных и при следующем обновление данные вытаскиваются только с этого момента по настоящее время

    Как-то так )

    #15165
    manjey73
    Участник

    Сохранять в свойствах линии для каждого КП не проблема. Такое реализовывал для хранения паролей в МЭК61107, планирую пароли в Меркурий таким же образом сделать.

    Ну прочитали мы профили и архивы — вот куда их ? по текущей базе размазывать ? а если несоответствие времени прибора и ПК происходит ?

    #15166
    talbutdinov
    Участник

    В целом сложного нет ничего, если в устройстве сбиты часы, то так или иначе, каким бы способом архив не вытаскивался (например через оптопорт) он будет бесполезен. На Веге у меня введен дополнительный параметр, который показывает отставание архива, что показывает отклонение текущего времени от времени на сервере, где стоит скада.

    Что на счет записи архива в скаду, то все не так уж и сложно:
    1. Объявляем переменную в виде среза TagSrez me23x;
    2. Задаем размерность, пока просто все возможные параметры me23x = new TagSrez(70);
    3. Задаем в срез текущее время (в случае с архивом — это время записи, в зависимости от ситуации) me23x.DateTime = DateTime.Now;
    4. Присваиваем значения в срез, например так `me23x.KPTags[0] = KPTags[0];
    me23x.TagData[0].Stat = BaseValues.CnlStatuses.Defined;
    me23x.TagData[0].Val = kanal1;`
    5. Добавляем примечание me23x.Descr = "Дата обновления " + DateTime.Now;
    6. Добавляем срез в базу AddArcSrez(me23x);

    #15167
    Romiros
    Участник

    А в самом приборе дата архива не хранится? Я обычно её и передаю в srez.DateTime.

    #15168
    manjey73
    Участник

    В приборах часы бывает врут, и без возможности выполнять синхронизацию. И такое попадается. По этому я не сторонник доверять часам приборов. Что вносит некоторое ограничение. Как вариант в переменной хранить время из прибора и сравнивать текущим для корректировки как вариант.

    #15169
    talbutdinov
    Участник

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

    Только вот сколько я не смотрел описаний как вытаскивать архивные данные (профили мощности) не могу разобраться …

    #15170
    manjey73
    Участник

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

    #15171
    talbutdinov
    Участник

    Если нужна помощь, скидывайте исходники, тоже подключусь. Сейчас доберусь до работы и скину исходники в части создания каналов. Если мне память не изменяет, то каналы создаются во вьюв.

    #15172
    manjey73
    Участник

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

    #15175
    Mikhail
    Модератор

    Намного удобнее обмениваться исходниками через GitHub. И ничего не потеряется.

    #15177
    manjey73
    Участник

    При моем умении программировать лучше на Git выкладывать уже протестированное решение. Иначе меня материть будут, если я сделаю синхронизацию кода с GIT — ом 🙂

    Может вечером выложу. Добавил создание каналов, переделал на шаблон.

    #15178
    manjey73
    Участник

    KpMercury23x,zip

    Обновил драйвер и исходники на Git. Есть еще что доделывать.
    Теперь драйвер считывает настройки из xml файла
    Имеет возможность задавать пароль доступа на каждый счетчик в отдельности не создавая новые файлы шаблонов через Пользовательские параметры линии связи
    Наименование — 64_pass (соответственно пароль для 64-ого КП на линии)
    Значение — собственно пароль.
    Если нет соответствующей записи, пароль берется из шаблона. (Удалить строку требуемого КП)
    Теперь создает согласно настройкам шаблона Входные каналы в БД

    В каком то из шаблонов не сменил пароль на 111111.
    Удалять атрибуты value нельзя, их количество соответствует количеству данных.

    Михаил, поправите ссылку в репозитории. Теперь последняя версия будет в zip, так как она теперь работает совместно с библиотекой ScadaCommFunc. В zip весь необходимый комплект

    • Ответ изменён 6 лет, 3 месяца назад пользователем manjey73.
Просмотр 15 сообщений - с 46 по 60 (из 379 всего)
  • Для ответа в этой теме необходимо авторизоваться.