本文介绍了最好的框架或系统架构遥测/ SCADA系统的设计和放大器;程序设计的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我问a关于一本好书本主题问题。

这不是越来越多回复,所以也许有arn't任何好书(虽然我觉得奇怪,我必须去寻找亚马逊自己)。

It's not getting many replies, so maybe there arn't any good books (although I find that strange; I must go search Amazon for myself).

在没有一本书,也许是tehre一个很好的框架,一些好的网址,或者只是一般性的建议。

In the absence of a book, maybe tehre is a good framework, some good URLs, or just general advice.

当我问另一个问题:

我在看的几个项目,所有
  大致相同的功能。

有些仪器收集一些数据(或
  控制某些功能)。他们
  commmunicate互联网
  (Etehrnet / WIFI / GPRS / sasatellite)与
  存储该一个DATABSE服务器
  测量,并提供一个浏览器
  qeurying数据的基础的装置,
  prodcuing报告等(也可能是
  还允许远程控制
  设备)。

Some instruments collect some data (or control some functionality). They commmunicate by Internet (Etehrnet/wifi/GPRS/sasatellite) with a databse server which stores the measurements and provides a browser based means of qeurying the data, prodcuing reports, etc (and possibly also allows control of the remote equipment).

谁能推荐一本好书
  描述一个方法来发展
  这样的软件结构,保持
  它通用的,哪些工具,语言文字。
  测试方法等使用?

Can anyone recommend a good book describing an approach to developing such a software architecture, keeping it generic, which tools, languages. test methods, etc to use?

有关书,请替换的框架,一些好的网址,或者只是一般性的建议。

For "book", please substitute "framework, some good URLs, or just general advice".

这是一个非常普遍的系统模式。谁可以告诉?

This is a very common system pattern. Who can advise?

推荐答案

我写了一个完整的SCADA系统的(不包括自定义仪器硬件)的。该系统的设计是通用的,允许新的硬件模型,工具和数据收集创作 - 这是不是这样写那么多的SCADA系统对单个公司/工厂,但国际上使用的数以千计的公司/工厂

I have written a complete SCADA system (excluding the custom instrumentation hardware). The system was designed to be generic to allow the creation of new hardware models, instruments, and data collection - it was not written like so many SCADA systems for an individual company/plant but is used internationally for thousands of companies/plants.

我是管理监督和指导项目的一个成员的唯一开发者/设计师。这需要较长的时间的方式,但它是可行的。我们期待在其他SCADA特定系统/框架已经存在,并且决定,因为我们的单位是自定义的,它会更容易,更灵活从头开始编写利用现有的发展框架和第三方组件的系统。回过头来看,这个合作的很好了我们,因为我们有时间和技能,但一般不会根据您的业务/合同模式的最佳解决方案。

I was the sole developer/designer with one member of management overseeing and guiding the project. It took longer that way, but it was doable. We looked at other SCADA specific systems/frameworks already out there and decided that since our units were custom, it would be easier and more flexible to write the system from scratch leveraging existing development frameworks and 3rd party components. Looking back, this worked out really well for us because we had the time and skill, but this is generally not the best solution depending on your business/contract model.

我与该公司不再,但是,他们仍然只使用我的软件,我离开了优良条件。我会很乐意回答您有任何一般性问题,并帮助你指出正确的方向。

I am no longer with that company, however, they still use my software exclusively and I left on excellent terms. I would be happy to answer any general questions you have and to help point you in the right direction.

下面是一个什么样的系统由一个高层次的概述:

