让我们首先认识到,这是一个复杂的,有时是有争议的话题。我还没有遇到一个,对“最佳”编程语言,以及对学生应不应该知道可编程逻辑控制器(PLC),没有什么强烈意见的人。
这篇文章是我尝试做一个平衡的介绍。非常感谢。
图 1 :这台集成显示屏的Crouzet EM4 PLC正在运行经典的“Hello World!””计划。
什么是PLC?
PLC是一种工业计算机,用于控制工业设备和过程。在内部,PLC由中高端微控制器控制。这种精致的逻辑通过光耦合器、坚固的半导体输出驱动器和继电器与恶劣的工业条件隔离开来。
PLC可以是紧凑的一体式或模块化设计,具有输出、输入和模拟等功能的专用模块。这些PLC中最大的将包括偶尔向右扩展的模块,从而产生近2英尺长的PLC。在所有情况下,PLC都是根据CPU的速度和计算能力以及要控制的机器或过程的特定输入/输出(I/O)需求来匹配任务的。
这个定义在原则上仍然成立,但正变得越来越过时。问题,或者我们应该说,未来,是PLC的跨学科方面和现代处理所要求的更大的联网能力。可以说,“工业4.0”正在改变PLC的使用方式和类型,因为需要增加的网络功能。我们还必须考虑增加的处理能力的可用性。这使得视觉能力在最初的定义中是闻所未闻的。我们还应该考虑使用TensorFlow等工具进行深度学习的可能应用。
由此产生的PLC的定义可能更合适的表述为:PLC是一个智能的网络平台,设计用于控制工业设备和过程。在一个简单的独立机器和用于协调工厂的联网PLC集合之间存在着巨大的差异。
有哪些语言可用?
传统上,黄金标准PLC语言由IEC 61131-3定义。这包括:
- 天梯逻辑(LL)
- 功能框图(FBD)
- 顺序流程图(SFC)
- 结构化文本(ST)
- 指令列表(IL)
与LL和FBD的图形界面受到技术人员的欢迎,他们可以通过观察图标快速确定PLC的状态。一个代表性的梯形逻辑代码如图2所示。这个Modicon PLC程序用于单个按钮控制过程。从不同的角度来看,图3展示了一个混合FB和SFC块的Crouzet PLC。
图 2 :在Schneider Modicon PLC上实现的梯形逻辑程序。
图 3 :具有FB和SFC块组合的Crouzet PLC的调试窗口。
处理能力的变化加上网络和强大的视觉技术允许,或者可能需要编程语言的变化。我们还需要认识到,PLC程序员通常是从计算机科学课程中培养出来的。对于工业计算机应该做什么和不应该做什么,这些程序员有他们自己的一套期望。
Revolution Pi (Kunbus)是传统PLC的一个有趣的反例。这个设备当然符合PLC的传统定义,在这个深入探索PLC硬件显示。它也符合我们修订后的灵活网络的定义。最后,对于计算机科学专业的学生来说,它是一个很有吸引力的平台。
正如名字所暗示的那样,Revolution Pi是围绕流行的Raspberry Pi处理器构建的。由于在延迟上有一定的限制,由此产生的机器有着广泛的应用。举一个具有讽刺意味的例子,考虑视频1。这是最近对Raspberry Pi工厂的访问。在时间指数7:25时,我们看到基于Kunbus PLC的Raspberry Pi用于制作额外的Pi。
小贴士 :延迟是用来描述PLC对实际事件的响应速度的术语。具有高速I/O的传统plc,加上内部高性能中断驱动微控制器,并适当编程可能是高速机器控制的最佳解决方案。然而,这是一个小众应用。许多机器和工业控制过程在10到100 ms范围内的延迟是可行的。此外,专用模块可能更适合高速过程的控制。一个例子是带有编码器的电机驱动器来控制转速。PLC只需要发送高级(联网)命令到驱动器,而不是处理逐毫秒的控制。
如果我们允许革命派被归类为PLC,我们的语言选择将大大增加。像革命派这样的plc现在可以用几乎任何可以在Linux操作系统上运行的语言进行编程。这包括C和Python等传统语言。61131-3语言可以使用等扩展,比如CODESYS。MATLAB有一些类似arduino的程序可以在派上运行。像这样的程序是可行的。除此之外,还有诸如之类的软件环境管理工具Docker。
哪些PLC编程语言被认为是强制性的?
让我们换个角度,用一些确凿的事实来缓和对软件的热情:
-
了解PLC是一个工具。它是为工业控制和自动化而设计的。因此,它直接与公司的底线挂钩。
-
事情可能会出错,需要技术人员将基于PLC的系统恢复到完整的功能。
-
当技术人员对系统进行故障排除时,停机时间将花费金钱。生产线停机的每一分钟都将损失制造部件的机会,劳动力的空闲时间,重新启动流程的时间和浪费的材料,以及可能加班以弥补损失的生产。你还冒着失去客户好感的风险。
底线是,任何PLC采购或编程决策都必须全面考虑当前和未来维护系统的工作人员。
很明显,程序员的宏伟愿望与可靠的日常操作的底线要求之间存在紧张关系。我绝不是建议我们放弃先进的能力,但我们确实需要认识到系统和系统几十年的生命周期。
所有的程序员都必须精通梯级逻辑!
让我们仔细看看这些技术人员,以及他们是如何与工厂里的设备进行交互的。假设我们有一个基于PLC的系统,它已经运行了足够长的时间来解决错误。你是否同意大部分技术人员的故障排除时间都花在电线、连接、传感器和执行器问题上?你是否也同意软件在可能的故障列表中排名较低?
假设你同意前面的两个陈述加上前面的底线约束,你必须同意像技术人员一样思考是一个高优先级。
技术人员用阶梯逻辑来思考,因为这就是他们生活和工作的世界。技术人员使用线路图和梯形逻辑对PLC周围的系统进行故障排除,因为这是用来描述工业机械的语言。他们的大部分时间都花在解决PLC外部的问题上。
在我看来,任何一个PLC程序员都必须理解梯形逻辑。这是一个实际的现实,需要PLC如何物理地连接到更大的系统的工作知识。与那些将为系统服务的人有一个共同的思维方式——一种书面语言——也是必要的。
小贴士 :知识产权(IP)和责任的概念使编程争论复杂化。在理想的情况下,每个技术人员都可以访问PLC和软件开发工具。这并不是一个合理的假设,因为作为一名程序员,有时候你需要保护自己的IP。对于一些PLC开发平台,这种代码锁定特性是启动新程序的第一步。也会有出于责任和保修的原因,不愿意交出“代码修改钥匙”的时候。因此,PLC成为技术人员的黑匣子。他们拥有的唯一信息是内置指示灯led(不是通用的)或故障代码,文本或您编码到PLC中的内置测试(BIT)。这种约束进一步增强了学习阶梯逻辑并与技术人员使用通用语言的论点。你的底线就取决于它了。
行业趋势是什么?
这个PLC的讨论让我想起了微控制器的情况。随着所有新的32位和64位设备的出现,人们预测8位设备将会灭绝。
不。
8位微控制器活得好好的。事实上,新设备的技术进步是向后应用到旧的8位设备上的。其结果是,8位微控制器速度更快,功耗更低。软件工具的可用性增加还有一个额外的好处。
PLC也是如此。可以肯定地说,传统的独立PLC不会消失。它是一个稳定的表现,将与我们在一起几十年,原始设备制造商(OEM)或第二来源提供替换零件。
与此同时,我们需要认识到,计算能力的提高和深度学习的可能性已经改变了格局。可以肯定地说,新的编程语言和网络软件部署技术将变得越来越普遍。
最后
显然,关于PLC编程有很多需要考虑的问题。就像没有适合所有PLC的标准一样,也没有适合所有编程语言的“最佳”标准。相反,每个应用程序都有细微的考虑因素。
我可以鼓励你和我们的读者分享你的想法吗?你面临过哪些挑战?你是如何坚持下来的?
哦,别忘了——通过学习如何用梯形逻辑编程,和你未来的技术人员说同样的语言。