PDA

Просмотр полной версии : Modbus на RS-485 ошибка 81 только на RS-485-1 ПЛК110[М02] (ПЛК110-24.60.Р-М)



SuP
25.01.2017, 08:40
Использую порт через конфигуратор.

Почти всегда присутствует ошибка 81 при подключении пары устройств через порт RS-485-1 (изредка идёт корректный обмен). Переключаю и перенастраиваю на RS-485-2 с теми же параметрами - всё нормально (хотя изредка и там ошибка проскакивает).

Пара устройств (модули ICP-DAS) подключены без терминаторов на расстоянии 0,5 м от контроллера, 115200, 8 бит, чётность, 1 стоп, RS485, RTU, Framing time 0.
Опрос произвожу через 50 мс.

Экспериментировал со всевозможными вариантами времени опроса, фрейминга, таймаутов и прочего.

PLCInfo
PLC model MODEL PLC 110-60
Binary VERSION 0.3.64
Need Target version >= 3.10
Compiled: 11:15:40 Nov 8 2016
STM32 binary version 114
MAC 6A:77:00:FF:F9:DF
IP 192.168.0.110
GATE 192.168.0.1
MASK 255.255.255.0

На старой версии ПЛК110 обмен работает исправно на любом из RS-485 портов.

Сталкивался кто-нибудь с таким?

Филоненко Владислав
25.01.2017, 09:54
1. терминаторы всё же нужны.
2. ICP - физ. slave или master-а?


P.S.
все же обновитесь на 0.3.66, в 0.3.64 есть крит. ошибка.

SuP
25.01.2017, 15:18
1. терминаторы всё же нужны.
2. ICP - физ. slave или master-а?

P.S.
все же обновитесь на 0.3.66, в 0.3.64 есть крит. ошибка.

1. Ок, попробую с ними.
2. ICP - слейвы.

А таргет свежий где можно найти под 0.3.66 ? В readme рекомендуется "таргеты версии 3.12 и выше", а нахожу только 3.10.

Vzhik
25.01.2017, 16:35
Добрый день!
У меня тоже косяк с RS485 (обоими), modbus master работают только на скорости 28800 и выше. На остальных скоростях ПЛК постоянно перегружается.

PLC model MODEL PLC 110-30
Binary VERSION 0.3.64
Need Target version >= 3.10
Compiled: 11:10:53 Nov 8 2016
STM32 binary version 114
MAC 6A:77:00:FF:E6:E9

Может дело в прошивке, где скачать новую VERSION 0.3.66? На сайте VERSION 0.3.64.

Евгений Багаев
25.01.2017, 16:48
Может дело в прошивке, где скачать новую VERSION 0.3.66? На сайте VERSION 0.3.64.

Здравствуйте.
Скачать можно здесь:
http://www.owen.ru/forum/showthread.php?t=14520&page=116
На сайте появится чуть позже.

SuP
25.01.2017, 19:05
А targets новые рекомендуемые выложены где-то? Пока не нашёл...

Евгений Багаев
25.01.2017, 19:10
А targets новые рекомендуемые выложены где-то? Пока не нашёл...

На данный момент нет необходимости в обновлении target-файлов. С прошивкой 0.3.66 используйте версию target файла 3.11.

SuP
25.01.2017, 22:52
syslibcom - и слова "версия, target" просто забудутся.

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

