День добрый!
Пытаюсь архивировать данные с помощью МДС200. ПЛК110-60 - Master, МСД200 - Slave. Протокол - ModBus RTU. Использую все 64 канала, типы данных везде одинаковые Int16 Big-endian. Адресация первого 0х0000, второго 0х0001 и т.д. до 0х063.

красное все т.к. когда делал скриншот прибор не был подключен.
Для отправки данных использую ModBus.lib
PHP код:
(*таймер разрещающий отправку раз в 10 сек, стартует заново после получения cmpl*)
***
(*присвоение значений переменным для архивации*)
***
(*Запаковка в буфер данных, всего 128 байтов*)
Buffer[1] := INT_TO_BYTE(m_temp_suct_1);
Buffer[0] := INT_TO_BYTE( SHR(m_temp_suct_1,8));
Buffer[3] := INT_TO_BYTE(m_temp_suct_2);
Buffer[2] := INT_TO_BYTE( SHR(m_temp_suct_2,8));
***
(*Работа с передачей данных*)
(*Устанавливаем настройки COM-порта*)
IF port_opened=0 THEN
Settings.Port:=com_num; (*номер COM-порта*)
Settings.dwBaudRate:=115200; (*скорость*)
Settings.byParity:=0;
Settings.dwTimeout:=0;
Settings.byStopBits:=1;
Settings.dwBufferSize:=0;
Settings.dwScan:=0;
END_IF
(*Открываем COM-порт*)
COM_SERVICE1(Enable:=(port_opened=0) , Settings:=Settings , Task:=OPEN_TSK );
(*Если COM-порт открыт, то переходим к приему и передачи данных *)
IF COM_SERVICE1.ready THEN
port_opened:=2;
END_IF
IF port_opened=2 THEN (*Удачно проинициализировали*)
send2_modbus(
Enable:= enabl, (* разрешение работы блока *)
Mode:=MB_RTU , (*режим передачи*)
DevAddr:=16 , (*адрес*)
FirstAddr:= 0, (*номер регистра*)
Quantity:= 64, (*количество записываемых регистров*)
ComHandle:=Settings.Port ,(*номер сом-порта*)
TimeOut:=TimeOut , (*таймаут T#50ms*)
Buffer:=Buffer , (* буфер данных *)
Complete=>cmpl , (* скопировать признак завершения операции *)
Exception=>err , (* скопировать регистр ошибок *)
RegCnt=> DataSize); (*кол-во считанных байтов *)
END_IF
IF cmpl THEN enabl:=FALSE; cmpl:=FALSE; END_IF
В итоге пишутся только первые 10 регистров. Если изменить кол-во регистров для записи до 10 и ниже то записывается столько сколько надо. А все что больше 10-ти не пишется. Если изменить начальный регистр на отличный от 0, то все равно записываются регистры начиная с 0-го.
Как записать все 64 регистра за раз? Про способ настроить по другому не надо, интересует именно этот.
При этом если, видимо, была проблема со связью то в файле везде записываются "0", а так тупо записывает только 10 регистров:

Хотя пару раз проскакивало и вот такое:

И да, на скрине видны даты. 06.июнь это 6.6. На запись в регистр отправлялось значение "66", положение десятичной точки "-1". В итоге я получил календарь. Пытался решить открыв файл на флэшке, выбрав все ячейки и сменив формат на "Числовой". Не прокатило. Как решить этот вопрос?
Так же вопрос с внутренними часами. За 5 часов с момента последней синхронизации отстали на 1 час 20 минут. Это слишком много как-то. Как решить этот вопрос?
Прошивка 1.30, конфигуратор 1.0.52.1094 (последние)