это мой первый вопрос здесь, в stackoverflow, и я надеюсь, что кто-то сможет мне помочь. Я пытаюсь получить локальный AmsNetId моей системы TwinCat PLC. Код работает в системе TwinCat локально. Функция работает корректно, проблем с компиляцией нет. Но функциональный блок FB_GetLocalAmsNetId никогда не возвращает идентификатор сети Ams. fbGetAmsNetId.bBusy всегда занят. Я не знаю, что я делаю неправильно.
Переменные:
FUNCTION_BLOCK FB_GetAmsNetId
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
fbGetAmsNetId : FB_GetLocalAmsNetId;
bRequestStarted : BOOL := FALSE;
sAmsNetId : T_AmsNetId;
END_VAR
Программный код:
IF(bRequestStarted = FALSE) THEN
fbGetAmsNetId(bExecute := TRUE, tTimeOut := T#2S);
bRequestStarted := TRUE;
ELSE
IF(NOT fbGetAmsNetId.bBusy) THEN
sAmsNetId := fbGetAmsNetId.AddrString;
fbGetAmsNetId.bExecute := FALSE;
bRequestStarted := FALSE;
END_IF
END_IF