我如何学习PLC编程?对于不同品牌的PLC,它会有很大的不同吗?梯形图编程与PLC编程相同吗?
答案 0 :(得分:56)
我做了很多PLC编程,现在做了很多.NET编程。这种切换方式非常危险,因为你认为很多技能都可以转移(模式等)会让你误入歧途。
我告诉人们的最大区别是PC程序代码应该像其他程序员一样被编写,但PLC程序(梯形逻辑)必须写成好像维护人员是受众。大多数设施(特别是制造)的维护经常直接连接到PLC,在在线模式下,他们可以通过图形方式观察代码,找出问题所在。
例如,如果输出未打开,他们将输出电气设备ID输入到编程软件的查找功能中,找到输出线圈,并从那里开始追溯以查找问题。一些PLC程序员经常犯的错误之一是将他们的I / O“映射”到一个结构中(在PLC中,这些称为用户定义的类型),并且他们使用复制指令将所有输入或输出移到结构一下子。从PC编程的角度来看是有道理的,但这会让维护人员想要杀了你。通常,编程软件提供交叉引用功能,它们可以指定输出线圈,并且它将告诉它们在程序中的任何地方使用它。如果使用复制指令将10个字的I / O移动到10个字的数据结构中,他必须坐在那里计算位以确定复制源中的哪个位映射到目标端的哪个位。复制。没错,评论可以提供帮助,但也存在问题...... PLC存储整个程序,如果您需要进行故障排除而且没有原始程序的副本,则允许您在紧急情况下从程序中上传程序。问题是由于空间原因,PLC不存储注释。因此,如果生产线停机,停机时每分钟花费5000美元,而且有一台笔记本电脑在那里用完,他可能不得不快速上传而没有评论,并尝试对其进行故障排除。在那里有那些复制说明,浪费了10分钟的时间,只需花费公司50,000美元的停机时间。这些是编写PLC程序时必须注意的事项。
其他一些提示:一些PLC支持FOR循环。 从不使用它们。出于同样的原因,它们使代码很难为维护人员进行故障排除。这是因为如果PLC中有一段代码每次扫描多次扫描(如循环内容),那么当你进入在线调试模式时,软件无法显示每个代码的值。执行此扫描的10个循环,所以你真的不知道你正在看什么价值。然后,您必须编写所有这些棘手的代码,以将特定循环索引的循环值拉出到您可以监视的其他一些标记(变量)中。这只是在紧急情况下解决问题的另一个障碍。每次扫描多次使用子程序会遇到同样的问题。
间接寻址(我们称之为阵列)很难让维护人员理解。当您处理配方管理(存储和检索如何构建零件的值)时,通常可以使用它们,但是您应该尝试在程序的控制部分远离它。
在PC编程中,我们当然会尽可能地重复使用代码。然而,在PLC和控制系统中,停机时间非常昂贵,并且硬件昂贵。内存很便宜,实际上PLC程序员很便宜。因此,如果您的机器上有10个相同的东西(如传送带驱动器或其他东西),您将有10个不同的文件(子程序),每个驱动器一个,每个驱动器将有自己的变量与它们相关联: Drive1_Run,Drive2_Run,Drive3_Run等等。当你来自PC编程背景时,这会让你觉得非常“错误”,但这都是因为我上面提到的要点。当您处于停机状态,并且有人说Drive 3无法正常工作时,您可以打开笔记本电脑,转到Drive 3的文件,然后查看Run输出行。在程序执行时,您从那里开始进行故障排除。没有断点(程序永远不会停止)。
祝你好运。祝你好运。如果你想查看它们,我写了更多insights from my years of programming PLCs。答案 1 :(得分:18)
您可以在互联网上学习各种来源的PLC编程,其中一个是this(wikibooks)或this
除非您使用PLC特定功能,否则您编写的程序在不同品牌的LLD(梯形图逻辑图)PLC中几乎相同。但是如果你使用像IL(指令列表)这样的语言会有更多的差异。但是一旦你编写了程序,存储和执行的格式就会在各个品牌中有很大差异
梯形逻辑是PLC的5种编程语言之一,其他是FBD(功能块图),ST(结构化文本,类似于Pascal编程语言),IL(指令列表,类似于汇编语言)和SFC (顺序功能图)。这些只是编程语言的各种表示,如果你愿意,可以有各种各样的风格。但通常情况下,某个品牌只支持其中一种。在美国,LLD被广泛使用,而在欧洲,IL更受欢迎。
答案 2 :(得分:14)
梯形图,通常称为LD是ISO 61131自动化编程标准中定义的几种语言风格之一。其他是SFC(顺序流程图),FBD(功能框图),ST(结构化文本)和IL(指令列表)。 IL与汇编程序类似,很少有人使用它。 ST是基于文本的编程,与早期版本的BASIC非常相似。它也不经常使用。 LD的设计类似于电气控制面板(许多PLC更换)的继电器触点。 FBD看起来更像电路图。 SFC基本上是一个流程图。
有些PLC支持所有,只有一些,甚至一个。虽然LD是最常见的,但FBD和SFC越来越受欢迎。
不同的品牌确实使用略有不同的编程语言。它们通常相似,一旦你理解了一个品牌,就可以使用它们中的任何一个,但你不能直接从一个PLC中获取代码并在另一个品牌上使用。
答案 3 :(得分:13)
到目前为止给出的答案非常符合目标。有一件事我发现PLC在语言和设置方面具有分裂的个性。他们的核心设计是为电气人员提供一种灵活的方法来为他们的整体设计设置控制逻辑。 PLC基本上是一堆输入和一堆输出,它们的连接方式由加载到设备中的软件控制。
用于PLC的语言的一个重点是来自电子背景的人可以访问它们。因此,对于习惯于高级语言甚至汇编语言的人来说,习语和结构似乎是反直觉的。例如,Ladder Logic非常适合电气人士使用。
然而近年来,PLC一直支持多种语言以获得最大的灵活性。但是在我看来,我工作的少数PLC在编程环境方面非常缺乏。将变量名称分配给内存位置这样的简单事情通常不会被设计到正在使用的语言中。那些易于工作的工作往往不是最有效的工作。
尽管存在这些障碍,但它们非常适合简化复杂的电气系统。如果您正在与项目中的其他人合作,您会发现您的编程知识将有助于项目解决棘手的程序。我能够采用100阶梯逻辑程序并将其重写为三分之一的梯级。一旦我能够学习梯形逻辑语言,我就能够实现各种优化,降低了程序的复杂性。
一个提示是,您需要了解锁定。有时你需要存储或保存一些输出,除非你有一个锁存器,结果将在下一个周期消失。一旦你理解了这个问题就会变得很清楚,但起初这对我来说是一个很大的挫折感。
答案 4 :(得分:7)
PLC编程应被视为PLC软件工程输出的实施活动,除非您将PLC作为机械或电气解决方案的替代组件的一部分。
以此为基础,PLC编程环境通常采用IEC61131驱动,保护周期时间,“先发制人”实时,无需处理实时操作系统相关问题,连续代码扫描,非程序指针,不同于典型的概念计算机任务产生了一种多任务处理。代码执行自然是原子的,不需要在任务之间使用监视器。
每种语言都与您想要实现的逻辑模型的代码的可接受性密切相关。
Ladder的基本概念是电力流动联锁方式。单个网络中的代码解析是水平扫描或垂直扫描(您可以从制造商或其他站点找到关于此主题的资源)。如果您的代码具有单扫描分辨率,并且在一个网络内,则某些不可思议的行为可能是由于扫描类型(重要的是要记住梯形图只是模拟电路,它仍然是执行中的顺序)。
FBD或功能框图是电子信号流,但今天可以是数据流,具体取决于PLC的类型。 FBD显示更清晰的执行顺序,与扫描序列中的水平扫描梯非常相似。今天,FBD通常用作对象功能块的容器,尽管依赖实现和与流程模型的视觉相似性取决于PLC类型。
Literal与BASIC非常相似,但仅限于语法;执行仍然是扫描。文字语言有利于数学计算。对于高级实现,使用Literal可以更轻松地在对象中使用方法或派生属性。使用类似英语的状态表示或常量的状态机编程使程序非常易读。
语句列表与汇编助记符类似,但执行仍然是扫描而不是程序指针。它在位操作和括号样式的离散逻辑中很强。它可以是一种非常有效的语言,可以使用适当的结构和注释。
SFC或顺序流程图是序列实现的补充语言。 SFC在动作块激活,状态转换,并行序列激活和合并方面具有固有的规则。但是,复杂的异常分支或并发操作管理会使实现变得复杂,并且流程图难以阅读。
对IO处理,通信,热备份的PLC系统管理是硬件配置工作,并且取决于产品。通常,可以与软件工程分开处理。但是,与PLC系统管理相关的数据属于“定位”(独立数据寻址区域)类型,软件工程中的良好数据建模方法有助于系统数据的可管理性。
答案 5 :(得分:5)
Online PLC Simulator可能有用。
答案 6 :(得分:3)
您可以使用结构化文本(ST),其中包含一系列指令,这些指令在高级语言中确定(“IF..THEN..ELSE”)或循环(WHILE) ..DO)可以执行。
我发现它比Ladder更好,因为它接近标准编程语言。
答案 7 :(得分:1)
我在大学做了一些PLC编程。在我看来,它比装配低一级,但我们使用的装置并不是最新装置。
我相信你需要一个PLC驱动程序,但我会首先寻找模拟器并在购买之前阅读更多相关信息。
答案 8 :(得分:1)
Allen-Bradley有一个基于免费DOS的软件PLC,专门用于培训。如果你去他们的网站或谷歌它你可能会找到它。它用于在学校教授PLC编程。
答案 9 :(得分:1)
对于初学者尝试学习阶梯逻辑,最好的方法是参加免费的在线培训http://plcs.net
答案 10 :(得分:-3)
PLC是用于使用梯形逻辑的设备的术语。以更典型的编程语言编程的器件通常称为微控制器。但是,我们中的一些人有时会将它们全部归为PLC名称。 :-)不确定梯形逻辑有多大变化,但微控制器代码可能会有很大差异。