PDA

Просмотр полной версии : Ek260 и Rs-485



alex1963
23.12.2008, 12:45
Извините за оффтопик, но кто нибудь пробовал подключать корректор ЕК260 через БПЭК-02 на шину RS-485?
Там RS-422 с 4 проводами R+, R-, T+, T-, но изготовитель уверяет, что надо объединить R+ T+, R- T-, и все должно работать. У них даже есть схема на сайте, где Adam в качестве мастера.
У меня мастером ПЛК-150 и при таком подключении 485 умирает. Естественно, постоянно включенный передатчик 422 сажает всю шину. Так и должно быть и в Элстер-газе просто дурят мозги потребителям или все-таки это у меня что то не так?

Логвиненко Андрей
25.12.2008, 18:24
при прямом подключении к корректору по 2-х проводной линии надо задавать режим шини2 = 1.
в рэ на бп-эк-02 такой режим не предусмотрен, может быть появилась новая модификация , про которую мы не знаем. картинки на сайте юридической силы не имеют, лучше задать этот вопрос производителю.

alex1963
25.12.2008, 22:48
в том то и дело, что спрашивал у производителя, он ответил, что 485 поддерживается, соедините проводочки попарно, см. на сайте. в действительности, как показала проверка на двух бпэк, постоянно включенный передатчик валит всю шину. в рэ - только 422 и 4-проводка. похоже, сделали 422, а потом спохватились - всем нужен 485. ну и родилась идея с объединением проводов, которую никто даже не проверял.
впрочем, это мои домыслы. может, передатчик должен отключаться по какому-нибудь волшебному слову, которого я не знаю?
кстати, а никто не знает, может это уродство (бпэк, кто не видел, это металлическая коробка устрашающих размеров), чем заменить можно?

Логвиненко Андрей
26.12.2008, 08:34
а вам нужна взрывозащита? Если да, то настроить БП-ЭК на rs232 и поставить преобразователь 232-485, такая картинка тоже есть.

Логвиненко Андрей
26.12.2008, 16:58
Проблемма зарыта, по моему, немного глубже. Подключал корректор к ПЛК напрямую, после общения ЕК260 с ПЛК по modbus его начинает глючить, он пропускает запросы, а потом выдает ответы на посылки, которые были 10-15 запросов назад, перестает коннектится по МЭК 61107. Лечится глюк переводом корректора в режим вывода на принтер (РИНТ2=10). Копать глубже пока нет времени.

