虽然PLC(可编程逻辑控制器)编程语言可能不像一般计算编程语言(如JavaScript、c#或Python)那样受到重视,但它们对制造和加工工业仍然至关重要。虽然PLC编程语言没有像通用计算编程那样经历过很多变化或更新,但这些语言也不是静态的。
为了检查PLC编程语言的现状,我们采访了工业自动化系统集成商Grantek的首席工程师Doug Yerger最近一期的“自动化世界回答你的问题”播客系列.
指令列表的消亡?
最近PLC编程语言没有改变的一点是仍然有两种基本类型:使用输入命令的文本编程和通过在编程环境中移动对象来排列逻辑序列的图形编程。从文本语言开始我们的讨论,Yerger指出,指令列表文本PLC编程语言是“一种非常低级的、基于记忆法的语言”,它的日子似乎不多了。
他说,“指令列表在IEC 61131-3中已被弃用,根据标准本身,可能不会出现在下一个版本的标准中。”“我认为,现在支持指令列表的控制器和编程软件将会在相当长的时间内继续支持它,但我认为,如果它是一个被弃用的标准,你不会看到任何人将其纳入他们的(新)产品线。”
这种对IEC标准中指令列表的弃用是因为该语言被视为“过时的、类似汇编的语言”,Yerger说。“与我在公司的同事交谈后发现,没有人在我们的任何项目中使用过指令列表。我们坚持使用结构化文本和其他语言。”
尽管指令列表前景黯淡,但结构化文本作为一种高级编程语言将继续存在。“如果你有计算机科学背景,结构化文本将是你非常熟悉的领域。它也非常适合循环和字符串操作,”Yerger说。“如果你必须解析条形码,去掉ASCII字符之类的东西,在高级文本语言中要比在(像梯形图这样的图形编程语言)中容易得多,在梯形图中你需要单独处理每个字节。”
图形化编程领域
在解释图形化PLC编程语言之间的主要区别时,耶格尔从梯形图开始,指出了它是从中继逻辑发展而来的。“它(梯形图)看起来像老式的硬件中继逻辑图。基本上,大部分都是布尔数学和布尔决策,”他说。同时,函数块语言允许程序员在图形屏幕上排列不同的块,表示控制器和连接到它的设备之间的输入和输出。
耶格尔将顺序函数图语言描述为“五种[PLC编程]语言中的古怪之处”。我们不把它看作一种语言,它是逻辑流的结构,因为它允许分支到并行过程,这些并行过程是基于条件的决策点。基本上,在顺序功能图中,每个块都有一个动作项,每个动作可以有一系列事件。这些事件就是在每个动作块中发生的事情。但是事件可能会在结构化文本功能块的梯形图中进行编程。顺序功能图通过说“做这个,直到满足这个条件”来控制[操作]流程。它会根据被满足的条件给出方向,以此解析程序流程。这就是它与其他语言的不同之处。”
顺序功能图的程序流程特性是它经常被使用的原因。“它非常适合阶梯式或离散排序。一个经典的例子是批处理引擎,在这个引擎中,您可能为一个菜谱添加了三种配料,而这些配料将是编程语言中的三个并行分支。但在这三种都加入之前你不能打开搅拌器。所以你会有这一系列需要发生的步骤——有些是并行的,有些是顺序的——在继续前进之前,控制器将等待它们之间的条件被满足。当您进入搅拌步骤时,可以在梯形图中完成对电机的控制,这将触发在单独的进程中运行的顺序功能图。当序列功能图程序看到触发触发完成后,它将继续进行序列中的下一个动作。”
Yerger表示,在北美,超过90%的控制编程都是用梯形图完成的。他说:“对于使用大量布尔代数和有大量极限开关和开/关的离散逻辑系统来说,这是非常棒的。”“有经验的电工也很容易理解,因为他们是从硬件阅读(梯形图是基于)。学习过C语言或其他高级编程语言的新技术人员可能倾向于结构化文本,因为这对他们来说更熟悉。”
Yerger说,函数块编程在连续过程中是首选的,在这种过程中,你需要一个模拟输入并缩放它。这就是为什么它经常用于PID循环。他补充说,还有一些安全系统使用函数块作为编程方法。
在研究不同的PLC编程语言时,主要的收获是很少只使用一种编程语言。“特别是如果它是一个大型程序,我们将在其中使用各种语言的例程和程序,”耶格尔说。“大多数可能在梯形图中,但如果我们有一个大的数组处理,我们将使用结构化文本来处理这些数组。我们不会只使用一种语言,当然,除非我们的客户有这样的要求。有几个客户确实说:只使用天梯。但我们通常会尝试说服他们放弃这种想法,让他们接受一种更现代的理念,即在工作中使用正确的工具。”
超出了IEC 61131 - 3
可编程自动化控制器(PACs)用于更复杂的自动化任务,扩展了控制器语言的领域,超越了IEC 61131-3语言,允许使用与IT世界联系更紧密的语言,如C和C+。
耶格尔表示,几年前曾有过一次将“C”编程语言引入工厂的巨大推动。但他说,这种推动逐渐消失在对IEC语言的支持中。然而,他也注意到IT编程语言在SCADA系统中仍然很流行。他说:“如果我们需要做高级C语言、Python处理,甚至Java处理,我们将把它提升到SCADA级别,并在专门为这些语言设计的计算机硬件上进行处理。”
读到在plc、pac和ipcc之间做出决定. |