Стартовая страница › Форумы › Разработка и интеграция › Драйвер Корректора газа EK260/270/280 — протокол МЭК61107
- В этой теме 103 ответа, 4 участника, последнее обновление 1 неделя, 5 дней назад сделано manjey73.
-
АвторСообщения
-
10.11.2019 в 10:53 #14044manjey73Участник
В архиве настроенный шаблон под Корректор расходомер газа EK270 (тестировалось на данной модели)…
Вообще драйвер пилится под протокол МЭК61107 (IEC61107) но сравнивая с драйверами для счетчиков Энергомера CE301, CE6850 и описание протокола оказалось, что производители отступают от протокола, так же могут лепить что-то свое и т.д.
Например отличаются способы расчета контрольных сумм пакетов, в чем Энергомера призналась в документации на счетчик.Примечание: В счетчике в отклонение от требований ИСО 1155-78 при расчете контрольной суммы (BCC) используется арифметическое, а не логическое суммирование. BCC вычисляется арифметическим суммированием символов и распространяется от символа, непосредственно следующего за первым SOH- или STX-символом, и до символа ЕТХ включительно, который завершает сообщение. Вычисленный 8-мибитный BCC (младший байт суммы) следует сразу за символом ЕТХ и должен быть, как и все передаваемые символы, дополнен битом четности.
Сам ИСО1155 платный, но Wiki говорит, что даже в нем минимум 3 вида расчета контрольных сумм, так что без приборов и снятых с них логов сделать универсальный драйвер с наскока не получается.
Драйвер платный, 1500р, для тех, кто предоставит приборы для тестирования скидка 30% (то есть 1000р).
В драйвере пока реализовано только чтение без записи.з.ы. для Михаила. Очень не хватает сохранения всей переменной в строковом виде. Ограничение в 8 байт сильно усложняет некоторые моменты. Может как-то можно еще в версии 5.7 сделать новую БД для текста, а в эти 8 байт запихивать идентификатор ?
Правда этот идентификатор должен восприниматься не только драйверами но и самой Scada, конкретно Формулами как минимум и выводов в Web.з.ы. сейчас пришлось параметр «Статус» EK270 раскидать на 9(ДЕВЯТЬ) переменных, значения в которых не фиксированы и могут менять свое положение.
Например: (1)(2)(6)(8)(13)(16) или если уйдет код (6) то выглядеть это будет так
(1)(2)(8)(13)(16), соответственно кода 8, 13, 16 сместятся на один канал если это идет в представлении double.Организовывать подобные проверки, перемещения и т.д. в драйвере будет неправильным, так как я его не затачиваю именно под один прибор, а 9 переменных создавать в Scada тоже некрасиво с точки зрения занимаемого места, усложнения расчетов. Тут правда еще «приборостроители» конечно намудрили…
Но вот была бы 1 переменная строковая, можно было обойтись одной двумя формулами для проверки… Но строка длинее 8-ми байт получается…- Эта тема была изменена 4 года, 5 месяцев назад от manjey73.
11.11.2019 в 08:07 #14046MikhailМодераторНовый драйвер — это очень хорошо!
Как Вы думаете, он актуален только для российских (exUSSR) пользователей или также для зарубежных?По поводу строки: в версии 5.7 это не будет меняться. В следующем поколении — пока не определено.
Напишите, пожалуйста, примеры значений, которые может принимать эта строковая переменная. Это поможет лучше понять требования.11.11.2019 в 09:35 #14047RomirosУчастникНаверное только для российских. Мы используем это чудо. Сам прибор неплохой, но в плане интеграции в АСУТП очень неудобен. ЕК280 не пробовали, но вот 260 и 270 у нас хватает. Это кстати очень распространенный прибор по российским предприятиям, драйвер может быть очень востребован. Архивы и события реализованы?
11.11.2019 в 10:53 #14048manjey73УчастникБудет актуально для всех по мере расширения функционала драйвера.
Так как в тесте был только ЕК270 (оно же 260, 280, ТС220) и возможно другие этого производителя.Вообще в планах развивать драйвер согласно протокола IEC61107 но чудеса от производителей даже в ЕК2хх есть. Ну и у Энергомеры тоже.
Неудобен любой прибор, имеющий архивы в существующем положении дел с БД в RapidScada, какой смысл вычитывать одни и те же данные в БД, которые не меняются ???? то есть нужен механизм создания БД на лету для архивов и дальнейшего их использования для отчетов.
Сейчас читать архивы можно командами в файл например из web плагина, но надо разбираться с написанием плагинов и передачей команд в драйвер из него и вычитыванием данных обратно. До этого мне еще далеко. А встроенных механизмов так и нет. Я предлагал Михаилу добавить кроме SetCurData еще варианты чтобы их как-то можно было использовать уже сейчас из драйверов и чтобы не пострадал нынешний механизм…Вот как раз речь о событиях, если правильно понял документацию, то как раз параметр Статус это и есть события. Но согласно документации там плавающие значения, пример которых я приводил выше.
Может быть так (1)(2)(6)(8)(13)(16)
а может и так (1)(2)(8)(13)(14)(16) и так далееканал 1 = 1 или 1
канал 2 = 2 или 2
канал 3 = 6 или 8
канал 4 = 8 или 13
канал 5 = 13 или 14
канал 6 = 16 или 16
числа в скобках это и есть события, но они меняют свое положение в каналах в зависимости от состава событий.Вот то, что можно сделать сейчас и проверки статусов необходимо будет проверять по КАЖДОМУ каналу, так как где окажется значение только прибор знает.
При одной строковой переменной проверка была бы куда проще.Если вытягивать переменные в () в каналы, то происходит смещение, а в одну строку вытягивать и потом проверять одну строку формулами не позволяет ограничение канала БД на 8 байт. если я в строку запихну то получу или (1)(2)(6 или 1)(2)(6) и даже если я заменю скобки например * то получу 1*2*6*8* что отнюдь не легче.
Нужна текстовая БД для переменных и уже давно нужна….Romiros — речь об этих событиях статуса ? или о каких то других ?
11.11.2019 в 11:33 #14051RomirosУчастникРечь о событиях и вмешательствах сохранённых в архиве прибора.
В последних версиях ScadaComm у CommLineSvc появился интерфейс ServerComm, что позволяет обращаться к ScadaServer напрямую.
Я использую эту возможность в драйверах для чтения даты последних записанных архивов и событий в БД RapidScada при старте линии связи(занимает несколько секунд). А далее при опросе даты записанных в скаду часовых и архивов и событий хранятся в кэше драйвера.11.11.2019 в 11:37 #14052RomirosУчастникЧто касается статусов и событий в онлайн, сами сейчас разбираемся, как это лучше реализовать. Какой-то самый неудобный прибор из всего нашего парка :).
11.11.2019 в 11:49 #14053manjey73УчастникВышли пример работы с ServerComm. Что там вообще на этом можно построить ?
Прочитать то из драйвера можно что угодно, даже в обычной Сессии один раз, проблема больше в другом — КУДА это все девать ? я не вижу смысла читать архивы в нынешние БД.
Это бесполезная трата места.а вот в файл можно. В идеале это надо делать из плагина, а в БД иметь всего один канал — Типа «Появились события» ну и так далее, посмотрите, прочтите, сделайте отчет и так далее…
Ну я разложил на 9 дополнительных каналов в БД
КП 134 "EK270" -------------- DLL : KpM61107 Состояние : норма Сеанс связи : 11.11.2019 11:49:04 Команда ТУ : время неопределено Сеансы связи (всего / ошибок) : 1 / 0 Команды ТУ (всего / ошибок) : 0 / 0 Запросы (всего / ошибок) : 19 / 0 Текущие данные тегов КП +--------+-----------------------------+---------------------+-------+ | Сигнал | Наименование | Значение | Канал | +--------+-----------------------------+---------------------+-------+ | ******** Корректор объёма газа ЕК270 ***************************** | +--------+-----------------------------+---------------------+-------+ | 1 | Qb | 0,000 | | +--------+-----------------------------+---------------------+-------+ | 2 | Qr | 0,000 | | +--------+-----------------------------+---------------------+-------+ | 3 | V | 5 145 212,229 | | +--------+-----------------------------+---------------------+-------+ | 4 | Vr | 1 365 234,000 | | +--------+-----------------------------+---------------------+-------+ | 5 | Pmeas | -0,349 | | +--------+-----------------------------+---------------------+-------+ | 6 | P | 8,250 | | +--------+-----------------------------+---------------------+-------+ | 7 | Tmeas | 117,420 | | +--------+-----------------------------+---------------------+-------+ | 8 | T | -35,000 | | +--------+-----------------------------+---------------------+-------+ | 9 | Rhoc | 0,716 | | +--------+-----------------------------+---------------------+-------+ | 10 | dV | 0,594 | | +--------+-----------------------------+---------------------+-------+ | 11 | DateTime | 11.11.2019 11:28:48 | | +--------+-----------------------------+---------------------+-------+ | 12 | Vc.И∆ | 0,000 | | +--------+-----------------------------+---------------------+-------+ | 13 | VbDay | 0,000 | | +--------+-----------------------------+---------------------+-------+ | 14 | VbMonth | 0,000 | | +--------+-----------------------------+---------------------+-------+ | 15 | dPТек | 0,000 | | +--------+-----------------------------+---------------------+-------+ | 21 | Cmam_1 | 1,000 | | +--------+-----------------------------+---------------------+-------+ | 22 | Cmam_2 | 2,000 | | +--------+-----------------------------+---------------------+-------+ | 23 | Cmam_3 | 6,000 | | +--------+-----------------------------+---------------------+-------+ | 24 | Cmam_4 | 8,000 | | +--------+-----------------------------+---------------------+-------+ | 25 | Cmam_5 | 13,000 | | +--------+-----------------------------+---------------------+-------+ | 26 | Cmam_6 | 16,000 | | +--------+-----------------------------+---------------------+-------+ | 27 | Cmam_7 | --- | | +--------+-----------------------------+---------------------+-------+ | 28 | Cmam_8 | --- | | +--------+-----------------------------+---------------------+-------+ | 29 | Cmam_9 | --- | | +--------+-----------------------------+---------------------+-------+
11.11.2019 в 11:50 #14054manjey73УчастникCmam 1 — 9 здесь как раз и раскладывается одна переменная из строки, что приводил выше
11.11.2019 в 13:18 #14056RomirosУчастникКак вариант, можно расшифровать статус этих 9 сигналов в драйвере и передать на сервер событие в уже понятном текстовом виде.
11.11.2019 в 13:22 #14057RomirosУчастникПо поводу того, что писать в базу все подряд — пусть это решает пользователь, каким сигналам назначать каналы для архивирования в БД, а какие оставить 0.
11.11.2019 в 13:54 #14058manjey73УчастникЕсли бы драйвер работал только с ЕК2Х0 то да, можно было бы расшифровать в драйвере.
Но данные если верить документации могут смещаться и самое главное, драйвер не строго под ЕККак определить каналы БД под архивы, если сейчас это архив на среду, завтра на четверг, потом на пятницу и так далее ? Это во-первых. А во-вторых, смысл писать часовой или суточный архив каждую минуту ? Механизмов, даже если мы не читаем данные из прибора, которые бы не писали раз в минуту то же самое в Scada нет.
А что нужно пользователю ? архив 5-ти месячной давности или прошлых суток ? как это определить в драйвере вообще что нужно, а что не нужно ?Текущие данные да, под них заточены нынешние БД, и только. Остальное надо как-то обходными путями…
Кольцевых БД с настраиваемой глубиной вложения для архивов пока нет.
В планах читать архивы из приборов именно куда-то, но не в общую нынешнюю БД.
11.11.2019 в 14:17 #14059RomirosУчастникЯ делаю не так. Например параметр V, он читается постоянно. Его часовой архив пишется в этот же канал один раз в час. Если писать архив в другой канал, то можно просто не писать в него текущие. Базу это никак не увеличит.
11.11.2019 в 14:34 #14060manjey73Участникага, я принцип понял. Надо будет подумать, как это реализовать в драйвере, чтобы это не было привязано к одному прибору и можно было настроить через шаблон под тот или иной прибор.
12.11.2019 в 16:06 #14073manjey73Участникв архив драйвера добавлен шаблон на TC220, 210
по мелочи код изменен, делает повторные запросы при левых ответах прибора.13.11.2019 в 14:00 #14074manjey73УчастникОшибка в шаблонах. Неверно задан формат времени в Units, было yyyy-dd-MM,HH:mm:ss
Должно быть вот так — yyyy-MM-dd,HH:mm:ss
перепутаны дни с месяцами в общем. (чуть позже обновлю) надо поменять немного принципы чтения и разбора переменных.
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.