alex1963
30.12.2008, 18:13
Так и не удалось ничего получить с EK260, несмотря на усердные танцы с бубном. Поначалу даже пошел обмен, но считывалась какая-то ахинея. На осциллографе выглядело очень странно - на один запрос (период опроса был задан 1с) вылетала целая пачка ответов непредсказуемой длины, иногда забивая весь период. Работало это в ASCII 8 бит без четности (хотя РЭ говорит, что так нельзя!). Изменил на ASCII 7 бит EVEN, как доктор прописал - все умерло совсем (на ПЛК last error 81, на осциллографе только запросы и нет ответов, на ЕК мигает "о"). Далее перепробовал все возможные и невозможные комбинации параметров (ASCII и RTU, скорость, четность и т. п.), затем вернул все назад - без толку (помер?). Кнопки Reset у этого уродства нет, а батарейки - есть :(.

РИнт2=10 тоже пробовал, не получилось, и вообще это печать протокола, что же принимать целую страницу в тексте и затем выдергивать из нее нужное, переводить в двоичную систему и т.д. :( ?

Техподдержка изготовителя вообще посылает подальше - "У нас стандартные протоколы RS-485 и Modbus, поищите описание в Интернете по этим словам, ну и РЭ (адресок такой-то) почитайте". В этом РЭ нет даже перечня адресов регистров Модбаса! (Хорошо, что догадался посмотреть английскую версию на сайте Elster, там есть, при переводе "опустили").

Помогите, пожалуйста, кому удалось подключить, срочно нужно!

Логвиненко Андрей
03.01.2009, 21:08
Протокол Modbus запросил в Арзамасе, и мне его любезно выслали, при первой попытке связи с ПЛК по RTU все работало, когда на RS-485 подключил ещё ИП-320 и ВКТ-7, то корректор начал пропускать запросы, а Овеновский Modbus стал писать принятые данные в другие каналы (об этом в другой теме). Сварганил программу под SP RTE опроса регисторов MODBUS по RTU. После серии пыток (посылался запрос и анализировался ответ, а в запросах менял число регистров) установил, что ответы на пропущенные запросы вылазили через 10-15 посылок, как-бы накапливались в стеке. После этого пробовал коннектится по RS-485 через СОДЕК, и впечатление было, что порт умер. Для окончательного диагноза подключил корректор к гипертерминалу и задал РИнт2=10. Корректор начал исправно выдавать строки распечатки, после этого нормально законнектился через СОДЭК, пытки самопальным Модбасом пропусков запросов не обнаружили. Переделал программу опроса под ПЛК, с ПЛК тоже пропусков не было.
После подключения к фирменному Овеновскому Модбасу все заглючило снова.
Мое мнение, что у корректора перекашивает мозги от той какафонии, которая идет по RS-485, это чудо может работать на шине только в гордом одиночестве, и с овеновским Модбасом похоже тоже не дружит.
Сейчас сам в раздумье, отдавать целый порт под устройство, которое будет опрашиваться раз в сутки слишком жирно.
P.S. Сейчас удалось перехватить обмен между ЕК и компьютером по МЭК 61107, буду пробовать этот вариант, хотя там есть свой заморочки.

alex1963
04.01.2009, 11:25
C зависаниями интерфейса удалось справится. Цитата из РЭ:
"Внимание! При любом изменении параметров интерфейса ЕК260 (PИнт2, CИнт2, TИнт2,
К.Сиг, Инт2) или изменении состояния подключенного оборудования (например: включение в
сеть блока питания БП-ЭК-02) необходимо сделать паузу около 3 - 5 минут перед
обращением к корректору. Индикатором готовности интерфейса прибора служит
исчезновение символа «о» из статусной области дисплея корректора ЕК260."
На самом деле "о" продолжает мигать и через 15 минут. На время отладки найдено режение - отключить батарейки, питать только от внешнего источника и сбрасывать по питанию, когда надо.

Теперь по внешним признакам (осциллограф, last error = 0) обмен идет, но читается по-прежнему ахинея - большей частью нули или изчезающе малые значения (для real). Конечно, газ я не подаю, но по крайней мере два параметра должны быть реальными - жизнь батареек (адрес 1, получаю 1, на корректоре - 81) и температура (адрес 309, получаю 0, на корректоре - 19.25). Это в RTU, в ASCII были другие значения (но все равно ахинея). Может быть у real другой формат, нежели в CodeSys, но жизнь батареек - это int16, здесь то какие проблемы? Логвиненко Андрей, какие регистры Вы опрашивали? Какой порядок слов задавали в корректоре и ПЛК?

Последний эксперимент: попробовал опрашивать по одной переменной. Результаты отличаются от группового опроса! Для регистра 1 получил 36865.

Существует ли простой способ увидеть, что проходит по шине, не вмешиваясь в работу? Осциллографом прочитать пакеты не получается - я делал когда-то подобное, но выводя такт на другой луч - а здесь его нет.

К шине подключен МДВВ, на нем эпизодически (раз в несколько минут) щелкает реле, хотя даже опроса его нет (отключен, идет опрос только корректора). Реле щелкает только при наличии ответов корректора.

Логвиненко Андрей, если у Вас в гордом одиночестве работает и Вам достаточен опрос раз в сутки, коммутируйте RS-485 через реле (хотя бы то, что на выходах ПЛК). Грубо, но должно работать.

Логвиненко Андрей
05.01.2009, 09:33
Адреса надо смещать на 1 :батарейки-0, давление -306.температура-308 и т.д. Прядок следования-Native или менять в настройках ЕК260. Для уменьшения количества посылок читать лучше все регистры группы командой String input state, а данные вытаскивать через указатели.
Убрать с шины все другие приборы. Должно получиться.
Для контроля шины использовал АС-4 и небольшую программу под SP RTE , которая прослушивала порт и преобразовывала траффик в ASCII формат, без неё не разобрался бы.
Для себя я думаю взять АС-3М, тогда у ПЛК-100 будет 2 RS485, один использовать для Овеновских коробочек с фирменным Модбасом (вроде работает нормально), для приборов учета испольльзовать второй с самопальными протоколами.

alex1963
05.01.2009, 17:09
Большое спасибо за подсказку по сдвигу регистров и порядку байтов! Наконец то я начал хоть иногда получать от этой уродины что-то осмысленное.

Cразу поперли и глюки, даже при одном устройстве на шине. Если опрос делать не одной командой, то все путается. например, два регистра дают такой результат - сначала, после включения питания, все ок, затем что-то случается, значения меняются местами и так продолжает работать :). В общем, пока ответы большей частью выдаются с задержкой на 1: запрашиваешь объем - получаешь что-то старое, запрашиваешь давление - получаешь объем, запрашиваешь температуру - получаешь давление и т. д. это все при секундной задержке между запросами! Т. е. логика "пришел запрос - нужно отвечать" срабатывает исправно, но ответы "устаревшие". Двукратный последовательный запрос одного и того же регистра, кажется, решает проблему (несколько уст-в на шине пока не пробовал).

