购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.1 ControlLogix编程语言

3.1.1 编程语言简介

1.编程语言

PLC是以程序的形式进行工作的,编制程序是PLC控制系统设计的主要工作。ControlLogix系列PLC的编程语言非常丰富。

提到编程语言,首先要介绍一下IEC及IEC 61131。IEC(国际电工委员会)是非政府性的、专业的国际标准化机构,负责电工、电子领域的国际标准化工作,是世界上成立最早的专门国际标准化机构。而IEC 61131是第一个为工业自动化控制系统的软件设计提供标准化编程语言的国际标准,广泛地应用于PLC、DCS、数控系统、RTU等产品。

1992—1995年IEC发布了IEC 61131标准中的1~4部分,我国在1995年11月发布了GB/T 15969-1/2/3/4(等同于IEC 61131-1/2/3/4)。随着PLC技术的不断发展,该标准也在不断地补充和完善。IEC 61131主要定义了下列4种编程语言。

(1)梯形图LD(Ladder Diagram)

梯形图LD是一种图形语言,直观易懂,是最常采用、应用最广泛的编程语言之一。梯形图是由梯级组成的程序结构,每个梯级由输入指令和输出指令组成。梯形图与继电器控制电路的表达极为相似,采用诸如触点和线圈等图形符号,特别适合于顺序逻辑控制、离散控制、互锁逻辑等。“能流”(Power Flow)与程序执行的方向一致。这种编程语言针对熟悉接触器控制的技术人员,适用于生产过程的顺序控制、数据处理等。

(2)结构文本ST(Structured Text)

结构文本ST类似于计算机高级语言,符合IEC 61131-3标准,使用由操作符和操作数组成的表达式结构,描述功能、功能块、程序的行为,在执行表达式时会返回值。ST适合于复杂的公式计算、复杂的计算任务和最优化算法或管理大量的数据等。

(3)功能块图FBD(Function Block Diagram)

功能块图FBD使用类似于布尔代数的图形逻辑符号来表示控制逻辑,组态过程控制,是引入DCS系统的仪表控制组态方式,由功能块之间的连接建立程序结构。常用于过程控制,比较适合于有数字电路基础的程序员使用。ControlLogix有丰富的功能块指令,例如,微分控制、模糊控制、脉宽调制变换、统计等。

(4)顺序功能图SFC(Sequential Function Chart)

顺序功能图SFC类似于顺序控制的流程图,将工作流程细化到步,提供全部的结构且协调面向批处理的过程。顺序功能图中的每一步对应于一个控制任务,每个步都是由执行代码组成的,步与步之间有转换条件。顺序功能图可以编辑步的执行顺序和结构,表达复杂的顺序控制非常清晰,特别适合于熟悉生产工艺的编程人员使用。

2.编程语言的选用与相互转换

ControlLogix系列PLC的编程语言各有特色,一般情况下,如果程序没有错误,并且被正确地划分为程序段,则编程语言之间可以相互转换。

使用梯形图进行编程是PLC大部分指令都支持的,功能很强大。结构文本ST可以编译成与梯形图程序相似的执行顺序。顺序功能流程图程序和功能块图程序实质上是一个结构程序,它的结构元素是梯形图程序或语句文本程序。所以,通常都使用梯形图进行编程。

3.1.2 梯形图LD

1.梯形图程序的逻辑结构

梯形图程序是由指令构成的逻辑梯级集合而成的,而逻辑梯级的结构则由输入指令和输出指令两部分组成,如图3-1所示。

img

图3-1 梯形图结构

(1)输入指令

输入指令是决定梯级条件的指令,通常主要包括以下三类指令。

● 非保持型指令:在梯级条件持续期间执行,梯级条件消失后便停止执行。例如,计时器指令、位指令、传送指令、转换指令、算逻运算指令等。这类指令也可以是无条件的,即没有输入指令,指令总是在执行。

● 保持型指令:在梯级条件跳变时执行,根据梯级条件前沿触发引起指令动作执行。例如,计数器指令、位锁存指令、移位指令、堆栈操作指令、顺序器操作指令等。在使用这类指令编写程序时要注意,有跳变的梯级条件才能引起指令动作的执行。

● 可选型指令:一般是对外操作的通信指令,如MSG指令等。可选择连续执行方式或不连续执行方式。当选择连续执行方式时,指令被触发后,即使梯级条件消失或不跳变,仍可以连续执行;当选择不连续执行方式时,梯级条件跳变一次,指令执行一次。

输入指令的运行,并不直接执行某种操作的动作,但都会得到逻辑结果,这就是梯级条件,它决定要不要执行指令。梯级条件逻辑上存在两种脉冲形式,如图3-2所示。

img

图3-2 梯级条件脉冲形式图

● 宽脉冲,表现为持续一段时间;

