课程中心
HOME
课程中心
正文内容
plc编程语言VB PLC编程应该选择哪种语言?
发布时间 : 2024-11-24
作者 : 小编
访问数量 : 23
扫码分享至微信

PLC编程应该选择哪种语言?

国际电工委员会 IEC第61131-3节标准规定了5种PLC编程语言

梯形图(LD)

顺序功能图(SFC)

功能块图(FBD)

结构化文本(ST)

指令列表(IL)

让我们向您展示一下这些内容

梯形图最初是从继电器逻辑建模的使用物理设备,例如开关和机械继电器来控制过程。梯形图利用内部逻辑代替所有,除了物理设备需要电信号来激活它们。梯形图以水平梯级的形式构建带有两个代表电气连接的垂直导轨关于继电器逻辑原理图。您可以编程所有必要的输入条件影响输出条件,无论是逻辑还是物理。梯形图语言的主要优点是这些梯级允许它组织和易于遵循。它还允许您记录评论很容易看到它,它非常成功地支持在线编辑。主要缺点是有一些说明那些不可用,这可能会使运动或批处理等编程变得更加困难。

顺序功能图它使用图形类型的编程。如果您对流程图有任何经验,那么这种PLC编程语言对你来说会很熟悉。在顺序功能图中,您使用步骤和过渡来实现最终结果。步骤是您程序中的主要功能。这些步骤包含了操作当你对它们进行编程时会发生这种情况。这个决定可以基于时间,过程的某个阶段,或设备的物理状态。转换是您使用的指令从一步到另一步通过设置真或假的条件来进行另一步。与传统流程图不同,顺序功能图表可以有多个路径。您可以使用分支一次启动多个步骤。顺序功能图的几个优点是:流程可以分为主要步骤这可以使故障排除更快更容易。您可以直接访问逻辑看一块设备出现故障的地方。设计和编写逻辑可以更快由于能够使用重复执行各个逻辑。即使您考虑了顺序功能图的优点,这种PLC编程语言并不总是适合每个应用程序。

功能块图也是一种图形类型的语言。功能块图描述了输入和输出之间的功能通过连接线以块的形式连接。功能块最初是为了创建系统而开发的你可以设置许多常见的,可重复的任务,例如计数器,定时器,PID循环等。您将块编程到工作表上然后PLC不断按数字顺序扫描纸张或者由您在块之间编程的连接确定。使用此PLC编程语言可以使代码混乱因为您可以将功能块放在工作表上的任何位置。这也可能使故障排除更加困难。功能块图适用于运动控制并且对于一些用户来说,视觉方法更容易。功能块图的最大优点是你可以采取多行编程并将其放入一个或多个功能块中。

结构化文本是一种高级语言,类似于Basic,Pascal和“C”。它是一个非常强大的工具,可以执行复杂的任务利用算法和数学函数以及重复性任务。该代码使用以分号分隔的语句然后输入,输出,或变量由这些语句更改。你必须写出每行代码它使用FOR,WHILE,IF,ELSE,ELSEIF和CASE等函数。如果您有使用Basic或C语言的经验,这种PLC编程语言将变得更容易比一些其他语言。结构化文本的一些优点这是非常有组织的,擅长计算大型数学计算。它还可以让您涵盖一些说明在梯形图等其他语言中不可用。缺点是语法很难,使调试变得困难,很难在线编辑。

指令列表也是基于文本的语言。指令列表语言类似于汇编语言。使用此PLC编程语言时,您将使用助记符代码,如LD(加载),AND,OR等。指令列表包含指令每条指令都在一条新线上您可能希望在每行末尾添加注释。该指令列表语言对于应用程序很有价值需要紧凑且时间紧迫的代码。这种PLC编程语言的主要缺点是因为结构可能性很少Goto命令就是其中之一。也可能有很多错误比较难以处理的我之前评论过的许多其他语言。

那么,你决定使用哪种PLC编程语言你认为最受欢迎?

美国的汽车工业领域:倾向于用LD梯形图;欧洲的汽车工业领域:更喜欢用FBD功能模块图计算机科学家:喜欢用ST结构图(类似于高级语言,比如C语言)

而不同的PLC语言有各自的优缺点和适用的领域:

内存管理方面的工作:对于内存的读和写,IL和ST(比LD)更加合适;控制传送带的程序:如果用LD写,很明显会比ST写,逻辑会更清晰;顺序控制系统:用SFC无疑使最好的选择;

