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

Тема: Подскажите где ошибка в использовании библиотеки Modbus

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

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

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    начните с 4 мс и добавляйте по одной пока связь не появится. Можно еще вместо паузы записать что нибудь не существенное, потом вернутся к чтению, тоже помогает
    Добавление таймера (задержка 1 секунда) ситуацию не изменило:
    Код:
    IF ComServiceCOM2.Ready THEN 
    	
    	CASE Step OF
        
        0:  IF MV110_8ABoks1 THEN Step:=1; ELSE Step:=2;END_IF
    	1:	TON(IN:= Step=1, PT:=T#1000MS , Q=> Enable, ET=> );
    	    MV110_8aAdr5(
    	                    Enable:= Enable, 
    	                    Mode:= MB_RTU, 
    	                    DevAddr:= 5, 
    	                    FirstAddr:= 0, 
    	                    Quantity:= 47, 
    	                    ComHandle:= ComServiceCOM2.Handle, 
    	                    TimeOut:= TimeOut, 
    	                    Buffer:= Buffer, 
    	                    Complete=> Complete, 
    	                    Exception=> ErrorMV110_8aAdr5, 
    	                    ByteCnt=> DataSize);
    	    IF Complete  (*если установлен признак завершения операции, то *)
               THEN
    	           IF ErrorMV110_8aAdr5=0 THEN BufferDataM1AI:=Buffer;END_IF
    	           IF ErrorMV110_8aAdr5<>0 AND AlarmMV110_8aAdr5=FALSE THEN AmountMV110_8aAdr5:=AmountMV110_8aAdr5+1; ELSE AmountMV110_8aAdr5:=0;END_IF
                   IF AmountMV110_8aAdr5>SetAmount THEN AlarmMV110_8aAdr5:=TRUE;END_IF
                   MV110_8aAdr5(Enable:= FALSE, Buffer:=Buffer);
    			   TON(IN:=FALSE);
    	           Step:=2; (*переходим к выполнению следующего ФБ*)
             END_IF
    	
        2:  IF MV110_8ABoks2 THEN Step:=3; ELSE Step:=4;END_IF
    	3:	TON(IN:= Step=3, PT:=T#1000MS , Q=> Enable, ET=> );
    	    MV110_8aAdr6(
    	                    Enable:= Enable, 
    	                    Mode:= MB_RTU, 
    	                    DevAddr:= 6, 
    	                    FirstAddr:= 0, 
    	                    Quantity:= 47, 
    	                    ComHandle:= ComServiceCOM2.Handle, 
    	                    TimeOut:= TimeOut, 
    	                    Buffer:= Buffer, 
    	                    Complete=> Complete, 
    	                    Exception=> ErrorMV110_8aAdr6, 
    	                    ByteCnt=> DataSize);
    	    IF Complete  (*если установлен признак завершения операции, то *)
               THEN
    	           IF ErrorMV110_8aAdr6=0 THEN BufferDataM2AI:=Buffer;END_IF
    	           IF ErrorMV110_8aAdr6<>0 AND AlarmMV110_8aAdr6=FALSE THEN AmountMV110_8aAdr6:=AmountMV110_8aAdr6+1; ELSE AmountMV110_8aAdr6:=0;END_IF
                   IF AmountMV110_8aAdr6>SetAmount THEN AlarmMV110_8aAdr6:=TRUE;END_IF
                   MV110_8aAdr6(Enable:= FALSE, Buffer:=Buffer);
    			   TON(IN:=FALSE);
    	           Step:=4; (*переходим к выполнению следующего ФБ*)
             END_IF
    	
        4:  IF MV110_2AC THEN Step:=5; ELSE Step:=6;END_IF
    	5:	TON(IN:= Step=5, PT:=T#1000MS , Q=> Enable, ET=> );        
    	    MV110_8acAdr7(
    	                    Enable:= Enable, 
    	                    Mode:= MB_RTU, 
    	                    DevAddr:= 100, 
    	                    FirstAddr:= 264, 
    	                    Quantity:= 6, 
    	                    ComHandle:= ComServiceCOM2.Handle, 
    	                    TimeOut:= TimeOut, 
    	                    Buffer:= Buffer, 
    	                    Complete=> Complete, 
    	                    Exception=> ErrorMV110_2acAdr7, 
    	                    ByteCnt=> DataSize);
    	    IF Complete  (*если установлен признак завершения операции, то *)
               THEN
    	           IF ErrorMV110_2acAdr7=0 THEN BufferDataM3AI:=Buffer;END_IF
    	           IF ErrorMV110_2acAdr7<>0 AND AlarmMV110_2acAdr7=FALSE THEN AmountMV110_8acAdr7:=AmountMV110_8acAdr7+1; ELSE AmountMV110_8acAdr7:=0;END_IF
                   IF AmountMV110_8acAdr7>SetAmount THEN AlarmMV110_2acAdr7:=TRUE;END_IF
                   MV110_8acAdr7(Enable:= FALSE, Buffer:=Buffer);
    			   TON(IN:=FALSE);
    	           Step:=6; (*переходим к выполнению следующего ФБ*)
             END_IF
    	6:   Step:=0;	
    	     Enable:=FALSE;
    	END_CASE
    END_IF
    Варианты кончились....., осталась только прошивка модуля......
    Последний раз редактировалось a_gricaj; 27.12.2016 в 15:56.

Похожие темы

  1. Ошибка библиотеки IoDrvModbusBase
    от Андрей Плеханов в разделе СПК2хх
    Ответов: 26
    Последнее сообщение: 05.02.2024, 09:46
  2. Ответов: 13
    Последнее сообщение: 10.02.2020, 13:34
  3. Таймаут при использовании ModBus.lib
    от Vasily777 в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 23.10.2016, 15:32
  4. Ответов: 7
    Последнее сообщение: 14.07.2016, 16:24
  5. Ошибка библиотеки ПЧВ
    от GTS в разделе ПЛК1хх
    Ответов: 11
    Последнее сообщение: 25.11.2015, 08:27

Ваши права

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