-
В общем, проблему я решил пересаживанием модуля МВУ8-И на отдельный порт COM3, оказавшимся свободным в моём случае.
Не помню кто на форуме уже предлагал такое решение, но я сначала подумал что это неспортивно. Но в итоге понял, что погорячился.
Товарищи из Овена так же предложили мне разбить пакеты в сети на более мелкие, либо заменить модули МВУ8-И на более современные модули МВ110-224.8И, для которых данная проблема решена.
Но так как замена требует определённого времени (которого у меня уже нет), то я отказался от такого варианта. В одиночку модуль МВУ8-И работает без проблем, так что ... в следующий раз буду более осознанно подходить к подбору оборудования.
Поясню, откуда берутся длинные пакеты в моём случае.
У меня в сети есть два модуля МВА8, у которых имеется по 48 регистров с данными от восьми входов.
Эти регистры можно считывать по разному. Можно считывать 8 раз по 6 слов (т.е. отдельно для каждого входа), можно взять и считать все регистры разом в один массив, а потом уже из этого массива выуживать всё что понадобится.
Возможно Вы не поверите, но суть в том, что чтобы считать 8 раз по 6 регистров нужно ГОРАЗДО БОЛЬШЕ времени, чем считать разом 48 регистров. Проверьте и сами увидите.
Далее второй момент - в сети RS485 часто случаются ошибки. Обычно ошибка происходит по тайм-ауту ответа слейва (т.е. "модуль не успел ответить в отведённое ему время"). Настраивание таймаутов порта никак не помогло мне избавиться от ошибок.
Либо, я не умею пока это делать... Ну, то есть, если сделать в настройках порта очень маленькие тайм-ауты, то ошибки начинают валиться очень часто. Но если сделать более длинные (или даже огромные) таймауты, то ошибки насовсем НЕ ИСЧЕЗАЮТ.
Чем чаще обращение к модулю, тем чаще случается ошибка, это факт.
Если я считываю 8 раз по 6 регистров, то вероятность ошибки в 8 раз больше (это грубо, на самом деле это я не проверял), чем если считываю все 48 регистров разом.
Вот по этому то я и стараюсь читать длинными последовательностями.
Но, как оказалось, МВУ8-И не может сохранять своё душевное равновесие при таких длинных обменах в сети и то и дело начинает выдавать на свои выходы непонятные конвульсии и вставляет свои возмущённые три копейки в происходящий между другими участниками обмен. )))
-
Этим страдают все модули появившиеся ранее 110 серий, скорее всего для облегчегия кода не проверяется КС и иногда появляется "шанс" ответить на не свой запрос
-
RadistDog в следующий раз берите Мх110 серию, там проблема с МУ110-8И решается перепрошивкой. И ошибок связи периодических неизвестного происхождения нет.
-
Вложений: 2
МВУ8-ИУрррррр + пкл63
Всем доброго времени суток.Прошу помочь с подключением МВУ8-ИУРРРРРР к ПЛК 63.Бился долго , читал и форум и руководства , к сожаление ничего не получилось.В примерах МВУ8 не увидел.К сожалению глубины познаний не хватает для настройки обмена , а чтобы разобраться - катастрофически не хватает времени. Ранее существовала написанная программа на языке LD которая благополучно функционировала годами.Пишу только на LD.Возникла необходимость ее переделать и добавить МВУ8.Вот тут и затык.С другими ПЛК без проблем , а тут никак.Не могу даже просто включить-выключить любой из выходов МВУ8.Прошу помочь с тем , чтобы на 1-й и 2-й аналоговый выход МВУ подать произвольные значения.В последствии туда я подам свои переменные.Всю программу я не выкладываю.Здесь только попытка отослать значения на на МВУ8.
Буду очень признателен откликнувшимся.В крайнем случае готов попытаться даже разобраться с ST.Был бы только пример передачи двух чисел в выход 1 и выход 2.В аттачменте кусок программы и скрин настроек МВУ.
-
Вложений: 1
Вложение 22013
Попробуйте использовать вместо 19 индекса индексы от 0 до 7 (по выходным элементам)
-
Спасибо , это я уже пробовал ранее с 0 по 7.Не работает.
Да , и еще вот что.С этой программой контроллер сам перезагружается с периодичностью в несколько минут.
-
С МДВВ использовав пример с форума все получается.По крайней мере сеть работает и срабатывают выхода.Теперь бы одолеть МВУ.Только примеров вот не нашел.
-
Вложений: 1
протестировали проект.
1) проверьте не установлена ли в модуле перемычка заводских сетевых настроек
2) в программе скорее всего вы вызывали функцию записи не контролируя , закончила ли она работу, что приводило к повисанию контроллера и перезагрузке по сторожевому таймеру.
модифицировали программу в варианте, когда запись начинается сразу после окончания предыдущей. посмотрите как сделано это без блинк ФБ.
3) в модуле индексация параметра r.oe не используется. номер выхода определяется адресом , по которому обращаетесь с ПЛК к модулю.
например для обращения к первому выходу используете адрес модуля 16, для второго выхода уже адрес модуля 17 ( несмотря на то, что реальный адрес модуля остаётся 16ым). индекс параметра при этом должен быть отключен , т.е. равен 16#FFFF
-
Огромнейшее спасибо!Заработало.
Поясните пожалуйста , что это за переменная "setr.Complete" и для чего она нужна?
Еще раз спасибо.
-
setr - Ваше имя функционального блока Owen_set_real.
через точку идёт обращение к выходной переменной блока Complete , которая сообщает нам о завершении работы блока. т.е. блок теперь сам себя инициирует на обмен по завершению работы