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

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

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

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

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

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

图1PLC中的组件

值得一提的是,我们常说的背景DB英文全称是InstanceDataBlock,翻译为“实例”其实更为合理。不知道在国内为什么变成了背景DB。HwBasicLib就是使用面向组件设计思想开发的一套用于TIAPortal的基础组件库。

图二WinCC中的组件

当然我们今天的主题并不是PLC编程,而是高级程序设计语言,也就是可以开发应用程序的编程语言。作为一名自控工程师,我们学习高级程序设计语言的目的并不一定是为了转型或者去开发软件。当然如果你对软件开发很有兴趣也可以考虑转型。我们学习高级程序设计语言的基本目的是可以更好的理解现代软件开发思想。这种软件开发思想应用在自动化中将会极大的提升我们的编程水平、开拓视野,对很多在编程中遇到的问题将会有全新的看法。

其实我一直以来都认为学计算机出身的人做自控会比学电气出身的人做的更好,就是因为长期的思想熏陶,他们对问题的解决思路会完全不同。简单的来说,体现在PLC编程上,学电气出身的人会使用面向过程技术来设计,而学计算机的人肯定毋庸置疑的采用面向对象技术来设计。非常遗憾的是目前几乎所有学校的自动化专业、培训机构、市面上的自动化教材还停留在原始的程序设计阶段。编写《TIAPortal高级编程》的初衷就是为了在自动化行业中普及这一编程技术。

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

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

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

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

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

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

3、C#与工业自动化

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

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

