Просмотр полной версии : ПЛК 73 периодически перегружается при опросе ПР110
d_dmitry
27.03.2025, 14:54
На объекте ПЛК73 опрашивает по RS485 ТРМ136, ТРМ200 все работает без проблем более года, добавил в сеть КМС-Ф1 и ПР110-24.8Д.4Р с интерфейсным модулем ПР-МИ485. Опрос идет без проблем, но контроллер начал периодически перегружаться. После долгих попыток найти проблему получилось так, что ПР110 перестало отвечать на запросы (причину не знаю, возможно какая-то неисправность, т.к. я отключал и подключал ПР-МИ485 во время работы) Проблема перезагрузки исчезла.
Дома для тестовых целей я взял другой контроллер ПЛК73 с другим реле ПР110-24.8Д.4Р с другим интерфейсным модулем ПР-МИ485, загрузил тестовую программу опроса реле по RS485, появилась та же самая проблема периодически контроллер перезагружается, Код ошибки 3.
Помогите пожалуйста разобраться в чем может быть проблема.
ПЛК73 мастером может работать только через библиотеки. Может при опросе ПР110 вы его в собаку загоняете кодом опроса ?
d_dmitry
27.03.2025, 15:19
Опрос сделан через библиотеку ModBus.lib, код опроса для всех устройств одинаковый, меняется только адрес прибора и регистр, я бы конечно копал бы код дальше, но помогает отключение ПР110, код при этом не меняется, а контроллер перестает перегружаться
kondor3000
27.03.2025, 15:24
Опрос сделан через библиотеку ModBus.lib, код опроса для всех устройств одинаковый, меняется только адрес прибора и регистр, я бы конечно копал бы код дальше, но помогает отключение ПР110, код при этом не меняется, а контроллер перестает перегружаться
Попробуйте просто тайм -аут увеличить немного (например со 100 до 150 мс) или сделать небольшую задержку между запросами (10 мс).
Возможно не совсем корректно добавили новый опрос, и временами запросы накладываются друг на друга. Распределить опросы по шагам CASE.
d_dmitry
27.03.2025, 15:41
Задержка между запросами 2 секунды у меня, а вот таймаут всего 50мс, сейчас увеличу до 150мс и буду тестировать, спасибо огромное за идею, а то уже не знал что пробовать
Тут как бы нонсенс - ну не успевает ПЛК получить ответ, и что? это ведь не повод ему перегружаться. В принципе своем, любые ошибки в линии не должны приводить к рестарту. Иначе что это за ПЛК такой? Может там в самой библиотеке Modbus какой косяк?
..., Код ошибки 3.
Помогите пожалуйста разобраться в чем может быть проблема.
Ищем описание в РП на 63/73 ) и .....
там странные слова -
82738
Может там в самой библиотеке Modbus какой косяк?
Есть. Кривой работой с открытием/закрытием порта можно завалить цикл
Можно ли кроме зацикла еще чем грохнуть? Можно. Кривой указатель/индекс и ой.
Есть ли возможность найти причину проблемы не выкладывая проекта? Да - попробуйте еще постучать по колесу и протереть фары.
d_dmitry
27.03.2025, 16:24
Ищем описание в РП на 63/73 ) и .....
там странные слова -
82738
Про вложение непонятно, оно не открывается
d_dmitry
27.03.2025, 16:28
На всякий случай код программы, дабы избежать критики, но еще раз повторю один и тот же код используется для опроса различных устройств, проблема только ПР110
d_dmitry
27.03.2025, 17:59
Увеличение таймаута до 150мс, а потом и до 200мс не помогло, увеличение максимальной длительности цикла до 3 сек (было 1сек) тоже не помогло
d_dmitry
27.03.2025, 18:22
Как у вас вообще это работает?
Вместе с ошибками, не дожидаясь окончания работы одного блока, переходите к другому чтению и записи.
Откройте любой пример и посмотрите, как это всё должно быть.
Примеры для ПЛК63/73
10) Обмен через библиотеки Modbus и OwenNet https://owen.ru/product/codesys_v2/example_program
Оно хорошо все работает, после завершения чтения по флагу reading_complete начинается отсчет паузы 2 секунды и только после этого начинается чтение следующего устройства или запись, возможно код плохо читается, но все работает.
В PLC_PRG разбить вообще всё на 1 общий автомат
Вложить его в бесконечный цикл
Для кусков кода со 100% увереностью в норме - exit (именно exit) в конце шага
Для подозрительных кусков кода/вызовов делать:
-доп.предварительный шаг с сохранением значения шага в ретайн-ловушке и строго return
-выполнять этот кусок с exit (или return - по желанию)
-доп.последующий шаг со сбросом ловушки с строго return
//возможно что 2 и 3 можно объеденить - но нужно проверять
При запуске, если ловушка есть - как-то показывать её значение и ничего не делать до принуд сброса ловушки
Из самого последнего шага - return, само собой
//Аля МЭК поверх МЭК с фиксацией ошибки до принуд сброса
Нудно противно, но чем чаще ошибка появляется, тем быстрее и чётче локализуете ошибку.
Мин цикл 1мс ессно, а не эти левые 20мс
С таймаутом в 150мс - не занимайтесь хренью. ПР, 9600, 1 регистр - 35..40мс за глаза. Если б 115200 - 15..20
Увеличение таймаута до 150мс, а потом и до 200мс не помогло, увеличение максимальной длительности цикла до 3 сек (было 1сек) тоже не помогло
Было б странно. Это всё - протирка фар и стучание по колесу.
А нет ли там кривой обработки данных? Ну например, выхода за границы массивов или циклов?
d_dmitry
27.03.2025, 19:03
Мин цикл 1мс ессно, а не эти левые 20мс
С мин циклом 1мс не будет работать чтение, есть тема на форуме, если не ошибаюсь
Из программы удалил вообще все кроме чтения одного регистра ПР110, контроллер все равно уходит в перезагрузку, не сразу, но через какое-то время
С мин циклом 1мс не будет работать чтение, есть тема на форуме,
Закрасьте эту тему фломастером. Авторам этой хрени предложите ещё раз перекодить свой код
kondor3000
27.03.2025, 19:54
С мин циклом 1мс не будет работать чтение, есть тема на форуме, если не ошибаюсь
Из программы удалил вообще все кроме чтения одного регистра ПР110, контроллер все равно уходит в перезагрузку, не сразу, но через какое-то время
У меня на другом ПЛК154 этот код работает нормально, с мин циклом 1 мс. 82743 На скорости 9600, тайм-аут 100мс
Поменял только Settings.byStopBits:=0; Ноль - это 1 стоп бит
Проработал почти 1,5 часа без проблем
И этот тоже работает 82748 115200, 8N1, мин цикл 1 мс
d_dmitry
28.03.2025, 08:17
Поменял только Settings.byStopBits:=0; Ноль - это 1 стоп бит
Проблема была в этом, огромное спасибо, kondor3000, что помогли разобраться, поменял на ноль и перезагрузки прекратились. Удивительно что проблемы вылезла наружу только с ПР110, но это к лучшему. Еще раз спасибо всем за помощь, сам бы я не нашел ошибку.
Проблема была в этом,
Ну ну. Проблема не в этом. Просто нашли костыль с которым вроде бы заработало.
Но коли устроило - то и ладно.
--
Каким боком какая-то настройка связи может привести к зависанию? Не ошибкам связи а именно к зависанию? Но это глубоко копать, да.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot