Очень нужна помощь.
Ремонтирую чужой проект.
Методом научного тыка нашёл ошибку в макросе:
- Код: Выделить всё
- macro_command main()
bool IDU_OK
short IDU_NUM, OFFSET, RTU_START_ADDR, LW_START_ADDR, RTU_START_IDU_OK, values[25], i, RTU_LEN
RTU_LEN = 23
OFFSET = 25
RTU_START_ADDR = 102 //Words
RTU_START_IDU_OK = 120 //Bits
LW_START_ADDR = 1
//GET IDU_NUM
GetDataEx(IDU_NUM, "Local HMI", LW, 650, 1)
//CHECK IF CONNECTION IS OK
GetDataEx(IDU_OK, "GC_gateway", 0x, RTU_START_IDU_OK + (IDU_NUM - 1), 1)
SetDataEx(IDU_OK, "Local HMI", LB, 650, 1)
if IDU_OK then
GetDataEx(values[0], "GC_gateway", 4x, RTU_START_ADDR + (IDU_NUM - 1)*OFFSET , RTU_LEN)
else
for i=0 to RTU_LEN
values[i] = 0
next i
end if
SetDataEx(values[0], "Local HMI", LW, LW_START_ADDR, RTU_LEN)
//TO
SetDataEx(IDU_NUM, "Local HMI", LW, 680, 1)
end macro_command
Участки кода RTU_START_IDU_OK + (IDU_NUM - 1) и RTU_START_ADDR + (IDU_NUM - 1)*OFFSET не работают, при любых значениях IDU_NUM получается ноль.
Подскажите, в чём засада?