Here is a high-level overview of what the system consisted of:


  • 是有通用输入,以适应不同类型的多个仪器定制手机装置的(模拟,数字,pressure,电流,花车等)

  • 自定义格式的
  • UDP / TCP数据包是由整个小区网络(GPRS)到我们的服务器的单位发(的Windows Server 2003 R2)。信息是定时发送的报告,以及对可能在设备编程或网上定制的状态变化的(发送的小区网络配置)

  • 自定义多线程的 .NET 使用抢下TCP / UDP监听传入数据包的(几十万一天)应用程序的,破译自定义标头,并击溃了包没有进一步间pretation到正确的数据库的(需要一些客户自己独立的系统)

  • A 微软SQL 2005 数据库充当大脑的整个系统。包用的 CLR函数 PTED间$ P $,并自动触发的警报的(如配置)的,编制报告,并保存完整的历史

  • 自定义的 .NET 应用程序通过将电话,发送短信,并发送电子邮件处理警报。这款手机的逻辑是由英特尔Dialogic的卡通过使用录制的提示和文本到语音的组合模拟线路。
  • 处理
  • 3 ASP.NET 站点:

    • 面向客户的网站,让他们来管理他们的帐户/子用户,跟踪警报,配置单位和警报,图表数据,地图的设备,出口报告等。

    • 销售网站,使材料对销售人员的分布,单个设备,设备运行状况报告等跟踪。

    • 内部管理的网站,允许客户账户,单位配置/构建,并根据需要,所有的管理功能建立

    • Custom Cellular devices that had generic inputs to accommodate multiple instruments of varying types (analog, digital, pressure, amperage, floats, etc.)
    • UDP/TCP packets of custom format were sent by the units across the cell network (GPRS) to our servers (Windows Server 2003 R2). Information was sent regularly for reporting, and on customizable state changes that could be programmed at the device or online (the configuration sent over the cell network).
    • A custom Multi-threaded .NET application using TCP/UDP Listeners that grabbed incoming packets (Several Hundred-thousand a day), deciphered custom headers, and routed the packets without further interpretation to the correct database (Some clients required their own standalone system)
    • A Microsoft SQL 2005 database that acted as the brain for the entire system. Packets were interpreted using CLR functions and automatically triggered alarms (as configured), compiled reports, and kept a full history
    • A custom .NET application to handle alerts by placing phone calls, sending SMS messages, and sending emails. The phone logic was handled by an Intel Dialogic Card over analog lines using a combination of recorded prompts and Text-To-Speech.
    • 3 ASP.NET sites:
      • Customer facing site that allowed them to manage their accounts/sub users, track alerts, configure units and alerts, chart data, map devices, export reports, etc.
      • Sales site that allowed the distribution of material to sales people, tracking of individual devices, device health reporting, etc.
      • Internal management site that allowed the creation of customer accounts, the configuration/build of units, and all other administrative features as required.

      这些都是我们使用的组件和他们的工作。这样做一遍我会改变一些事情。我会使用的Windows Server 2008 R2 SQL 2008 R2 并的,而不是Dialogic的卡我会用微软的 Tellme公司使用VoIP。我也使用的Silverlight 而不是ASP.NET。我真的很喜欢ASP.NET,但Silverlight的可以提供一个更好的presentation,可以将浏览器作为必要的外部使用 - 从SCADA运营商的共同要求

      Those are the components we used and they worked. Doing it again I would change a couple of things. I would use Windows Server 2008 R2, SQL 2008 R2, and instead of a Dialogic card I would use Microsoft TellMe using VoIP. I would also use Silverlight instead of ASP.NET. I really like ASP.NET, but Silverlight can give a much better presentation and can be used outside of the browser as necessary - a common request from SCADA operators.

      所有使用的第三方组件,使图表和表格没有足够的站点从头开始编写。有一些SCADA特定组件的(主要是基于Java)的在那里。然而,我们发现他们大多是粗糙的,丑陋的,或者太具体的在我们的通用系统中使用的(还贵!这是更方便,更灵活的自定义表/图表包制造自己)

      The sites all used 3rd party components so that charting, and tables didn't have to be written from scratch. There are some SCADA specific components (largely Java based) out there. However, we found most of them to be crude, ugly, or way too specific to be used in our generic system (also expensive! It was easier and more flexible to customize a gauge/charting package to "make" our own).

      如前所述,系统的大脑数据库。这样做是因为微软SQL是pretty真棒,专为以极大的备份和性能选择极端的正常运行时间以及支持的产品。我们也确实IM与 .NET CLR集成这是有可能让我们的自定义.NET code,以作为该进程的一部分运行pssed $ P $。我们支持单位进来了多种型号,并且可以配置为使用仪器的任意组合,因此保持数据库灵活是关键。 我们使用了大量的归!

      As mentioned, the brain of the system was the database. This was done because Microsoft SQL is a pretty awesome, well supported product designed for extreme uptimes with great backup and performance options. We were also really impressed with the .NET CLR integration that was possible allowing our custom .NET code to run as a part of that process. The units we were supporting came in a variety of models and could be configured to use any combination of instruments and so keeping the database flexible was key. We used a lot of normalization!

      一件事,真正帮助是​​使用递归的CTE 以数据的假货存在,当值仍是默认的。这样做是为了节省空间在数据库中,但是这也使我们能够在允许的查询是柔性的,以及数据库引入了一个抽象层。

      One thing that really helped was to use Recursive CTEs to fake the existence of data when the values were still the default. We did this to save space in the database, but this also enabled us to introduce a layer of abstraction in the database that allowed the queries to be flexible as well.

      我们曾与OPC搞砸了过去,但发现它太不灵活,难以和刺激性我们的需要。那是几年前的,虽然,我没有,因为看着它。

      We had messed with OPC in the past but found it too inflexible, difficult, and irritating for our needs. That was a few years ago though, and I haven't looked at it since.

      这是一个漫长而非常普遍的回答你的问题。我不能给你具体的code或进入极致的细节,因为这些信息是公司财产,但我可以回答一些设计问题,并为您指出我们发现的有用的框架/工具。我的主要建议是为 打破一切分解成独立的组件和应用在每一个黑盒子模型,使各个组件可以被交换出去的/改进的必要。该项目的范围似乎可以压倒其他。让我知道,如果你有其他疑问或想了解更多信息,祝你好运!

      That is a long and very general answer to your question. I can't give you specific code or go into extreme detail since that information is property of that company, but I can answer some design questions and point you towards frameworks/tools we found helpful. My main advice would be to break everything down into separate components and employ the black box model on each so that individual components can be swapped out/improved as necessary. The scope of the project can seem overwhelming otherwise. Let me know if you have further questions or would like more information, good luck!

      这篇关于最好的框架或系统架构遥测/ SCADA系统的设计和放大器;程序设计的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-20 23:39