首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用C#从wincc读取数据

使用C#从wincc读取数据
EN

Stack Overflow用户
提问于 2015-06-08 14:44:02
回答 3查看 3.1K关注 0票数 0

我需要开发一个应用程序,通过wincc接口读取PLC中的一些值,我已经四处寻找过,但我发现的示例都是使用第三方软件。我需要的功能非常基本:我只需要读取PLC中的值一次,而不需要进行任何进一步的通信。有没有简单的方法可以做到这一点?

EN

回答 3

Stack Overflow用户

发布于 2015-09-23 20:44:16

通过Wincc:实现PLC值的读取

乍一看,我会建议通过PLC直接阅读,或者使用OPC,TCP电报或一些第三方库,如libnodave。它在使用上更具表现力和优雅。

现在回到您的问题,您需要wincc为您的应用程序提供值。我将提出以下建议:

  1. 创建.net控件或全局脚本。
  2. 创建wcf服务或数据库连接接口(取决于application).
  3. Connect plc在其中发送值的标记),并通过

或数据库接口对其进行padd。

我认为这种方法在不影响wincc的wincc的情况下从wincc中获取值要干净得多。另一方面,你也可以使用wincc作为opc服务器。

票数 1
EN

Stack Overflow用户

发布于 2015-06-20 17:39:23

你的问题有点含糊。您给出的描述是一个基本的WinCC功能。从PLC读出值(称为标记)并将其显示在WinCC中。我认为这不是问题所在。

你的意思是从WinCC读出一个标记(内部或外部)到你自己的应用程序吗?这可以通过WinCC中的ODK选项来完成。但是,就像Scada/DCS中的每个开发工具包一样,不是免费提供的。

或者要从WinCC中也使用的PLC值读出,则需要S7连接或开放通信。S7需要连接资源和可编程控制器中的配置。开放式通信(通过TCP/IP完成)需要在PLC中编程。

票数 0
EN

Stack Overflow用户

发布于 2015-07-04 14:00:45

下面是使用WinCC的程序标识符的示例:

代码语言:javascript
复制
System.Type oType = System.Type.GetTypeFromProgID("WinCC-Runtime-Project");
object wincc = System.Activator.CreateInstance(oType);

//Read the name of the runtime database (the @-Prefix identifies WinCC-System-Tags)
object catalog = oType.InvokeMember("GetValue", System.Reflection.BindingFlags.InvokeMethod, null, wincc, new object[] { "@DatasourceNameRT" });

//Read the computer name
object serverName = oType.InvokeMember("GetValue", System.Reflection.BindingFlags.InvokeMethod, null, wincc, new object[] { "@ServerName" });

//Read a WinCC-Tag with the name "MyTag"
object myTag = oType.InvokeMember("GetValue", System.Reflection.BindingFlags.InvokeMethod, null, wincc, new object[] { "MyTag" });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30702658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档