
从WinCC V7.5 SP2开始,SIEMENS为WinCC增加了Rest接口,任何一款支持RESTful API规范的软件都可以通过该接口从WinCC读写数据。
为WinCC配置Rest
配置方法可以参见WinCC帮助,里面介绍的比较详细。但是有一点需要注意,就是证书的选择,参见下图所示。

完成了Rest设置后,为WinCC添加若干变量。这里我们添加了PAR1-PAR100等一些内部测试变量。

C#应用程序
创建一个WinForm应用程序,目标框架不得低于.Net Framework 4.5.2。

打开“NuGet程序包管理器”,搜索“RestSharp”,参见下图所示。

RestSharp是一个轻量级的,不依赖任何第三方组件的Http类库。RestSharp具有以下特性,支持net4.0++,支持HTTP的GET, POST, PUT, HEAD, OPTIONS, DELETE等操作,并且支持oAuth 1, oAuth 2, Basic, NTLM and Parameter-based Authenticators等授权验证。
安装RestSharp后,拖一个按钮到窗体上,修改其名称为“btnReadTags”。然后在其点击事件中输入下面代码。

在上图代码中,红色方框里面是请求url。url表示统一资源定位符(Uniform Resource Locator)。url就是一个给定的独特资源在 Web 上的地址。理论上说,每个有效的 url都指向一个唯一的资源。这个资源可以是一个 HTML 页面、一个 CSS 文档、一幅图像等。
红色方框下面那行代码是向WinCC传递用户信息,manager和666666分别是用户名和密码。这里的用户名和密码需要和WinCC里面的完全一致才会通过。
回到请求url,该url由两部分组成,第一部分是主机名称和端口号,这部分可以在WinCC中看到。

第二部分是变量名称,比如图5中的“PRA1”。为了方便演示,我们使用对话框来显示返回的信息,下图是点击按钮后WinCC返回的信息。

上图中红色箭头所指向的就是变量PRA1的值。实际应用中还需要进一步提取数据,方法是将接收到的JSON字符串转换成实体类就可以了。从这里可以看出Rest使用其实很简单,短短几行代码就可以获取WinCC的数据,并且可以通过网络进行远程访问。
本节我们介绍的是如何通过C#读取单个变量运行值,后面我们将陆续介绍其他功能,敬请期待。