电子说
PLC诞生已经很多年了,随着技术的进步,必须打破传统的PLC编程思维方式,才能顺应未来的控制发展趋势。电气工程师必须扩展编程技能,掌握更多的编程技巧,才不会被人工智能取代。
当前工程师还在使用每个PLC厂家提供的编程软件进行PLC编程,这就导致一旦更换PLC品牌就抓瞎,甚至有的工程师只具备某个品牌PLC的应用能力,被PLC品牌束缚住,导致就职竞争力底下。很多人曾经梦想有一套编程软件可以对所有品牌PLC或者说大多数品牌PLC都能够编写程序,并且可以轻松地监控程序和排除故障,这样就不需要因为PLC品牌的不同而花费大量的学习时间以及不同厂家网络接口不同带来的连接设置问题。
说到PLC编程不得不提梯形图,梯形图对于初学者、维护人员和电工来说是一种简单的编程语言,但是如果控制稍微复杂的设备由它编写的程序并不容易阅读和理解。梯形图编写大型PLC程序更为吃力,这样看容易学习的东西并不是最好的工具,往往是梯形图对于编程者自己以外的其他人来说很难理解。
要想成为更有竞争力的工程师,必须抛弃梯形图这种简单的编程语言,结构化文本就是一种更好的PLC编程语言选择。结构化文本是PLCOpen在IEC61131-3中定义的一种PLC编程语言,不同于基于图形的梯形图编程语言,它是基于文本的。
通过使用基于文本的PLC编程语言,PLC程序将占用更小的空间,并且流程和逻辑将更易于阅读和理解。还有更好的选择就是,在PLC编程中使用几种语言的组合,发挥各类语言的各自的优势,这样做就会更为优秀,当然也更难,很多人熟悉一种语言之后往往不愿意改变,这也是很多熟悉梯形图的工程师无法脱离梯形图的根本原因。
大家都非常熟悉计算机的高级编程语言,比如:Python和C,看到它们,可能就会觉得的结构化文本很熟悉。结构化文本的语法被开发成看起来像具有循环、变量、条件和运算符的高级编程语言的语法。下面举个结构化文本编写的程序例子:
PROGRAM ST example
VAR
x : BOOL;
END_VAR
x := TRUE;
REPEAT
x := FALSE;
UNTIL x := FALSE;
END_REPEAT;
END_PROGRAM;
上面的代码看起来熟悉吧?
学习结构化文本语言编程第一件事是结构化文本的结构和语法,了解结构后,就会了解程序的流程是如何运行的。从上面的例子,就可以看出整个程序以PROGRAM开始,以END_PROGRAM结束,介于两者中间的就是结构化文本编写的PLC程序。
跟高级语言最大的区别就是:END_PROGRAM不是程序完全的结束,而是当PLC到达END_PROGRAM时,PLC扫描周期将重新开始,这段程序将自行重复运行。PLC里面的任何语言编写的程序都一样,它会一遍又一遍地运行,有点类似单片机C语言中的无限循环。
用结构化文本编写的PLC程序的流程控制与梯形图逻辑相同:一次执行一行。另外,用结构化文本编写的PLC程序,都需要编译成PLC可以理解的语言,才能上传到PLC运行。因此使用结构化文本编程必须要有编译器来把结构化文本转换成PLC执行的机器代码。
关于结构化文本编程,不得不提Beckhoff。Beckhoff的编程软件与IEC61131-3所有的PLC编程语言完全兼容,特别适合组合编程。Beckhoff的编程系统还自带模拟器,无需购买PLC,直接可以在PC内模拟出PLC运行程序,这种模式也被称为“软PLC”。Beckhoff最新的TwinCat 3还集成了微软的Visual Studio编程包,把高级语言的优势发挥的更具体。
Beckhoff可能离我们有点距离,不过Codesys听说过吧,它是用于IEC61131-3编程的开源软件环境,开源就意味着免费,非常适合大家尤其是学生学习。
学习一门新的编程语言可能是一个相当大的挑战,对于下定决心的学习者来说,要牢记几条非常基本的学习准则:
1、学习需要时间(刚开始要花时间学习语言的语法、函数、数据类型……)
2、尽可能多地练习(尽量用结构化文本编写尽可能多的PLC程序)
3、从失败中吸取教训(每次犯错,都不要气馁,只有从更多的失败中走出来才能成为更好的电气工程师)
4、持续学习(不要停止学习,不断在网络上寻找教程和其他相关学习资料)
5、与其他工程师交流(最直接的就是跟身边的工程师交流编程心得,可以了解别人不一样的思路)
全部0条评论
快来发表一下你的评论吧 !