Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 28

Тема: ПЛК110-60 TCP/IP проблемы

  1. #1

    По умолчанию ПЛК110-60 TCP/IP проблемы

    Всем привет!

    Недавно сделал один проект, в котором вместо скады использовал самописную прогу на C#. Тот проект был на 110-30. Данные забирает по TCP/IP через библиотеку EasyModbus. Забор данных из ПЛК происходит раз в секунду. Перед чтением комп каждый раз соединяется с ПЛК, после чтения - отсоединяется. Для чего сделано: кроме оператора еще можно зайти с другого компа с этой же программой. Если "скада" не может считать данные, то делает небольшую паузу, после которой соединяется еще раз. Получается этакий Modbus с двумя мастерами. Все работает просто идеально. Причем оба компа могут и читать и записывать без проблем.
    Решил сделать так же на ПЛК110-60... После отсоединения от ПЛК к нему невозможно соединиться повторно. Опытным путем было установлено, что это время должно быть больше 4,5 секунд, что вообще никак не подходит...
    Прошивка была 2.15.8, прошил 2.15.9 - работает так же.

    Можно сделать так, чтобы работало так же как и на ПЛК110-30? Ну очень надо, но переходить на него не вариант...
    И переход на OPC-сервер тоже не предлагать.

  2. #2
    Пользователь
    Регистрация
    24.07.2012
    Адрес
    Россия
    Сообщений
    1,492

    По умолчанию

    Использовать UDP.
    Или создать еще один сокет.

  3. #3

    По умолчанию

    На вопрос не ответили, а так можно порекомендовать еще и на другой контроллер перейти.
    Давайте по существу или подождем ответа от техподдержки.

    Что-то там явно не так - не должно быть такой задержки перед последующим соединением. Если порт освободили, то значит он должен быть свободным.

  4. #4
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    Цитата Сообщение от JIexa21 Посмотреть сообщение
    Давайте по существу или подождем ответа от техподдержки.

    Что-то там явно не так - не должно быть такой задержки перед последующим соединением. Если порт освободили, то значит он должен быть свободным.
    а какой ответ Вы ждете от поддержки, для овеновских контроллеров нормальная работа, это один сокет одно постоянное соединение. А этот изврат с постоянным пересоединением, нельзя назвать правильной эксплуатацией. Если Ваши ПК в роли клиентов рвут соединение, как по Вашему сервер об этом узнает, а главное как обрабатывает разрыв? Работайте через библиотеки, будет намного проще, вариант с разными портами и одной областью памяти модбас для N-ого количества клиентов будет намного надежнее
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  5. #5
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,817

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    ....вариант с разными портами и одной областью памяти модбас для N-ого количества клиентов будет намного надежнее
    Полностью согласен.
    Можно подключаться и больше чем двумя мастерами к одному ПЛК http://www.owen.ru/forum/showthread....l=1#post146969
    И для каждого мастера соединение постоянное будет.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  6. #6

    По умолчанию

    Почему изврат? Я не видел в требованиях протоколах TCP/IP каких-то ограничений на повторное соединение. Поэтому и воспользовался данной возможностью на ПЛК110-30 и все работает. Значит в ПЛК110-60 ошибка в реализации TCP/IP.
    Насчет два порта на один слейв - пробовал. Не интересно. Надо каждому клиенту прописывать свои порты, а сейчас одна и та же программа работает без дополнительных настроек. Если бы мне надо было бы панель + скада или что-то типа этого, то наверное воспользовался бы.
    Ну и еще: стандартно порт 502, а остальное как раз и есть изврат.
    И еще: связь не рвет, а нормально отсоединяется командой. Контроллер должен сразу закрыть соединение.
    Кстати, подобная реализация как у меня, как раз имеет право на жизнь. Обычный распределенный доступ. Паузы в программах одинаковые, не прошел первый раз - прошел второй, потом больше ошибок в соединении нет, т.к. дальше пауза фиксированная. Что тут не правильного то???

    PS Кстати к разным портам тоже не соединишься - ПЛК не дает, хоть и порт другой.
    Последний раз редактировалось JIexa21; 11.07.2016 в 13:33.

  7. #7
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    Цитата Сообщение от JIexa21 Посмотреть сообщение
    Почему изврат? Я не видел в требованиях протоколах TCP/IP каких-то ограничений на повторное соединение. Поэтому и воспользовался данной возможностью на ПЛК110-30 и все работает. Значит в ПЛК110-60 ошибка в реализации TCP/IP.
    Ну допустим дело в реализации конфигуратора, ну допустим не хотите/не удобно два порт держать, сделайте через бибку на один порт

    ЗЫ
    Кстати, подобная реализация как у меня, как раз имеет право на жизнь
    перечитайте про TCP/IP на опеннет статьи как закрывается соединение, про флаг FIN.
    Последний раз редактировалось capzap; 11.07.2016 в 13:39.
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  8. #8

    По умолчанию

    Да знаю я про флаг.
    Я использую EasyModbus.
    У меня сделано так:
    modbusClient.Disconnect();

    Смотрим ModbusClient:
    Код:
    		public void Disconnect()
    		{
    			if (this.serialport != null) {
    				if (this.serialport.IsOpen) {
    					this.serialport.Close();
    				}
    			}
    			else {
    				if (this.stream != null) {
    					this.stream.Close();
    				}
    				if (this.tcpClient != null) {
    					this.tcpClient.Close();
    				}
    			}
    		}
    Смотрим что за tcpClient:
    private TcpClient tcpClient;

    А вот что юзает ModbusClient:
    using System;
    using System.IO.Ports;
    using System.Net;
    using System.Net.Sockets;
    using System.Threading;

    Так что причем тут FIN? Что-то подозреваю, что майкрософтовский Net работает без ошибок...
    Последний раз редактировалось JIexa21; 12.07.2016 в 11:50.

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

    По умолчанию

    на флаг FIN должен прийти ответ FIN,ACK, Вы видели что он приходит? В таких соединениях участвуют две стороны, Вы уверены что до плк дошло что надо выключится и он это сделал? Третий раз пишу, напишите в плк реализацию работы с сокетом через библиотеку и сравните результат
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  10. #10

    По умолчанию

    Да. Специально проверил снифером:
    SYN
    ACK
    FIN
    ACK
    И потом одни SYN - ПЛК уже не видит запросов какое-то время.

    И не могу нормальных примеров найти для работы через библиотеки...

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

Похожие темы

  1. Ответов: 15
    Последнее сообщение: 13.10.2016, 16:27
  2. Ответов: 5
    Последнее сообщение: 09.08.2016, 13:30
  3. Проблемы с ПД-100
    от Р.Александр в разделе Эксплуатация
    Ответов: 21
    Последнее сообщение: 21.03.2015, 12:41
  4. проблемы с трм 251
    от stek-vrn в разделе Эксплуатация
    Ответов: 5
    Последнее сообщение: 07.09.2011, 23:29
  5. проблемы с плк 150
    от freeon в разделе ПЛК1хх
    Ответов: 26
    Последнее сообщение: 03.06.2010, 16:48

Ваши права

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