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

Тема: Быстродействие MasterScada 4d

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь
    Регистрация
    28.03.2007
    Адрес
    г. Донецк
    Сообщений
    123

    По умолчанию

    Цитата Сообщение от Юрий Горелый2 Посмотреть сообщение
    более того, в документации на ModbusTCP пример такого рода системы разобран чёрным по белому
    "TCP-NODELAY:
    Small packets (called tinygrams) are normally not a problem on LANs, since most LANs
    are not congested, but these tinygrams can lead to congestion on wide area networks.
    A simple solution, called the "NAGLE algorithm", is to collect small amounts of data and
    sends them in a single segment when TCP acknowledgments of previous packets
    arrive.
    In order to have better real-time behavior it is recommended to send small amounts of
    data directly without trying to gather them in a single segment. That is why it is
    recommended to force the TCP-NODELAY option that disables the "NAGLE algorithm"
    on client and server connections. "

    плавно намекая на то, что большим количеством маленьких пакетов сеть будет загажена и их надо Специально упаковывать
    в нужного размера пакеты. ( считать отдельно делать адресное пространство требуемым образом) а нужный размер максимум 300 байт.


    далее по тексту в описании ModbusTCP отдельно указано что же будет с сокетами на серверАХ и клиенте и что с ними должно быть
    "SO-REUSEADDR:
    When a MODBUS server closes a TCP connection initialized by a remote client, the
    local port number used for this connection cannot be reused for a new opening while
    that connection stays in the "Time-wait" state (during two MSL : Maximum Segment
    Lifetime).
    It is recommended specifying the SO-REUSEADDR option for each client and server
    connection to bypass this restriction. This option allows the process to assign itself a
    port number that is part of a connection that is in the 2MSL wait for client and listening
    socket.
    "

    Далее по тексту указано почему, когда и как стоит закрывать сокеты и создавать новые -
    "SO-KEEPALIVE:"

    "
    By default on TCP/IP protocol no data are sent across an idle TCP connection.
    Therefore if no process at the ends of a TCP connection is sending data to the other,
    nothing is exchanged between the two TCP modules. This assumes that either the
    client application or the server application uses timers to detect inactivity in order to
    close a connection.
    It is recommended to enable the KEEPALIVE option on both client and server
    connection in order to poll the other end to know if the distant has either crashed and is
    down or crashed and rebooted.
    Nevertheless we must keep on mind that enabling KEEPALIVE can cause perfectly
    good connections to be dropped during transient failures, that it consumes unnecessary
    bandwidth on the network if the keep alive timer is too short."
    "

    из этого и вытекает, что за 200 параметрами к 50-и системам обращаясь, даже близко не будет пахнуть 50-ю сокетами.
    Еще раз повторяю - 1 клиент = 1 сокет (одновременно), сервера, то есть ПЛК на другое не рассчитаны. В любом OPC задайте логгирование и убедитесь в этом.

  2. #2

    По умолчанию

    Цитата Сообщение от AlexZ Посмотреть сообщение
    Еще раз повторяю - 1 клиент = 1 сокет (одновременно), сервера, то есть ПЛК на другое не рассчитаны. В любом OPC задайте логгирование и убедитесь в этом.
    Вы сейчас про OPC или про ModbusTCP?
    это немного совсем разные протоколы.
    Или Вы про 1 сокет = 200 переменных? они в него, внезапно, не влезут.
    сокет надо открыть. послать какое то количество данных, в каком то количестве сеансов. и закрыть. чтобы открыть заново.
    почему все вдруг решили что каждая система в рамках одной сессии будет слать 2 килобайта (4 +11 )байт*200- большая загадка.
    для серверов это нормальная ситуация, но для modbus я бы сказал совсем редкая и почти невозможная. потому что синхронизация.
    и если какая то система так делает, то её достаточно жалко.
    скорее протоколом это будет делиться на пакеты по 300 байт. потому что оно так.
    Последний раз редактировалось Юрий Горелый2; 08.08.2022 в 17:03.

  3. #3
    Пользователь
    Регистрация
    28.03.2007
    Адрес
    г. Донецк
    Сообщений
    123

    По умолчанию

    Цитата Сообщение от Юрий Горелый2 Посмотреть сообщение
    Вы сейчас про OPC или про ModbusTCP?
    это немного совсем разные протоколы.
    Или Вы про 1 сокет = 200 переменных? они в него, внезапно, не влезут.
    сокет надо открыть. послать какое то количество данных, в каком то количестве сеансов. и закрыть. чтобы открыть заново.
    Я имел ввиду не OPC протокол, а OPC сервер. Все известные мне OPC работают по схеме: 1 узел = 1 подключение = 1 сокет. Если пользователь хочет, а OPC позволяет искусственно разбивать узел на несколько логических частей, то только в этом случае может быть одновременно более 1 сокета для связи с одним ПЛК

  4. #4

    По умолчанию

    именно так и есть. 1 OPC сервер, 1 OPC клиент - по умолчанию 1 socket.
    ModbusTCP немного не так, если покопать поглубже.

  5. #5

    По умолчанию

    Цитата Сообщение от Юрий Горелый2 Посмотреть сообщение
    Вы сейчас про OPC или про ModbusTCP?
    это немного совсем разные протоколы.
    Или Вы про 1 сокет = 200 переменных? они в него, внезапно, не влезут.
    сокет надо открыть. послать какое то количество данных, в каком то количестве сеансов. и закрыть. чтобы открыть заново.
    почему все вдруг решили что каждая система в рамках одной сессии будет слать 2 килобайта (4 +11 )байт*200- большая загадка.
    для серверов это нормальная ситуация, но для modbus я бы сказал совсем редкая и почти невозможная. потому что синхронизация.
    и если какая то система так делает, то её достаточно жалко.
    скорее протоколом это будет делиться на пакеты по 300 байт. потому что оно так.
    Тема ТС была про Modbus.
    Если система открывает/закрывает сокет для получения данных с каждого регистра, это проблемы системы.
    Но даже в этом случае в один момент времени открыт только один сокет.

  6. #6

    По умолчанию

    Цитата Сообщение от VladimirIS Посмотреть сообщение
    Тема ТС была про Modbus.
    Если система открывает/закрывает сокет для получения данных с каждого регистра, это проблемы системы.
    Но даже в этом случае в один момент времени открыт только один сокет.
    строго говоря не совсем так.
    Более того, строго говоря совсем не так. иначе тайминги были бы ну совсем более ужасными.
    Для Клиента - мастерскады опрашивающей 50 систем по протоколу ModbusTCP -почти наверняка не так, ( потому что внезапно TCP)
    но возможно и для любого из 50-и Серверов тоже быть совсем не так. особенно после какого нибудь таймаута (а он, таймаут - придёт, никуда не денется)
    Последний раз редактировалось Юрий Горелый2; 08.08.2022 в 17:20.

  7. #7

    По умолчанию

    резюме простое - лучше опрашивать OPC_UA. благо он именно для такого и предназначен.
    и использовать пошире канал пошустрее сервер.
    p.s ( видимо форум меня хорошо помнит лично, что выставил одно слово сначала со звёздочками... я посмеялся)

  8. #8

    По умолчанию

    Цитата Сообщение от Юрий Горелый2 Посмотреть сообщение
    строго говоря не совсем так.
    Более того, строго говоря совсем не так. иначе тайминги были бы ну совсем более ужасными.
    Для Клиента - мастерскады опрашивающей 50 систем по протоколу ModbusTCP -почти наверняка не так, ( потому что внезапно TCP)
    но возможно и для любого из 50-и Серверов тоже быть совсем не так. особенно после какого нибудь таймаута (а он, таймаут - придёт, никуда не денется)
    Все наоборот. Зачем закрывать сокеты при постоянном опросе? Чтобы получить "ужасные" тайминги?
    Нормальная работа: открыли сокет - получаем данные с контроллера. Если сокет закрылся (по любой причине), открываем заново. Аналогично для других 49 систем. Итого 50 одновременно работающих сокетов.

    Цитата Сообщение от Юрий Горелый2 Посмотреть сообщение
    резюме простое - лучше опрашивать OPC_UA. благо он именно для такого и предназначен.
    и использовать пошире канал пошустрее сервер.
    p.s ( видимо форум меня хорошо помнит лично, что выставил одно слово сначала со звёздочками... я посмеялся)
    Про OPC не спорю. Просто ТС спрашивал про Modbus.
    Про канал мы вроде уже определились. Вы сами написали что нужно 30 мегабит. Для гигабитной сети это семечки.
    Ну а шустрый сервер никогда не лишний
    Последний раз редактировалось VladimirIS; 08.08.2022 в 17:45.

Похожие темы

  1. Быстродействие ПЛК
    от Владислав Г. в разделе ПЛК1хх
    Ответов: 11
    Последнее сообщение: 14.12.2016, 16:24
  2. Быстродействие!
    от IIeroniux в разделе Master SCADA 3
    Ответов: 4
    Последнее сообщение: 07.04.2016, 11:13
  3. СПК 107 - быстродействие?
    от alexusankov в разделе СПК1xx (архив)
    Ответов: 7
    Последнее сообщение: 26.01.2015, 16:01
  4. Быстродействие ОПС и СКАДЫ
    от rovki в разделе Master SCADA 3
    Ответов: 3
    Последнее сообщение: 30.05.2012, 06:57
  5. Снизится ли быстродействие?
    от Леонид в разделе ПЛК3xx (архив)
    Ответов: 14
    Последнее сообщение: 10.03.2011, 20:46

Метки этой темы

Ваши права

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