В PLC_PRG разбить вообще всё на 1 общий автомат
Вложить его в бесконечный цикл
Для кусков кода со 100% увереностью в норме - exit (именно exit) в конце шага
Для подозрительных кусков кода/вызовов делать:
-доп.предварительный шаг с сохранением значения шага в ретайн-ловушке и строго return
-выполнять этот кусок с exit (или return - по желанию)
-доп.последующий шаг со сбросом ловушки с строго return
//возможно что 2 и 3 можно объеденить - но нужно проверять
При запуске, если ловушка есть - как-то показывать её значение и ничего не делать до принуд сброса ловушки
Из самого последнего шага - return, само собой
//Аля МЭК поверх МЭК с фиксацией ошибки до принуд сброса
Нудно противно, но чем чаще ошибка появляется, тем быстрее и чётче локализуете ошибку.
Мин цикл 1мс ессно, а не эти левые 20мс
С таймаутом в 150мс - не занимайтесь хренью. ПР, 9600, 1 регистр - 35..40мс за глаза. Если б 115200 - 15..20
Было б странно. Это всё - протирка фар и стучание по колесу.
Последний раз редактировалось Валенок; 27.03.2025 в 20:00.
А нет ли там кривой обработки данных? Ну например, выхода за границы массивов или циклов?
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab
У меня на другом ПЛК154 этот код работает нормально, с мин циклом 1 мс. 1 Работа проекта.jpg На скорости 9600, тайм-аут 100мс
Поменял только Settings.byStopBits:=0; Ноль - это 1 стоп бит
Проработал почти 1,5 часа без проблем
И этот тоже работает 1 ПЛК_73.jpg 115200, 8N1, мин цикл 1 мс
Последний раз редактировалось kondor3000; 27.03.2025 в 22:09.
Ну ну. Проблема не в этом. Просто нашли костыль с которым вроде бы заработало.Проблема была в этом,
Но коли устроило - то и ладно.
--
Каким боком какая-то настройка связи может привести к зависанию? Не ошибкам связи а именно к зависанию? Но это глубоко копать, да.