● 窄脉冲,表现为出现瞬间时间。

梯级条件的存续时间,是编写输出指令的重要依据,它可以确定输入指令和输出指令之间配合使用的关系。

(2)输出指令

输出指令是根据梯级条件执行、引起操作的指令。输出指令与输入指令一样,通常主要包括非保持型指令、保持型指令、可选型指令三类。

输出指令的执行是具体操作的动作,但这种执行动作与输入指令的存续有很大的关系,输入指令和输出指令之间的对应关系是非常明确的,即梯级条件会决定输出指令的执行状况。

2.梯级运行条件

控制器根据指令前面的梯级输入条件判断梯形图指令。然后,控制器根据梯级条件和指令,设置下一指令的梯级输出条件,这样交替影响后面的指令执行。

当一个输入指令梯级输入条件为真时,控制器执行该指令,并根据指令的执行结果,设置梯级输出条件。如果指令的执行结果为真,则输出梯级条件为真;如果指令的执行结果为假,则输出梯级条件同样为假。

梯形图的并列分支层数没有限制。图3-3显示的是一个5层并列分支,第一层分支是主梯级,后面跟着4个附加分支。

img

图3-3 梯形图的并列分支层

梯形图嵌套的分支最多可以为6层。图3-4显示的是一个嵌套分支情况,底部输出指令在一个3层深度的嵌套分支上。

img

图3-4 梯形图的嵌套分支层

3.梯级预扫描和后扫描

预扫描和后扫描是对所有子程序的梯级实行的一遍特殊的扫描,控制器不会按照此时的输入数据执行逻辑,也不会输出数据。

(1)预扫描

预扫描是在程序进入正式运行之前完成的一次特殊操作。控制器在预扫描时扫描所有的主程序和子程序,但会忽略跳过执行的跳转指令。控制器执行所有的FOR循环和子程序调用,如果一个子程序被多次调用,则每次调用都会执行。控制器通过预扫描梯形图指令重置非保持型I/O和内部数据。在预扫描期间,输入数据不是当前数据,输出数据也不实际输出。

预扫描的执行条件是:

● 程序从编程状态切换至运行状态;

● 从上电状态自动切换到运行状态。

预扫描的主要内容包括:

● 扫描所有的主程序;

● 扫描所有设备阶段的状态程序和预状态程序;

● 扫描程序和设备阶段的所有子程序,但不会重复预扫描;

● 扫描所有的FOR调用的子程序;

● 不按照跳转指令指向的顺序;

● 按照预扫描方式执行的所有指令;

● 将所有非保持型指令复位到0状态;

● 不刷新输入数据,且不输出数据。

以下两种情况不做预扫描:

● 控制器进入运行时,程序或设备阶段为非预定性的;

● 控制器运行时,程序或设备阶段从非预定性的转变为预定性的。

(2)后扫描

后扫描是在结束原运行程序之后完成的特殊操作。后扫描的执行条件是:

● 当MCR指令结束区域控制时;

● 当设备阶段的状态程序转向下一个状态时;

● 当SFC步的转换条件成立,离开激活步时。

后扫描的主要内容包括:

● 扫描条件不成立的MCR区域;

● 扫描所有未激活的设备阶段状态程序;

● 扫描所有未激活的SFC步;

● 按照后扫描方式执行的所有指令;

● 每个梯级都被扫描,但梯级条件永远不成立;

● 将所有非保持型指令复位到0状态;

● 刷新输入数据,但有可能被梯级条件否认;

● 输出虚拟数据。

4.数据刷新时间与程序执行的关系

传统PLC的工作周期由输入扫描、程序扫描、输出扫描三个阶段组成。输入扫描刷新所有的输入映像表;程序扫描则根据最新输入数据,按照编制好的梯形图逻辑执行,产生控制结果,即刷新输出映像表;输出扫描刷新所有的输出模块。在这个过程中,输入数据是不发生改变的。

ControlLogix PLC系统的I/O数据交换采用生产者/消费者方式,I/O模块不再是被动的数据接收者,而是主动的数据产生者。它们按照定义的中断时间发送或接收数据,I/O数据的刷新时间独立于程序扫描。在控制器中,有两个CPU同时工作,逻辑CPU主要负责逻辑控制和数据处理,背板CPU主要负责对外的数据交换。程序扫描和I/O交换分别进行,是相互独立的,在程序扫描的过程中,输入数据有可能发生了变化,而在梯形图程序中多次引用了同一输入数据。解决这个问题的办法是,在程序的起始梯级复制输入数据到一个数据缓冲区,整个程序扫描过程只引用缓冲区的数据;所有的控制结果是在每个任务完成后,系统管理操作一次送到输出模块。

5.梯形图编程的主要侧重点

梯形图编程主要用于时序逻辑控制,侧重于以下应用范围:

