Добрый день!
Есть небольшие проблемки с макросами и использованием GetData
Вообщем есть проект, в одном из окон кнопка, запускающая макрос (по сути он инииализирует калибровку датчика, а потом в цикле каждую секунду проверяет результат калибровки, если результат - идет калибровка то цикл идет на новую петлю, если закончена калибровка то выход)
- Код: Выделить всё
while(calibrating)
GetDataEx(is_calibrating, "MODBUS TCP/IP (Ethernet)", "MMLIQ_zero_in_progress", 1) // запрашиваем статус калибровки
GetError(Err)
SetData(err, "Local HMI", "ErrorCode", 1)
if Err==0 then
if is_calibrating==16384 then // статус -- идет калибровка
state_zeroing=2
else //если другой статус -- выходим из макроса присвоив переменной calibrating=false
calibrating=false
state_zeroing=0
end if
SetData(state_zeroing, "Local HMI", "State_Zero_MMLIQ", 1)
end if
cycles=cycles+1
if cycles > zero_time then //если время выполнения макроса превысило заданное значение то выход из макроса
calibrating=false
end if
DELAY(1000)
wend
Если применить этот код то мгновенно происходит выход из цикла, и макрос продолжает работу после
while по сути записывает успешный результат и завершается, хотя должен выполняться секунд 30, GetError возвращает 0
Если использовать вместо GetDataEx(is_calibrating, "MODBUS TCP/IP (Ethernet)", "MMLIQ_zero_in_progress", 1) --> // GetData(is_calibrating, "MODBUS TCP/IP (Ethernet)", "MMLIQ_zero_in_progress", 1), то в принципе работает если связь стабильна, но я так полагаю в случае неверного чтения макрос попросту вылетает или зависает, т.е. его выполнение останавливается.
Может кто нибудь сталкивался?
З.Ы. Поиском по форуму искал нашел несколько сообщений со схожей проблемой, но решения так и не нашел.