PDA

Просмотр полной версии : Проблемы с Меркурий 230 ART



p_dima90
16.01.2015, 11:21
Здравствуйте.
Есть проблема с библиотекой UNM, а именно получение данных с электросчетчика Меркурий 230 ART.
Проблема в том, что контроллер получает данные, но через некоторое время появляется сбой, и все переменные, читаемые с электросчетчика, принимают одно значение, но с разным положением десятичной точки.
Сбой проявляется через произвольное время, может проявиться через неделю после запуска, может через месяц.

Для начала:
1) ПЛК 100 Р-М .
2) Прошивка 2.14.
3) версия таргет-файла 2.10.
4) Электросчетчик Меркурий 230 ART PQRS.
5) Используется стандартный пароль администратора счетчика 222222, конфигуратор электросчетчика с этим паролем подключается.
6) Версия CoDeSys 2.3.9.36
7) Перед загрузкой в ПЛК полную перекомпиляцию делал неоднократно (Проект - очистить все; Проект - компилировать все).
8) "На всякий случай после загрузки проекта ПЛК перегрузите меркурий" - делал.
9) Согласно модулю статистики контроллер не перегружен, хотя время цикла изначально было 5 мсек. По совету инженера техподдержки Овен, ответственного за ПЛК, увеличил время до 20 мсек, не помогло.
фото шкафа:
Ситуация:
1. Шкаф на скважине наружного исполнения, в составе: ПЧ INVT, ПЛК, электросчетчик Меркурий, GSM/GPRS маршрутизатор, обогрев.
2. Всего 6 скважин, контроллеры разные: ПЛК 150 А-М, ПЛК 100 Р-М, ПЛК 110.30 Р-М v2. Сбой наблюдается на всех ПЛК. Костяк программы одинаковый, различия в ПО обоснованы лишь различием в ПЛК (просто не было у поставщика в наличии требуемого количества одинаковых ПЛК).
3. Программу при необходимости могу расписать более подробно, но вкратце: SCADA передает на ПЛК заданное давление и команды ВКЛ/ВЫКЛ, забирает данные, которые ПЛК получил от ПЧ и электросчетчика.
4. Есть возможность подключиться к ПЛК и мониторить программу в CoDeSys.
фото шкафа:
16193
Что делал:
1. Блок работы с электросчетчиком целиком взял с примера форума, добавил лишь опрос каждые 15 сек (а не постоянно как в примере) и понизил скорость обмена до 1200.
2. Схемотехника интерфейсов в порядке, проверял осциллографом, наводок нет.
3. По совету местного специалиста по ПЛК Овен, написал тестовую программу, полностью исключив использование библиотеки Oscat. У специалиста были подозрения, что функциональные блоки этой библиотеки как-то некорректно используют системное время и это вызывает сбой. Не помогло.
4. Изначально минимальное время цикла программы было 5 мсек, но перегрузки контроллера не было. Увеличил до 20 мсек. Не помогло.
5. Были предположения, что частое считывание значений электросчетчика как-то нагружает сам электросчетчик. Увеличивал период чтения с 15 сек до 1 минуты. Сбой стал проявляться через большее время, только и всего.
6. Подозрения на возможный брак ПЛК либо электросчетчика не подтвердились. Было сделано несколько перестановок оборудования из шкафа в шкаф.

Очень нужна помощь, у меня уже закончились идеи.

В архиве программа и скриншот скады

Николаев Андрей
16.01.2015, 11:33
Напишите запрос в тех. поддержку.
У нас есть библиотека по работе с Меркурием.

p_dima90
16.01.2015, 11:56
Напишите запрос в тех. поддержку.
У нас есть библиотека по работе с Меркурием.
Вот такую библиотеку используем

Вольд
16.01.2015, 12:06
А что за SCADA, если не секрет ?

p_dima90
16.01.2015, 12:07
А что за SCADA, если не секрет ?

wincc 7.0 sp1

goller
11.02.2015, 21:18
Добрый день у меня такая же беда два Меркурия 230 опрашиваются а через некоторое время такой же сбой, ПЛК150 И М
пока не разобрался сбой через разное время - сбой точно не от Меркуриев (проверял)

так что если победите - делитесь

melky
12.02.2015, 08:39
При переделки библиотеки для работы через SisLibCom обнаружил зависание опроса счетчика, если не закрыв порт, поменять входные переменные (что читаем из счетчика).
В библиотеке есть закрытие UNM канала, но вот есть ли это закрытие при смене запросов чтения архивов ? Возможно из-за этого и происходят зависания ?

goller
17.02.2015, 10:47
Добрый день
Столкнулся с проблемой опроса меркуриев-
Создал проект по примеру для опроса 4 Меркуриев 230, 4 модуля КонтрАвт ,1 тепловычислитель Взлет
- все работает, сохранил в ПЛК150 - проект работает при выключении не пропадает - все хорошо.
Решил установить таргеты на другие ПЛК (автоматическая установка) теперь если загружаю проект с сохраненных файлов - все работает кроме меркуриев,
если загружаю проект из ПЛК, подключаюсь - все работает, но если пытаюсь его очистить данные загрузки и компилировать по новой -подключаюсь- не работает меркурий. Переустановил Кодесис- все тоже самое. Куда копать не знаю.

Scream
26.04.2017, 13:35
День добрый.
Имею Меркурий 234 ART-02 P, есть для него библиотека под ПЛК 160?

melky
26.04.2017, 14:29
Ну так перенести проект из примера, или в 160-м нет библиотеки UNM ?

Протоколы у 230 и 234 одинаковые, единственное что там у вас с обратной энергией, доступна или нет ?

Scream
26.04.2017, 14:34
Ну так перенести проект из примера, или в 160-м нет библиотеки UNM ?

Протоколы у 230 и 234 одинаковые, единственное что там у вас с обратной энергией, доступна или нет ?

Ну так перенёс... не взлетает.
Про обратную энергию без понятия, только начал разбираться. Мне кто-то писал что за эти года протокол менялся. Овеновская бибка пишет что прибор не отвечает.

melky
26.04.2017, 14:51
Вы запрос счетчика можете можете показать со стороны ПЛК ? снифером подключиться например ?

У него сперва идет команда открытия канала с паролем доступа, только потом запрос параметров.

melky
26.04.2017, 15:00
2017-04-26 14:54:36 Сеанс связи с КП 65 "Меркурий236_энергия", тип: KpMercury23x, адрес: 20
Отправка (4): 14 00 0E B0 // Запрос тестирования канала
Приём (4/4): 14 00 0E B0
OK!
Отправка (11): 14 01 01 01 01 01 01 01 01 88 81 // Открытие канала команда 1 с уровнем доступа 1, пароль 111111 в HEX (отсечение 0x30)
Приём (4/4): 14 00 0E B0 // подтверждение открытия канала
OK!
Отправка (5): 14 08 02 B7 C5 // Ну дальше посыпались запросы и ответы параметров
Приём (7/7): 14 00 01 00 01 84 03
OK!
Отправка (5): 14 03 08 30 F2
Приём (4/4): 14 00 0E B0
OK!
Отправка (6): 14 08 14 F0 8B 52
Приём (19/19): 14 37 00 15 92 FF FF FF FF 00 00 71 41 0C 00 FB B6 58 A9 // собственно 4 FF это должна была быть Активная обратного направления, но ее нет.
OK!
Отправка (6): 14 08 14 F1 4A 92
Приём (19/19): 14 27 00 A0 1D FF FF FF FF 00 00 CE 37 08 00 5D 84 22 9F
OK!
Отправка (6): 14 08 14 F2 0A 93
Приём (19/19): 14 10 00 75 74 FF FF FF FF 00 00 A3 09 04 00 9E 32 CF AB
OK!
Отправка (6): 14 05 60 00 3D D5
Приём (15/15): 14 1D 00 D5 FB 03 00 C6 9A 15 00 5F FB 09 4E
Отправка (6): 14 05 60 01 FC 15
Приём (15/15): 14 15 00 16 B6 02 00 30 74 0E 00 46 F3 45 0E
Отправка (6): 14 05 60 02 BC 14
Приём (15/15): 14 08 00 BF 45 01 00 96 26 07 00 19 08 35 8B

Ну как-то так, но это не ПЛК посылает, а dll

Scream
26.04.2017, 15:19
2017-04-26 14:54:36 Сеанс связи с КП 65 "Меркурий236_энергия", тип: KpMercury23x, адрес: 20
Отправка (4): 14 00 0E B0 // Запрос тестирования канала
Приём (4/4): 14 00 0E B0
OK!
Отправка (11): 14 01 01 01 01 01 01 01 01 88 81 // Открытие канала команда 1 с уровнем доступа 1, пароль 111111 в HEX (отсечение 0x30)
Приём (4/4): 14 00 0E B0 // подтверждение открытия канала
OK!
Отправка (5): 14 08 02 B7 C5 // Ну дальше посыпались запросы и ответы параметров
Приём (7/7): 14 00 01 00 01 84 03
OK!
Отправка (5): 14 03 08 30 F2
Приём (4/4): 14 00 0E B0
OK!
Отправка (6): 14 08 14 F0 8B 52
Приём (19/19): 14 37 00 15 92 FF FF FF FF 00 00 71 41 0C 00 FB B6 58 A9 // собственно 4 FF это должна была быть Активная обратного направления, но ее нет.
OK!
Отправка (6): 14 08 14 F1 4A 92
Приём (19/19): 14 27 00 A0 1D FF FF FF FF 00 00 CE 37 08 00 5D 84 22 9F
OK!
Отправка (6): 14 08 14 F2 0A 93
Приём (19/19): 14 10 00 75 74 FF FF FF FF 00 00 A3 09 04 00 9E 32 CF AB
OK!
Отправка (6): 14 05 60 00 3D D5
Приём (15/15): 14 1D 00 D5 FB 03 00 C6 9A 15 00 5F FB 09 4E
Отправка (6): 14 05 60 01 FC 15
Приём (15/15): 14 15 00 16 B6 02 00 30 74 0E 00 46 F3 45 0E
Отправка (6): 14 05 60 02 BC 14
Приём (15/15): 14 08 00 BF 45 01 00 96 26 07 00 19 08 35 8B

Ну как-то так, но это не ПЛК посылает, а dll

О, спасибо за пример, мне наверное проще как раз накидать на SysLibCom, чем разбираться в бибке.
Что такое "(отсечение 0x30)" ?

melky
26.04.2017, 15:27
В поле пароля вводятся символы 1 это 0x31 в ASCII формате, а в запросе счетчику посылается 0х01. Я пока не пробовал менять пароль на другой, по идее счетчик должен принимать пароли из ASCII таблицы начиная от 0 и выше, кроме последнего или двух, соответственно я делал отнимание 0x30 от кода ASCII символа
Да, канал открывается на 240 секунд у последних счетчиков, потом автоматом закрывается, если не было опроса.

Scream
26.04.2017, 15:29
В поле пароля вводятся символы 1 это 0x31 в ASCII формате, а в запросе счетчику посылается 0х01. Я пока не пробовал менять пароль на другой, по идее счетчик должен принимать пароли из ASCII таблицы начиная от 0 и выше, кроме последнего или двух, соответственно я делал отнимание 0x30 от кода ASCII символа

а, понял. я пароль тоже менять не буду, спасибо.

Трофимов Артем
27.04.2017, 15:53
точно не помню, воспринимает ли меркурий пароли с буквами, но если делать только числовые , то сделайте так
password : STRING(6):='222222';//пароль для доступа к уровню 2 счётчика
short_password :STRING(1);
buff_password :ARRAY [0..6] OF BYTE;
ptr : POINTER TO BYTE;
ptr2 : POINTER TO BYTE;

