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

Тема: Прошу помощи ПЛК+МДВВ

Комбинированный просмотр

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

    По умолчанию

    подключение ожидается последовательно по RS-485 МВ110-МВ110...МВ110-ПЛК73. Не сочтите за наглость: очень нужен примерчик подключения МВ110 к ПЛК73(63) по Modbus. На форуме лишь подключение к ПЛК1ХХ нашёл.

  2. #2

    По умолчанию

    Пожалуйста. Для МДВВ, но там разница только в номерах регистров.
    Код:
    PROGRAM ExModbus
    VAR
    	SendModbus1: MB_RD_COILS;
    	SendModbus2: MB_WR_SNG_REG;
    	SendModbus3: MB_WR_SNG_COIL;
    	SendModbus4: MB_RD_HOLD_REGS;
    	SendModbus5: MB_WR_REGS;
    	ES: BOOL:= TRUE;
    	TimeOut: TIME:= T#100ms;
    	Buffer: ARRAY[0..255] OF BYTE;
    	ErrorSend1: ARRAY[1..4] OF BYTE;
    	ErrorSend2: ARRAY[1..4] OF BYTE;
    	ErrorSend3: ARRAY[1..4] OF BYTE;
    	ErrorSend4: BYTE;
    	ErrorSend5: BYTE;
    	Stage: BYTE:= 1;
    	EndSendStored: BOOL;
    	EndSendError: BOOL:= FALSE;
    	HavePause:TON;
    	SpeedTmp: DWORD;
    	Speed: WORD;
    	END_VAR
    
    IF ComPortState = 2 THEN
    	IF NOT EndSendStored THEN
    		CASE Stage OF
    .......................
    			13: SendModbus4(
    				Enable:= ES,
    				Mode:= MB_RTU,
    				DevAddr:= 32,
    				FirstAddr:= 51,
    				Quantity:= 1,
    				ComHandle:= Settings.Port,
    				TimeOut:= Timeout,
    				Buffer:= Buffer);
    				IF SendModbus4.Complete THEN
    					EndSendStored:=TRUE;
    					ErrorSend4:= SendModbus4.Exception;
    					IF ErrorSend4 = 0 THEN
    						A:= BYTE_TO_BOOL(Buffer[1] AND 1);
    						B:= BYTE_TO_BOOL(Buffer[1] AND 2);
    ..................
    					ELSE
    						A:= FALSE;
    						B:= FALSE;
    ........................
    					END_IF;
    				END_IF;
    			14:	IF ES THEN
    					Buffer[1]:= PACK(B0:= B23, B1:= S21, B2:= S22, B3:= S23, B4:= S24, B5:= S25, B6:= B24, B7:= B25);
    					Buffer[0]:= 0;
    				END_IF;
    				SendModbus5(
    				Enable:= ES,
    				Mode:= MB_RTU,
    				DevAddr:= 32,
    				FirstAddr:= 50,
    				Quantity:= 1,
    				Buffer:= Buffer,
    				ComHandle:= Settings.Port,
    				TimeOut:= TimeOut);
    				IF SendModbus5.Complete THEN
    					EndSendStored:=TRUE;
    					ErrorSend5:= SendModbus5.Exception;
    				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 >= 14 THEN
    					Stage:= 1;
    				ELSE
    					Stage:= Stage+1;
    				END_IF;
    			END_IF;
    		END_IF;
    	END_IF;
    	HavePause(IN:= EndSendStored,PT:=T#40ms);
    END_IF;

Похожие темы

  1. прошу помощи!
    от Владимир Верхоломов в разделе Эксплуатация
    Ответов: 8
    Последнее сообщение: 30.11.2010, 09:59
  2. прошу помощи
    от Сергей1987 в разделе ПЛК1хх
    Ответов: 11
    Последнее сообщение: 12.07.2010, 18:08
  3. Прошу помощи по CoDeSys V2.3
    от Oleg K в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 06.07.2010, 09:08
  4. прошу помощи!!
    от Сергей1987 в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 21.06.2010, 21:29
  5. прошу помощи! плк100км+мдвв+ип320
    от heinz в разделе ПЛК1хх
    Ответов: 7
    Последнее сообщение: 31.05.2010, 17:58

Ваши права

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