根据自己的经验和用户的反馈,梯形图语言是目前最流行的语言。主要原因是梯形图语言自然地遵循了技术进步从物理中继逻辑到数字和逻辑逻辑。这使得工程师和技术工人得以实现跟进并排除故障并进行转换。总之,所有PLC编程语言都有一席之地我今天和你讨论过。

背景,经验和您正在使用的应用程序真正成为您选择的PLC编程语言的关键。

更多精彩内容请关注公众号:PLClion

对于PLC编程,哪种IEC 61131-3编程语言最适合?

图片来源:ControlSphere Engineering

作者 | Gary L. Pratt

有这么多可编程逻辑控制器(PLC)编程语言和标准可供选择,对于自动化和控制应用而言,最适合的选择是什么?

可编程逻辑控制器(PLC)有很多编程语言可供选择。有种说法,标准的伟大之处在于有很多选择!尽管这很讽刺,但在IEC 61131-3编程语言中,有多种语言标准可供选择确实是一个优势。

在参加我的培训班时,很多学生抱着这样一种心态:选择最适合自己的语言,然后专门学习该语言。上课伊始,他们经常会问我会推荐适用哪种语言。或者,“最好的语言是哪个?”

我没有回答,问他们一个问题:“在阿拉伯数字中,哪个数字最好?”或“英语中,哪个词最好?” 再比如:办公室软件中,哪个工具最好?是文档编辑器、演示文稿编辑器,还是电子表格编辑器?虽然可以使用文档编辑器创建演示文稿和电子表格,但这是正确的方法吗?

使用一种工具实现多种目的,需要学习各种技巧,这是否值得付出?仅学习该工具对工作有用的主要功能,是不是更有效?与办公软件一样,为应用选择最佳编程语言是最有效的,可以避免很多麻烦。当使用的IEC 61131-3编程语言能够充分发挥其语言的优势时,PLC的编程和维护功能就会得到加强。

图1:IEC 61131-3编程语言提供了适合特定需求的语言。图片来源:ControlSphere Engineering

梯形图编程

梯形图(LD)编程的历史,可以追溯到大约100年前的继电器梯形逻辑(RLL),它主要用于描述电气元件系统(如继电器、计时器和电动机)。在自动化时代初期PLC逐步替换继电器和计时器时,创建一种用户熟悉并与被替换的工具相似的编程语言非常重要。

不幸的是,控制器变得越来越强大,能够实现的功能也已经远远超过继电器和计时器,LD语言被用于各种新的场景,而这并不是LD所擅长的,因此效果也不是特别理想。

PLC供应商提供新的、更适合PLC和可编程自动化控制器(PAC)应用的语言的速度比较缓慢,使这种情况进一步恶化。对于源自北美的控制器而言尤其如此,这可以解释在全球范围内,LD持久受欢迎的程度为什么会有所差异。

LD编程的优势是什么?为什么它能持久受欢迎?关键就是图形化。而通常来说工程师是更倾向于图形化思维的。

起初,大多数LD编程的替代方法都是基于文本的语言,这些语言与工程师的图形化思维不会产生共鸣,其结果就是不愿从LD转向其它语言。幸运的是,这种情况正在发生变化。

LD仍然是一门伟大的语言,它的初衷是执行复杂的布尔逻辑。在这个领域内,LD逻辑易于设计且易于调试。要确定为什么结果与预期不符,有多容易?在LD语言中,只需要观察蓝色实心触点的路径在何处中断就可以快速获得答案。

图 2 :该图比较了在 Codesys 中实现复杂布 尔逻辑的不同语言

顺序功能图编程

顺序功能图(SFC)是一种图形语言,非常适合表示状态机(state machine),并且像LD语言一样,它吸引了工程师的图形化思维天性。

状态机的历史可以追溯到很多年前,但是直到最近才被用于工业编程。状态机是表示系统行为的一种非常强大的方法,可用于表达行为取决于过去历史记录的系统逻辑,例如:

1.设置线圈或复位线圈;

2.封装逻辑(布尔反馈);

3.由代码设置的内部标志,用于决定未来的行为。

实际上,即使是简单的TON On-Timer和R-Trig one-shot都是状态机。它们的下一个行为取决于先前的输入和行为。与其它编码技术相比,状态机具有许多优势:

1.它们易于设计,因为它清楚地描述了系统可能的状态,系统如何在这些状态之间转换,系统在这些状态下应采取的行动。

2.在运行时,可以很容易地确定系统处于什么状态,在该状态下正在做什么,以及在什么条件下系统会切换到下一个状态(或者过程中出了什么问题,导致无法切换到下一个状态)。

