Страница 5 из 6 ПерваяПервая ... 3456 ПоследняяПоследняя
Показано с 41 по 50 из 58

Тема: ПЛК 73 Первое включение и первые трудности

  1. #41

    По умолчанию

    Вот что получилось Screenshot_6.png Что-то я здесь не до понимаю.

  2. #42

    По умолчанию

    эти данные одинаковые какой бы регистр я бы не читал.

  3. #43

    По умолчанию

    Касаемо этих цифр - то я их просто не удалял. я в буфер смотрю а что там в D меня пока не интересует.

  4. #44

    По умолчанию

    Читать нужно только в момент удачного завершения транзакции.
    Exception =0 это не момент удачного завершения транзакции.

  5. #45

    По умолчанию

    Специально для ТС - длинный но реально работающий код
    Код:
    PROGRAM ExModbus
    VAR
    	SendModbus2: MB_WR_SNG_REG;
    	SendModbus4: MB_RD_HOLD_REGS;
    	SendModbus5: MB_WR_REGS;
    	ES: BOOL:= TRUE;
    	TimeOut: TIME:= T#100ms;
    	Buffer: ARRAY[0..255] OF BYTE;
    	ErrorSend2: ARRAY[1..5] OF BYTE;
    	ErrorSend4: ARRAY[1..12] OF BYTE;
    	ErrorSend5: ARRAY[1..5] OF BYTE;
    	Stage: BYTE:= 1;
    	EndSendStored: BOOL;
    	EndSendError: BOOL:= FALSE;
    	HavePause:TON;
    	SpeedPtr: POINTER TO BYTE;
    
    	StartTRV1, StartTRV2: BOOL;
    	SetupTRV1, SetupTRV2: WORD;
    	SuperHeat: WORD;
    END_VAR
    
    IF ComPortState = 2 THEN
    	IF NOT EndSendStored THEN
    		CASE Stage OF
    			1:	SendModbus4(
    				Enable:= ES,
    				Mode:= MB_RTU,
    				DevAddr:= 1,
    				FirstAddr:= 16#FD01,
    				Quantity:= 1,
    				ComHandle:= Settings.Port,
    				TimeOut:= Timeout,
    				Buffer:= Buffer);
    				IF SendModbus4.Complete THEN
    					EndSendStored:=TRUE;
    					ErrorSend4[1]:= SendModbus4.Exception;
    					IF ErrorSend4[1] = 0 THEN
    						AHU_Cont1:= BYTE_TO_BOOL(Buffer[0] AND 4);
    						AHU_Auto1:= NOT BYTE_TO_BOOL(Buffer[0] AND 128);
    					ELSE
    						AHU_Cont1:= FALSE;
    						AHU_Auto1:= FALSE;
    						EndSendError:= TRUE;
    						Stage:= 3;
    					END_IF;
    				END_IF;
    			2:	IF ES THEN
    					Buffer[0]:= 0;
    					Buffer[1]:= 0;
    					Buffer[0].2:= AHU1;
    					SpeedPtr:= ADR(AHU_Speed1);
    					Buffer[3]:= SpeedPtr^;
    					SpeedPtr:= SpeedPtr+1;
    					Buffer[2]:= SpeedPtr^;
    				END_IF;
    				SendModbus5(
    				Enable:= ES,
    				Mode:= MB_RTU,
    				DevAddr:= 1,
    				FirstAddr:= 16#1870,
    				Quantity:= 2,
    				Buffer:= Buffer,
    				ComHandle:= Settings.Port,
    				TimeOut:= TimeOut);
    				IF SendModbus5.Complete THEN
    					EndSendStored:=TRUE;
    					ErrorSend5[1]:= SendModbus5.Exception;
    				END_IF;
    			3:	SendModbus4(
    				Enable:= ES,
    				Mode:= MB_RTU,
    				DevAddr:= 2,
    				FirstAddr:= 16#FD01,
    				Quantity:= 1,
    				ComHandle:= Settings.Port,
    				TimeOut:= Timeout,
    				Buffer:= Buffer);
    				IF SendModbus4.Complete THEN
    					EndSendStored:=TRUE;
    					ErrorSend4[2]:= SendModbus4.Exception;
    					IF ErrorSend4[2] = 0 THEN
    						AHU_Cont2:= BYTE_TO_BOOL(Buffer[0] AND 4);
    						AHU_Auto2:= NOT BYTE_TO_BOOL(Buffer[0] AND 128);
    					ELSE
    						AHU_Cont2:= FALSE;
    						AHU_Auto2:= FALSE;
    						EndSendError:= TRUE;
    						Stage:= 5;
    					END_IF;
    				END_IF;
    			4:	IF ES THEN
    					Buffer[0]:= 0;
    					Buffer[1]:= 0;
    					Buffer[0].2:= AHU2;
    					SpeedPtr:= ADR(AHU_Speed2);
    					Buffer[3]:= SpeedPtr^;
    					SpeedPtr:= SpeedPtr+1;
    					Buffer[2]:= SpeedPtr^;
    				END_IF;
    				SendModbus5(
    				Enable:= ES,
    				Mode:= MB_RTU,
    				DevAddr:= 2,
    				FirstAddr:= 16#1870,
    				Quantity:= 2,
    				Buffer:= Buffer,
    				ComHandle:= Settings.Port,
    				TimeOut:= TimeOut);
    				IF SendModbus5.Complete THEN
    					EndSendStored:=TRUE;
    					ErrorSend5[2]:= SendModbus5.Exception;
    				END_IF;
    			5:	SendModbus4(
    				Enable:= ES,
    				Mode:= MB_RTU,
    				DevAddr:= 3,
    				FirstAddr:= 16#FD01,
    				Quantity:= 1,
    				ComHandle:= Settings.Port,
    				TimeOut:= Timeout,
    				Buffer:= Buffer);
    				IF SendModbus4.Complete THEN
    					EndSendStored:=TRUE;
    					ErrorSend4[3]:= SendModbus4.Exception;
    					IF ErrorSend4[3] = 0 THEN
    						EF_Cont1:= BYTE_TO_BOOL(Buffer[0] AND 4);
    						EF_Auto1:= NOT BYTE_TO_BOOL(Buffer[0] AND 128);
    					ELSE
    						EF_Cont1:= FALSE;
    						EF_Auto1:= FALSE;
    						EndSendError:= TRUE;
    						Stage:= 7;
    					END_IF;
    				END_IF;
    			6:	IF ES THEN
    					Buffer[0]:= 0;
    					Buffer[1]:= 0;
    					Buffer[0].2:= EF1;
    					SpeedPtr:= ADR(EF_Speed1);
    					Buffer[3]:= SpeedPtr^;
    					SpeedPtr:= SpeedPtr+1;
    					Buffer[2]:= SpeedPtr^;
    				END_IF;
    				SendModbus5(
    				Enable:= ES,
    				Mode:= MB_RTU,
    				DevAddr:= 3,
    				FirstAddr:= 16#1870,
    				Quantity:= 2,
    				Buffer:= Buffer,
    				ComHandle:= Settings.Port,
    				TimeOut:= TimeOut);
    				IF SendModbus5.Complete THEN
    					EndSendStored:=TRUE;
    					ErrorSend5[3]:= SendModbus5.Exception;
    				END_IF;
    			7:	SendModbus4(
    				Enable:= ES,
    				Mode:= MB_RTU,
    				DevAddr:= 4,
    				FirstAddr:= 16#FD01,
    				Quantity:= 1,
    				ComHandle:= Settings.Port,
    				TimeOut:= Timeout,
    				Buffer:= Buffer);
    				IF SendModbus4.Complete THEN
    					EndSendStored:=TRUE;
    					ErrorSend4[4]:= SendModbus4.Exception;
    					IF ErrorSend4[4] = 0 THEN
    						EF_Cont2:= BYTE_TO_BOOL(Buffer[0] AND 4);
    						EF_Auto2:= NOT BYTE_TO_BOOL(Buffer[0] AND 128);
    					ELSE
    						EF_Cont2:= FALSE;
    						EF_Auto2:= FALSE;
    						EndSendError:= TRUE;
    						Stage:= 9;
    					END_IF;
    				END_IF;
    			8:	IF ES THEN
    					Buffer[0]:= 0;
    					Buffer[1]:= 0;
    					Buffer[0].2:= EF2;
    					SpeedPtr:= ADR(EF_Speed2);
    					Buffer[3]:= SpeedPtr^;
    					SpeedPtr:= SpeedPtr+1;
    					Buffer[2]:= SpeedPtr^;
    				END_IF;
    				SendModbus5(
    				Enable:= ES,
    				Mode:= MB_RTU,
    				DevAddr:= 4,
    				FirstAddr:= 16#1870,
    				Quantity:= 2,
    				Buffer:= Buffer,
    				ComHandle:= Settings.Port,
    				TimeOut:= TimeOut);
    				IF SendModbus5.Complete THEN
    					EndSendStored:=TRUE;
    					ErrorSend5[1]:= SendModbus5.Exception;
    				END_IF;
    
    			9:	SendModbus4(
    				Enable:= ES,
    				Mode:= MB_RTU,
    				DevAddr:= 5,
    				FirstAddr:= 116,
    				Quantity:= 1,
    				ComHandle:= Settings.Port,
    				TimeOut:= Timeout,
    				Buffer:= Buffer);
    				IF SendModbus4.Complete THEN
    					EndSendStored:=TRUE;
    					ErrorSend4[5]:= SendModbus4.Exception;
    					IF ErrorSend4[5] = 0 THEN
    						StartTRV1:= BYTE_TO_BOOL(Buffer[1] AND 1);
    						TRV1Alarm:= FALSE;
    					ELSE
    						TRV1Alarm:= TRUE;
    						EndSendError:= TRUE;
    						Stage:= 15;
    					END_IF;
    				END_IF;
    			10:	SendModbus4(
    				Enable:= ES,
    				Mode:= MB_RTU,
    				DevAddr:= 5,
    				FirstAddr:= 99,
    				Quantity:= 1,
    				ComHandle:= Settings.Port,
    				TimeOut:= Timeout,
    				Buffer:= Buffer);
    				IF SendModbus4.Complete THEN
    					EndSendStored:=TRUE;
    					ErrorSend4[6]:= SendModbus4.Exception;
    					IF ErrorSend4[6] = 0 THEN
    						SetupTRV1:= Buffer[0]*256 + Buffer[1];
    						TRV1Alarm:= FALSE;
    					ELSE
    						TRV1Alarm:= TRUE;
    						EndSendError:= TRUE;
    						Stage:= 15;
    					END_IF;
    				END_IF;
    			11:	IF StartTRV1 <> Evap1 THEN
    					SendModbus2(
    					Enable:= ES,
    					Mode:= MB_RTU,
    					DevAddr:= 5,
    					RegAddr:= 116,
    					Value:= BOOL_TO_WORD(Evap1),
    					ComHandle:= Settings.Port,
    					TimeOut:= TimeOut);
    					IF SendModbus2.Complete THEN
    						EndSendStored:=TRUE;
    						ErrorSend2[1]:= SendModbus2.Exception;
    					END_IF;
    				ELSE
    					EndSendStored:= TRUE;
    				END_IF;
    			12:	IF SetupTRV1 <> DewTemp THEN
    					SendModbus2(
    					Enable:= ES,
    					Mode:= MB_RTU,
    					DevAddr:= 5,
    					RegAddr:= 99,
    					Value:= DewTemp,
    					ComHandle:= Settings.Port,
    					TimeOut:= TimeOut);
    					IF SendModbus2.Complete THEN
    						EndSendStored:=TRUE;
    						ErrorSend2[2]:= SendModbus2.Exception;
    					END_IF;
    				ELSE
    					EndSendStored:= TRUE;
    				END_IF;
    			13:	SendModbus4(
    				Enable:= ES,
    				Mode:= MB_RTU,
    				DevAddr:= 5,
    				FirstAddr:= 2535,
    				Quantity:= 1,
    				ComHandle:= Settings.Port,
    				TimeOut:= Timeout,
    				Buffer:= Buffer);
    				IF SendModbus4.Complete THEN
    					EndSendStored:=TRUE;
    					ErrorSend4[7]:= SendModbus4.Exception;
    					IF ErrorSend4[7] = 0 THEN
    						SuperHeat:= Buffer[1];
    						TRV1Alarm:= FALSE;
    					ELSE
    						SuperHeat1:= 16#FFFF;
    						EndSendError:= TRUE;
    						Stage:= 15;
    					END_IF;
    				END_IF;
    			14:	SendModbus4(
    				Enable:= ES,
    				Mode:= MB_RTU,
    				DevAddr:= 5,
    				FirstAddr:= 2527,
    				Quantity:= 1,
    				ComHandle:= Settings.Port,
    				TimeOut:= Timeout,
    				Buffer:= Buffer);
    				IF SendModbus4.Complete THEN
    					EndSendStored:=TRUE;
    					ErrorSend4[8]:= SendModbus4.Exception;
    					IF ErrorSend4[8] = 0 THEN
    						SuperHeat1:= SuperHeat*100 + Buffer[1];
    						TRV1Alarm:= FALSE;
    					ELSE
    						SuperHeat1:= 16#FFFF;
    						EndSendError:= TRUE;
    						Stage:= 15;
    					END_IF;
    				END_IF;
    
    
    			15:	SendModbus4(
    				Enable:= ES,
    				Mode:= MB_RTU,
    				DevAddr:= 6,
    				FirstAddr:= 116,
    				Quantity:= 1,
    				ComHandle:= Settings.Port,
    				TimeOut:= Timeout,
    				Buffer:= Buffer);
    				IF SendModbus4.Complete THEN
    					EndSendStored:=TRUE;
    					ErrorSend4[9]:= SendModbus4.Exception;
    					IF ErrorSend4[9] = 0 THEN
    						StartTRV2:= BYTE_TO_BOOL(Buffer[1] AND 1);
    						TRV2Alarm:= FALSE;
    					ELSE
    						TRV2Alarm:= TRUE;
    						EndSendError:= TRUE;
    						Stage:= 1;
    					END_IF;
    				END_IF;
    			16:	SendModbus4(
    				Enable:= ES,
    				Mode:= MB_RTU,
    				DevAddr:= 6,
    				FirstAddr:= 99,
    				Quantity:= 1,
    				ComHandle:= Settings.Port,
    				TimeOut:= Timeout,
    				Buffer:= Buffer);
    				IF SendModbus4.Complete THEN
    					EndSendStored:=TRUE;
    					ErrorSend4[10]:= SendModbus4.Exception;
    					IF ErrorSend4[10] = 0 THEN
    						SetupTRV2:= Buffer[0]*256 + Buffer[1];
    						TRV2Alarm:= FALSE;
    					ELSE
    						TRV2Alarm:= TRUE;
    						EndSendError:= TRUE;
    						Stage:= 1;
    					END_IF;
    				END_IF;
    			17:	IF StartTRV2 <> Evap2 THEN
    					SendModbus2(
    					Enable:= ES,
    					Mode:= MB_RTU,
    					DevAddr:= 6,
    					RegAddr:= 116,
    					Value:= BOOL_TO_WORD(Evap2),
    					ComHandle:= Settings.Port,
    					TimeOut:= TimeOut);
    					IF SendModbus2.Complete THEN
    						EndSendStored:=TRUE;
    						ErrorSend2[3]:= SendModbus2.Exception;
    					END_IF;
    				ELSE
    					EndSendStored:= TRUE;
    				END_IF;
    			18:	IF SetupTRV2 <> DewTemp THEN
    					SendModbus2(
    					Enable:= ES,
    					Mode:= MB_RTU,
    					DevAddr:= 6,
    					RegAddr:= 99,
    					Value:= DewTemp,
    					ComHandle:= Settings.Port,
    					TimeOut:= TimeOut);
    					IF SendModbus2.Complete THEN
    						EndSendStored:=TRUE;
    						ErrorSend2[4]:= SendModbus2.Exception;
    					END_IF;
    				ELSE
    					EndSendStored:= TRUE;
    				END_IF;
    			19:	SendModbus4(
    				Enable:= ES,
    				Mode:= MB_RTU,
    				DevAddr:= 6,
    				FirstAddr:= 2535,
    				Quantity:= 1,
    				ComHandle:= Settings.Port,
    				TimeOut:= Timeout,
    				Buffer:= Buffer);
    				IF SendModbus4.Complete THEN
    					EndSendStored:=TRUE;
    					ErrorSend4[11]:= SendModbus4.Exception;
    					IF ErrorSend4[11] = 0 THEN
    						SuperHeat:= Buffer[1];
    						TRV2Alarm:= FALSE;
    					ELSE
    						SuperHeat2:= 16#FFFF;
    						EndSendError:= TRUE;
    						Stage:= 1;
    					END_IF;
    				END_IF;
    			20:	SendModbus4(
    				Enable:= ES,
    				Mode:= MB_RTU,
    				DevAddr:= 6,
    				FirstAddr:= 2527,
    				Quantity:= 1,
    				ComHandle:= Settings.Port,
    				TimeOut:= Timeout,
    				Buffer:= Buffer);
    				IF SendModbus4.Complete THEN
    					EndSendStored:=TRUE;
    					ErrorSend4[12]:= SendModbus4.Exception;
    					IF ErrorSend4[12] = 0 THEN
    						SuperHeat2:= SuperHeat*100 + Buffer[1];
    						TRV2Alarm:= FALSE;
    					ELSE
    						SuperHeat2:= 16#FFFF;
    						EndSendError:= TRUE;
    						Stage:= 1;
    					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 >= 20 THEN
    					Stage:= 1;
    				ELSE
    					Stage:= Stage+1;
    				END_IF;
    			END_IF;
    		END_IF;
    	END_IF;
    	HavePause(IN:= EndSendStored,PT:=T#40ms);
    END_IF;
    Частотники SE + контроллеры ТРВ Danfoss.
    Инициализация порта в другой задаче.

  6. #46

    По умолчанию

    Просто весовые датчики лежат у меня под ногами, нажал на датчик и вот тебе и данные изменились в буфере, а пока этого не происходит смысл их обрабатывать?

  7. #47

    По умолчанию

    Aso огромное спасибо за пример. Взял нужную мне часть совместил со своей частью , изменил задание под мой порт и вуаля байты побежали и я прекрасно вижу как они изменяются от веса.
    Просто огромное человеческое спасибо Aso и всем кто принял участие.

  8. #48

    По умолчанию

    Специально для ТС
    а что это значит?
    Последний раз редактировалось KIPSHOP; 26.10.2018 в 20:55.

  9. #49
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,583

    По умолчанию

    TS - topic starter, для автора топика короче....

  10. #50

    По умолчанию

    Я понял спасибо.

Страница 5 из 6 ПерваяПервая ... 3456 ПоследняяПоследняя

Похожие темы

  1. ТРМ133: трудности с настройкой.
    от Просто_спросить в разделе Контроллеры для систем вентиляции и кондиционирования
    Ответов: 16
    Последнее сообщение: 27.05.2023, 18:33
  2. первое задание на плк 150
    от Ded47 в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 19.01.2017, 22:09
  3. Первое включение реле
    от Владимир1967 в разделе Программируемые реле
    Ответов: 6
    Последнее сообщение: 14.01.2016, 18:22
  4. Трудности с подключением пр 110 к ПК.
    от правовед в разделе Программируемые реле
    Ответов: 8
    Последнее сообщение: 16.07.2015, 21:14
  5. Первое включение новых ПЛК !?!?!?!?
    от Леонид в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 30.04.2011, 13:47

Ваши права

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