Повышение производительности с помощью тегов OPC

Я работаю с программным пакетом для автоматизации на базе ПК под названием Think'n'Do, созданным Phoenix Contact. Он выполняет обработку в реальном времени, считывает входы / управляющую логику / записывает выходы, все это занимает максимум 50 мс. У нас есть сервер OPC, который считывает / записывает теги из ПЛК каждые 10 мс. Имеется большая задержка при записи тега в ПЛК и считывании записанного значения (Think'n'Do (50 мс)> OPC Server (10ms)> PLC (10ms)> OPC Server (10ms)> Think'n'Do (50 мс)) этот процесс занимает до 6 секунд, тогда как по моим расчетам он должен занимать всего 130 мс.

Были бы полезны любые идеи о том, где искать или почему это может занять намного больше времени.

За пределами сигналов Angular: Сигналы и пользовательские стратегии рендеринга
За пределами сигналов Angular: Сигналы и пользовательские стратегии рендеринга
TL;DR: Angular Signals может облегчить отслеживание всех выражений в представлении (Component или EmbeddedView) и планирование пользовательских...
Sniper-CSS, избегайте неиспользуемых стилей
Sniper-CSS, избегайте неиспользуемых стилей
Это краткое руководство, в котором я хочу поделиться тем, как я перешел от 212 кБ CSS к 32,1 кБ (сокращение кода на 84,91%), по-прежнему используя...
4
0
8 778
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Это зависит от того, как у вас настроен клиент OPC для получения данных. Когда вы подписываетесь на группу в OPC, вы можете указать частоту обновления. По умолчанию это может быть 1 с или даже 5 с, в зависимости от клиента OPC. Также существует ограничение, которое сервер OPC может установить на частоту обновления данных. Это применимо только в том случае, если ваш OPC-клиент подписывается на события изменения данных.

Другой способ - выполнить асинхронное или синхронизирующее чтение / запись на сервер OPC. Также есть несколько режимов чтения. Поскольку вы используете OPC, вы можете использовать любой клиент, совместимый с OPC, для тестирования вашего сервера, это скажет вам, связана ли проблема с настройкой в ​​Think'n'Do или с ПЛК / сервером.

Лучший универсальный клиент OPC, который я использовал, - это OPC Quick Client. Вы можете получить его с TOP Server здесь: http://www.toolboxopc.com/Features/Demo/demo.shtml. Просто возьмите демонстрацию TOP Server и установите OPC Quick Client. Вы можете использовать его для подключения к вашему серверу OPC, просмотра тегов и просмотра данных. Второй лучший клиент OPC, который я использовал, - это ICONICS (называемый OPC Data Spy), доступный здесь: http://www.iconics.com/support/free_tools.asp.

Используйте клиент OPC, чтобы узнать, насколько быстро вы можете читать данные. Убедитесь, что вы правильно установили частоту обновления группы. Я думаю, что инструменты могут предоставить вам некоторую информацию о времени (но вы сможете довольно легко вычислить 6-секундную задержку).

Если система выполняет синхронное чтение (блокирование вызова ввода-вывода), затем реализует логику вашего приложения, а затем синхронную запись (снова блокировку), тогда вам необходимо учитывать, что существует несколько циклов передачи данных к ПЛК.

Синхронное чтение включает приложение (запрос) -> OPCServer-> PLC-> OPCServer-> App (результат). Это только чтение для одного элемента (хотя вы можете запросить группу элементов за один раз).

Затем аналогичная синхронизация записи также включает приложение (запись) -> OPCServer-> PLC-> OPCServer-> App (Done).

Асинхронное чтение и запись и групповое чтение и запись могут помочь уменьшить блокировку приложения, но будьте осторожны, чтобы ваше приложение могло справиться с этим ансинхронным поведением.

Еще одна вещь, на которую следует обратить внимание, - это конфигурация ПЛК. В ПЛК Allen-Bradley есть настройка задержки между сканированием, которая используется для обслуживания запросов ввода-вывода по внешним сетям. Если этого времени мало и у вас высокая пропускная способность данных, это замедлит работу.

Вот несколько мест, где можно посмотреть: конфигурация клиента OPC, сам клиент OPC, сервер OPC или сам ПЛК.

Вот что следует проверить:

  1. Конфигурация клиента OPC - Группа OPC, в которую вы добавили теги OPC, должна иметь высокую скорость сканирования (например, от 100 мс до 1 секунды в зависимости от того, для чего вы ее используете). Заметили ли вы, записывая значения, если значения поступают быстрее? В противном случае может быть проблема с конфигурацией DCOM или сети.
  2. OPC Client - загрузите бесплатное программное обеспечение OPC Client (возможно, с веб-сайта OPC Foundation или основных поставщиков программного обеспечения OPC Server), чтобы узнать, быстрее ли вы получите значения обратно. Если это так, возможно, проблема связана с вашим клиентом.
  3. Сервер OPC - Некоторые серверы OPC имеют средства диагностики. Включите их и посмотрите, во сколько на самом деле происходит запись и во сколько на самом деле происходит чтение. Если вы сможете ответить на эти вопросы, вы, вероятно, сможете определить, кто виноват в задержке: ПЛК или сервер OPC. Также обратите внимание на использование ЦП OPC-сервера: если вы заметили, что он использует больше ЦП, чем обычно, это, вероятно, означает, что OPC-сервер загружен, что может снизить производительность.
  4. Другое - наконец, проверьте ПЛК, сеть работает правильно.

Похоже, что вы не используете кеш на сервере OPC. Обычно серверы OPC имеют кеш, если ваш клиент подключается и не указывает, что он хочет использовать кеш, вы не получите необходимой производительности. Сервер OPC отвечает за обновление кэша с устройства, хотя критерии обновления могут отличаться от сервера OPC к серверу OPC.

Другие вопросы по теме