现在的工业生产对控制系统的要求越来越高。很多时候,依靠WinCC自身功能已经难以满足客户要求,或者说难以很好地满足客户要求。这时候,我们可以用第三方控件来实现一些特殊功能。C#是目前开发WinCC控件的zuijia工具。除了WinCC外,iFix,FactoryTalk等组态软件也都支持C#开发的控件(下称.Net控件)。不过国内组态软件在这方面要落后一些,目前国内主流的组态软件如组态王、力控等均不支持.Net控件。
.Net控件在WinCC上运行难免要和WinCC做交互,常见的交互有读写WinCC变量,读取WinCC的归档数据、报警消息等。这些属于比较常规的交互。这种交互,即使使用独立的exe程序也可以完成,而未必要使用嵌入到WinCC画面的控件形式。
作为控件,它最具优势的地方是可以和WinCC做深度交互,这是独立的exe程序所不具备的。拿制药行业的电子签名来说,如果操作员对.Net控件的操作需要电子签名的话,这个操作在.Net中实现是比较困难的,当然也不是不可以,只是比较麻烦。以使用SIMATIC Logon为例,比较便捷的方式是.Net控件将操作发送到WinCC,由WinCC通过脚本来实现电子签名。这种方式使得对第三方控件操作的电子签名和WinCC自带的控件完全一致。
.Net控件的操作发送到WinCC一般使用事件来通知比较合适。下面的代码演示了当我们点击.Net控件中的按钮时触发一个事件。
代码比较简单,btnDownload是.Net控件中的一个按钮。当操作员点击时触发一个事件OnDownload。然后我们在WinCC中订阅这个事件。
在事件OnDownload中调用Logon提供的COM接口即可实现电子签名。
这里只是使用电子签名介绍了事件通知的使用场景。当然除此之前,事件通知还能做很多事情。除了事件通知外,我们还可以利用属性传递数据,也可以通过WinCC脚本调用.Net控件的方法等。属性、事件和方法这三要素可以实现.Net控件和WinCC的深度交互。