Добрый день! Подскажите, пожалуйста, как сформировать буфер для записи значений WORD в МУ110-8И с помощью библиотеки modbus.lib. С записью битовой маски проблем нет, но записать 6 значений WORD возникли проблемы.

Уважаемые разработчики могли бы и выложить РАБОЧИЕ примеры чтения/записи значений по modbus для Мх110
PHP код:
FUNCTION_BLOCK mbus_set
VAR_INPUT
    In
:BOOL:=FALSE;
    
Dev_adr:BYTE;
    
Start_reg:WORD;
    
TimeOutTIME;    
    
Polling_Time:TIME;        

    
y1:WORD
    
y2:WORD
    
y3:WORD
    
y4:WORD
    
y5:WORD
    
y6:WORD
END_VAR
VAR_OUTPUT
    Ready
:BOOL:=FALSE;
    
errWORD;
END_VAR
VAR
        
com_numPORTS;                            
    
SettingsCOMSETTINGS;                    
    
COM_SERVICE1COM_SERVICE;            
    
com_readyBOOL;                        
    
buffer: ARRAY [0..255OF BYTE;
    
set_modbus:MB_WR_REGS;
    
stat :WORD;
    
rt:R_TRIG;
    
y:WORD;
    
timer:TON;
    
ptr_byte:POINTER TO BYTE;
    
rt_in:R_TRIG;

    
y1_old:WORD
    
y2_old:WORD
    
y3_old:WORD
    
y4_old:WORD
    
y5_old:WORD
    
y6_old:WORD

END_VAR 
PHP код:
rt_in(CLK:=IN);

IF 
rt_in.Q THEN
    stat
:=0;
    
Ready:=FALSE;
    
err:=0;
    
com_ready:=FALSE;
END_IF
IF  IN=TRUE THEN

    
    
IF COM_SERVICE1.ready=FALSE THEN
    
        com_num
:=0;
    
        
Settings.Port:=com_num;
        
Settings.dwBaudRate:=115200;
        
Settings.byParity:=0;
        
Settings.dwTimeout:=0;
        
Settings.byStopBits:=0;
        
Settings.dwBufferSize:=0;
        
Settings.dwScan:=0;
    
        
COM_SERVICE1(Enable:=TRUE Settings:=Settings Task:=OPEN_TSK  );
        
com_ready:=FALSE;
    ELSE
        
COM_SERVICE1.Enable:=FALSE;
        
com_ready:=TRUE;
    
END_IF


    
IF com_ready=TRUE THEN

        
CASE stat OF

0
:
Ready:=FALSE;
set_modbus(
    
Enable:=TRUE ,
    
Mode:=MB_RTU ,
    
DevAddr:=Dev_adr,
    
FirstAddr:=Start_reg,
    
Quantity:=6,
    
ComHandle:=Settings.Port ,
    
TimeOut:=TimeOut ,
    
Buffer:=buffer ,
    
Complete=> ,
    
Exception=> , 
    
RegCnt=> );

IF 
set_modbus.Complete THEN

    ptr_byte
:=ADR(y1_old);
       
ptr_byte^:=buffer[0] ;
buffer[1] :=WORD_TO_BYTE (y2_old);
buffer[2] := WORD_TO_BYTE(y3_old);
buffer[3] := WORD_TO_BYTE(y4_old);
buffer[4] := WORD_TO_BYTE(y5_old);
buffer[5] := WORD_TO_BYTE(y6_old);


set_modbus(
    
Enable:=FALSE ,
    
Mode:=MB_RTU ,
    
DevAddr:=Dev_adr,
    
FirstAddr:=Start_reg,
    
Quantity:=6,
    
ComHandle:=Settings.Port ,
    
TimeOut:=TimeOut ,
    
Buffer:=buffer ,
    
Complete=> ,
    
Exception=> , 
    
RegCnt=> );
stat:=1;
END_IF
    1
:
            
timer(IN:=TRUE PT:=Polling_Time );
            
timer;
            
stat:=2;
        
2:
            
timer;
            IF 
timer.Q THEN
                timer
(IN:=FALSE PT:=Polling_Time );
                
timer;
                
stat:=0;
                
Ready:=TRUE;
            
END_IF

        END_CASE
    
    END_IF


END_IF
;
y1_old:=y1;
y2_old:=y2;
y3_old:=y3;
y4_old:=y4;
y5_old:=y5;
y6_old:=y6