dima64
26.01.2017, 11:56
Контроллер ПЛК110-24.60.К-М[M02], Зав. №54219161232265415. Дата выпуска 22.12.2016.
Прошивка 0.3.64.
При подключении сразу начались проблемы с интерфейсами RS-485 (обоими). Постоянно появляется ошибка 81. На RS-485-1 частота появления ошибки на порядок больше, чем на RS-485-2 (см. рис). (На каждом интерфейсе висят по два сервопривода DELTA. На каждом устройстве опрашивается около 10 регистров. По рекомендации техподдержки пробовали менять параметр framing time (0-100 ms) результата нет. Длина линии связи 1 метр MAX. Терминаторы пробовали ставить, скорость обмена уменьшали до 9600- ничего не меняется.
На контроллере ПЛК110-24.60.К-М старой модификации, опрос проходил без ошибок. (более 30 регистров на чтение-запись на каждом приводе).
Для теста соединили 2 ПЛК110-24.32.К-М[M02] по RS-485. Прошивка 0.3.53. Обмен идет с ошибками.
Для Филоненко:
Обращался в техподдержку (заявка 14260) Отправлял им мониторинг обмена и тестовый проект.
По мониторингу видно, что 16(10h) команда формируется не полностью. Нет последнего байта CRC.
Вопрос пока не решен.
Перепрошивка на 0.3.66 результатов не дала.

capzap
26.01.2017, 12:03
Вопрос пока не решен.
а помоему тех поддержка ясно дает понять, аж в этой теме пишут
P.S.
все же обновитесь на 0.3.66, в 0.3.64 есть крит. ошибка.

dima64
26.01.2017, 12:08
Забыл сразу написать про перепрошивку.

capzap
26.01.2017, 12:29
осталось тогда Вам написать что с помощью библиотек передавая определенный массив байт, Вы так же не получаете на другом устройстве переданное количество байт

dima64
26.01.2017, 12:58
16 команда не всегда кастрированная, иногда формируется нормально. 3 команда 1 регистр читает боле-менее, а 2 регистра уже с трудом.

Сергей Лысов
28.01.2017, 15:52
Забыл сразу написать про перепрошивку.

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

alex55
28.01.2017, 16:59
Для МО2 если что-нить чуть сложней светофора - придется и мастера и слейва через биб-ки лепить.=УЖАОСС!!,если и вправду так, надо убедить овен не прекращать лет5 выпуск старого ПЛК110, иначе п-ц простому инженерному корпусу РФ..

Sergey666
28.01.2017, 20:28
PS
Для МО2 если что-нить чуть сложней светофора - придется и мастера и слейва через биб-ки лепить. С ними все нормально.
И это несмотря на то, что вроде как скоростного ресурса в МО2 на порядок больше чем в МО1.
Где-то коллеги г-на Филоненко накуролесили. Это помимо тумблера.

Накуролесили , да библиотека modbus.lib при связи с несколькими устройствами на скорости ниже 38400 не работает... Это-ж умудрится надо так ... птичка хвост вытащит- клювик увязнет,клювик вытащит-хвост...,цикл бесконечен.

Хотя у меня по 485(1) несколько МВ110-8 и др ч-з библиотеки , а 485(2) штук 10...20 СМИ2 в конфигураторе нормально (ну... более-менее,не совсем плохо:p).

triceraptors
29.01.2017, 02:54
Накуролесили , да библиотека modbus.lib при связи с несколькими устройствами на скорости ниже 38400 не работает... Это-ж умудрится надо так ... птичка хвост вытащит- клювик увязнет,клювик вытащит-хвост...,цикл бесконечен.

Хотя у меня по 485(1) несколько МВ110-8 и др ч-з библиотеки , а 485(2) штук 10...20 СМИ2 в конфигураторе нормально (ну... более-менее,не совсем плохо:p).

Доброго времени суток !
Дабы не плодить сущности... Насчет скорости это реально так ? Або в моем случае имеется глобальное подтверждение в виде четырех частотников innovert ISD которые прекрасно работали на 38400 с ПЛК73 , а ПЛК110-30М2 ни в какую... Двое суток скурил всякой инфы. Уже и порты пытался менять и скорсть ( меньшую сторону, ПЧ больше не знает) и по одному цеплял ( О чудо через раз можно получить данные, но писать хоть стреляйся ) и проводки менял ... В конце концов добежал осцилл и переходник на модбас к ноуту... С ноута все четыре взлетели вообще без вопросов. Т.Е. проблема таки в ПЛК ??? днем попытаюсь сниффером глянуть что там, а то с осцилла не понял юмора.

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

З.Ы. Прошу прощения за разброд мысли - сплю !!!

Эдуард_Н
29.01.2017, 05:15
Syslibcom - и на любой скорости будет работать, привыкший я к Овену. Но МО2 - удивил. Всегда говорил о ЗАМЕЧАЛЬНОМ штатном слейве для 1xx, 110(МO1), но тут и слейв пришлось запиливать через б-ки. Тумблер опять же ))

А что с тумблером?

SuP
29.01.2017, 21:55
Для общей информации - на прошивке v0.3.66 с target v3.11 пока так и не работает. Поставили старый контроллер, т.к. нужно было срочно, а с работой RS-485 на М02 буду чуть позже пробовать Syslibcom, если OWEN не успеет исправить.