3.促进构思周密且组织良好的设计。这样可以确保所有可能的事件都已得到妥善处理(就不会有人半夜三更把你从床上叫起来,去修复无法正确处理异常工况的代码)。

4.易于确定是否已经测试了所有可能事件。只需打印出SFC,并在执检查时划掉每个状态和切换条件即可。完成所有工作后,测试就完成了(程序员的置信度为100%)。

图3:该图显示了顺序功能图的编程组件

如何实现状态机?

几乎任何语言都可以实现状态机,但它们都需要特定的编码技术,包括步(step)、转换(transition)、分支/跳转(branch/jump)和动作(action)。

步描述了系统可以驻留的状态;转换指示系统何时应从上一步转移至下一步;分支和跳转指示下一步应该是什么;动作指定在该步期间(进入或退出该步)应执行的操作。

由于其图形化属性和工作的专业性,SFC语言是状态机最自然的选择。对于那些需求异常复杂或要求特别灵活的系统,状态机也可以用基于文本的语言来实现。对于只能使用LD的企业,状态机甚至可以在LD中实现,方法是为每个状态使用一个线圈,转移逻辑为每个线圈通电/断电,将系统从一个状态转移到下一个状态,以及利用使用状态线圈的独立逻辑来执行动作。

一些供应商还可以用统一建模语言(UML)来实现状态图,作为SFC的更强大、更灵活的替代方法,但这需要更长的学习曲线,而且在工业控制领域中的接受度有限。

对于状态机,语言的选择是次要的,所用技术的选择更重要。在SFC中,该语言强制使用状态机技术。在其它语言中,使用的技术取决于工程师制定的规则。

图4:基于Codesys连续功能图语言,展示了一个基于块的编程设计 示例

功能块图编程

功能块图(FBD)是一种图形语言,符合工程师的图形化思维。来自Codesys(以前被称为3S-Smart Software Solutions)的集成开发环境提供了两种FBD,即传统的IEC 61131-3 FBD和类似但更灵活的连续功能块图(CFC),CFC还没有正式成为IEC 61131-3的一部分。CFC是FBD的超集,具有两大优势:

1.基于块的功能编程(执行布尔和数学运算);

2.分层设计(调用其它功能和功能块)。

1 基于块的编程

基于块的设计由预定义功能组件组成,这些组件连接在一起执行布尔逻辑、数学计算或二者兼而有之。当输出是输入的函数时(换句话说,当没有状态变量,例如布尔反馈、设置/复位线圈或标志时),CFC块编程非常出色。当同时使用无状态功能和基于状态的功能时,请结合使用CFC和SFC。

因为连接性是用功能块之间的线来表示的,所以很容易理解信息流以及信息是如何沿着其路径进行修改的。如果功能开始变得复杂,则应将其分为较小的、更易于管理的子块。如果块之间存在大量连接,则可以将这些线连接至数据结构类型的引脚。

结构引脚(structure pin)具有3个优点:

1.在层次化结构设计中,每个层次都消除了不必要的细节,更清晰易于理解;

2.保持较小的功能块,可以在一页上查看整个信息流;

3.允许信息流向上游和下游,以进一步减少不必要的细节。

对于以前采用LD实施基于块或分层功能的PLC程序员来讲,CFC提供了一种更为简洁和灵活的方法。CFC的开发速度更快,而且对于将来负责维护或改进代码的工程师来说,也更容易理解。

图5:结构引脚可以减少不必要的细节和混乱,从而增强了图表的可 读性。

2 分层设计

分层设计是一种从很多简单的构建块层层设计的实践。与传统的扁平化设计相比,分层设计具有许多优点:

1.定制;

2.创建;

3.测试与完善;

4.理解和维护;

5.易于复用。

构建块技术支持并鼓励在层次结构的每个级别上,展现同等程度的细节,这就使块技术更易于设计和理解。这样,在较高层次的设计中,不必因为展现细节而被弄得杂乱无章,这些细节只在较低层的设计中很重要。在层次结构的每个级别上,分层CFC设计应都具有统一的细节展示。

使用LD作为构建块语言的传统方法会存在2个弊端:

1.信息的低密度导致LD设计可能会分布到数10页上,很难或不可能看到和理解全局;

2.不同层次的细节混杂在同一层次上会十分混乱,这使设计难以理解和维护。

而使用结构化文本的CFC分层设计可以解决这两个问题,同时保持了LD的图形特性。这是个两全其美的解决方案。

