Привет. Может, кому пригодится. Просидел несколько часов, пытаясь побороть вылетающее исключение.
В журнале написано следующее:
*SOURCEPOSITION* App=[Application] area=0, offset=1877235 компонент: CmpIecTask
*EXCEPTION* [AccessViolation] occured: App=[Application], Task=[VISU_TASK] компонент: CmpIecTask
Дело было вот в чём: у меня в группе тревог есть сообщения типа "Контактор компонента <LATCH1> залип", первая триггерная переменная указана просто числом.
Мне так было проще - на надо лезть в исправление строки, чтоб изменить номер контактора.
Выглядело это следующим образом:
Monosnap BlueOhuentaOOP.project_ - CODESYS 2025-05.png
И всё работало нормально, пока на отладке я не обратил внимание, что иногда программа падает в исключение и завершается.
Постепенно я дошёл до того, что исключение проявляется только при тревоге по первому контактору.
Попробовал заменить "Контактор компонента <LATCH1> залип" на "Контактор компонента 1 залип" и убрать единицу из первой триггерной переменной - всё стало работать без падений.
Предполагаю, что система воспринимает единицу не как единицу, а как какой-нибудь TRUE, не понимает, что с этим делать, и, матерясь, умирает.
Такие вот дела. Может, кому-то сэкономит нервов.
З.Ы.: я видел ролик на канале Евгения про тревоги однотипных объектов, но даже не стал проверять - работает ли это на 3.5.5.0. Для семи объектов набросал вручную. Хотел ускориться за счёт лэтчей - потерял несколько часов![]()