Филоненко Владислав
30.01.2017, 08:03
Вероятно, какая-то несовместимость с этим оборудованием. Где Вы находитесь? Раз Вы снимали осцилограммы - не могли бы их прислать?

Филоненко Владислав
30.01.2017, 08:03
а помоему тех поддержка ясно дает понять, аж в этой теме пишут

Ошибка к этому не относилась.

Филоненко Владислав
30.01.2017, 08:55
Кстати, где проект? По фото гадать трудно

приборист
30.01.2017, 10:09
Накуролесили , да библиотека modbus.lib при связи с несколькими устройствами на скорости ниже 38400 не работает... Это-ж умудрится надо так ... птичка хвост вытащит- клювик увязнет,клювик вытащит-хвост...,цикл бесконечен.

Хотя у меня по 485(1) несколько МВ110-8 и др ч-з библиотеки , а 485(2) штук 10...20 СМИ2 в конфигураторе нормально (ну... более-менее,не совсем плохо:p).

Странно, у меня работает:
19200:
ПЛК110-32к-l М02 + MB110-2AC + ATV312. (0.3.66)
38400:
ПЛК110-32к-l М02 + MB110-8AC + МУ110-16К. (0.3.66)
38400:
ПЛК110-32к-m М02 + 6*MB110-8A (Эта связка на прошивке 0.3.52 конопатила мозги, не работая через Modbus.lib, после перепрошивки на 0.3.66 все заработало)

Все работает через Modbus.lib

dima64
30.01.2017, 10:50
Вероятно, какая-то несовместимость с этим оборудованием. Где Вы находитесь? Раз Вы снимали осцилограммы - не могли бы их прислать?
Два ПЛК 110-32[M02] общаются между собой с ошибками.

Филоненко Владислав
30.01.2017, 11:10
тем более, если через библиотеку всё работает - хотелось бы увидеть проект.

dima64
30.01.2017, 12:37
тем более, если через библиотеку всё работает - хотелось бы увидеть проект.
Проект отослал Лысов Сергей Иванович из техподдержки. Заявка №14260.

dima64
02.02.2017, 14:41
Вопрос с обменом остается открытым.

triceraptors
09.02.2017, 21:28
Вопрос с обменом остается открытым.

ФуууХ !!!Ну хоть в моем случае решилось... Танцы с бубном (смена прошивки и перестановка частотников на второй порт) и снижение скорости обмена на 9200 ... благо надо по пять запросов и команд в секунду. Но почему так происходит не понял.
"Кто виноват ?" в общем выяснить не удалось, ПЛК или частотники, может еще и модуль расширения входов... Буду летом разбираться когда линию поставят на капремонт и полную модернизацию...

Филоненко Владислав
10.02.2017, 14:57
Для решения проблемы связи по 485-1 попробуйте новую прошивку.

SuP
10.02.2017, 22:50
Спасибо за прошивку! (Сегодня как раз начал отлаживать свой вариант через modbus.lib, но где-о что-то пока не так, так что прошивка пришлась кстати.)

Проверил, погонял с двумя устройствами по 12 регистров чтения и записи на 115200 бит/с с периодом опроса 50 мс. Ошибки 81 стали появляться гораздо реже, порядка одной в секунду при минимальном времени цикла контроллера 1 мс. Никакие параметры обмена при изменении в допустимых для меня пределах ситуацию заметно не улучшили, но увеличение минимального цикла ПЛК до 2 мс помогло избавиться от ошибки 81. По крайней мере, за более чем 20 минут не поймал ни одной (смотрю программно). Буду пробовать на реальном объекте.

По поводу минимального времени цикла контроллера - почему ПЛК не увеличивает его, если что-то не успевает?
Или это всё-таки не совсем "минимальное" время?
Или же его имеет право увеличивать только пользовательская программа (пока не достигнет максимального, когда сработает WatchDog), а служебные вещи выполняются строго в отведённый им интервал и не микросекундой больше, не успел, так не успел?

Ещё раз спасибо за быстрое решение.

приборист
11.02.2017, 16:06
На прошивке 0.3.66 ведет себя интересно с Modbus.lib:
ПЛК110-32 М02 Опрашивает 6 МВ110-8А, скопом по 48 регистров.
При минимальном цикле в 1 мс имеем разброд и шатание в опросе (лампочки опроса на модулях моргают хаотично, некоторые модули не опрашиваются)
При минимальном цикле в 10 мс все работает последовательно.

В модуле Statistic - тишина, все хорошо.