buff_password[0]:=2;// уровень доступа

ptr:=ADR(password);
ptr2:=ADR(short_password);
ptr2^:=ptr^;
buff_password[1]:=STRING_TO_BYTE(short_password);
ptr:=ptr+1;
ptr2^:=ptr^;
buff_password[2]:=STRING_TO_BYTE(short_password);
ptr:=ptr+1;
ptr2^:=ptr^;
buff_password[3]:=STRING_TO_BYTE(short_password);
ptr:=ptr+1;
ptr2^:=ptr^;
buff_password[4]:=STRING_TO_BYTE(short_password);
ptr:=ptr+1;
ptr2^:=ptr^;
buff_password[5]:=STRING_TO_BYTE(short_password);
ptr:=ptr+1;
ptr2^:=ptr^;
buff_password[6]:=STRING_TO_BYTE(short_password);

melky
27.04.2017, 16:42
В документации вообще указано, что первый уровень доступа 111111 - 0x31 0x31 0x31 0x31 0x31 0x31 только не прокатывает :)

Трофимов Артем
28.04.2017, 10:48
базовые пароли
уровень 1 - 111111
уровень 2 - 222222

если выполнить приложенный мной код то пароль из 222222 превратится в
0x02 0x02 0x02 0x02 0x02 0x02 что нужно
а не 0x32 0x32 0x32 0x32 0x32 0x32

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

melky
28.04.2017, 11:07
Ну так я достал документашку из стола и сам удивился, хотел посмотреть поддержку ASCII символов в паролях.
Кстати если снять галочку HEX в конфигураторе, то отправка будет действительно 0x32 только счетчик не будет ничего записывать и читать сторонними программами.

spa
25.07.2019, 16:58
Так нашли решения проблемы со счетчиком или нет?
У меня час, два, может несколько дней опрашиваться, а потом ошибка контрольной суммы и все тут. Если передернуть ПЛК и счетчик, то снова все нормально.

melky
25.07.2019, 17:45
А точно ли ошибка CRC ?
з.ы. такое может быть если - была потеря связи на время более 240 секунд (на новых счетчиках), после чего счетчик закрывает канал связи и надо снова авторизоваться. Если программа не учитывает данный таймаут при опросе и снова не производит авторизацию, счетчик будет выдавать сообщение по данному поводу какой-то длины, а ваш код ждет другую длину. Как следствие ошибка CRC.

Это чисто предположение исходя из поведения счетчика.

spa
26.07.2019, 07:11
А точно ли ошибка CRC ?
з.ы. такое может быть если - была потеря связи на время более 240 секунд (на новых счетчиках), после чего счетчик закрывает канал связи и надо снова авторизоваться. Если программа не учитывает данный таймаут при опросе и снова не производит авторизацию, счетчик будет выдавать сообщение по данному поводу какой-то длины, а ваш код ждет другую длину. Как следствие ошибка CRC.

Это чисто предположение исходя из поведения счетчика.

Опрос счетчика идет каждые 10 секунд, опрос реализован один в один как в описании библиотеки. Ошибка появляется в GetParam.Error6, при переводе ошибки в текст, звучит как "Ошибка контрольной суммы".

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

melky
26.07.2019, 09:25
Если честно, то не знаю, как в библиотеке реализовано, я ее когда то пытался переделать на обычный COM порт, без UNM. Зависала на каких-то этапах. Потом отпала необходимость и я бросил.

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

Опять же, повторюсь - это предположение. Так как я эти счетчики читаю Scada системой, а не ПЛК-шкой.

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

spa
26.07.2019, 16:11
Пробовал опрашивать намного реже, раз в 10 минут. Ситуация такая же.
Сегодня еще добавилась ошибка: "неверный адрес устройства в ответе", она чередуется с ошибкой по контрольной сумме.
В библиотеке реализован опрос в шесть шагов:
1) Тест связи
2) Открытие сессии
3) Чтение мгновенных значений
4) Чтение фиксированных данных
5) Чтение массивов энергии
6) Закрытие сессии

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