THE END
1.为什么要学编程?这也可以培养人们的毅力和耐性。5. 掌握未来职业技能:未来的很多职业都需要掌握编程技能,例如数据科学家、机器学习工程师等等。6. 理解数字化世界:编程可以帮助人们更好地理解数字化世界,掌握数字化世界的规律和趋势。7. 提高自我价值:掌握编程技能可以提高自己的自我价值,让自己更加有自信和自信心。https://zhidao.baidu.com/question/1743714745227727187.html
2.学编程有什么好处(全面)什么是编程学编程有什么好处,,文章浏览阅读1.1k次,点赞9次,收藏9次。综上所述,学编程的好处是多方面的。它不仅能够提升个人的逻辑思维和问题解决能力,增强创造力和创新能力,提高工作竞争力,促进跨学科学习,培养耐心和专注力,拓展全球视野与合作机会,还能够增强自信心与成就感,培养自学能力和持https://blog.csdn.net/fafdafaafdfafQWQ/article/details/142671156
3.学编程后,我做了这10个有毒的在线免费设计神器!(下)最初想做一些更酷的可视化效果,就学习了一门适合编程小白入门但创造性超强的编程语言 Processing ,用它做了一些可视化作品和循环动图的打卡,在这些过程中就发现编程的乐趣与可拓展性,后来又入门了 html 和 js ,开发了这一系列在线设计工具。 开发这么一款工具需要花多久时间?开发过程遇到最大的挑战是什么? https://www.uisdc.com/10-design-artifact-2
4.少儿编程有必要学吗少儿编程学习需要具备哪些条件→MAIGOO知识摘要:对于想培养编程思维或者日后有考虑从事编程行业的孩子来说,学习少儿编程还是有必要的,编程学习从青少儿时期就开始培养,这是有很大好处的,例如学习少儿编程可以培养孩子独立解决问题的能力、培养全新的思维方式、拓宽学习的边界等。然而要学习编程,也要具备一定的条件,那么,青少儿编程学习需要具备哪些能力?下面就来一https://www.maigoo.com/goomai/224821.html
5.ASP.NETCore适用于.NET的开源Web框架.NET 是一个开发人员平台,由工具、编程语言、库组成,用于构建许多不同类型的应用程序。 ASP.NET Core 通过专门用于生成 web 应用的工具和库扩展了.NET 开发人员平台。 更深入发掘: 什么是 ASP.NET Core? 了解ASP.NET Core 通过我们的教程、视频课程和文档,了解 ASP.NET Core 提供的所有功能。 https://asp.net/
6.2024年Pytho怎样自学LinuxJava是一种平台,也是一种程序设计语言,如何学好程序设计不仅仅适用于Java,对C++等其他程序设计语言也一样管用。有编程高手认为,Java也好C也好没什么分别,拿来就用。为什么他们能达到如此境界?我想是因为编程语言之间有共通之处,领会了编程的精髓,自然能够做到一通百通。如何学习程序设计理所当然也有许多共通的地方。 https://win7sp.com/post/33390.html
7.编程学习之路,迷茫中的探索与突破学编程太痛苦了,编程之路,迷茫1、缺乏明确的学习目标 许多初学者在开始学习编程时,往往没有明确的学习目标,他们可能只是听说编程很热门,或者觉得学习编程可以带来一些好处,但并不清楚自己为什么要学习编程,以及想要达到什么样的水平,这种缺乏目标的情况容易导致学习动力不足,进而产生迷茫感。 http://skypure.com.cn/post/30310.html
8.为什么我们要学习编程?51CTO博客为什么我们要学习编程? 1. 为什么需要学习编程? 如今,学习编程的人分为两类,一类是程序员,另一类是期望成为程序员的人。 编程这个事儿,在大多数人眼中还是一种特定领域的、专门的技能,认为学的人都是需要以此谋生的。 其实,我曾经跟一个作为一个“码龄”超过20年的老程序员聊过,他是这样认为的:在不久的将来https://blog.51cto.com/aiyc/2887978
9.需求分析报告(通用12篇)本章进入生态系统的学习,首先要学习生物与环境的关系。本节有很多代表适应方式和生物关系的名词,容易混淆,有必要引入CAI使这些关系具体形象,让学生容易理解,深化记忆。另外种群数量变化规律曲线的得出也是比较难的,引入CAI,给予动态的解释,很有必要. CAI创意: https://www.ruiwen.com/word/xuqiufenxibaogao.html
10.南京少儿编程有哪几所比较好少儿编程教育是时代发展的产物,为培养未来的全能人才而备受关注,那么为什么会有越来越多的家长给孩子报班学习呢?到底有没有必要学?大家可以从以下几点进一步了解下少儿编程课程的意义。 1. 少儿编程是一门符合孩子智力成长特点的课程,教学内容具有趣味性和挑战性,能够培养孩子的学习兴趣,锻炼他们的专注能力。 http://www.jixiaotong.com/it/shaoer/43861.html
11.媒体报道集锦多家媒体点赞华理暑期社会实践活动(二)正如授课老师带领学员操控编程机器人,真正领悟编程机器人因为被编程后而获得循迹或避障的功能。实践团队用充实丰富的课堂教导学生,科技不再是遥远未来的新兴事物,是与生活息息相关的事物,是时代洪流下年轻学生应该也必须去接触学习的知识。 媒介:科技知识普及的意义https://news.ecust.edu.cn/2019/0911/c6a149906/page.htm
12.《世界十大学习方法》之费曼技巧图1-2 学习和生产的类比生产的产品不质检可以吗?学习的知识不检测是否学会对吗?费曼技巧一个核心作用就是检测哪些知识没有学会,然后你就可以集中力量来弥补这些知识。本节分为六个部分,第一部分论述费曼技巧是什么。第二部分使论述费曼技巧从哪里来。第三部分论述费曼技巧为什么有效。第四部分论述费曼技巧怎么用。第https://www.360doc.cn/mip/1027860177.html
13.白岩松不许孩子考第一,98%的人都上当了:不明白这一点的父母,养不现在很多编程课用的都是国外的软件,为了让我们的孩子更系统、更专业的学习编程,编程猫联合了腾讯、阿里等名企的技术专家自主研发了适合中国孩子学习的编程工具。 不仅如此,编程猫的工具Kitten已经成为全国青少年编程能力等级考试指定工具。 孩子们在编程猫的社区上传的编程作品累计有3000多万了。 https://m.thepaper.cn/wap/resource/jsp/newsDetail_forward_10681376
14.Python学习笔记二进制数只使用数字0、1表示,在Python中,二进制整数使用前缀0b表示,比如:0b0110,0b1100。 十六进制数除了0~9十个数字以外,还使用a、b、c、d、e、f,在Python中,十六进制使用前缀0x,比如:0x12ef,0xde2431af。 十进制数、二进制数和十六进制数之间是可以相互转换的,如果感兴趣的同学,可以学习《编程必备基础https://www.jianshu.com/p/8d4b11d7968d