Показано с 1 по 10 из 76

Тема: Вопрос по библиотеке Modbus.lib

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию Вопрос по библиотеке Modbus.lib

    Здравствуйте!

    Решил попробовать эту библиотеку для организации сетевого обмена. Модули у меня МДВВ.
    Подключил два модуля - читать их получается, а вот записать в регистры нет.
    Блок MB_WR_REGS выдает ошибку 3:
    Безымянный.png

    Мой код:
    Раздел описания:
    Код:
    FUNCTION_BLOCK Comm
    VAR_INPUT
    END_VAR
    VAR_OUTPUT
    END_VAR
    VAR
    	ModbusAdrDi11,ModbusAdrDi12: MB_RD_HOLD_REGS;   
           ModbusAdrDo11,ModbusAdrDo12:MB_WR_REGS;
    
    	BufferIN: ARRAY[0..255] OF BYTE;		
            BufferOUT: ARRAY[0..255] OF BYTE;		
         	cmpl: BOOL;
    	port_opened:  BYTE := 0;
    	Init: BOOL;							
    	Settings:COMSETTINGS;			
          	com_num: PORTS:=0;				
    	enabl: BOOL;						
    
    	Error, ErrorDI11,ErrorDO11,ErrorDI12,ErrorDO12: INT;						
    	TimeOut: TIME:=T#100ms;			
    	Exception: BYTE;
    	DataSize: WORD;
    	master1: BYTE:= 1;
    
            WordAdr11,WordAdr12:WORD;
    
    	COM_SERVICE1: COM_SERVICE;
    
    END_VAR
    код:
    Код:
              IF port_opened=0
                  THEN
    		           Settings.Port:=com_num;               
    		           Settings.dwBaudRate:=115200;    
    		           Settings.byParity:=0;
    		           Settings.dwTimeout:=0;
    		           Settings.byStopBits:=0;
    		           Settings.dwBufferSize:=0;
    		           Settings.dwScan:=0;
              END_IF
    
              COM_SERVICE1(Enable:=(port_opened=0) , Settings:=Settings , Task:=OPEN_TSK  );
    
    
               IF COM_SERVICE1.ready THEN  port_opened:=2; END_IF
               IF port_opened=2 THEN 
    
              CASE master1   OF
                         0: 
                              ModbusAdrDi11(
    	                                                 Enable:=enabl ,			
    	                                                 Mode:=MB_RTU ,		
    	                                                 DevAddr:=11 ,			
    	                                                 FirstAddr:=51 ,			
    	                                                 Quantity:=1,			
    	                                                 ComHandle:=Settings.Port , 
    	                                                 TimeOut:=TimeOut , 		
    	                                                 Buffer:=BufferIN ,		
    	                                                 Complete=>cmpl ,		
    	                                                 Exception=>ErrorDI11 ,			
    	                                                 ByteCnt=>DataSize );		
                             
                             IF cmpl 
                                THEN
    	                           IF ErrorDI11=0 
                                          THEN  
    		                              WordAdr11:=BYTE_TO_WORD(BUFFERIN[1]) OR SHL(BYTE_TO_WORD(BUFFERIN[0]),8);
    	                           END_IF
    	                           master1:=1; 
                             END_IF
    
                         1: 
                              ModbusAdrDi12(
    	                                                 Enable:=enabl ,			
    	                                                 Mode:=MB_RTU ,		
    	                                                 DevAddr:=12 ,	
    	                                                 FirstAddr:=51 ,				
    	                                                 Quantity:=1,				
    	                                                 ComHandle:=Settings.Port , 
    	                                                 TimeOut:=TimeOut , 		
    	                                                 Buffer:=BufferIN ,		
    	                                                 Complete=>cmpl ,		
    	                                                 Exception=>ErrorDI12 ,			
    	                                                 ByteCnt=>DataSize );		
                             
                             IF cmpl THEN
    	                                   IF ErrorDI12=0 
                                                   THEN 
    		                                      WordAdr12:=BYTE_TO_WORD(BUFFERIN[1]) OR SHL(BYTE_TO_WORD(BUFFERIN[0]),8);
    	                                   END_IF
    	                  master1:=2; 
                             END_IF
    
                         2: ModbusAdrDO11(
    	                                                  Enable:= enabl,
    	                                                  Mode:= MB_RTU,
    	                                                  DevAddr:= 11,
    	                                                  FirstAddr:= 50,
    	                                                  Quantity:= 1,
    	                                                  ComHandle:= Settings.Port,
    	                                                  TimeOut:= TimeOut,
    	                                                  Buffer:= BufferOUT,
    	                                                  Complete=> cmpl,
    	                                                  Exception=> ErrorDO11,
    	                                                  RegCnt=> DataSize);
                             
                             IF cmpl THEN
                                                      master1:=0; 
                             END_IF
              END_CASE
    
    IF  enabl = FALSE THEN
     	enabl := TRUE;
    END_IF(*
    IF ErrorDI11<> 0 OR ErrorDI12<> 0 OR ErrorDO11<> 0 OR ErrorDO12<> 0 THEN
     	enabl := FALSE;
    END_IF
    *)
    END_IF
    Что я делаю неправильно, и как записать байт в регистр мдвв??
    Объясните пожалуйста зачем в блоке MB_WR_REGS вход buffer имеет тип данных ARRAY[0..255] OF BYTE;
    Последний раз редактировалось a_gricaj; 17.09.2016 в 21:16.

Похожие темы

  1. Еще раз о библиотеке SysLibSockets
    от dudanov в разделе ПЛК1хх
    Ответов: 52
    Последнее сообщение: 28.01.2015, 15:41
  2. По библиотеке UNM
    от Сергей Мих в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 25.04.2012, 23:06
  3. Вопрос по библиотеке UNM
    от askpify в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 31.10.2009, 23:50
  4. По Овеновской библиотеке PID ?
    от mar154 в разделе ПЛК1хх
    Ответов: 5
    Последнее сообщение: 28.10.2008, 12:32

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •