我需要创建一个使用WCF的小型HMI/SCADA WPF应用程序

问题描述:

我必须创建一个简单的应用程序,它适合作为使用WPF和WCF创建HMI屏幕的示例。我需要创建一个使用WCF的小型HMI/SCADA WPF应用程序

我不确定WCF应该在这样的应用程序中做什么,我想必须有一个我的应用程序连接到的OPC服务器。应用程序是否使用WCF服务连接到OPC服务器,并且WCF服务驻留在应用程序内部还是外部?

WCF服务是否仅用于连接OPC服务器?我还不确定要模拟哪个流程,我需要一些简单的东西。

请任何想法都欢迎。

谢谢

+0

为什么你认为解决方案中有任何OPC服务器;你的问题没有说明这一部分。 – 2011-02-28 09:29:47

+0

因为我曾经制作过的HMI/SCADA应用程序在Genesis32和Indusoft Web Studio中,两者都使用OPC服务器。我甚至不确定在创建使用WCF的展示应用程序时是否应该使用OPC。 – HomeMade 2011-03-02 11:54:46

这听起来像你将拥有一个WPF应用程序,将作为HMI,包含所有的UI元素。 WPF应用程序将使用地址(运行服务的主机地址),绑定(可能是tcp或http)和服务的契约(接口)为WCF服务创建客户端代理。

WCF服务将托管在某处(主机地址)并公开指定绑定和合同的端点。这是您的WPF应用程序的客户端代理将与之通信的内容。在服务合同中实现的方法将实例化OPC类,并根据需要写入或读取OPC项目。

以其最简单的形式,您可能有两个项目的解决方案:一个用于WPF应用程序(带有客户端代理),一个用于WCF服务(带有OPC实现)。

+0

我认为就是这样。非常感谢你。根据您的回复,我将有一个连接到OPC DA服务器的服务?我想知道是否有一个WCF服务可以充当服务器,例如,它可以处理数据并充当警报服务器吗? – HomeMade 2011-01-10 12:39:56

看看OPC Connect,并使用一些免费或商业成分为您喜欢的语言向一些OPC服务器和数据可视化。

查看www.opcsystems.net,可以快速方便地使用OPC创建WPF SCADA应用程序。

+0

我需要创建非常简单的项目,opc系统对我来说似乎太多了,但是非常感谢;-) – HomeMade 2011-01-10 12:42:44

当你提到OPC时,我假设你在谈论OPC DA。 OPC只是一个通信协议,你可能想为你的系统创建一个包装。这是一个松散的例子,说明如何使用C#和托管包装实现简单的OPC DA读取。

namespace ScadaServiceLibrary 
{ 
    [ServiceContract] 
    public interface IDataClass 
    { 
     [OperationContract] 
     string RetrieveValues(string OpcPath); 
    } 

    public class DataClass : IDataClass 
    { 

     .... 

     public string RetrieveValue(string OpcPath) 
     { 
      // Retrieve data here. ScadaServer is a Opc.Da.Server type. 
      // Example assumes you have a dictionary of the item handles keyed 
      // to the path. 

      string value = null; 

      Opc.Da.Item item = new Opc.Da.Item(); 

      item.ItemName = OpcPath; 
      item.ClientHandle = Handles[OpcPath]; 
      item.Active = true; 
      item.ActiveSpecified = true; 

      Opc.Da.Item[] items = new Opc.Da.Item[1]; 
      items[0] = item; 
      Opc.Da.ItemValueResult[] results = ScadaServer.Read(items); 

      if (results != null && results.Length > 0) 
      { 
       Opc.Da.ItemValueResult result = results[0]; 
       value = result.Value.ToString(); 
      } 

      return value; 
     } 
    } 
} 

如果您想创建WPF使用者,您最好的WCF使用方法是使用新的OPC-UA实现。

例如,KepwareEx服务器实现了这些规范,并将wcf端点暴露在外。

我与Kepware没有任何关系,但我们使用他们的产品了很多。

更多关于他们的UA Guidance document的信息显示了我在说什么。您可以装配该客户端以允许xaml集成(我没有这样做)。

此外,这是值得探讨的家伙在Status Vision建筑的描述,谁是走出来的OPC UA - >的Silverlight/XAML的工具包...

您可以使用开放式自动化软件的WPF HMI .NET产品使用WCF与来自Modbus,AB,西门子,OPC,MQTT,AWS等的数据源进行通信。 https://www.openautomationsoftware.com/products/hmi-scada-for-net/wpf-hmi-net/