最常用的编程语言有两种:一种是梯形图;另一种是助记符语言表。采用梯形图编程,因为它简单易懂,但需要一台个人计算机及相应的编程软件;采用助记符形式便于实验,因为它只需要一台简单的编程器。
编程语言最为复杂,多种多样,看似相同,但不通用。最常用的可以划分为以下5类编程语言:
1.梯形图
梯形图是PLC使用得最多的图形编程语言,被称为PLC的第一编程语言。梯形图与电器控制系统的电路图很相似,具有直观易懂的优点,很容易被工厂电气人员掌握,特别适用于开关量逻辑控制。梯形图常被称为电路或程序,梯形图的设计称为编程。
(1)梯形图的格式
梯形图一般有多个梯级组成,每一个梯级又有输入及输出指令组成。在一个梯级中,输出指令应出现在梯形图的最右边,而输入指令则出现在输出指令的左边,如图3-6所示。
图3-6 梯形图的基本结构
当输入指令所表示的梯级条件为真时则开始执行输出指令,否则不执行。因此,允许在一个梯级中无输入指令—表示梯级永远为真;也允许有多个输入指令。串联意味着几个条件之间是“与”的关系,并联则表示几个条件之间是“或”的关系。输出指令则不允许串联,但允许并联,表示梯级条件为真时,几个输出指令可并一执行,如图3-7所示。
图3-7 梯形图基本结构
该梯级表示,当输入为真时,_IO_EM_DI_00被触发,则输出_IO_EM_DO_00和_IO_EM_DO_01同时输出为1
(2)梯形图的编程特点及注意事项
1)梯形图按行从上至下编写,每一行从左往右顺序编写。PLC程序执行顺序与梯形图的编写顺序一致。
2)左、右边垂直线称为起始母线、终止母线。每一逻辑行必须从起始母线开始画起,终止于继电器线圈或终止母线
3)梯形图的起始母线与线圈之间一定要有触点,而线圈与终止母线之间则不能有任何触点。
4)梯形图表示的并不是一个实际电路而只是一个控制程序,其间的连线表示的是它们之间的逻辑关系,即所谓“软接线”。
5)各输入输出并非是物理实体,而是“软继电器”。每个“软继电器”仅对应PLC存储单元中的一位。该位状态为“1”时,对应的继电器线圈接通,其常开触点闭合、常闭触点断开;状态为“0”时,对应的继电器线圈不通,其常开、常闭触点保持原态。
6)梯形图中流过的电流不是物理电流,而是“概念”电流,是用户程序运算中满足输出执行条件的形象表示方式。“概念”电流只能从左向右流。
7)梯形图中的继电器接点可在编制用户程序中无限引用,即可常开又可常闭。
8)梯形图中用户逻辑运算解得的结果,可马上为后面用户程序的运算所引用。
9)当PLC处于运行状态时,就开始按照梯形图符号排列的先后顺序(从上到下、从左到右)逐一处理,也就是说,PLC对梯形图是按扫描方式顺序执行程序的。
2.结构化文本
结构文本(ST)是为IEC61141-3标准创建的的一种专用高级语言,与梯形图相比,它能实现复杂的数学运算,编写的程序更加简洁紧凑。
(1)结构化文本特点
1)高级文本编程语言;
2)结构化的编程方式;
3)简单的标准结构;
4)快速高效的编程;
5)使用直观灵活;
6)与PASCAL类似;
7)符合IEC61141-3标准。
(2)结构化文本主要语法
1)结构化文本程序是一系列ST语句。下列规则适用于ST程序:
每个语句以分号(";")分隔符结束;
源代码(例如变量、标识符、常量或语言关键字)中使用的名称用不活动分隔符(例如空格字符)分隔,或者用意义明确的活动分隔符(例如“>”分隔符表示“大于”比较)分隔;
注释(非执行信息)可以放在ST程序中的任何位置。注释可以扩展到多行,但是必须以“(*”开头,以“*)”结尾。不能在注释中使用注释。
2)下面是基本ST语句类型:
赋值语句(变量:=表达式;)
功能块调用
选择语句(例如IF、THEN、ELSE、CASE...)
迭代语句(例如FOR、WHILE、REPEAT...)
控制语句(例如RETURN、EXIT...)
用于与其他语言链接的特殊语句
3)当输入ST语法时,下列项目以指定的颜色显示:
基本代码(黑色)
关键字(粉色)
数字和文本字符串(灰色)
注释(绿色)
4)在活动分隔符、文本和标识符之间使用不活动分隔符可增加ST程序的可读性。下面是ST不活动分隔符:
空格(www.xing528.com)
Tab
行结束符(可以放在程序中的任何位置)
5)使用不活动分隔符时,需要遵循以下规则:
每行编写的语句不能多于一条
使用Tab来缩进复杂语句
插入注释以提高行或段落的可读性,见表3-1。
表3-1 ST语法可读性示例
(3)调用函数和功能块
ST编程语言可以调用函数。可以在任何表达式中使用函数调用。函数调用属性见表3-2。
表3-2 ST函数调用属性
当在函数主体中设置返回参数的值时,可以为返回参数赋予与该函数相同的名称:FunctionName:=;
示例1:IEC 61131-3函数调用
(*主ST程序*)
(*获取一个整型值并将其转换成有限时间值*)
ana timeprog:=SPlimit(tprog cmd);
appl timer:=ANY TO TIME(ana timeprog*100);
(*被调用的FBD函数名为“SPlimit”*)
示例2:“C”函数调用-与IEC 61131-3函数调用的语法相同
(*复杂表达式中使用的函数:min、max、right、mlen和left是标准“C”函数
*)
limited value:=min(16,max(0,input value));
rol msg:=right(message,mlen(message)-1)+left(message,1);
ST编程语言调用功能块。可以在任何表达式中使用功能块调用。功能块调用属性见表3-3。
表3-3 功能块调用属性说明
当在功能块主体中设置返回参数的值时,可以通过将返回参数的名称与功能块名称相连来分配返回参数:
FunctionBlockName.OutputParaName:=;
示例
(*调用功能块的ST程序*)
(*在变量编辑器中声明块的实例:*)
(*trigb1:块R TRIG-上升沿检测*)
(*从ST语言激活功能块*)
trigb1(b1);
(*返回参数访问*)
If(trigb1.Q)Then nb edge:=nb edge+1;End if;
3.功能块图
功能块具有多个输入和输出参数。这些已经过实例化,意味着会针对每个实例复制功能块的局部变量。调用程序中的功能块时,实际上调用了在其中已调用相同代码的块的实例,但是所用数据为已被分配给该实例的数据。会将实例的变量值从一个循环存储至另一个循环。
功能块可由项目中的任意程序来调用。功能块可调用函数或其他功能块。必须使用功能块的每个调用(输入)参数或返回(输出)参数的类型或唯一名称,来显式定义该功能块的接口。
功能块可具有多个输出参数。功能块返回参数的值因各种不同编程语言而异。功能块名称和功能块参数名称最多可包含128个字符。功能块参数名称可以字母或下划线字符开头,后跟字母、数字和单个下划线字符。
如图3-8所示,在CCW(一体化编程组态软件中集成的功能块TP指令,主要功能为在上升沿时,将内部计时器)增加至指定值;如果计时器结束,请重置内部计时器。具体的功能块的功能以及应用,我们会在指令部分进行详细的介绍。
4.顺序功能图
顺序功能图(Sequential Function Chart,SFC)又称状态转移图,它是描述控制系统的控制过程、功能和特性的一种图形,同时也是设计PLC顺序控制程序的一种有力工具。
图3-8 TP指令
顺序功能法就是按照生产工艺预先规定的顺序,在各个输入信号的作用下,根据内部状态和时间的顺序,在生产过程中各个执行机构自动地有秩序地进行操作。
这种语言在西门子等其他品牌的PLC中应用很广泛,这里就不做详细地介绍了。
5.指令表
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。