VB.NET和PLC通讯,KepServer作为OPC通讯的服务器

     工业控制中,上位机软件必不可少的是和PLC通讯,方式有很多种,很常用的一种是OPC,关于OPC通信协议或者是通信标准,可以自行百度,不多写了,主要将VB.NET 和PLC通讯的过程记录下来,以免时间太长忘掉。

       因为是和PLC用的是西门子,很长一段时间用的都是西门子提供的OPC软件,OPC服务器也是西门子提供的程序,如下图SIMATIC_NET  PC Software V13 SP2VB.NET和PLC通讯,KepServer作为OPC通讯的服务器_第1张图片

         后来听说西门子的OPC通信比较慢,而且安装比较复杂,但是一直没有好的替代,直到一个偶然的机会了解到KepServer作为通信的服务器。如下图KepServerEx-6.4

VB.NET和PLC通讯,KepServer作为OPC通讯的服务器_第2张图片

重要的概念

          1:OPC服务器,一直觉得服务器这个东西很虚,没有做过服务器,理解不了服务器的概念,这个opc服务器就是为opc通信提供底层通信支持的,也就是说有了这个服务器,我们不用考虑我们需要通信的PLC是什么,也不用考虑具体的通信的细节等等,甚至不用考虑通信的下位机是不是PLC,只要KepServer这个OPC服务器支持。(也就是说通信的下位机支持OPC通信协议,并且KepServer有或者能找到对应的驱动程序)也就是说,有了opc服务器,我们只要和服务器通讯就可以了。具体PLC的选择,在服务器中进行,程序不要考虑。

              2:X86和X64的区别,电脑有32位和64位的区别,对应的程序也有X86和X64的区别。32的意思就是计算机的字长是32个位,那么计算机寻址的范围最大为2的32次方减1个字节,因为计算机指针存储的单位是字节,超出这个范围的内存地址,在计算机的cpu中已经无法表示了。32位的字长只能存储最大2的32次方减1的地址,也就是4294967296个字节除以1024等于4194304个KB再除以1024等于4096个MB等于4G,超出这个值的地址,CPU无法识别,所以32位的电脑,增加内存超过四个G意义也不大。但是64位的电脑就不一样了。同样按照上面的计算方式,64位的寻址大小可以达到2的64次方-1位。大概是16,777,216T,也就是一千六百多万T。

          说多了,总结一下知识也是自己学习,因为之前的物理内存的限制,计算机以32位的居多,因为内存很少有超过4个G,那么64位字长太浪费。现在的内存,随随便便八个G,所以64位的计算机在将来会越来越多。

         再说程序,一般来说64位的计算机可以运行32位计算机的程序,因为寻址是兼容的,怎么做运算都不会冲突。但是针对64位计算机生成的程序难以在32位的机器上运行。因为32位的机器无法表示4g以外的地址。

          3:  康耐视的Visionpro不是这样 ,至少我试了8.3的是不行的,32位的程序正在64位的机器上也会报错一大片。安装可以安装,但是调用DLL的时候就会报错,程序会运行不了。这就会造成一个问题,运行VisionPro的64位电脑再连接KepServer服务器就会出现冲突,opc会提示“没有注册工厂类”那么就要想别的办法,我看前辈用的方法是做两个程序,然后用一个dat文件进行通讯,一个程序负责和KepServer通讯,一个用来处理VisionPro视觉。

          4:OPC服务配置:KepServer的安装过程比较傻瓜,Next就可以搞定,添加通道,添加设备网上也有很多教程。以西门子S7—1200为例,主要的两个,一个是选择驱动程序,这里选择TCP/IP  ,还有UA DA等方式,还没有测试。

VB.NET和PLC通讯,KepServer作为OPC通讯的服务器_第3张图片

另外一个就是设备的IP地址,192.168.2.5

VB.NET和PLC通讯,KepServer作为OPC通讯的服务器_第4张图片

选择型号 ,填写IP地址之后就可以添加通道了,

VB.NET和PLC通讯,KepServer作为OPC通讯的服务器_第5张图片

这样服务器就配置完成了,如果连接有PLC,可以让值改变测试一下有没有成功。点击如上图所示的测试。

VB.NET和PLC通讯,KepServer作为OPC通讯的服务器_第6张图片

点击Quick Client 找到我们添加的Item,如上图,在没有连接成功的情况下,会显示质量为:Bad   Update  count  为1,如果连接成功,PLC相应值变化,Update的个数也会发生变化。

        5:开始客户端的工作,

 

5.1 :引用DLL 

VB.NET和PLC通讯,KepServer作为OPC通讯的服务器_第7张图片

 

5.2创建OPC服务器

VB.NET和PLC通讯,KepServer作为OPC通讯的服务器_第8张图片

5.3创建组和Items

VB.NET和PLC通讯,KepServer作为OPC通讯的服务器_第9张图片

5.4或者变化值onchang

VB.NET和PLC通讯,KepServer作为OPC通讯的服务器_第10张图片

5.5写入值

VB.NET和PLC通讯,KepServer作为OPC通讯的服务器_第11张图片

6,opc很重要的是服务器,组,items ,item的概念,是层层向下的,上面的代码段并不是最简洁的代码段,还有别的方法更方便的调用。需要再去研究,有很多不足之处,我也是参考别人的代码,感谢热心分享的大神。

7,客户端程序引用的dll都是从网上下载的,一直再找64位版的,可惜一直没有成功,下载的标准是64位版,但是程序还是会出错。如果有64位程序成功的,希望也可以指点我一下。交流加QQ243361696

8,调用的过程中,程序会提示没有注册工厂类……这个时候就要注册dll,方法也能百度到。

VB.NET和PLC通讯,KepServer作为OPC通讯的服务器_第12张图片

VB.net或者C# 通过kepserver和西门子PLC通信的就是这样,验证成功了。但是有几个问题没有解决

1:64位的程序调用问题,应该是DLL不支持可以用32位的DLL封装64位的程序吗?还不会弄这个

2:代码简洁问题,已经在group中添加了item,写数据或者捕捉onchang的时候应该就不用重复添加了

 

后面安装了一下LabView ,发现lab的OPC 服务器和 KepServer简直一模一样 ,网上查到说Labview就是买的KepServer的版权。Labview叫做DSC,过几天也会写一篇博文记录一下,通信的过程,以免后面忘掉。

你可能感兴趣的:(OPC)