Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 30

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

  1. #11

    По умолчанию

    Цитата Сообщение от Юрий Горелый2 Посмотреть сообщение
    мне кажется что Далеко не всегда опрос 50-и систем, тем более по 200 регистров это 50 сокетов.
    Более того, мне кажется что это минимум 200..250 сокетов, если данные идут подряд. см. максимальный размер посылки.

    "The received buffer size depends on the TCP Windows size, the TCP Maximum
    segment size and the time needed to absorb the incoming frames. With a Maximum
    Segment Size of 300 bytes (a MODBUS request needs a maximum of 256 bytes + the
    MBAP header size)"

    Если же регистры с промежутками, то в крайнем случае это один сокет на один запрос. потому что ModbusTCP так работает. (см. MODBUS MESSAGING ON TCP/IP IMPLEMENTATION GUIDE
    V1.0b October 24, 2006)
    Сокет - это IP адрес и порт.

  2. #12

    По умолчанию

    Цитата Сообщение от VladimirIS Посмотреть сообщение
    Прошу подтвердить про socket. Вы это точно знаете или подозреваете?
    более того, в документации на 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-ю сокетами.

  3. #13
    Пользователь
    Регистрация
    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 задайте логгирование и убедитесь в этом.

  4. #14

    По умолчанию

    Цитата Сообщение от AlexZ Посмотреть сообщение
    1 клиент - 1 сокет, если клиент кривой просто сокеты между запросами могут закрываться/открываться
    Советую почитать документацию на ModbusTCP чтобы не заблуждаться таким образом.

  5. #15

    По умолчанию

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

  6. #16

    По умолчанию

    Цитата Сообщение от Юрий Горелый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-ю сокетами.
    В процитированной Вами документации говориться про алгоритм NAGLE и свойство KEEPALIVE.
    К количеству одновременно открытых сокетов не имеет никакого отношения.

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

    По умолчанию

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

  8. #18

    По умолчанию

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

  9. #19

    По умолчанию

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

  10. #20

    По умолчанию

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

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

Похожие темы

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

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

Ваши права

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