Melhor estrutura ou arquitetura de sistema de telemetria / sistema SCADA design & programação [fechado]

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

Pergunta

Eu perguntei uma pergunta sobre um bom livro para este tópico.

Não ficar muitas respostas, talvez por isso não há bons livros (apesar de eu achar que estranho;Eu devo ir procurar Amazônia para mim).

Na ausência de um livro, talvez há um bom quadro, algumas boas URLs, ou apenas recomendações gerais.

Como eu pedi na outra pergunta:

Estou procurando em vários projetos, todos com praticamente a mesma funcionalidade.

Alguns instrumentos de recolher alguns dados (ou controle de algumas funcionalidades).Eles comunicar-se pela Internet (Ethernet/wifi/GPRS/satélite) com um servidor de banco de dados que armazena o medições e fornece um navegador baseado meios de consultar os dados, a produção de relatórios, etc (e, possivelmente, também permite o controle remoto o equipamento).

Alguém pode recomendar um bom livro descrevendo uma abordagem para o desenvolvimento de tal arquitetura de software, mantendo é genérico, quais ferramentas, linguagens.métodos de ensaio, etc., para uso?

"Livro", por favor, substitua "framework, algumas boas URLs, ou apenas conselhos gerais".

Isso é muito mais comum do sistema padrão.Quem pode aconselhar?

Foi útil?

Solução

Eu tenho escrito um completo sistema SCADA (excluindo-se o costume de instrumentação de hardware).O sistema foi projetado para ser genérico para permitir a criação de novos modelos de hardware, instrumentos e coleta de dados - que não foi escrito como tantos sistemas SCADA para uma empresa individual/planta, mas é utilizado internacionalmente para milhares de empresas/plantas.

Eu era o único programador/designer com um membro da gerência de fiscalização e acompanhamento do projecto.Demorou mais do que forma, mas era factível.Nós olhamos para outros SCADA, sistemas específicos/frameworks já lá fora, e decidiu que, como as nossas unidades foram personalizado, seria mais fácil e mais flexível para escrever o sistema a partir do zero, aproveitando existente de desenvolvimento de frameworks e componentes de terceiros 3.Olhando para trás, isso funcionou muito bem para nós, porque tivemos tempo e habilidade, mas isso geralmente não é a melhor solução, dependendo do seu negócio/modelo de contrato.

Eu já não estou mais com essa empresa, no entanto, eles ainda uso o meu software, exclusivamente, e saí em excelentes condições.Eu ficaria feliz em responder quaisquer perguntas que você tem e para ajudar você aponte na direção certa.

Arquitetura Do Sistema

Aqui está uma visão geral de alto nível do que o sistema consistiu de:

  • Personalizado dispositivos móveis que tinha genérico entradas para acomodar vários instrumentos de vários tipos (analógica, digital, pressão, corrente, flutuadores, etc.)
  • TCP/UDP de pacotes de formato personalizado foram enviados pelas unidades em toda a rede celular (GPRS) para os nossos servidores (Windows Server 2003 R2).Informações foi enviado regularmente para a comunicação, e em personalizável alterações de estado que pode ser programado no dispositivo ou online (a configuração enviada através da rede de celular).
  • Um personalizado Multi-threaded .NET aplicação usando TCP/UDP Ouvintes que pegou os pacotes de entrada (Várias Centenas de milhares de um dia), decifrados cabeçalhos personalizados, e encaminhados os pacotes sem mais a interpretação correta do banco de dados (Alguns clientes necessário o seu próprio sistema autônomo)
  • Um Microsoft SQL 2005 banco de dados que atua como o cérebro de todo o sistema.Os pacotes foram interpretados utilizando Funções CLR e automaticamente acionados alarmes (como configurado), relatórios compilados, e manteve um histórico completo
  • Um personalizado .NET aplicativo para lidar com os alertas por fazer chamadas telefônicas, envio de mensagens SMS e enviar e-mails.O telefone lógica foi tratado por um Intel Dialógica Cartão através de linhas analógicas, utilizando uma combinação de perguntas gravadas e Texto-Para-Fala.
  • 3 ASP.NET sites:
    • Voltadas para o cliente, site, permitindo-lhes gerir as suas contas/sub usuários, controlar os alertas, configure as unidades e alertas, dados do gráfico, mapa de dispositivos, exportação de relatórios, etc.
    • Site de vendas, que permitiu a distribuição de material para as pessoas de vendas, rastreamento de dispositivos individuais, dispositivo de informação de saúde, etc.
    • A gestão interna do site, que permitiu a criação de contas de clientes, a configuração e a construção de unidades, e todos os outros recursos administrativos, conforme necessário.
  • Houve também um costume sistema de monitoramento interno para verificar a integridade do sistema e para alertar os técnicos de problemas, conforme necessário, desde que o sistema precisava de 24/7 uptime.
  • Além disso, nós criamos um aplicativo iOS, um site móvel, e de um serviço web personalizado/cliente (API) para permitir a recuperação de dados do cliente diretamente pelos clientes para lhes permitir integrar a nossa solução com a sua (normalmente personalizado) Sistemas SCADA.