ЗЫ
Владислав, а почему в М02 нет лога изменений в прошивках?
Очень не хватает этой информации, слишком часто стала возникать потребность в бубне.

dima64
11.02.2017, 16:23
Для решения проблемы связи по 485-1 попробуйте новую прошивку.
На прошивке 67.
Помогает, но не 100%.

dima64
11.02.2017, 16:24
Для 110-60 для RS485-1 ошибок много.

SuP
11.02.2017, 17:01
Будем ждать окончательного исправления, а пока хоть как-то можно работать с этой прошивкой. В данном случае "работает, но много ошибок", а было "всё время ошибки, но иногда данные проходят".

Евгений Багаев
13.02.2017, 13:46
а почему в М02 нет лога изменений в прошивках?
Очень не хватает этой информации, слишком часто стала возникать потребность в бубне.

История изменений во вложении. В ближайшее время будет добавлена на сайте в соответствующих разделах.

Филоненко Владислав
13.02.2017, 13:59
По поводу минимального времени цикла контроллера - почему ПЛК не увеличивает его, если что-то не успевает?


ПЛК очень исполнительный и старается выполнить программу 1 раз в цикл ПЛК.

А вот правильность задания цикла должен контролировать программист.

SuP
15.02.2017, 18:49
Имеет, потому что влияет. А вот почему влияет - энигма... По крайней мере я до сих пор не уяснил полную логику распределения временных ресурсов на М02.

Филоненко Владислав
17.02.2017, 10:13
См. название темы !
Какое отношение цикл ПЛК имеет к сетевому обмену ?

Процессор 1, процессов много. Если один процесс (цикл) жрёт много - то зависящие от него тормозятся. А всё I/O завязано на синхронизацию входов/выходов.

Спорягин Кирилл
20.02.2017, 12:05
1. Скажите, пожалуйста, если обмен реализован через библиотеку, то имеет смысл менять прошивку с 3.53 на 3.67 для улучшения работы по RS-485-1 и RS-485-2?

2. При смене target-файлов с 3.07 на 3.11 подключение к старым проектам, выполненных на таргетах 3.07 будет в порядке?

Филоненко Владислав
20.02.2017, 14:17
А какое отношение обмен имеет к бортовым входам/выходам ?


Т.е. утверждаете что если программно тормозить цикл (например на 500мс) - то обмен чаще будет невозможен ?
Да, это фундаментальная особенность CoDeSys (Да и большинства остальных сред разработки для автоматизации). Можно сделать "фейковый" обмен, с не изменяющимися данными/данными, к-е никто никогда не прочитает, но зачем, если их программа не увидит.
Иногда обмен бывает множественным, т.е. разные переменные обмениваются за 1 цикл. Но и тут речь идёт лишь о возможности опросить N переменных за 1 цикл, но не о том, что данные будут N раз обработаны/изменены в программе.

Филоненко Владислав
20.02.2017, 14:17
1. Скажите, пожалуйста, если обмен реализован через библиотеку, то имеет смысл менять прошивку с 3.53 на 3.67 для улучшения работы по RS-485-1 и RS-485-2?

2. При смене target-файлов с 3.07 на 3.11 подключение к старым проектам, выполненных на таргетах 3.07 будет в порядке?

Да, все проблемы были на уровне драйверов, а они общие

Спорягин Кирилл
20.02.2017, 14:21
Да, все проблемы были на уровне драйверов, а они общие

Да, уже вижу, спасибо.
На прошивке 3.53 было на разных модулях от 1 до 10% опросов с ошибками. После перепрошивки на 3.67 пока ошибок 0% (по наблюдению около 15000 опросов).

techniker357
22.02.2017, 23:00
Здравствуйте. ПЛК110-24.30.Р-М [М02]. На RS-485-1 висит модуль МВ110-32ДН (ошибок нет), на RS-485-2 панель СПК110 (панель мастер). Так панель его не видит (в Codesys V3 пишет Bus_Failure). Меняю порты местами (RS-485) - все работает. RS-485-2 не может работать по Modbus Slave или что?

pan2000
27.03.2017, 11:15
Предистория - появление ошибок обмена через COM-порт после перехода на М2...

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

В случае старого контроллера функция возвращала значение от 1 до 12, в зависмости от скорости обмена.

А вот для М2 размер фрагмента, исключая последний, всегда составляет не менее 14 байтов. Кроме того последний межфрагментный интервал увеличен на длительность обмена в несколько (3-5) байт.

