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

Тема: невероятно медленный опрос модулей МВ110-220.8АС

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

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

    По умолчанию

    Вот несколько в сокращенном виде, для целых регистров и для не АС, но суть одна

    Код:
    IF ComPortState = 2 THEN
    	IF NOT EndSendStored THEN
    		CASE Stage OF
    			1:	SendModbus4(
    				Enable:= ES,
    				Mode:= MB_RTU,
    				DevAddr:= 1,
    				FirstAddr:= 1,
    				Quantity:= 43,
    				ComHandle:= Settings.Port,
    				TimeOut:= Timeout,
    				Buffer:= Buffer);
    				IF SendModbus4.Complete THEN
    					EndSendStored:=TRUE;
    					ErrorSend4[1]:= SendModbus4.Exception;
    					IF ErrorSend4[1] = 0 THEN
    						AHU_Press:= Buffer[0]*256 + Buffer[1];
    						EF_Press:= Buffer[12]*256 + Buffer[13];
    						Water_Temp:= Buffer[24]*256 + Buffer[25];
    						Prom_Air_Temp:= Buffer[36]*256 + Buffer[37];
    					ELSE
    						EndSendError:= TRUE;
    						Stage:= 2;
    					END_IF;
    				END_IF;
    			2:	SendModbus4(
    				Enable:= ES,
    				Mode:= MB_RTU,
    				DevAddr:= 2,
    				FirstAddr:= 1,
    				Quantity:= 43,
    				ComHandle:= Settings.Port,
    				TimeOut:= Timeout,
    				Buffer:= Buffer);
    				IF SendModbus4.Complete THEN
    					EndSendStored:=TRUE;
    					ErrorSend4[2]:= SendModbus4.Exception;
    					IF ErrorSend4[2] = 0 THEN
    						iAHU2_Water:= Buffer[0]*256 + Buffer[1];
    						iAHU2_Temp:= Buffer[48]*256 + Buffer[49];
    						iAHU3_Water:= Buffer[12]*256 + Buffer[13];
    						iAHU3_Temp:= Buffer[60]*256 + Buffer[61];
    						iAHU4_Water:= Buffer[24]*256 + Buffer[25];
    						iAHU4_Temp:= Buffer[72]*256 + Buffer[73];
    						iAHU5_Water:= Buffer[36]*256 + Buffer[37];
    						iAHU5_Temp:= Buffer[84]*256 + Buffer[85];
    					ELSE
    						EndSendError:= TRUE;
    						Stage:= 4;
    					END_IF;
    				END_IF;
    ...
    		END_CASE;
    		ES:= FALSE;
    	ELSE
    		IF EndSendError THEN
    			EndSendError:= FALSE;
    			ES:= TRUE;
    			EndSendStored:= FALSE;
    		ELSE
    			HavePause(IN:= EndSendStored,PT:=T#40ms);
    			IF HavePause.Q THEN
    				ES:= TRUE;
    				EndSendStored:= FALSE;
    				IF Stage >= 34 THEN
    					Stage:= 1;
    				ELSE
    					Stage:= Stage+1;
    				END_IF;
    			END_IF;
    		END_IF;
    	END_IF;
    	HavePause(IN:= EndSendStored,PT:=T#30ms);
    END_IF;
    Последний раз редактировалось ASo; 29.06.2021 в 11:10.

Похожие темы

  1. Опрос модулей МВ110-хх
    от Antonio-oz в разделе Мх110
    Ответов: 2
    Последнее сообщение: 14.12.2019, 14:49
  2. Ответов: 2
    Последнее сообщение: 13.03.2015, 01:00
  3. Ответов: 5
    Последнее сообщение: 20.02.2013, 01:44
  4. Опрос несколько модулей МВ110 через лектус
    от llx89 в разделе Эксплуатация
    Ответов: 5
    Последнее сообщение: 20.02.2013, 01:44
  5. Ответов: 9
    Последнее сообщение: 17.03.2011, 05:48

Ваши права

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