Овеновский мастер - отдельная история. Он похоже страшно доволен, когда ему вообще отвечают :), и уже не смотрит, кто ответил и что. Кладет, куда придется и выставляет last_error=0!

Логвиненко Андрей
05.01.2009, 20:56
Вы идете по чужим граблям, все глюки уже были не только мной описаны,http://www.owen.ru/forum/showthread.php?t=2915.Идея подключить ЕК260 к Овеновскому мастеру малопродуктивна и я её похоронил, сейчас делаю свою программу опроса через syslibcom и UNM, чего и Вам советую.

alex1963
07.01.2009, 20:52
Вы идете по чужим граблям, ... Всегда есть шанс, что в новой версии прошивки грабли переложили в другое место :).

А у меня как будто заработало. Конечно, нужно еще потестировать и почистить, поскольку много усложнений было добавлено по принципу "а не покрутить ли еще это?", но около часа EK260 читался без сбоев (пока в обход БПЭК). совместно с двумя МДВВ на той же шине.

Глюков и других хватает... Вот, например:
1) Начиная с некоторого уровня сложности программы контроллер начинает жутко тормозить - не только сеть перестает работать, но и на состояние собственных входов реакция несколько секунд. Бодаюсь с техподдержкой. Отвечают - ну, значит у Вас такая сложная программа, что цикл 5 с. Но это неправда: а) почему тогда не срабатывает watchdog?; б) все это лечится добавлением в PLC_PRG логики "работаем только каждый 8-й цикл, остальные - пустые". Т.е. нужно самому заботится о том, чтобы оставлять достаточно времени для системных задач, причем простое увеличение времени цикла в конфигурации почему-то не помогает.

2) Выходы МДВВ не управляются по output bit mask, по регистрам ШИМ - нормально.

Логвиненко Андрей
08.01.2009, 20:15
а какая у вас прошивка?
у меня во второй серии попыток подружить ек260 с овеновским модбасом прекратился обмен с панелью ип320, после чего я плюнул на это дело и решил идти своим путем.

alex1963
09.01.2009, 14:58
Прошивка 2.05.7. Но думаю, вся хитрость оказалась в том, чтобы один регистр ЕК260 опрашивать два раза подряд. Дополнительно я защитился, задав разные команды Модбаса (04 и 03) для МДВВ и ЕК260.

Сейчас удалось заставить работать и БПЭК - посредством 2 диодов. Партизанщина, конечно, но руководство уже кипит, и, даже если оно бы согласилось на покупку очередной "железяки" - пришла бы она только где-нибудь к концу января (Новый Год, однако!).

Логвиненко Андрей
13.01.2009, 22:52
Получилось связяться с ЕК260 по протоколу МЭК61107, пробовал варианты с SYSLIBCOM и UNM.
Вылезли новые тараканы. Один корректор на шине опрашивается без сбоев. Подключаю на шину ВКТ-7 (опрос обоих приборов ведется через UNM) сбои если проходят, то редко, повторный запрос исправляет ошибку. Подключаю на шину ИП-320(slave), в этом режиме опрос ВКТ проходит нормально , корректор выполняет инициализацию и выдает ответ на первый запрос чтения адреса, следующие запросы игнорирует.
Если отключить ВКТ (отсоединить от шины или просто отключить питание интерфейса RS485), то опрос проходит без сбоев.
Подключил с шине через АС-4 гипертерминал, и увидел , что корректор отвечает нормально, не проходит запрос от ПЛК. После долгих издевательств установил, что нужно делать паузу между запросами 1600мс, тогда посылки от ПЛК проходят при этом цикл опроса затягивается недопустимо долго ( опрос остальных приборов в это время остановлен ). Каким образом ВКТ может блокировать порт RS485 контроллера?
Вообще этот эксперимент показал, что пытатся навешать на одну шину разнородные приборы , у каждого свой тараканы, лучше не стоит, тем более, если из-за сбоев начнут отказывать блоки, отвечающие за управление оборудованием.

