在后疫情时代的工业生产生活中,自动化生产显得尤为重要,本文转载了OPC UA开发的基础文章,欢迎各位阅读。
为什么要选择OPC UA?
新冠疫情对经济的冲击不言而喻。疫情之后,对于自动化企业来说,生产不再是提高产线效率那么简单,更加迫在眉睫的是提高设备的智能化、网络化,提高从工业现场到企业生产的全局把控,从而减少对人工的依赖。
5G的来临,为云计算、大数据和物联网在智能制造领域的应用场景提供了强有力的支撑,使得自动化企业的智能化、网络化转型成为必然,而跨界融合的趋势一定会带来新的业务生态变化。
对于自动化市场,尤其是自动化设备制造商来说,潜藏着巨大的发展潜力,也面临前所未有的挑战。
基于大数据的应用是制造业和智能化技术融合发展下不可避免的趋势,这其中标准化数据端口是全局最基础的一环。
OPC UA作为OPC基金会提供的新一代技术,提供安全、可靠并独立于厂商的数据传输,跨越制造层级、生产计划层级和ERP层级,成为打通隔离的控制层工业自动化数据和IT层数据的关键技术,为数据的高效整合提供了前提。
这项技术目前已经得到了包括西门子、贝加莱、PLCopen、三菱电机、德国倍福、罗克韦尔等公司的青睐,并在中国区得到了长足的发展。
目前,OPC UA已经成为国家标准,OPC认证测试实验室也正式落户中国。OPC UA已然成为了自动化行业的标准协议,呈蓬勃发展之势,就如同行业里流行的那句话“使用OPC UA,你的产品未必会销售大增,但是不使用OPC UA则一定会影响你的产品销售”。
众所周知,OPC UA是具有独立于制造商的原始应用、编程语言和操作系统等软硬件环境的技术。这种说法,把初识OPC UA的开发者带进了一个误区,即认为OPC UA的开发也是跨平台的,想当然的认为选择什么开发语言也是“无所谓”的,真的无所谓吗?
当然是No,这还真的“有所谓”。
![](https://i-blog.csdnimg.cn/blog_migrate/5e6422ff4968ed74c3229e65d248973e.png)
在程序开发领域,每种语言的出现都是因为实际应用反向驱动的结果。不同的应用领域导致对编译效率和代码质量及执行速度的要求都是不同的,所以每种语言都有自己的特点。
如C作为底层开发的常用语言,具有出色的移植性,简洁紧凑,可以直接访问硬件,并且具有很高的运行效率。在嵌入式开发领域,开发都是在嵌入式操作系统下进行的,而操作系统所有内核基本都是基于C语言编写的。此外嵌入式开发的编程是需要在开发板上跑的,如果内存占用的过多必然会影响性能,此时C语言的优势就凸显出来了。
但如果要做一些系统级的应用,比如上位机软件开发,因为C++作为面向对象的编程语言,具有函数库更丰富、功能更强大的特点,显然是系统级应用开发的首选。
Java作为半编译半解释型编程语言,因其“一次编译,到处运行”的特点,加之其增加了很多网络应用功能,在web或移动终端开发中得到广泛的应用。
C#是微软推出的Windows平台的编程语言,借鉴了C++和Java的语法并做了改进,使其比C++更简洁,以适应.NET 平台下的开发需要,应用难度有所减小,侧重于网络和数据库类的应用编程。
总之,各种编程语言都各具优势,要用一种编程语言去面对自动化环境中的不同应用场景,是极困难的。再者,开发涉及的不仅仅是编程语言,更是整个生态环境,编程语言虽无好坏之分,但都有不同的适用性,能用和适用完全是两个概念,这一点从事开发的小伙伴想必深有体会,我们不再赘述。
选择合适的语言除了能更方便的解决各类应用问题,还能充分利用平台的资源,提高软件的执行效率,同时也提高了软件的健壮性,助力目标产品获得良好的市场口碑。
对于OPC UA开发来说,选择合适的语言至关重要。因此,选择合适的SDK自然成为开发要解决的首要问题。
那么,回到文章的主题
如何选择合适的OPC UA SDK?
答案是基于不同的目标平台和应用环境,下图向大家展示了工业环境中常用的主流编程语言的OPC UA SDK。
![](https://i-blog.csdnimg.cn/blog_migrate/67d66d77104157b52b20b89f0f2aa7dd.png)
什么情况下选择ANSI C SDK?
如果您的目标产品是嵌入式设备,或者希望开发的OPC UA服务尽可能的占用较小的平台资源,那么ANSI C SDK(开发者工具:ANSI C | Client SDK)是较优的选择。
ANSI C SDK支持异步和单线程编程,可用于几乎所有操作系统和CPU架构,如x86、ARM、MIPS,支持Linux、VxWorks、QNX、Euros、WinCE、Windows XP等操作系统。
什么情况下选择C++ SDK?
如果您计划在多种操作系统上部署OPC UA,或者需要最大的UA性能,C++ SDK(开发者工具:C++ | Server SDK/开发者工具:C++ | Client SDK)无疑是最佳选择。如果现有的应用也是由C++编程的,C++ SDK将可以实现无缝集成。
C++ SDK是性能最高的OPC UA开发包,可在多线程下工作,充分利用现代多核CPU的性能,并可针对32位和64位CPU进行编译。代码可以在x86和ARM上运行,并且可以轻松移植到其他体系结构,适用于资源丰富的嵌入式系统或PC平台。
什么情况下选择.NET SDK?
如果需要集成OPC UA功能的应用是由.NET/C#编写的,且其目标平台是MS Windows操作系统,那么.NET SDK (开发者工具:.NET | Server SDK/开发者工具:.NET | Client SDK)无疑是最匹配的选择。
在基于PC的Windows平台上运行的桌面应用程序,尤其是OPC UA Client应用,非常适合采用 .NET SDK进行开发。另外,部署在桌面和平板电脑上的可视化、HMI 和 SCADA等类型的应用,通常会同时集成获取数据的Client和提供信息Server。
什么情况下选择Java SDK?
如果您计划在多种平台上开发OPC UA,包括Android,Java SDK是个不错的选择。
相比C和C++,Java和.NET可以实现更快速更轻松的开发,也具有更高级别的环境。但需要注意内存和CPU能力的资源要求。Java SDK的主要优点是您不需要为每个平台重新编译应用程序。Java程序可以在每个平台上运行,只要平台可以提供所需的JRE(Java运行时环境)即可。
总之,工业设备分工越来越细致,不同语言的SDK也是根据不同平台环境的应用而开发的。
![](https://i-blog.csdnimg.cn/blog_migrate/ce8fd119512da90a7e4e6aa07c01686d.jpeg)
没有“包治百病”的SDK,只有专注,才能做得更好。
希望这篇文章的建议,对正在准备开发OPC UA的您,提供些许帮助。
本文所用图片出自本公司合作伙伴德国Unified Automation公司所提供的资料,版权归合作伙伴德国Unified Automation公司所有。