自控工程师为什么要学习高级程序设计语言wib慧兰博

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

1、为什么要学习高级程序设计语言

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#。

3、C#与工业自动化

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

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

THE END
0.告诉你足够的理由,是时候开始了为什么要学习编程文章浏览阅读4.4k次。编程就是要尽可能高效地解决问题给你足够的理由是时候开始学习编程了COVID-19疫情和突如其来的双减政策,非常肯定地冲击了我们曾经所谓的“正常生活”的结构。它的广泛影响可以在所有的地方看到。当每个人都试图在疫情期间保持忙碌时,许多人也开始jvzquC41dnuh0lxfp0tfv8|gkzooa=75:77898ftvkimg8igvcomu86432?1:A7
1.人工智能基础课程接下来,我将从以下六个方面来介绍基于Arduino的单片机编程入门课程体系。 一、什么是编程; 二、什么是基于Arduino的单片机编程; 三、编程与人工智能有什么关系; 四、我们为什么要开设单片机编程课程; 五、课程设计理念与学习方法 六、学习编程培养的核心能力 jvzq<84ctf{jpx2ck0io1rsfgz4qjy4nyij0:::0jvsm
2.少儿编程培训是学什么的?孩子学编程有什么用?孩子学编程有什么用? 导读:在科技飞速发展的今天,编程已成为继阅读、写作、算术之后的第四项基本能力。那么,少儿编程培训究竟是学什么?孩子学习编程又能获得哪些成长呢?下面我们就一起来看看把。 在科技飞速发展的今天,编程已成为继阅读、写作、算术之后的第四项基本能力。那么,少儿编程培训究竟是学什么?孩子学习编程jvzquC41yy}/zrfqoc}bpp3ep1oohx4454;3;7mvon
3.为何每个孩子都应学习编程?学习编程的目的每个孩子都应学习编程的原因有很多,主要涉及到技能发展、思维培养以及未来职业发展的需求。以下是几个关键原因: 1.培养解决问题的能力 编程本质上是将复杂的问题分解成简单的步骤,并通过逻辑推理和试错来解决。这种思维方式可以帮助孩子在生活中的其他领域也能更好地分析问题、找到解决方案,增强他们的批判性思维和创造性jvzquC41dnuh0lxfp0tfv8wgekt{jjsi1cxuklqg1fkucrqu13:4;@=674
4.给学网精选精英讲师,给学网为你提供有趣有料的高质量编程课程,让你在学有所成的同时,顺便找一个月薪两万的工作; 你也可以申请成为讲师,为自己赚更多额外收入!jvzquC41yy}/innzwg4dqv4
5.Python交流高效率与高可读性的编程语言社区《零基础入门学习Python》【最新版】 (7) 主题: 283, 帖数: 51万 第002讲:用Python设计第一个游 15 分钟前 tyoushi 《极客Python之Git实用教程》 主题: 23, 帖数: 1万 Git实用教程6:回到过去(有彩蛋 昨天01:18 xiaojiayuyuwo 《Python学习之奇技淫巧》 主题: 52, 帖数: 1万 将一jvzquC41hkyie7hqo0io1ottwo329<230jznn
6.10.《工业机器人操作与编程》教案请在此输入标题发文号:FX2NPLC通信接口与触摸屏的连接测试教学设计项目二认识工业机器人工作站任务二工作站装配教案课程名称工业机器人操作与编程授课类型理实一体课题名称工作站装配授课时数8学时授课班级18高职机器人班20人授课时间2021.9.20学习内容分析本课题选自《工jvzq<84yyy4duƒo|z0ipo8724451:;91e3?9;j7842=0rjlg0jzn
7.CSDN专业开发者社区已接入DeepSeekR1Go语言学习路线完整指南:零基础到架构师的4个阶段本文分享了Go语言的学习路径与资源推荐,分为5个阶段:基础(1-2个月)、Web开发(2-3个月)、微服务(3-4个月)、云原生(2-3个月)和架构设计(持续学习)。每个阶段都推荐了精选课程资源,涵盖语法基础、Gin框架、微服务架构、Kubernetes等核心技术,并针对区块链、jvzquC41yy}/e|ip0pku1
8.为什么越来越多的00后想要学习编程?为什么越来越多的00后想要学习编程? 编程是编定程序的中文简称,就是让计算机代码解决某个问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终得到相应结果的过程。 为了使计算机能够理解人的意图,人类就必须将需解决的问题的思路、方法和手段通过计算机能够理解的形式告诉计算机,使得计算机能够jvzquC41dnuh0lxfp0tfv8}z38=67=>:;:<0c{ykenk0fnyckny03<757;667