Заметил, что в секции CATCH используется идентификатор компонента, который удаляется в секции TRY.
Попробовал, вариант, где в секции CATCH сообщения пишутся по нулевому идентификатору (в этом случае сообщения регистрируются как сообщения от компонента "СМ"):
В коде выше udiBaseID = 0.Код:IF DelCmp THEN DelCmp := FALSE; DelCntr := DelCntr + 1; LogAdd2(LOG_STD_LOGGER, udiCmpID,CmpLog.LogClass.LOG_WARNING, CmpErrors.Errors.ERR_FAILED, 1,'Deleting Component'); IF NOT UseTC THEN dwResult := Component_Manager.CMRemoveComponent(pCmp); ELSE __TRY dwResult := Component_Manager.CMRemoveComponent(pCmp); __CATCH(Exec) strTemp := concat('IN CATCH SECTION! Deleting Component ERROR:',UDINT_TO_STRING(Exec)); LogAdd2(LOG_STD_LOGGER, udiBaseID,CmpLog.LogClass.LOG_WARNING, CmpErrors.Errors.ERR_FAILED, 1, strTemp); __ENDTRY END_IF END_IF
Но поведение системы не изменилось, т.е. так же "зависает".




Ответить с цитированием