● 连续的操作或没有顺序的多个操作并列执行;

● 布尔量或位操作,可简单使用继电器指令;

● 综合复杂的逻辑操作;

● 信息处理或通信处理(MSG指令);

● 解决生产现场机器的联锁关系,充分体现明确的逻辑关系;

● 维护维修人员的操作可能检查出机器或生产过程的故障;

● 伺服控制,可明确运动控制指令的执行顺序。

3.1.3 结构文本ST

结构文本ST(Structured Text)是使用语句来定义操作过程的文本编程语言,类似于计算机高级语言,表达式结构由操作符和操作数组成。

结构文本ST的程序格式自由,可以在关键字和标识符之间的任何地方插入制表符、换行字符、注释,而且结构文本的语言易于理解。

结构文本ST不区分大小写字母。

1.赋值语句(Assignment)

使用赋值语句将值赋给标签,改变标签内的值。

赋值语句的语法如下:

img

标签数据类型必须为BOOL、SINT、INT、DINT、REAL类型。

2.表达式(Expression)

表达式是一个完整的赋值或结构语句的一部分。数值表达式可以计算出一个数值,BOOL型表达式可以得出一个真假状态。

通常可以在BOOL型表达式内嵌套一个数值表达式。典型情况下,可以使用BOOL型表达式作为其他逻辑执行的条件。

表达式可以包括以下内容:

● 用于存储数值的标签名,即变量;

● 立即数,即常数;

● 函数;

● 运算符。

其中,函数执行时会产生一个函数值。

注意 :函数和指令是不同的,函数只能用在表达式中,而指令不能用在表达式中。

运算符主要包括算术运算符、关系运算符、逻辑运算符、按位运算符。

运算符的运算优先级如表3-1所示。

表3-1 运算符的运算优先级

img
3.指令(Instruction)

指令是一个标准语句,使用圆括号包含其操作数。根据指令的不同类型,运行时,指令可以产生一个或多个数值。

指令在每次被扫描且结构条件为真时执行,如果结构条件为假,就不执行该结构内的语句。

结构文本指令与梯形图指令的区别是:梯形图指令通过输入梯级条件触发执行,而在结构文本程序中,指令会在被扫描时执行。

4.结构(Construct)

结构可以单独编程,也可以嵌套在其他的结构内。常用的结构形式如下。

● IF…THEN

当特定条件发生时,执行操作。

● CASE…OF

根据数值选择执行的操作。

● FOR…DO

根据指定的次数重复执行操作,然后再执行其他操作。

● WHILE…DO

当条件为真时,重复执行操作。

● REPEAT…UNTIL

直到条件为真,否则重复执行操作。

5.注释(Comment)

注释可以使编写的结构文本程序有很好的可读性。结构文本的注释不仅可以下载到控制器的内存中,而且可以上传。

当添加注释内容时,使用的注释格式是:

img

当添加的注释内容是单独一行时,使用的注释格式是:

img
6.结构文本编程的主要侧重点

结构文本编程主要用于非常规运算,侧重于以下应用范围:

● 复杂的非常规算术运算;

● 专用数组或循环处理表格,其他编程方式不能处理的数组和表格;

● ASCII字符串处理或协议处理,适用于文字表达的模式。

3.1.4 功能块图FBD

功能块图FBD(Function Block Diagram)是可视化程序,每个功能块都包括定义了控制行为的指令。使用功能块开发程序,将包含各项功能的指令块放在一个图表中,再连接输入端和输出端。功能块编程一般用于过程控制领域。

功能块编程主要用于过程控制,侧重于以下应用范围:

● 连续过程,功能块组态连接信息流向,使控制具有连续性;

● 驱动控制,专用于驱动控制要求;

● 闭环控制,专用于较复杂的闭环控制要求;

● 流量计算,专用的累加器功能块满足控制要求。

3.1.5 顺序功能图SFC

顺序功能图SFC(Sequential Function Chart)类似于顺序控制的流程图,使用步和转换执行指定的操作或动作。

每步执行的功能就是动作,每步都可以表示实际生产过程的一个主要功能,包含发生在特定时刻、时间段内或站点内的动作。

转换是用于通知顺序功能图何时进入下一步的条件。

顺序功能图编程主要用于工艺步骤分明的控制要求,侧重于以下应用范围:

● 多个操作的高水平管理,严格控制执行步骤;

● 反复的操作顺序,可反复扫描活动步的执行逻辑;

● 大量重复操作的批量处理;

● 运行控制顺序(具有内嵌结构语句的功能块),准确协调执行顺序;

● 控制机械操作进程状态。 WoTe2YXu1DB7r31pfTowfkbsJAoWFwQycXJDtP1qAOoOPuyEC7QLo4oVkn/3QtR1

点击中间区域
呼出菜单
上一章
目录
下一章
×