Meilleur cadre ou de l'architecture système de télémétrie / conception et programmation système SCADA [fermé]

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

Question

J'ai demandé une question sur un bon livre pour ce sujet .

Il ne reçoit pas beaucoup est réponses, alors peut-être il n'y a pas de bons livres (même si je trouve cela étrange, je dois aller chercher Amazon pour moi-même).

En l'absence d'un livre, peut-être il y a un bon cadre, quelques bonnes adresses URL, ou tout simplement des conseils généraux.

Comme je l'ai demandé à l'autre question:

  

Je suis à la recherche à plusieurs projets, tous   avec à peu près les mêmes fonctionnalités.

     

Certains instruments recueillent des données (ou   contrôler certaines fonctionnalités). Ils   communiquer par Internet   (Ethernet / WiFi / GPRS / satellite) avec   un serveur de base de données qui stocke les   mesures et fournit un navigateur   des moyens sur la base de l'interrogation des données,   la production de rapports, etc (et peut-être   permet également le contrôle de la télécommande   l'équipement).

     

Quelqu'un peut-il recommander un bon livre   décrivant une approche de développement   une telle architecture logicielle, en gardant   il générique, quels outils, langues.   méthodes d'essai, etc à utiliser?

Pour « livre », s'il vous plaît remplacer « cadre, quelques bonnes adresses URL, ou tout simplement des conseils généraux ».

Ceci est un modèle de système très commun. Qui peut me conseiller?

Était-ce utile?

La solution

J'ai écrit un système SCADA complet (à l'exception du matériel d'instrumentation personnalisé) . Le système a été conçu pour être générique pour permettre la création de nouveaux modèles de matériel, les instruments et la collecte des données - il n'a pas été écrit comme autant de systèmes SCADA pour une société / usine individuelle, mais est utilisé au niveau international pour des milliers d'entreprises / plantes .

Je suis le seul développeur / concepteur avec un membre de superviser la gestion et l'orientation du projet. Il a fallu plus de cette façon, mais il était faisable. Nous avons examiné d'autres systèmes spécifiques SCADA / cadres déjà là-bas et avons décidé que, puisque nos unités étaient sur mesure, il serait plus facile et plus souple pour écrire le système de levier financier scratch cadres de développement existants et des composants 3ème partie. En regardant en arrière, cela a vraiment très bien pour nous, car nous avions le temps et les compétences, mais cela est généralement pas la meilleure solution en fonction de votre modèle d'affaires / contrat.

Je ne suis plus avec cette société, cependant, ils utilisent encore exclusivement mon logiciel et je suis parti dans d'excellentes conditions. Je serais heureux de répondre à toutes vos questions générales et pour vous aider à pointer dans la bonne direction.

Architecture système

Voici un aperçu de haut niveau de ce que le système était composé de:

  • Personnaliser les appareils cellulaires qui ont des entrées génériques pour tenir compte de plusieurs instruments de divers types (analogique, numérique, pression, ampérage, flotteurs, etc.)
  • paquets UDP / TCP de format personnalisé ont été envoyés par les unités à travers le réseau cellulaire (GPRS) à nos serveurs ( Windows Server 2003 R2). L'information a été envoyé régulièrement des rapports, et sur les changements d'état personnalisables qui pourraient être programmées sur l'appareil ou en ligne (la configuration envoyée sur le réseau cellulaire) .
  • Une application personnalisée multi-thread .NET en utilisant TCP / Listeners UDP qui a attiré les paquets entrants (plusieurs centaines de mille par jour) , déchiffré en-têtes personnalisés et mis en déroute la paquets sans interprétation plus à la base de données correcte (Certains clients ont exigé leur propre système autonome)
  • Microsoft SQL 2005 base de données qui a agi comme le cerveau pour l'ensemble du système. Ont été interprétés à l'aide Packets fonctions CLR et déclenché automatiquement des alarmes (selon la configuration) , les rapports compilés, et a conservé un historique complet
  • Une coutume .NET application pour gérer les alertes en plaçant des appels téléphoniques, envoyer des messages SMS et l'envoi de courriels. La logique de téléphone a été traitée par un Intel Dialogic carte sur des lignes analogiques en utilisant une combinaison d'invites enregistrées et Text-To-Speech.
  • 3 ASP.NET des sites :
    • site face à la clientèle qui leur a permis de gérer leurs comptes / utilisateurs, sous alertes de piste, configurer des unités et des alertes, les données cartographiques, dispositifs cartographiques, rapports d'exportation, etc.
    • site de vente qui a permis la distribution de matériel aux personnes de vente, suivi des dispositifs individuels, rapports sur la santé de l'appareil, etc.
    • site de gestion interne qui a permis la création de comptes clients, la configuration / construction d'unités, et toutes les autres fonctions administratives au besoin.
  • Il y avait aussi un système de contrôle interne sur mesure pour vérifier la santé du système et d'alerter les techniciens des problèmes que nécessaire puisque le système avait besoin de disponibilité 24/7.
  • En outre, nous avons créé un pour permettre la récupération iOS app , un site mobile , et un service Web personnalisé / client ( API ) des données clients directement par les clients pour leur permettre d'intégrer notre solution avec leur existant (généralement sur commande) systèmes SCADA.