分层设计是面向对象的工业编程(OOIP)的关键功能。在部署和配置用户自定义的功能块以后,CFC编程开始与分布式控制系统(DCS)的编程/组态有点类似,但使用IEC 61131-3程序员可以控制底层的块。如果某个块需要较小的改进,程序员就可以执行此操作,而无需费时费力的请DCS供应商介入。

完整的分层PLC设计,可以看作是一棵由分层CFC构成主干和分支的树。基于块的CFC、SFC、LD和ST填充树叶所处位置的详细功能设计。IEC 61131-3语言共同构成了一个团队,该团队比其各个部分的功能更强大。

图6:此处的分层设计是在连续功能图编程中实现的。

结构化文本编程

尽管LD、SFC和FBD/CFC语言可以出色的完成其任务,但有些运算并不适合使用图形化语言。

一些支持使用结构化文本(ST)语言编程的运算包括:

1.迭代运算,例如For、While和Repeat;

2.复杂条件和选择,例如IF-THEN和CASE;

3.位运算,例如按位与、移位、旋转;

4.文本字符串运算;

5.具有特殊要求或特别复杂的状态机;

6.纯粹的面向对象编程(调用方法,设置属性等)。

有许多很好的教程,可指导工程师从其它基于文本的语言过渡到ST。对于那些完全不熟悉基于文本的语言的人来说,Visual Basic教程是一个很好的起点。尽管结构化文本基于Pascal编程语言,但它与VB有非常相似,因此可以参考应用更广泛的VB教程。

使用最合适的语言编程

要创建有效的工业控制程序,掌握合适的编程语言并知道如何有效使用这些语言非常重要。有很多语言可供PLC选择,IEC 61131-3编程语言标准也提供了多种选择。充分利用每种语言的优势效率会更高,而不是学习一种语言的各种技巧和变通方法来使其适用于所有应用。程序员应为应用选择最佳语言。

相关问答

西门子plc中VB、VW、VD的含义和使用?

你说的这几个首先都是西门子200和samrt系列中的变量!V区是CPU中的变量存储区,它和M区一样被经常使用,但是V区的存储空间远远大于M区!VB是代表V区的一个字节...

西门子PLC中的IB、QB、VB、MB、SMB、SB、LB、AC各代表什么意...

[最佳回答]这些都是变量名,以BIT为单位的.比如IB1也就是IB1.0-IB0.7包括这8个位变量.I是输入,Q是输出,SM是特殊存储器,V变量,M内部存储器比较常用,S特殊寄...

plc控制卡用什么语言编写?

哦,我理解你所说的控制卡,是指运动控制卡吧,最常用的就是:basic语言、VB语言和C语言。用编程语言写程序比较简单,一条指令就能让伺服电机动作。但编程语言...

西门子plc中VB、VW、VD的含义和怎么使用,这些地址选用有什么标准?

当位V200.7接通vw208=1004时PLC进行下列运算。1.将2放入VB301中2.在VD302上建立一个指针,指针指向&VB101开始的地址3.将2放入VB306中4.将0放入...

PLC的C语言怎么弄?

PLC的C语言编程需要借助专门的软件和硬件工具。一般来说,需要使用PLC生产厂家提供的专用编程软件,将C语言代码编写成PLC可识别的指令,然后通过编程电缆或其他...

力控组态软件和Vb可视化编程软件有什么区别?

大家好,很高兴给大家回答这个问题。以前我公司就使用的力控组态软件。力控组态和VB可视化编程软件还是有很大的区别,下面就从以下几个方面给大家描述一下。1、...

三菱plc编程语言的种类有哪些?

感谢邀请!三菱FX系列的主要是3系包括(FX3S、FX3G、FX3GC、FX3U、FX3UC)可编程控制器支持一下6中编程语言:指令表编程、梯形图编程、SFC步进图编程、ST结构文本...

你知道工业机器人是用什么语言编程的吗?

工业机器人作为朝阳产业,未来的蓬勃发展是不容忽视的,很多人可能好奇这些机器人都是怎么进行操作和生产的,其实很简单,就是通过编程来控制它的行为指令。世界...

plc工资一般多少?

一类地区、一类企业如果在大城市且大企业里任职PLC相关行业的职位,那么工资必定不低,大企业里的工厂自动化程度非常高,需要的知识也不仅仅只有PLC这么简单,...

PLC中字节、整数、等的用法?

拿西门子200PLC做例子,比如V存储区的数据,一个字节是8个位,字节用B表示,那么字节的地址就是VB??,比如VB100,这表示一个字节的数据,数据地址就在V存储区1...拿...

 安以轩 吴建豪  淮安美食节 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部