WCFを使用する小さなHMI/SCADA WPFアプリケーションを作成する必要があります
質問
HMI画面を作成するためにWPFとWCFを使用する例として適した簡単なアプリを作成する必要があります。
このようなアプリケーションでWCFが何をすべきかはわかりませんが、アプリケーションが接続するOPCサーバーがあるに違いないと思います。アプリはWCFサービスを使用してOPCサーバーに接続し、WCFサービスはアプリケーション内または外部に存在しますか?
WCFサービスは、OPCサーバーへの接続としてのみ使用することを意図していますか?どのプロセスをシミュレートするかはまだよくわかりませんが、簡単なものが必要です。
どんなアイデアを歓迎してください。
ありがとうございました
解決
あなたが持っているものは、すべてのUI要素を含むHMIとして機能するWPFアプリケーションです。 WPFアプリケーションは、サービスのアドレス(サービスが実行されているホストアドレス)、バインディング(おそらくTCPまたはHTTP)および契約(インターフェイス)を使用して、WCFサービスのクライアントプロキシを作成します。
WCFサービスはどこかでホストされ(ホストアドレス)、バインディングと契約を指定するエンドポイントを公開します。これは、WPFアプリのクライアントプロキシが通信するものです。サービスの契約で実装されている方法は、OPCクラスをインスタンス化し、必要に応じてOPCアイテムを書き込みまたは読み取ります。
最も単純な形式では、おそらく2つのプロジェクトを備えた1つのソリューションがあります。1つはWPFアプリケーション(クライアントプロキシ付き)とWCFサービス用(OPC実装を使用)用です。
他のヒント
www.opcsystems.netをご覧ください。OPCを迅速かつ簡単に使用してWPF SCADAアプリケーションを作成するための非常に多くのキットを提供してください。
を見てみましょう OPC Connect また、一部のOPCサーバーと通信してデータを視覚化するために、お好みの言語には無料または商用コンポーネントを使用してください。
WPF Consumerを作成したい場合は、最適なWCF Way of Goは、新しいOPC-UA実装を使用することです。
たとえば、Kepwareexサーバーはこれらの仕様を実装し、ボックスからWCFエンドポイントを公開します。
Kepwareに所属していませんが、それらの製品をよく使用しました。
それらの詳細 UAガイダンスドキュメント それは私が話していることを示しています。そのクライアントの終わりをリグして、XAML統合を許可することができます(私はそれをしていません)。
また、次の人のアーキテクチャの説明を調べる価値があります ステータスビジョン, 、OPC UA-> Silverlight/XAMLツールキットを出てきている人...
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;
}
}
}
Modbus、AB、Siemens、OPC、MQTT、AWSなどのデータソースとの通信にWCFを使用するOpen Automation SoftwareのWPF HMI .NET製品を使用できます。https://www.openautomationsoftware.com/products/hmi-scada-for-net/wpf-hmi-net/