Спасибо Валенок! Через косвенную &PSW[710] сработало!
Причем одновременно и "на прямую" и через макрос с одного регистра слэйва читает без ошибок в разные поля.
Остальные примеры\советы не работают. Но спасибо всем неравнодушным!
Ну-уж извините дальше больше дров (-: Нужно в поле записать сумму, в слэйве один рег. целое число, другой рег. дробная часть в формате флоат.
Все вместе как ххх,ххх счетчика расходомера.
Read (PLC, 1, MODBUS_RTU_REG_3X, 32802, 0, TYPE_DWORD, &PSW[310]); //Float в слэйве
Read (PLC, 1, MODBUS_RTU_REG_3X, 32800, 0, TYPE_DWORD, &PSW[312]); //Integer в слэйве
Как понимаю финт ушами типа PSW[320]=PSW[310]+PSW[312] не прокатит, проверить на текущий момент нет возможности, только через пару дней.
Вероятно надо использовать преобразование (*(float*)&(dw)) т.е. типа так?
float TempFloat; //переменная в донном случае нужна?
PSW[320] = (*(float*)&(PSW[312])) //в хелпе ни ни ни примера )-: преобразуем дворд в флоат.
PSW[322] = PSW[320] + PSW[310] // сложение двух "флоатов"
Ну и после, полем забираем сумму из PSW[322] Так получится?
[И перепишите дефективный (аж 1000) таймаут в нормальные 20..50мс. В РП всё есть.]
Вот этот момент не понял. Функц-я обл. как "Непрерывно" или что то другое?


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