Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 17

Тема: "Зависание" modbus TCP ПЛК 110-60

  1. #1

    По умолчанию "Зависание" modbus TCP ПЛК 110-60

    Добрый день! Имеется ПЛК 110-60. Реализована передача данных ПЛК (master) - Lectus (slave), Modbus TCP. В случае, когда Lectus не отвечает, ПЛК выдает ошибку 84 (Last error) и перестает обращаться к Lectus. "Work mode" - "By command". Помогает только перезагрузка ПЛК.
    В чем может быть причина? Как победить это "зависание" Modbus TCP?
    Всех с наступающим!

  2. #2

    По умолчанию

    А команды посылаете?
    Тролль-наседка, добрый, нежный и ласковый

  3. #3

    По умолчанию

    Ангелина, всегда в подобных ситуациях стоит обращать внимание на детали.
    Например:
    Как проложен кабель?
    Какая марка кабеля?
    Метраж?
    Как обжат?

    Стоит вынести ПЛК временно из того места где он стоит и соединить с чем-то еще, например Modbus Pool или какой-то другой OPC.
    Возникает ощущение, что опрос идет с большим количеством ошибок. Драйвер ПЛК уверен имеет какой-то лимит на "неответы"
    Попробуйте для выяснения причины что-то менять местами, вычленять проблему.
    Проект стоит выложить, приложить скрин с ПЛК браузер о сетевых соединениях.

    Чтобы устранить причину ее надо сначала найти.
    С уважением,
    Лапшин Вячеслав

  4. #4

    По умолчанию

    И самое главное лог снифера прикладывать. Там будет видно кто запрашивает а кто не отвечает и есть ли соединение
    Тролль-наседка, добрый, нежный и ласковый

  5. #5

    По умолчанию

    Спасибо большое за ответы!
    Команды посылаю.
    К сожалению, проект и скрин ПЛК-браузера сейчас скинуть не могу. Новогодние каникулы, всё на работе. Позже обязательно прикреплю!
    По поводу кабеля.. Конфигурация проекта такова: ПЛК, Панель оператора, модуль МВ110 на 8 аналоговых входов. Модуль подключен к ПЛК по RS-485. ПЛК master, модуль slave. Сначала при опросе модуля также возникала подобная проблема. Если опрос модуля единожды возвращался тайм-аутом, то опрос модуля прекращался вовсе. Посадили на RS-485 "шпиона" и увидели, что ПЛК просто ничего не отправляет, хотя команда на отправку есть. Эту проблему решила программным путем. Такие же изменения внесла и в код программы где осуществляется опрос по TCP, но это не помогло. По Ethernet с ПЛК также общается панель оператора. Связь между панелью и ПЛК работает стабильно. Была мысль, что мешает панель. Попробовала поменять порт по которому ПЛК общается с OPC. Не помогло.
    Я понимаю, что без кода и скринов посоветовать мне что-то сложно. Как говорится "пальцем в небо". После праздников подготовлю все необходимое и прикреплю!
    С Новым Годом!

  6. #6

    По умолчанию

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

  7. #7

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    По аналогии нужно смотреть, если панель общается с плк по периодичному опросу, то зачем заставлять плк работать по команде а не по времени?
    Команда на отправку данных ПЛК выдается с определенным периодом. По сути, никакой разницы нет. Т.е. можно считать, что передача работает по времени, просто это реализуется программным путем.

    Цитата Сообщение от krollcbas Посмотреть сообщение
    Ангелина, всегда в подобных ситуациях стоит обращать внимание на детали.
    Например:
    Как проложен кабель?
    Какая марка кабеля?
    Метраж?
    Как обжат?

    Стоит вынести ПЛК временно из того места где он стоит и соединить с чем-то еще, например Modbus Pool или какой-то другой OPC.
    Возникает ощущение, что опрос идет с большим количеством ошибок. Драйвер ПЛК уверен имеет какой-то лимит на "неответы"
    Попробуйте для выяснения причины что-то менять местами, вычленять проблему.
    Проект стоит выложить, приложить скрин с ПЛК браузер о сетевых соединениях.

    Чтобы устранить причину ее надо сначала найти.
    Конфигурация ПЛК:
    1.PNG
    2.PNG
    3.PNG

    Листинг программы (ConnectAndSend) (часть программы, отвечающая за отправку данных):
    Код:
    (* Минимальное время цикла ПЛК 10 мс *)
    
    TimConnect := TimConnect + 1;
    
    CASE ConnectCykl OF
    	0:
    		IF (MMDDFromArch <> 0) OR (HHMMFromArch <> 0) THEN
    			TimConnect := 0;
    			ConnectCykl := 1;
    		END_IF
    
    	1:
    		(* Вырезала кусок кода. Заполнение массива на отправку. *)
    
    		RStart := 255;
    		StrO_u:=255;
    		MLerr:=0;
    		TimConnect:=0;
    		ConnectCykl:=2;
    
    	2:
    		IF (TimConnect >= 1300) THEN
    			ptw := ADR(StrI);
    			ptw^ := 65535;
    			RStart := 255;
    			StrI_u := 255;
    			MLerr:=0;
    			StrIDone := FALSE;
    			ConnectCykl:= 3;
    			TimConnect	:=	0;
    		END_IF
    
    	3:
    		IF NOT(StrIDone) THEN
    			ptw := ADR(StrI);
    			IF (ptw^ <> 65535)  THEN
    				StrIDone := TRUE;
    			END_IF
    		END_IF
    
    		IF (StrIDone) THEN
    			ConnectCykl:= 4;
    			TimConnect	:=	0;
    		ELSE
    			IF  (TimConnect >= 1000) THEN
    				ConnectCykl := 0;
    				TimConnect	:=	0;
    			END_IF
    		 END_IF
    
    	4:
    		IF (TimConnect >= 100) THEN
    			ConnectCykl	:=	5;
    			TimConnect	:=	0;
    		END_IF
    
    	5:
    		ptwi := ADR(StrI) + 16;
    		IF (idSent = ptwi^) THEN
    			ptwi := ADR(StrI) + 6;
    			IF (ptwi^ > 0) THEN
    				IF (ptwi^ > (cur_hour * 100 + cur_min)) THEN
    					IF ((ptwi^ - (cur_hour * 100 + cur_min)) > 2) THEN
    						ptwi := ADR(StrI);
    						Par1 := ptwi^;
    						ptwi := ptwi + 2;
    						Par2 := ptwi^;
    						ptwi := ptwi + 2;
    						Par3 := ptwi^;
    						ptwi := ptwi + 2;
    						Par4 := 30;
    						Par5 := ptwi^ / 100;
    						Par6 := ptwi^ MOD 100;
    						SetDateTime();
    					END_IF
    					IF (((cur_hour * 100 + cur_min) - ptwi^) > 2) THEN
    						ptwi := ADR(StrI);
    						Par1 := ptwi^;
    						ptwi := ptwi + 2;
    						Par2 := ptwi^;
    						ptwi := ptwi + 2;
    						Par3 := ptwi^;
    						ptwi := ptwi+2;
    						Par4 := 30;
    						Par5 := ptwi^ / 100;
    						Par6 := ptwi^ MOD 100;
    						SetDateTime();
    					END_IF
    				END_IF
    			END_IF
    			ConnectCykl:=6;
    			TimConnect:=0;
    		ELSE
    			ConnectCykl := 7;
    			TimConnect	:=	0;
    		END_IF
    
    	6:
    		MMDDFromArch := 0;
    		HHMMFromArch := 0;
    		(* Вырезала кусок кода. Обнуление массива на отправку. *)
    		ConnectCykl := 7;
    		TimConnect	:=	0;
    
    	7:
    		IF (TimConnect >= 100) THEN
    			ConnectCykl := 0;
    			TimConnect := 0;
    		END_IF
    
    END_CASE

  8. #8
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Нерезиновая, ЮЗАО
    Сообщений
    2,499

    По умолчанию

    п2... 13сек ....п3 - норм ?

  9. #9

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    п2... 13сек ....п3 - норм ?
    Да. Это ожидание перед отправкой команды на считывание с OPC. Считываем специальный регистр с OPC, который говорит об успешной (или нет) записи полученных данных в БД. Эта задержка связана с загруженностью OPC сервера и большим количеством запрос в БД. 13 секунд вполне достаточно для считывания корректного признака. В общем это внутренние особенности организации передачи данных и это нормально.

  10. #10
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Нерезиновая, ЮЗАО
    Сообщений
    2,499

    По умолчанию

    Ок. Сокет через конфигурацию. Может он сам как-то переоткрывается (и коряво) при отсутствии запросов за такой период ? Не знаю, но допускаю. Можно проверить на большей частоте. Например 1..2 сек.

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. "ЗАВИСАНИЕ ТРМ200-202" по RS-485
    от mkv в разделе Сетевые технологии
    Ответов: 37
    Последнее сообщение: 14.09.2018, 08:27
  2. Ответов: 16
    Последнее сообщение: 15.02.2017, 11:39
  3. Ответов: 49
    Последнее сообщение: 06.08.2015, 14:38
  4. Ответов: 20
    Последнее сообщение: 15.04.2015, 11:02
  5. Ответов: 11
    Последнее сообщение: 24.09.2012, 20:18

Ваши права

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