Просмотр полной версии : Работа с библиотекой UNM
Всем привет!
Т.к. вопрос из предыдущей моей игнорируется, то открою новую ветку.
Работаю с UNM. При приеме и передаче байта переставляются старший и младший полубайт. При приеме данный косяк обошел (использую правленный POU из примера Read_Holding_Registers) - при передаче из буфера на выход POU просто меняю местами старший и младший полубайт.
А вот с записью проблема. Прикладываю скриншоты того что в буфере отправки через UNM и того что получили на том конце (там второй ПЛК 100 с "аппаратным" Modbus Slave).
Так же с данной библиотекой не удалось прочитать счетчики Меркурий из примера в "полезностях" - не проходит авторизацию, хотя пароль правильный и через конфигуратор в Меркурий попадаю.
1. Есть ли в природе нормальный модуль UNM? Скачал тут с форума и с сайта все что нашел - у всех дата и размер совпадают.
2. Может есть модуль без пароля? Этот просмотреть не дает.
3. Если вообще отправляется ерунда, то как вообще люди работают с Меркурием?
Александр Приходько
27.02.2012, 11:59
Здравствуйте.
1)UNM не имеет других версий, она одна - единственная.
2)О каком модуле речь? Что простотреть и кому не дает.
3)Ерунда не отправляется. Непосредственно я писал данную библиотеку. Тестировал ее сам и другие сотрудники нашей компании.
Для начала. Давайте начнем понемногу разбираться:
1) Какой ПЛК(полная маркировка).
2) Какая у ПЛК прошивка. (Либо в ПЛК-браузере посмотрите, либо лог гипертерминалом снимите)
3) Какая версия таргет файла? ( Открыть файл блокнотом C:\CoDeSys\Targets\PLCХХХ.Х_Х\IOModules\hardware.c fg. Версия Target будет указана в верхней строке)
4) Какой непосредственно счетчик?
5) Попробуйте установить стандартный пароль (помоему 111111 или 222222 в зависимости от уровня доступа)
6) Какая версия Codesys?(полностью, смотрите в справке)
7) Перед загрузкой в ПЛК проекта делайте полную перекомпиляцию. (Проект - очистить все; Проект - компилировать все)
8) На всякий случай после загрузки проекта ПЛК перегрузите меркурий.
9) Какое время цикла у контролера? Уверены, что его хватает? Модуль Статистика смотрели?
Теперь, что касается передачи данных между ПЛК. Да, подтверждаю перестановка данных имеет место. Но это ведь не проблема, данные можно переворачивать как и на стороне мастера, так и на стороне слейва. Только зачем вам такая передача данных? Стандартными модбас мастером и слейвом нельзя данные передавать?
P.S. рекомендую при реализации подобных проектов использовать снифер. Сразу все по местам встанет.
http://technet.microsoft.com/en-us/sysinternals/bb896644.aspx
С одной ошибкой разобрался - в пакете не передавалось число регистров в байтах. :)
Но функцию write holding registers я делал на основе все той же Read_Holding_Registers из примера использования библиотеки UNM и операции группового чтения MVA8 - там тоже не передается число в байтах. :D
Ну и при приеме-передаче сам переставляю байты как надо... Но все равно как-то не красиво.
Так что вопрос про чтение Меркуриев в силе...
А)
1)Ясно. А есть ли эта библиотека с возможностью редактирования?
2)UNM - не открывает в режиме редактирования. Хотел в нем сам покопаться...
3)Уже ответил выше - не поставил длину регистров в байтах. Описание МБ смотрел в вики, делал как в ней же. Нашел другое - там есть поле счетчика отдельно.
Б)
1) ПЛК 100-24 РМ.
2) VERSION 2.12.7.
3) Таргеты 2.10.
4) Меркурий 230 АРТ-03 PQRSIDN
5) Пароли стандарные же и стоят. С ними заходил через конфигуратор, ПЛК с ними же не заходит. Уровень доступа тоже пробовал менять.
6) Версия кодесис 2.3.9.39
7) Перекомпилировал и перезагружал с очисткой не однократно.
8) Меркурий перезагрузить не получится - он уже установлен на оборудовании. Был бы "на столе" - уже давно бы разобрался. :)
9) Статистику естественно ставил. Времени остается навалом, цпу не перегружается. Тем более по возможности старался оптимизировать работу программы.
И насчет стандартных модбас мастер и слейв - не получается передать несколько групп регистров. Начинаются разные варианты "недоставки" пакетов, т.к. определить точно что произошла доставка стандартными средствами не получается. Поэтому решил полностью перейти на UNM - пока нравится больше. :)
Кстати не совсем понятен смысл перестановки байтов в UNM. А если я не модбас передаю? Зачем их переворачивать? Я буфер сам составлю как мне надо!
в модбасе переворачивается, хотите чтоб прямо все передавал, переверните их до отправки в буфер, библиотека их вернет на место и потребитель получит желаемое :)
И второй раз спрошу, почему бы со стандартным модбасом не работать с modbus.lib
Александр Приходько
27.02.2012, 13:55
UNM вы не откроете, как ни старайтесь. Дело в том, что библиотека реализована в прошивке ПЛК, а в самой библиотеке лишь заголовок(вызов библиотеки).
Библиотека эта рабочая. Тут я могу вас заверить. Дело в том, что я сам с помощью нее реализовал уже около десятка примеров, которые в данный момент успешно функционируют. А что касается Меркурия, то на базе моего примера функционирует целая коттеджная "деревня" в несколько сотен домов. Пока ни кто на пример не жаловался.
Я не спорю, ошибки могут быть, от них ни кто не застрахован.
Надо тогда нам с Вами понять, где узкое место.
Попробуйте подключиться снифером. И скиньте мне лог. Можете еще сравить лог ПЛК с тем, какие команды шлет конфигуратор с ПК.
И еще вопрос. Вы какой пример используете с меркурием? Дело в том, что я где-то в январе его полностью переписал и перевыложил на сайт. Может у вас старая версия?
Сравните с тем, что лежит тут:
http://kipshop.ru/Primeri/DevicesOther/03_Mercury_230_ART.zip
P.S. внимательно проверьте параметры связи!!!
И второй раз спрошу, почему бы со стандартным модбасом не работать с modbus.lib
Он работает через SysLibCom.lib
Т.е. каждый раз надо будет занимать и освобождать порт для смены модбас-меркурий. Смысла нет и потеря времени.
Байты сам перевернул - все работает. Да и Modbus не сложный протокол - реализовать можно на чем угодно. Недавно групповое чтение вообще на акцессе делал. Правда написал только поддержку ASCII - читал ПЛК100. :)
И еще вопрос. Вы какой пример используете с меркурием? Дело в том, что я где-то в январе его полностью переписал и перевыложил на сайт. Может у вас старая версия?
Точно такая же. Параметры связи проверил раз стописят.
Насчет сниффера это мысль, но к сожалению счетчик от меня далекоооо... :(
Пока и без него есть что делать в программе, так что этот момент будет отлаживаться в самую последнюю очередь. Там еще не известно как поведет себя четвертый контроллер, в который буду пихать несколько блоков данных...
По UNM вопросов в принципе больше нет - остальное просмотрю сниффером что и как он там вертит.
Сергей Мих
03.03.2012, 22:57
Вопрос Супер Модератору - где найти описание библиотеки UNM на руском языке? подскажите.
Николаев Андрей
04.03.2012, 12:52
На диске к прибору. Раздел описание библиотек ОВЕН.
Здравствуйте.
Есть проблема с библиотекой 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.
Что делал:
1. Блок работы с электросчетчиком целиком взял с примера форума, добавил лишь опрос каждые 15 сек (а не постоянно как в примере) и понизил скорость обмена до 1200.
2. Схемотехника интерфейсов в порядке, проверял осциллографом, наводок нет.
3. По совету местного специалиста по ПЛК Овен, написал тестовую программу, полностью исключив использование библиотеки Oscat. У специалиста были подозрения, что функциональные блоки этой библиотеки как-то некорректно используют системное время и это вызывает сбой. Не помогло.
4. Изначально минимальное время цикла программы было 5 мсек, но перегрузки контроллера не было. Увеличил до 20 мсек. Не помогло.
5. Были предположения, что частое считывание значений электросчетчика как-то нагружает сам электросчетчик. Увеличивал период чтения с 15 сек до 1 минуты. Сбой стал проявляться через большее время, только и всего.
6. Подозрения на возможный брак ПЛК либо электросчетчика не подтвердились. Было сделано несколько перестановок оборудования из шкафа в шкаф.
Очень нужна помощь, у меня уже закончились идеи.
В архиве программа и скриншот скады.
Sergey666
08.01.2015, 12:56
И причем тут UNM ?
У вас в СКАДе значения косячные или в ПЛК от счетчика????
Для опроса счетчика своя бибка идет , в ней есть какой-то косячок .
Значения косячные в ПЛК от счетчика.
Powered by vBulletin® Version 4.2.3 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot