Всем добрый день.
Решил разобраться как работать по modbus через библиотеку, а не через конфигурацию. Опрос получается успешно. Читаю несколько регистров и пишу их в заранее сформированную структуру
Сюрпризом стало, что чередование байт не совпадает (как то изначально не задумывался над этим). Соответственно, чтобы получить значение переменной, например WORD, x1:=bufRead1.in_x1 не подходит, а писать к каждой переменной:Код:pRead1:=ADR(bufRead);
bufRead1:=pRead1^;
а есть ещё и DWORDы и REAL - совсем получается некрасиво. Думаю, что каждую структуру можно загнать в цикл и переставить байты местами, но вот с этим пока мне не очень понятно. Может гуру толкнут в правильном направлении?:rolleyes:Код:x1:=BYTE_TO_WORD(bufRead[20]) OR SHL(BYTE_TO_WORD(bufRead[19]),8)
P.S.
сваял такую штуку:
Где bufRead1 - структура, а pRead1, соответственно указатель на эту структуру.Код:pBuf:=ADR(bufRead);
FOR i:=0 TO 23 BY 2 DO
p:=ADR(pBuf^[i])+1;
p1:=ADR(pBuf^[i]);
p1^:=p^;
p1:=p1+1;
p:=p-1;
p1^:=p^;
i:=i+1;
END_FOR;
pRead1:=ADR(pBuf);
bufRead1:=pRead1^;
Не работает...:(
Всё, вопрос неактуален, разобрался сам.