Для библиотеки Modbus.lib в режиме RTU, использующей в качестве тайм-аута межпакетный интервал в 3ms для фрагментов начиная со второго, с небходимостью должны возникать ошибки при скорости обмена менее 14 байт за 3ms.

Еще один "подводный камень" SysComRead заключается при ее использовании для очистки входного буфера перед началом обмена. Мусор, прилетевший менее чем за время обмена 3-5 байтами, просто не виден (см. замечание о последнем межфрагментном интервале).

Однако все это внешнее поведение функции, а что в ней спрятано достоверно могут рассказать только разработчики (магическое число 14 навивает мысль об аппаратном буфере в ИМС процессора).

Ниже приведена тест-программа для контроллера М2. Входные переменные: скорость обмена и длина передаваемого пакета.
Временные интервалы отсчитываются по основному циклу контроллера 1 мс.
Для работы программы необходимо соединение двух СОМ-портров минимально в одном направлении или "эхо" для одного.

Информация по котроллеру М2:
PLC model MODEL PLC 110-60
Binary VERSION 0.3.67
Need Target version >= 3.10
Compiled: 13:05:36 Feb 8 2017
STM32 binary version 114

Филоненко Владислав
27.03.2017, 11:26
Всегда читайте по 1-му байту и разбирайте последовательно. Ожидать N символов от последовательного интерфейса с возможностью помех - нельзя.
Пример правильной машины состояний для разбора приведен в стандарте ModBus.

P.S. таки да, 14 байт размер FIFO.

pan2000
29.03.2017, 10:15
Всегда читайте по 1-му байту и разбирайте последовательно. Ожидать N символов от последовательного интерфейса с возможностью помех - нельзя.
Пример правильной машины состояний для разбора приведен в стандарте ModBus.

P.S. таки да, 14 байт размер FIFO.

К сожалению, к ошибкам от помех добавляются ещё и ошибки от программной обработки. Именно о них и шла речь в моем сообщении. При переходе к контроллеру М2 изменилось поведение функции SysComRead. И для исправления ранее безошибочно работающих программ, одной рекомендации "читайте по 1-му байту" (если под этим подразумевается значение параметра "Число считаемых байт" =1) мало. Алгоритмы, чувствительные к более-менее равномерному поступлению байт, на длинных пакетах и при низких скоростях начинают отказывать.

------------------
Начну с того,что сведенья о параметрах функции SysComRead, приведенные в документации, весьма лаконичны:
dwBytesToRead DWORD Число считаемых байт

О тайном смысле параметра остается только догадываться основываясь на собственном опыте и экспериментми с функцией.
По результатам тест-программы (исходный текст в приложении):

Для функции, выполняющейся на старом контроллере, это параметр следует считать "размером используемого буфера", который ограничивает максимальное значение функции (и соответственно заполнение буфера). Значение функции - число принятых байт на момент обращения к функции. Допустимые значения от нуля и по "Число считаемых байт". Функция принимает ненулевые значения в темпе приема байта контроллером.

Для функции, выполняющейся на контроллере М2, этот параметр следует считать "МИНИМАЛЬНЫМ числом считываемых байт", ограничивающим минимальное, отличное от нуля, значение функции. Верхнее значение равно размеру FIFO. функция принимает ненулевые значения только после заполнения FIF0 и строго в ПОСЛЕДОВАТЕЛЬНЫХ циклах опроса (не следует забывать, что в тест-программе одно обращение к функции за 1 временной интервал). Для незаполненного FIFO к задержке появления ненулевых значений функции после завершения приема пакета добавляется временной интервал несколько байт (3-5 ?).

В библиотеке Modbus.lib вариант RTU для функции значение параметра "Число считаемых байт" явно указано как размер массива из 256 байт. В приложении приведены распределения приема пакета, имитирующие работу Modbus.lib (RTU) для наиболее "плохой" длины пакета (чтение 11 регистров), для обоих типов контроллера. На М2 прием пакета завершится с ошибкой из-за большой длительности "межфрагментного" интервала.
Для чтения не более 4-х регистров прием осуществляется за "одно" FIFO. Т.е. при использовании Modbus.lib RTU "не читайте медленно более 4-х регистров".

Посмотреть поведение функции SysComRead для контроллера 110[M2] можно с помощью приведенной ниже тест-программы.