alex1963
14.01.2009, 22:11
А у меня все работает, честное пионерское! На одной шине c МДВВ. С овеновским мастером. Уже со вторым счетчиком. И uptime какой-никакой уже набирается. Правда, тестов вроде "if temperature>30 or temperature<10 then bug:=bug+1; end_if" пока не гонял, но визуально ни одного сбоя не замечено.

А повесить RS-485 очень просто - достаточно одному из узлов не снять разрешение передатчика :). Конечно, каждому устройству - отдельную линию будет понадежнее, но найдите мне контроллер с десятком RS-485 по приемлемой цене ;). Если уж говорить о надежности, то Modbus/485 вообще ж... Есть отличная шина CAN. Она делалась для управления автомобилями с соответствующими требованиями :). Там:
- очень надежный физический уровень (передатчик с 2 состояниями: активное и пассивное, есть трехпроводный вариант, который работает при обрыве любого из проводов);
- мультимастерность без сложной системы арбитража;
- практически не требуется конфигурирования.
Нет никакого цикла опроса, каждый узел передает свою информацию так часто, как считает нужным и не координируя это с другими. Но увы, в промышленной автоматизации стандарт "де факто" пока Модбас.

Логвиненко Андрей
15.01.2009, 14:29
Каким образом ВКТ может блокировать порт RS485 контроллера?
Немного ступил сам. Задал адрес ВКТ 0x02 и забыл про это, ответ ЕК260 начинается с байта STX=0x02, ВКТ распознает его как запрос мастера и пытается на него ответить, на шине появляется еще один передатчик.
Поменял адрес ВКТ и все заработало.

Филоненко Владислав
23.01.2009, 12:47
Мастер не может понять, с какого регистра пришёл ответ. Нет в ответе номера регистра!
Рекомендации:
1. Опрашивать очень редко (мозги у Ek возможно съезжают от частого опроса.
2. Если Ek поддерживает и 0х03 и 0х04 команды - их чередовать.
3. Поставить ожидание ответа 10-15 сек.
4. Если возможно - считывать сразу все регистры или хотя-бы большими кусками с разными размерами.

Xanar
23.11.2009, 10:09
Интересна ли еще тема - не знаю, но смею добавить. В протоколе ЕК260 (по стандарту МЭК 61107) есть такие строки:
1. Время между посылками двух байт может достигать 1500мс (1,5сек)
2. Если не получен ответ на запрос - следующий (повторный) не раньше чем чем через 2500мс (2,5сек).
на запрос "/?!" с таймаутом 500мс ответ "/Els6EK260" полностью не получается, приходит только "/Els6". Так вот. Удалось наладить какой-то нормальный обмен только после посещения Арзамаса, т.к. указанный в протоколе алгоритм расчета КС и реальный - две абсолютно разные вещи:)
Сейчас новая беда. С прибором ЕК260 с прошивкой 3.11 худо-бедно все работает, со старыми прошивками (2.31 к примеру) половины параметров нет. Арзамас заверяет, что изменений в протоколе нет.
ЗЫ. Обмен по 485. По 232, кстати, работа стабильнее, но у нас растояние больше чем позволяет 232.

Alexander Lifanov
23.12.2009, 18:07
Доброго времени суток, уважаемые господа!

Формулирую задачку. Есть ЕК260. На 485-ом порту висит модем, повешенный местной газовой компанией (поэтому играться с параметрами 485 не могу), и мой приемопередатчик.

ЕК260 отпараметрирован как режим 5, скорость 9600. Работаю, естественно, по 61107.

Делаю посылку на 9600 8n1 "/?!", получаю ответ на 9600 - "/Els6EK260". Т.е. он хочет отвечать на 19200.

Далее либо отвечаю АСК-060, затем переключаюсь на 19200 7e1, либо сначала переключаюсь, потом АСК-060 - безрезультатно. Пытался отвечать АСК-050 и ждать на 9600 - однохреново. Молчит как рыба об лёд.


Внимание, вопрос! Как добыть разумный ответ от ЕК260?

Логвиненко Андрей
23.12.2009, 18:31
Для начала надо попробовать отключить модем, и, непонял, зачем переключатся на 19200 7e1?

Alexander Lifanov
24.12.2009, 10:55
Для начала надо попробовать отключить модем, и, непонял, зачем переключатся на 19200 7e1?

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

Да и зачем? Обмен-то идет...

Насчет 19200 - по стандарту :) Он же отвечает /Els_6_
Значит, он готов обмениваться на режиме С, скорость 19200. А 7е1 - согласно стандарту ГОСТ Р МЭК 61107, п.4.4.

