Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我需要创建一个使用WCF的小型HMI/SCADA WPF应用程序_Wpf_Wcf_Scada - Fatal编程技术网

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

我需要创建一个使用WCF的小型HMI/SCADA WPF应用程序,wpf,wcf,scada,Wpf,Wcf,Scada,我必须创建一个简单的应用程序,它将适合作为使用WPF和WCF创建HMI屏幕的示例 我不确定WCF在这样的应用程序中应该做什么,我想我的应用程序必须连接一个OPC服务器。应用程序是否使用WCF服务连接到OPC服务器,WCF服务是驻留在应用程序内部还是外部 WCF服务是否仅用于连接OPC服务器?我还不确定要模拟哪个过程,我需要一些简单的东西 请,任何想法都欢迎 感谢您查看并使用一些免费或商用组件作为您喜欢的语言与一些OPC服务器对话并可视化数据。请查看www.opcsystems.net,这是一个非

我必须创建一个简单的应用程序,它将适合作为使用WPF和WCF创建HMI屏幕的示例

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

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

请,任何想法都欢迎


感谢您

查看并使用一些免费或商用组件作为您喜欢的语言与一些OPC服务器对话并可视化数据。

请查看www.opcsystems.net,这是一个非常好的工具包,可用于快速、方便地使用OPC创建WPF SCADA应用程序。

当您提到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应用程序,它将充当HMI,包含所有UI元素。WPF应用程序将使用服务的地址(服务运行的主机地址)、绑定(可能是tcp或http)和契约(接口)为WCF服务创建客户端代理

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


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

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

例如,KepwareEx服务器实现了这些规范并公开了wcf端点

我与Kepware没有任何联系,但我们经常使用他们的产品

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


此外,值得一看的是,在的人员的体系结构描述,他们推出了OPC UA->Silverlight/XAML工具包…

您可以使用开放式自动化软件的WPF HMI.NET产品,该产品使用WCF与Modbus、AB、西门子、OPC、MQTT、AWS等数据源进行通信。

我想就是这样。非常感谢你。根据您的回复,我将有一个连接到OPC DA服务器的服务?我想知道一个WCF服务是否可以充当服务器,例如,它可以处理数据并充当报警服务器吗?我需要创建一个非常简单的项目,opc系统对我来说似乎太多了,但无论如何,谢谢;-)为什么您认为解决方案中有任何OPC服务器;你的问题并没有把这一部分说清楚,因为我制作过的HMI/SCADA应用程序只有Genesis32和Indusoft Web Studio,它们都使用OPC服务器。我甚至不确定在创建使用WCF的showcase应用程序时是否应该使用OPC。