自控工程师为何要学习高级程序设计语言

  咱们一般把C++、C#和JAVA等程序设计语言归类为高级程序设计语言,这是相对于汇编语言这种第二代编程语言而言的。咱们自控行业经常使用的PLC编程语言LAD、FBD和SCL等其实也能够看做为高级编程语言(对比于STL这种相似汇编同样的编程语言来看),只不过它们的语言特性远没有C++等这些现代编程语言丰富。本文所描述的高级程序设计语言指的是C++、C#这些现代编程语言。数据库

一、为何要学习高级程序设计语言编程

       PLC从最初发明开始就是面向电气工人的,从如今各个厂家的编程手册中就能够看出来,什么线圈、能流、触点等等,所有是电气概念。随着工业制造水平的日益提升,随之对自动控制的要求也愈来愈高,最初设计的PLC已经慢慢的知足不了工业生产需求,随后中、大型PLC开始逐渐登场。在近几年的中大型PLC中已经开始慢慢的淡化了这些电气概念,在不少方面开始有向计算机概念靠近的趋势,好比西门子提出的模块化编程等等。小程序

    从我我的观点来看,所谓的模块化编程说法并不许确。模块化编程是面向过程程序设计时代的概念。它是指在进行程序设计时将一个大程序按照功能划分为若干小程序模块,每一个小程序模块完成一个肯定的功能,并在这些模块之间创建必要的联系,经过模块的互相协做完成整个功能的程序设计方法。模块化编程强调的是任务分割,而不是面向对象中的封装、接口等。虽然咱们也知道西门子所说的模块化编程指的就是相似于面向对象编程的概念,可是PLC编程也是软件设计,这种混淆概念的叫法并不可取。微信

    在个人拙做《TIA Portal高级编程》中最开始将这种现代化的PLC编程方法称之为面向组件编程。为何我没有称之为面向对象编程?组件是采用面向对象编程思想开发的功能单元,它除了强调封装、继承、接口等以外更重要的是具备更好的分发性,能够很方便的在不一样项目之中重复使用。在西门子PLC中,咱们将工业生产中最经常使用的气缸、马达等设备封装为FB,而后借助类型/全局库技术进行分发的这样一种方式就和面向组件程序设计是一样的思想。因此我认为称之为面向组件设计更为合理。网络

 

图1 PLC中的组件编程语言

  值得一提的是,咱们常说的背景DB英文全称是Instance Data Block,翻译为“实例”其实更为合理。不知道在国内为何变成了背景DB。HwBasicLib就是使用面向组件设计思想开发的一套用于TIA Portal的基础组件库。模块化

图二 WinCC中的组件工具

  固然咱们今天的主题并非PLC编程,而是高级程序设计语言,也就是能够开发应用程序的编程语言。做为一名自控工程师,咱们学习高级程序设计语言的目的并不必定是为了转型或者去开发软件。固然若是你对软件开发颇有兴趣也能够考虑转型。咱们学习高级程序设计语言的基本目的是能够更好的理解现代软件开发思想。这种软件开发思想应用在自动化中将会极大的提高咱们的编程水平、开拓视野,对不少在编程中遇到的问题将会有全新的见解。学习

  其实我一直以来都认为学计算机出身的人作自控会比学电气出身的人作的更好,就是由于长期的思想熏陶,他们对问题的解决思路会彻底不一样。简单的来讲,体如今PLC编程上,学电气出身的人会使用面向过程技术来设计,而学计算机的人确定毋庸置疑的采用面向对象技术来设计。很是遗憾的是目前几乎全部学校的自动化专业、培训机构、市面上的自动化教材还停留在原始的程序设计阶段。编写《TIA Portal高级编程》的初衷就是为了在自动化行业中普及这一编程技术。开发工具

  若是你还但愿本身在高级程序设计方面能更进一步,那么能够继续学习GUI、数据库、网络通讯、WEB等知识。前面也说过,现代工业生产对自动化工程师的要求愈来愈高,仅仅会玩PLC和组态软件面对不少问题会有捉襟见肘的感受。举个简单的例子,咱们可能会遇到业主要求咱们的控制系统可以和MES交互、在WINCC上实现复杂的所见即所得的报表、PLC数据定时保存在指定的数据表中等等,这些需求都要求咱们具备或多或少的高级程序设计背景才能完成。

  综合以上,我认为做为自控工程师来讲,学习一门高级程序设计语言是很是有必要的。

2、如何选择高级程序设计语言

        软件工程发展了这么多年,目前可供选择的开发语言和工具不少,那么咱们到底该选择哪种呢?这种困惑相信每个想学高级程序设计的人都会有的。我我的最开始是学习VB6的,后来微软的战略转移到DotNet平台上后VB6也就再也不更新了。在寻找替代语言和工具期间比较了Delphi、Java、C#等多种语言和工具,最终才肯定的C#。下表是我对这些语言和工具的比较结果。没有最好的,只有最合适的,每种语言都有本身的长处,适合本身的就是最好的。须要说明的是下表中的优点和劣势是针对自控行业的。

  对于自控行业来讲,一门编程语言及开发工具是否具备丰富的GUI库很是重要,由于不少时候咱们须要实现人机交互的功能。仅凭这一点,上表中的不少编程语言就无需考虑,好比JAVA、Python、C等等。其次自控工程师通常时间精力有限,不少时候须要现场调试,不可能有太多的时间精力放到学习程序开发上面,那么C++建议不要考虑,由于没有大量的时间付出连入门都困难。

  VB6是二十年前的产品了,虽然它简单易用,也有丰富的GUI控件,可是大多很是丑陋,将来的操做系统可否支持能很差说,因此也不建议学习。另外学习资料少、使用人数少的程序设计语言也不建议选择,由于一旦遇到问题经常须要耗费大量精力,甚至不少时候无解。

  这样一来只剩下C#可供选择了,C#是微软将来的主打开发语言,语言特性丰富、语法简洁优美。丰富的文档支持和DotNet Framework足以使咱们能够解决在学习过程当中遇到的绝大部分问题。虽然在互联网行业C#并非很受欢迎,可是在工业生产中,大部分MES是使用C#开发的。大名鼎鼎的博途软件就是基于DotNet Framework开发的。基于以上,若是您对程序设计有兴趣的话,咱们建议选择C#。

三、C#与工业自动化

    《C#与工业自动化》是HwLib(慧兰博)技术团队出品的一部专门针对自控工程师的C#教材。它和市面上的其它C#教材的不一样点在于下面几个方面。

  • 减小不经常使用的语法特性介绍,利于入门;
  • 针对自控行业的案例,好比专门的通讯章节包含了S7通讯、Socket通讯、OPC UA;
  • 针对组态软件的插件开发(好比WinCC),拓展其功能;
  • 针对工业4.0的工厂数据中心;
  • 机器视觉(将来);

  除了上述的几个特色外,经常使用的案例也不缺乏,好比数据库、数据报表等。《C#与工业自动化》的目标是学以至用,避免出现那种看书时好像啥都理解,可是针对实际问题殊不知从何下手的尴尬场景。

-- END --

 

 

若是您对咱们的高端教程有兴趣的话能够x宝上搜索“hwlib”或者“慧兰博”,或者点击这里:HwLib(慧兰博)

关于HwLib(慧兰博)技术团队的更多信息:www.hwlib.cn

HwLib(慧兰博)技术团队技术资料:https://pan.baidu.com/s/1dF3gpt3

 

HwLib(慧兰博)公众号

专一于工业自动化高端编程应用

HwLib(慧兰博)微信号