【问题标题】:Best framework or system architecture for telemetry / SCADA system design & programming [closed]遥测/SCADA系统设计和编程的最佳框架或系统架构[关闭]
【发布时间】:2011-01-06 01:59:00
【问题描述】:

我问了a question about a good book for this topic

回复不多,所以可能没有什么好书(虽然我觉得很奇怪;我必须自己去亚马逊搜索)。

在没有书的情况下,也许有一个好的框架、一些好的 URL,或者只是一般的建议。

正如我在另一个问题中所问的那样:

我正在看几个项目,全部 功能大致相同。

一些仪器收集一些数据(或 控制一些功能)。他们 通过互联网进行交流 (以太网/wifi/GPRS/卫星)与 存储数据的数据库服务器 测量并提供浏览器 基于查询数据的方法, 生成报告等(并且可能 还允许控制遥控器 设备)。

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

对于“书”,请替换为“框架、一些好的 URL 或只是一般性建议”。

这是一种非常常见的系统模式。谁能给点建议?

【问题讨论】:

  • 附带说明一下,在询问有关书籍的问题之前,您应该首先去亚马逊:)
  • 这是一个合理的问题,嗯? safaribooksonline.com 上有大量书籍提到 SCADA,但其中大部分是关于安全的。

标签: performance architecture frameworks scada telemetry


【解决方案1】:

我已经编写了一个完整的 SCADA 系统(不包括自定义仪器硬件)。该系统被设计为通用的,以允许创建新的硬件模型、仪器和数据收集 - 它不像为单个公司/工厂编写的许多 SCADA 系统,而是在国际上为数千家公司/工厂使用

我是唯一的开发人员/设计师,其中一名管理人员负责监督和指导项目。这样做花了更长的时间,但它是可行的。我们查看了已经存在的其他 SCADA 特定系统/框架,并决定由于我们的单元是定制的,因此利用现有的开发框架和第 3 方组件从头开始编写系统会更容易、更灵活。回想起来,这对我们来说非常有效,因为我们有时间和技能,但这通常不是最佳解决方案,具体取决于您的业务/合同模型。

我不再在那家公司工作,但是,他们仍然只使用我的软件,我离开的条件很好。我很乐意回答您的任何一般性问题,并帮助您指明正确的方向。

系统架构

以下是系统组成的高级概述:

  • 自定义蜂窝设备具有通用输入以适应多种不同类型的仪器(模拟、数字、压力、电流、浮子等)
  • 自定义格式的 UDP/TCP 数据包由单元通过蜂窝网络 (GPRS) 发送到我们的服务器 (Windows Server 2003 R2)。定期发送信息以进行报告,以及可在设备上或在线编程的可定制状态更改(通过蜂窝网络发送的配置)
  • 使用 TCP/UDP 侦听器的自定义多线程 .NET 应用程序抓取传入的数据包(每天数十万个),破译自定义标头,并路由数据包没有进一步解释到正确的数据库(一些客户端需要自己的独立系统)
  • 一个 Microsoft SQL 2005 数据库,充当整个系统的大脑。使用 CLR 函数 解释数据包并自动触发警报(按配置)、编译报告并保留完整的历史记录
  • 自定义 .NET 应用程序通过拨打电话、发送 SMS 消息和发送电子邮件来处理警报。电话逻辑由英特尔对话卡通过模拟线路使用录制的提示和文本到语音的组合来处理。
  • 3 个 ASP.NET 站点:
    • 面向客户的网站允许他们管理其帐户/子用户、跟踪警报、配置单元和警报、图表数据、地图设备、导出报告等。
    • 允许向销售人员分发材料、跟踪单个设备、设备运行状况报告等的销售网站。
    • 内部管理站点,允许创建客户帐户、配置/构建单元以及所有其他所需的管理功能。
  • 还有一个定制的内部监控系统来验证系统的运行状况,并在必要时提醒技术人员出现问题,因为系统需要 24/7 的正常运行时间。
  • 此外,我们还创建了一个 iOS 应用、一个移动网站和一个自定义 Web 服务/客户端 (API) 以允许检索客户直接收集客户数据,以便他们将我们的解决方案与他们现有的(通常是自定义的) SCADA 系统集成。

这些是我们使用的组件并且它们有效。再做一次,我会改变一些事情。我会使用 Windows Server 2008 R2SQL 2008 R2,而不是 Dialogic 卡,我会使用 Microsoft TellMe 和 VoIP。我也会使用 Silverlight 而不是 ASP.NET。我真的很喜欢 ASP.NET,但 Silverlight 可以提供更好的演示,并且可以根据需要在浏览器之外使用 - 这是 SCADA 操作员的常见请求。

这些网站都使用了第三方组件,因此不必从头开始编写图表和表格。有一些 SCADA 特定组件(主要基于 Java)。然而,我们发现它们中的大多数都是粗糙的、丑陋的,或者太具体而无法在我们的通用系统中使用(也很昂贵!定制仪表/图表包以“制作”我们自己的更容易和更灵活).

如前所述,系统的大脑是数据库。之所以这样做,是因为 Microsoft SQL 是一款非常棒且支持良好的产品,专为超长正常运行时间而设计,具有出色的备份和性能选项。 .NET CLR 集成也给我们留下了深刻的印象,它可以让我们的自定义 .NET 代码作为该过程的一部分运行。我们支持的单元有多种型号,可以配置为使用任何仪器组合,因此保持数据库的灵活性是关键。 我们使用了很多标准化!

真正有用的一件事是使用 递归 CTE 在值仍为默认值时伪造数据的存在。我们这样做是为了节省数据库中的空间,但这也使我们能够在数据库中引入一个抽象层,使查询也变得灵活。

我们过去曾使用过 OPC,但发现它太不灵活、太难了,而且对我们的需求来说太烦人了。不过那是几年前的事了,从那以后我就再也没看过。

对于您的问题,这是一个很长且非常笼统的答案。由于该信息是该公司的财产,因此我无法为您提供具体的代码或非常详细的信息,但我可以回答一些设计问题并为您指出我们认为有用的框架/工具。我的主要建议是将所有内容分解为单独的组件,并在每个组件上使用黑盒模型,以便可以根据需要更换/改进各个组件。否则,该项目的范围似乎势不可挡。如果您还有其他问题或想了解更多信息,请告诉我,祝您好运!

【讨论】:

  • +!和答案。坦克斯。顺便说一句,你看过 OPC 2 吗?
猜你喜欢
  • 2010-12-30
  • 2022-08-20
  • 2013-12-20
  • 1970-01-01
  • 1970-01-01
  • 2011-02-20
  • 1970-01-01
  • 2020-04-28
  • 2012-02-24
相关资源
最近更新 更多