Esses são os componentes utilizados e eles trabalharam.Mais uma vez eu gostaria de mudar algumas coisas.Eu usaria O Windows Server 2008 R2, SQL server 2008 R2, e , em vez de uma Dialógica cartão que eu gostaria de usar o Microsoft TellMe usando VoIP.Também gostaria de usar O Silverlight em vez de ASP.NET.Eu realmente gosto ASP.NET, mas o Silverlight pode dar uma melhor apresentação e pode ser usado fora do browser, como necessário, por um pedido comum de SCADA operadores.

Os sites usados Componentes de terceiros 3 para que a geração de gráficos, de tabelas e de não ter que ser escrito a partir do zero.Há alguns SCADA componentes específicos (em grande parte baseado em Java) lá fora.No entanto, descobrimos que a maioria deles para ser grosseiro, feio, ou muito específica para ser utilizada em nosso sistema genérico (também é caro!Era mais fácil e mais flexível para personalizar um medidor/pacote de gráficos para "fazer" a nossa própria).

Como mencionado, o cérebro do sistema foi o de banco de dados.Isso foi feito porque o Microsoft SQL é muito legal, bem apoiada, produto concebido para a extrema uptimes com grande cópia de segurança e opções de desempenho.Também ficamos realmente impressionados com a .NET integração do CLR o que foi possível, permitindo que nossos personalizado .LÍQUIDO código para ser executado como uma parte do processo.As unidades que foram apoiar veio em uma variedade de modelos e pode ser configurado para usar qualquer combinação de instrumentos e assim manter o banco de dados flexível era a chave. Foi utilizado um lote de normalização!

Uma coisa que ajudou muito foi a utilização de CTEs Recursivas para o falso, a existência de dados quando os valores ainda eram o padrão.Fizemos isso para economizar espaço no banco de dados, mas isso também nos permitiu introduzir uma camada de abstração do banco de dados que permitiu a consulta para ser flexível.

Tivemos mexeu com OPC no passado, mas achei muito inflexível, difícil e irritante para as nossas necessidades.Que era alguns anos atrás, embora, e eu não olhei para ele desde então.

Isso é muito e muito gerais, a resposta para a sua pergunta.Eu não posso dar a você um código específico ou de entrar em detalhe extremo desde que a informação é de propriedade da empresa, mas que eu possa responder a algumas questões de design e apontá-lo para frameworks/ferramentas encontramos úteis.Meu principal conselho seria quebra tudo em componentes separados e empregar a caixa-preta do modelo em cada um de modo que os componentes individuais podem ser trocados melhorou conforme necessário.O escopo do projeto pode parecer esmagadora de outra forma.Deixe-me saber se você tem mais perguntas ou gostaria de obter mais informações, boa sorte!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top