У меня на ПЛК висит только счетчик, вообще ПЛК больше ничего не делает. Ну еще есть ModBUS Slave, в который перекидываю данные полученные со счетчика.

melky
26.07.2019, 16:14
Хм, если есть п6. Закрытие сессии, то надо копать код. Где-то там есть ошибка. Мне так кажется...

Glottos
07.08.2020, 12:42
Здравствуйте.
Есть проблема с библиотекой UNM, а именно получение данных с электросчетчика Меркурий 230 ART.
Проблема в том, что контроллер получает данные, но через некоторое время появляется сбой, и все переменные, читаемые с электросчетчика, принимают одно значение, но с разным положением десятичной точки.
Сбой проявляется через произвольное время, может проявиться через неделю после запуска, может через месяц.

Для начала:
1) ПЛК 100 Р-М .
2) Прошивка 2.14.
3) версия таргет-файла 2.10.
4) Электросчетчик Меркурий 230 ART PQRS.
5) Используется стандартный пароль администратора счетчика 222222, конфигуратор электросчетчика с этим паролем подключается.
6) Версия CoDeSys 2.3.9.36
7) Перед загрузкой в ПЛК полную перекомпиляцию делал неоднократно (Проект - очистить все; Проект - компилировать все).
8) "На всякий случай после загрузки проекта ПЛК перегрузите меркурий" - делал.
9) Согласно модулю статистики контроллер не перегружен, хотя время цикла изначально было 5 мсек. По совету инженера техподдержки Овен, ответственного за ПЛК, увеличил время до 20 мсек, не помогло.
фото шкафа:
Ситуация:
1. Шкаф на скважине наружного исполнения, в составе: ПЧ INVT, ПЛК, электросчетчик Меркурий, GSM/GPRS маршрутизатор, обогрев.
2. Всего 6 скважин, контроллеры разные: ПЛК 150 А-М, ПЛК 100 Р-М, ПЛК 110.30 Р-М v2. Сбой наблюдается на всех ПЛК. Костяк программы одинаковый, различия в ПО обоснованы лишь различием в ПЛК (просто не было у поставщика в наличии требуемого количества одинаковых ПЛК). Счетчик меркурий тыц (https://elektrika220.ru/schetchiki-merkuriy/) на сайт поставщика.
3. Программу при необходимости могу расписать более подробно, но вкратце: SCADA передает на ПЛК заданное давление и команды ВКЛ/ВЫКЛ, забирает данные, которые ПЛК получил от ПЧ и электросчетчика.
4. Есть возможность подключиться к ПЛК и мониторить программу в CoDeSys.
фото шкафа:
16193
Что делал:
1. Блок работы с электросчетчиком целиком взял с примера форума, добавил лишь опрос каждые 15 сек (а не постоянно как в примере) и понизил скорость обмена до 1200.
2. Схемотехника интерфейсов в порядке, проверял осциллографом, наводок нет.
3. По совету местного специалиста по ПЛК Овен, написал тестовую программу, полностью исключив использование библиотеки Oscat. У специалиста были подозрения, что функциональные блоки этой библиотеки как-то некорректно используют системное время и это вызывает сбой. Не помогло.
4. Изначально минимальное время цикла программы было 5 мсек, но перегрузки контроллера не было. Увеличил до 20 мсек. Не помогло.
5. Были предположения, что частое считывание значений электросчетчика как-то нагружает сам электросчетчик. Увеличивал период чтения с 15 сек до 1 минуты. Сбой стал проявляться через большее время, только и всего.
6. Подозрения на возможный брак ПЛК либо электросчетчика не подтвердились. Было сделано несколько перестановок оборудования из шкафа в шкаф.

Очень нужна помощь, у меня уже закончились идеи.

В архиве программа и скриншот скады



как решили вопрос?

p_dima90
08.08.2020, 22:11
как решили вопрос?
Никак, библиотека не рабочая. Взяли счетчики с Modbus RTU.