Показано с 1 по 4 из 4

Тема: Количество клиентов для веб-визуализации ПЛК200/210

  1. #1

    По умолчанию Количество клиентов для веб-визуализации ПЛК200/210

    Добрый день!
    Подскажите, пожалуйста:
    1. Какое количество клиентов могут одновременно подключиться к веб-визуализации контроллера ПЛК200/210?
    2. Сохранится ли при этом для всех подключенных клиентов возможность управления (кнопки, чекбоксы, контролы ввода аналоговых значений и пр)?
    3. Есть ли возможность управлять количеством одновременных подключений/сессий через системные переменные или конфигурацию ПЛК?

  2. #2
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,748

    По умолчанию

    Цитата Сообщение от S#716_0P Посмотреть сообщение
    Добрый день!
    Подскажите, пожалуйста:
    1. Какое количество клиентов могут одновременно подключиться к веб-визуализации контроллера ПЛК200/210?
    2. Сохранится ли при этом для всех подключенных клиентов возможность управления (кнопки, чекбоксы, контролы ввода аналоговых значений и пр)?
    3. Есть ли возможность управлять количеством одновременных подключений/сессий через системные переменные или конфигурацию ПЛК?
    Добрый день.

    1. Зависит от свободной RAM, но не более значения ограничения, установленного в Менеджере визуализации на вкладке Advanced Settings (по умолчанию - 100).
    2. Да.
    3. Насколько я знаю - нет.

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

    По умолчанию

    Цитата Сообщение от S#716_0P Посмотреть сообщение
    3. Есть ли возможность управлять количеством одновременных подключений/сессий через системные переменные или конфигурацию ПЛК?
    есть вариант через установленный python. потребуется установить через консоль при доступе в интернет команду pip install flask
    написать под свои задачи код из шаблона
    app.py:

    from flask import Flask, redirect, render_template_string, request, jsonify
    import threading
    import time

    app = Flask(__name__)

    # Настройки
    MAX_CONNECTIONS = 5 # Максимальное число одновременных подключений
    SESSION_TIMEOUT = 300 # Таймаут неактивной сессии (сек)

    # Хранилище сессий (в памяти)
    active_sessions = {} # {session_id: last_active_time}
    lock = threading.Lock() # Для потокобезопасности


    def cleanup_sessions():
    """Удаляет просроченные сессии"""
    now = time.time()
    with lock:
    for sid in list(active_sessions.keys()):
    if now - active_sessions[sid] > SESSION_TIMEOUT:
    del active_sessions[sid]

    @app.before_request
    def before_request():
    """Очищает просроченные сессии перед каждым запросом"""
    cleanup_sessions()

    @app.route('/')
    def index():
    # Получаем уникальный идентификатор клиента (например, по IP + User-Agent)
    client_id = request.remote_addr + request.headers.get('User-Agent', '')

    with lock:
    now = time.time()
    # Обновляем время последней активности для текущего клиента
    if client_id in active_sessions:
    active_sessions[client_id] = now
    # Уже подключён — перенаправляем на webvisu
    return redirect("http://ваш-плк-ip/webvisu")
    else:
    # Проверяем, есть ли свободное место
    if len(active_sessions) < MAX_CONNECTIONS:
    active_sessions[client_id] = now
    return redirect("http://ваш-плк-ip/webvisu")
    else:
    # Нет свободных мест — возвращаем 429
    return render_template_string('''
    <h1>429 Too Many Requests</h1>
    <p>Превышено число одновременных подключений.</p>
    <p>Пожалуйста, подождите и попробуйте снова через {{ retry_after }} секунд.</p>
    ''', retry_after=SESSION_TIMEOUT), 429

    @app.route('/status')
    def status():
    """Вспомогательный маршрут для проверки числа подключений"""
    with lock:
    return jsonify({
    "active_connections": len(active_sessions),
    "max_connections": MAX_CONNECTIONS,
    "available_slots": MAX_CONNECTIONS - len(active_sessions)
    })

    if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, threaded=True)
    запустить в консоли python3 app.py и далее обращаться по адресу http://ваш-плк-ip:5000 который если есть свободные места перенаправит на вебвизуализацию, а если нет то выдаст сообщение 429 Screenshot 2026-01-16 101001.png

    Примечание:
    Ресурсы ПЛК200/210 физически не позволяют поддерживать более 5–7 стабильных сессий без деградации производительности. При высокой нагрузке (частые обновления экранов, большие графики) фактическое число стабильных подключений может быть меньше 5.
    Изменения, внесённые одним клиентом (например, нажатие кнопки), синхронизируются со всеми остальными клиентами с задержкой, определяемой периодом опроса веб‑сервера и PLC‑цикла.
    При конфликте действий (два клиента одновременно меняют одно значение) приоритет имеет последний полученный запрос (механизм «кто успел»)
    Последний раз редактировалось capzap; 16.01.2026 в 10:55.
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  4. #4

    По умолчанию

    Спасибо за подробную информацию!

Похожие темы

  1. Ответов: 4
    Последнее сообщение: 18.02.2024, 18:11
  2. Ответов: 8
    Последнее сообщение: 29.11.2015, 17:38
  3. Связь Rapid SCADA Server и клиентов
    от Evgenyi в разделе Сетевые технологии
    Ответов: 2
    Последнее сообщение: 28.10.2015, 16:10
  4. Максимальное количество элементов для визуализации
    от Борисов Дмитрий в разделе СПК2xx (архив)
    Ответов: 4
    Последнее сообщение: 27.12.2013, 22:17
  5. боязнь клиентов ставить плк
    от Ломастер в разделе Трёп (Курилка)
    Ответов: 40
    Последнее сообщение: 17.11.2010, 16:15

Ваши права

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