Всем добрый день.
Решил разобраться как работать по modbus через библиотеку, а не через конфигурацию. Опрос получается успешно. Читаю несколько регистров и пишу их в заранее сформированную структуру
Сюрпризом стало, что чередование байт не совпадает (как то изначально не задумывался над этим). Соответственно, чтобы получить значение переменной, например WORD, x1:=bufRead1.in_x1 не подходит, а писать к каждой переменной:Код:pRead1:=ADR(bufRead); bufRead1:=pRead1^;
а есть ещё и DWORDы и REAL - совсем получается некрасиво. Думаю, что каждую структуру можно загнать в цикл и переставить байты местами, но вот с этим пока мне не очень понятно. Может гуру толкнут в правильном направлении?Код: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^;
Не работает...
Всё, вопрос неактуален, разобрался сам.




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