Лучшая структура или системная архитектура для проектирования и программирования систем телеметрии / SCADA [закрыто]

StackOverflow https://stackoverflow.com/questions/4611111

Вопрос

Я спросил вопрос о хорошей книге по этой теме.

На него не так много ответов, так что, возможно, хороших книг нет (хотя мне это кажется странным;Мне нужно самому пойти поискать на Amazon).

При отсутствии книги, возможно, есть хорошая основа, несколько хороших URL-адресов или просто общий совет.

Как я спросил в другом вопросе:

Я рассматриваю несколько проектов, все с примерно одинаковым функционалом.

Некоторые инструменты собирают некоторые данные (или управлять некоторой функциональностью).Они общаться через Интернет (Ethernet/Wi-Fi/GPRS/спутник) с сервер базы данных, на котором хранится измерения и предоставляет браузер основанные на средствах запроса данных, составление отчетов и т.д. (и, возможно, также позволяет управлять пультом дистанционного управления оборудования).

Может ли кто-нибудь порекомендовать хорошую книгу Описание подхода к разработке такую архитектуру программного обеспечения, сохраняя Это обобщенные, какие инструменты, языки.методы тестирования и т. д. использовать?

Вместо «книги» замените «фреймворк, несколько хороших URL-адресов или просто общие советы».

Это очень распространенная системная закономерность.Кто может посоветовать?

Это было полезно?

Решение

Я написал полную систему SCADA (за исключением специального инструментального оборудования).Система была разработана как универсальная, позволяющая создавать новые модели оборудования, инструменты и сбор данных. Она не была написана как многие системы SCADA для отдельной компании/завода, но используется по всему миру тысячами компаний/заводов.

Я был единственным разработчиком/дизайнером, а один из руководителей курировал и руководил проектом.Этот путь занял больше времени, но это было выполнимо.Мы рассмотрели другие уже имеющиеся системы/платформы SCADA и решили, что, поскольку наши устройства были изготовлены по индивидуальному заказу, было бы проще и гибче написать систему с нуля, используя существующие среды разработки и сторонние компоненты.Оглядываясь назад, можно сказать, что для нас это сработало очень хорошо, потому что у нас было время и навыки, но, как правило, это не лучшее решение в зависимости от вашей модели бизнеса/контракта.

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

Архитектура системы

Вот общий обзор того, из чего состояла система:

  • Пользовательские сотовые устройства с универсальными входами для работы с несколькими инструментами разных типов. (аналоговый, цифровой, давление, сила тока, поплавок и т. д.)
  • Пакеты UDP/TCP пользовательского формата отправлялись устройствами через сотовую сеть (GPRS) на наши серверы (Windows-сервер 2003 Р2).Информация отправлялась регулярно для отчетности, а также о настраиваемых изменениях состояния, которые можно было запрограммировать на устройстве или в Интернете. (конфигурация, отправленная по сотовой сети).
  • Пользовательский многопоточный .СЕТЬ приложение, использующее прослушиватели TCP/UDP, которые захватывают входящие пакеты (несколько сотен тысяч в день), расшифровал пользовательские заголовки и направил пакеты без дальнейшей интерпретации в правильную базу данных. (Некоторым клиентам требовалась собственная автономная система)
  • А Майкрософт SQL 2005 база данных, которая выступала в качестве мозга для всей системы.Пакеты интерпретировались с использованием CLR-функции и автоматически активируемые сигналы тревоги (как настроено), составлял отчеты и вел полную историю
  • Обычай .СЕТЬ приложение для обработки оповещений путем совершения телефонных звонков, отправки SMS-сообщений и отправки электронных писем.Логика телефона обрабатывалась Карта Intel Dialogic по аналоговым линиям, используя комбинацию записанных подсказок и преобразования текста в речь.
  • 3 АСП.НЕТ места:
    • Сайт, ориентированный на клиентов, который позволял им управлять своими учетными записями/подпользователями, отслеживать оповещения, настраивать устройства и оповещения, данные диаграмм, картографические устройства, экспортировать отчеты и т. д.
    • Сайт продаж, который позволял распространять материалы среди продавцов, отслеживать отдельные устройства, составлять отчеты о состоянии устройств и т. д.
    • Сайт внутреннего управления, который позволял создавать учетные записи клиентов, настраивать/создавать подразделения и использовать все другие административные функции по мере необходимости.
  • Также существовала специальная внутренняя система мониторинга для проверки работоспособности системы и оповещения технических специалистов о проблемах при необходимости, поскольку системе требовалась круглосуточная работоспособность.
  • Кроме того, мы создали iOS-приложение, а мобильный сайт, и пользовательский веб-сервис/клиент (API), чтобы позволить клиентам получать данные о клиентах напрямую, чтобы они могли интегрировать наше решение с существующими (обычно индивидуально) СКАДА-системы.

Это компоненты, которые мы использовали, и они работали.Делая это снова, я бы изменил пару вещей.я хотел бы использовать Windows Сервер 2008 Р2, SQL 2008 Р2, а вместо карты Dialogic я бы использовал Microsoft Скажи мне с помощью VoIP.Я бы также использовал Сильверлайт вместо ASP.NET.Мне очень нравится ASP.NET, но Silverlight может дать гораздо лучшее представление и при необходимости может использоваться вне браузера — частый запрос операторов SCADA.

Все используемые сайты Сторонние компоненты чтобы диаграммы и таблицы не приходилось писать с нуля.Есть некоторые специфические компоненты SCADA. (в основном на основе Java) там.Однако мы обнаружили, что большинство из них грубы, уродливы или слишком специфичны для использования в нашей общей системе. (тоже дорого!Было проще и гибче настроить пакет датчиков/графиков, чтобы «сделать» свой собственный).

Как уже упоминалось, мозгом системы была база данных.Это было сделано потому, что Microsoft SQL — это отличный продукт с хорошей поддержкой, рассчитанный на максимальное время безотказной работы и обладающий отличными возможностями резервного копирования и повышения производительности.Мы также были очень впечатлены Интеграция .NET CLR это было возможно, позволяя запускать наш собственный код .NET как часть этого процесса.Устройства, которые мы поддерживали, выпускались в различных моделях и могли быть настроены для использования любой комбинации инструментов, поэтому сохранение гибкости базы данных было ключевым моментом. Мы использовали много нормализации!

Одна вещь, которая действительно помогла, - это использовать Рекурсивные CTE чтобы имитировать существование данных, когда значения все еще были значениями по умолчанию.Мы сделали это для экономии места в базе данных, но это также позволило нам ввести в базу данных уровень абстракции, который также позволил сделать запросы гибкими.

В прошлом мы имели дело с OPC, но сочли его слишком негибким, сложным и раздражающим для наших нужд.Хотя это было несколько лет назад, и с тех пор я на него не смотрел.

Это длинный и очень общий ответ на ваш вопрос.Я не могу дать вам конкретный код или вдаваться в подробности, поскольку эта информация является собственностью этой компании, но я могу ответить на некоторые вопросы по дизайну и указать вам на фреймворки/инструменты, которые мы сочли полезными.Мой главный совет будет заключаться в том, чтобы разбейте все на отдельные компоненты и используйте модель черного ящика для каждого, чтобы отдельные компоненты можно было заменять/улучшать по мере необходимости..В противном случае масштабы проекта могут показаться огромными.Дайте мне знать, если у вас есть дополнительные вопросы или вам нужна дополнительная информация, удачи!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top