我需要开发一个应用程序,通过wincc接口读取PLC中的一些值,我已经四处寻找过,但我发现的示例都是使用第三方软件。我需要的功能非常基本:我只需要读取PLC中的值一次,而不需要进行任何进一步的通信。有没有简单的方法可以做到这一点?
发布于 2015-09-23 20:44:16
通过Wincc:实现PLC值的读取
乍一看,我会建议通过PLC直接阅读,或者使用OPC,TCP电报或一些第三方库,如libnodave。它在使用上更具表现力和优雅。
现在回到您的问题,您需要wincc为您的应用程序提供值。我将提出以下建议:
或数据库接口对其进行padd。
我认为这种方法在不影响wincc的wincc的情况下从wincc中获取值要干净得多。另一方面,你也可以使用wincc作为opc服务器。
发布于 2015-06-20 17:39:23
你的问题有点含糊。您给出的描述是一个基本的WinCC功能。从PLC读出值(称为标记)并将其显示在WinCC中。我认为这不是问题所在。
你的意思是从WinCC读出一个标记(内部或外部)到你自己的应用程序吗?这可以通过WinCC中的ODK选项来完成。但是,就像Scada/DCS中的每个开发工具包一样,不是免费提供的。
或者要从WinCC中也使用的PLC值读出,则需要S7连接或开放通信。S7需要连接资源和可编程控制器中的配置。开放式通信(通过TCP/IP完成)需要在PLC中编程。
发布于 2015-07-04 14:00:45
下面是使用WinCC的程序标识符的示例:
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" });https://stackoverflow.com/questions/30702658
复制相似问题