Ce sont les éléments que nous avons utilisés et ils ont travaillé. Le faire à nouveau je changer une ou deux choses. J'utiliser Windows Server 2008 R2 , SQL 2008 R2 , et au lieu d'une carte Dialogic j'utiliser Microsoft TellMe en utilisant la VoIP. Je également utiliser Silverlight au lieu de ASP.NET. Je aime vraiment ASP.NET, mais Silverlight peut donner une présentation beaucoup mieux et peut être utilisé en dehors du navigateur si nécessaire -. Une demande commune des opérateurs SCADA

Les sites utilisés tous les composants 3ème partie pour que les diagrammes et les tableaux ne doivent être écrits à partir de zéro. Il y a quelques composants spécifiques SCADA (en grande partie Java) là-bas. Cependant, nous avons trouvé la plupart d'entre eux d'être grossier, laid ou trop spécifique à utiliser dans notre système générique (aussi cher! Il est plus facile et plus flexible pour personnaliser un paquet jauge / cartographie de « faire » notre propre ) .

Comme mentionné précédemment, le cerveau du système était la base de données . Cela a été fait parce que Microsoft SQL est un joli produit impressionnant, bien soutenu conçu pour uptimes extrêmes avec de grandes options de sauvegarde et de performance. Nous avons également été très impressionnés par la intégration CLR .NET qui était possible permettant à notre code personnalisé .NET pour exécuter en tant que partie de ce processus. Les unités que nous soutenions sont venus dans une variété de modèles et peuvent être configurés pour utiliser toute combinaison d'instruments et ainsi maintenir la base de données flexible a été la clé. Nous avons utilisé beaucoup de normalisation!

Une chose qui a vraiment aidé était d'utiliser récursive CTEs pour simuler l'existence de données lorsque les valeurs étaient encore la valeur par défaut. Nous l'avons fait économiser de l'espace dans la base de données, mais cela nous a permis d'introduire une couche d'abstraction dans la base de données qui a permis aux requêtes d'être flexibles ainsi.

Nous avions sali avec OPC dans le passé, mais jugé trop rigide, difficile et irritant pour nos besoins. C'était il y a quelques années cependant, et je n'ai pas regardé depuis.

C'est une réponse longue et très générale à votre question. Je ne peux pas vous donner un code spécifique ou entrer dans les détails extrêmes puisque cette information est la propriété de cette société, mais je peux répondre à quelques questions de conception et de vous orienter vers les cadres / outils que nous avons trouvé utile. Mon principal conseil serait de tout casser en composants séparés et utiliser le modèle de boîte noire sur chacun afin que les composants individuels peuvent être permutées / amélioration nécessaire . La portée du projet peut sembler écrasante autrement. Laissez-moi savoir si vous avez des questions ou désirez plus d'informations, bonne chance!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top