Так мы не против , Евгений , только примерчик ваш :

1: (* функция 16 - запись параметров типа Int (регистр 4) и Real (регистр 6) в прибор с адресом 2 *)
(*запись в буффер параметра типа INT*)
Buffer[1] := DINT_TO_BYTE(f1);
Buffer[0] := DINT_TO_BYTE( SHR(f1,8));
Buffer[3] := DINT_TO_BYTE( SHR(f1,16));
Buffer[2] := DINT_TO_BYTE( SHR(f1,24));

(*запись в буффер параметра типа Float*)
ptr_f2:=ADR(f2);
buffer[5] := ptr_f2^;
ptr_f2:=ptr_f2+1;
buffer[4] := ptr_f2^;
ptr_f2:=ptr_f2+1;
buffer[7] := ptr_f2^;
ptr_f2:=ptr_f2+1;
buffer[6] := ptr_f2^;

send2_modbus(
Enable:= enabl, (* разрешение работы блока *)
Mode:=MB_ASCII , (*режим передачи*)
DevAddr:=2 , (*адрес*)
FirstAddr:= 4, (*номер регистра*)
Quantity:= 4, (*количество записываемых регистров*)
ComHandle:=Settings.Port ,(*номер сом-порта*)
TimeOut:=TimeOut , (*таймаут T#50ms*)
Buffer:=Buffer , (* буфер данных *)
Complete=>cmpl , (* скопировать признак завершения операции *)
Exception=>err , (* скопировать регистр ошибок *)
RegCnt=> DataSize); (*кол-во считанных байтов *)
(*если установлен признак завершения операции, то *)
IF cmpl THEN
master1:=0;(*переходим к выполнению следующего блока*)
END_IF

END_CASE

IF enabl = FALSE THEN
enabl := TRUE;
END_IF
IF err <> 0 THEN
enabl := FALSE;
END_IF

Кто примеры пишет и ни фига не проверяет , а если проверяет то плохо ???
10 лет уже ПЛКшки выпускаете , а вилы и грабли все те-же , только понтов не меряно.
И описания для библиотек вместе (в одном месте!!!)с библиотеками и примерами нормальными не только на форуме должны быть , а на Оф.сайте в соответствующем и !!! легко находимом разделе .
А то шаришся по форуму , который похож сейчас на птичий базар , только что какашки не летят...
Щас тема подзатеряется и ... опять тот - же вопрос , те-же вилы,грабли...надоело!