Филоненко Владислав
24.12.2009, 16:06
А попробуйте 8n1

Alexander Lifanov
24.12.2009, 16:49
А попробуйте 8n1

Да попробовал уже... Забавная хрень происходит...

Если в ответ на Els6 ответить АСК-060, ему пофиг. Если ответить АСК-061, он отвечает 8 байтами какого-то мусора (ответ ловлю тоже на 9600, т.к. на 19200 ничего не видно) и уходит в астрал до какого-то момента времени...

ЗЫ. Люди, а как правильно для ЕК260 контрольный байт считать? Хочу попробовать выбивать ЕК-шку из астрала SOH-B0-ETX-BCC.

ЗЗЫ. Погуглил. Правильно понимаю, что надо просто поксорить все байты тела включая ЕТХ?

Xanar
13.01.2010, 08:59
1. Не надо гадать. В настройках прибора параметр "Инт2":
0 - 7e1
1 - 7o1
2 - 8n1

2. Подтверждение скорости:
АСК-060 - не совсекм понятно, это точный вид ответа?
В общем я отвечаю такой посылкой:
ACK, '0', '6', '1', CR, LF
В ответ прибор вернет пароль сессии (вроде так называется):
01 50 30 02 28 31 32 33 34 35 36 37 29 03 50 [.P0.(1234567).P]

Обрати внимание - не АСК060, а АСК061 - режим программирования.
В режиме АСК060 - прибор автоматом выплюнет тебе запрограммированный ранее набор параметров и уйдет в спячку.
В режиме АСК061 - он будет отвечать на запросы параметров, ну и записывать их по команде. На доступ в различным параметрам требуются коды Поставщика или Потребителя.

Xanar
13.01.2010, 09:09
Вот алгоритм расчета КС

BYTE Calk_Control_Summ(BYTE* buff)
{
BYTE cs = 0;
int i = 0;
int StartFlag = 0;

while((buff[i]!=ETX)&&(buff[i]!=EOT))
{
if (StartFlag) cs ^= buff[i];
else if ( ((buff[i] == SON)|(buff[i]==STX)) ) StartFlag = 1;

++i;
}
// символ ETX
cs ^= buff[i];

return cs;
}

Xanar
13.01.2010, 09:33
Если в ответ на Els6 ответить АСК-060, ему пофиг. Если ответить АСК-061, он отвечает 8 байтами какого-то мусора (ответ ловлю тоже на 9600, т.к. на 19200 ничего не видно) и уходит в астрал до какого-то момента времени...

ЗЫ. Люди, а как правильно для ЕК260 контрольный байт считать? Хочу попробовать выбивать ЕК-шку из астрала SOH-B0-ETX-BCC.
Из описания:

Режим считывания данных
В случае АСК 0Z0 CR LF тарифное устройство будет отвечать предопределенным набором данных в формате. Набор данных может быть пуст для тех тарифных устройств, которые не предназначены для считывания данных этим способом.
Связь будет происходить со скоростью 300 Бд (начальная скорость передачи информации) если:
- символ "Z" в сообщении подтверждения/выбора опций – "0"; или
- неправильное или неподдерживаемое сообщение подтверждения/выбора опций послано и принято; или
- никакого сообщения подтверждения/выбора опций не послано и не принято.
Связь будет переключаться на скорость передачи информации "Z" Бд, только если символы "Z" в идентификационном ответе и сообщении подтверждения/выбора опций идентичны.
Астрал этот называется периодом активности сесии, прибор ждет команды:) Если команд нет, примерно через 30сек опять в спячку уйдет. И как показывает практика - если что-то не так пошло, то SOH-B0-ETX-BCC из астрала не особо то его и возвращает, самы надежный способ - таймаут на минуту.
В общем, раз прибор тебе ответил на /?! CR LF, то подтвердив выбор скорости - меняй скорость, не меняй формат кадра.
И еще. После установления связи после команды АСК 0Z0 CR LF обрати внимание, все остальные команды идут без CR LF.

SSherstnev
22.01.2015, 16:23
Поделитесь, пожалуйста, секретом подключения корректора газа по RS-485.
Подключаю по схеме:
А к Т-, R-
B к Т+, R+
На входы ЕК +U, Ri и +U, GND внешнее питание 9В
Прибор не отвечает, даже на запросы ПО СОДЭК. Может необходимо дополнительное сопротивление на входы ЕК? Тогда какого номинала?