Всё читается по Modbus-у. Но, как я и писал, в один канал попадают 16-битные данные старшего, а в другой — младшего разрядов. Нужно провести конкатенацию двоичных чисел и записать результат в дорасчётный канал, содержащий 32-битное значение.
Вообще речь об опросе частотника Danfoss Microdrive. Для оптимизации трафика (через GSM) хочу запросы объединить в один пакет. Но, т.к. адресация необходимых мне параметров не смежная, приходится каждый параметр опрашивать индивидуально, а их 10 шт.
Для решения подобной задачи в частотниках (Danfoss, ОВЕН) имеется параметр 8-43 «Конфигурирование чтения PCD порта», куда забиваются номера нужных вам опрашиваемых параметров из списка. Всё прекрасно работает для опроса 16-битных параметров. Для 32-битных приходится адресовываться к старшему и младшему словам. Вот так как-то.
Добавляете в справочник формулы, функцию можете по своему назвать, не JoinDword а например просто Dword — public double Dword (double lowword, double hiword) например.
Вызов в дорасчетном канале, первая переменная младшее слово, вторая старшее слово.
А вообще все равно не понял. Если вы в PCD накидываете нужные регистры и это позволяет сделать групповой опрос разбросанных регистров (что-то вроде буфера промежуточного как понимаю), то далее за счет группового запроса вы так же драйвером можете настроить что два соседних регистра это 32-х битная переменная.
— ага, как бы не так. Ошибка выходит при опросе регистров 29-10 — 29хх.
В PCD в соседние индексы вписываю один и тот-же № параметра.
Кстати, после обесточивания частотника данные настройки обнуляются. Дабы такого не происходило, нужно послать «1» по десятичному адресу 65 кода функции 5 (может кому-то это пригодится).